/* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ exports.id = "vendor-chunks/next"; exports.ids = ["vendor-chunks/next"]; exports.modules = { /***/ "(rsc)/./node_modules/next/dist/build/output/log.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/build/output/log.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n bootstrap: function() {\n return bootstrap;\n },\n error: function() {\n return error;\n },\n event: function() {\n return event;\n },\n info: function() {\n return info;\n },\n prefixes: function() {\n return prefixes;\n },\n ready: function() {\n return ready;\n },\n trace: function() {\n return trace;\n },\n wait: function() {\n return wait;\n },\n warn: function() {\n return warn;\n },\n warnOnce: function() {\n return warnOnce;\n }\n});\nconst _picocolors = __webpack_require__(/*! ../../lib/picocolors */ \"(rsc)/./node_modules/next/dist/lib/picocolors.js\");\nconst _lrucache = __webpack_require__(/*! ../../server/lib/lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nconst prefixes = {\n wait: (0, _picocolors.white)((0, _picocolors.bold)('○')),\n error: (0, _picocolors.red)((0, _picocolors.bold)('⨯')),\n warn: (0, _picocolors.yellow)((0, _picocolors.bold)('⚠')),\n ready: '▲',\n info: (0, _picocolors.white)((0, _picocolors.bold)(' ')),\n event: (0, _picocolors.green)((0, _picocolors.bold)('✓')),\n trace: (0, _picocolors.magenta)((0, _picocolors.bold)('»'))\n};\nconst LOGGING_METHOD = {\n log: 'log',\n warn: 'warn',\n error: 'error'\n};\nfunction prefixedLog(prefixType, ...message) {\n if ((message[0] === '' || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log';\n const prefix = prefixes[prefixType];\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod]('');\n } else {\n // Ensure if there's ANSI escape codes it's concatenated into one string.\n // Chrome DevTool can only handle color if it's in one string.\n if (message.length === 1 && typeof message[0] === 'string') {\n console[consoleMethod](' ' + prefix + ' ' + message[0]);\n } else {\n console[consoleMethod](' ' + prefix, ...message);\n }\n }\n}\nfunction bootstrap(...message) {\n // logging format: ' '\n // e.g. ' ✓ Compiled successfully'\n // Add spaces to align with the indent of other logs\n console.log(' ' + message.join(' '));\n}\nfunction wait(...message) {\n prefixedLog('wait', ...message);\n}\nfunction error(...message) {\n prefixedLog('error', ...message);\n}\nfunction warn(...message) {\n prefixedLog('warn', ...message);\n}\nfunction ready(...message) {\n prefixedLog('ready', ...message);\n}\nfunction info(...message) {\n prefixedLog('info', ...message);\n}\nfunction event(...message) {\n prefixedLog('event', ...message);\n}\nfunction trace(...message) {\n prefixedLog('trace', ...message);\n}\nconst warnOnceCache = new _lrucache.LRUCache(10000, (value)=>value.length);\nfunction warnOnce(...message) {\n const key = message.join(' ');\n if (!warnOnceCache.has(key)) {\n warnOnceCache.set(key, key);\n warn(...message);\n }\n}\n\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL291dHB1dC9sb2cuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBV0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9CQUFvQixtQkFBTyxDQUFDLDhFQUFzQjtBQUNsRCxrQkFBa0IsbUJBQU8sQ0FBQywwRkFBNEI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGJ1aWxkXFxvdXRwdXRcXGxvZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGJvb3RzdHJhcDogbnVsbCxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBldmVudDogbnVsbCxcbiAgICBpbmZvOiBudWxsLFxuICAgIHByZWZpeGVzOiBudWxsLFxuICAgIHJlYWR5OiBudWxsLFxuICAgIHRyYWNlOiBudWxsLFxuICAgIHdhaXQ6IG51bGwsXG4gICAgd2FybjogbnVsbCxcbiAgICB3YXJuT25jZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBib290c3RyYXA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYm9vdHN0cmFwO1xuICAgIH0sXG4gICAgZXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBldmVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICB9LFxuICAgIGluZm86IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5mbztcbiAgICB9LFxuICAgIHByZWZpeGVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeGVzO1xuICAgIH0sXG4gICAgcmVhZHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVhZHk7XG4gICAgfSxcbiAgICB0cmFjZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0cmFjZTtcbiAgICB9LFxuICAgIHdhaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd2FpdDtcbiAgICB9LFxuICAgIHdhcm46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd2FybjtcbiAgICB9LFxuICAgIHdhcm5PbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdhcm5PbmNlO1xuICAgIH1cbn0pO1xuY29uc3QgX3BpY29jb2xvcnMgPSByZXF1aXJlKFwiLi4vLi4vbGliL3BpY29jb2xvcnNcIik7XG5jb25zdCBfbHJ1Y2FjaGUgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL2xpYi9scnUtY2FjaGVcIik7XG5jb25zdCBwcmVmaXhlcyA9IHtcbiAgICB3YWl0OiAoMCwgX3BpY29jb2xvcnMud2hpdGUpKCgwLCBfcGljb2NvbG9ycy5ib2xkKSgn4peLJykpLFxuICAgIGVycm9yOiAoMCwgX3BpY29jb2xvcnMucmVkKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ+KorycpKSxcbiAgICB3YXJuOiAoMCwgX3BpY29jb2xvcnMueWVsbG93KSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ+KaoCcpKSxcbiAgICByZWFkeTogJ+KWsicsXG4gICAgaW5mbzogKDAsIF9waWNvY29sb3JzLndoaXRlKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJyAnKSksXG4gICAgZXZlbnQ6ICgwLCBfcGljb2NvbG9ycy5ncmVlbikoKDAsIF9waWNvY29sb3JzLmJvbGQpKCfinJMnKSksXG4gICAgdHJhY2U6ICgwLCBfcGljb2NvbG9ycy5tYWdlbnRhKSgoMCwgX3BpY29jb2xvcnMuYm9sZCkoJ8K7JykpXG59O1xuY29uc3QgTE9HR0lOR19NRVRIT0QgPSB7XG4gICAgbG9nOiAnbG9nJyxcbiAgICB3YXJuOiAnd2FybicsXG4gICAgZXJyb3I6ICdlcnJvcidcbn07XG5mdW5jdGlvbiBwcmVmaXhlZExvZyhwcmVmaXhUeXBlLCAuLi5tZXNzYWdlKSB7XG4gICAgaWYgKChtZXNzYWdlWzBdID09PSAnJyB8fCBtZXNzYWdlWzBdID09PSB1bmRlZmluZWQpICYmIG1lc3NhZ2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIG1lc3NhZ2Uuc2hpZnQoKTtcbiAgICB9XG4gICAgY29uc3QgY29uc29sZU1ldGhvZCA9IHByZWZpeFR5cGUgaW4gTE9HR0lOR19NRVRIT0QgPyBMT0dHSU5HX01FVEhPRFtwcmVmaXhUeXBlXSA6ICdsb2cnO1xuICAgIGNvbnN0IHByZWZpeCA9IHByZWZpeGVzW3ByZWZpeFR5cGVdO1xuICAgIC8vIElmIHRoZXJlJ3Mgbm8gbWVzc2FnZSwgZG9uJ3QgcHJpbnQgdGhlIHByZWZpeCBidXQgYSBuZXcgbGluZVxuICAgIGlmIChtZXNzYWdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlW2NvbnNvbGVNZXRob2RdKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbnN1cmUgaWYgdGhlcmUncyBBTlNJIGVzY2FwZSBjb2RlcyBpdCdzIGNvbmNhdGVuYXRlZCBpbnRvIG9uZSBzdHJpbmcuXG4gICAgICAgIC8vIENocm9tZSBEZXZUb29sIGNhbiBvbmx5IGhhbmRsZSBjb2xvciBpZiBpdCdzIGluIG9uZSBzdHJpbmcuXG4gICAgICAgIGlmIChtZXNzYWdlLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgbWVzc2FnZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGVbY29uc29sZU1ldGhvZF0oJyAnICsgcHJlZml4ICsgJyAnICsgbWVzc2FnZVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlW2NvbnNvbGVNZXRob2RdKCcgJyArIHByZWZpeCwgLi4ubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBib290c3RyYXAoLi4ubWVzc2FnZSkge1xuICAgIC8vIGxvZ2dpbmcgZm9ybWF0OiAnIDxwcmVmaXg+IDxtZXNzYWdlPidcbiAgICAvLyBlLmcuICcg4pyTIENvbXBpbGVkIHN1Y2Nlc3NmdWxseSdcbiAgICAvLyBBZGQgc3BhY2VzIHRvIGFsaWduIHdpdGggdGhlIGluZGVudCBvZiBvdGhlciBsb2dzXG4gICAgY29uc29sZS5sb2coJyAgICcgKyBtZXNzYWdlLmpvaW4oJyAnKSk7XG59XG5mdW5jdGlvbiB3YWl0KC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZygnd2FpdCcsIC4uLm1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gZXJyb3IoLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKCdlcnJvcicsIC4uLm1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gd2FybiguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coJ3dhcm4nLCAuLi5tZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIHJlYWR5KC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZygncmVhZHknLCAuLi5tZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIGluZm8oLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKCdpbmZvJywgLi4ubWVzc2FnZSk7XG59XG5mdW5jdGlvbiBldmVudCguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coJ2V2ZW50JywgLi4ubWVzc2FnZSk7XG59XG5mdW5jdGlvbiB0cmFjZSguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coJ3RyYWNlJywgLi4ubWVzc2FnZSk7XG59XG5jb25zdCB3YXJuT25jZUNhY2hlID0gbmV3IF9scnVjYWNoZS5MUlVDYWNoZSgxMDAwMCwgKHZhbHVlKT0+dmFsdWUubGVuZ3RoKTtcbmZ1bmN0aW9uIHdhcm5PbmNlKC4uLm1lc3NhZ2UpIHtcbiAgICBjb25zdCBrZXkgPSBtZXNzYWdlLmpvaW4oJyAnKTtcbiAgICBpZiAoIXdhcm5PbmNlQ2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgd2Fybk9uY2VDYWNoZS5zZXQoa2V5LCBrZXkpO1xuICAgICAgICB3YXJuKC4uLm1lc3NhZ2UpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bG9nLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/output/log.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/* eslint-disable import/no-extraneous-dependencies */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createProxy\", ({\n enumerable: true,\n get: function() {\n return createProxy;\n }\n}));\nconst _server = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\nconst createProxy = _server.createClientModuleProxy;\n\n//# sourceMappingURL=module-proxy.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5LmpzIiwibWFwcGluZ3MiOiJBQUFBLHVEQUFvRTtBQUNwRSw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwrQ0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQ7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGJ1aWxkXFx3ZWJwYWNrXFxsb2FkZXJzXFxuZXh0LWZsaWdodC1sb2FkZXJcXG1vZHVsZS1wcm94eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVQcm94eVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUHJveHk7XG4gICAgfVxufSk7XG5jb25zdCBfc2VydmVyID0gcmVxdWlyZShcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zZXJ2ZXJcIik7XG5jb25zdCBjcmVhdGVQcm94eSA9IF9zZXJ2ZXIuY3JlYXRlQ2xpZW50TW9kdWxlUHJveHk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZHVsZS1wcm94eS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/app-router-headers.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-headers.js ***! \************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDYUEsYUFBYTtlQUFiQTs7SUFpQkFDLGNBQWM7ZUFBZEE7O0lBZUFDLDRCQUE0QjtlQUE1QkE7O0lBSkFDLHdCQUF3QjtlQUF4QkE7O0lBZkFDLDRCQUE0QjtlQUE1QkE7O0lBREFDLHVCQUF1QjtlQUF2QkE7O0lBbUJBQyx3QkFBd0I7ZUFBeEJBOztJQUZBQywwQkFBMEI7ZUFBMUJBOztJQUNBQywyQkFBMkI7ZUFBM0JBOztJQXpCQUMsMkJBQTJCO2VBQTNCQTs7SUFLQUMsbUNBQW1DO2VBQW5DQTs7SUFpQkFDLDZCQUE2QjtlQUE3QkE7O0lBdkJBQyw2QkFBNkI7ZUFBN0JBOztJQXFCQUMsb0JBQW9CO2VBQXBCQTs7SUFYQUMsUUFBUTtlQUFSQTs7SUFDQUMsdUJBQXVCO2VBQXZCQTs7SUFoQkFDLFVBQVU7ZUFBVkE7OztBQUFOLE1BQU1BLGFBQWE7QUFDbkIsTUFBTWhCLGdCQUFnQjtBQUl0QixNQUFNWSxnQ0FBZ0M7QUFDdEMsTUFBTUgsOEJBQThCO0FBS3BDLE1BQU1DLHNDQUNYO0FBQ0ssTUFBTUwsMEJBQTBCO0FBQ2hDLE1BQU1ELCtCQUErQjtBQUNyQyxNQUFNVSxXQUFXO0FBQ2pCLE1BQU1DLDBCQUEwQjtBQUVoQyxNQUFNZCxpQkFBaUI7SUFDNUJlO0lBQ0FKO0lBQ0FIO0lBQ0FKO0lBQ0FLO0NBQ0Q7QUFFTSxNQUFNRyx1QkFBdUI7QUFFN0IsTUFBTUYsZ0NBQWdDO0FBQ3RDLE1BQU1SLDJCQUEyQjtBQUNqQyxNQUFNSSw2QkFBNkI7QUFDbkMsTUFBTUMsOEJBQThCO0FBQ3BDLE1BQU1GLDJCQUEyQjtBQUNqQyxNQUFNSiwrQkFBK0IiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXGFwcC1yb3V0ZXItaGVhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9ICdyc2MnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgQUNUSU9OX0hFQURFUiA9ICduZXh0LWFjdGlvbicgYXMgY29uc3Rcbi8vIFRPRE86IEluc3RlYWQgb2Ygc2VuZGluZyB0aGUgZnVsbCByb3V0ZXIgc3RhdGUsIHdlIG9ubHkgbmVlZCB0byBzZW5kIHRoZVxuLy8gc2VnbWVudCBwYXRoLiBTYXZlcyBieXRlcy4gVGhlbiB3ZSBjb3VsZCBhbHNvIHVzZSB0aGlzIGZpZWxkIGZvciBzZWdtZW50XG4vLyBwcmVmZXRjaGVzLCB3aGljaCBhbHNvIG5lZWQgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgc2VnbWVudC5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiA9ICduZXh0LXJvdXRlci1zdGF0ZS10cmVlJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiA9ICduZXh0LXJvdXRlci1wcmVmZXRjaCcgYXMgY29uc3Rcbi8vIFRoaXMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHNlZ21lbnQgYmVpbmcgcHJlZmV0Y2hlZC5cbi8vIFRPRE86IElmIHdlIGNoYW5nZSBuZXh0LXJvdXRlci1zdGF0ZS10cmVlIHRvIGJlIGEgc2VnbWVudCBwYXRoLCB3ZSBjYW4gdXNlXG4vLyB0aGF0IGluc3RlYWQuIFRoZW4gbmV4dC1yb3V0ZXItcHJlZmV0Y2ggYW5kIG5leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2ggY2FuXG4vLyBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBlbnVtLlxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSID1cbiAgJ25leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIgPSAnbmV4dC1obXItcmVmcmVzaCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFID0gJ19fbmV4dF9obXJfcmVmcmVzaF9oYXNoX18nIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSAnbmV4dC11cmwnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC94LWNvbXBvbmVudCcgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IEZMSUdIVF9IRUFERVJTID0gW1xuICBSU0NfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX0hNUl9SRUZSRVNIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBORVhUX1JTQ19VTklPTl9RVUVSWSA9ICdfcnNjJyBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIgPSAneC1uZXh0anMtc3RhbGUtdGltZScgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIgPSAneC1uZXh0anMtcG9zdHBvbmVkJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSID0gJ3gtbmV4dGpzLXJld3JpdHRlbi1wYXRoJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcXVlcnknIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSID0gJ3gtbmV4dGpzLXByZXJlbmRlcicgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSID0gJ3gtbmV4dGpzLWFjdGlvbi1ub3QtZm91bmQnIGFzIGNvbnN0XG4iXSwibmFtZXMiOlsiQUNUSU9OX0hFQURFUiIsIkZMSUdIVF9IRUFERVJTIiwiTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsIk5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUiLCJORVhUX0hNUl9SRUZSRVNIX0hFQURFUiIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSIiwiTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJORVhUX1VSTCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiUlNDX0hFQURFUiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/forbidden.js ***! \***********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return Forbidden;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction Forbidden() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 403,\n message: \"This page could not be accessed.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=forbidden.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZm9yYmlkZGVuLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxidWlsdGluXFxmb3JiaWRkZW4udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIH0gZnJvbSAnLi4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItZmFsbGJhY2snXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcmJpZGRlbigpIHtcbiAgcmV0dXJuIChcbiAgICA8SFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2tcbiAgICAgIHN0YXR1cz17NDAzfVxuICAgICAgbWVzc2FnZT1cIlRoaXMgcGFnZSBjb3VsZCBub3QgYmUgYWNjZXNzZWQuXCJcbiAgICAvPlxuICApXG59XG4iXSwibmFtZXMiOlsiRm9yYmlkZGVuIiwiSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2siLCJzdGF0dXMiLCJtZXNzYWdlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/global-error.js ***! \**************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\builtin\\\\global-error.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCJEOlxcXFxHSVRfSE9NRVxcXFxFUEVFQUlLaXRcXFxcYXJ0LWFnZW50XFxcXGZyb250ZW5kXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcYnVpbHRpblxcXFxnbG9iYWwtZXJyb3IuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/not-found.js ***! \***********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return NotFound;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction NotFound() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 404,\n message: \"This page could not be found.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=not-found.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vbm90LWZvdW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxidWlsdGluXFxub3QtZm91bmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIH0gZnJvbSAnLi4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItZmFsbGJhY2snXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE5vdEZvdW5kKCkge1xuICByZXR1cm4gKFxuICAgIDxIVFRQQWNjZXNzRXJyb3JGYWxsYmFja1xuICAgICAgc3RhdHVzPXs0MDR9XG4gICAgICBtZXNzYWdlPVwiVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5cIlxuICAgIC8+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJOb3RGb3VuZCIsIkhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIiwic3RhdHVzIiwibWVzc2FnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/unauthorized.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return Unauthorized;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ../http-access-fallback/error-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction Unauthorized() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 401,\n message: \"You're not authorized to access this page.\"\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unauthorized.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vdW5hdXRob3JpemVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCLFNBQVNBO0lBQ3RCLHFCQUNFLHFCQUFDQyxlQUFBQSx1QkFBdUI7UUFDdEJDLFFBQVE7UUFDUkMsU0FBUTs7QUFHZCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxidWlsdGluXFx1bmF1dGhvcml6ZWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIH0gZnJvbSAnLi4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItZmFsbGJhY2snXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFVuYXV0aG9yaXplZCgpIHtcbiAgcmV0dXJuIChcbiAgICA8SFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2tcbiAgICAgIHN0YXR1cz17NDAxfVxuICAgICAgbWVzc2FnZT1cIllvdSdyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBwYWdlLlwiXG4gICAgLz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlVuYXV0aG9yaXplZCIsIkhUVFBBY2Nlc3NFcnJvckZhbGxiYWNrIiwic3RhdHVzIiwibWVzc2FnZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/client-page.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/components/client-page.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\client-page.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCJEOlxcXFxHSVRfSE9NRVxcXFxFUEVFQUlLaXRcXFxcYXJ0LWFnZW50XFxcXGZyb250ZW5kXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcY2xpZW50LXBhZ2UuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/client-page.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/client-segment.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/client-segment.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\client-segment.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudC5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCJEOlxcXFxHSVRfSE9NRVxcXFxFUEVFQUlLaXRcXFxcYXJ0LWFnZW50XFxcXGZyb250ZW5kXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcY2xpZW50LXNlZ21lbnQuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/client-segment.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/hooks-server-context.js ***! \**************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicServerError: function() {\n return DynamicServerError;\n },\n isDynamicServerError: function() {\n return isDynamicServerError;\n }\n});\nconst DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nclass DynamicServerError extends Error {\n constructor(description){\n super(\"Dynamic server usage: \" + description), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nfunction isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hooks-server-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxrQkFBa0I7ZUFBbEJBOztJQVFHQyxvQkFBb0I7ZUFBcEJBOzs7QUFWaEIsTUFBTUMscUJBQXFCO0FBRXBCLE1BQU1GLDJCQUEyQkc7SUFHdENDLFlBQTRCQyxXQUFtQixDQUFFO1FBQy9DLEtBQUssQ0FBRSwyQkFBd0JBLGNBQUFBLElBQUFBLENBRExBLFdBQUFBLEdBQUFBLGFBQUFBLElBQUFBLENBRjVCQyxNQUFBQSxHQUFvQ0o7SUFJcEM7QUFDRjtBQUVPLFNBQVNELHFCQUFxQk0sR0FBWTtJQUMvQyxJQUNFLE9BQU9BLFFBQVEsWUFDZkEsUUFBUSxRQUNSLENBQUUsYUFBWUEsR0FBQUEsQ0FBRSxJQUNoQixPQUFPQSxJQUFJRCxNQUFNLEtBQUssVUFDdEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQyxJQUFJRCxNQUFNLEtBQUtKO0FBQ3hCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxob29rcy1zZXJ2ZXItY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBEWU5BTUlDX0VSUk9SX0NPREUgPSAnRFlOQU1JQ19TRVJWRVJfVVNBR0UnXG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRpZ2VzdDogdHlwZW9mIERZTkFNSUNfRVJST1JfQ09ERSA9IERZTkFNSUNfRVJST1JfQ09ERVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYER5bmFtaWMgc2VydmVyIHVzYWdlOiAke2Rlc2NyaXB0aW9ufWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1NlcnZlckVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBEeW5hbWljU2VydmVyRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnIgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycikgfHxcbiAgICB0eXBlb2YgZXJyLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gRFlOQU1JQ19FUlJPUl9DT0RFXG59XG4iXSwibmFtZXMiOlsiRHluYW1pY1NlcnZlckVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJEWU5BTUlDX0VSUk9SX0NPREUiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiZGVzY3JpcHRpb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\http-access-fallback\\\\error-boundary.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1ib3VuZGFyeS5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCJEOlxcXFxHSVRfSE9NRVxcXFxFUEVFQUlLaXRcXFxcYXJ0LWFnZW50XFxcXGZyb250ZW5kXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcaHR0cC1hY2Nlc3MtZmFsbGJhY2tcXFxcZXJyb3ItYm91bmRhcnkuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTTPAccessErrorFallback\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessErrorFallback;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _accesserrorstyles = __webpack_require__(/*! ../styles/access-error-styles */ \"(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js\");\nfunction HTTPAccessErrorFallback(param) {\n let { status, message } = param;\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: status + \": \" + message\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: _accesserrorstyles.styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"style\", {\n dangerouslySetInnerHTML: {\n /* Minified CSS from\n body { margin: 0; color: #000; background: #fff; }\n .next-error-h1 {\n border-right: 1px solid rgba(0, 0, 0, .3);\n }\n\n @media (prefers-color-scheme: dark) {\n body { color: #fff; background: #000; }\n .next-error-h1 {\n border-right: 1px solid rgba(255, 255, 255, .3);\n }\n }\n */ __html: \"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"\n }\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h1\", {\n className: \"next-error-h1\",\n style: _accesserrorstyles.styles.h1,\n children: status\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: _accesserrorstyles.styles.desc,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h2\", {\n style: _accesserrorstyles.styles.h2,\n children: message\n })\n })\n ]\n })\n })\n ]\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkRBRWdCQTs7O2VBQUFBOzs7OytDQUZPO0FBRWhCLFNBQVNBLHdCQUF3QixLQU12QztJQU51QyxNQUN0Q0MsTUFBTSxFQUNOQyxPQUFPLEVBSVIsR0FOdUM7SUFPdEMscUJBQ0U7OzBCQUVFLHFCQUFDQyxTQUFBQTswQkFBVUYsU0FBTyxPQUFJQzs7MEJBRXRCLHFCQUFDRSxPQUFBQTtnQkFBSUMsT0FBT0MsbUJBQUFBLE1BQU0sQ0FBQ0MsS0FBSzswQkFDdEIsb0NBQUNILE9BQUFBOztzQ0FDQyxxQkFBQ0MsU0FBQUE7NEJBQ0NHLHlCQUF5QjtnQ0FDdkI7Ozs7Ozs7Ozs7OztjQVlBLEdBQ0FDLFFBQVM7NEJBQ1g7O3NDQUVGLHFCQUFDQyxNQUFBQTs0QkFBR0MsV0FBVTs0QkFBZ0JOLE9BQU9DLG1CQUFBQSxNQUFNLENBQUNJLEVBQUU7c0NBQzNDVDs7c0NBRUgscUJBQUNHLE9BQUFBOzRCQUFJQyxPQUFPQyxtQkFBQUEsTUFBTSxDQUFDTSxJQUFJO3NDQUNyQixtQ0FBQ0MsTUFBQUE7Z0NBQUdSLE9BQU9DLG1CQUFBQSxNQUFNLENBQUNPLEVBQUU7MENBQUdYOzs7Ozs7OztBQU1uQyIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxodHRwLWFjY2Vzcy1mYWxsYmFja1xcZXJyb3ItZmFsbGJhY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0eWxlcyB9IGZyb20gJy4uL3N0eWxlcy9hY2Nlc3MtZXJyb3Itc3R5bGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2soe1xuICBzdGF0dXMsXG4gIG1lc3NhZ2UsXG59OiB7XG4gIHN0YXR1czogbnVtYmVyXG4gIG1lc3NhZ2U6IHN0cmluZ1xufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogPGhlYWQ+ICovfVxuICAgICAgPHRpdGxlPntgJHtzdGF0dXN9OiAke21lc3NhZ2V9YH08L3RpdGxlPlxuICAgICAgey8qIDwvaGVhZD4gKi99XG4gICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuZXJyb3J9PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHlsZVxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgLyogTWluaWZpZWQgQ1NTIGZyb21cbiAgICAgICAgICAgICAgICBib2R5IHsgbWFyZ2luOiAwOyBjb2xvcjogIzAwMDsgYmFja2dyb3VuZDogI2ZmZjsgfVxuICAgICAgICAgICAgICAgIC5uZXh0LWVycm9yLWgxIHtcbiAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgICAgICAgICAgIGJvZHkgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzAwMDsgfVxuICAgICAgICAgICAgICAgICAgLm5leHQtZXJyb3ItaDEge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4zKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjB9Lm5leHQtZXJyb3ItaDF7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4zKX1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe2JvZHl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMwMDB9Lm5leHQtZXJyb3ItaDF7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4zKX19YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibmV4dC1lcnJvci1oMVwiIHN0eWxlPXtzdHlsZXMuaDF9PlxuICAgICAgICAgICAge3N0YXR1c31cbiAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5kZXNjfT5cbiAgICAgICAgICAgIDxoMiBzdHlsZT17c3R5bGVzLmgyfT57bWVzc2FnZX08L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApXG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2siLCJzdGF0dXMiLCJtZXNzYWdlIiwidGl0bGUiLCJkaXYiLCJzdHlsZSIsInN0eWxlcyIsImVycm9yIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJoMSIsImNsYXNzTmFtZSIsImRlc2MiLCJoMiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js": /*!***********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***! \***********************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=http-access-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFhQSxxQkFBcUI7ZUFBckJBOztJQVFBQyw4QkFBOEI7ZUFBOUJBOztJQXVDR0Msa0NBQWtDO2VBQWxDQTs7SUFQQUMsMkJBQTJCO2VBQTNCQTs7SUFuQkFDLHlCQUF5QjtlQUF6QkE7OztBQXJCVCxNQUFNSix3QkFBd0I7SUFDbkNLLFdBQVc7SUFDWEMsV0FBVztJQUNYQyxjQUFjO0FBQ2hCO0FBRUEsTUFBTUMsZ0JBQWdCLElBQUlDLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ1g7QUFFckMsTUFBTUMsaUNBQWlDO0FBYXZDLFNBQVNHLDBCQUNkUSxLQUFjO0lBRWQsSUFDRSxPQUFPQSxVQUFVLFlBQ2pCQSxVQUFVLFFBQ1YsQ0FBRSxhQUFZQSxLQUFBQSxDQUFJLElBQ2xCLE9BQU9BLE1BQU1DLE1BQU0sS0FBSyxVQUN4QjtRQUNBLE9BQU87SUFDVDtJQUNBLE1BQU0sQ0FBQ0MsUUFBUUMsV0FBVyxHQUFHSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQztJQUVoRCxPQUNFRixXQUFXYixrQ0FDWE8sY0FBY1MsR0FBRyxDQUFDQyxPQUFPSDtBQUU3QjtBQUVPLFNBQVNaLDRCQUNkUyxLQUE4QjtJQUU5QixNQUFNRyxhQUFhSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM3QyxPQUFPRSxPQUFPSDtBQUNoQjtBQUVPLFNBQVNiLG1DQUNkaUIsTUFBYztJQUVkLE9BQVFBO1FBQ04sS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1Q7WUFDRTtJQUNKO0FBQ0YiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcaHR0cC1hY2Nlc3MtZmFsbGJhY2tcXGh0dHAtYWNjZXNzLWZhbGxiYWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIVFRQQWNjZXNzRXJyb3JTdGF0dXMgPSB7XG4gIE5PVF9GT1VORDogNDA0LFxuICBGT1JCSURERU46IDQwMyxcbiAgVU5BVVRIT1JJWkVEOiA0MDEsXG59XG5cbmNvbnN0IEFMTE9XRURfQ09ERVMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoSFRUUEFjY2Vzc0Vycm9yU3RhdHVzKSlcblxuZXhwb3J0IGNvbnN0IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSA9ICdORVhUX0hUVFBfRVJST1JfRkFMTEJBQ0snXG5cbmV4cG9ydCB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogYCR7dHlwZW9mIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07JHtzdHJpbmd9YFxufVxuXG4vKipcbiAqIENoZWNrcyBhbiBlcnJvciB0byBkZXRlcm1pbmUgaWYgaXQncyBhbiBlcnJvciBnZW5lcmF0ZWQgYnlcbiAqIHRoZSBIVFRQIG5hdmlnYXRpb24gQVBJcyBgbm90Rm91bmQoKWAsIGBmb3JiaWRkZW4oKWAgb3IgYHVuYXV0aG9yaXplZCgpYC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyB8fFxuICAgIGVycm9yID09PSBudWxsIHx8XG4gICAgISgnZGlnZXN0JyBpbiBlcnJvcikgfHxcbiAgICB0eXBlb2YgZXJyb3IuZGlnZXN0ICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBbcHJlZml4LCBodHRwU3RhdHVzXSA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpXG5cbiAgcmV0dXJuIChcbiAgICBwcmVmaXggPT09IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSAmJlxuICAgIEFMTE9XRURfQ09ERVMuaGFzKE51bWJlcihodHRwU3RhdHVzKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzKFxuICBlcnJvcjogSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Jcbik6IG51bWJlciB7XG4gIGNvbnN0IGh0dHBTdGF0dXMgPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVsxXVxuICByZXR1cm4gTnVtYmVyKGh0dHBTdGF0dXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzKFxuICBzdGF0dXM6IG51bWJlclxuKTogJ25vdC1mb3VuZCcgfCAnZm9yYmlkZGVuJyB8ICd1bmF1dGhvcml6ZWQnIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIDQwMTpcbiAgICAgIHJldHVybiAndW5hdXRob3JpemVkJ1xuICAgIGNhc2UgNDAzOlxuICAgICAgcmV0dXJuICdmb3JiaWRkZW4nXG4gICAgY2FzZSA0MDQ6XG4gICAgICByZXR1cm4gJ25vdC1mb3VuZCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJIVFRQQWNjZXNzRXJyb3JTdGF0dXMiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzIiwiZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciIsIk5PVF9GT1VORCIsIkZPUkJJRERFTiIsIlVOQVVUSE9SSVpFRCIsIkFMTE9XRURfQ09ERVMiLCJTZXQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJlcnJvciIsImRpZ2VzdCIsInByZWZpeCIsImh0dHBTdGF0dXMiLCJzcGxpdCIsImhhcyIsIk51bWJlciIsInN0YXR1cyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/is-next-router-error.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(rsc)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=is-next-router-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBV2dCQTs7O2VBQUFBOzs7Z0RBUlQ7MkNBQzZDO0FBTzdDLFNBQVNBLGtCQUNkQyxLQUFjO0lBRWQsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JELFVBQVVFLENBQUFBLEdBQUFBLG9CQUFBQSx5QkFBQUEsRUFBMEJGO0FBQzdEIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxpcy1uZXh0LXJvdXRlci1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuaW1wb3J0IHsgaXNSZWRpcmVjdEVycm9yLCB0eXBlIFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSBuYXZpZ2F0aW9uIHNpZ25hbCBlcnJvci4gVGhlc2UgZXJyb3JzIGFyZVxuICogdGhyb3duIGJ5IHVzZXIgY29kZSB0byBwZXJmb3JtIG5hdmlnYXRpb24gb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0IHRoZSBSZWFjdFxuICogcmVuZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOZXh0Um91dGVyRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBSZWRpcmVjdEVycm9yIHwgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICByZXR1cm4gaXNSZWRpcmVjdEVycm9yKGVycm9yKSB8fCBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKGVycm9yKVxufVxuIl0sIm5hbWVzIjpbImlzTmV4dFJvdXRlckVycm9yIiwiZXJyb3IiLCJpc1JlZGlyZWN0RXJyb3IiLCJpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/layout-router.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/components/layout-router.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\layout-router.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXGNsaWVudFxcXFxjb21wb25lbnRzXFxcXGxheW91dC1yb3V0ZXIuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/layout-router.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/components/metadata/async-metadata.js ***! \*****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\metadata\\\\async-metadata.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL21ldGFkYXRhL2FzeW5jLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJfTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9tZXRhZGF0YS9hc3luYy1tZXRhZGF0YS5qcy9fX25leHRqcy1pbnRlcm5hbC1wcm94eS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgV2VicGFjayBuZXh0LWZsaWdodC1sb2FkZXIuXG5jb25zdCB7IGNyZWF0ZVByb3h5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUHJveHkoXCJEOlxcXFxHSVRfSE9NRVxcXFxFUEVFQUlLaXRcXFxcYXJ0LWFnZW50XFxcXGZyb250ZW5kXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcbWV0YWRhdGFcXFxcYXN5bmMtbWV0YWRhdGEuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/redirect-error.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-error.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n RedirectType: function() {\n return RedirectType;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nvar RedirectType = /*#__PURE__*/ function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n return RedirectType;\n}({});\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxtQkFBbUI7ZUFBbkJBOztJQUVEQyxZQUFZO2VBQVpBOztJQWdCSUMsZUFBZTtlQUFmQTs7O2dEQXBCbUI7QUFFNUIsTUFBTUYsc0JBQXNCO0FBRTVCLElBQUtDLGVBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLFlBQUFBOzs7V0FBQUE7O0FBZ0JMLFNBQVNDLGdCQUFnQkMsS0FBYztJQUM1QyxJQUNFLE9BQU9BLFVBQVUsWUFDakJBLFVBQVUsUUFDVixDQUFFLGFBQVlBLEtBQUFBLENBQUksSUFDbEIsT0FBT0EsTUFBTUMsTUFBTSxLQUFLLFVBQ3hCO1FBQ0EsT0FBTztJQUNUO0lBRUEsTUFBTUEsU0FBU0QsTUFBTUMsTUFBTSxDQUFDQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxDQUFDQyxXQUFXQyxLQUFLLEdBQUdIO0lBQzFCLE1BQU1JLGNBQWNKLE9BQU9LLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDO0lBQzdDLE1BQU1DLFNBQVNQLE9BQU9RLEVBQUUsQ0FBQyxDQUFDO0lBRTFCLE1BQU1DLGFBQWFDLE9BQU9IO0lBRTFCLE9BQ0VMLGNBQWNOLHVCQUNiTyxDQUFBQSxTQUFTLGFBQWFBLFNBQVMsT0FBSyxJQUNyQyxPQUFPQyxnQkFBZ0IsWUFDdkIsQ0FBQ08sTUFBTUYsZUFDUEEsY0FBY0csb0JBQUFBLGtCQUFrQjtBQUVwQyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccmVkaXJlY3QtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSAnLi9yZWRpcmVjdC1zdGF0dXMtY29kZSdcblxuZXhwb3J0IGNvbnN0IFJFRElSRUNUX0VSUk9SX0NPREUgPSAnTkVYVF9SRURJUkVDVCdcblxuZXhwb3J0IGVudW0gUmVkaXJlY3RUeXBlIHtcbiAgcHVzaCA9ICdwdXNoJyxcbiAgcmVwbGFjZSA9ICdyZXBsYWNlJyxcbn1cblxuZXhwb3J0IHR5cGUgUmVkaXJlY3RFcnJvciA9IEVycm9yICYge1xuICBkaWdlc3Q6IGAke3R5cGVvZiBSRURJUkVDVF9FUlJPUl9DT0RFfTske1JlZGlyZWN0VHlwZX07JHtzdHJpbmd9OyR7UmVkaXJlY3RTdGF0dXNDb2RlfTtgXG59XG5cbi8qKlxuICogQ2hlY2tzIGFuIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCdzIGFuIGVycm9yIGdlbmVyYXRlZCBieSB0aGVcbiAqIGByZWRpcmVjdCh1cmwpYCBoZWxwZXIuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSByZWZlcmVuY2UgYSByZWRpcmVjdCBlcnJvclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSByZWRpcmVjdCBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWRpcmVjdEVycm9yKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVkaXJlY3RFcnJvciB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8XG4gICAgZXJyb3IgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycm9yKSB8fFxuICAgIHR5cGVvZiBlcnJvci5kaWdlc3QgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgZGlnZXN0ID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylcbiAgY29uc3QgW2Vycm9yQ29kZSwgdHlwZV0gPSBkaWdlc3RcbiAgY29uc3QgZGVzdGluYXRpb24gPSBkaWdlc3Quc2xpY2UoMiwgLTIpLmpvaW4oJzsnKVxuICBjb25zdCBzdGF0dXMgPSBkaWdlc3QuYXQoLTIpXG5cbiAgY29uc3Qgc3RhdHVzQ29kZSA9IE51bWJlcihzdGF0dXMpXG5cbiAgcmV0dXJuIChcbiAgICBlcnJvckNvZGUgPT09IFJFRElSRUNUX0VSUk9SX0NPREUgJiZcbiAgICAodHlwZSA9PT0gJ3JlcGxhY2UnIHx8IHR5cGUgPT09ICdwdXNoJykgJiZcbiAgICB0eXBlb2YgZGVzdGluYXRpb24gPT09ICdzdHJpbmcnICYmXG4gICAgIWlzTmFOKHN0YXR1c0NvZGUpICYmXG4gICAgc3RhdHVzQ29kZSBpbiBSZWRpcmVjdFN0YXR1c0NvZGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJFRElSRUNUX0VSUk9SX0NPREUiLCJSZWRpcmVjdFR5cGUiLCJpc1JlZGlyZWN0RXJyb3IiLCJlcnJvciIsImRpZ2VzdCIsInNwbGl0IiwiZXJyb3JDb2RlIiwidHlwZSIsImRlc3RpbmF0aW9uIiwic2xpY2UiLCJqb2luIiwic3RhdHVzIiwiYXQiLCJzdGF0dXNDb2RlIiwiTnVtYmVyIiwiaXNOYU4iLCJSZWRpcmVjdFN0YXR1c0NvZGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/redirect-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-status-code.js ***! \**************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-status-code.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlLmpzIiwibWFwcGluZ3MiOiI7Ozs7c0RBQVlBOzs7ZUFBQUE7OztBQUFMLElBQUtBLHFCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxrQkFBQUE7Ozs7V0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHJlZGlyZWN0LXN0YXR1cy1jb2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlZGlyZWN0U3RhdHVzQ29kZSB7XG4gIFNlZU90aGVyID0gMzAzLFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG59XG4iXSwibmFtZXMiOlsiUmVkaXJlY3RTdGF0dXNDb2RlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js": /*!**********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/render-from-template-context.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\client\\\\components\\\\render-from-template-context.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXGNsaWVudFxcXFxjb21wb25lbnRzXFxcXHJlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/client/components/static-generation-bailout.js ***! \*******************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n StaticGenBailoutError: function() {\n return StaticGenBailoutError;\n },\n isStaticGenBailoutError: function() {\n return isStaticGenBailoutError;\n }\n});\nconst NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nfunction isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLHFCQUFxQjtlQUFyQkE7O0lBSUdDLHVCQUF1QjtlQUF2QkE7OztBQU5oQixNQUFNQywwQkFBMEI7QUFFekIsTUFBTUYsOEJBQThCRzs7UUFBcEMscUJBQ1dDLElBQUFBLEdBQU9GOztBQUN6QjtBQUVPLFNBQVNELHdCQUNkSSxLQUFjO0lBRWQsSUFBSSxPQUFPQSxVQUFVLFlBQVlBLFVBQVUsUUFBUSxDQUFFLFdBQVVBLEtBQUFBLENBQUksRUFBSTtRQUNyRSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQSxNQUFNRCxJQUFJLEtBQUtGO0FBQ3hCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxzdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUID0gJ05FWFRfU1RBVElDX0dFTl9CQUlMT1VUJ1xuXG5leHBvcnQgY2xhc3MgU3RhdGljR2VuQmFpbG91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZSA9IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0dlbkJhaWxvdXRFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIFN0YXRpY0dlbkJhaWxvdXRFcnJvciB7XG4gIGlmICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8IGVycm9yID09PSBudWxsIHx8ICEoJ2NvZGUnIGluIGVycm9yKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGVycm9yLmNvZGUgPT09IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUXG59XG4iXSwibmFtZXMiOlsiU3RhdGljR2VuQmFpbG91dEVycm9yIiwiaXNTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJORVhUX1NUQVRJQ19HRU5fQkFJTE9VVCIsIkVycm9yIiwiY29kZSIsImVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/styles/access-error-styles.js ***! \********************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"styles\", ({\n enumerable: true,\n get: function() {\n return styles;\n }\n}));\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n desc: {\n display: 'inline-block'\n },\n h1: {\n display: 'inline-block',\n margin: '0 20px 0 0',\n padding: '0 23px 0 0',\n fontSize: 24,\n fontWeight: 500,\n verticalAlign: 'top',\n lineHeight: '49px'\n },\n h2: {\n fontSize: 14,\n fontWeight: 400,\n lineHeight: '49px',\n margin: 0\n }\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=access-error-styles.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0eWxlcy9hY2Nlc3MtZXJyb3Itc3R5bGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7MENBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLFNBQThDO0lBQ3pEQyxPQUFPO1FBQ0wsMEZBQTBGO1FBQzFGQyxZQUNFO1FBQ0ZDLFFBQVE7UUFDUkMsV0FBVztRQUNYQyxTQUFTO1FBQ1RDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxnQkFBZ0I7SUFDbEI7SUFFQUMsTUFBTTtRQUNKSixTQUFTO0lBQ1g7SUFFQUssSUFBSTtRQUNGTCxTQUFTO1FBQ1RNLFFBQVE7UUFDUkMsU0FBUztRQUNUQyxVQUFVO1FBQ1ZDLFlBQVk7UUFDWkMsZUFBZTtRQUNmQyxZQUFZO0lBQ2Q7SUFFQUMsSUFBSTtRQUNGSixVQUFVO1FBQ1ZDLFlBQVk7UUFDWkUsWUFBWTtRQUNaTCxRQUFRO0lBQ1Y7QUFDRiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxzdHlsZXNcXGFjY2Vzcy1lcnJvci1zdHlsZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHN0eWxlczogUmVjb3JkPHN0cmluZywgUmVhY3QuQ1NTUHJvcGVydGllcz4gPSB7XG4gIGVycm9yOiB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplL2Jsb2IvbWFpbi9tb2Rlcm4tbm9ybWFsaXplLmNzcyNMMzgtTDUyXG4gICAgZm9udEZhbWlseTpcbiAgICAgICdzeXN0ZW0tdWksXCJTZWdvZSBVSVwiLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZixcIkFwcGxlIENvbG9yIEVtb2ppXCIsXCJTZWdvZSBVSSBFbW9qaVwiJyxcbiAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB9LFxuXG4gIGRlc2M6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgfSxcblxuICBoMToge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIG1hcmdpbjogJzAgMjBweCAwIDAnLFxuICAgIHBhZGRpbmc6ICcwIDIzcHggMCAwJyxcbiAgICBmb250U2l6ZTogMjQsXG4gICAgZm9udFdlaWdodDogNTAwLFxuICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgIGxpbmVIZWlnaHQ6ICc0OXB4JyxcbiAgfSxcblxuICBoMjoge1xuICAgIGZvbnRTaXplOiAxNCxcbiAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgbGluZUhlaWdodDogJzQ5cHgnLFxuICAgIG1hcmdpbjogMCxcbiAgfSxcbn1cbiJdLCJuYW1lcyI6WyJzdHlsZXMiLCJlcnJvciIsImZvbnRGYW1pbHkiLCJoZWlnaHQiLCJ0ZXh0QWxpZ24iLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImRlc2MiLCJoMSIsIm1hcmdpbiIsInBhZGRpbmciLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJ2ZXJ0aWNhbEFsaWduIiwibGluZUhlaWdodCIsImgyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/styles/access-error-styles.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js ***! \************************************************************************/ /***/ ((module) => { "use strict"; eval("\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (0);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RkFBNEY7QUFDekg7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixhQUFhOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUMsbUVBQW1FLGdGQUFnRjtBQUNuSixnRUFBZ0UsU0FBUztBQUN6RSwyQ0FBMkMsU0FBUztBQUNwRDtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBLHlCQUF5QixPQUFPLEdBQUcscURBQXFEO0FBQ3hGLCtDQUErQyxjQUFjLEVBQUUsY0FBYyxHQUFHO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hELHFCQUFxQixnQkFBZ0I7QUFDckMsdUNBQXVDLHdCQUF3QjtBQUMvRDtBQUNBLHFCQUFxQixtQ0FBbUM7QUFDeEQsbUJBQW1CLGNBQWM7QUFDakMscUJBQXFCLG1DQUFtQztBQUN4RCx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsYUFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGlEQUFpRDtBQUM5RTtBQUNBO0FBQ0Esb0RBQW9ELE9BQU8sR0FBRyw0QkFBNEIsV0FBVztBQUNyRztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0RUFBNEU7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRkFBa0Y7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNEVBQTRFO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHdCQUF3QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0ZBQWtGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtRUFBbUU7QUFDekY7QUFDQTtBQUNBLDhCQUE4QixpREFBaUQ7QUFDL0U7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MscUJBQXFCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sQ0FNTCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcY29tcGlsZWRcXEBlZGdlLXJ1bnRpbWVcXGNvb2tpZXNcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIFJlcXVlc3RDb29raWVzOiAoKSA9PiBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzOiAoKSA9PiBSZXNwb25zZUNvb2tpZXMsXG4gIHBhcnNlQ29va2llOiAoKSA9PiBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWU6ICgpID0+IHBhcnNlU2V0Q29va2llLFxuICBzdHJpbmdpZnlDb29raWU6ICgpID0+IHN0cmluZ2lmeUNvb2tpZVxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9zZXJpYWxpemUudHNcbmZ1bmN0aW9uIHN0cmluZ2lmeUNvb2tpZShjKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgYXR0cnMgPSBbXG4gICAgXCJwYXRoXCIgaW4gYyAmJiBjLnBhdGggJiYgYFBhdGg9JHtjLnBhdGh9YCxcbiAgICBcImV4cGlyZXNcIiBpbiBjICYmIChjLmV4cGlyZXMgfHwgYy5leHBpcmVzID09PSAwKSAmJiBgRXhwaXJlcz0keyh0eXBlb2YgYy5leHBpcmVzID09PSBcIm51bWJlclwiID8gbmV3IERhdGUoYy5leHBpcmVzKSA6IGMuZXhwaXJlcykudG9VVENTdHJpbmcoKX1gLFxuICAgIFwibWF4QWdlXCIgaW4gYyAmJiB0eXBlb2YgYy5tYXhBZ2UgPT09IFwibnVtYmVyXCIgJiYgYE1heC1BZ2U9JHtjLm1heEFnZX1gLFxuICAgIFwiZG9tYWluXCIgaW4gYyAmJiBjLmRvbWFpbiAmJiBgRG9tYWluPSR7Yy5kb21haW59YCxcbiAgICBcInNlY3VyZVwiIGluIGMgJiYgYy5zZWN1cmUgJiYgXCJTZWN1cmVcIixcbiAgICBcImh0dHBPbmx5XCIgaW4gYyAmJiBjLmh0dHBPbmx5ICYmIFwiSHR0cE9ubHlcIixcbiAgICBcInNhbWVTaXRlXCIgaW4gYyAmJiBjLnNhbWVTaXRlICYmIGBTYW1lU2l0ZT0ke2Muc2FtZVNpdGV9YCxcbiAgICBcInBhcnRpdGlvbmVkXCIgaW4gYyAmJiBjLnBhcnRpdGlvbmVkICYmIFwiUGFydGl0aW9uZWRcIixcbiAgICBcInByaW9yaXR5XCIgaW4gYyAmJiBjLnByaW9yaXR5ICYmIGBQcmlvcml0eT0ke2MucHJpb3JpdHl9YFxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3Qgc3RyaW5naWZpZWQgPSBgJHtjLm5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KChfYSA9IGMudmFsdWUpICE9IG51bGwgPyBfYSA6IFwiXCIpfWA7XG4gIHJldHVybiBhdHRycy5sZW5ndGggPT09IDAgPyBzdHJpbmdpZmllZCA6IGAke3N0cmluZ2lmaWVkfTsgJHthdHRycy5qb2luKFwiOyBcIil9YDtcbn1cbmZ1bmN0aW9uIHBhcnNlQ29va2llKGNvb2tpZSkge1xuICBjb25zdCBtYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBmb3IgKGNvbnN0IHBhaXIgb2YgY29va2llLnNwbGl0KC87ICovKSkge1xuICAgIGlmICghcGFpcilcbiAgICAgIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNwbGl0QXQgPSBwYWlyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmIChzcGxpdEF0ID09PSAtMSkge1xuICAgICAgbWFwLnNldChwYWlyLCBcInRydWVcIik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gW3BhaXIuc2xpY2UoMCwgc3BsaXRBdCksIHBhaXIuc2xpY2Uoc3BsaXRBdCArIDEpXTtcbiAgICB0cnkge1xuICAgICAgbWFwLnNldChrZXksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBcInRydWVcIikpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWFwO1xufVxuZnVuY3Rpb24gcGFyc2VTZXRDb29raWUoc2V0Q29va2llKSB7XG4gIGlmICghc2V0Q29va2llKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBjb25zdCBbW25hbWUsIHZhbHVlXSwgLi4uYXR0cmlidXRlc10gPSBwYXJzZUNvb2tpZShzZXRDb29raWUpO1xuICBjb25zdCB7XG4gICAgZG9tYWluLFxuICAgIGV4cGlyZXMsXG4gICAgaHR0cG9ubHksXG4gICAgbWF4YWdlLFxuICAgIHBhdGgsXG4gICAgc2FtZXNpdGUsXG4gICAgc2VjdXJlLFxuICAgIHBhcnRpdGlvbmVkLFxuICAgIHByaW9yaXR5XG4gIH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgYXR0cmlidXRlcy5tYXAoKFtrZXksIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICB2YWx1ZTJcbiAgICBdKVxuICApO1xuICBjb25zdCBjb29raWUgPSB7XG4gICAgbmFtZSxcbiAgICB2YWx1ZTogZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSxcbiAgICBkb21haW4sXG4gICAgLi4uZXhwaXJlcyAmJiB7IGV4cGlyZXM6IG5ldyBEYXRlKGV4cGlyZXMpIH0sXG4gICAgLi4uaHR0cG9ubHkgJiYgeyBodHRwT25seTogdHJ1ZSB9LFxuICAgIC4uLnR5cGVvZiBtYXhhZ2UgPT09IFwic3RyaW5nXCIgJiYgeyBtYXhBZ2U6IE51bWJlcihtYXhhZ2UpIH0sXG4gICAgcGF0aCxcbiAgICAuLi5zYW1lc2l0ZSAmJiB7IHNhbWVTaXRlOiBwYXJzZVNhbWVTaXRlKHNhbWVzaXRlKSB9LFxuICAgIC4uLnNlY3VyZSAmJiB7IHNlY3VyZTogdHJ1ZSB9LFxuICAgIC4uLnByaW9yaXR5ICYmIHsgcHJpb3JpdHk6IHBhcnNlUHJpb3JpdHkocHJpb3JpdHkpIH0sXG4gICAgLi4ucGFydGl0aW9uZWQgJiYgeyBwYXJ0aXRpb25lZDogdHJ1ZSB9XG4gIH07XG4gIHJldHVybiBjb21wYWN0KGNvb2tpZSk7XG59XG5mdW5jdGlvbiBjb21wYWN0KHQpIHtcbiAgY29uc3QgbmV3VCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB0KSB7XG4gICAgaWYgKHRba2V5XSkge1xuICAgICAgbmV3VFtrZXldID0gdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3VDtcbn1cbnZhciBTQU1FX1NJVEUgPSBbXCJzdHJpY3RcIiwgXCJsYXhcIiwgXCJub25lXCJdO1xuZnVuY3Rpb24gcGFyc2VTYW1lU2l0ZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBTQU1FX1NJVEUuaW5jbHVkZXMoc3RyaW5nKSA/IHN0cmluZyA6IHZvaWQgMDtcbn1cbnZhciBQUklPUklUWSA9IFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl07XG5mdW5jdGlvbiBwYXJzZVByaW9yaXR5KHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIFBSSU9SSVRZLmluY2x1ZGVzKHN0cmluZykgPyBzdHJpbmcgOiB2b2lkIDA7XG59XG5mdW5jdGlvbiBzcGxpdENvb2tpZXNTdHJpbmcoY29va2llc1N0cmluZykge1xuICBpZiAoIWNvb2tpZXNTdHJpbmcpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgY29va2llc1N0cmluZ3MgPSBbXTtcbiAgdmFyIHBvcyA9IDA7XG4gIHZhciBzdGFydDtcbiAgdmFyIGNoO1xuICB2YXIgbGFzdENvbW1hO1xuICB2YXIgbmV4dFN0YXJ0O1xuICB2YXIgY29va2llc1NlcGFyYXRvckZvdW5kO1xuICBmdW5jdGlvbiBza2lwV2hpdGVzcGFjZSgpIHtcbiAgICB3aGlsZSAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgL1xccy8udGVzdChjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpKSkge1xuICAgICAgcG9zICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aDtcbiAgfVxuICBmdW5jdGlvbiBub3RTcGVjaWFsQ2hhcigpIHtcbiAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgcmV0dXJuIGNoICE9PSBcIj1cIiAmJiBjaCAhPT0gXCI7XCIgJiYgY2ggIT09IFwiLFwiO1xuICB9XG4gIHdoaWxlIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCkge1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGNvb2tpZXNTZXBhcmF0b3JGb3VuZCA9IGZhbHNlO1xuICAgIHdoaWxlIChza2lwV2hpdGVzcGFjZSgpKSB7XG4gICAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICBpZiAoY2ggPT09IFwiLFwiKSB7XG4gICAgICAgIGxhc3RDb21tYSA9IHBvcztcbiAgICAgICAgcG9zICs9IDE7XG4gICAgICAgIHNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgIG5leHRTdGFydCA9IHBvcztcbiAgICAgICAgd2hpbGUgKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIG5vdFNwZWNpYWxDaGFyKCkpIHtcbiAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgY29va2llc1N0cmluZy5jaGFyQXQocG9zKSA9PT0gXCI9XCIpIHtcbiAgICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSB0cnVlO1xuICAgICAgICAgIHBvcyA9IG5leHRTdGFydDtcbiAgICAgICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBsYXN0Q29tbWEpKTtcbiAgICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3MgPSBsYXN0Q29tbWEgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgKz0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjb29raWVzU2VwYXJhdG9yRm91bmQgfHwgcG9zID49IGNvb2tpZXNTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjb29raWVzU3RyaW5ncy5wdXNoKGNvb2tpZXNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBjb29raWVzU3RyaW5nLmxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29va2llc1N0cmluZ3M7XG59XG5cbi8vIHNyYy9yZXF1ZXN0LWNvb2tpZXMudHNcbnZhciBSZXF1ZXN0Q29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVxdWVzdEhlYWRlcnMpIHtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5fcGFyc2VkID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICB0aGlzLl9oZWFkZXJzID0gcmVxdWVzdEhlYWRlcnM7XG4gICAgY29uc3QgaGVhZGVyID0gcmVxdWVzdEhlYWRlcnMuZ2V0KFwiY29va2llXCIpO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlQ29va2llKGhlYWRlcik7XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgcGFyc2VkKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlZC5zZXQobmFtZSwgeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29va2llcyByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnRcbiAgICovXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuc2l6ZTtcbiAgfVxuICBnZXQoLi4uYXJncykge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQobmFtZSk7XG4gIH1cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGwubWFwKChbXywgdmFsdWVdKSA9PiB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiAoX2EgPSBhcmdzWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZTtcbiAgICByZXR1cm4gYWxsLmZpbHRlcigoW25dKSA9PiBuID09PSBuYW1lKS5tYXAoKFtfLCB2YWx1ZV0pID0+IHZhbHVlKTtcbiAgfVxuICBoYXMobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuaGFzKG5hbWUpO1xuICB9XG4gIHNldCguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGFyZ3MubGVuZ3RoID09PSAxID8gW2FyZ3NbMF0ubmFtZSwgYXJnc1swXS52YWx1ZV0gOiBhcmdzO1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuX3BhcnNlZDtcbiAgICBtYXAuc2V0KG5hbWUsIHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgdGhpcy5faGVhZGVycy5zZXQoXG4gICAgICBcImNvb2tpZVwiLFxuICAgICAgQXJyYXkuZnJvbShtYXApLm1hcCgoW18sIHZhbHVlMl0pID0+IHN0cmluZ2lmeUNvb2tpZSh2YWx1ZTIpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGNvb2tpZXMgbWF0Y2hpbmcgdGhlIHBhc3NlZCBuYW1lIG9yIG5hbWVzIGluIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgZGVsZXRlKG5hbWVzKSB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5fcGFyc2VkO1xuICAgIGNvbnN0IHJlc3VsdCA9ICFBcnJheS5pc0FycmF5KG5hbWVzKSA/IG1hcC5kZWxldGUobmFtZXMpIDogbmFtZXMubWFwKChuYW1lKSA9PiBtYXAuZGVsZXRlKG5hbWUpKTtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChcbiAgICAgIFwiY29va2llXCIsXG4gICAgICBBcnJheS5mcm9tKG1hcCkubWFwKChbXywgdmFsdWVdKSA9PiBzdHJpbmdpZnlDb29raWUodmFsdWUpKS5qb2luKFwiOyBcIilcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgdGhlIGNvb2tpZXMgaW4gdGhlIGNvb2tpZXMgaW4gdGhlIHJlcXVlc3QuXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLmRlbGV0ZShBcnJheS5mcm9tKHRoaXMuX3BhcnNlZC5rZXlzKCkpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICogRm9ybWF0IHRoZSBjb29raWVzIGluIHRoZSByZXF1ZXN0IGFzIGEgc3RyaW5nIGZvciBsb2dnaW5nXG4gICAqL1xuICBbU3ltYm9sLmZvcihcImVkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbVwiKV0oKSB7XG4gICAgcmV0dXJuIGBSZXF1ZXN0Q29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoKHYpID0+IGAke3YubmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQodi52YWx1ZSl9YCkuam9pbihcIjsgXCIpO1xuICB9XG59O1xuXG4vLyBzcmMvcmVzcG9uc2UtY29va2llcy50c1xudmFyIFJlc3BvbnNlQ29va2llcyA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocmVzcG9uc2VIZWFkZXJzKSB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHRoaXMuX3BhcnNlZCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgdGhpcy5faGVhZGVycyA9IHJlc3BvbnNlSGVhZGVycztcbiAgICBjb25zdCBzZXRDb29raWUgPSAoX2MgPSAoX2IgPSAoX2EgPSByZXNwb25zZUhlYWRlcnMuZ2V0U2V0Q29va2llKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChyZXNwb25zZUhlYWRlcnMpKSAhPSBudWxsID8gX2IgOiByZXNwb25zZUhlYWRlcnMuZ2V0KFwic2V0LWNvb2tpZVwiKSkgIT0gbnVsbCA/IF9jIDogW107XG4gICAgY29uc3QgY29va2llU3RyaW5ncyA9IEFycmF5LmlzQXJyYXkoc2V0Q29va2llKSA/IHNldENvb2tpZSA6IHNwbGl0Q29va2llc1N0cmluZyhzZXRDb29raWUpO1xuICAgIGZvciAoY29uc3QgY29va2llU3RyaW5nIG9mIGNvb2tpZVN0cmluZ3MpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU2V0Q29va2llKGNvb2tpZVN0cmluZyk7XG4gICAgICBpZiAocGFyc2VkKVxuICAgICAgICB0aGlzLl9wYXJzZWQuc2V0KHBhcnNlZC5uYW1lLCBwYXJzZWQpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXQgQ29va2llU3RvcmUjZ2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBrZXkgPSB0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3NbMF0gOiBhcmdzWzBdLm5hbWU7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5nZXQoa2V5KTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1nZXRBbGwgQ29va2llU3RvcmUjZ2V0QWxsfSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZ2V0QWxsKC4uLmFyZ3MpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYWxsID0gQXJyYXkuZnJvbSh0aGlzLl9wYXJzZWQudmFsdWVzKCkpO1xuICAgIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhbGw7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IChfYSA9IGFyZ3NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lO1xuICAgIHJldHVybiBhbGwuZmlsdGVyKChjKSA9PiBjLm5hbWUgPT09IGtleSk7XG4gIH1cbiAgaGFzKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkLmhhcyhuYW1lKTtcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1zZXQgQ29va2llU3RvcmUjc2V0fSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgc2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbbmFtZSwgdmFsdWUsIGNvb2tpZV0gPSBhcmdzLmxlbmd0aCA9PT0gMSA/IFthcmdzWzBdLm5hbWUsIGFyZ3NbMF0udmFsdWUsIGFyZ3NbMF1dIDogYXJncztcbiAgICBjb25zdCBtYXAgPSB0aGlzLl9wYXJzZWQ7XG4gICAgbWFwLnNldChuYW1lLCBub3JtYWxpemVDb29raWUoeyBuYW1lLCB2YWx1ZSwgLi4uY29va2llIH0pKTtcbiAgICByZXBsYWNlKG1hcCwgdGhpcy5faGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIHtAbGluayBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Nvb2tpZS1zdG9yZS8jQ29va2llU3RvcmUtZGVsZXRlIENvb2tpZVN0b3JlI2RlbGV0ZX0gd2l0aG91dCB0aGUgUHJvbWlzZS5cbiAgICovXG4gIGRlbGV0ZSguLi5hcmdzKSB7XG4gICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gdHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgPyBbYXJnc1swXV0gOiBbYXJnc1swXS5uYW1lLCBhcmdzWzBdXTtcbiAgICByZXR1cm4gdGhpcy5zZXQoeyAuLi5vcHRpb25zLCBuYW1lLCB2YWx1ZTogXCJcIiwgZXhwaXJlczogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApIH0pO1xuICB9XG4gIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gYFJlc3BvbnNlQ29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoc3RyaW5naWZ5Q29va2llKS5qb2luKFwiOyBcIik7XG4gIH1cbn07XG5mdW5jdGlvbiByZXBsYWNlKGJhZywgaGVhZGVycykge1xuICBoZWFkZXJzLmRlbGV0ZShcInNldC1jb29raWVcIik7XG4gIGZvciAoY29uc3QgWywgdmFsdWVdIG9mIGJhZykge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlDb29raWUodmFsdWUpO1xuICAgIGhlYWRlcnMuYXBwZW5kKFwic2V0LWNvb2tpZVwiLCBzZXJpYWxpemVkKTtcbiAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplQ29va2llKGNvb2tpZSA9IHsgbmFtZTogXCJcIiwgdmFsdWU6IFwiXCIgfSkge1xuICBpZiAodHlwZW9mIGNvb2tpZS5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XG4gICAgY29va2llLmV4cGlyZXMgPSBuZXcgRGF0ZShjb29raWUuZXhwaXJlcyk7XG4gIH1cbiAgaWYgKGNvb2tpZS5tYXhBZ2UpIHtcbiAgICBjb29raWUuZXhwaXJlcyA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBjb29raWUubWF4QWdlICogMWUzKTtcbiAgfVxuICBpZiAoY29va2llLnBhdGggPT09IG51bGwgfHwgY29va2llLnBhdGggPT09IHZvaWQgMCkge1xuICAgIGNvb2tpZS5wYXRoID0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIGNvb2tpZTtcbn1cbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzLFxuICBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWUsXG4gIHN0cmluZ2lmeUNvb2tpZVxufSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/compiled/@opentelemetry/api/index.js ***! \*********************************************************************/ /***/ ((module) => { eval("(()=>{\"use strict\";var e={491:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ContextAPI=void 0;const n=r(223);const a=r(172);const o=r(930);const i=\"context\";const c=new n.NoopContextManager;class ContextAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new ContextAPI}return this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||c}disable(){this._getContextManager().disable();(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=ContextAPI},930:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagAPI=void 0;const n=r(56);const a=r(912);const o=r(957);const i=r(172);const c=\"diag\";class DiagAPI{constructor(){function _logProxy(e){return function(...t){const r=(0,i.getGlobal)(\"diag\");if(!r)return;return r[e](...t)}}const e=this;const setLogger=(t,r={logLevel:o.DiagLogLevel.INFO})=>{var n,c,s;if(t===e){const t=new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");e.error((n=t.stack)!==null&&n!==void 0?n:t.message);return false}if(typeof r===\"number\"){r={logLevel:r}}const u=(0,i.getGlobal)(\"diag\");const l=(0,a.createLogLevelDiagLogger)((c=r.logLevel)!==null&&c!==void 0?c:o.DiagLogLevel.INFO,t);if(u&&!r.suppressOverrideMessage){const e=(s=(new Error).stack)!==null&&s!==void 0?s:\"\";u.warn(`Current logger will be overwritten from ${e}`);l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)(\"diag\",l,e,true)};e.setLogger=setLogger;e.disable=()=>{(0,i.unregisterGlobal)(c,e)};e.createComponentLogger=e=>new n.DiagComponentLogger(e);e.verbose=_logProxy(\"verbose\");e.debug=_logProxy(\"debug\");e.info=_logProxy(\"info\");e.warn=_logProxy(\"warn\");e.error=_logProxy(\"error\")}static instance(){if(!this._instance){this._instance=new DiagAPI}return this._instance}}t.DiagAPI=DiagAPI},653:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.MetricsAPI=void 0;const n=r(660);const a=r(172);const o=r(930);const i=\"metrics\";class MetricsAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new MetricsAPI}return this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=MetricsAPI},181:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.PropagationAPI=void 0;const n=r(172);const a=r(874);const o=r(194);const i=r(277);const c=r(369);const s=r(930);const u=\"propagation\";const l=new a.NoopTextMapPropagator;class PropagationAPI{constructor(){this.createBaggage=c.createBaggage;this.getBaggage=i.getBaggage;this.getActiveBaggage=i.getActiveBaggage;this.setBaggage=i.setBaggage;this.deleteBaggage=i.deleteBaggage}static getInstance(){if(!this._instance){this._instance=new PropagationAPI}return this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,s.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||l}}t.PropagationAPI=PropagationAPI},997:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceAPI=void 0;const n=r(172);const a=r(846);const o=r(139);const i=r(607);const c=r(930);const s=\"trace\";class TraceAPI{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider;this.wrapSpanContext=o.wrapSpanContext;this.isSpanContextValid=o.isSpanContextValid;this.deleteSpan=i.deleteSpan;this.getSpan=i.getSpan;this.getActiveSpan=i.getActiveSpan;this.getSpanContext=i.getSpanContext;this.setSpan=i.setSpan;this.setSpanContext=i.setSpanContext}static getInstance(){if(!this._instance){this._instance=new TraceAPI}return this._instance}setGlobalTracerProvider(e){const t=(0,n.registerGlobal)(s,this._proxyTracerProvider,c.DiagAPI.instance());if(t){this._proxyTracerProvider.setDelegate(e)}return t}getTracerProvider(){return(0,n.getGlobal)(s)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(s,c.DiagAPI.instance());this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=TraceAPI},277:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;const n=r(491);const a=r(780);const o=(0,a.createContextKey)(\"OpenTelemetry Baggage Key\");function getBaggage(e){return e.getValue(o)||undefined}t.getBaggage=getBaggage;function getActiveBaggage(){return getBaggage(n.ContextAPI.getInstance().active())}t.getActiveBaggage=getActiveBaggage;function setBaggage(e,t){return e.setValue(o,t)}t.setBaggage=setBaggage;function deleteBaggage(e){return e.deleteValue(o)}t.deleteBaggage=deleteBaggage},993:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.BaggageImpl=void 0;class BaggageImpl{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){const t=this._entries.get(e);if(!t){return undefined}return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map((([e,t])=>[e,t]))}setEntry(e,t){const r=new BaggageImpl(this._entries);r._entries.set(e,t);return r}removeEntry(e){const t=new BaggageImpl(this._entries);t._entries.delete(e);return t}removeEntries(...e){const t=new BaggageImpl(this._entries);for(const r of e){t._entries.delete(r)}return t}clear(){return new BaggageImpl}}t.BaggageImpl=BaggageImpl},830:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataSymbol=void 0;t.baggageEntryMetadataSymbol=Symbol(\"BaggageEntryMetadata\")},369:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataFromString=t.createBaggage=void 0;const n=r(930);const a=r(993);const o=r(830);const i=n.DiagAPI.instance();function createBaggage(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))}t.createBaggage=createBaggage;function baggageEntryMetadataFromString(e){if(typeof e!==\"string\"){i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);e=\"\"}return{__TYPE__:o.baggageEntryMetadataSymbol,toString(){return e}}}t.baggageEntryMetadataFromString=baggageEntryMetadataFromString},67:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.context=void 0;const n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopContextManager=void 0;const n=r(780);class NoopContextManager{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=NoopContextManager},780:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ROOT_CONTEXT=t.createContextKey=void 0;function createContextKey(e){return Symbol.for(e)}t.createContextKey=createContextKey;class BaseContext{constructor(e){const t=this;t._currentContext=e?new Map(e):new Map;t.getValue=e=>t._currentContext.get(e);t.setValue=(e,r)=>{const n=new BaseContext(t._currentContext);n._currentContext.set(e,r);return n};t.deleteValue=e=>{const r=new BaseContext(t._currentContext);r._currentContext.delete(e);return r}}}t.ROOT_CONTEXT=new BaseContext},506:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.diag=void 0;const n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagComponentLogger=void 0;const n=r(172);class DiagComponentLogger{constructor(e){this._namespace=e.namespace||\"DiagComponentLogger\"}debug(...e){return logProxy(\"debug\",this._namespace,e)}error(...e){return logProxy(\"error\",this._namespace,e)}info(...e){return logProxy(\"info\",this._namespace,e)}warn(...e){return logProxy(\"warn\",this._namespace,e)}verbose(...e){return logProxy(\"verbose\",this._namespace,e)}}t.DiagComponentLogger=DiagComponentLogger;function logProxy(e,t,r){const a=(0,n.getGlobal)(\"diag\");if(!a){return}r.unshift(t);return a[e](...r)}},972:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagConsoleLogger=void 0;const r=[{n:\"error\",c:\"error\"},{n:\"warn\",c:\"warn\"},{n:\"info\",c:\"info\"},{n:\"debug\",c:\"debug\"},{n:\"verbose\",c:\"trace\"}];class DiagConsoleLogger{constructor(){function _consoleFunc(e){return function(...t){if(console){let r=console[e];if(typeof r!==\"function\"){r=console.log}if(typeof r===\"function\"){return r.apply(console,t)}}}}for(let e=0;e{Object.defineProperty(t,\"__esModule\",{value:true});t.createLogLevelDiagLogger=void 0;const n=r(957);function createLogLevelDiagLogger(e,t){if(en.DiagLogLevel.ALL){e=n.DiagLogLevel.ALL}t=t||{};function _filterFunc(r,n){const a=t[r];if(typeof a===\"function\"&&e>=n){return a.bind(t)}return function(){}}return{error:_filterFunc(\"error\",n.DiagLogLevel.ERROR),warn:_filterFunc(\"warn\",n.DiagLogLevel.WARN),info:_filterFunc(\"info\",n.DiagLogLevel.INFO),debug:_filterFunc(\"debug\",n.DiagLogLevel.DEBUG),verbose:_filterFunc(\"verbose\",n.DiagLogLevel.VERBOSE)}}t.createLogLevelDiagLogger=createLogLevelDiagLogger},957:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagLogLevel=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"ERROR\"]=30]=\"ERROR\";e[e[\"WARN\"]=50]=\"WARN\";e[e[\"INFO\"]=60]=\"INFO\";e[e[\"DEBUG\"]=70]=\"DEBUG\";e[e[\"VERBOSE\"]=80]=\"VERBOSE\";e[e[\"ALL\"]=9999]=\"ALL\"})(r=t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;const n=r(200);const a=r(521);const o=r(130);const i=a.VERSION.split(\".\")[0];const c=Symbol.for(`opentelemetry.js.api.${i}`);const s=n._globalThis;function registerGlobal(e,t,r,n=false){var o;const i=s[c]=(o=s[c])!==null&&o!==void 0?o:{version:a.VERSION};if(!n&&i[e]){const t=new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);r.error(t.stack||t.message);return false}if(i.version!==a.VERSION){const t=new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);r.error(t.stack||t.message);return false}i[e]=t;r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);return true}t.registerGlobal=registerGlobal;function getGlobal(e){var t,r;const n=(t=s[c])===null||t===void 0?void 0:t.version;if(!n||!(0,o.isCompatible)(n)){return}return(r=s[c])===null||r===void 0?void 0:r[e]}t.getGlobal=getGlobal;function unregisterGlobal(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);const r=s[c];if(r){delete r[e]}}t.unregisterGlobal=unregisterGlobal},130:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.isCompatible=t._makeCompatibilityCheck=void 0;const n=r(521);const a=/^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;function _makeCompatibilityCheck(e){const t=new Set([e]);const r=new Set;const n=e.match(a);if(!n){return()=>false}const o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null){return function isExactmatch(t){return t===e}}function _reject(e){r.add(e);return false}function _accept(e){t.add(e);return true}return function isCompatible(e){if(t.has(e)){return true}if(r.has(e)){return false}const n=e.match(a);if(!n){return _reject(e)}const i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(i.prerelease!=null){return _reject(e)}if(o.major!==i.major){return _reject(e)}if(o.major===0){if(o.minor===i.minor&&o.patch<=i.patch){return _accept(e)}return _reject(e)}if(o.minor<=i.minor){return _accept(e)}return _reject(e)}}t._makeCompatibilityCheck=_makeCompatibilityCheck;t.isCompatible=_makeCompatibilityCheck(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.metrics=void 0;const n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ValueType=void 0;var r;(function(e){e[e[\"INT\"]=0]=\"INT\";e[e[\"DOUBLE\"]=1]=\"DOUBLE\"})(r=t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class NoopMeter{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=NoopMeter;class NoopMetric{}t.NoopMetric=NoopMetric;class NoopCounterMetric extends NoopMetric{add(e,t){}}t.NoopCounterMetric=NoopCounterMetric;class NoopUpDownCounterMetric extends NoopMetric{add(e,t){}}t.NoopUpDownCounterMetric=NoopUpDownCounterMetric;class NoopHistogramMetric extends NoopMetric{record(e,t){}}t.NoopHistogramMetric=NoopHistogramMetric;class NoopObservableMetric{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=NoopObservableMetric;class NoopObservableCounterMetric extends NoopObservableMetric{}t.NoopObservableCounterMetric=NoopObservableCounterMetric;class NoopObservableGaugeMetric extends NoopObservableMetric{}t.NoopObservableGaugeMetric=NoopObservableGaugeMetric;class NoopObservableUpDownCounterMetric extends NoopObservableMetric{}t.NoopObservableUpDownCounterMetric=NoopObservableUpDownCounterMetric;t.NOOP_METER=new NoopMeter;t.NOOP_COUNTER_METRIC=new NoopCounterMetric;t.NOOP_HISTOGRAM_METRIC=new NoopHistogramMetric;t.NOOP_UP_DOWN_COUNTER_METRIC=new NoopUpDownCounterMetric;t.NOOP_OBSERVABLE_COUNTER_METRIC=new NoopObservableCounterMetric;t.NOOP_OBSERVABLE_GAUGE_METRIC=new NoopObservableGaugeMetric;t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new NoopObservableUpDownCounterMetric;function createNoopMeter(){return t.NOOP_METER}t.createNoopMeter=createNoopMeter},660:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;const n=r(102);class NoopMeterProvider{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=NoopMeterProvider;t.NOOP_METER_PROVIDER=new NoopMeterProvider},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(46),t)},651:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t._globalThis=void 0;t._globalThis=typeof globalThis===\"object\"?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.propagation=void 0;const n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTextMapPropagator=void 0;class NoopTextMapPropagator{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=NoopTextMapPropagator},194:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.defaultTextMapSetter=t.defaultTextMapGetter=void 0;t.defaultTextMapGetter={get(e,t){if(e==null){return undefined}return e[t]},keys(e){if(e==null){return[]}return Object.keys(e)}};t.defaultTextMapSetter={set(e,t,r){if(e==null){return}e[t]=r}}},845:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.trace=void 0;const n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NonRecordingSpan=void 0;const n=r(476);class NonRecordingSpan{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return false}recordException(e,t){}}t.NonRecordingSpan=NonRecordingSpan},614:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracer=void 0;const n=r(491);const a=r(607);const o=r(403);const i=r(139);const c=n.ContextAPI.getInstance();class NoopTracer{startSpan(e,t,r=c.active()){const n=Boolean(t===null||t===void 0?void 0:t.root);if(n){return new o.NonRecordingSpan}const s=r&&(0,a.getSpanContext)(r);if(isSpanContext(s)&&(0,i.isSpanContextValid)(s)){return new o.NonRecordingSpan(s)}else{return new o.NonRecordingSpan}}startActiveSpan(e,t,r,n){let o;let i;let s;if(arguments.length<2){return}else if(arguments.length===2){s=t}else if(arguments.length===3){o=t;s=r}else{o=t;i=r;s=n}const u=i!==null&&i!==void 0?i:c.active();const l=this.startSpan(e,o,u);const g=(0,a.setSpan)(u,l);return c.with(g,s,undefined,l)}}t.NoopTracer=NoopTracer;function isSpanContext(e){return typeof e===\"object\"&&typeof e[\"spanId\"]===\"string\"&&typeof e[\"traceId\"]===\"string\"&&typeof e[\"traceFlags\"]===\"number\"}},124:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracerProvider=void 0;const n=r(614);class NoopTracerProvider{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=NoopTracerProvider},125:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracer=void 0;const n=r(614);const a=new n.NoopTracer;class ProxyTracer{constructor(e,t,r,n){this._provider=e;this.name=t;this.version=r;this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){const a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate){return this._delegate}const e=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!e){return a}this._delegate=e;return this._delegate}}t.ProxyTracer=ProxyTracer},846:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracerProvider=void 0;const n=r(125);const a=r(124);const o=new a.NoopTracerProvider;class ProxyTracerProvider{getTracer(e,t,r){var a;return(a=this.getDelegateTracer(e,t,r))!==null&&a!==void 0?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return(n=this._delegate)===null||n===void 0?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=ProxyTracerProvider},996:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SamplingDecision=void 0;var r;(function(e){e[e[\"NOT_RECORD\"]=0]=\"NOT_RECORD\";e[e[\"RECORD\"]=1]=\"RECORD\";e[e[\"RECORD_AND_SAMPLED\"]=2]=\"RECORD_AND_SAMPLED\"})(r=t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;const n=r(780);const a=r(403);const o=r(491);const i=(0,n.createContextKey)(\"OpenTelemetry Context Key SPAN\");function getSpan(e){return e.getValue(i)||undefined}t.getSpan=getSpan;function getActiveSpan(){return getSpan(o.ContextAPI.getInstance().active())}t.getActiveSpan=getActiveSpan;function setSpan(e,t){return e.setValue(i,t)}t.setSpan=setSpan;function deleteSpan(e){return e.deleteValue(i)}t.deleteSpan=deleteSpan;function setSpanContext(e,t){return setSpan(e,new a.NonRecordingSpan(t))}t.setSpanContext=setSpanContext;function getSpanContext(e){var t;return(t=getSpan(e))===null||t===void 0?void 0:t.spanContext()}t.getSpanContext=getSpanContext},325:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceStateImpl=void 0;const n=r(564);const a=32;const o=512;const i=\",\";const c=\"=\";class TraceStateImpl{constructor(e){this._internalState=new Map;if(e)this._parse(e)}set(e,t){const r=this._clone();if(r._internalState.has(e)){r._internalState.delete(e)}r._internalState.set(e,t);return r}unset(e){const t=this._clone();t._internalState.delete(e);return t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce(((e,t)=>{e.push(t+c+this.get(t));return e}),[]).join(i)}_parse(e){if(e.length>o)return;this._internalState=e.split(i).reverse().reduce(((e,t)=>{const r=t.trim();const a=r.indexOf(c);if(a!==-1){const o=r.slice(0,a);const i=r.slice(a+1,t.length);if((0,n.validateKey)(o)&&(0,n.validateValue)(i)){e.set(o,i)}else{}}return e}),new Map);if(this._internalState.size>a){this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,a))}}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){const e=new TraceStateImpl;e._internalState=new Map(this._internalState);return e}}t.TraceStateImpl=TraceStateImpl},564:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.validateValue=t.validateKey=void 0;const r=\"[_0-9a-z-*/]\";const n=`[a-z]${r}{0,255}`;const a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;const o=new RegExp(`^(?:${n}|${a})$`);const i=/^[ -~]{0,255}[!-~]$/;const c=/,|=/;function validateKey(e){return o.test(e)}t.validateKey=validateKey;function validateValue(e){return i.test(e)&&!c.test(e)}t.validateValue=validateValue},98:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createTraceState=void 0;const n=r(325);function createTraceState(e){return new n.TraceStateImpl(e)}t.createTraceState=createTraceState},476:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;const n=r(475);t.INVALID_SPANID=\"0000000000000000\";t.INVALID_TRACEID=\"00000000000000000000000000000000\";t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanKind=void 0;var r;(function(e){e[e[\"INTERNAL\"]=0]=\"INTERNAL\";e[e[\"SERVER\"]=1]=\"SERVER\";e[e[\"CLIENT\"]=2]=\"CLIENT\";e[e[\"PRODUCER\"]=3]=\"PRODUCER\";e[e[\"CONSUMER\"]=4]=\"CONSUMER\"})(r=t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;const n=r(476);const a=r(403);const o=/^([0-9a-f]{32})$/i;const i=/^[0-9a-f]{16}$/i;function isValidTraceId(e){return o.test(e)&&e!==n.INVALID_TRACEID}t.isValidTraceId=isValidTraceId;function isValidSpanId(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidSpanId=isValidSpanId;function isSpanContextValid(e){return isValidTraceId(e.traceId)&&isValidSpanId(e.spanId)}t.isSpanContextValid=isSpanContextValid;function wrapSpanContext(e){return new a.NonRecordingSpan(e)}t.wrapSpanContext=wrapSpanContext},847:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanStatusCode=void 0;var r;(function(e){e[e[\"UNSET\"]=0]=\"UNSET\";e[e[\"OK\"]=1]=\"OK\";e[e[\"ERROR\"]=2]=\"ERROR\"})(r=t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceFlags=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"SAMPLED\"]=1]=\"SAMPLED\"})(r=t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.VERSION=void 0;t.VERSION=\"1.6.0\"}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r].call(a.exports,a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};(()=>{var e=r;Object.defineProperty(e,\"__esModule\",{value:true});e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=__nccwpck_require__(369);Object.defineProperty(e,\"baggageEntryMetadataFromString\",{enumerable:true,get:function(){return t.baggageEntryMetadataFromString}});var n=__nccwpck_require__(780);Object.defineProperty(e,\"createContextKey\",{enumerable:true,get:function(){return n.createContextKey}});Object.defineProperty(e,\"ROOT_CONTEXT\",{enumerable:true,get:function(){return n.ROOT_CONTEXT}});var a=__nccwpck_require__(972);Object.defineProperty(e,\"DiagConsoleLogger\",{enumerable:true,get:function(){return a.DiagConsoleLogger}});var o=__nccwpck_require__(957);Object.defineProperty(e,\"DiagLogLevel\",{enumerable:true,get:function(){return o.DiagLogLevel}});var i=__nccwpck_require__(102);Object.defineProperty(e,\"createNoopMeter\",{enumerable:true,get:function(){return i.createNoopMeter}});var c=__nccwpck_require__(901);Object.defineProperty(e,\"ValueType\",{enumerable:true,get:function(){return c.ValueType}});var s=__nccwpck_require__(194);Object.defineProperty(e,\"defaultTextMapGetter\",{enumerable:true,get:function(){return s.defaultTextMapGetter}});Object.defineProperty(e,\"defaultTextMapSetter\",{enumerable:true,get:function(){return s.defaultTextMapSetter}});var u=__nccwpck_require__(125);Object.defineProperty(e,\"ProxyTracer\",{enumerable:true,get:function(){return u.ProxyTracer}});var l=__nccwpck_require__(846);Object.defineProperty(e,\"ProxyTracerProvider\",{enumerable:true,get:function(){return l.ProxyTracerProvider}});var g=__nccwpck_require__(996);Object.defineProperty(e,\"SamplingDecision\",{enumerable:true,get:function(){return g.SamplingDecision}});var p=__nccwpck_require__(357);Object.defineProperty(e,\"SpanKind\",{enumerable:true,get:function(){return p.SpanKind}});var d=__nccwpck_require__(847);Object.defineProperty(e,\"SpanStatusCode\",{enumerable:true,get:function(){return d.SpanStatusCode}});var _=__nccwpck_require__(475);Object.defineProperty(e,\"TraceFlags\",{enumerable:true,get:function(){return _.TraceFlags}});var f=__nccwpck_require__(98);Object.defineProperty(e,\"createTraceState\",{enumerable:true,get:function(){return f.createTraceState}});var b=__nccwpck_require__(139);Object.defineProperty(e,\"isSpanContextValid\",{enumerable:true,get:function(){return b.isSpanContextValid}});Object.defineProperty(e,\"isValidTraceId\",{enumerable:true,get:function(){return b.isValidTraceId}});Object.defineProperty(e,\"isValidSpanId\",{enumerable:true,get:function(){return b.isValidSpanId}});var v=__nccwpck_require__(476);Object.defineProperty(e,\"INVALID_SPANID\",{enumerable:true,get:function(){return v.INVALID_SPANID}});Object.defineProperty(e,\"INVALID_TRACEID\",{enumerable:true,get:function(){return v.INVALID_TRACEID}});Object.defineProperty(e,\"INVALID_SPAN_CONTEXT\",{enumerable:true,get:function(){return v.INVALID_SPAN_CONTEXT}});const O=__nccwpck_require__(67);Object.defineProperty(e,\"context\",{enumerable:true,get:function(){return O.context}});const P=__nccwpck_require__(506);Object.defineProperty(e,\"diag\",{enumerable:true,get:function(){return P.diag}});const N=__nccwpck_require__(886);Object.defineProperty(e,\"metrics\",{enumerable:true,get:function(){return N.metrics}});const S=__nccwpck_require__(939);Object.defineProperty(e,\"propagation\",{enumerable:true,get:function(){return S.propagation}});const C=__nccwpck_require__(845);Object.defineProperty(e,\"trace\",{enumerable:true,get:function(){return C.trace}});e[\"default\"]={context:O.context,diag:P.diag,metrics:N.metrics,propagation:S.propagation,trace:C.trace}})();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGFBQWEsT0FBTyxjQUFjLHNDQUFzQyxXQUFXLEVBQUUsb0JBQW9CLGVBQWUsZUFBZSxlQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLGVBQWUscUJBQXFCLG9CQUFvQiw4QkFBOEIsc0JBQXNCLDJCQUEyQixxREFBcUQsU0FBUywwQ0FBMEMsaUJBQWlCLGtEQUFrRCxVQUFVLDJDQUEyQyxxQkFBcUIsNEJBQTRCLFVBQVUsb0NBQW9DLGdEQUFnRCx3QkFBd0IsZUFBZSxzQ0FBc0MsV0FBVyxFQUFFLGlCQUFpQixjQUFjLGVBQWUsZUFBZSxlQUFlLGVBQWUsY0FBYyxjQUFjLHNCQUFzQixzQkFBc0IsZ0NBQWdDLGFBQWEsbUJBQW1CLGFBQWEsc0JBQXNCLDZCQUE2QixJQUFJLFVBQVUsVUFBVSx3SkFBd0osb0RBQW9ELGFBQWEsd0JBQXdCLEdBQUcsWUFBWSxnQ0FBZ0Msa0dBQWtHLGtDQUFrQyxxRkFBcUYsa0RBQWtELEVBQUUsR0FBRyxvRUFBb0UsRUFBRSxHQUFHLDZDQUE2QyxzQkFBc0IsZUFBZSw2QkFBNkIsd0RBQXdELCtCQUErQiwyQkFBMkIseUJBQXlCLHlCQUF5QiwyQkFBMkIsa0JBQWtCLG9CQUFvQiwyQkFBMkIsdUJBQXVCLGtCQUFrQixlQUFlLHNDQUFzQyxXQUFXLEVBQUUsb0JBQW9CLGVBQWUsZUFBZSxlQUFlLGtCQUFrQixpQkFBaUIsZUFBZSxxQkFBcUIsb0JBQW9CLDhCQUE4QixzQkFBc0IsMEJBQTBCLHFEQUFxRCxtQkFBbUIsZ0RBQWdELGdCQUFnQiwrQ0FBK0MsVUFBVSxnREFBZ0Qsd0JBQXdCLGVBQWUsc0NBQXNDLFdBQVcsRUFBRSx3QkFBd0IsZUFBZSxlQUFlLGVBQWUsZUFBZSxlQUFlLGVBQWUsc0JBQXNCLG9DQUFvQyxxQkFBcUIsY0FBYyxtQ0FBbUMsNkJBQTZCLHlDQUF5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RSxnQ0FBZ0MsbUNBQW1DLCtCQUErQixrQkFBa0IsRUFBRSxpQ0FBaUMsZ0NBQWdDLCtCQUErQixlQUFlLEVBQUUsaUNBQWlDLG1DQUFtQywrQkFBK0Isa0JBQWtCLEVBQUUsaUNBQWlDLHVDQUF1QywrQkFBK0Isc0JBQXNCLEVBQUUsaUNBQWlDLGlDQUFpQywrQkFBK0IsZ0JBQWdCLEVBQUUsY0FBYyx5RkFBeUYsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxAb3BlbnRlbGVtZXRyeVxcYXBpXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17NDkxOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29udGV4dEFQST12b2lkIDA7Y29uc3Qgbj1yKDIyMyk7Y29uc3QgYT1yKDE3Mik7Y29uc3Qgbz1yKDkzMCk7Y29uc3QgaT1cImNvbnRleHRcIjtjb25zdCBjPW5ldyBuLk5vb3BDb250ZXh0TWFuYWdlcjtjbGFzcyBDb250ZXh0QVBJe2NvbnN0cnVjdG9yKCl7fXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl7dGhpcy5faW5zdGFuY2U9bmV3IENvbnRleHRBUEl9cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbENvbnRleHRNYW5hZ2VyKGUpe3JldHVybigwLGEucmVnaXN0ZXJHbG9iYWwpKGksZSxvLkRpYWdBUEkuaW5zdGFuY2UoKSl9YWN0aXZlKCl7cmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYWN0aXZlKCl9d2l0aChlLHQsciwuLi5uKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS53aXRoKGUsdCxyLC4uLm4pfWJpbmQoZSx0KXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5iaW5kKGUsdCl9X2dldENvbnRleHRNYW5hZ2VyKCl7cmV0dXJuKDAsYS5nZXRHbG9iYWwpKGkpfHxjfWRpc2FibGUoKXt0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmRpc2FibGUoKTsoMCxhLnVucmVnaXN0ZXJHbG9iYWwpKGksby5EaWFnQVBJLmluc3RhbmNlKCkpfX10LkNvbnRleHRBUEk9Q29udGV4dEFQSX0sOTMwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhZ0FQST12b2lkIDA7Y29uc3Qgbj1yKDU2KTtjb25zdCBhPXIoOTEyKTtjb25zdCBvPXIoOTU3KTtjb25zdCBpPXIoMTcyKTtjb25zdCBjPVwiZGlhZ1wiO2NsYXNzIERpYWdBUEl7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiBfbG9nUHJveHkoZSl7cmV0dXJuIGZ1bmN0aW9uKC4uLnQpe2NvbnN0IHI9KDAsaS5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtpZighcilyZXR1cm47cmV0dXJuIHJbZV0oLi4udCl9fWNvbnN0IGU9dGhpcztjb25zdCBzZXRMb2dnZXI9KHQscj17bG9nTGV2ZWw6by5EaWFnTG9nTGV2ZWwuSU5GT30pPT57dmFyIG4sYyxzO2lmKHQ9PT1lKXtjb25zdCB0PW5ldyBFcnJvcihcIkNhbm5vdCB1c2UgZGlhZyBhcyB0aGUgbG9nZ2VyIGZvciBpdHNlbGYuIFBsZWFzZSB1c2UgYSBEaWFnTG9nZ2VyIGltcGxlbWVudGF0aW9uIGxpa2UgQ29uc29sZURpYWdMb2dnZXIgb3IgYSBjdXN0b20gaW1wbGVtZW50YXRpb25cIik7ZS5lcnJvcigobj10LnN0YWNrKSE9PW51bGwmJm4hPT12b2lkIDA/bjp0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pZih0eXBlb2Ygcj09PVwibnVtYmVyXCIpe3I9e2xvZ0xldmVsOnJ9fWNvbnN0IHU9KDAsaS5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtjb25zdCBsPSgwLGEuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyKSgoYz1yLmxvZ0xldmVsKSE9PW51bGwmJmMhPT12b2lkIDA/YzpvLkRpYWdMb2dMZXZlbC5JTkZPLHQpO2lmKHUmJiFyLnN1cHByZXNzT3ZlcnJpZGVNZXNzYWdlKXtjb25zdCBlPShzPShuZXcgRXJyb3IpLnN0YWNrKSE9PW51bGwmJnMhPT12b2lkIDA/czpcIjxmYWlsZWQgdG8gZ2VuZXJhdGUgc3RhY2t0cmFjZT5cIjt1Lndhcm4oYEN1cnJlbnQgbG9nZ2VyIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZnJvbSAke2V9YCk7bC53YXJuKGBDdXJyZW50IGxvZ2dlciB3aWxsIG92ZXJ3cml0ZSBvbmUgYWxyZWFkeSByZWdpc3RlcmVkIGZyb20gJHtlfWApfXJldHVybigwLGkucmVnaXN0ZXJHbG9iYWwpKFwiZGlhZ1wiLGwsZSx0cnVlKX07ZS5zZXRMb2dnZXI9c2V0TG9nZ2VyO2UuZGlzYWJsZT0oKT0+eygwLGkudW5yZWdpc3Rlckdsb2JhbCkoYyxlKX07ZS5jcmVhdGVDb21wb25lbnRMb2dnZXI9ZT0+bmV3IG4uRGlhZ0NvbXBvbmVudExvZ2dlcihlKTtlLnZlcmJvc2U9X2xvZ1Byb3h5KFwidmVyYm9zZVwiKTtlLmRlYnVnPV9sb2dQcm94eShcImRlYnVnXCIpO2UuaW5mbz1fbG9nUHJveHkoXCJpbmZvXCIpO2Uud2Fybj1fbG9nUHJveHkoXCJ3YXJuXCIpO2UuZXJyb3I9X2xvZ1Byb3h5KFwiZXJyb3JcIil9c3RhdGljIGluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgRGlhZ0FQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9fXQuRGlhZ0FQST1EaWFnQVBJfSw2NTM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5NZXRyaWNzQVBJPXZvaWQgMDtjb25zdCBuPXIoNjYwKTtjb25zdCBhPXIoMTcyKTtjb25zdCBvPXIoOTMwKTtjb25zdCBpPVwibWV0cmljc1wiO2NsYXNzIE1ldHJpY3NBUEl7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgTWV0cmljc0FQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsTWV0ZXJQcm92aWRlcihlKXtyZXR1cm4oMCxhLnJlZ2lzdGVyR2xvYmFsKShpLGUsby5EaWFnQVBJLmluc3RhbmNlKCkpfWdldE1ldGVyUHJvdmlkZXIoKXtyZXR1cm4oMCxhLmdldEdsb2JhbCkoaSl8fG4uTk9PUF9NRVRFUl9QUk9WSURFUn1nZXRNZXRlcihlLHQscil7cmV0dXJuIHRoaXMuZ2V0TWV0ZXJQcm92aWRlcigpLmdldE1ldGVyKGUsdCxyKX1kaXNhYmxlKCl7KDAsYS51bnJlZ2lzdGVyR2xvYmFsKShpLG8uRGlhZ0FQSS5pbnN0YW5jZSgpKX19dC5NZXRyaWNzQVBJPU1ldHJpY3NBUEl9LDE4MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3BhZ2F0aW9uQVBJPXZvaWQgMDtjb25zdCBuPXIoMTcyKTtjb25zdCBhPXIoODc0KTtjb25zdCBvPXIoMTk0KTtjb25zdCBpPXIoMjc3KTtjb25zdCBjPXIoMzY5KTtjb25zdCBzPXIoOTMwKTtjb25zdCB1PVwicHJvcGFnYXRpb25cIjtjb25zdCBsPW5ldyBhLk5vb3BUZXh0TWFwUHJvcGFnYXRvcjtjbGFzcyBQcm9wYWdhdGlvbkFQSXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3JlYXRlQmFnZ2FnZT1jLmNyZWF0ZUJhZ2dhZ2U7dGhpcy5nZXRCYWdnYWdlPWkuZ2V0QmFnZ2FnZTt0aGlzLmdldEFjdGl2ZUJhZ2dhZ2U9aS5nZXRBY3RpdmVCYWdnYWdlO3RoaXMuc2V0QmFnZ2FnZT1pLnNldEJhZ2dhZ2U7dGhpcy5kZWxldGVCYWdnYWdlPWkuZGVsZXRlQmFnZ2FnZX1zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2Upe3RoaXMuX2luc3RhbmNlPW5ldyBQcm9wYWdhdGlvbkFQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsUHJvcGFnYXRvcihlKXtyZXR1cm4oMCxuLnJlZ2lzdGVyR2xvYmFsKSh1LGUscy5EaWFnQVBJLmluc3RhbmNlKCkpfWluamVjdChlLHQscj1vLmRlZmF1bHRUZXh0TWFwU2V0dGVyKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdChlLHQscil9ZXh0cmFjdChlLHQscj1vLmRlZmF1bHRUZXh0TWFwR2V0dGVyKXtyZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmV4dHJhY3QoZSx0LHIpfWZpZWxkcygpe3JldHVybiB0aGlzLl9nZXRHbG9iYWxQcm9wYWdhdG9yKCkuZmllbGRzKCl9ZGlzYWJsZSgpeygwLG4udW5yZWdpc3Rlckdsb2JhbCkodSxzLkRpYWdBUEkuaW5zdGFuY2UoKSl9X2dldEdsb2JhbFByb3BhZ2F0b3IoKXtyZXR1cm4oMCxuLmdldEdsb2JhbCkodSl8fGx9fXQuUHJvcGFnYXRpb25BUEk9UHJvcGFnYXRpb25BUEl9LDk5NzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlRyYWNlQVBJPXZvaWQgMDtjb25zdCBuPXIoMTcyKTtjb25zdCBhPXIoODQ2KTtjb25zdCBvPXIoMTM5KTtjb25zdCBpPXIoNjA3KTtjb25zdCBjPXIoOTMwKTtjb25zdCBzPVwidHJhY2VcIjtjbGFzcyBUcmFjZUFQSXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXI9bmV3IGEuUHJveHlUcmFjZXJQcm92aWRlcjt0aGlzLndyYXBTcGFuQ29udGV4dD1vLndyYXBTcGFuQ29udGV4dDt0aGlzLmlzU3BhbkNvbnRleHRWYWxpZD1vLmlzU3BhbkNvbnRleHRWYWxpZDt0aGlzLmRlbGV0ZVNwYW49aS5kZWxldGVTcGFuO3RoaXMuZ2V0U3Bhbj1pLmdldFNwYW47dGhpcy5nZXRBY3RpdmVTcGFuPWkuZ2V0QWN0aXZlU3Bhbjt0aGlzLmdldFNwYW5Db250ZXh0PWkuZ2V0U3BhbkNvbnRleHQ7dGhpcy5zZXRTcGFuPWkuc2V0U3Bhbjt0aGlzLnNldFNwYW5Db250ZXh0PWkuc2V0U3BhbkNvbnRleHR9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgVHJhY2VBUEl9cmV0dXJuIHRoaXMuX2luc3RhbmNlfXNldEdsb2JhbFRyYWNlclByb3ZpZGVyKGUpe2NvbnN0IHQ9KDAsbi5yZWdpc3Rlckdsb2JhbCkocyx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLGMuRGlhZ0FQSS5pbnN0YW5jZSgpKTtpZih0KXt0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLnNldERlbGVnYXRlKGUpfXJldHVybiB0fWdldFRyYWNlclByb3ZpZGVyKCl7cmV0dXJuKDAsbi5nZXRHbG9iYWwpKHMpfHx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyfWdldFRyYWNlcihlLHQpe3JldHVybiB0aGlzLmdldFRyYWNlclByb3ZpZGVyKCkuZ2V0VHJhY2VyKGUsdCl9ZGlzYWJsZSgpeygwLG4udW5yZWdpc3Rlckdsb2JhbCkocyxjLkRpYWdBUEkuaW5zdGFuY2UoKSk7dGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcj1uZXcgYS5Qcm94eVRyYWNlclByb3ZpZGVyfX10LlRyYWNlQVBJPVRyYWNlQVBJfSwyNzc6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5kZWxldGVCYWdnYWdlPXQuc2V0QmFnZ2FnZT10LmdldEFjdGl2ZUJhZ2dhZ2U9dC5nZXRCYWdnYWdlPXZvaWQgMDtjb25zdCBuPXIoNDkxKTtjb25zdCBhPXIoNzgwKTtjb25zdCBvPSgwLGEuY3JlYXRlQ29udGV4dEtleSkoXCJPcGVuVGVsZW1ldHJ5IEJhZ2dhZ2UgS2V5XCIpO2Z1bmN0aW9uIGdldEJhZ2dhZ2UoZSl7cmV0dXJuIGUuZ2V0VmFsdWUobyl8fHVuZGVmaW5lZH10LmdldEJhZ2dhZ2U9Z2V0QmFnZ2FnZTtmdW5jdGlvbiBnZXRBY3RpdmVCYWdnYWdlKCl7cmV0dXJuIGdldEJhZ2dhZ2Uobi5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfXQuZ2V0QWN0aXZlQmFnZ2FnZT1nZXRBY3RpdmVCYWdnYWdlO2Z1bmN0aW9uIHNldEJhZ2dhZ2UoZSx0KXtyZXR1cm4gZS5zZXRWYWx1ZShvLHQpfXQuc2V0QmFnZ2FnZT1zZXRCYWdnYWdlO2Z1bmN0aW9uIGRlbGV0ZUJhZ2dhZ2UoZSl7cmV0dXJuIGUuZGVsZXRlVmFsdWUobyl9dC5kZWxldGVCYWdnYWdlPWRlbGV0ZUJhZ2dhZ2V9LDk5MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5CYWdnYWdlSW1wbD12b2lkIDA7Y2xhc3MgQmFnZ2FnZUltcGx7Y29uc3RydWN0b3IoZSl7dGhpcy5fZW50cmllcz1lP25ldyBNYXAoZSk6bmV3IE1hcH1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuX2VudHJpZXMuZ2V0KGUpO2lmKCF0KXtyZXR1cm4gdW5kZWZpbmVkfXJldHVybiBPYmplY3QuYXNzaWduKHt9LHQpfWdldEFsbEVudHJpZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmVudHJpZXMoKSkubWFwKCgoW2UsdF0pPT5bZSx0XSkpfXNldEVudHJ5KGUsdCl7Y29uc3Qgcj1uZXcgQmFnZ2FnZUltcGwodGhpcy5fZW50cmllcyk7ci5fZW50cmllcy5zZXQoZSx0KTtyZXR1cm4gcn1yZW1vdmVFbnRyeShlKXtjb25zdCB0PW5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTt0Ll9lbnRyaWVzLmRlbGV0ZShlKTtyZXR1cm4gdH1yZW1vdmVFbnRyaWVzKC4uLmUpe2NvbnN0IHQ9bmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO2Zvcihjb25zdCByIG9mIGUpe3QuX2VudHJpZXMuZGVsZXRlKHIpfXJldHVybiB0fWNsZWFyKCl7cmV0dXJuIG5ldyBCYWdnYWdlSW1wbH19dC5CYWdnYWdlSW1wbD1CYWdnYWdlSW1wbH0sODMwOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPXZvaWQgMDt0LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sPVN5bWJvbChcIkJhZ2dhZ2VFbnRyeU1ldGFkYXRhXCIpfSwzNjk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9dC5jcmVhdGVCYWdnYWdlPXZvaWQgMDtjb25zdCBuPXIoOTMwKTtjb25zdCBhPXIoOTkzKTtjb25zdCBvPXIoODMwKTtjb25zdCBpPW4uRGlhZ0FQSS5pbnN0YW5jZSgpO2Z1bmN0aW9uIGNyZWF0ZUJhZ2dhZ2UoZT17fSl7cmV0dXJuIG5ldyBhLkJhZ2dhZ2VJbXBsKG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoZSkpKX10LmNyZWF0ZUJhZ2dhZ2U9Y3JlYXRlQmFnZ2FnZTtmdW5jdGlvbiBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcoZSl7aWYodHlwZW9mIGUhPT1cInN0cmluZ1wiKXtpLmVycm9yKGBDYW5ub3QgY3JlYXRlIGJhZ2dhZ2UgbWV0YWRhdGEgZnJvbSB1bmtub3duIHR5cGU6ICR7dHlwZW9mIGV9YCk7ZT1cIlwifXJldHVybntfX1RZUEVfXzpvLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhU3ltYm9sLHRvU3RyaW5nKCl7cmV0dXJuIGV9fX10LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz1iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmd9LDY3OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY29udGV4dD12b2lkIDA7Y29uc3Qgbj1yKDQ5MSk7dC5jb250ZXh0PW4uQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpfSwyMjM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob29wQ29udGV4dE1hbmFnZXI9dm9pZCAwO2NvbnN0IG49cig3ODApO2NsYXNzIE5vb3BDb250ZXh0TWFuYWdlcnthY3RpdmUoKXtyZXR1cm4gbi5ST09UX0NPTlRFWFR9d2l0aChlLHQsciwuLi5uKXtyZXR1cm4gdC5jYWxsKHIsLi4ubil9YmluZChlLHQpe3JldHVybiB0fWVuYWJsZSgpe3JldHVybiB0aGlzfWRpc2FibGUoKXtyZXR1cm4gdGhpc319dC5Ob29wQ29udGV4dE1hbmFnZXI9Tm9vcENvbnRleHRNYW5hZ2VyfSw3ODA6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuUk9PVF9DT05URVhUPXQuY3JlYXRlQ29udGV4dEtleT12b2lkIDA7ZnVuY3Rpb24gY3JlYXRlQ29udGV4dEtleShlKXtyZXR1cm4gU3ltYm9sLmZvcihlKX10LmNyZWF0ZUNvbnRleHRLZXk9Y3JlYXRlQ29udGV4dEtleTtjbGFzcyBCYXNlQ29udGV4dHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PXRoaXM7dC5fY3VycmVudENvbnRleHQ9ZT9uZXcgTWFwKGUpOm5ldyBNYXA7dC5nZXRWYWx1ZT1lPT50Ll9jdXJyZW50Q29udGV4dC5nZXQoZSk7dC5zZXRWYWx1ZT0oZSxyKT0+e2NvbnN0IG49bmV3IEJhc2VDb250ZXh0KHQuX2N1cnJlbnRDb250ZXh0KTtuLl9jdXJyZW50Q29udGV4dC5zZXQoZSxyKTtyZXR1cm4gbn07dC5kZWxldGVWYWx1ZT1lPT57Y29uc3Qgcj1uZXcgQmFzZUNvbnRleHQodC5fY3VycmVudENvbnRleHQpO3IuX2N1cnJlbnRDb250ZXh0LmRlbGV0ZShlKTtyZXR1cm4gcn19fXQuUk9PVF9DT05URVhUPW5ldyBCYXNlQ29udGV4dH0sNTA2OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuZGlhZz12b2lkIDA7Y29uc3Qgbj1yKDkzMCk7dC5kaWFnPW4uRGlhZ0FQSS5pbnN0YW5jZSgpfSw1NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWdDb21wb25lbnRMb2dnZXI9dm9pZCAwO2NvbnN0IG49cigxNzIpO2NsYXNzIERpYWdDb21wb25lbnRMb2dnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbmFtZXNwYWNlPWUubmFtZXNwYWNlfHxcIkRpYWdDb21wb25lbnRMb2dnZXJcIn1kZWJ1ZyguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJkZWJ1Z1wiLHRoaXMuX25hbWVzcGFjZSxlKX1lcnJvciguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJlcnJvclwiLHRoaXMuX25hbWVzcGFjZSxlKX1pbmZvKC4uLmUpe3JldHVybiBsb2dQcm94eShcImluZm9cIix0aGlzLl9uYW1lc3BhY2UsZSl9d2FybiguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJ3YXJuXCIsdGhpcy5fbmFtZXNwYWNlLGUpfXZlcmJvc2UoLi4uZSl7cmV0dXJuIGxvZ1Byb3h5KFwidmVyYm9zZVwiLHRoaXMuX25hbWVzcGFjZSxlKX19dC5EaWFnQ29tcG9uZW50TG9nZ2VyPURpYWdDb21wb25lbnRMb2dnZXI7ZnVuY3Rpb24gbG9nUHJveHkoZSx0LHIpe2NvbnN0IGE9KDAsbi5nZXRHbG9iYWwpKFwiZGlhZ1wiKTtpZighYSl7cmV0dXJufXIudW5zaGlmdCh0KTtyZXR1cm4gYVtlXSguLi5yKX19LDk3MjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5EaWFnQ29uc29sZUxvZ2dlcj12b2lkIDA7Y29uc3Qgcj1be246XCJlcnJvclwiLGM6XCJlcnJvclwifSx7bjpcIndhcm5cIixjOlwid2FyblwifSx7bjpcImluZm9cIixjOlwiaW5mb1wifSx7bjpcImRlYnVnXCIsYzpcImRlYnVnXCJ9LHtuOlwidmVyYm9zZVwiLGM6XCJ0cmFjZVwifV07Y2xhc3MgRGlhZ0NvbnNvbGVMb2dnZXJ7Y29uc3RydWN0b3IoKXtmdW5jdGlvbiBfY29uc29sZUZ1bmMoZSl7cmV0dXJuIGZ1bmN0aW9uKC4uLnQpe2lmKGNvbnNvbGUpe2xldCByPWNvbnNvbGVbZV07aWYodHlwZW9mIHIhPT1cImZ1bmN0aW9uXCIpe3I9Y29uc29sZS5sb2d9aWYodHlwZW9mIHI9PT1cImZ1bmN0aW9uXCIpe3JldHVybiByLmFwcGx5KGNvbnNvbGUsdCl9fX19Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe3RoaXNbcltlXS5uXT1fY29uc29sZUZ1bmMocltlXS5jKX19fXQuRGlhZ0NvbnNvbGVMb2dnZXI9RGlhZ0NvbnNvbGVMb2dnZXJ9LDkxMjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcj12b2lkIDA7Y29uc3Qgbj1yKDk1Nyk7ZnVuY3Rpb24gY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyKGUsdCl7aWYoZTxuLkRpYWdMb2dMZXZlbC5OT05FKXtlPW4uRGlhZ0xvZ0xldmVsLk5PTkV9ZWxzZSBpZihlPm4uRGlhZ0xvZ0xldmVsLkFMTCl7ZT1uLkRpYWdMb2dMZXZlbC5BTEx9dD10fHx7fTtmdW5jdGlvbiBfZmlsdGVyRnVuYyhyLG4pe2NvbnN0IGE9dFtyXTtpZih0eXBlb2YgYT09PVwiZnVuY3Rpb25cIiYmZT49bil7cmV0dXJuIGEuYmluZCh0KX1yZXR1cm4gZnVuY3Rpb24oKXt9fXJldHVybntlcnJvcjpfZmlsdGVyRnVuYyhcImVycm9yXCIsbi5EaWFnTG9nTGV2ZWwuRVJST1IpLHdhcm46X2ZpbHRlckZ1bmMoXCJ3YXJuXCIsbi5EaWFnTG9nTGV2ZWwuV0FSTiksaW5mbzpfZmlsdGVyRnVuYyhcImluZm9cIixuLkRpYWdMb2dMZXZlbC5JTkZPKSxkZWJ1ZzpfZmlsdGVyRnVuYyhcImRlYnVnXCIsbi5EaWFnTG9nTGV2ZWwuREVCVUcpLHZlcmJvc2U6X2ZpbHRlckZ1bmMoXCJ2ZXJib3NlXCIsbi5EaWFnTG9nTGV2ZWwuVkVSQk9TRSl9fXQuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyPWNyZWF0ZUxvZ0xldmVsRGlhZ0xvZ2dlcn0sOTU3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWdMb2dMZXZlbD12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIk5PTkVcIl09MF09XCJOT05FXCI7ZVtlW1wiRVJST1JcIl09MzBdPVwiRVJST1JcIjtlW2VbXCJXQVJOXCJdPTUwXT1cIldBUk5cIjtlW2VbXCJJTkZPXCJdPTYwXT1cIklORk9cIjtlW2VbXCJERUJVR1wiXT03MF09XCJERUJVR1wiO2VbZVtcIlZFUkJPU0VcIl09ODBdPVwiVkVSQk9TRVwiO2VbZVtcIkFMTFwiXT05OTk5XT1cIkFMTFwifSkocj10LkRpYWdMb2dMZXZlbHx8KHQuRGlhZ0xvZ0xldmVsPXt9KSl9LDE3MjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnVucmVnaXN0ZXJHbG9iYWw9dC5nZXRHbG9iYWw9dC5yZWdpc3Rlckdsb2JhbD12b2lkIDA7Y29uc3Qgbj1yKDIwMCk7Y29uc3QgYT1yKDUyMSk7Y29uc3Qgbz1yKDEzMCk7Y29uc3QgaT1hLlZFUlNJT04uc3BsaXQoXCIuXCIpWzBdO2NvbnN0IGM9U3ltYm9sLmZvcihgb3BlbnRlbGVtZXRyeS5qcy5hcGkuJHtpfWApO2NvbnN0IHM9bi5fZ2xvYmFsVGhpcztmdW5jdGlvbiByZWdpc3Rlckdsb2JhbChlLHQscixuPWZhbHNlKXt2YXIgbztjb25zdCBpPXNbY109KG89c1tjXSkhPT1udWxsJiZvIT09dm9pZCAwP286e3ZlcnNpb246YS5WRVJTSU9OfTtpZighbiYmaVtlXSl7Y29uc3QgdD1uZXcgRXJyb3IoYEBvcGVudGVsZW1ldHJ5L2FwaTogQXR0ZW1wdGVkIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gb2YgQVBJOiAke2V9YCk7ci5lcnJvcih0LnN0YWNrfHx0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pZihpLnZlcnNpb24hPT1hLlZFUlNJT04pe2NvbnN0IHQ9bmV3IEVycm9yKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdHJhdGlvbiBvZiB2ZXJzaW9uIHYke2kudmVyc2lvbn0gZm9yICR7ZX0gZG9lcyBub3QgbWF0Y2ggcHJldmlvdXNseSByZWdpc3RlcmVkIEFQSSB2JHthLlZFUlNJT059YCk7ci5lcnJvcih0LnN0YWNrfHx0Lm1lc3NhZ2UpO3JldHVybiBmYWxzZX1pW2VdPXQ7ci5kZWJ1ZyhgQG9wZW50ZWxlbWV0cnkvYXBpOiBSZWdpc3RlcmVkIGEgZ2xvYmFsIGZvciAke2V9IHYke2EuVkVSU0lPTn0uYCk7cmV0dXJuIHRydWV9dC5yZWdpc3Rlckdsb2JhbD1yZWdpc3Rlckdsb2JhbDtmdW5jdGlvbiBnZXRHbG9iYWwoZSl7dmFyIHQscjtjb25zdCBuPSh0PXNbY10pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC52ZXJzaW9uO2lmKCFufHwhKDAsby5pc0NvbXBhdGlibGUpKG4pKXtyZXR1cm59cmV0dXJuKHI9c1tjXSk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyW2VdfXQuZ2V0R2xvYmFsPWdldEdsb2JhbDtmdW5jdGlvbiB1bnJlZ2lzdGVyR2xvYmFsKGUsdCl7dC5kZWJ1ZyhgQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciAke2V9IHYke2EuVkVSU0lPTn0uYCk7Y29uc3Qgcj1zW2NdO2lmKHIpe2RlbGV0ZSByW2VdfX10LnVucmVnaXN0ZXJHbG9iYWw9dW5yZWdpc3Rlckdsb2JhbH0sMTMwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuaXNDb21wYXRpYmxlPXQuX21ha2VDb21wYXRpYmlsaXR5Q2hlY2s9dm9pZCAwO2NvbnN0IG49cig1MjEpO2NvbnN0IGE9L14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLSguKykpPyQvO2Z1bmN0aW9uIF9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrKGUpe2NvbnN0IHQ9bmV3IFNldChbZV0pO2NvbnN0IHI9bmV3IFNldDtjb25zdCBuPWUubWF0Y2goYSk7aWYoIW4pe3JldHVybigpPT5mYWxzZX1jb25zdCBvPXttYWpvcjorblsxXSxtaW5vcjorblsyXSxwYXRjaDorblszXSxwcmVyZWxlYXNlOm5bNF19O2lmKG8ucHJlcmVsZWFzZSE9bnVsbCl7cmV0dXJuIGZ1bmN0aW9uIGlzRXhhY3RtYXRjaCh0KXtyZXR1cm4gdD09PWV9fWZ1bmN0aW9uIF9yZWplY3QoZSl7ci5hZGQoZSk7cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIF9hY2NlcHQoZSl7dC5hZGQoZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZ1bmN0aW9uIGlzQ29tcGF0aWJsZShlKXtpZih0LmhhcyhlKSl7cmV0dXJuIHRydWV9aWYoci5oYXMoZSkpe3JldHVybiBmYWxzZX1jb25zdCBuPWUubWF0Y2goYSk7aWYoIW4pe3JldHVybiBfcmVqZWN0KGUpfWNvbnN0IGk9e21ham9yOituWzFdLG1pbm9yOituWzJdLHBhdGNoOituWzNdLHByZXJlbGVhc2U6bls0XX07aWYoaS5wcmVyZWxlYXNlIT1udWxsKXtyZXR1cm4gX3JlamVjdChlKX1pZihvLm1ham9yIT09aS5tYWpvcil7cmV0dXJuIF9yZWplY3QoZSl9aWYoby5tYWpvcj09PTApe2lmKG8ubWlub3I9PT1pLm1pbm9yJiZvLnBhdGNoPD1pLnBhdGNoKXtyZXR1cm4gX2FjY2VwdChlKX1yZXR1cm4gX3JlamVjdChlKX1pZihvLm1pbm9yPD1pLm1pbm9yKXtyZXR1cm4gX2FjY2VwdChlKX1yZXR1cm4gX3JlamVjdChlKX19dC5fbWFrZUNvbXBhdGliaWxpdHlDaGVjaz1fbWFrZUNvbXBhdGliaWxpdHlDaGVjazt0LmlzQ29tcGF0aWJsZT1fbWFrZUNvbXBhdGliaWxpdHlDaGVjayhuLlZFUlNJT04pfSw4ODY6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5tZXRyaWNzPXZvaWQgMDtjb25zdCBuPXIoNjUzKTt0Lm1ldHJpY3M9bi5NZXRyaWNzQVBJLmdldEluc3RhbmNlKCl9LDkwMTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5WYWx1ZVR5cGU9dm9pZCAwO3ZhciByOyhmdW5jdGlvbihlKXtlW2VbXCJJTlRcIl09MF09XCJJTlRcIjtlW2VbXCJET1VCTEVcIl09MV09XCJET1VCTEVcIn0pKHI9dC5WYWx1ZVR5cGV8fCh0LlZhbHVlVHlwZT17fSkpfSwxMDI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY3JlYXRlTm9vcE1ldGVyPXQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9dC5OT09QX09CU0VSVkFCTEVfR0FVR0VfTUVUUklDPXQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDPXQuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPXQuTk9PUF9ISVNUT0dSQU1fTUVUUklDPXQuTk9PUF9DT1VOVEVSX01FVFJJQz10Lk5PT1BfTUVURVI9dC5Ob29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM9dC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPXQuTm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljPXQuTm9vcE9ic2VydmFibGVNZXRyaWM9dC5Ob29wSGlzdG9ncmFtTWV0cmljPXQuTm9vcFVwRG93bkNvdW50ZXJNZXRyaWM9dC5Ob29wQ291bnRlck1ldHJpYz10Lk5vb3BNZXRyaWM9dC5Ob29wTWV0ZXI9dm9pZCAwO2NsYXNzIE5vb3BNZXRlcntjb25zdHJ1Y3Rvcigpe31jcmVhdGVIaXN0b2dyYW0oZSxyKXtyZXR1cm4gdC5OT09QX0hJU1RPR1JBTV9NRVRSSUN9Y3JlYXRlQ291bnRlcihlLHIpe3JldHVybiB0Lk5PT1BfQ09VTlRFUl9NRVRSSUN9Y3JlYXRlVXBEb3duQ291bnRlcihlLHIpe3JldHVybiB0Lk5PT1BfVVBfRE9XTl9DT1VOVEVSX01FVFJJQ31jcmVhdGVPYnNlcnZhYmxlR2F1Z2UoZSxyKXtyZXR1cm4gdC5OT09QX09CU0VSVkFCTEVfR0FVR0VfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVDb3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVVcERvd25Db3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUN9YWRkQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soZSx0KXt9cmVtb3ZlQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2soZSl7fX10Lk5vb3BNZXRlcj1Ob29wTWV0ZXI7Y2xhc3MgTm9vcE1ldHJpY3t9dC5Ob29wTWV0cmljPU5vb3BNZXRyaWM7Y2xhc3MgTm9vcENvdW50ZXJNZXRyaWMgZXh0ZW5kcyBOb29wTWV0cmlje2FkZChlLHQpe319dC5Ob29wQ291bnRlck1ldHJpYz1Ob29wQ291bnRlck1ldHJpYztjbGFzcyBOb29wVXBEb3duQ291bnRlck1ldHJpYyBleHRlbmRzIE5vb3BNZXRyaWN7YWRkKGUsdCl7fX10Lk5vb3BVcERvd25Db3VudGVyTWV0cmljPU5vb3BVcERvd25Db3VudGVyTWV0cmljO2NsYXNzIE5vb3BIaXN0b2dyYW1NZXRyaWMgZXh0ZW5kcyBOb29wTWV0cmlje3JlY29yZChlLHQpe319dC5Ob29wSGlzdG9ncmFtTWV0cmljPU5vb3BIaXN0b2dyYW1NZXRyaWM7Y2xhc3MgTm9vcE9ic2VydmFibGVNZXRyaWN7YWRkQ2FsbGJhY2soZSl7fXJlbW92ZUNhbGxiYWNrKGUpe319dC5Ob29wT2JzZXJ2YWJsZU1ldHJpYz1Ob29wT2JzZXJ2YWJsZU1ldHJpYztjbGFzcyBOb29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWMgZXh0ZW5kcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3t9dC5Ob29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM9Tm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljO2NsYXNzIE5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWMgZXh0ZW5kcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3t9dC5Ob29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljPU5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWM7Y2xhc3MgTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljIGV4dGVuZHMgTm9vcE9ic2VydmFibGVNZXRyaWN7fXQuTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljPU5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYzt0Lk5PT1BfTUVURVI9bmV3IE5vb3BNZXRlcjt0Lk5PT1BfQ09VTlRFUl9NRVRSSUM9bmV3IE5vb3BDb3VudGVyTWV0cmljO3QuTk9PUF9ISVNUT0dSQU1fTUVUUklDPW5ldyBOb29wSGlzdG9ncmFtTWV0cmljO3QuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBOb29wVXBEb3duQ291bnRlck1ldHJpYzt0Lk5PT1BfT0JTRVJWQUJMRV9DT1VOVEVSX01FVFJJQz1uZXcgTm9vcE9ic2VydmFibGVDb3VudGVyTWV0cmljO3QuTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQz1uZXcgTm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYzt0Lk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDPW5ldyBOb29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM7ZnVuY3Rpb24gY3JlYXRlTm9vcE1ldGVyKCl7cmV0dXJuIHQuTk9PUF9NRVRFUn10LmNyZWF0ZU5vb3BNZXRlcj1jcmVhdGVOb29wTWV0ZXJ9LDY2MDooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5PT1BfTUVURVJfUFJPVklERVI9dC5Ob29wTWV0ZXJQcm92aWRlcj12b2lkIDA7Y29uc3Qgbj1yKDEwMik7Y2xhc3MgTm9vcE1ldGVyUHJvdmlkZXJ7Z2V0TWV0ZXIoZSx0LHIpe3JldHVybiBuLk5PT1BfTUVURVJ9fXQuTm9vcE1ldGVyUHJvdmlkZXI9Tm9vcE1ldGVyUHJvdmlkZXI7dC5OT09QX01FVEVSX1BST1ZJREVSPW5ldyBOb29wTWV0ZXJQcm92aWRlcn0sMjAwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX0pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgYT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSluKHQsZSxyKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTthKHIoNDYpLHQpfSw2NTE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuX2dsb2JhbFRoaXM9dm9pZCAwO3QuX2dsb2JhbFRoaXM9dHlwZW9mIGdsb2JhbFRoaXM9PT1cIm9iamVjdFwiP2dsb2JhbFRoaXM6Z2xvYmFsfSw0NjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19KX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIGE9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpbih0LGUscil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7YShyKDY1MSksdCl9LDkzOTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnByb3BhZ2F0aW9uPXZvaWQgMDtjb25zdCBuPXIoMTgxKTt0LnByb3BhZ2F0aW9uPW4uUHJvcGFnYXRpb25BUEkuZ2V0SW5zdGFuY2UoKX0sODc0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5vb3BUZXh0TWFwUHJvcGFnYXRvcj12b2lkIDA7Y2xhc3MgTm9vcFRleHRNYXBQcm9wYWdhdG9ye2luamVjdChlLHQpe31leHRyYWN0KGUsdCl7cmV0dXJuIGV9ZmllbGRzKCl7cmV0dXJuW119fXQuTm9vcFRleHRNYXBQcm9wYWdhdG9yPU5vb3BUZXh0TWFwUHJvcGFnYXRvcn0sMTk0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmRlZmF1bHRUZXh0TWFwU2V0dGVyPXQuZGVmYXVsdFRleHRNYXBHZXR0ZXI9dm9pZCAwO3QuZGVmYXVsdFRleHRNYXBHZXR0ZXI9e2dldChlLHQpe2lmKGU9PW51bGwpe3JldHVybiB1bmRlZmluZWR9cmV0dXJuIGVbdF19LGtleXMoZSl7aWYoZT09bnVsbCl7cmV0dXJuW119cmV0dXJuIE9iamVjdC5rZXlzKGUpfX07dC5kZWZhdWx0VGV4dE1hcFNldHRlcj17c2V0KGUsdCxyKXtpZihlPT1udWxsKXtyZXR1cm59ZVt0XT1yfX19LDg0NTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnRyYWNlPXZvaWQgMDtjb25zdCBuPXIoOTk3KTt0LnRyYWNlPW4uVHJhY2VBUEkuZ2V0SW5zdGFuY2UoKX0sNDAzOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTm9uUmVjb3JkaW5nU3Bhbj12b2lkIDA7Y29uc3Qgbj1yKDQ3Nik7Y2xhc3MgTm9uUmVjb3JkaW5nU3Bhbntjb25zdHJ1Y3RvcihlPW4uSU5WQUxJRF9TUEFOX0NPTlRFWFQpe3RoaXMuX3NwYW5Db250ZXh0PWV9c3BhbkNvbnRleHQoKXtyZXR1cm4gdGhpcy5fc3BhbkNvbnRleHR9c2V0QXR0cmlidXRlKGUsdCl7cmV0dXJuIHRoaXN9c2V0QXR0cmlidXRlcyhlKXtyZXR1cm4gdGhpc31hZGRFdmVudChlLHQpe3JldHVybiB0aGlzfXNldFN0YXR1cyhlKXtyZXR1cm4gdGhpc311cGRhdGVOYW1lKGUpe3JldHVybiB0aGlzfWVuZChlKXt9aXNSZWNvcmRpbmcoKXtyZXR1cm4gZmFsc2V9cmVjb3JkRXhjZXB0aW9uKGUsdCl7fX10Lk5vblJlY29yZGluZ1NwYW49Tm9uUmVjb3JkaW5nU3Bhbn0sNjE0OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTm9vcFRyYWNlcj12b2lkIDA7Y29uc3Qgbj1yKDQ5MSk7Y29uc3QgYT1yKDYwNyk7Y29uc3Qgbz1yKDQwMyk7Y29uc3QgaT1yKDEzOSk7Y29uc3QgYz1uLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKTtjbGFzcyBOb29wVHJhY2Vye3N0YXJ0U3BhbihlLHQscj1jLmFjdGl2ZSgpKXtjb25zdCBuPUJvb2xlYW4odD09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQucm9vdCk7aWYobil7cmV0dXJuIG5ldyBvLk5vblJlY29yZGluZ1NwYW59Y29uc3Qgcz1yJiYoMCxhLmdldFNwYW5Db250ZXh0KShyKTtpZihpc1NwYW5Db250ZXh0KHMpJiYoMCxpLmlzU3BhbkNvbnRleHRWYWxpZCkocykpe3JldHVybiBuZXcgby5Ob25SZWNvcmRpbmdTcGFuKHMpfWVsc2V7cmV0dXJuIG5ldyBvLk5vblJlY29yZGluZ1NwYW59fXN0YXJ0QWN0aXZlU3BhbihlLHQscixuKXtsZXQgbztsZXQgaTtsZXQgcztpZihhcmd1bWVudHMubGVuZ3RoPDIpe3JldHVybn1lbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKXtzPXR9ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPT09Myl7bz10O3M9cn1lbHNle289dDtpPXI7cz1ufWNvbnN0IHU9aSE9PW51bGwmJmkhPT12b2lkIDA/aTpjLmFjdGl2ZSgpO2NvbnN0IGw9dGhpcy5zdGFydFNwYW4oZSxvLHUpO2NvbnN0IGc9KDAsYS5zZXRTcGFuKSh1LGwpO3JldHVybiBjLndpdGgoZyxzLHVuZGVmaW5lZCxsKX19dC5Ob29wVHJhY2VyPU5vb3BUcmFjZXI7ZnVuY3Rpb24gaXNTcGFuQ29udGV4dChlKXtyZXR1cm4gdHlwZW9mIGU9PT1cIm9iamVjdFwiJiZ0eXBlb2YgZVtcInNwYW5JZFwiXT09PVwic3RyaW5nXCImJnR5cGVvZiBlW1widHJhY2VJZFwiXT09PVwic3RyaW5nXCImJnR5cGVvZiBlW1widHJhY2VGbGFnc1wiXT09PVwibnVtYmVyXCJ9fSwxMjQ6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob29wVHJhY2VyUHJvdmlkZXI9dm9pZCAwO2NvbnN0IG49cig2MTQpO2NsYXNzIE5vb3BUcmFjZXJQcm92aWRlcntnZXRUcmFjZXIoZSx0LHIpe3JldHVybiBuZXcgbi5Ob29wVHJhY2VyfX10Lk5vb3BUcmFjZXJQcm92aWRlcj1Ob29wVHJhY2VyUHJvdmlkZXJ9LDEyNTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3h5VHJhY2VyPXZvaWQgMDtjb25zdCBuPXIoNjE0KTtjb25zdCBhPW5ldyBuLk5vb3BUcmFjZXI7Y2xhc3MgUHJveHlUcmFjZXJ7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5fcHJvdmlkZXI9ZTt0aGlzLm5hbWU9dDt0aGlzLnZlcnNpb249cjt0aGlzLm9wdGlvbnM9bn1zdGFydFNwYW4oZSx0LHIpe3JldHVybiB0aGlzLl9nZXRUcmFjZXIoKS5zdGFydFNwYW4oZSx0LHIpfXN0YXJ0QWN0aXZlU3BhbihlLHQscixuKXtjb25zdCBhPXRoaXMuX2dldFRyYWNlcigpO3JldHVybiBSZWZsZWN0LmFwcGx5KGEuc3RhcnRBY3RpdmVTcGFuLGEsYXJndW1lbnRzKX1fZ2V0VHJhY2VyKCl7aWYodGhpcy5fZGVsZWdhdGUpe3JldHVybiB0aGlzLl9kZWxlZ2F0ZX1jb25zdCBlPXRoaXMuX3Byb3ZpZGVyLmdldERlbGVnYXRlVHJhY2VyKHRoaXMubmFtZSx0aGlzLnZlcnNpb24sdGhpcy5vcHRpb25zKTtpZighZSl7cmV0dXJuIGF9dGhpcy5fZGVsZWdhdGU9ZTtyZXR1cm4gdGhpcy5fZGVsZWdhdGV9fXQuUHJveHlUcmFjZXI9UHJveHlUcmFjZXJ9LDg0NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlByb3h5VHJhY2VyUHJvdmlkZXI9dm9pZCAwO2NvbnN0IG49cigxMjUpO2NvbnN0IGE9cigxMjQpO2NvbnN0IG89bmV3IGEuTm9vcFRyYWNlclByb3ZpZGVyO2NsYXNzIFByb3h5VHJhY2VyUHJvdmlkZXJ7Z2V0VHJhY2VyKGUsdCxyKXt2YXIgYTtyZXR1cm4oYT10aGlzLmdldERlbGVnYXRlVHJhY2VyKGUsdCxyKSkhPT1udWxsJiZhIT09dm9pZCAwP2E6bmV3IG4uUHJveHlUcmFjZXIodGhpcyxlLHQscil9Z2V0RGVsZWdhdGUoKXt2YXIgZTtyZXR1cm4oZT10aGlzLl9kZWxlZ2F0ZSkhPT1udWxsJiZlIT09dm9pZCAwP2U6b31zZXREZWxlZ2F0ZShlKXt0aGlzLl9kZWxlZ2F0ZT1lfWdldERlbGVnYXRlVHJhY2VyKGUsdCxyKXt2YXIgbjtyZXR1cm4obj10aGlzLl9kZWxlZ2F0ZSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLmdldFRyYWNlcihlLHQscil9fXQuUHJveHlUcmFjZXJQcm92aWRlcj1Qcm94eVRyYWNlclByb3ZpZGVyfSw5OTY6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuU2FtcGxpbmdEZWNpc2lvbj12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIk5PVF9SRUNPUkRcIl09MF09XCJOT1RfUkVDT1JEXCI7ZVtlW1wiUkVDT1JEXCJdPTFdPVwiUkVDT1JEXCI7ZVtlW1wiUkVDT1JEX0FORF9TQU1QTEVEXCJdPTJdPVwiUkVDT1JEX0FORF9TQU1QTEVEXCJ9KShyPXQuU2FtcGxpbmdEZWNpc2lvbnx8KHQuU2FtcGxpbmdEZWNpc2lvbj17fSkpfSw2MDc6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5nZXRTcGFuQ29udGV4dD10LnNldFNwYW5Db250ZXh0PXQuZGVsZXRlU3Bhbj10LnNldFNwYW49dC5nZXRBY3RpdmVTcGFuPXQuZ2V0U3Bhbj12b2lkIDA7Y29uc3Qgbj1yKDc4MCk7Y29uc3QgYT1yKDQwMyk7Y29uc3Qgbz1yKDQ5MSk7Y29uc3QgaT0oMCxuLmNyZWF0ZUNvbnRleHRLZXkpKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBTUEFOXCIpO2Z1bmN0aW9uIGdldFNwYW4oZSl7cmV0dXJuIGUuZ2V0VmFsdWUoaSl8fHVuZGVmaW5lZH10LmdldFNwYW49Z2V0U3BhbjtmdW5jdGlvbiBnZXRBY3RpdmVTcGFuKCl7cmV0dXJuIGdldFNwYW4oby5Db250ZXh0QVBJLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfXQuZ2V0QWN0aXZlU3Bhbj1nZXRBY3RpdmVTcGFuO2Z1bmN0aW9uIHNldFNwYW4oZSx0KXtyZXR1cm4gZS5zZXRWYWx1ZShpLHQpfXQuc2V0U3Bhbj1zZXRTcGFuO2Z1bmN0aW9uIGRlbGV0ZVNwYW4oZSl7cmV0dXJuIGUuZGVsZXRlVmFsdWUoaSl9dC5kZWxldGVTcGFuPWRlbGV0ZVNwYW47ZnVuY3Rpb24gc2V0U3BhbkNvbnRleHQoZSx0KXtyZXR1cm4gc2V0U3BhbihlLG5ldyBhLk5vblJlY29yZGluZ1NwYW4odCkpfXQuc2V0U3BhbkNvbnRleHQ9c2V0U3BhbkNvbnRleHQ7ZnVuY3Rpb24gZ2V0U3BhbkNvbnRleHQoZSl7dmFyIHQ7cmV0dXJuKHQ9Z2V0U3BhbihlKSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnNwYW5Db250ZXh0KCl9dC5nZXRTcGFuQ29udGV4dD1nZXRTcGFuQ29udGV4dH0sMzI1OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVHJhY2VTdGF0ZUltcGw9dm9pZCAwO2NvbnN0IG49cig1NjQpO2NvbnN0IGE9MzI7Y29uc3Qgbz01MTI7Y29uc3QgaT1cIixcIjtjb25zdCBjPVwiPVwiO2NsYXNzIFRyYWNlU3RhdGVJbXBse2NvbnN0cnVjdG9yKGUpe3RoaXMuX2ludGVybmFsU3RhdGU9bmV3IE1hcDtpZihlKXRoaXMuX3BhcnNlKGUpfXNldChlLHQpe2NvbnN0IHI9dGhpcy5fY2xvbmUoKTtpZihyLl9pbnRlcm5hbFN0YXRlLmhhcyhlKSl7ci5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSl9ci5faW50ZXJuYWxTdGF0ZS5zZXQoZSx0KTtyZXR1cm4gcn11bnNldChlKXtjb25zdCB0PXRoaXMuX2Nsb25lKCk7dC5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSk7cmV0dXJuIHR9Z2V0KGUpe3JldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChlKX1zZXJpYWxpemUoKXtyZXR1cm4gdGhpcy5fa2V5cygpLnJlZHVjZSgoKGUsdCk9PntlLnB1c2godCtjK3RoaXMuZ2V0KHQpKTtyZXR1cm4gZX0pLFtdKS5qb2luKGkpfV9wYXJzZShlKXtpZihlLmxlbmd0aD5vKXJldHVybjt0aGlzLl9pbnRlcm5hbFN0YXRlPWUuc3BsaXQoaSkucmV2ZXJzZSgpLnJlZHVjZSgoKGUsdCk9Pntjb25zdCByPXQudHJpbSgpO2NvbnN0IGE9ci5pbmRleE9mKGMpO2lmKGEhPT0tMSl7Y29uc3Qgbz1yLnNsaWNlKDAsYSk7Y29uc3QgaT1yLnNsaWNlKGErMSx0Lmxlbmd0aCk7aWYoKDAsbi52YWxpZGF0ZUtleSkobykmJigwLG4udmFsaWRhdGVWYWx1ZSkoaSkpe2Uuc2V0KG8saSl9ZWxzZXt9fXJldHVybiBlfSksbmV3IE1hcCk7aWYodGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplPmEpe3RoaXMuX2ludGVybmFsU3RhdGU9bmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCxhKSl9fV9rZXlzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5rZXlzKCkpLnJldmVyc2UoKX1fY2xvbmUoKXtjb25zdCBlPW5ldyBUcmFjZVN0YXRlSW1wbDtlLl9pbnRlcm5hbFN0YXRlPW5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSk7cmV0dXJuIGV9fXQuVHJhY2VTdGF0ZUltcGw9VHJhY2VTdGF0ZUltcGx9LDU2NDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC52YWxpZGF0ZVZhbHVlPXQudmFsaWRhdGVLZXk9dm9pZCAwO2NvbnN0IHI9XCJbXzAtOWEtei0qL11cIjtjb25zdCBuPWBbYS16XSR7cn17MCwyNTV9YDtjb25zdCBhPWBbYS16MC05XSR7cn17MCwyNDB9QFthLXpdJHtyfXswLDEzfWA7Y29uc3Qgbz1uZXcgUmVnRXhwKGBeKD86JHtufXwke2F9KSRgKTtjb25zdCBpPS9eWyAtfl17MCwyNTV9WyEtfl0kLztjb25zdCBjPS8sfD0vO2Z1bmN0aW9uIHZhbGlkYXRlS2V5KGUpe3JldHVybiBvLnRlc3QoZSl9dC52YWxpZGF0ZUtleT12YWxpZGF0ZUtleTtmdW5jdGlvbiB2YWxpZGF0ZVZhbHVlKGUpe3JldHVybiBpLnRlc3QoZSkmJiFjLnRlc3QoZSl9dC52YWxpZGF0ZVZhbHVlPXZhbGlkYXRlVmFsdWV9LDk4OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY3JlYXRlVHJhY2VTdGF0ZT12b2lkIDA7Y29uc3Qgbj1yKDMyNSk7ZnVuY3Rpb24gY3JlYXRlVHJhY2VTdGF0ZShlKXtyZXR1cm4gbmV3IG4uVHJhY2VTdGF0ZUltcGwoZSl9dC5jcmVhdGVUcmFjZVN0YXRlPWNyZWF0ZVRyYWNlU3RhdGV9LDQ3NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LklOVkFMSURfU1BBTl9DT05URVhUPXQuSU5WQUxJRF9UUkFDRUlEPXQuSU5WQUxJRF9TUEFOSUQ9dm9pZCAwO2NvbnN0IG49cig0NzUpO3QuSU5WQUxJRF9TUEFOSUQ9XCIwMDAwMDAwMDAwMDAwMDAwXCI7dC5JTlZBTElEX1RSQUNFSUQ9XCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiO3QuSU5WQUxJRF9TUEFOX0NPTlRFWFQ9e3RyYWNlSWQ6dC5JTlZBTElEX1RSQUNFSUQsc3BhbklkOnQuSU5WQUxJRF9TUEFOSUQsdHJhY2VGbGFnczpuLlRyYWNlRmxhZ3MuTk9ORX19LDM1NzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5TcGFuS2luZD12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIklOVEVSTkFMXCJdPTBdPVwiSU5URVJOQUxcIjtlW2VbXCJTRVJWRVJcIl09MV09XCJTRVJWRVJcIjtlW2VbXCJDTElFTlRcIl09Ml09XCJDTElFTlRcIjtlW2VbXCJQUk9EVUNFUlwiXT0zXT1cIlBST0RVQ0VSXCI7ZVtlW1wiQ09OU1VNRVJcIl09NF09XCJDT05TVU1FUlwifSkocj10LlNwYW5LaW5kfHwodC5TcGFuS2luZD17fSkpfSwxMzk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC53cmFwU3BhbkNvbnRleHQ9dC5pc1NwYW5Db250ZXh0VmFsaWQ9dC5pc1ZhbGlkU3BhbklkPXQuaXNWYWxpZFRyYWNlSWQ9dm9pZCAwO2NvbnN0IG49cig0NzYpO2NvbnN0IGE9cig0MDMpO2NvbnN0IG89L14oWzAtOWEtZl17MzJ9KSQvaTtjb25zdCBpPS9eWzAtOWEtZl17MTZ9JC9pO2Z1bmN0aW9uIGlzVmFsaWRUcmFjZUlkKGUpe3JldHVybiBvLnRlc3QoZSkmJmUhPT1uLklOVkFMSURfVFJBQ0VJRH10LmlzVmFsaWRUcmFjZUlkPWlzVmFsaWRUcmFjZUlkO2Z1bmN0aW9uIGlzVmFsaWRTcGFuSWQoZSl7cmV0dXJuIGkudGVzdChlKSYmZSE9PW4uSU5WQUxJRF9TUEFOSUR9dC5pc1ZhbGlkU3BhbklkPWlzVmFsaWRTcGFuSWQ7ZnVuY3Rpb24gaXNTcGFuQ29udGV4dFZhbGlkKGUpe3JldHVybiBpc1ZhbGlkVHJhY2VJZChlLnRyYWNlSWQpJiZpc1ZhbGlkU3BhbklkKGUuc3BhbklkKX10LmlzU3BhbkNvbnRleHRWYWxpZD1pc1NwYW5Db250ZXh0VmFsaWQ7ZnVuY3Rpb24gd3JhcFNwYW5Db250ZXh0KGUpe3JldHVybiBuZXcgYS5Ob25SZWNvcmRpbmdTcGFuKGUpfXQud3JhcFNwYW5Db250ZXh0PXdyYXBTcGFuQ29udGV4dH0sODQ3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlNwYW5TdGF0dXNDb2RlPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiVU5TRVRcIl09MF09XCJVTlNFVFwiO2VbZVtcIk9LXCJdPTFdPVwiT0tcIjtlW2VbXCJFUlJPUlwiXT0yXT1cIkVSUk9SXCJ9KShyPXQuU3BhblN0YXR1c0NvZGV8fCh0LlNwYW5TdGF0dXNDb2RlPXt9KSl9LDQ3NTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5UcmFjZUZsYWdzPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiTk9ORVwiXT0wXT1cIk5PTkVcIjtlW2VbXCJTQU1QTEVEXCJdPTFdPVwiU0FNUExFRFwifSkocj10LlRyYWNlRmxhZ3N8fCh0LlRyYWNlRmxhZ3M9e30pKX0sNTIxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlZFUlNJT049dm9pZCAwO3QuVkVSU0lPTj1cIjEuNi4wXCJ9fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHIpe3ZhciBuPXRbcl07aWYobiE9PXVuZGVmaW5lZCl7cmV0dXJuIG4uZXhwb3J0c312YXIgYT10W3JdPXtleHBvcnRzOnt9fTt2YXIgbz10cnVlO3RyeXtlW3JdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO289ZmFsc2V9ZmluYWxseXtpZihvKWRlbGV0ZSB0W3JdfXJldHVybiBhLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciByPXt9OygoKT0+e3ZhciBlPXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtlLnRyYWNlPWUucHJvcGFnYXRpb249ZS5tZXRyaWNzPWUuZGlhZz1lLmNvbnRleHQ9ZS5JTlZBTElEX1NQQU5fQ09OVEVYVD1lLklOVkFMSURfVFJBQ0VJRD1lLklOVkFMSURfU1BBTklEPWUuaXNWYWxpZFNwYW5JZD1lLmlzVmFsaWRUcmFjZUlkPWUuaXNTcGFuQ29udGV4dFZhbGlkPWUuY3JlYXRlVHJhY2VTdGF0ZT1lLlRyYWNlRmxhZ3M9ZS5TcGFuU3RhdHVzQ29kZT1lLlNwYW5LaW5kPWUuU2FtcGxpbmdEZWNpc2lvbj1lLlByb3h5VHJhY2VyUHJvdmlkZXI9ZS5Qcm94eVRyYWNlcj1lLmRlZmF1bHRUZXh0TWFwU2V0dGVyPWUuZGVmYXVsdFRleHRNYXBHZXR0ZXI9ZS5WYWx1ZVR5cGU9ZS5jcmVhdGVOb29wTWV0ZXI9ZS5EaWFnTG9nTGV2ZWw9ZS5EaWFnQ29uc29sZUxvZ2dlcj1lLlJPT1RfQ09OVEVYVD1lLmNyZWF0ZUNvbnRleHRLZXk9ZS5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmc9dm9pZCAwO3ZhciB0PV9fbmNjd3Bja19yZXF1aXJlX18oMzY5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZ1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nfX0pO3ZhciBuPV9fbmNjd3Bja19yZXF1aXJlX18oNzgwKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNyZWF0ZUNvbnRleHRLZXlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmNyZWF0ZUNvbnRleHRLZXl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJST09UX0NPTlRFWFRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlJPT1RfQ09OVEVYVH19KTt2YXIgYT1fX25jY3dwY2tfcmVxdWlyZV9fKDk3Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJEaWFnQ29uc29sZUxvZ2dlclwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuRGlhZ0NvbnNvbGVMb2dnZXJ9fSk7dmFyIG89X19uY2N3cGNrX3JlcXVpcmVfXyg5NTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiRGlhZ0xvZ0xldmVsXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5EaWFnTG9nTGV2ZWx9fSk7dmFyIGk9X19uY2N3cGNrX3JlcXVpcmVfXygxMDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY3JlYXRlTm9vcE1ldGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jcmVhdGVOb29wTWV0ZXJ9fSk7dmFyIGM9X19uY2N3cGNrX3JlcXVpcmVfXyg5MDEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiVmFsdWVUeXBlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5WYWx1ZVR5cGV9fSk7dmFyIHM9X19uY2N3cGNrX3JlcXVpcmVfXygxOTQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFRleHRNYXBHZXR0ZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHRUZXh0TWFwR2V0dGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFRleHRNYXBTZXR0ZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmRlZmF1bHRUZXh0TWFwU2V0dGVyfX0pO3ZhciB1PV9fbmNjd3Bja19yZXF1aXJlX18oMTI1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlByb3h5VHJhY2VyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5Qcm94eVRyYWNlcn19KTt2YXIgbD1fX25jY3dwY2tfcmVxdWlyZV9fKDg0Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJQcm94eVRyYWNlclByb3ZpZGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5Qcm94eVRyYWNlclByb3ZpZGVyfX0pO3ZhciBnPV9fbmNjd3Bja19yZXF1aXJlX18oOTk2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlNhbXBsaW5nRGVjaXNpb25cIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBnLlNhbXBsaW5nRGVjaXNpb259fSk7dmFyIHA9X19uY2N3cGNrX3JlcXVpcmVfXygzNTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiU3BhbktpbmRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBwLlNwYW5LaW5kfX0pO3ZhciBkPV9fbmNjd3Bja19yZXF1aXJlX18oODQ3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlNwYW5TdGF0dXNDb2RlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5TcGFuU3RhdHVzQ29kZX19KTt2YXIgXz1fX25jY3dwY2tfcmVxdWlyZV9fKDQ3NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJUcmFjZUZsYWdzXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gXy5UcmFjZUZsYWdzfX0pO3ZhciBmPV9fbmNjd3Bja19yZXF1aXJlX18oOTgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY3JlYXRlVHJhY2VTdGF0ZVwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuY3JlYXRlVHJhY2VTdGF0ZX19KTt2YXIgYj1fX25jY3dwY2tfcmVxdWlyZV9fKDEzOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJpc1NwYW5Db250ZXh0VmFsaWRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmlzU3BhbkNvbnRleHRWYWxpZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlzVmFsaWRUcmFjZUlkXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5pc1ZhbGlkVHJhY2VJZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlzVmFsaWRTcGFuSWRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmlzVmFsaWRTcGFuSWR9fSk7dmFyIHY9X19uY2N3cGNrX3JlcXVpcmVfXyg0NzYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiSU5WQUxJRF9TUEFOSURcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB2LklOVkFMSURfU1BBTklEfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiSU5WQUxJRF9UUkFDRUlEXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JTlZBTElEX1RSQUNFSUR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJJTlZBTElEX1NQQU5fQ09OVEVYVFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuSU5WQUxJRF9TUEFOX0NPTlRFWFR9fSk7Y29uc3QgTz1fX25jY3dwY2tfcmVxdWlyZV9fKDY3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNvbnRleHRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBPLmNvbnRleHR9fSk7Y29uc3QgUD1fX25jY3dwY2tfcmVxdWlyZV9fKDUwNik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkaWFnXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUC5kaWFnfX0pO2NvbnN0IE49X19uY2N3cGNrX3JlcXVpcmVfXyg4ODYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwibWV0cmljc1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE4ubWV0cmljc319KTtjb25zdCBTPV9fbmNjd3Bja19yZXF1aXJlX18oOTM5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3BhZ2F0aW9uXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUy5wcm9wYWdhdGlvbn19KTtjb25zdCBDPV9fbmNjd3Bja19yZXF1aXJlX18oODQ1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInRyYWNlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQy50cmFjZX19KTtlW1wiZGVmYXVsdFwiXT17Y29udGV4dDpPLmNvbnRleHQsZGlhZzpQLmRpYWcsbWV0cmljczpOLm1ldHJpY3MscHJvcGFnYXRpb246Uy5wcm9wYWdhdGlvbix0cmFjZTpDLnRyYWNlfX0pKCk7bW9kdWxlLmV4cG9ydHM9cn0pKCk7Il0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/cookie/index.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/compiled/cookie/index.js ***! \*********************************************************/ /***/ ((module) => { eval("(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p { eval("(()=>{\"use strict\";var e={695:e=>{\n/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\nvar r=/(?:^|,)\\s*?no-cache\\s*?(?:,|$)/;e.exports=fresh;function fresh(e,a){var t=e[\"if-modified-since\"];var s=e[\"if-none-match\"];if(!t&&!s){return false}var i=e[\"cache-control\"];if(i&&r.test(i)){return false}if(s&&s!==\"*\"){var f=a[\"etag\"];if(!f){return false}var n=true;var u=parseTokenList(s);for(var _=0;_ { eval("(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var n=e;Object.defineProperty(n,\"__esModule\",{value:true});n.pathToRegexp=n.tokensToRegexp=n.regexpToFunction=n.match=n.tokensToFunction=n.compile=n.parse=void 0;function lexer(e){var n=[];var r=0;while(r=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){a+=e[i++];continue}break}if(!a)throw new TypeError(\"Missing parameter name at \".concat(r));n.push({type:\"NAME\",index:r,value:a});r=i;continue}if(t===\"(\"){var c=1;var f=\"\";var i=r+1;if(e[i]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '.concat(i))}while(i-1)return true}return false};var safePattern=function(e){var n=c[c.length-1];var r=e||(n&&typeof n===\"string\"?n:\"\");if(n&&!r){throw new TypeError('Must have text between two parameters, missing text after \"'.concat(n.name,'\"'))}if(!r||isSafe(r))return\"[^\".concat(escapeString(o),\"]+?\");return\"(?:(?!\".concat(escapeString(r),\")[^\").concat(escapeString(o),\"])+?\")};while(u)?(?!\\?)/g;var t=0;var a=r.exec(e.source);while(a){n.push({name:a[1]||t++,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"});a=r.exec(e.source)}return e}function arrayToRegexp(e,n,r){var t=e.map((function(e){return pathToRegexp(e,n,r).source}));return new RegExp(\"(?:\".concat(t.join(\"|\"),\")\"),flags(r))}function stringToRegexp(e,n,r){return tokensToRegexp(parse(e,r),n,r)}function tokensToRegexp(e,n,r){if(r===void 0){r={}}var t=r.strict,a=t===void 0?false:t,i=r.start,o=i===void 0?true:i,c=r.end,f=c===void 0?true:c,u=r.encode,p=u===void 0?function(e){return e}:u,v=r.delimiter,s=v===void 0?\"/#?\":v,d=r.endsWith,g=d===void 0?\"\":d;var x=\"[\".concat(escapeString(g),\"]|$\");var h=\"[\".concat(escapeString(s),\"]\");var l=o?\"^\":\"\";for(var m=0,T=e;m-1:A===undefined;if(!a){l+=\"(?:\".concat(h,\"(?=\").concat(x,\"))?\")}if(!_){l+=\"(?=\".concat(h,\"|\").concat(x,\")\")}}return new RegExp(l,flags(r))}n.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,n,r){if(e instanceof RegExp)return regexpToRegexp(e,n);if(Array.isArray(e))return arrayToRegexp(e,n,r);return stringToRegexp(e,n,r)}n.pathToRegexp=pathToRegexp})();module.exports=e})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtdG8tcmVnZXhwL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxpRkFBaUYsU0FBUyxNQUFNLFFBQVEsc0NBQXNDLFdBQVcsRUFBRSx1R0FBdUcsa0JBQWtCLFNBQVMsUUFBUSxrQkFBa0IsV0FBVyw4QkFBOEIsUUFBUSxxQ0FBcUMsRUFBRSxTQUFTLGFBQWEsUUFBUSwyQ0FBMkMsRUFBRSxTQUFTLFNBQVMsR0FBRyxRQUFRLGlDQUFpQyxFQUFFLFNBQVMsU0FBUyxHQUFHLFFBQVEsa0NBQWtDLEVBQUUsU0FBUyxZQUFZLFNBQVMsVUFBVSxrQkFBa0Isc0JBQXNCLHNEQUFzRCxVQUFVLFNBQVMsTUFBTSxrRUFBa0UsUUFBUSw0QkFBNEIsRUFBRSxJQUFJLFNBQVMsWUFBWSxRQUFRLFNBQVMsVUFBVSxlQUFlLG1FQUFtRSxrQkFBa0IsZ0JBQWdCLGlCQUFpQixTQUFTLGVBQWUsSUFBSSxVQUFVLElBQUksT0FBTyxvQkFBb0IsSUFBSSxpQkFBaUIsdUVBQXVFLFVBQVUsNkRBQTZELDJEQUEyRCxRQUFRLCtCQUErQixFQUFFLElBQUksU0FBUyxRQUFRLGlDQUFpQyxFQUFFLFFBQVEsNEJBQTRCLEVBQUUsU0FBUyxvQkFBb0IsZUFBZSxLQUFLLGVBQWUsd0VBQXdFLFNBQVMsUUFBUSxRQUFRLFNBQVMsMkJBQTJCLGtEQUFrRCw0QkFBNEIsb0JBQW9CLDBCQUEwQiw4QkFBOEIsdUZBQXVGLDJCQUEyQixTQUFTLE1BQU0sd0RBQXdELEtBQUssVUFBVSx1QkFBdUIsZ0JBQWdCLFdBQVcsS0FBSyxXQUFXLCtCQUErQixjQUFjLDRCQUE0QixvQkFBb0IsdUNBQXVDLFVBQVUsc0dBQXNHLDBEQUEwRCw2RUFBNkUsa0JBQWtCLHlCQUF5Qix5QkFBeUIsNEJBQTRCLFNBQVMsWUFBWSxzQkFBc0IsS0FBSyxLQUFLLE1BQU0sVUFBVSxLQUFLLFFBQVEsNkZBQTZGLEVBQUUsU0FBUyxvQ0FBb0MsTUFBTSxLQUFLLFNBQVMsTUFBTSxVQUFVLEtBQUsseUJBQXlCLE1BQU0sb0JBQW9CLDZCQUE2QixnQ0FBZ0Msb0JBQW9CLHFCQUFxQixRQUFRLHdHQUF3RyxFQUFFLFNBQVMsbUJBQW1CLFNBQVMsY0FBYyxzQkFBc0Isc0NBQXNDLGtCQUFrQiwrQkFBK0IsZUFBZSxLQUFLLGVBQWUsd0NBQXdDLFNBQVMsb0NBQW9DLHlCQUF5Qix3QkFBd0Isb0RBQW9ELEdBQUcsbUJBQW1CLFNBQVMsWUFBWSxXQUFXLEtBQUssV0FBVyx3QkFBd0IsS0FBSyxTQUFTLDRCQUE0Qix5Q0FBeUMseUNBQXlDLHFCQUFxQixPQUFPLHFGQUFxRixpQkFBaUIsY0FBYyxxRUFBcUUsWUFBWSxXQUFXLEtBQUssZ0JBQWdCLHFCQUFxQixtSEFBbUgsdUJBQXVCLFNBQVMsNkNBQTZDLHFCQUFxQixxQkFBcUIsK0dBQStHLHVCQUF1QixTQUFTLGNBQWMsOEJBQThCLHNFQUFzRSxVQUFVLG9DQUFvQyxvQkFBb0IsU0FBUywwQkFBMEIsK0JBQStCLGNBQWMsaUNBQWlDLGVBQWUsS0FBSyx3Q0FBd0MsU0FBUyxHQUFHLG1CQUFtQixnQkFBZ0IsbUJBQW1CLHFCQUFxQiwwQkFBMEIsd0JBQXdCLHFDQUFxQyxhQUFhLHVDQUF1Qyx5REFBeUQsY0FBYyxHQUFHLEtBQUssc0JBQXNCLFlBQVksV0FBVyxLQUFLLFdBQVcsT0FBTywwQkFBMEIsb0NBQW9DLHlCQUF5QiwrQkFBK0Isc0JBQXNCLGtCQUFrQiw2QkFBNkIsNkJBQTZCLGVBQWUsZ0NBQWdDLFFBQVEsdUJBQXVCLFNBQVMsUUFBUSwwREFBMEQsRUFBRSxtQkFBbUIsU0FBUyw4QkFBOEIseUJBQXlCLGtDQUFrQyxHQUFHLDBEQUEwRCwrQkFBK0Isc0NBQXNDLCtCQUErQixlQUFlLEtBQUssa0lBQWtJLFNBQVMscUVBQXFFLHdDQUF3QyxzQ0FBc0MsZUFBZSxnQkFBZ0IsV0FBVyxLQUFLLFdBQVcsd0JBQXdCLHNCQUFzQixLQUFLLGdDQUFnQyxnQ0FBZ0MsY0FBYyxlQUFlLFNBQVMsdUNBQXVDLDhCQUE4Qiw4SEFBOEgsS0FBSywrRUFBK0UsS0FBSyx1Q0FBdUMsdUZBQXVGLGlEQUFpRCxLQUFLLHNEQUFzRCxNQUFNLDBCQUEwQix1Q0FBdUMsS0FBSyxvQkFBb0Isb0VBQW9FLE9BQU8seUNBQXlDLE9BQU8sc0NBQXNDLDhCQUE4QixnQ0FBZ0MsNkJBQTZCLGtEQUFrRCxnREFBZ0QsNkJBQTZCLDRCQUE0QixJQUFJLGlCQUFpQiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcY29tcGlsZWRcXHBhdGgtdG8tcmVnZXhwXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjtpZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIGU9e307KCgpPT57dmFyIG49ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO24ucGF0aFRvUmVnZXhwPW4udG9rZW5zVG9SZWdleHA9bi5yZWdleHBUb0Z1bmN0aW9uPW4ubWF0Y2g9bi50b2tlbnNUb0Z1bmN0aW9uPW4uY29tcGlsZT1uLnBhcnNlPXZvaWQgMDtmdW5jdGlvbiBsZXhlcihlKXt2YXIgbj1bXTt2YXIgcj0wO3doaWxlKHI8ZS5sZW5ndGgpe3ZhciB0PWVbcl07aWYodD09PVwiKlwifHx0PT09XCIrXCJ8fHQ9PT1cIj9cIil7bi5wdXNoKHt0eXBlOlwiTU9ESUZJRVJcIixpbmRleDpyLHZhbHVlOmVbcisrXX0pO2NvbnRpbnVlfWlmKHQ9PT1cIlxcXFxcIil7bi5wdXNoKHt0eXBlOlwiRVNDQVBFRF9DSEFSXCIsaW5kZXg6cisrLHZhbHVlOmVbcisrXX0pO2NvbnRpbnVlfWlmKHQ9PT1cIntcIil7bi5wdXNoKHt0eXBlOlwiT1BFTlwiLGluZGV4OnIsdmFsdWU6ZVtyKytdfSk7Y29udGludWV9aWYodD09PVwifVwiKXtuLnB1c2goe3R5cGU6XCJDTE9TRVwiLGluZGV4OnIsdmFsdWU6ZVtyKytdfSk7Y29udGludWV9aWYodD09PVwiOlwiKXt2YXIgYT1cIlwiO3ZhciBpPXIrMTt3aGlsZShpPGUubGVuZ3RoKXt2YXIgbz1lLmNoYXJDb2RlQXQoaSk7aWYobz49NDgmJm88PTU3fHxvPj02NSYmbzw9OTB8fG8+PTk3JiZvPD0xMjJ8fG89PT05NSl7YSs9ZVtpKytdO2NvbnRpbnVlfWJyZWFrfWlmKCFhKXRocm93IG5ldyBUeXBlRXJyb3IoXCJNaXNzaW5nIHBhcmFtZXRlciBuYW1lIGF0IFwiLmNvbmNhdChyKSk7bi5wdXNoKHt0eXBlOlwiTkFNRVwiLGluZGV4OnIsdmFsdWU6YX0pO3I9aTtjb250aW51ZX1pZih0PT09XCIoXCIpe3ZhciBjPTE7dmFyIGY9XCJcIjt2YXIgaT1yKzE7aWYoZVtpXT09PVwiP1wiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJuIGNhbm5vdCBzdGFydCB3aXRoIFwiP1wiIGF0ICcuY29uY2F0KGkpKX13aGlsZShpPGUubGVuZ3RoKXtpZihlW2ldPT09XCJcXFxcXCIpe2YrPWVbaSsrXStlW2krK107Y29udGludWV9aWYoZVtpXT09PVwiKVwiKXtjLS07aWYoYz09PTApe2krKzticmVha319ZWxzZSBpZihlW2ldPT09XCIoXCIpe2MrKztpZihlW2krMV0hPT1cIj9cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhcHR1cmluZyBncm91cHMgYXJlIG5vdCBhbGxvd2VkIGF0IFwiLmNvbmNhdChpKSl9fWYrPWVbaSsrXX1pZihjKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmJhbGFuY2VkIHBhdHRlcm4gYXQgXCIuY29uY2F0KHIpKTtpZighZil0aHJvdyBuZXcgVHlwZUVycm9yKFwiTWlzc2luZyBwYXR0ZXJuIGF0IFwiLmNvbmNhdChyKSk7bi5wdXNoKHt0eXBlOlwiUEFUVEVSTlwiLGluZGV4OnIsdmFsdWU6Zn0pO3I9aTtjb250aW51ZX1uLnB1c2goe3R5cGU6XCJDSEFSXCIsaW5kZXg6cix2YWx1ZTplW3IrK119KX1uLnB1c2goe3R5cGU6XCJFTkRcIixpbmRleDpyLHZhbHVlOlwiXCJ9KTtyZXR1cm4gbn1mdW5jdGlvbiBwYXJzZShlLG4pe2lmKG49PT12b2lkIDApe249e319dmFyIHI9bGV4ZXIoZSk7dmFyIHQ9bi5wcmVmaXhlcyxhPXQ9PT12b2lkIDA/XCIuL1wiOnQsaT1uLmRlbGltaXRlcixvPWk9PT12b2lkIDA/XCIvIz9cIjppO3ZhciBjPVtdO3ZhciBmPTA7dmFyIHU9MDt2YXIgcD1cIlwiO3ZhciB0cnlDb25zdW1lPWZ1bmN0aW9uKGUpe2lmKHU8ci5sZW5ndGgmJnJbdV0udHlwZT09PWUpcmV0dXJuIHJbdSsrXS52YWx1ZX07dmFyIG11c3RDb25zdW1lPWZ1bmN0aW9uKGUpe3ZhciBuPXRyeUNvbnN1bWUoZSk7aWYobiE9PXVuZGVmaW5lZClyZXR1cm4gbjt2YXIgdD1yW3VdLGE9dC50eXBlLGk9dC5pbmRleDt0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5leHBlY3RlZCBcIi5jb25jYXQoYSxcIiBhdCBcIikuY29uY2F0KGksXCIsIGV4cGVjdGVkIFwiKS5jb25jYXQoZSkpfTt2YXIgY29uc3VtZVRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1cIlwiO3ZhciBuO3doaWxlKG49dHJ5Q29uc3VtZShcIkNIQVJcIil8fHRyeUNvbnN1bWUoXCJFU0NBUEVEX0NIQVJcIikpe2UrPW59cmV0dXJuIGV9O3ZhciBpc1NhZmU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTAscj1vO248ci5sZW5ndGg7bisrKXt2YXIgdD1yW25dO2lmKGUuaW5kZXhPZih0KT4tMSlyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O3ZhciBzYWZlUGF0dGVybj1mdW5jdGlvbihlKXt2YXIgbj1jW2MubGVuZ3RoLTFdO3ZhciByPWV8fChuJiZ0eXBlb2Ygbj09PVwic3RyaW5nXCI/bjpcIlwiKTtpZihuJiYhcil7dGhyb3cgbmV3IFR5cGVFcnJvcignTXVzdCBoYXZlIHRleHQgYmV0d2VlbiB0d28gcGFyYW1ldGVycywgbWlzc2luZyB0ZXh0IGFmdGVyIFwiJy5jb25jYXQobi5uYW1lLCdcIicpKX1pZighcnx8aXNTYWZlKHIpKXJldHVyblwiW15cIi5jb25jYXQoZXNjYXBlU3RyaW5nKG8pLFwiXSs/XCIpO3JldHVyblwiKD86KD8hXCIuY29uY2F0KGVzY2FwZVN0cmluZyhyKSxcIilbXlwiKS5jb25jYXQoZXNjYXBlU3RyaW5nKG8pLFwiXSkrP1wiKX07d2hpbGUodTxyLmxlbmd0aCl7dmFyIHY9dHJ5Q29uc3VtZShcIkNIQVJcIik7dmFyIHM9dHJ5Q29uc3VtZShcIk5BTUVcIik7dmFyIGQ9dHJ5Q29uc3VtZShcIlBBVFRFUk5cIik7aWYoc3x8ZCl7dmFyIGc9dnx8XCJcIjtpZihhLmluZGV4T2YoZyk9PT0tMSl7cCs9ZztnPVwiXCJ9aWYocCl7Yy5wdXNoKHApO3A9XCJcIn1jLnB1c2goe25hbWU6c3x8ZisrLHByZWZpeDpnLHN1ZmZpeDpcIlwiLHBhdHRlcm46ZHx8c2FmZVBhdHRlcm4oZyksbW9kaWZpZXI6dHJ5Q29uc3VtZShcIk1PRElGSUVSXCIpfHxcIlwifSk7Y29udGludWV9dmFyIHg9dnx8dHJ5Q29uc3VtZShcIkVTQ0FQRURfQ0hBUlwiKTtpZih4KXtwKz14O2NvbnRpbnVlfWlmKHApe2MucHVzaChwKTtwPVwiXCJ9dmFyIGg9dHJ5Q29uc3VtZShcIk9QRU5cIik7aWYoaCl7dmFyIGc9Y29uc3VtZVRleHQoKTt2YXIgbD10cnlDb25zdW1lKFwiTkFNRVwiKXx8XCJcIjt2YXIgbT10cnlDb25zdW1lKFwiUEFUVEVSTlwiKXx8XCJcIjt2YXIgVD1jb25zdW1lVGV4dCgpO211c3RDb25zdW1lKFwiQ0xPU0VcIik7Yy5wdXNoKHtuYW1lOmx8fChtP2YrKzpcIlwiKSxwYXR0ZXJuOmwmJiFtP3NhZmVQYXR0ZXJuKGcpOm0scHJlZml4Omcsc3VmZml4OlQsbW9kaWZpZXI6dHJ5Q29uc3VtZShcIk1PRElGSUVSXCIpfHxcIlwifSk7Y29udGludWV9bXVzdENvbnN1bWUoXCJFTkRcIil9cmV0dXJuIGN9bi5wYXJzZT1wYXJzZTtmdW5jdGlvbiBjb21waWxlKGUsbil7cmV0dXJuIHRva2Vuc1RvRnVuY3Rpb24ocGFyc2UoZSxuKSxuKX1uLmNvbXBpbGU9Y29tcGlsZTtmdW5jdGlvbiB0b2tlbnNUb0Z1bmN0aW9uKGUsbil7aWYobj09PXZvaWQgMCl7bj17fX12YXIgcj1mbGFncyhuKTt2YXIgdD1uLmVuY29kZSxhPXQ9PT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIGV9OnQsaT1uLnZhbGlkYXRlLG89aT09PXZvaWQgMD90cnVlOmk7dmFyIGM9ZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlPT09XCJvYmplY3RcIil7cmV0dXJuIG5ldyBSZWdFeHAoXCJeKD86XCIuY29uY2F0KGUucGF0dGVybixcIikkXCIpLHIpfX0pKTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9XCJcIjtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIGk9ZVt0XTtpZih0eXBlb2YgaT09PVwic3RyaW5nXCIpe3IrPWk7Y29udGludWV9dmFyIGY9bj9uW2kubmFtZV06dW5kZWZpbmVkO3ZhciB1PWkubW9kaWZpZXI9PT1cIj9cInx8aS5tb2RpZmllcj09PVwiKlwiO3ZhciBwPWkubW9kaWZpZXI9PT1cIipcInx8aS5tb2RpZmllcj09PVwiK1wiO2lmKEFycmF5LmlzQXJyYXkoZikpe2lmKCFwKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicuY29uY2F0KGkubmFtZSwnXCIgdG8gbm90IHJlcGVhdCwgYnV0IGdvdCBhbiBhcnJheScpKX1pZihmLmxlbmd0aD09PTApe2lmKHUpY29udGludWU7dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInLmNvbmNhdChpLm5hbWUsJ1wiIHRvIG5vdCBiZSBlbXB0eScpKX1mb3IodmFyIHY9MDt2PGYubGVuZ3RoO3YrKyl7dmFyIHM9YShmW3ZdLGkpO2lmKG8mJiFjW3RdLnRlc3Qocykpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsbCBcIicuY29uY2F0KGkubmFtZSwnXCIgdG8gbWF0Y2ggXCInKS5jb25jYXQoaS5wYXR0ZXJuLCdcIiwgYnV0IGdvdCBcIicpLmNvbmNhdChzLCdcIicpKX1yKz1pLnByZWZpeCtzK2kuc3VmZml4fWNvbnRpbnVlfWlmKHR5cGVvZiBmPT09XCJzdHJpbmdcInx8dHlwZW9mIGY9PT1cIm51bWJlclwiKXt2YXIgcz1hKFN0cmluZyhmKSxpKTtpZihvJiYhY1t0XS50ZXN0KHMpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicuY29uY2F0KGkubmFtZSwnXCIgdG8gbWF0Y2ggXCInKS5jb25jYXQoaS5wYXR0ZXJuLCdcIiwgYnV0IGdvdCBcIicpLmNvbmNhdChzLCdcIicpKX1yKz1pLnByZWZpeCtzK2kuc3VmZml4O2NvbnRpbnVlfWlmKHUpY29udGludWU7dmFyIGQ9cD9cImFuIGFycmF5XCI6XCJhIHN0cmluZ1wiO3Rocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJy5jb25jYXQoaS5uYW1lLCdcIiB0byBiZSAnKS5jb25jYXQoZCkpfXJldHVybiByfX1uLnRva2Vuc1RvRnVuY3Rpb249dG9rZW5zVG9GdW5jdGlvbjtmdW5jdGlvbiBtYXRjaChlLG4pe3ZhciByPVtdO3ZhciB0PXBhdGhUb1JlZ2V4cChlLHIsbik7cmV0dXJuIHJlZ2V4cFRvRnVuY3Rpb24odCxyLG4pfW4ubWF0Y2g9bWF0Y2g7ZnVuY3Rpb24gcmVnZXhwVG9GdW5jdGlvbihlLG4scil7aWYocj09PXZvaWQgMCl7cj17fX12YXIgdD1yLmRlY29kZSxhPXQ9PT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIGV9OnQ7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciB0PWUuZXhlYyhyKTtpZighdClyZXR1cm4gZmFsc2U7dmFyIGk9dFswXSxvPXQuaW5kZXg7dmFyIGM9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgX2xvb3BfMT1mdW5jdGlvbihlKXtpZih0W2VdPT09dW5kZWZpbmVkKXJldHVyblwiY29udGludWVcIjt2YXIgcj1uW2UtMV07aWYoci5tb2RpZmllcj09PVwiKlwifHxyLm1vZGlmaWVyPT09XCIrXCIpe2Nbci5uYW1lXT10W2VdLnNwbGl0KHIucHJlZml4K3Iuc3VmZml4KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUscil9KSl9ZWxzZXtjW3IubmFtZV09YSh0W2VdLHIpfX07Zm9yKHZhciBmPTE7Zjx0Lmxlbmd0aDtmKyspe19sb29wXzEoZil9cmV0dXJue3BhdGg6aSxpbmRleDpvLHBhcmFtczpjfX19bi5yZWdleHBUb0Z1bmN0aW9uPXJlZ2V4cFRvRnVuY3Rpb247ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18L1xcXFxdKS9nLFwiXFxcXCQxXCIpfWZ1bmN0aW9uIGZsYWdzKGUpe3JldHVybiBlJiZlLnNlbnNpdGl2ZT9cIlwiOlwiaVwifWZ1bmN0aW9uIHJlZ2V4cFRvUmVnZXhwKGUsbil7aWYoIW4pcmV0dXJuIGU7dmFyIHI9L1xcKCg/OlxcPzwoLio/KT4pPyg/IVxcPykvZzt2YXIgdD0wO3ZhciBhPXIuZXhlYyhlLnNvdXJjZSk7d2hpbGUoYSl7bi5wdXNoKHtuYW1lOmFbMV18fHQrKyxwcmVmaXg6XCJcIixzdWZmaXg6XCJcIixtb2RpZmllcjpcIlwiLHBhdHRlcm46XCJcIn0pO2E9ci5leGVjKGUuc291cmNlKX1yZXR1cm4gZX1mdW5jdGlvbiBhcnJheVRvUmVnZXhwKGUsbixyKXt2YXIgdD1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhdGhUb1JlZ2V4cChlLG4scikuc291cmNlfSkpO3JldHVybiBuZXcgUmVnRXhwKFwiKD86XCIuY29uY2F0KHQuam9pbihcInxcIiksXCIpXCIpLGZsYWdzKHIpKX1mdW5jdGlvbiBzdHJpbmdUb1JlZ2V4cChlLG4scil7cmV0dXJuIHRva2Vuc1RvUmVnZXhwKHBhcnNlKGUsciksbixyKX1mdW5jdGlvbiB0b2tlbnNUb1JlZ2V4cChlLG4scil7aWYocj09PXZvaWQgMCl7cj17fX12YXIgdD1yLnN0cmljdCxhPXQ9PT12b2lkIDA/ZmFsc2U6dCxpPXIuc3RhcnQsbz1pPT09dm9pZCAwP3RydWU6aSxjPXIuZW5kLGY9Yz09PXZvaWQgMD90cnVlOmMsdT1yLmVuY29kZSxwPXU9PT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIGV9OnUsdj1yLmRlbGltaXRlcixzPXY9PT12b2lkIDA/XCIvIz9cIjp2LGQ9ci5lbmRzV2l0aCxnPWQ9PT12b2lkIDA/XCJcIjpkO3ZhciB4PVwiW1wiLmNvbmNhdChlc2NhcGVTdHJpbmcoZyksXCJdfCRcIik7dmFyIGg9XCJbXCIuY29uY2F0KGVzY2FwZVN0cmluZyhzKSxcIl1cIik7dmFyIGw9bz9cIl5cIjpcIlwiO2Zvcih2YXIgbT0wLFQ9ZTttPFQubGVuZ3RoO20rKyl7dmFyIEU9VFttXTtpZih0eXBlb2YgRT09PVwic3RyaW5nXCIpe2wrPWVzY2FwZVN0cmluZyhwKEUpKX1lbHNle3ZhciB3PWVzY2FwZVN0cmluZyhwKEUucHJlZml4KSk7dmFyIHk9ZXNjYXBlU3RyaW5nKHAoRS5zdWZmaXgpKTtpZihFLnBhdHRlcm4pe2lmKG4pbi5wdXNoKEUpO2lmKHd8fHkpe2lmKEUubW9kaWZpZXI9PT1cIitcInx8RS5tb2RpZmllcj09PVwiKlwiKXt2YXIgUj1FLm1vZGlmaWVyPT09XCIqXCI/XCI/XCI6XCJcIjtsKz1cIig/OlwiLmNvbmNhdCh3LFwiKCg/OlwiKS5jb25jYXQoRS5wYXR0ZXJuLFwiKSg/OlwiKS5jb25jYXQoeSkuY29uY2F0KHcsXCIoPzpcIikuY29uY2F0KEUucGF0dGVybixcIikpKilcIikuY29uY2F0KHksXCIpXCIpLmNvbmNhdChSKX1lbHNle2wrPVwiKD86XCIuY29uY2F0KHcsXCIoXCIpLmNvbmNhdChFLnBhdHRlcm4sXCIpXCIpLmNvbmNhdCh5LFwiKVwiKS5jb25jYXQoRS5tb2RpZmllcil9fWVsc2V7aWYoRS5tb2RpZmllcj09PVwiK1wifHxFLm1vZGlmaWVyPT09XCIqXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ0NhbiBub3QgcmVwZWF0IFwiJy5jb25jYXQoRS5uYW1lLCdcIiB3aXRob3V0IGEgcHJlZml4IGFuZCBzdWZmaXgnKSl9bCs9XCIoXCIuY29uY2F0KEUucGF0dGVybixcIilcIikuY29uY2F0KEUubW9kaWZpZXIpfX1lbHNle2wrPVwiKD86XCIuY29uY2F0KHcpLmNvbmNhdCh5LFwiKVwiKS5jb25jYXQoRS5tb2RpZmllcil9fX1pZihmKXtpZighYSlsKz1cIlwiLmNvbmNhdChoLFwiP1wiKTtsKz0hci5lbmRzV2l0aD9cIiRcIjpcIig/PVwiLmNvbmNhdCh4LFwiKVwiKX1lbHNle3ZhciBBPWVbZS5sZW5ndGgtMV07dmFyIF89dHlwZW9mIEE9PT1cInN0cmluZ1wiP2guaW5kZXhPZihBW0EubGVuZ3RoLTFdKT4tMTpBPT09dW5kZWZpbmVkO2lmKCFhKXtsKz1cIig/OlwiLmNvbmNhdChoLFwiKD89XCIpLmNvbmNhdCh4LFwiKSk/XCIpfWlmKCFfKXtsKz1cIig/PVwiLmNvbmNhdChoLFwifFwiKS5jb25jYXQoeCxcIilcIil9fXJldHVybiBuZXcgUmVnRXhwKGwsZmxhZ3MocikpfW4udG9rZW5zVG9SZWdleHA9dG9rZW5zVG9SZWdleHA7ZnVuY3Rpb24gcGF0aFRvUmVnZXhwKGUsbixyKXtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiByZWdleHBUb1JlZ2V4cChlLG4pO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGFycmF5VG9SZWdleHAoZSxuLHIpO3JldHVybiBzdHJpbmdUb1JlZ2V4cChlLG4scil9bi5wYXRoVG9SZWdleHA9cGF0aFRvUmVnZXhwfSkoKTttb2R1bGUuZXhwb3J0cz1lfSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js": /*!**************************************************************************************************************************!*\ !*** ./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js ***! \**************************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\n * @license React\n * react-server-dom-webpack-client.node.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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 true && function() {\n function resolveClientReference(bundlerConfig, metadata) {\n if (bundlerConfig) {\n var moduleExports = bundlerConfig[metadata[0]];\n if (bundlerConfig = moduleExports && moduleExports[metadata[2]]) moduleExports = bundlerConfig.name;\n else {\n bundlerConfig = moduleExports && moduleExports[\"*\"];\n if (!bundlerConfig) throw Error('Could not find the module \"' + metadata[0] + '\" in the React Server Consumer Manifest. This is probably a bug in the React Server Components bundler.');\n moduleExports = metadata[2];\n }\n return 4 === metadata.length ? [\n bundlerConfig.id,\n bundlerConfig.chunks,\n moduleExports,\n 1\n ] : [\n bundlerConfig.id,\n bundlerConfig.chunks,\n moduleExports\n ];\n }\n return metadata;\n }\n function resolveServerReference(bundlerConfig, id) {\n var name = \"\", resolvedModuleData = bundlerConfig[id];\n if (resolvedModuleData) name = resolvedModuleData.name;\n else {\n var idx = id.lastIndexOf(\"#\");\n -1 !== idx && (name = id.slice(idx + 1), resolvedModuleData = bundlerConfig[id.slice(0, idx)]);\n if (!resolvedModuleData) throw Error('Could not find the module \"' + id + '\" in the React Server Manifest. This is probably a bug in the React Server Components bundler.');\n }\n return resolvedModuleData.async ? [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name,\n 1\n ] : [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name\n ];\n }\n function requireAsyncModule(id) {\n var promise = globalThis.__next_require__(id);\n if (\"function\" !== typeof promise.then || \"fulfilled\" === promise.status) return null;\n promise.then(function(value) {\n promise.status = \"fulfilled\";\n promise.value = value;\n }, function(reason) {\n promise.status = \"rejected\";\n promise.reason = reason;\n });\n return promise;\n }\n function ignoreReject() {}\n function preloadModule(metadata) {\n for(var chunks = metadata[1], promises = [], i = 0; i < chunks.length;){\n var chunkId = chunks[i++];\n chunks[i++];\n var entry = chunkCache.get(chunkId);\n if (void 0 === entry) {\n entry = __webpack_require__.e(chunkId);\n promises.push(entry);\n var resolve = chunkCache.set.bind(chunkCache, chunkId, null);\n entry.then(resolve, ignoreReject);\n chunkCache.set(chunkId, entry);\n } else null !== entry && promises.push(entry);\n }\n return 4 === metadata.length ? 0 === promises.length ? requireAsyncModule(metadata[0]) : Promise.all(promises).then(function() {\n return requireAsyncModule(metadata[0]);\n }) : 0 < promises.length ? Promise.all(promises) : null;\n }\n function requireModule(metadata) {\n var moduleExports = globalThis.__next_require__(metadata[0]);\n if (4 === metadata.length && \"function\" === typeof moduleExports.then) if (\"fulfilled\" === moduleExports.status) moduleExports = moduleExports.value;\n else throw moduleExports.reason;\n if (\"*\" === metadata[2]) return moduleExports;\n if (\"\" === metadata[2]) return moduleExports.__esModule ? moduleExports.default : moduleExports;\n if (hasOwnProperty.call(moduleExports, metadata[2])) return moduleExports[metadata[2]];\n }\n function prepareDestinationWithChunks(moduleLoading, chunks, nonce$jscomp$0) {\n if (null !== moduleLoading) for(var i = 1; i < chunks.length; i += 2){\n var nonce = nonce$jscomp$0, JSCompiler_temp_const = ReactDOMSharedInternals.d, JSCompiler_temp_const$jscomp$0 = JSCompiler_temp_const.X, JSCompiler_temp_const$jscomp$1 = moduleLoading.prefix + chunks[i];\n var JSCompiler_inline_result = moduleLoading.crossOrigin;\n JSCompiler_inline_result = \"string\" === typeof JSCompiler_inline_result ? \"use-credentials\" === JSCompiler_inline_result ? JSCompiler_inline_result : \"\" : void 0;\n JSCompiler_temp_const$jscomp$0.call(JSCompiler_temp_const, JSCompiler_temp_const$jscomp$1, {\n crossOrigin: JSCompiler_inline_result,\n nonce: nonce\n });\n }\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function isObjectPrototype(object) {\n if (!object) return !1;\n var ObjectPrototype = Object.prototype;\n if (object === ObjectPrototype) return !0;\n if (getPrototypeOf(object)) return !1;\n object = Object.getOwnPropertyNames(object);\n for(var i = 0; i < object.length; i++)if (!(object[i] in ObjectPrototype)) return !1;\n return !0;\n }\n function isSimpleObject(object) {\n if (!isObjectPrototype(getPrototypeOf(object))) return !1;\n for(var names = Object.getOwnPropertyNames(object), i = 0; i < names.length; i++){\n var descriptor = Object.getOwnPropertyDescriptor(object, names[i]);\n if (!descriptor || !descriptor.enumerable && (\"key\" !== names[i] && \"ref\" !== names[i] || \"function\" !== typeof descriptor.get)) return !1;\n }\n return !0;\n }\n function objectName(object) {\n object = Object.prototype.toString.call(object);\n return object.slice(8, object.length - 1);\n }\n function describeKeyForErrorMessage(key) {\n var encodedKey = JSON.stringify(key);\n return '\"' + key + '\"' === encodedKey ? key : encodedKey;\n }\n function describeValueForErrorMessage(value) {\n switch(typeof value){\n case \"string\":\n return JSON.stringify(10 >= value.length ? value : value.slice(0, 10) + \"...\");\n case \"object\":\n if (isArrayImpl(value)) return \"[...]\";\n if (null !== value && value.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n value = objectName(value);\n return \"Object\" === value ? \"{...}\" : value;\n case \"function\":\n return value.$$typeof === CLIENT_REFERENCE_TAG ? \"client\" : (value = value.displayName || value.name) ? \"function \" + value : \"function\";\n default:\n return String(value);\n }\n }\n function describeElementType(type) {\n if (\"string\" === typeof type) return type;\n switch(type){\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type) switch(type.$$typeof){\n case REACT_FORWARD_REF_TYPE:\n return describeElementType(type.render);\n case REACT_MEMO_TYPE:\n return describeElementType(type.type);\n case REACT_LAZY_TYPE:\n var payload = type._payload;\n type = type._init;\n try {\n return describeElementType(type(payload));\n } catch (x) {}\n }\n return \"\";\n }\n function describeObjectForErrorMessage(objectOrArray, expandedName) {\n var objKind = objectName(objectOrArray);\n if (\"Object\" !== objKind && \"Array\" !== objKind) return objKind;\n var start = -1, length = 0;\n if (isArrayImpl(objectOrArray)) if (jsxChildrenParents.has(objectOrArray)) {\n var type = jsxChildrenParents.get(objectOrArray);\n objKind = \"<\" + describeElementType(type) + \">\";\n for(var i = 0; i < objectOrArray.length; i++){\n var value = objectOrArray[i];\n value = \"string\" === typeof value ? value : \"object\" === typeof value && null !== value ? \"{\" + describeObjectForErrorMessage(value) + \"}\" : \"{\" + describeValueForErrorMessage(value) + \"}\";\n \"\" + i === expandedName ? (start = objKind.length, length = value.length, objKind += value) : objKind = 15 > value.length && 40 > objKind.length + value.length ? objKind + value : objKind + \"{...}\";\n }\n objKind += \"\";\n } else {\n objKind = \"[\";\n for(type = 0; type < objectOrArray.length; type++)0 < type && (objKind += \", \"), i = objectOrArray[type], i = \"object\" === typeof i && null !== i ? describeObjectForErrorMessage(i) : describeValueForErrorMessage(i), \"\" + type === expandedName ? (start = objKind.length, length = i.length, objKind += i) : objKind = 10 > i.length && 40 > objKind.length + i.length ? objKind + i : objKind + \"...\";\n objKind += \"]\";\n }\n else if (objectOrArray.$$typeof === REACT_ELEMENT_TYPE) objKind = \"<\" + describeElementType(objectOrArray.type) + \"/>\";\n else {\n if (objectOrArray.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n if (jsxPropsParents.has(objectOrArray)) {\n objKind = jsxPropsParents.get(objectOrArray);\n objKind = \"<\" + (describeElementType(objKind) || \"...\");\n type = Object.keys(objectOrArray);\n for(i = 0; i < type.length; i++){\n objKind += \" \";\n value = type[i];\n objKind += describeKeyForErrorMessage(value) + \"=\";\n var _value2 = objectOrArray[value];\n var _substr2 = value === expandedName && \"object\" === typeof _value2 && null !== _value2 ? describeObjectForErrorMessage(_value2) : describeValueForErrorMessage(_value2);\n \"string\" !== typeof _value2 && (_substr2 = \"{\" + _substr2 + \"}\");\n value === expandedName ? (start = objKind.length, length = _substr2.length, objKind += _substr2) : objKind = 10 > _substr2.length && 40 > objKind.length + _substr2.length ? objKind + _substr2 : objKind + \"...\";\n }\n objKind += \">\";\n } else {\n objKind = \"{\";\n type = Object.keys(objectOrArray);\n for(i = 0; i < type.length; i++)0 < i && (objKind += \", \"), value = type[i], objKind += describeKeyForErrorMessage(value) + \": \", _value2 = objectOrArray[value], _value2 = \"object\" === typeof _value2 && null !== _value2 ? describeObjectForErrorMessage(_value2) : describeValueForErrorMessage(_value2), value === expandedName ? (start = objKind.length, length = _value2.length, objKind += _value2) : objKind = 10 > _value2.length && 40 > objKind.length + _value2.length ? objKind + _value2 : objKind + \"...\";\n objKind += \"}\";\n }\n }\n return void 0 === expandedName ? objKind : -1 < start && 0 < length ? (objectOrArray = \" \".repeat(start) + \"^\".repeat(length), \"\\n \" + objKind + \"\\n \" + objectOrArray) : \"\\n \" + objKind;\n }\n function serializeNumber(number) {\n return Number.isFinite(number) ? 0 === number && -Infinity === 1 / number ? \"$-0\" : number : Infinity === number ? \"$Infinity\" : -Infinity === number ? \"$-Infinity\" : \"$NaN\";\n }\n function processReply(root, formFieldPrefix, temporaryReferences, resolve, reject) {\n function serializeTypedArray(tag, typedArray) {\n typedArray = new Blob([\n new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength)\n ]);\n var blobId = nextPartId++;\n null === formData && (formData = new FormData());\n formData.append(formFieldPrefix + blobId, typedArray);\n return \"$\" + tag + blobId.toString(16);\n }\n function serializeBinaryReader(reader) {\n function progress(entry) {\n entry.done ? (entry = nextPartId++, data.append(formFieldPrefix + entry, new Blob(buffer)), data.append(formFieldPrefix + streamId, '\"$o' + entry.toString(16) + '\"'), data.append(formFieldPrefix + streamId, \"C\"), pendingParts--, 0 === pendingParts && resolve(data)) : (buffer.push(entry.value), reader.read(new Uint8Array(1024)).then(progress, reject));\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++, buffer = [];\n reader.read(new Uint8Array(1024)).then(progress, reject);\n return \"$r\" + streamId.toString(16);\n }\n function serializeReader(reader) {\n function progress(entry) {\n if (entry.done) data.append(formFieldPrefix + streamId, \"C\"), pendingParts--, 0 === pendingParts && resolve(data);\n else try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, partJSON);\n reader.read().then(progress, reject);\n } catch (x) {\n reject(x);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n reader.read().then(progress, reject);\n return \"$R\" + streamId.toString(16);\n }\n function serializeReadableStream(stream) {\n try {\n var binaryReader = stream.getReader({\n mode: \"byob\"\n });\n } catch (x) {\n return serializeReader(stream.getReader());\n }\n return serializeBinaryReader(binaryReader);\n }\n function serializeAsyncIterable(iterable, iterator) {\n function progress(entry) {\n if (entry.done) {\n if (void 0 === entry.value) data.append(formFieldPrefix + streamId, \"C\");\n else try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, \"C\" + partJSON);\n } catch (x) {\n reject(x);\n return;\n }\n pendingParts--;\n 0 === pendingParts && resolve(data);\n } else try {\n var _partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, _partJSON);\n iterator.next().then(progress, reject);\n } catch (x$0) {\n reject(x$0);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n iterable = iterable === iterator;\n iterator.next().then(progress, reject);\n return \"$\" + (iterable ? \"x\" : \"X\") + streamId.toString(16);\n }\n function resolveToJSON(key, value) {\n \"__proto__\" === key && console.error(\"Expected not to serialize an object with own property `__proto__`. When parsed this property will be omitted.%s\", describeObjectForErrorMessage(this, key));\n var originalValue = this[key];\n \"object\" !== typeof originalValue || originalValue === value || originalValue instanceof Date || (\"Object\" !== objectName(originalValue) ? console.error(\"Only plain objects can be passed to Server Functions from the Client. %s objects are not supported.%s\", objectName(originalValue), describeObjectForErrorMessage(this, key)) : console.error(\"Only plain objects can be passed to Server Functions from the Client. Objects with toJSON methods are not supported. Convert it manually to a simple value before passing it to props.%s\", describeObjectForErrorMessage(this, key)));\n if (null === value) return null;\n if (\"object\" === typeof value) {\n switch(value.$$typeof){\n case REACT_ELEMENT_TYPE:\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\")) {\n var parentReference = writtenObjects.get(this);\n if (void 0 !== parentReference) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n }\n throw Error(\"React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options.\" + describeObjectForErrorMessage(this, key));\n case REACT_LAZY_TYPE:\n originalValue = value._payload;\n var init = value._init;\n null === formData && (formData = new FormData());\n pendingParts++;\n try {\n parentReference = init(originalValue);\n var lazyId = nextPartId++, partJSON = serializeModel(parentReference, lazyId);\n formData.append(formFieldPrefix + lazyId, partJSON);\n return \"$\" + lazyId.toString(16);\n } catch (x) {\n if (\"object\" === typeof x && null !== x && \"function\" === typeof x.then) {\n pendingParts++;\n var _lazyId = nextPartId++;\n parentReference = function() {\n try {\n var _partJSON2 = serializeModel(value, _lazyId), _data = formData;\n _data.append(formFieldPrefix + _lazyId, _partJSON2);\n pendingParts--;\n 0 === pendingParts && resolve(_data);\n } catch (reason) {\n reject(reason);\n }\n };\n x.then(parentReference, parentReference);\n return \"$\" + _lazyId.toString(16);\n }\n reject(x);\n return null;\n } finally{\n pendingParts--;\n }\n }\n parentReference = writtenObjects.get(value);\n if (\"function\" === typeof value.then) {\n if (void 0 !== parentReference) if (modelRoot === value) modelRoot = null;\n else return parentReference;\n null === formData && (formData = new FormData());\n pendingParts++;\n var promiseId = nextPartId++;\n key = \"$@\" + promiseId.toString(16);\n writtenObjects.set(value, key);\n value.then(function(partValue) {\n try {\n var previousReference = writtenObjects.get(partValue);\n var _partJSON3 = void 0 !== previousReference ? JSON.stringify(previousReference) : serializeModel(partValue, promiseId);\n partValue = formData;\n partValue.append(formFieldPrefix + promiseId, _partJSON3);\n pendingParts--;\n 0 === pendingParts && resolve(partValue);\n } catch (reason) {\n reject(reason);\n }\n }, reject);\n return key;\n }\n if (void 0 !== parentReference) if (modelRoot === value) modelRoot = null;\n else return parentReference;\n else -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference && (parentReference = parentReference + \":\" + key, writtenObjects.set(value, parentReference), void 0 !== temporaryReferences && temporaryReferences.set(parentReference, value)));\n if (isArrayImpl(value)) return value;\n if (value instanceof FormData) {\n null === formData && (formData = new FormData());\n var _data3 = formData;\n key = nextPartId++;\n var prefix = formFieldPrefix + key + \"_\";\n value.forEach(function(originalValue, originalKey) {\n _data3.append(prefix + originalKey, originalValue);\n });\n return \"$K\" + key.toString(16);\n }\n if (value instanceof Map) return key = nextPartId++, parentReference = serializeModel(Array.from(value), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$Q\" + key.toString(16);\n if (value instanceof Set) return key = nextPartId++, parentReference = serializeModel(Array.from(value), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$W\" + key.toString(16);\n if (value instanceof ArrayBuffer) return key = new Blob([\n value\n ]), parentReference = nextPartId++, null === formData && (formData = new FormData()), formData.append(formFieldPrefix + parentReference, key), \"$A\" + parentReference.toString(16);\n if (value instanceof Int8Array) return serializeTypedArray(\"O\", value);\n if (value instanceof Uint8Array) return serializeTypedArray(\"o\", value);\n if (value instanceof Uint8ClampedArray) return serializeTypedArray(\"U\", value);\n if (value instanceof Int16Array) return serializeTypedArray(\"S\", value);\n if (value instanceof Uint16Array) return serializeTypedArray(\"s\", value);\n if (value instanceof Int32Array) return serializeTypedArray(\"L\", value);\n if (value instanceof Uint32Array) return serializeTypedArray(\"l\", value);\n if (value instanceof Float32Array) return serializeTypedArray(\"G\", value);\n if (value instanceof Float64Array) return serializeTypedArray(\"g\", value);\n if (value instanceof BigInt64Array) return serializeTypedArray(\"M\", value);\n if (value instanceof BigUint64Array) return serializeTypedArray(\"m\", value);\n if (value instanceof DataView) return serializeTypedArray(\"V\", value);\n if (\"function\" === typeof Blob && value instanceof Blob) return null === formData && (formData = new FormData()), key = nextPartId++, formData.append(formFieldPrefix + key, value), \"$B\" + key.toString(16);\n if (parentReference = getIteratorFn(value)) return parentReference = parentReference.call(value), parentReference === value ? (key = nextPartId++, parentReference = serializeModel(Array.from(parentReference), key), null === formData && (formData = new FormData()), formData.append(formFieldPrefix + key, parentReference), \"$i\" + key.toString(16)) : Array.from(parentReference);\n if (\"function\" === typeof ReadableStream && value instanceof ReadableStream) return serializeReadableStream(value);\n parentReference = value[ASYNC_ITERATOR];\n if (\"function\" === typeof parentReference) return serializeAsyncIterable(value, parentReference.call(value));\n parentReference = getPrototypeOf(value);\n if (parentReference !== ObjectPrototype && (null === parentReference || null !== getPrototypeOf(parentReference))) {\n if (void 0 === temporaryReferences) throw Error(\"Only plain objects, and a few built-ins, can be passed to Server Functions. Classes or null prototypes are not supported.\" + describeObjectForErrorMessage(this, key));\n return \"$T\";\n }\n value.$$typeof === REACT_CONTEXT_TYPE ? console.error(\"React Context Providers cannot be passed to Server Functions from the Client.%s\", describeObjectForErrorMessage(this, key)) : \"Object\" !== objectName(value) ? console.error(\"Only plain objects can be passed to Server Functions from the Client. %s objects are not supported.%s\", objectName(value), describeObjectForErrorMessage(this, key)) : isSimpleObject(value) ? Object.getOwnPropertySymbols && (parentReference = Object.getOwnPropertySymbols(value), 0 < parentReference.length && console.error(\"Only plain objects can be passed to Server Functions from the Client. Objects with symbol properties like %s are not supported.%s\", parentReference[0].description, describeObjectForErrorMessage(this, key))) : console.error(\"Only plain objects can be passed to Server Functions from the Client. Classes or other objects with methods are not supported.%s\", describeObjectForErrorMessage(this, key));\n return value;\n }\n if (\"string\" === typeof value) {\n if (\"Z\" === value[value.length - 1] && this[key] instanceof Date) return \"$D\" + value;\n key = \"$\" === value[0] ? \"$\" + value : value;\n return key;\n }\n if (\"boolean\" === typeof value) return value;\n if (\"number\" === typeof value) return serializeNumber(value);\n if (\"undefined\" === typeof value) return \"$undefined\";\n if (\"function\" === typeof value) {\n parentReference = knownServerReferences.get(value);\n if (void 0 !== parentReference) {\n key = writtenObjects.get(value);\n if (void 0 !== key) return key;\n key = JSON.stringify({\n id: parentReference.id,\n bound: parentReference.bound\n }, resolveToJSON);\n null === formData && (formData = new FormData());\n parentReference = nextPartId++;\n formData.set(formFieldPrefix + parentReference, key);\n key = \"$h\" + parentReference.toString(16);\n writtenObjects.set(value, key);\n return key;\n }\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference)) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n throw Error(\"Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again.\");\n }\n if (\"symbol\" === typeof value) {\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\") && (parentReference = writtenObjects.get(this), void 0 !== parentReference)) return temporaryReferences.set(parentReference + \":\" + key, value), \"$T\";\n throw Error(\"Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options.\" + describeObjectForErrorMessage(this, key));\n }\n if (\"bigint\" === typeof value) return \"$n\" + value.toString(10);\n throw Error(\"Type \" + typeof value + \" is not supported as an argument to a Server Function.\");\n }\n function serializeModel(model, id) {\n \"object\" === typeof model && null !== model && (id = \"$\" + id.toString(16), writtenObjects.set(model, id), void 0 !== temporaryReferences && temporaryReferences.set(id, model));\n modelRoot = model;\n return JSON.stringify(model, resolveToJSON);\n }\n var nextPartId = 1, pendingParts = 0, formData = null, writtenObjects = new WeakMap(), modelRoot = root, json = serializeModel(root, 0);\n null === formData ? resolve(json) : (formData.set(formFieldPrefix + \"0\", json), 0 === pendingParts && resolve(formData));\n return function() {\n 0 < pendingParts && (pendingParts = 0, null === formData ? resolve(json) : resolve(formData));\n };\n }\n function encodeFormData(reference) {\n var resolve, reject, thenable = new Promise(function(res, rej) {\n resolve = res;\n reject = rej;\n });\n processReply(reference, \"\", void 0, function(body) {\n if (\"string\" === typeof body) {\n var data = new FormData();\n data.append(\"0\", body);\n body = data;\n }\n thenable.status = \"fulfilled\";\n thenable.value = body;\n resolve(body);\n }, function(e) {\n thenable.status = \"rejected\";\n thenable.reason = e;\n reject(e);\n });\n return thenable;\n }\n function defaultEncodeFormAction(identifierPrefix) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n var data = null;\n if (null !== referenceClosure.bound) {\n data = boundCache.get(referenceClosure);\n data || (data = encodeFormData({\n id: referenceClosure.id,\n bound: referenceClosure.bound\n }), boundCache.set(referenceClosure, data));\n if (\"rejected\" === data.status) throw data.reason;\n if (\"fulfilled\" !== data.status) throw data;\n referenceClosure = data.value;\n var prefixedData = new FormData();\n referenceClosure.forEach(function(value, key) {\n prefixedData.append(\"$ACTION_\" + identifierPrefix + \":\" + key, value);\n });\n data = prefixedData;\n referenceClosure = \"$ACTION_REF_\" + identifierPrefix;\n } else referenceClosure = \"$ACTION_ID_\" + referenceClosure.id;\n return {\n name: referenceClosure,\n method: \"POST\",\n encType: \"multipart/form-data\",\n data: data\n };\n }\n function isSignatureEqual(referenceId, numberOfBoundArgs) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n if (referenceClosure.id !== referenceId) return !1;\n var boundPromise = referenceClosure.bound;\n if (null === boundPromise) return 0 === numberOfBoundArgs;\n switch(boundPromise.status){\n case \"fulfilled\":\n return boundPromise.value.length === numberOfBoundArgs;\n case \"pending\":\n throw boundPromise;\n case \"rejected\":\n throw boundPromise.reason;\n default:\n throw \"string\" !== typeof boundPromise.status && (boundPromise.status = \"pending\", boundPromise.then(function(boundArgs) {\n boundPromise.status = \"fulfilled\";\n boundPromise.value = boundArgs;\n }, function(error) {\n boundPromise.status = \"rejected\";\n boundPromise.reason = error;\n })), boundPromise;\n }\n }\n function createFakeServerFunction(name, filename, sourceMap, line, col, environmentName, innerFunction) {\n name || (name = \"\");\n var encodedName = JSON.stringify(name);\n 1 >= line ? (line = encodedName.length + 7, col = \"s=>({\" + encodedName + \" \".repeat(col < line ? 0 : col - line) + \":(...args) => s(...args)})\\n/* This module is a proxy to a Server Action. Turn on Source Maps to see the server source. */\") : col = \"/* This module is a proxy to a Server Action. Turn on Source Maps to see the server source. */\" + \"\\n\".repeat(line - 2) + \"server=>({\" + encodedName + \":\\n\" + \" \".repeat(1 > col ? 0 : col - 1) + \"(...args) => server(...args)})\";\n filename.startsWith(\"/\") && (filename = \"file://\" + filename);\n sourceMap ? (col += \"\\n//# sourceURL=about://React/\" + encodeURIComponent(environmentName) + \"/\" + encodeURI(filename) + \"?s\" + fakeServerFunctionIdx++, col += \"\\n//# sourceMappingURL=\" + sourceMap) : filename && (col += \"\\n//# sourceURL=\" + filename);\n try {\n return (0, eval)(col)(innerFunction)[name];\n } catch (x) {\n return innerFunction;\n }\n }\n function registerBoundServerReference(reference, id, bound, encodeFormAction) {\n knownServerReferences.has(reference) || (knownServerReferences.set(reference, {\n id: id,\n originalBind: reference.bind,\n bound: bound\n }), Object.defineProperties(reference, {\n $$FORM_ACTION: {\n value: void 0 === encodeFormAction ? defaultEncodeFormAction : function() {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) throw Error(\"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\");\n var boundPromise = referenceClosure.bound;\n null === boundPromise && (boundPromise = Promise.resolve([]));\n return encodeFormAction(referenceClosure.id, boundPromise);\n }\n },\n $$IS_SIGNATURE_EQUAL: {\n value: isSignatureEqual\n },\n bind: {\n value: bind\n }\n }));\n }\n function bind() {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) return FunctionBind.apply(this, arguments);\n var newFn = referenceClosure.originalBind.apply(this, arguments);\n null != arguments[0] && console.error('Cannot bind \"this\" of a Server Action. Pass null or undefined as the first argument to .bind().');\n var args = ArraySlice.call(arguments, 1), boundPromise = null;\n boundPromise = null !== referenceClosure.bound ? Promise.resolve(referenceClosure.bound).then(function(boundArgs) {\n return boundArgs.concat(args);\n }) : Promise.resolve(args);\n knownServerReferences.set(newFn, {\n id: referenceClosure.id,\n originalBind: newFn.bind,\n bound: boundPromise\n });\n Object.defineProperties(newFn, {\n $$FORM_ACTION: {\n value: this.$$FORM_ACTION\n },\n $$IS_SIGNATURE_EQUAL: {\n value: isSignatureEqual\n },\n bind: {\n value: bind\n }\n });\n return newFn;\n }\n function createBoundServerReference(metaData, callServer, encodeFormAction, findSourceMapURL) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return bound ? \"fulfilled\" === bound.status ? callServer(id, bound.value.concat(args)) : Promise.resolve(bound).then(function(boundArgs) {\n return callServer(id, boundArgs.concat(args));\n }) : callServer(id, args);\n }\n var id = metaData.id, bound = metaData.bound, location = metaData.location;\n if (location) {\n var functionName = metaData.name || \"\", filename = location[1], line = location[2];\n location = location[3];\n metaData = metaData.env || \"Server\";\n findSourceMapURL = null == findSourceMapURL ? null : findSourceMapURL(filename, metaData);\n action = createFakeServerFunction(functionName, filename, findSourceMapURL, line, location, metaData, action);\n }\n registerBoundServerReference(action, id, bound, encodeFormAction);\n return action;\n }\n function parseStackLocation(error) {\n error = error.stack;\n error.startsWith(\"Error: react-stack-top-frame\\n\") && (error = error.slice(29));\n var endOfFirst = error.indexOf(\"\\n\");\n if (-1 !== endOfFirst) {\n var endOfSecond = error.indexOf(\"\\n\", endOfFirst + 1);\n endOfFirst = -1 === endOfSecond ? error.slice(endOfFirst + 1) : error.slice(endOfFirst + 1, endOfSecond);\n } else endOfFirst = error;\n error = v8FrameRegExp.exec(endOfFirst);\n if (!error && (error = jscSpiderMonkeyFrameRegExp.exec(endOfFirst), !error)) return null;\n endOfFirst = error[1] || \"\";\n \"\" === endOfFirst && (endOfFirst = \"\");\n endOfSecond = error[2] || error[5] || \"\";\n \"\" === endOfSecond && (endOfSecond = \"\");\n return [\n endOfFirst,\n endOfSecond,\n +(error[3] || error[6]),\n +(error[4] || error[7])\n ];\n }\n function createServerReference$1(id, callServer, encodeFormAction, findSourceMapURL, functionName) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return callServer(id, args);\n }\n var location = parseStackLocation(Error(\"react-stack-top-frame\"));\n if (null !== location) {\n var filename = location[1], line = location[2];\n location = location[3];\n findSourceMapURL = null == findSourceMapURL ? null : findSourceMapURL(filename, \"Client\");\n action = createFakeServerFunction(functionName || \"\", filename, findSourceMapURL, line, location, \"Client\", action);\n }\n registerBoundServerReference(action, id, null, encodeFormAction);\n return action;\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch(type){\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type) switch(\"number\" === typeof type.tag && console.error(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"), type.$$typeof){\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type || (type = innerType.displayName || innerType.name || \"\", type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\");\n return type;\n case REACT_MEMO_TYPE:\n return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || \"Memo\";\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function prepareStackTrace(error, structuredStackTrace) {\n error = (error.name || \"Error\") + \": \" + (error.message || \"\");\n for(var i = 0; i < structuredStackTrace.length; i++)error += \"\\n at \" + structuredStackTrace[i].toString();\n return error;\n }\n function ReactPromise(status, value, reason) {\n this.status = status;\n this.value = value;\n this.reason = reason;\n this._debugInfo = this._debugChunk = null;\n }\n function unwrapWeakResponse(weakResponse) {\n weakResponse = weakResponse.weak.deref();\n if (void 0 === weakResponse) throw Error(\"We did not expect to receive new data after GC:ing the response.\");\n return weakResponse;\n }\n function cleanupDebugChannel(debugChannel) {\n debugChannel(\"\");\n }\n function readChunk(chunk) {\n switch(chunk.status){\n case \"resolved_model\":\n initializeModelChunk(chunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(chunk);\n }\n switch(chunk.status){\n case \"fulfilled\":\n return chunk.value;\n case \"pending\":\n case \"blocked\":\n case \"halted\":\n throw chunk;\n default:\n throw chunk.reason;\n }\n }\n function getRoot(weakResponse) {\n weakResponse = unwrapWeakResponse(weakResponse);\n return getChunk(weakResponse, 0);\n }\n function createPendingChunk(response) {\n 0 === response._pendingChunks++ && (response._weakResponse.response = response, null !== response._pendingInitialRender && (clearTimeout(response._pendingInitialRender), response._pendingInitialRender = null));\n return new ReactPromise(\"pending\", null, null);\n }\n function releasePendingChunk(response, chunk) {\n \"pending\" === chunk.status && 0 === --response._pendingChunks && (response._weakResponse.response = null, response._pendingInitialRender = setTimeout(flushInitialRenderPerformance.bind(null, response), 100));\n }\n function wakeChunk(listeners, value) {\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n \"function\" === typeof listener ? listener(value) : fulfillReference(listener, value);\n }\n }\n function rejectChunk(listeners, error) {\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n \"function\" === typeof listener ? listener(error) : rejectReference(listener, error);\n }\n }\n function resolveBlockedCycle(resolvedChunk, reference) {\n var referencedChunk = reference.handler.chunk;\n if (null === referencedChunk) return null;\n if (referencedChunk === resolvedChunk) return reference.handler;\n reference = referencedChunk.value;\n if (null !== reference) for(referencedChunk = 0; referencedChunk < reference.length; referencedChunk++){\n var listener = reference[referencedChunk];\n if (\"function\" !== typeof listener && (listener = resolveBlockedCycle(resolvedChunk, listener), null !== listener)) return listener;\n }\n return null;\n }\n function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {\n switch(chunk.status){\n case \"fulfilled\":\n wakeChunk(resolveListeners, chunk.value);\n break;\n case \"blocked\":\n for(var i = 0; i < resolveListeners.length; i++){\n var listener = resolveListeners[i];\n if (\"function\" !== typeof listener) {\n var cyclicHandler = resolveBlockedCycle(chunk, listener);\n if (null !== cyclicHandler) switch(fulfillReference(listener, cyclicHandler.value), resolveListeners.splice(i, 1), i--, null !== rejectListeners && (listener = rejectListeners.indexOf(listener), -1 !== listener && rejectListeners.splice(listener, 1)), chunk.status){\n case \"fulfilled\":\n wakeChunk(resolveListeners, chunk.value);\n return;\n case \"rejected\":\n null !== rejectListeners && rejectChunk(rejectListeners, chunk.reason);\n return;\n }\n }\n }\n case \"pending\":\n if (chunk.value) for(i = 0; i < resolveListeners.length; i++)chunk.value.push(resolveListeners[i]);\n else chunk.value = resolveListeners;\n if (chunk.reason) {\n if (rejectListeners) for(resolveListeners = 0; resolveListeners < rejectListeners.length; resolveListeners++)chunk.reason.push(rejectListeners[resolveListeners]);\n } else chunk.reason = rejectListeners;\n break;\n case \"rejected\":\n rejectListeners && rejectChunk(rejectListeners, chunk.reason);\n }\n }\n function triggerErrorOnChunk(response, chunk, error) {\n if (\"pending\" !== chunk.status && \"blocked\" !== chunk.status) chunk.reason.error(error);\n else {\n releasePendingChunk(response, chunk);\n var listeners = chunk.reason;\n if (\"pending\" === chunk.status && null != chunk._debugChunk) {\n var prevHandler = initializingHandler;\n initializingHandler = null;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n try {\n initializeDebugChunk(response, chunk), chunk._debugChunk = null;\n } finally{\n initializingHandler = prevHandler;\n }\n }\n chunk.status = \"rejected\";\n chunk.reason = error;\n null !== listeners && rejectChunk(listeners, error);\n }\n }\n function createResolvedModelChunk(response, value) {\n return new ReactPromise(\"resolved_model\", value, response);\n }\n function createResolvedIteratorResultChunk(response, value, done) {\n return new ReactPromise(\"resolved_model\", (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\", response);\n }\n function resolveIteratorResultChunk(response, chunk, value, done) {\n resolveModelChunk(response, chunk, (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\");\n }\n function resolveModelChunk(response, chunk, value) {\n if (\"pending\" !== chunk.status) chunk.reason.enqueueModel(value);\n else {\n releasePendingChunk(response, chunk);\n var resolveListeners = chunk.value, rejectListeners = chunk.reason;\n chunk.status = \"resolved_model\";\n chunk.value = value;\n chunk.reason = response;\n null !== resolveListeners && (initializeModelChunk(chunk), wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners));\n }\n }\n function resolveModuleChunk(response, chunk, value) {\n if (\"pending\" === chunk.status || \"blocked\" === chunk.status) {\n releasePendingChunk(response, chunk);\n response = chunk.value;\n var rejectListeners = chunk.reason;\n chunk.status = \"resolved_module\";\n chunk.value = value;\n chunk.reason = null;\n value = [];\n null !== value && null != chunk._debugInfo ? chunk._debugInfo.push.apply(chunk._debugInfo, value) : chunk._debugInfo = value;\n null !== response && (initializeModuleChunk(chunk), wakeChunkIfInitialized(chunk, response, rejectListeners));\n }\n }\n function initializeDebugChunk(response, chunk) {\n var debugChunk = chunk._debugChunk;\n if (null !== debugChunk) {\n var debugInfo = chunk._debugInfo || (chunk._debugInfo = []);\n try {\n if (\"resolved_model\" === debugChunk.status) {\n for(var idx = debugInfo.length, c = debugChunk._debugChunk; null !== c;)\"fulfilled\" !== c.status && idx++, c = c._debugChunk;\n initializeModelChunk(debugChunk);\n switch(debugChunk.status){\n case \"fulfilled\":\n debugInfo[idx] = initializeDebugInfo(response, debugChunk.value);\n break;\n case \"blocked\":\n case \"pending\":\n waitForReference(debugChunk, debugInfo, \"\" + idx, response, initializeDebugInfo, [\n \"\"\n ]);\n break;\n default:\n throw debugChunk.reason;\n }\n } else switch(debugChunk.status){\n case \"fulfilled\":\n break;\n case \"blocked\":\n case \"pending\":\n waitForReference(debugChunk, {}, \"debug\", response, initializeDebugInfo, [\n \"\"\n ]);\n break;\n default:\n throw debugChunk.reason;\n }\n } catch (error) {\n triggerErrorOnChunk(response, chunk, error);\n }\n }\n }\n function initializeModelChunk(chunk) {\n var prevHandler = initializingHandler;\n initializingHandler = null;\n var resolvedModel = chunk.value, response = chunk.reason;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n initializeDebugChunk(response, chunk);\n chunk._debugChunk = null;\n try {\n var value = JSON.parse(resolvedModel, response._fromJSON), resolveListeners = chunk.value;\n null !== resolveListeners && (chunk.value = null, chunk.reason = null, wakeChunk(resolveListeners, value));\n if (null !== initializingHandler) {\n if (initializingHandler.errored) throw initializingHandler.reason;\n if (0 < initializingHandler.deps) {\n initializingHandler.value = value;\n initializingHandler.reason = null;\n initializingHandler.chunk = chunk;\n return;\n }\n }\n chunk.status = \"fulfilled\";\n chunk.value = value;\n chunk.reason = null;\n } catch (error) {\n chunk.status = \"rejected\", chunk.reason = error;\n } finally{\n initializingHandler = prevHandler;\n }\n }\n function initializeModuleChunk(chunk) {\n try {\n var value = requireModule(chunk.value);\n chunk.status = \"fulfilled\";\n chunk.value = value;\n chunk.reason = null;\n } catch (error) {\n chunk.status = \"rejected\", chunk.reason = error;\n }\n }\n function reportGlobalError(weakResponse, error) {\n if (void 0 !== weakResponse.weak.deref()) {\n var response = unwrapWeakResponse(weakResponse);\n response._closed = !0;\n response._closedReason = error;\n response._chunks.forEach(function(chunk) {\n \"pending\" === chunk.status ? triggerErrorOnChunk(response, chunk, error) : \"fulfilled\" === chunk.status && null !== chunk.reason && chunk.reason.error(error);\n });\n weakResponse = response._debugChannel;\n void 0 !== weakResponse && (weakResponse(\"\"), response._debugChannel = void 0);\n }\n }\n function nullRefGetter() {\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\"function\" === typeof type) return '\"use client\"';\n if (\"object\" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return type._init === readChunk ? '\"use client\"' : \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function initializeElement(response, element) {\n var stack = element._debugStack, owner = element._owner;\n null === owner && (element._owner = response._debugRootOwner);\n var env = response._rootEnvironmentName;\n null !== owner && null != owner.env && (env = owner.env);\n var normalizedStackTrace = null;\n null === owner && null != response._debugRootStack ? normalizedStackTrace = response._debugRootStack : null !== stack && (normalizedStackTrace = createFakeJSXCallStackInDEV(response, stack, env));\n element._debugStack = normalizedStackTrace;\n normalizedStackTrace = null;\n supportsCreateTask && null !== stack && (normalizedStackTrace = console.createTask.bind(console, getTaskName(element.type)), stack = buildFakeCallStack(response, stack, env, !1, normalizedStackTrace), env = null === owner ? null : initializeFakeTask(response, owner), null === env ? (env = response._debugRootTask, normalizedStackTrace = null != env ? env.run(stack) : stack()) : normalizedStackTrace = env.run(stack));\n element._debugTask = normalizedStackTrace;\n null !== owner && initializeFakeStack(response, owner);\n Object.freeze(element.props);\n }\n function createLazyChunkWrapper(chunk) {\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: chunk,\n _init: readChunk\n };\n chunk = chunk._debugInfo || (chunk._debugInfo = []);\n lazyType._debugInfo = chunk;\n return lazyType;\n }\n function getChunk(response, id) {\n var chunks = response._chunks, chunk = chunks.get(id);\n chunk || (chunk = response._closed ? new ReactPromise(\"rejected\", null, response._closedReason) : createPendingChunk(response), chunks.set(id, chunk));\n return chunk;\n }\n function fulfillReference(reference, value) {\n var response = reference.response, handler = reference.handler, parentObject = reference.parentObject, key = reference.key, map = reference.map, path = reference.path;\n try {\n for(var i = 1; i < path.length; i++){\n for(; value.$$typeof === REACT_LAZY_TYPE;){\n var referencedChunk = value._payload;\n if (referencedChunk === handler.chunk) value = handler.value;\n else {\n switch(referencedChunk.status){\n case \"resolved_model\":\n initializeModelChunk(referencedChunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(referencedChunk);\n }\n switch(referencedChunk.status){\n case \"fulfilled\":\n value = referencedChunk.value;\n continue;\n case \"blocked\":\n var cyclicHandler = resolveBlockedCycle(referencedChunk, reference);\n if (null !== cyclicHandler) {\n value = cyclicHandler.value;\n continue;\n }\n case \"pending\":\n path.splice(0, i - 1);\n null === referencedChunk.value ? referencedChunk.value = [\n reference\n ] : referencedChunk.value.push(reference);\n null === referencedChunk.reason ? referencedChunk.reason = [\n reference\n ] : referencedChunk.reason.push(reference);\n return;\n case \"halted\":\n return;\n default:\n rejectReference(reference, referencedChunk.reason);\n return;\n }\n }\n }\n var name = path[i];\n if (\"object\" === typeof value && null !== value && hasOwnProperty.call(value, name)) value = value[name];\n else throw Error(\"Invalid reference.\");\n }\n var mappedValue = map(response, value, parentObject, key);\n \"__proto__\" !== key && (parentObject[key] = mappedValue);\n \"\" === key && null === handler.value && (handler.value = mappedValue);\n if (parentObject[0] === REACT_ELEMENT_TYPE && \"object\" === typeof handler.value && null !== handler.value && handler.value.$$typeof === REACT_ELEMENT_TYPE) {\n var element = handler.value;\n switch(key){\n case \"3\":\n element.props = mappedValue;\n break;\n case \"4\":\n element._owner = mappedValue;\n break;\n case \"5\":\n element._debugStack = mappedValue;\n }\n }\n } catch (error) {\n rejectReference(reference, error);\n return;\n }\n handler.deps--;\n 0 === handler.deps && (reference = handler.chunk, null !== reference && \"blocked\" === reference.status && (value = reference.value, reference.status = \"fulfilled\", reference.value = handler.value, reference.reason = handler.reason, null !== value && wakeChunk(value, handler.value)));\n }\n function rejectReference(reference, error) {\n var handler = reference.handler;\n reference = reference.response;\n if (!handler.errored) {\n var blockedValue = handler.value;\n handler.errored = !0;\n handler.value = null;\n handler.reason = error;\n handler = handler.chunk;\n if (null !== handler && \"blocked\" === handler.status) {\n if (\"object\" === typeof blockedValue && null !== blockedValue && blockedValue.$$typeof === REACT_ELEMENT_TYPE) {\n var erroredComponent = {\n name: getComponentNameFromType(blockedValue.type) || \"\",\n owner: blockedValue._owner\n };\n erroredComponent.debugStack = blockedValue._debugStack;\n supportsCreateTask && (erroredComponent.debugTask = blockedValue._debugTask);\n (handler._debugInfo || (handler._debugInfo = [])).push(erroredComponent);\n }\n triggerErrorOnChunk(reference, handler, error);\n }\n }\n }\n function waitForReference(referencedChunk, parentObject, key, response, map, path) {\n if (void 0 === response._debugChannel && \"pending\" === referencedChunk.status && parentObject[0] === REACT_ELEMENT_TYPE && (\"4\" === key || \"5\" === key)) return null;\n if (initializingHandler) {\n var handler = initializingHandler;\n handler.deps++;\n } else handler = initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n };\n parentObject = {\n response: response,\n handler: handler,\n parentObject: parentObject,\n key: key,\n map: map,\n path: path\n };\n null === referencedChunk.value ? referencedChunk.value = [\n parentObject\n ] : referencedChunk.value.push(parentObject);\n null === referencedChunk.reason ? referencedChunk.reason = [\n parentObject\n ] : referencedChunk.reason.push(parentObject);\n return null;\n }\n function loadServerReference(response, metaData, parentObject, key) {\n if (!response._serverReferenceConfig) return createBoundServerReference(metaData, response._callServer, response._encodeFormAction, response._debugFindSourceMapURL);\n var serverReference = resolveServerReference(response._serverReferenceConfig, metaData.id), promise = preloadModule(serverReference);\n if (promise) metaData.bound && (promise = Promise.all([\n promise,\n metaData.bound\n ]));\n else if (metaData.bound) promise = Promise.resolve(metaData.bound);\n else return promise = requireModule(serverReference), registerBoundServerReference(promise, metaData.id, metaData.bound, response._encodeFormAction), promise;\n if (initializingHandler) {\n var handler = initializingHandler;\n handler.deps++;\n } else handler = initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n };\n promise.then(function() {\n var resolvedValue = requireModule(serverReference);\n if (metaData.bound) {\n var boundArgs = metaData.bound.value.slice(0);\n boundArgs.unshift(null);\n resolvedValue = resolvedValue.bind.apply(resolvedValue, boundArgs);\n }\n registerBoundServerReference(resolvedValue, metaData.id, metaData.bound, response._encodeFormAction);\n \"__proto__\" !== key && (parentObject[key] = resolvedValue);\n \"\" === key && null === handler.value && (handler.value = resolvedValue);\n if (parentObject[0] === REACT_ELEMENT_TYPE && \"object\" === typeof handler.value && null !== handler.value && handler.value.$$typeof === REACT_ELEMENT_TYPE) switch(boundArgs = handler.value, key){\n case \"3\":\n boundArgs.props = resolvedValue;\n break;\n case \"4\":\n boundArgs._owner = resolvedValue;\n }\n handler.deps--;\n 0 === handler.deps && (resolvedValue = handler.chunk, null !== resolvedValue && \"blocked\" === resolvedValue.status && (boundArgs = resolvedValue.value, resolvedValue.status = \"fulfilled\", resolvedValue.value = handler.value, resolvedValue.reason = null, null !== boundArgs && wakeChunk(boundArgs, handler.value)));\n }, function(error) {\n if (!handler.errored) {\n var blockedValue = handler.value;\n handler.errored = !0;\n handler.value = null;\n handler.reason = error;\n var chunk = handler.chunk;\n if (null !== chunk && \"blocked\" === chunk.status) {\n if (\"object\" === typeof blockedValue && null !== blockedValue && blockedValue.$$typeof === REACT_ELEMENT_TYPE) {\n var erroredComponent = {\n name: getComponentNameFromType(blockedValue.type) || \"\",\n owner: blockedValue._owner\n };\n erroredComponent.debugStack = blockedValue._debugStack;\n supportsCreateTask && (erroredComponent.debugTask = blockedValue._debugTask);\n (chunk._debugInfo || (chunk._debugInfo = [])).push(erroredComponent);\n }\n triggerErrorOnChunk(response, chunk, error);\n }\n }\n });\n return null;\n }\n function getOutlinedModel(response, reference, parentObject, key, map) {\n reference = reference.split(\":\");\n var id = parseInt(reference[0], 16);\n id = getChunk(response, id);\n switch(id.status){\n case \"resolved_model\":\n initializeModelChunk(id);\n break;\n case \"resolved_module\":\n initializeModuleChunk(id);\n }\n switch(id.status){\n case \"fulfilled\":\n for(var value = id.value, i = 1; i < reference.length; i++){\n for(; value.$$typeof === REACT_LAZY_TYPE;){\n value = value._payload;\n switch(value.status){\n case \"resolved_model\":\n initializeModelChunk(value);\n break;\n case \"resolved_module\":\n initializeModuleChunk(value);\n }\n switch(value.status){\n case \"fulfilled\":\n value = value.value;\n break;\n case \"blocked\":\n case \"pending\":\n return waitForReference(value, parentObject, key, response, map, reference.slice(i - 1));\n case \"halted\":\n return initializingHandler ? (response = initializingHandler, response.deps++) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }, null;\n default:\n return initializingHandler ? (initializingHandler.errored = !0, initializingHandler.value = null, initializingHandler.reason = value.reason) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: value.reason,\n deps: 0,\n errored: !0\n }, null;\n }\n }\n value = value[reference[i]];\n }\n response = map(response, value, parentObject, key);\n id._debugInfo && (\"object\" !== typeof response || null === response || !isArrayImpl(response) && \"function\" !== typeof response[ASYNC_ITERATOR] && response.$$typeof !== REACT_ELEMENT_TYPE || response._debugInfo || Object.defineProperty(response, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: id._debugInfo\n }));\n return response;\n case \"pending\":\n case \"blocked\":\n return waitForReference(id, parentObject, key, response, map, reference);\n case \"halted\":\n return initializingHandler ? (response = initializingHandler, response.deps++) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }, null;\n default:\n return initializingHandler ? (initializingHandler.errored = !0, initializingHandler.value = null, initializingHandler.reason = id.reason) : initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: id.reason,\n deps: 0,\n errored: !0\n }, null;\n }\n }\n function createMap(response, model) {\n return new Map(model);\n }\n function createSet(response, model) {\n return new Set(model);\n }\n function createBlob(response, model) {\n return new Blob(model.slice(1), {\n type: model[0]\n });\n }\n function createFormData(response, model) {\n response = new FormData();\n for(var i = 0; i < model.length; i++)response.append(model[i][0], model[i][1]);\n return response;\n }\n function applyConstructor(response, model, parentObject) {\n Object.setPrototypeOf(parentObject, model.prototype);\n }\n function defineLazyGetter(response, chunk, parentObject, key) {\n \"__proto__\" !== key && Object.defineProperty(parentObject, key, {\n get: function() {\n \"resolved_model\" === chunk.status && initializeModelChunk(chunk);\n switch(chunk.status){\n case \"fulfilled\":\n return chunk.value;\n case \"rejected\":\n throw chunk.reason;\n }\n return \"This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.\";\n },\n enumerable: !0,\n configurable: !1\n });\n return null;\n }\n function extractIterator(response, model) {\n return model[Symbol.iterator]();\n }\n function createModel(response, model) {\n return model;\n }\n function getInferredFunctionApproximate(code) {\n code = code.startsWith(\"Object.defineProperty(\") ? code.slice(22) : code.startsWith(\"(\") ? code.slice(1) : code;\n if (code.startsWith(\"async function\")) {\n var idx = code.indexOf(\"(\", 14);\n if (-1 !== idx) return code = code.slice(14, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":async function(){}})\")[code];\n } else if (code.startsWith(\"function\")) {\n if (idx = code.indexOf(\"(\", 8), -1 !== idx) return code = code.slice(8, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":function(){}})\")[code];\n } else if (code.startsWith(\"class\") && (idx = code.indexOf(\"{\", 5), -1 !== idx)) return code = code.slice(5, idx).trim(), (0, eval)(\"({\" + JSON.stringify(code) + \":class{}})\")[code];\n return function() {};\n }\n function parseModelString(response, parentObject, key, value) {\n if (\"$\" === value[0]) {\n if (\"$\" === value) return null !== initializingHandler && \"0\" === key && (initializingHandler = {\n parent: initializingHandler,\n chunk: null,\n value: null,\n reason: null,\n deps: 0,\n errored: !1\n }), REACT_ELEMENT_TYPE;\n switch(value[1]){\n case \"$\":\n return value.slice(1);\n case \"L\":\n return parentObject = parseInt(value.slice(2), 16), response = getChunk(response, parentObject), createLazyChunkWrapper(response);\n case \"@\":\n return parentObject = parseInt(value.slice(2), 16), getChunk(response, parentObject);\n case \"S\":\n return Symbol.for(value.slice(2));\n case \"h\":\n var ref = value.slice(2);\n return getOutlinedModel(response, ref, parentObject, key, loadServerReference);\n case \"T\":\n parentObject = \"$\" + value.slice(2);\n response = response._tempRefs;\n if (null == response) throw Error(\"Missing a temporary reference set but the RSC response returned a temporary reference. Pass a temporaryReference option with the set that was used with the reply.\");\n return response.get(parentObject);\n case \"Q\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createMap);\n case \"W\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createSet);\n case \"B\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createBlob);\n case \"K\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, createFormData);\n case \"Z\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, resolveErrorDev);\n case \"i\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, extractIterator);\n case \"I\":\n return Infinity;\n case \"-\":\n return \"$-0\" === value ? -0 : -Infinity;\n case \"N\":\n return NaN;\n case \"u\":\n return;\n case \"D\":\n return new Date(Date.parse(value.slice(2)));\n case \"n\":\n return BigInt(value.slice(2));\n case \"P\":\n return ref = value.slice(2), getOutlinedModel(response, ref, parentObject, key, applyConstructor);\n case \"E\":\n response = value.slice(2);\n try {\n if (!mightHaveStaticConstructor.test(response)) return (0, eval)(response);\n } catch (x) {}\n try {\n if (ref = getInferredFunctionApproximate(response), response.startsWith(\"Object.defineProperty(\")) {\n var idx = response.lastIndexOf(',\"name\",{value:\"');\n if (-1 !== idx) {\n var name = JSON.parse(response.slice(idx + 16 - 1, response.length - 2));\n Object.defineProperty(ref, \"name\", {\n value: name\n });\n }\n }\n } catch (_) {\n ref = function() {};\n }\n return ref;\n case \"Y\":\n if (2 < value.length && (ref = response._debugChannel)) {\n if (\"@\" === value[2]) return parentObject = value.slice(3), key = parseInt(parentObject, 16), response._chunks.has(key) || ref(\"P:\" + parentObject), getChunk(response, key);\n value = value.slice(2);\n idx = parseInt(value, 16);\n response._chunks.has(idx) || ref(\"Q:\" + value);\n ref = getChunk(response, idx);\n return \"fulfilled\" === ref.status ? ref.value : defineLazyGetter(response, ref, parentObject, key);\n }\n \"__proto__\" !== key && Object.defineProperty(parentObject, key, {\n get: function() {\n return \"This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.\";\n },\n enumerable: !0,\n configurable: !1\n });\n return null;\n default:\n return ref = value.slice(1), getOutlinedModel(response, ref, parentObject, key, createModel);\n }\n }\n return value;\n }\n function missingCall() {\n throw Error('Trying to call a function from \"use server\" but the callServer option was not implemented in your router runtime.');\n }\n function ResponseInstance(bundlerConfig, serverReferenceConfig, moduleLoading, callServer, encodeFormAction, nonce, temporaryReferences, findSourceMapURL, replayConsole, environmentName, debugChannel) {\n var chunks = new Map();\n this._bundlerConfig = bundlerConfig;\n this._serverReferenceConfig = serverReferenceConfig;\n this._moduleLoading = moduleLoading;\n this._callServer = void 0 !== callServer ? callServer : missingCall;\n this._encodeFormAction = encodeFormAction;\n this._nonce = nonce;\n this._chunks = chunks;\n this._stringDecoder = new util.TextDecoder();\n this._fromJSON = null;\n this._closed = !1;\n this._closedReason = null;\n this._tempRefs = temporaryReferences;\n this._pendingChunks = 0;\n this._weakResponse = {\n weak: new WeakRef(this),\n response: this\n };\n this._debugRootOwner = bundlerConfig = void 0 === ReactSharedInteralsServer || null === ReactSharedInteralsServer.A ? null : ReactSharedInteralsServer.A.getOwner();\n this._debugRootStack = null !== bundlerConfig ? Error(\"react-stack-top-frame\") : null;\n environmentName = void 0 === environmentName ? \"Server\" : environmentName;\n supportsCreateTask && (this._debugRootTask = console.createTask('\"use ' + environmentName.toLowerCase() + '\"'));\n this._debugFindSourceMapURL = findSourceMapURL;\n this._debugChannel = debugChannel;\n this._blockedConsole = null;\n this._replayConsole = replayConsole;\n this._rootEnvironmentName = environmentName;\n debugChannel && (null === debugChannelRegistry ? (debugChannel(\"\"), this._debugChannel = void 0) : debugChannelRegistry.register(this, debugChannel));\n this._fromJSON = createFromJSONCallback(this);\n }\n function createStreamState() {\n return {\n _rowState: 0,\n _rowID: 0,\n _rowTag: 0,\n _rowLength: 0,\n _buffer: []\n };\n }\n function resolveBuffer(response, id, buffer) {\n var chunks = response._chunks, chunk = chunks.get(id);\n chunk && \"pending\" !== chunk.status ? chunk.reason.enqueueValue(buffer) : (chunk && releasePendingChunk(response, chunk), chunks.set(id, new ReactPromise(\"fulfilled\", buffer, null)));\n }\n function resolveModule(response, id, model) {\n var chunks = response._chunks, chunk = chunks.get(id);\n model = JSON.parse(model, response._fromJSON);\n var clientReference = resolveClientReference(response._bundlerConfig, model);\n prepareDestinationWithChunks(response._moduleLoading, model[1], response._nonce);\n if (model = preloadModule(clientReference)) {\n if (chunk) {\n releasePendingChunk(response, chunk);\n var blockedChunk = chunk;\n blockedChunk.status = \"blocked\";\n } else blockedChunk = new ReactPromise(\"blocked\", null, null), chunks.set(id, blockedChunk);\n model.then(function() {\n return resolveModuleChunk(response, blockedChunk, clientReference);\n }, function(error) {\n return triggerErrorOnChunk(response, blockedChunk, error);\n });\n } else chunk ? resolveModuleChunk(response, chunk, clientReference) : chunks.set(id, new ReactPromise(\"resolved_module\", clientReference, null));\n }\n function resolveStream(response, id, stream, controller) {\n var chunks = response._chunks, chunk = chunks.get(id);\n if (!chunk) chunks.set(id, new ReactPromise(\"fulfilled\", stream, controller));\n else if (\"pending\" === chunk.status) {\n releasePendingChunk(response, chunk);\n id = chunk.value;\n if (null != chunk._debugChunk) {\n chunks = initializingHandler;\n initializingHandler = null;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n try {\n if (initializeDebugChunk(response, chunk), chunk._debugChunk = null, null !== initializingHandler && !initializingHandler.errored && 0 < initializingHandler.deps) {\n initializingHandler.value = stream;\n initializingHandler.reason = controller;\n initializingHandler.chunk = chunk;\n return;\n }\n } finally{\n initializingHandler = chunks;\n }\n }\n chunk.status = \"fulfilled\";\n chunk.value = stream;\n chunk.reason = controller;\n null !== id && wakeChunk(id, chunk.value);\n }\n }\n function startReadableStream(response, id, type) {\n var controller = null, closed = !1;\n type = new ReadableStream({\n type: type,\n start: function(c) {\n controller = c;\n }\n });\n var previousBlockedChunk = null;\n resolveStream(response, id, type, {\n enqueueValue: function(value) {\n null === previousBlockedChunk ? controller.enqueue(value) : previousBlockedChunk.then(function() {\n controller.enqueue(value);\n });\n },\n enqueueModel: function(json) {\n if (null === previousBlockedChunk) {\n var chunk = createResolvedModelChunk(response, json);\n initializeModelChunk(chunk);\n \"fulfilled\" === chunk.status ? controller.enqueue(chunk.value) : (chunk.then(function(v) {\n return controller.enqueue(v);\n }, function(e) {\n return controller.error(e);\n }), previousBlockedChunk = chunk);\n } else {\n chunk = previousBlockedChunk;\n var _chunk3 = createPendingChunk(response);\n _chunk3.then(function(v) {\n return controller.enqueue(v);\n }, function(e) {\n return controller.error(e);\n });\n previousBlockedChunk = _chunk3;\n chunk.then(function() {\n previousBlockedChunk === _chunk3 && (previousBlockedChunk = null);\n resolveModelChunk(response, _chunk3, json);\n });\n }\n },\n close: function() {\n if (!closed) if (closed = !0, null === previousBlockedChunk) controller.close();\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function() {\n return controller.close();\n });\n }\n },\n error: function(error) {\n if (!closed) if (closed = !0, null === previousBlockedChunk) controller.error(error);\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function() {\n return controller.error(error);\n });\n }\n }\n });\n }\n function asyncIterator() {\n return this;\n }\n function createIterator(next) {\n next = {\n next: next\n };\n next[ASYNC_ITERATOR] = asyncIterator;\n return next;\n }\n function startAsyncIterable(response, id, iterator) {\n var buffer = [], closed = !1, nextWriteIndex = 0, iterable = {};\n iterable[ASYNC_ITERATOR] = function() {\n var nextReadIndex = 0;\n return createIterator(function(arg) {\n if (void 0 !== arg) throw Error(\"Values cannot be passed to next() of AsyncIterables passed to Client Components.\");\n if (nextReadIndex === buffer.length) {\n if (closed) return new ReactPromise(\"fulfilled\", {\n done: !0,\n value: void 0\n }, null);\n buffer[nextReadIndex] = createPendingChunk(response);\n }\n return buffer[nextReadIndex++];\n });\n };\n resolveStream(response, id, iterator ? iterable[ASYNC_ITERATOR]() : iterable, {\n enqueueValue: function(value) {\n if (nextWriteIndex === buffer.length) buffer[nextWriteIndex] = new ReactPromise(\"fulfilled\", {\n done: !1,\n value: value\n }, null);\n else {\n var chunk = buffer[nextWriteIndex], resolveListeners = chunk.value, rejectListeners = chunk.reason;\n chunk.status = \"fulfilled\";\n chunk.value = {\n done: !1,\n value: value\n };\n chunk.reason = null;\n null !== resolveListeners && wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners);\n }\n nextWriteIndex++;\n },\n enqueueModel: function(value) {\n nextWriteIndex === buffer.length ? buffer[nextWriteIndex] = createResolvedIteratorResultChunk(response, value, !1) : resolveIteratorResultChunk(response, buffer[nextWriteIndex], value, !1);\n nextWriteIndex++;\n },\n close: function(value) {\n if (!closed) for(closed = !0, nextWriteIndex === buffer.length ? buffer[nextWriteIndex] = createResolvedIteratorResultChunk(response, value, !0) : resolveIteratorResultChunk(response, buffer[nextWriteIndex], value, !0), nextWriteIndex++; nextWriteIndex < buffer.length;)resolveIteratorResultChunk(response, buffer[nextWriteIndex++], '\"$undefined\"', !0);\n },\n error: function(error) {\n if (!closed) for(closed = !0, nextWriteIndex === buffer.length && (buffer[nextWriteIndex] = createPendingChunk(response)); nextWriteIndex < buffer.length;)triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);\n }\n });\n }\n function resolveErrorDev(response, errorInfo) {\n var name = errorInfo.name, env = errorInfo.env;\n errorInfo = buildFakeCallStack(response, errorInfo.stack, env, !1, Error.bind(null, errorInfo.message || \"An error occurred in the Server Components render but no message was provided\"));\n response = getRootTask(response, env);\n response = null != response ? response.run(errorInfo) : errorInfo();\n response.name = name;\n response.environmentName = env;\n return response;\n }\n function createFakeFunction(name, filename, sourceMap, line, col, enclosingLine, enclosingCol, environmentName) {\n name || (name = \"\");\n var encodedName = JSON.stringify(name);\n 1 > enclosingLine ? enclosingLine = 0 : enclosingLine--;\n 1 > enclosingCol ? enclosingCol = 0 : enclosingCol--;\n 1 > line ? line = 0 : line--;\n 1 > col ? col = 0 : col--;\n if (line < enclosingLine || line === enclosingLine && col < enclosingCol) enclosingCol = enclosingLine = 0;\n 1 > line ? (line = encodedName.length + 3, enclosingCol -= line, 0 > enclosingCol && (enclosingCol = 0), col = col - enclosingCol - line - 3, 0 > col && (col = 0), encodedName = \"({\" + encodedName + \":\" + \" \".repeat(enclosingCol) + \"_=>\" + \" \".repeat(col) + \"_()})\") : 1 > enclosingLine ? (enclosingCol -= encodedName.length + 3, 0 > enclosingCol && (enclosingCol = 0), encodedName = \"({\" + encodedName + \":\" + \" \".repeat(enclosingCol) + \"_=>\" + \"\\n\".repeat(line - enclosingLine) + \" \".repeat(col) + \"_()})\") : enclosingLine === line ? (col = col - enclosingCol - 3, 0 > col && (col = 0), encodedName = \"\\n\".repeat(enclosingLine - 1) + \"({\" + encodedName + \":\\n\" + \" \".repeat(enclosingCol) + \"_=>\" + \" \".repeat(col) + \"_()})\") : encodedName = \"\\n\".repeat(enclosingLine - 1) + \"({\" + encodedName + \":\\n\" + \" \".repeat(enclosingCol) + \"_=>\" + \"\\n\".repeat(line - enclosingLine) + \" \".repeat(col) + \"_()})\";\n encodedName = 1 > enclosingLine ? encodedName + \"\\n/* This module was rendered by a Server Component. Turn on Source Maps to see the server source. */\" : \"/* This module was rendered by a Server Component. Turn on Source Maps to see the server source. */\" + encodedName;\n filename.startsWith(\"/\") && (filename = \"file://\" + filename);\n sourceMap ? (encodedName += \"\\n//# sourceURL=about://React/\" + encodeURIComponent(environmentName) + \"/\" + encodeURI(filename) + \"?\" + fakeFunctionIdx++, encodedName += \"\\n//# sourceMappingURL=\" + sourceMap) : encodedName = filename ? encodedName + (\"\\n//# sourceURL=\" + encodeURI(filename)) : encodedName + \"\\n//# sourceURL=\";\n try {\n var fn = (0, eval)(encodedName)[name];\n } catch (x) {\n fn = function(_) {\n return _();\n };\n }\n return fn;\n }\n function buildFakeCallStack(response, stack, environmentName, useEnclosingLine, innerCall) {\n for(var i = 0; i < stack.length; i++){\n var frame = stack[i], frameKey = frame.join(\"-\") + \"-\" + environmentName + (useEnclosingLine ? \"-e\" : \"-n\"), fn = fakeFunctionCache.get(frameKey);\n if (void 0 === fn) {\n fn = frame[0];\n var filename = frame[1], line = frame[2], col = frame[3], enclosingLine = frame[4];\n frame = frame[5];\n var findSourceMapURL = response._debugFindSourceMapURL;\n findSourceMapURL = findSourceMapURL ? findSourceMapURL(filename, environmentName) : null;\n fn = createFakeFunction(fn, filename, findSourceMapURL, line, col, useEnclosingLine ? line : enclosingLine, useEnclosingLine ? col : frame, environmentName);\n fakeFunctionCache.set(frameKey, fn);\n }\n innerCall = fn.bind(null, innerCall);\n }\n return innerCall;\n }\n function getRootTask(response, childEnvironmentName) {\n var rootTask = response._debugRootTask;\n return rootTask ? response._rootEnvironmentName !== childEnvironmentName ? (response = console.createTask.bind(console, '\"use ' + childEnvironmentName.toLowerCase() + '\"'), rootTask.run(response)) : rootTask : null;\n }\n function initializeFakeTask(response, debugInfo) {\n if (!supportsCreateTask || null == debugInfo.stack) return null;\n var cachedEntry = debugInfo.debugTask;\n if (void 0 !== cachedEntry) return cachedEntry;\n var useEnclosingLine = void 0 === debugInfo.key, stack = debugInfo.stack, env = null == debugInfo.env ? response._rootEnvironmentName : debugInfo.env;\n cachedEntry = null == debugInfo.owner || null == debugInfo.owner.env ? response._rootEnvironmentName : debugInfo.owner.env;\n var ownerTask = null == debugInfo.owner ? null : initializeFakeTask(response, debugInfo.owner);\n env = env !== cachedEntry ? '\"use ' + env.toLowerCase() + '\"' : void 0 !== debugInfo.key ? \"<\" + (debugInfo.name || \"...\") + \">\" : void 0 !== debugInfo.name ? debugInfo.name || \"unknown\" : \"await \" + (debugInfo.awaited.name || \"unknown\");\n env = console.createTask.bind(console, env);\n useEnclosingLine = buildFakeCallStack(response, stack, cachedEntry, useEnclosingLine, env);\n null === ownerTask ? (response = getRootTask(response, cachedEntry), response = null != response ? response.run(useEnclosingLine) : useEnclosingLine()) : response = ownerTask.run(useEnclosingLine);\n return debugInfo.debugTask = response;\n }\n function fakeJSXCallSite() {\n return Error(\"react-stack-top-frame\");\n }\n function initializeFakeStack(response, debugInfo) {\n if (void 0 === debugInfo.debugStack) {\n null != debugInfo.stack && (debugInfo.debugStack = createFakeJSXCallStackInDEV(response, debugInfo.stack, null == debugInfo.env ? \"\" : debugInfo.env));\n var owner = debugInfo.owner;\n null != owner && (initializeFakeStack(response, owner), void 0 === owner.debugLocation && null != debugInfo.debugStack && (owner.debugLocation = debugInfo.debugStack));\n }\n }\n function initializeDebugInfo(response, debugInfo) {\n void 0 !== debugInfo.stack && initializeFakeTask(response, debugInfo);\n null == debugInfo.owner && null != response._debugRootOwner ? (debugInfo.owner = response._debugRootOwner, debugInfo.stack = null, debugInfo.debugStack = response._debugRootStack, debugInfo.debugTask = response._debugRootTask) : void 0 !== debugInfo.stack && initializeFakeStack(response, debugInfo);\n return debugInfo;\n }\n function getCurrentStackInDEV() {\n var owner = currentOwnerInDEV;\n if (null === owner) return \"\";\n try {\n var info = \"\";\n if (owner.owner || \"string\" !== typeof owner.name) {\n for(; owner;){\n var ownerStack = owner.debugStack;\n if (null != ownerStack) {\n if (owner = owner.owner) {\n var JSCompiler_temp_const = info;\n var error = ownerStack, prevPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = prepareStackTrace;\n var stack = error.stack;\n Error.prepareStackTrace = prevPrepareStackTrace;\n stack.startsWith(\"Error: react-stack-top-frame\\n\") && (stack = stack.slice(29));\n var idx = stack.indexOf(\"\\n\");\n -1 !== idx && (stack = stack.slice(idx + 1));\n idx = stack.indexOf(\"react_stack_bottom_frame\");\n -1 !== idx && (idx = stack.lastIndexOf(\"\\n\", idx));\n var JSCompiler_inline_result = -1 !== idx ? stack = stack.slice(0, idx) : \"\";\n info = JSCompiler_temp_const + (\"\\n\" + JSCompiler_inline_result);\n }\n } else break;\n }\n var JSCompiler_inline_result$jscomp$0 = info;\n } else {\n JSCompiler_temp_const = owner.name;\n if (void 0 === prefix) try {\n throw Error();\n } catch (x) {\n prefix = (error = x.stack.trim().match(/\\n( *(at )?)/)) && error[1] || \"\", suffix = -1 < x.stack.indexOf(\"\\n at\") ? \" ()\" : -1 < x.stack.indexOf(\"@\") ? \"@unknown:0:0\" : \"\";\n }\n JSCompiler_inline_result$jscomp$0 = \"\\n\" + prefix + JSCompiler_temp_const + suffix;\n }\n } catch (x) {\n JSCompiler_inline_result$jscomp$0 = \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n return JSCompiler_inline_result$jscomp$0;\n }\n function resolveConsoleEntry(response, json) {\n if (response._replayConsole) {\n var blockedChunk = response._blockedConsole;\n if (null == blockedChunk) blockedChunk = createResolvedModelChunk(response, json), initializeModelChunk(blockedChunk), \"fulfilled\" === blockedChunk.status ? replayConsoleWithCallStackInDEV(response, blockedChunk.value) : (blockedChunk.then(function(v) {\n return replayConsoleWithCallStackInDEV(response, v);\n }, function() {}), response._blockedConsole = blockedChunk);\n else {\n var _chunk4 = createPendingChunk(response);\n _chunk4.then(function(v) {\n return replayConsoleWithCallStackInDEV(response, v);\n }, function() {});\n response._blockedConsole = _chunk4;\n var unblock = function() {\n response._blockedConsole === _chunk4 && (response._blockedConsole = null);\n resolveModelChunk(response, _chunk4, json);\n };\n blockedChunk.then(unblock, unblock);\n }\n }\n }\n function initializeIOInfo(response, ioInfo) {\n void 0 !== ioInfo.stack && (initializeFakeTask(response, ioInfo), initializeFakeStack(response, ioInfo));\n ioInfo.start += response._timeOrigin;\n ioInfo.end += response._timeOrigin;\n }\n function resolveIOInfo(response, id, model) {\n var chunks = response._chunks, chunk = chunks.get(id);\n chunk ? (resolveModelChunk(response, chunk, model), \"resolved_model\" === chunk.status && initializeModelChunk(chunk)) : (chunk = createResolvedModelChunk(response, model), chunks.set(id, chunk), initializeModelChunk(chunk));\n \"fulfilled\" === chunk.status ? initializeIOInfo(response, chunk.value) : chunk.then(function(v) {\n initializeIOInfo(response, v);\n }, function() {});\n }\n function mergeBuffer(buffer, lastChunk) {\n for(var l = buffer.length, byteLength = lastChunk.length, i = 0; i < l; i++)byteLength += buffer[i].byteLength;\n byteLength = new Uint8Array(byteLength);\n for(var _i3 = i = 0; _i3 < l; _i3++){\n var chunk = buffer[_i3];\n byteLength.set(chunk, i);\n i += chunk.byteLength;\n }\n byteLength.set(lastChunk, i);\n return byteLength;\n }\n function resolveTypedArray(response, id, buffer, lastChunk, constructor, bytesPerElement) {\n buffer = 0 === buffer.length && 0 === lastChunk.byteOffset % bytesPerElement ? lastChunk : mergeBuffer(buffer, lastChunk);\n constructor = new constructor(buffer.buffer, buffer.byteOffset, buffer.byteLength / bytesPerElement);\n resolveBuffer(response, id, constructor);\n }\n function flushInitialRenderPerformance() {}\n function processFullBinaryRow(response, id, tag, buffer, chunk) {\n switch(tag){\n case 65:\n resolveBuffer(response, id, mergeBuffer(buffer, chunk).buffer);\n return;\n case 79:\n resolveTypedArray(response, id, buffer, chunk, Int8Array, 1);\n return;\n case 111:\n resolveBuffer(response, id, 0 === buffer.length ? chunk : mergeBuffer(buffer, chunk));\n return;\n case 85:\n resolveTypedArray(response, id, buffer, chunk, Uint8ClampedArray, 1);\n return;\n case 83:\n resolveTypedArray(response, id, buffer, chunk, Int16Array, 2);\n return;\n case 115:\n resolveTypedArray(response, id, buffer, chunk, Uint16Array, 2);\n return;\n case 76:\n resolveTypedArray(response, id, buffer, chunk, Int32Array, 4);\n return;\n case 108:\n resolveTypedArray(response, id, buffer, chunk, Uint32Array, 4);\n return;\n case 71:\n resolveTypedArray(response, id, buffer, chunk, Float32Array, 4);\n return;\n case 103:\n resolveTypedArray(response, id, buffer, chunk, Float64Array, 8);\n return;\n case 77:\n resolveTypedArray(response, id, buffer, chunk, BigInt64Array, 8);\n return;\n case 109:\n resolveTypedArray(response, id, buffer, chunk, BigUint64Array, 8);\n return;\n case 86:\n resolveTypedArray(response, id, buffer, chunk, DataView, 1);\n return;\n }\n for(var stringDecoder = response._stringDecoder, row = \"\", i = 0; i < buffer.length; i++)row += stringDecoder.decode(buffer[i], decoderOptions);\n row += stringDecoder.decode(chunk);\n processFullStringRow(response, id, tag, row);\n }\n function processFullStringRow(response, id, tag, row) {\n switch(tag){\n case 73:\n resolveModule(response, id, row);\n break;\n case 72:\n id = row[0];\n row = row.slice(1);\n response = JSON.parse(row, response._fromJSON);\n row = ReactDOMSharedInternals.d;\n switch(id){\n case \"D\":\n row.D(response);\n break;\n case \"C\":\n \"string\" === typeof response ? row.C(response) : row.C(response[0], response[1]);\n break;\n case \"L\":\n id = response[0];\n tag = response[1];\n 3 === response.length ? row.L(id, tag, response[2]) : row.L(id, tag);\n break;\n case \"m\":\n \"string\" === typeof response ? row.m(response) : row.m(response[0], response[1]);\n break;\n case \"X\":\n \"string\" === typeof response ? row.X(response) : row.X(response[0], response[1]);\n break;\n case \"S\":\n \"string\" === typeof response ? row.S(response) : row.S(response[0], 0 === response[1] ? void 0 : response[1], 3 === response.length ? response[2] : void 0);\n break;\n case \"M\":\n \"string\" === typeof response ? row.M(response) : row.M(response[0], response[1]);\n }\n break;\n case 69:\n tag = response._chunks;\n var chunk = tag.get(id);\n row = JSON.parse(row);\n var error = resolveErrorDev(response, row);\n error.digest = row.digest;\n chunk ? triggerErrorOnChunk(response, chunk, error) : tag.set(id, new ReactPromise(\"rejected\", null, error));\n break;\n case 84:\n tag = response._chunks;\n (chunk = tag.get(id)) && \"pending\" !== chunk.status ? chunk.reason.enqueueValue(row) : (chunk && releasePendingChunk(response, chunk), tag.set(id, new ReactPromise(\"fulfilled\", row, null)));\n break;\n case 78:\n response._timeOrigin = +row - performance.timeOrigin;\n break;\n case 68:\n id = getChunk(response, id);\n \"fulfilled\" !== id.status && \"rejected\" !== id.status && \"halted\" !== id.status && \"blocked\" !== id.status && \"resolved_module\" !== id.status && (tag = id._debugChunk, chunk = createResolvedModelChunk(response, row), chunk._debugChunk = tag, id._debugChunk = chunk, initializeDebugChunk(response, id), \"blocked\" === chunk.status && void 0 === response._debugChannel && '\"' === row[0] && \"$\" === row[1] && (row = row.slice(2, row.length - 1).split(\":\"), row = parseInt(row[0], 16), \"pending\" === getChunk(response, row).status && (id._debugChunk = null)));\n break;\n case 74:\n resolveIOInfo(response, id, row);\n break;\n case 87:\n resolveConsoleEntry(response, row);\n break;\n case 82:\n startReadableStream(response, id, void 0);\n break;\n case 114:\n startReadableStream(response, id, \"bytes\");\n break;\n case 88:\n startAsyncIterable(response, id, !1);\n break;\n case 120:\n startAsyncIterable(response, id, !0);\n break;\n case 67:\n (response = response._chunks.get(id)) && \"fulfilled\" === response.status && response.reason.close(\"\" === row ? '\"$undefined\"' : row);\n break;\n default:\n if (\"\" === row) {\n if (row = response._chunks, (tag = row.get(id)) || row.set(id, tag = createPendingChunk(response)), \"pending\" === tag.status || \"blocked\" === tag.status) releasePendingChunk(response, tag), response = tag, response.status = \"halted\", response.value = null, response.reason = null;\n } else tag = response._chunks, (chunk = tag.get(id)) ? resolveModelChunk(response, chunk, row) : tag.set(id, createResolvedModelChunk(response, row));\n }\n }\n function processBinaryChunk(weakResponse, streamState, chunk) {\n if (void 0 !== weakResponse.weak.deref()) {\n var response = unwrapWeakResponse(weakResponse), i = 0, rowState = streamState._rowState;\n weakResponse = streamState._rowID;\n for(var rowTag = streamState._rowTag, rowLength = streamState._rowLength, buffer = streamState._buffer, chunkLength = chunk.length; i < chunkLength;){\n var lastIdx = -1;\n switch(rowState){\n case 0:\n lastIdx = chunk[i++];\n 58 === lastIdx ? rowState = 1 : weakResponse = weakResponse << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 1:\n rowState = chunk[i];\n 84 === rowState || 65 === rowState || 79 === rowState || 111 === rowState || 85 === rowState || 83 === rowState || 115 === rowState || 76 === rowState || 108 === rowState || 71 === rowState || 103 === rowState || 77 === rowState || 109 === rowState || 86 === rowState ? (rowTag = rowState, rowState = 2, i++) : 64 < rowState && 91 > rowState || 35 === rowState || 114 === rowState || 120 === rowState ? (rowTag = rowState, rowState = 3, i++) : (rowTag = 0, rowState = 3);\n continue;\n case 2:\n lastIdx = chunk[i++];\n 44 === lastIdx ? rowState = 4 : rowLength = rowLength << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 3:\n lastIdx = chunk.indexOf(10, i);\n break;\n case 4:\n lastIdx = i + rowLength, lastIdx > chunk.length && (lastIdx = -1);\n }\n var offset = chunk.byteOffset + i;\n if (-1 < lastIdx) rowLength = new Uint8Array(chunk.buffer, offset, lastIdx - i), processFullBinaryRow(response, weakResponse, rowTag, buffer, rowLength), i = lastIdx, 3 === rowState && i++, rowLength = weakResponse = rowTag = rowState = 0, buffer.length = 0;\n else {\n chunk = new Uint8Array(chunk.buffer, offset, chunk.byteLength - i);\n buffer.push(chunk);\n rowLength -= chunk.byteLength;\n break;\n }\n }\n streamState._rowState = rowState;\n streamState._rowID = weakResponse;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n }\n }\n function createFromJSONCallback(response) {\n return function(key, value) {\n if (\"__proto__\" !== key) {\n if (\"string\" === typeof value) return parseModelString(response, this, key, value);\n if (\"object\" === typeof value && null !== value) {\n if (value[0] === REACT_ELEMENT_TYPE) b: {\n var owner = value[4];\n key = value[5];\n var validated = value[6];\n value = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: value[1],\n key: value[2],\n props: value[3],\n _owner: void 0 === owner ? null : owner\n };\n Object.defineProperty(value, \"ref\", {\n enumerable: !1,\n get: nullRefGetter\n });\n value._store = {};\n Object.defineProperty(value._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: validated\n });\n Object.defineProperty(value, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(value, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: void 0 === key ? null : key\n });\n Object.defineProperty(value, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n if (null !== initializingHandler) {\n validated = initializingHandler;\n initializingHandler = validated.parent;\n if (validated.errored) {\n key = new ReactPromise(\"rejected\", null, validated.reason);\n initializeElement(response, value);\n validated = {\n name: getComponentNameFromType(value.type) || \"\",\n owner: value._owner\n };\n validated.debugStack = value._debugStack;\n supportsCreateTask && (validated.debugTask = value._debugTask);\n key._debugInfo = [\n validated\n ];\n value = createLazyChunkWrapper(key);\n break b;\n }\n if (0 < validated.deps) {\n key = new ReactPromise(\"blocked\", null, null);\n validated.value = value;\n validated.chunk = key;\n value = initializeElement.bind(null, response, value);\n key.then(value, value);\n value = createLazyChunkWrapper(key);\n break b;\n }\n }\n initializeElement(response, value);\n }\n return value;\n }\n return value;\n }\n };\n }\n function close(weakResponse) {\n reportGlobalError(weakResponse, Error(\"Connection closed.\"));\n }\n function noServerCall$1() {\n throw Error(\"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\");\n }\n function createResponseFromOptions(options) {\n return new ResponseInstance(options.serverConsumerManifest.moduleMap, options.serverConsumerManifest.serverModuleMap, options.serverConsumerManifest.moduleLoading, noServerCall$1, options.encodeFormAction, \"string\" === typeof options.nonce ? options.nonce : void 0, options && options.temporaryReferences ? options.temporaryReferences : void 0, options && options.findSourceMapURL ? options.findSourceMapURL : void 0, options ? !0 === options.replayConsoleLogs : !1, options && options.environmentName ? options.environmentName : void 0, void 0)._weakResponse;\n }\n function startReadingFromStream(response, stream) {\n function progress(_ref) {\n var value = _ref.value;\n if (_ref.done) close(response);\n else return processBinaryChunk(response, streamState, value), reader.read().then(progress).catch(error);\n }\n function error(e) {\n reportGlobalError(response, e);\n }\n var streamState = createStreamState(), reader = stream.getReader();\n reader.read().then(progress).catch(error);\n }\n function noServerCall() {\n throw Error(\"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\");\n }\n var util = __webpack_require__(/*! util */ \"util\"), ReactDOM = __webpack_require__(/*! react-dom */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\"), React = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"), decoderOptions = {\n stream: !0\n }, bind$1 = Function.prototype.bind, hasOwnProperty = Object.prototype.hasOwnProperty, chunkCache = new Map(), ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"), REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"), REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"), REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"), REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"), REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"), REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"), REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"), REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"), REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"), REACT_MEMO_TYPE = Symbol.for(\"react.memo\"), REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"), REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, ASYNC_ITERATOR = Symbol.asyncIterator, isArrayImpl = Array.isArray, getPrototypeOf = Object.getPrototypeOf, jsxPropsParents = new WeakMap(), jsxChildrenParents = new WeakMap(), CLIENT_REFERENCE_TAG = Symbol.for(\"react.client.reference\"), ObjectPrototype = Object.prototype, knownServerReferences = new WeakMap(), boundCache = new WeakMap(), fakeServerFunctionIdx = 0, FunctionBind = Function.prototype.bind, ArraySlice = Array.prototype.slice, v8FrameRegExp = /^ {3} at (?:(.+) \\((.+):(\\d+):(\\d+)\\)|(?:async )?(.+):(\\d+):(\\d+))$/, jscSpiderMonkeyFrameRegExp = /(?:(.*)@)?(.*):(\\d+):(\\d+)/, REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"), prefix, suffix;\n new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n var ReactSharedInteralsServer = React.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE || ReactSharedInteralsServer;\n ReactPromise.prototype = Object.create(Promise.prototype);\n ReactPromise.prototype.then = function(resolve, reject) {\n var _this = this;\n switch(this.status){\n case \"resolved_model\":\n initializeModelChunk(this);\n break;\n case \"resolved_module\":\n initializeModuleChunk(this);\n }\n var resolveCallback = resolve, rejectCallback = reject, wrapperPromise = new Promise(function(res, rej) {\n resolve = function(value) {\n wrapperPromise._debugInfo = _this._debugInfo;\n res(value);\n };\n reject = function(reason) {\n wrapperPromise._debugInfo = _this._debugInfo;\n rej(reason);\n };\n });\n wrapperPromise.then(resolveCallback, rejectCallback);\n switch(this.status){\n case \"fulfilled\":\n \"function\" === typeof resolve && resolve(this.value);\n break;\n case \"pending\":\n case \"blocked\":\n \"function\" === typeof resolve && (null === this.value && (this.value = []), this.value.push(resolve));\n \"function\" === typeof reject && (null === this.reason && (this.reason = []), this.reason.push(reject));\n break;\n case \"halted\":\n break;\n default:\n \"function\" === typeof reject && reject(this.reason);\n }\n };\n var debugChannelRegistry = \"function\" === typeof FinalizationRegistry ? new FinalizationRegistry(cleanupDebugChannel) : null, initializingHandler = null, mightHaveStaticConstructor = /\\bclass\\b.*\\bstatic\\b/, supportsCreateTask = !!console.createTask, fakeFunctionCache = new Map(), fakeFunctionIdx = 0, createFakeJSXCallStack = {\n react_stack_bottom_frame: function(response, stack, environmentName) {\n return buildFakeCallStack(response, stack, environmentName, !1, fakeJSXCallSite)();\n }\n }, createFakeJSXCallStackInDEV = createFakeJSXCallStack.react_stack_bottom_frame.bind(createFakeJSXCallStack), currentOwnerInDEV = null, replayConsoleWithCallStack = {\n react_stack_bottom_frame: function(response, payload) {\n var methodName = payload[0], stackTrace = payload[1], owner = payload[2], env = payload[3];\n payload = payload.slice(4);\n var prevStack = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = getCurrentStackInDEV;\n currentOwnerInDEV = null === owner ? response._debugRootOwner : owner;\n try {\n a: {\n var offset = 0;\n switch(methodName){\n case \"dir\":\n case \"dirxml\":\n case \"groupEnd\":\n case \"table\":\n var JSCompiler_inline_result = bind$1.apply(console[methodName], [\n console\n ].concat(payload));\n break a;\n case \"assert\":\n offset = 1;\n }\n var newArgs = payload.slice(0);\n \"string\" === typeof newArgs[offset] ? newArgs.splice(offset, 1, \"\\u001b[0m\\u001b[7m%c%s\\u001b[0m%c \" + newArgs[offset], \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\", \" \" + env + \" \", \"\") : newArgs.splice(offset, 0, \"\\u001b[0m\\u001b[7m%c%s\\u001b[0m%c\", \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\", \" \" + env + \" \", \"\");\n newArgs.unshift(console);\n JSCompiler_inline_result = bind$1.apply(console[methodName], newArgs);\n }\n var callStack = buildFakeCallStack(response, stackTrace, env, !1, JSCompiler_inline_result);\n if (null != owner) {\n var task = initializeFakeTask(response, owner);\n initializeFakeStack(response, owner);\n if (null !== task) {\n task.run(callStack);\n return;\n }\n }\n var rootTask = getRootTask(response, env);\n null != rootTask ? rootTask.run(callStack) : callStack();\n } finally{\n currentOwnerInDEV = null, ReactSharedInternals.getCurrentStack = prevStack;\n }\n }\n }, replayConsoleWithCallStackInDEV = replayConsoleWithCallStack.react_stack_bottom_frame.bind(replayConsoleWithCallStack);\n exports.createFromFetch = function(promiseForResponse, options) {\n var response = createResponseFromOptions(options);\n promiseForResponse.then(function(r) {\n startReadingFromStream(response, r.body);\n }, function(e) {\n reportGlobalError(response, e);\n });\n return getRoot(response);\n };\n exports.createFromNodeStream = function(stream, serverConsumerManifest, options) {\n var response$jscomp$0 = new ResponseInstance(serverConsumerManifest.moduleMap, serverConsumerManifest.serverModuleMap, serverConsumerManifest.moduleLoading, noServerCall, options ? options.encodeFormAction : void 0, options && \"string\" === typeof options.nonce ? options.nonce : void 0, void 0, options && options.findSourceMapURL ? options.findSourceMapURL : void 0, options ? !0 === options.replayConsoleLogs : !1, options && options.environmentName ? options.environmentName : void 0, void 0)._weakResponse, streamState = createStreamState();\n stream.on(\"data\", function(chunk) {\n if (\"string\" === typeof chunk) {\n if (void 0 !== response$jscomp$0.weak.deref()) {\n for(var response = unwrapWeakResponse(response$jscomp$0), i = 0, rowState = streamState._rowState, rowID = streamState._rowID, rowTag = streamState._rowTag, rowLength = streamState._rowLength, buffer = streamState._buffer, chunkLength = chunk.length; i < chunkLength;){\n var lastIdx = -1;\n switch(rowState){\n case 0:\n lastIdx = chunk.charCodeAt(i++);\n 58 === lastIdx ? rowState = 1 : rowID = rowID << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 1:\n rowState = chunk.charCodeAt(i);\n 84 === rowState || 65 === rowState || 79 === rowState || 111 === rowState || 85 === rowState || 83 === rowState || 115 === rowState || 76 === rowState || 108 === rowState || 71 === rowState || 103 === rowState || 77 === rowState || 109 === rowState || 86 === rowState ? (rowTag = rowState, rowState = 2, i++) : 64 < rowState && 91 > rowState || 114 === rowState || 120 === rowState ? (rowTag = rowState, rowState = 3, i++) : (rowTag = 0, rowState = 3);\n continue;\n case 2:\n lastIdx = chunk.charCodeAt(i++);\n 44 === lastIdx ? rowState = 4 : rowLength = rowLength << 4 | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48);\n continue;\n case 3:\n lastIdx = chunk.indexOf(\"\\n\", i);\n break;\n case 4:\n if (84 !== rowTag) throw Error(\"Binary RSC chunks cannot be encoded as strings. This is a bug in the wiring of the React streams.\");\n if (rowLength < chunk.length || chunk.length > 3 * rowLength) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n lastIdx = chunk.length;\n }\n if (-1 < lastIdx) {\n if (0 < buffer.length) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n i = chunk.slice(i, lastIdx);\n processFullStringRow(response, rowID, rowTag, i);\n i = lastIdx;\n 3 === rowState && i++;\n rowLength = rowID = rowTag = rowState = 0;\n buffer.length = 0;\n } else if (chunk.length !== i) throw Error(\"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\");\n }\n streamState._rowState = rowState;\n streamState._rowID = rowID;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n }\n } else processBinaryChunk(response$jscomp$0, streamState, chunk);\n });\n stream.on(\"error\", function(error) {\n reportGlobalError(response$jscomp$0, error);\n });\n stream.on(\"end\", function() {\n return close(response$jscomp$0);\n });\n return getRoot(response$jscomp$0);\n };\n exports.createFromReadableStream = function(stream, options) {\n options = createResponseFromOptions(options);\n startReadingFromStream(options, stream);\n return getRoot(options);\n };\n exports.createServerReference = function(id) {\n return createServerReference$1(id, noServerCall$1);\n };\n exports.createTemporaryReferenceSet = function() {\n return new Map();\n };\n exports.encodeReply = function(value, options) {\n return new Promise(function(resolve, reject) {\n var abort = processReply(value, \"\", options && options.temporaryReferences ? options.temporaryReferences : void 0, resolve, reject);\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) abort(signal.reason);\n else {\n var listener = function() {\n abort(signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n });\n };\n exports.registerServerReference = function(reference, id, encodeFormAction) {\n registerBoundServerReference(reference, id, null, encodeFormAction);\n return reference;\n };\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5ub2RlLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztDQVFDLEdBRVk7QUFDYixLQUVtREEsSUFEakQ7SUFDRSxTQUFTQyx1QkFBdUJDLGFBQWEsRUFBRUYsUUFBUTtRQUNyRCxJQUFJRSxlQUFlO1lBQ2pCLElBQUlDLGdCQUFnQkQsYUFBYSxDQUFDRixRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUtFLGdCQUFnQkMsaUJBQWlCQSxhQUFhLENBQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFDOURHLGdCQUFnQkQsY0FBY0UsSUFBSTtpQkFDL0I7Z0JBQ0hGLGdCQUFnQkMsaUJBQWlCQSxhQUFhLENBQUMsSUFBSTtnQkFDbkQsSUFBSSxDQUFDRCxlQUNILE1BQU1HLE1BQ0osZ0NBQ0VMLFFBQVEsQ0FBQyxFQUFFLEdBQ1g7Z0JBRU5HLGdCQUFnQkgsUUFBUSxDQUFDLEVBQUU7WUFDN0I7WUFDQSxPQUFPLE1BQU1BLFNBQVNNLE1BQU0sR0FDeEI7Z0JBQUNKLGNBQWNLLEVBQUU7Z0JBQUVMLGNBQWNNLE1BQU07Z0JBQUVMO2dCQUFlO2FBQUUsR0FDMUQ7Z0JBQUNELGNBQWNLLEVBQUU7Z0JBQUVMLGNBQWNNLE1BQU07Z0JBQUVMO2FBQWM7UUFDN0Q7UUFDQSxPQUFPSDtJQUNUO0lBQ0EsU0FBU1MsdUJBQXVCUCxhQUFhLEVBQUVLLEVBQUU7UUFDL0MsSUFBSUgsT0FBTyxJQUNUTSxxQkFBcUJSLGFBQWEsQ0FBQ0ssR0FBRztRQUN4QyxJQUFJRyxvQkFBb0JOLE9BQU9NLG1CQUFtQk4sSUFBSTthQUNqRDtZQUNILElBQUlPLE1BQU1KLEdBQUdLLFdBQVcsQ0FBQztZQUN6QixDQUFDLE1BQU1ELE9BQ0osUUFBUUosR0FBR00sS0FBSyxDQUFDRixNQUFNLElB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WixtQkFBbUIsR0FDM0IsS0FBSyxHQUNUcEYsU0FDQXFGO1lBRUYsSUFBSXlaLFdBQVdBLFFBQVFrRCxNQUFNLEVBQUU7Z0JBQzdCLElBQUlBLFNBQVNsRCxRQUFRa0QsTUFBTTtnQkFDM0IsSUFBSUEsT0FBT0MsT0FBTyxFQUFFRixNQUFNQyxPQUFPM2lCLE1BQU07cUJBQ2xDO29CQUNILElBQUl1UixXQUFXO3dCQUNibVIsTUFBTUMsT0FBTzNpQixNQUFNO3dCQUNuQjJpQixPQUFPRSxtQkFBbUIsQ0FBQyxTQUFTdFI7b0JBQ3RDO29CQUNBb1IsT0FBT0csZ0JBQWdCLENBQUMsU0FBU3ZSO2dCQUNuQztZQUNGO1FBQ0Y7SUFDRjtJQUNBc1EsK0JBQStCLEdBQUcsU0FDaEN6VyxTQUFTLEVBQ1RuTSxFQUFFLEVBQ0ZtTyxnQkFBZ0I7UUFFaEJELDZCQUE2Qi9CLFdBQVduTSxJQUFJLE1BQU1tTztRQUNsRCxPQUFPaEM7SUFDVDtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxjb21waWxlZFxccmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrXFxjanNcXHJlYWN0LXNlcnZlci1kb20td2VicGFjay1jbGllbnQubm9kZS5kZXZlbG9wbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stY2xpZW50Lm5vZGUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUNsaWVudFJlZmVyZW5jZShidW5kbGVyQ29uZmlnLCBtZXRhZGF0YSkge1xuICAgICAgaWYgKGJ1bmRsZXJDb25maWcpIHtcbiAgICAgICAgdmFyIG1vZHVsZUV4cG9ydHMgPSBidW5kbGVyQ29uZmlnW21ldGFkYXRhWzBdXTtcbiAgICAgICAgaWYgKChidW5kbGVyQ29uZmlnID0gbW9kdWxlRXhwb3J0cyAmJiBtb2R1bGVFeHBvcnRzW21ldGFkYXRhWzJdXSkpXG4gICAgICAgICAgbW9kdWxlRXhwb3J0cyA9IGJ1bmRsZXJDb25maWcubmFtZTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYnVuZGxlckNvbmZpZyA9IG1vZHVsZUV4cG9ydHMgJiYgbW9kdWxlRXhwb3J0c1tcIipcIl07XG4gICAgICAgICAgaWYgKCFidW5kbGVyQ29uZmlnKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCB0aGUgbW9kdWxlIFwiJyArXG4gICAgICAgICAgICAgICAgbWV0YWRhdGFbMF0gK1xuICAgICAgICAgICAgICAgICdcIiBpbiB0aGUgUmVhY3QgU2VydmVyIENvbnN1bWVyIE1hbmlmZXN0LiBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyBidW5kbGVyLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbW9kdWxlRXhwb3J0cyA9IG1ldGFkYXRhWzJdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiA0ID09PSBtZXRhZGF0YS5sZW5ndGhcbiAgICAgICAgICA/IFtidW5kbGVyQ29uZmlnLmlkLCBidW5kbGVyQ29uZmlnLmNodW5rcywgbW9kdWxlRXhwb3J0cywgMV1cbiAgICAgICAgICA6IFtidW5kbGVyQ29uZmlnLmlkLCBidW5kbGVyQ29uZmlnLmNodW5rcywgbW9kdWxlRXhwb3J0c107XG4gICAgICB9XG4gICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVTZXJ2ZXJSZWZlcmVuY2UoYnVuZGxlckNvbmZpZywgaWQpIHtcbiAgICAgIHZhciBuYW1lID0gXCJcIixcbiAgICAgICAgcmVzb2x2ZWRNb2R1bGVEYXRhID0gYnVuZGxlckNvbmZpZ1tpZF07XG4gICAgICBpZiAocmVzb2x2ZWRNb2R1bGVEYXRhKSBuYW1lID0gcmVzb2x2ZWRNb2R1bGVEYXRhLm5hbWU7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmFyIGlkeCA9IGlkLmxhc3RJbmRleE9mKFwiI1wiKTtcbiAgICAgICAgLTEgIT09IGlkeCAmJlxuICAgICAgICAgICgobmFtZSA9IGlkLnNsaWNlKGlkeCArIDEpKSxcbiAgICAgICAgICAocmVzb2x2ZWRNb2R1bGVEYXRhID0gYnVuZGxlckNvbmZpZ1tpZC5zbGljZSgwLCBpZHgpXSkpO1xuICAgICAgICBpZiAoIXJlc29sdmVkTW9kdWxlRGF0YSlcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCB0aGUgbW9kdWxlIFwiJyArXG4gICAgICAgICAgICAgIGlkICtcbiAgICAgICAgICAgICAgJ1wiIGluIHRoZSBSZWFjdCBTZXJ2ZXIgTWFuaWZlc3QuIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIGJ1bmRsZXIuJ1xuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZWRNb2R1bGVEYXRhLmFzeW5jXG4gICAgICAgID8gW3Jlc29sdmVkTW9kdWxlRGF0YS5pZCwgcmVzb2x2ZWRNb2R1bGVEYXRhLmNodW5rcywgbmFtZSwgMV1cbiAgICAgICAgOiBbcmVzb2x2ZWRNb2R1bGVEYXRhLmlkLCByZXNvbHZlZE1vZHVsZURhdGEuY2h1bmtzLCBuYW1lXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVxdWlyZUFzeW5jTW9kdWxlKGlkKSB7XG4gICAgICB2YXIgcHJvbWlzZSA9IGdsb2JhbFRoaXMuX19uZXh0X3JlcXVpcmVfXyhpZCk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgcHJvbWlzZS50aGVuIHx8IFwiZnVsZmlsbGVkXCIgPT09IHByb21pc2Uuc3RhdHVzKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHByb21pc2UudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcHJvbWlzZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICAgICAgICAgIHByb21pc2UudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAgIHByb21pc2Uuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICAgIHByb21pc2UucmVhc29uID0gcmVhc29uO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlnbm9yZVJlamVjdCgpIHt9XG4gICAgZnVuY3Rpb24gcHJlbG9hZE1vZHVsZShtZXRhZGF0YSkge1xuICAgICAgZm9yIChcbiAgICAgICAgdmFyIGNodW5rcyA9IG1ldGFkYXRhWzFdLCBwcm9taXNlcyA9IFtdLCBpID0gMDtcbiAgICAgICAgaSA8IGNodW5rcy5sZW5ndGg7XG5cbiAgICAgICkge1xuICAgICAgICB2YXIgY2h1bmtJZCA9IGNodW5rc1tpKytdO1xuICAgICAgICBjaHVua3NbaSsrXTtcbiAgICAgICAgdmFyIGVudHJ5ID0gY2h1bmtDYWNoZS5nZXQoY2h1bmtJZCk7XG4gICAgICAgIGlmICh2b2lkIDAgPT09IGVudHJ5KSB7XG4gICAgICAgICAgZW50cnkgPSBfX3dlYnBhY2tfY2h1bmtfbG9hZF9fKGNodW5rSWQpO1xuICAgICAgICAgIHByb21pc2VzLnB1c2goZW50cnkpO1xuICAgICAgICAgIHZhciByZXNvbHZlID0gY2h1bmtDYWNoZS5zZXQuYmluZChjaHVua0NhY2hlLCBjaHVua0lkLCBudWxsKTtcbiAgICAgICAgICBlbnRyeS50aGVuKHJlc29sdmUsIGlnbm9yZVJlamVjdCk7XG4gICAgICAgICAgY2h1bmtDYWNoZS5zZXQoY2h1bmtJZCwgZW50cnkpO1xuICAgICAgICB9IGVsc2UgbnVsbCAhPT0gZW50cnkgJiYgcHJvbWlzZXMucHVzaChlbnRyeSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gNCA9PT0gbWV0YWRhdGEubGVuZ3RoXG4gICAgICAgID8gMCA9PT0gcHJvbWlzZXMubGVuZ3RoXG4gICAgICAgICAgPyByZXF1aXJlQXN5bmNNb2R1bGUobWV0YWRhdGFbMF0pXG4gICAgICAgICAgOiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXF1aXJlQXN5bmNNb2R1bGUobWV0YWRhdGFbMF0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgOiAwIDwgcHJvbWlzZXMubGVuZ3RoXG4gICAgICAgICAgPyBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlcXVpcmVNb2R1bGUobWV0YWRhdGEpIHtcbiAgICAgIHZhciBtb2R1bGVFeHBvcnRzID0gZ2xvYmFsVGhpcy5fX25leHRfcmVxdWlyZV9fKG1ldGFkYXRhWzBdKTtcbiAgICAgIGlmICg0ID09PSBtZXRhZGF0YS5sZW5ndGggJiYgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbW9kdWxlRXhwb3J0cy50aGVuKVxuICAgICAgICBpZiAoXCJmdWxmaWxsZWRcIiA9PT0gbW9kdWxlRXhwb3J0cy5zdGF0dXMpXG4gICAgICAgICAgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZUV4cG9ydHMudmFsdWU7XG4gICAgICAgIGVsc2UgdGhyb3cgbW9kdWxlRXhwb3J0cy5yZWFzb247XG4gICAgICBpZiAoXCIqXCIgPT09IG1ldGFkYXRhWzJdKSByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICAgIGlmIChcIlwiID09PSBtZXRhZGF0YVsyXSlcbiAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHMuX19lc01vZHVsZSA/IG1vZHVsZUV4cG9ydHMuZGVmYXVsdCA6IG1vZHVsZUV4cG9ydHM7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChtb2R1bGVFeHBvcnRzLCBtZXRhZGF0YVsyXSkpXG4gICAgICAgIHJldHVybiBtb2R1bGVFeHBvcnRzW21ldGFkYXRhWzJdXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJlcGFyZURlc3RpbmF0aW9uV2l0aENodW5rcyhcbiAgICAgIG1vZHVsZUxvYWRpbmcsXG4gICAgICBjaHVua3MsXG4gICAgICBub25jZSRqc2NvbXAkMFxuICAgICkge1xuICAgICAgaWYgKG51bGwgIT09IG1vZHVsZUxvYWRpbmcpXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgICAgdmFyIG5vbmNlID0gbm9uY2UkanNjb21wJDAsXG4gICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QgPSBSZWFjdERPTVNoYXJlZEludGVybmFscy5kLFxuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wX2NvbnN0JGpzY29tcCQwID0gSlNDb21waWxlcl90ZW1wX2NvbnN0LlgsXG4gICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QkanNjb21wJDEgPSBtb2R1bGVMb2FkaW5nLnByZWZpeCArIGNodW5rc1tpXTtcbiAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gbW9kdWxlTG9hZGluZy5jcm9zc09yaWdpbjtcbiAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPVxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFxuICAgICAgICAgICAgICA/IFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFxuICAgICAgICAgICAgICAgID8gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgIDogdm9pZCAwO1xuICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdCRqc2NvbXAkMC5jYWxsKFxuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wX2NvbnN0LFxuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wX2NvbnN0JGpzY29tcCQxLFxuICAgICAgICAgICAgeyBjcm9zc09yaWdpbjogSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LCBub25jZTogbm9uY2UgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gICAgICBpZiAobnVsbCA9PT0gbWF5YmVJdGVyYWJsZSB8fCBcIm9iamVjdFwiICE9PSB0eXBlb2YgbWF5YmVJdGVyYWJsZSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBtYXliZUl0ZXJhYmxlID1cbiAgICAgICAgKE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0pIHx8XG4gICAgICAgIG1heWJlSXRlcmFibGVbXCJAQGl0ZXJhdG9yXCJdO1xuICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG1heWJlSXRlcmFibGUgPyBtYXliZUl0ZXJhYmxlIDogbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNPYmplY3RQcm90b3R5cGUob2JqZWN0KSB7XG4gICAgICBpZiAoIW9iamVjdCkgcmV0dXJuICExO1xuICAgICAgdmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG4gICAgICBpZiAob2JqZWN0ID09PSBPYmplY3RQcm90b3R5cGUpIHJldHVybiAhMDtcbiAgICAgIGlmIChnZXRQcm90b3R5cGVPZihvYmplY3QpKSByZXR1cm4gITE7XG4gICAgICBvYmplY3QgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyBpKyspXG4gICAgICAgIGlmICghKG9iamVjdFtpXSBpbiBPYmplY3RQcm90b3R5cGUpKSByZXR1cm4gITE7XG4gICAgICByZXR1cm4gITA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU2ltcGxlT2JqZWN0KG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdFByb3RvdHlwZShnZXRQcm90b3R5cGVPZihvYmplY3QpKSkgcmV0dXJuICExO1xuICAgICAgZm9yIChcbiAgICAgICAgdmFyIG5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KSwgaSA9IDA7XG4gICAgICAgIGkgPCBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGkrK1xuICAgICAgKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIG5hbWVzW2ldKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFkZXNjcmlwdG9yIHx8XG4gICAgICAgICAgKCFkZXNjcmlwdG9yLmVudW1lcmFibGUgJiZcbiAgICAgICAgICAgICgoXCJrZXlcIiAhPT0gbmFtZXNbaV0gJiYgXCJyZWZcIiAhPT0gbmFtZXNbaV0pIHx8XG4gICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0KSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gb2JqZWN0TmFtZShvYmplY3QpIHtcbiAgICAgIG9iamVjdCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpO1xuICAgICAgcmV0dXJuIG9iamVjdC5zbGljZSg4LCBvYmplY3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKGtleSkge1xuICAgICAgdmFyIGVuY29kZWRLZXkgPSBKU09OLnN0cmluZ2lmeShrZXkpO1xuICAgICAgcmV0dXJuICdcIicgKyBrZXkgKyAnXCInID09PSBlbmNvZGVkS2V5ID8ga2V5IDogZW5jb2RlZEtleTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZSh2YWx1ZSkge1xuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDEwID49IHZhbHVlLmxlbmd0aCA/IHZhbHVlIDogdmFsdWUuc2xpY2UoMCwgMTApICsgXCIuLi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICBpZiAoaXNBcnJheUltcGwodmFsdWUpKSByZXR1cm4gXCJbLi4uXVwiO1xuICAgICAgICAgIGlmIChudWxsICE9PSB2YWx1ZSAmJiB2YWx1ZS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUcpXG4gICAgICAgICAgICByZXR1cm4gXCJjbGllbnRcIjtcbiAgICAgICAgICB2YWx1ZSA9IG9iamVjdE5hbWUodmFsdWUpO1xuICAgICAgICAgIHJldHVybiBcIk9iamVjdFwiID09PSB2YWx1ZSA/IFwiey4uLn1cIiA6IHZhbHVlO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICByZXR1cm4gdmFsdWUuJCR0eXBlb2YgPT09IENMSUVOVF9SRUZFUkVOQ0VfVEFHXG4gICAgICAgICAgICA/IFwiY2xpZW50XCJcbiAgICAgICAgICAgIDogKHZhbHVlID0gdmFsdWUuZGlzcGxheU5hbWUgfHwgdmFsdWUubmFtZSlcbiAgICAgICAgICAgICAgPyBcImZ1bmN0aW9uIFwiICsgdmFsdWVcbiAgICAgICAgICAgICAgOiBcImZ1bmN0aW9uXCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZSkge1xuICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gdHlwZTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VMaXN0XCI7XG4gICAgICB9XG4gICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUucmVuZGVyKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUudHlwZSk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICB2YXIgcGF5bG9hZCA9IHR5cGUuX3BheWxvYWQ7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5faW5pdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUocGF5bG9hZCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKG9iamVjdE9yQXJyYXksIGV4cGFuZGVkTmFtZSkge1xuICAgICAgdmFyIG9iaktpbmQgPSBvYmplY3ROYW1lKG9iamVjdE9yQXJyYXkpO1xuICAgICAgaWYgKFwiT2JqZWN0XCIgIT09IG9iaktpbmQgJiYgXCJBcnJheVwiICE9PSBvYmpLaW5kKSByZXR1cm4gb2JqS2luZDtcbiAgICAgIHZhciBzdGFydCA9IC0xLFxuICAgICAgICBsZW5ndGggPSAwO1xuICAgICAgaWYgKGlzQXJyYXlJbXBsKG9iamVjdE9yQXJyYXkpKVxuICAgICAgICBpZiAoanN4Q2hpbGRyZW5QYXJlbnRzLmhhcyhvYmplY3RPckFycmF5KSkge1xuICAgICAgICAgIHZhciB0eXBlID0ganN4Q2hpbGRyZW5QYXJlbnRzLmdldChvYmplY3RPckFycmF5KTtcbiAgICAgICAgICBvYmpLaW5kID0gXCI8XCIgKyBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUpICsgXCI+XCI7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RPckFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3RPckFycmF5W2ldO1xuICAgICAgICAgICAgdmFsdWUgPVxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgdmFsdWVcbiAgICAgICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgICAgOiBcIm9iamVjdFwiID09PSB0eXBlb2YgdmFsdWUgJiYgbnVsbCAhPT0gdmFsdWVcbiAgICAgICAgICAgICAgICAgID8gXCJ7XCIgKyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh2YWx1ZSkgKyBcIn1cIlxuICAgICAgICAgICAgICAgICAgOiBcIntcIiArIGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgXCJ9XCI7XG4gICAgICAgICAgICBcIlwiICsgaSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAobGVuZ3RoID0gdmFsdWUubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAob2JqS2luZCArPSB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgMTUgPiB2YWx1ZS5sZW5ndGggJiYgNDAgPiBvYmpLaW5kLmxlbmd0aCArIHZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcInsuLi59XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYmpLaW5kICs9IFwiPC9cIiArIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZSkgKyBcIj5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpLaW5kID0gXCJbXCI7XG4gICAgICAgICAgZm9yICh0eXBlID0gMDsgdHlwZSA8IG9iamVjdE9yQXJyYXkubGVuZ3RoOyB0eXBlKyspXG4gICAgICAgICAgICAwIDwgdHlwZSAmJiAob2JqS2luZCArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAoaSA9IG9iamVjdE9yQXJyYXlbdHlwZV0pLFxuICAgICAgICAgICAgICAoaSA9XG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGkgJiYgbnVsbCAhPT0gaVxuICAgICAgICAgICAgICAgICAgPyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShpKVxuICAgICAgICAgICAgICAgICAgOiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKGkpKSxcbiAgICAgICAgICAgICAgXCJcIiArIHR5cGUgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChsZW5ndGggPSBpLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAob2JqS2luZCArPSBpKSlcbiAgICAgICAgICAgICAgICA6IChvYmpLaW5kID1cbiAgICAgICAgICAgICAgICAgICAgMTAgPiBpLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgaS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyBpXG4gICAgICAgICAgICAgICAgICAgICAgOiBvYmpLaW5kICsgXCIuLi5cIik7XG4gICAgICAgICAgb2JqS2luZCArPSBcIl1cIjtcbiAgICAgICAgfVxuICAgICAgZWxzZSBpZiAob2JqZWN0T3JBcnJheS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKVxuICAgICAgICBvYmpLaW5kID0gXCI8XCIgKyBkZXNjcmliZUVsZW1lbnRUeXBlKG9iamVjdE9yQXJyYXkudHlwZSkgKyBcIi8+XCI7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKG9iamVjdE9yQXJyYXkuJCR0eXBlb2YgPT09IENMSUVOVF9SRUZFUkVOQ0VfVEFHKSByZXR1cm4gXCJjbGllbnRcIjtcbiAgICAgICAgaWYgKGpzeFByb3BzUGFyZW50cy5oYXMob2JqZWN0T3JBcnJheSkpIHtcbiAgICAgICAgICBvYmpLaW5kID0ganN4UHJvcHNQYXJlbnRzLmdldChvYmplY3RPckFycmF5KTtcbiAgICAgICAgICBvYmpLaW5kID0gXCI8XCIgKyAoZGVzY3JpYmVFbGVtZW50VHlwZShvYmpLaW5kKSB8fCBcIi4uLlwiKTtcbiAgICAgICAgICB0eXBlID0gT2JqZWN0LmtleXMob2JqZWN0T3JBcnJheSk7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IHR5cGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9iaktpbmQgKz0gXCIgXCI7XG4gICAgICAgICAgICB2YWx1ZSA9IHR5cGVbaV07XG4gICAgICAgICAgICBvYmpLaW5kICs9IGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwiPVwiO1xuICAgICAgICAgICAgdmFyIF92YWx1ZTIgPSBvYmplY3RPckFycmF5W3ZhbHVlXTtcbiAgICAgICAgICAgIHZhciBfc3Vic3RyMiA9XG4gICAgICAgICAgICAgIHZhbHVlID09PSBleHBhbmRlZE5hbWUgJiZcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIF92YWx1ZTIgJiZcbiAgICAgICAgICAgICAgbnVsbCAhPT0gX3ZhbHVlMlxuICAgICAgICAgICAgICAgID8gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMilcbiAgICAgICAgICAgICAgICA6IGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMik7XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgX3ZhbHVlMiAmJiAoX3N1YnN0cjIgPSBcIntcIiArIF9zdWJzdHIyICsgXCJ9XCIpO1xuICAgICAgICAgICAgdmFsdWUgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICAgICAgICA/ICgoc3RhcnQgPSBvYmpLaW5kLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgKGxlbmd0aCA9IF9zdWJzdHIyLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgKG9iaktpbmQgKz0gX3N1YnN0cjIpKVxuICAgICAgICAgICAgICA6IChvYmpLaW5kID1cbiAgICAgICAgICAgICAgICAgIDEwID4gX3N1YnN0cjIubGVuZ3RoICYmIDQwID4gb2JqS2luZC5sZW5ndGggKyBfc3Vic3RyMi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBvYmpLaW5kICsgX3N1YnN0cjJcbiAgICAgICAgICAgICAgICAgICAgOiBvYmpLaW5kICsgXCIuLi5cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iaktpbmQgKz0gXCI+XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqS2luZCA9IFwie1wiO1xuICAgICAgICAgIHR5cGUgPSBPYmplY3Qua2V5cyhvYmplY3RPckFycmF5KTtcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHlwZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIDAgPCBpICYmIChvYmpLaW5kICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICh2YWx1ZSA9IHR5cGVbaV0pLFxuICAgICAgICAgICAgICAob2JqS2luZCArPSBkZXNjcmliZUtleUZvckVycm9yTWVzc2FnZSh2YWx1ZSkgKyBcIjogXCIpLFxuICAgICAgICAgICAgICAoX3ZhbHVlMiA9IG9iamVjdE9yQXJyYXlbdmFsdWVdKSxcbiAgICAgICAgICAgICAgKF92YWx1ZTIgPVxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBfdmFsdWUyICYmIG51bGwgIT09IF92YWx1ZTJcbiAgICAgICAgICAgICAgICAgID8gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMilcbiAgICAgICAgICAgICAgICAgIDogZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZShfdmFsdWUyKSksXG4gICAgICAgICAgICAgIHZhbHVlID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgICAgICAgICA/ICgoc3RhcnQgPSBvYmpLaW5kLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAobGVuZ3RoID0gX3ZhbHVlMi5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgKG9iaktpbmQgKz0gX3ZhbHVlMikpXG4gICAgICAgICAgICAgICAgOiAob2JqS2luZCA9XG4gICAgICAgICAgICAgICAgICAgIDEwID4gX3ZhbHVlMi5sZW5ndGggJiYgNDAgPiBvYmpLaW5kLmxlbmd0aCArIF92YWx1ZTIubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgPyBvYmpLaW5kICsgX3ZhbHVlMlxuICAgICAgICAgICAgICAgICAgICAgIDogb2JqS2luZCArIFwiLi4uXCIpO1xuICAgICAgICAgIG9iaktpbmQgKz0gXCJ9XCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2b2lkIDAgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICA/IG9iaktpbmRcbiAgICAgICAgOiAtMSA8IHN0YXJ0ICYmIDAgPCBsZW5ndGhcbiAgICAgICAgICA/ICgob2JqZWN0T3JBcnJheSA9IFwiIFwiLnJlcGVhdChzdGFydCkgKyBcIl5cIi5yZXBlYXQobGVuZ3RoKSksXG4gICAgICAgICAgICBcIlxcbiAgXCIgKyBvYmpLaW5kICsgXCJcXG4gIFwiICsgb2JqZWN0T3JBcnJheSlcbiAgICAgICAgICA6IFwiXFxuICBcIiArIG9iaktpbmQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZU51bWJlcihudW1iZXIpIHtcbiAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobnVtYmVyKVxuICAgICAgICA/IDAgPT09IG51bWJlciAmJiAtSW5maW5pdHkgPT09IDEgLyBudW1iZXJcbiAgICAgICAgICA/IFwiJC0wXCJcbiAgICAgICAgICA6IG51bWJlclxuICAgICAgICA6IEluZmluaXR5ID09PSBudW1iZXJcbiAgICAgICAgICA/IFwiJEluZmluaXR5XCJcbiAgICAgICAgICA6IC1JbmZpbml0eSA9PT0gbnVtYmVyXG4gICAgICAgICAgICA/IFwiJC1JbmZpbml0eVwiXG4gICAgICAgICAgICA6IFwiJE5hTlwiO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVwbHkoXG4gICAgICByb290LFxuICAgICAgZm9ybUZpZWxkUHJlZml4LFxuICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcyxcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3RcbiAgICApIHtcbiAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZVR5cGVkQXJyYXkodGFnLCB0eXBlZEFycmF5KSB7XG4gICAgICAgIHR5cGVkQXJyYXkgPSBuZXcgQmxvYihbXG4gICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoXG4gICAgICAgICAgICB0eXBlZEFycmF5LmJ1ZmZlcixcbiAgICAgICAgICAgIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHR5cGVkQXJyYXkuYnl0ZUxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgXSk7XG4gICAgICAgIHZhciBibG9iSWQgPSBuZXh0UGFydElkKys7XG4gICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIGJsb2JJZCwgdHlwZWRBcnJheSk7XG4gICAgICAgIHJldHVybiBcIiRcIiArIHRhZyArIGJsb2JJZC50b1N0cmluZygxNik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVCaW5hcnlSZWFkZXIocmVhZGVyKSB7XG4gICAgICAgIGZ1bmN0aW9uIHByb2dyZXNzKGVudHJ5KSB7XG4gICAgICAgICAgZW50cnkuZG9uZVxuICAgICAgICAgICAgPyAoKGVudHJ5ID0gbmV4dFBhcnRJZCsrKSxcbiAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgZW50cnksIG5ldyBCbG9iKGJ1ZmZlcikpLFxuICAgICAgICAgICAgICBkYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAnXCIkbycgKyBlbnRyeS50b1N0cmluZygxNikgKyAnXCInXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIHN0cmVhbUlkLCBcIkNcIiksXG4gICAgICAgICAgICAgIHBlbmRpbmdQYXJ0cy0tLFxuICAgICAgICAgICAgICAwID09PSBwZW5kaW5nUGFydHMgJiYgcmVzb2x2ZShkYXRhKSlcbiAgICAgICAgICAgIDogKGJ1ZmZlci5wdXNoKGVudHJ5LnZhbHVlKSxcbiAgICAgICAgICAgICAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTAyNCkpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCkpO1xuICAgICAgICB9XG4gICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgdmFyIGRhdGEgPSBmb3JtRGF0YTtcbiAgICAgICAgcGVuZGluZ1BhcnRzKys7XG4gICAgICAgIHZhciBzdHJlYW1JZCA9IG5leHRQYXJ0SWQrKyxcbiAgICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgcmVhZGVyLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTAyNCkpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCk7XG4gICAgICAgIHJldHVybiBcIiRyXCIgKyBzdHJlYW1JZC50b1N0cmluZygxNik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVSZWFkZXIocmVhZGVyKSB7XG4gICAgICAgIGZ1bmN0aW9uIHByb2dyZXNzKGVudHJ5KSB7XG4gICAgICAgICAgaWYgKGVudHJ5LmRvbmUpXG4gICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgXCJDXCIpLFxuICAgICAgICAgICAgICBwZW5kaW5nUGFydHMtLSxcbiAgICAgICAgICAgICAgMCA9PT0gcGVuZGluZ1BhcnRzICYmIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdmFyIHBhcnRKU09OID0gSlNPTi5zdHJpbmdpZnkoZW50cnkudmFsdWUsIHJlc29sdmVUb0pTT04pO1xuICAgICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgcGFydEpTT04pO1xuICAgICAgICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICAgIHJlamVjdCh4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgIHZhciBkYXRhID0gZm9ybURhdGE7XG4gICAgICAgIHBlbmRpbmdQYXJ0cysrO1xuICAgICAgICB2YXIgc3RyZWFtSWQgPSBuZXh0UGFydElkKys7XG4gICAgICAgIHJlYWRlci5yZWFkKCkudGhlbihwcm9ncmVzcywgcmVqZWN0KTtcbiAgICAgICAgcmV0dXJuIFwiJFJcIiArIHN0cmVhbUlkLnRvU3RyaW5nKDE2KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZVJlYWRhYmxlU3RyZWFtKHN0cmVhbSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBiaW5hcnlSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKHsgbW9kZTogXCJieW9iXCIgfSk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICByZXR1cm4gc2VyaWFsaXplUmVhZGVyKHN0cmVhbS5nZXRSZWFkZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUJpbmFyeVJlYWRlcihiaW5hcnlSZWFkZXIpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gc2VyaWFsaXplQXN5bmNJdGVyYWJsZShpdGVyYWJsZSwgaXRlcmF0b3IpIHtcbiAgICAgICAgZnVuY3Rpb24gcHJvZ3Jlc3MoZW50cnkpIHtcbiAgICAgICAgICBpZiAoZW50cnkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZW50cnkudmFsdWUpXG4gICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIHN0cmVhbUlkLCBcIkNcIik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcnRKU09OID0gSlNPTi5zdHJpbmdpZnkoZW50cnkudmFsdWUsIHJlc29sdmVUb0pTT04pO1xuICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIHN0cmVhbUlkLCBcIkNcIiArIHBhcnRKU09OKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICAgIHJlamVjdCh4KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlbmRpbmdQYXJ0cy0tO1xuICAgICAgICAgICAgMCA9PT0gcGVuZGluZ1BhcnRzICYmIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB2YXIgX3BhcnRKU09OID0gSlNPTi5zdHJpbmdpZnkoZW50cnkudmFsdWUsIHJlc29sdmVUb0pTT04pO1xuICAgICAgICAgICAgICBkYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBzdHJlYW1JZCwgX3BhcnRKU09OKTtcbiAgICAgICAgICAgICAgaXRlcmF0b3IubmV4dCgpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCk7XG4gICAgICAgICAgICB9IGNhdGNoICh4JDApIHtcbiAgICAgICAgICAgICAgcmVqZWN0KHgkMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgJiYgKGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkpO1xuICAgICAgICB2YXIgZGF0YSA9IGZvcm1EYXRhO1xuICAgICAgICBwZW5kaW5nUGFydHMrKztcbiAgICAgICAgdmFyIHN0cmVhbUlkID0gbmV4dFBhcnRJZCsrO1xuICAgICAgICBpdGVyYWJsZSA9IGl0ZXJhYmxlID09PSBpdGVyYXRvcjtcbiAgICAgICAgaXRlcmF0b3IubmV4dCgpLnRoZW4ocHJvZ3Jlc3MsIHJlamVjdCk7XG4gICAgICAgIHJldHVybiBcIiRcIiArIChpdGVyYWJsZSA/IFwieFwiIDogXCJYXCIpICsgc3RyZWFtSWQudG9TdHJpbmcoMTYpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVRvSlNPTihrZXksIHZhbHVlKSB7XG4gICAgICAgIFwiX19wcm90b19fXCIgPT09IGtleSAmJlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkV4cGVjdGVkIG5vdCB0byBzZXJpYWxpemUgYW4gb2JqZWN0IHdpdGggb3duIHByb3BlcnR5IGBfX3Byb3RvX19gLiBXaGVuIHBhcnNlZCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgb21pdHRlZC4lc1wiLFxuICAgICAgICAgICAgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodGhpcywga2V5KVxuICAgICAgICAgICk7XG4gICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gdGhpc1trZXldO1xuICAgICAgICBcIm9iamVjdFwiICE9PSB0eXBlb2Ygb3JpZ2luYWxWYWx1ZSB8fFxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPT09IHZhbHVlIHx8XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAoXCJPYmplY3RcIiAhPT0gb2JqZWN0TmFtZShvcmlnaW5hbFZhbHVlKVxuICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQuICVzIG9iamVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQuJXNcIixcbiAgICAgICAgICAgICAgICBvYmplY3ROYW1lKG9yaWdpbmFsVmFsdWUpLFxuICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQuIE9iamVjdHMgd2l0aCB0b0pTT04gbWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZC4gQ29udmVydCBpdCBtYW51YWxseSB0byBhIHNpbXBsZSB2YWx1ZSBiZWZvcmUgcGFzc2luZyBpdCB0byBwcm9wcy4lc1wiLFxuICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgIGlmIChudWxsID09PSB2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICBzd2l0Y2ggKHZhbHVlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdGVtcG9yYXJ5UmVmZXJlbmNlcyAmJiAtMSA9PT0ga2V5LmluZGV4T2YoXCI6XCIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcmVudFJlZmVyZW5jZSA9IHdyaXR0ZW5PYmplY3RzLmdldCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZWZlcmVuY2VzLnNldChwYXJlbnRSZWZlcmVuY2UgKyBcIjpcIiArIGtleSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICBcIiRUXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJSZWFjdCBFbGVtZW50IGNhbm5vdCBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucyBmcm9tIHRoZSBDbGllbnQgd2l0aG91dCBhIHRlbXBvcmFyeSByZWZlcmVuY2Ugc2V0LiBQYXNzIGEgVGVtcG9yYXJ5UmVmZXJlbmNlU2V0IHRvIHRoZSBvcHRpb25zLlwiICtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdmFsdWUuX3BheWxvYWQ7XG4gICAgICAgICAgICAgIHZhciBpbml0ID0gdmFsdWUuX2luaXQ7XG4gICAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgICAgICAgcGVuZGluZ1BhcnRzKys7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFyZW50UmVmZXJlbmNlID0gaW5pdChvcmlnaW5hbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YXIgbGF6eUlkID0gbmV4dFBhcnRJZCsrLFxuICAgICAgICAgICAgICAgICAgcGFydEpTT04gPSBzZXJpYWxpemVNb2RlbChwYXJlbnRSZWZlcmVuY2UsIGxhenlJZCk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIGxhenlJZCwgcGFydEpTT04pO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIiRcIiArIGxhenlJZC50b1N0cmluZygxNik7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgeCAmJlxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0geCAmJlxuICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgeC50aGVuXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBwZW5kaW5nUGFydHMrKztcbiAgICAgICAgICAgICAgICAgIHZhciBfbGF6eUlkID0gbmV4dFBhcnRJZCsrO1xuICAgICAgICAgICAgICAgICAgcGFyZW50UmVmZXJlbmNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBfcGFydEpTT04yID0gc2VyaWFsaXplTW9kZWwodmFsdWUsIF9sYXp5SWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2RhdGEgPSBmb3JtRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICBfZGF0YS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgX2xhenlJZCwgX3BhcnRKU09OMik7XG4gICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1BhcnRzLS07XG4gICAgICAgICAgICAgICAgICAgICAgMCA9PT0gcGVuZGluZ1BhcnRzICYmIHJlc29sdmUoX2RhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHgudGhlbihwYXJlbnRSZWZlcmVuY2UsIHBhcmVudFJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCIkXCIgKyBfbGF6eUlkLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVqZWN0KHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHBlbmRpbmdQYXJ0cy0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IHdyaXR0ZW5PYmplY3RzLmdldCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlLnRoZW4pIHtcbiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHBhcmVudFJlZmVyZW5jZSlcbiAgICAgICAgICAgICAgaWYgKG1vZGVsUm9vdCA9PT0gdmFsdWUpIG1vZGVsUm9vdCA9IG51bGw7XG4gICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHBhcmVudFJlZmVyZW5jZTtcbiAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgICAgIHBlbmRpbmdQYXJ0cysrO1xuICAgICAgICAgICAgdmFyIHByb21pc2VJZCA9IG5leHRQYXJ0SWQrKztcbiAgICAgICAgICAgIGtleSA9IFwiJEBcIiArIHByb21pc2VJZC50b1N0cmluZygxNik7XG4gICAgICAgICAgICB3cml0dGVuT2JqZWN0cy5zZXQodmFsdWUsIGtleSk7XG4gICAgICAgICAgICB2YWx1ZS50aGVuKGZ1bmN0aW9uIChwYXJ0VmFsdWUpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQocGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YXIgX3BhcnRKU09OMyA9XG4gICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHByZXZpb3VzUmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkocHJldmlvdXNSZWZlcmVuY2UpXG4gICAgICAgICAgICAgICAgICAgIDogc2VyaWFsaXplTW9kZWwocGFydFZhbHVlLCBwcm9taXNlSWQpO1xuICAgICAgICAgICAgICAgIHBhcnRWYWx1ZSA9IGZvcm1EYXRhO1xuICAgICAgICAgICAgICAgIHBhcnRWYWx1ZS5hcHBlbmQoZm9ybUZpZWxkUHJlZml4ICsgcHJvbWlzZUlkLCBfcGFydEpTT04zKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUGFydHMtLTtcbiAgICAgICAgICAgICAgICAwID09PSBwZW5kaW5nUGFydHMgJiYgcmVzb2x2ZShwYXJ0VmFsdWUpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgICAgICAgICByZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHBhcmVudFJlZmVyZW5jZSlcbiAgICAgICAgICAgIGlmIChtb2RlbFJvb3QgPT09IHZhbHVlKSBtb2RlbFJvb3QgPSBudWxsO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gcGFyZW50UmVmZXJlbmNlO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIC0xID09PSBrZXkuaW5kZXhPZihcIjpcIikgJiZcbiAgICAgICAgICAgICAgKChwYXJlbnRSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQodGhpcykpLFxuICAgICAgICAgICAgICB2b2lkIDAgIT09IHBhcmVudFJlZmVyZW5jZSAmJlxuICAgICAgICAgICAgICAgICgocGFyZW50UmVmZXJlbmNlID0gcGFyZW50UmVmZXJlbmNlICsgXCI6XCIgKyBrZXkpLFxuICAgICAgICAgICAgICAgIHdyaXR0ZW5PYmplY3RzLnNldCh2YWx1ZSwgcGFyZW50UmVmZXJlbmNlKSxcbiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHRlbXBvcmFyeVJlZmVyZW5jZXMgJiZcbiAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeVJlZmVyZW5jZXMuc2V0KHBhcmVudFJlZmVyZW5jZSwgdmFsdWUpKSk7XG4gICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSk7XG4gICAgICAgICAgICB2YXIgX2RhdGEzID0gZm9ybURhdGE7XG4gICAgICAgICAgICBrZXkgPSBuZXh0UGFydElkKys7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gZm9ybUZpZWxkUHJlZml4ICsga2V5ICsgXCJfXCI7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChvcmlnaW5hbFZhbHVlLCBvcmlnaW5hbEtleSkge1xuICAgICAgICAgICAgICBfZGF0YTMuYXBwZW5kKHByZWZpeCArIG9yaWdpbmFsS2V5LCBvcmlnaW5hbFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFwiJEtcIiArIGtleS50b1N0cmluZygxNik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChrZXkgPSBuZXh0UGFydElkKyspLFxuICAgICAgICAgICAgICAocGFyZW50UmVmZXJlbmNlID0gc2VyaWFsaXplTW9kZWwoQXJyYXkuZnJvbSh2YWx1ZSksIGtleSkpLFxuICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSksXG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBrZXksIHBhcmVudFJlZmVyZW5jZSksXG4gICAgICAgICAgICAgIFwiJFFcIiArIGtleS50b1N0cmluZygxNilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKGtleSA9IG5leHRQYXJ0SWQrKyksXG4gICAgICAgICAgICAgIChwYXJlbnRSZWZlcmVuY2UgPSBzZXJpYWxpemVNb2RlbChBcnJheS5mcm9tKHZhbHVlKSwga2V5KSksXG4gICAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKSxcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1GaWVsZFByZWZpeCArIGtleSwgcGFyZW50UmVmZXJlbmNlKSxcbiAgICAgICAgICAgICAgXCIkV1wiICsga2V5LnRvU3RyaW5nKDE2KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChrZXkgPSBuZXcgQmxvYihbdmFsdWVdKSksXG4gICAgICAgICAgICAgIChwYXJlbnRSZWZlcmVuY2UgPSBuZXh0UGFydElkKyspLFxuICAgICAgICAgICAgICBudWxsID09PSBmb3JtRGF0YSAmJiAoZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKSksXG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBwYXJlbnRSZWZlcmVuY2UsIGtleSksXG4gICAgICAgICAgICAgIFwiJEFcIiArIHBhcmVudFJlZmVyZW5jZS50b1N0cmluZygxNilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSW50OEFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJPXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJvXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwiVVwiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSW50MTZBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwiU1wiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDE2QXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcInNcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEludDMyQXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIkxcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVR5cGVkQXJyYXkoXCJsXCIsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIkdcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwiZ1wiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQmlnSW50NjRBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVUeXBlZEFycmF5KFwiTVwiLCB2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQmlnVWludDY0QXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIm1cIiwgdmFsdWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFWaWV3KSByZXR1cm4gc2VyaWFsaXplVHlwZWRBcnJheShcIlZcIiwgdmFsdWUpO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYilcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKSxcbiAgICAgICAgICAgICAgKGtleSA9IG5leHRQYXJ0SWQrKyksXG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBrZXksIHZhbHVlKSxcbiAgICAgICAgICAgICAgXCIkQlwiICsga2V5LnRvU3RyaW5nKDE2KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoKHBhcmVudFJlZmVyZW5jZSA9IGdldEl0ZXJhdG9yRm4odmFsdWUpKSlcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChwYXJlbnRSZWZlcmVuY2UgPSBwYXJlbnRSZWZlcmVuY2UuY2FsbCh2YWx1ZSkpLFxuICAgICAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPT09IHZhbHVlXG4gICAgICAgICAgICAgICAgPyAoKGtleSA9IG5leHRQYXJ0SWQrKyksXG4gICAgICAgICAgICAgICAgICAocGFyZW50UmVmZXJlbmNlID0gc2VyaWFsaXplTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LmZyb20ocGFyZW50UmVmZXJlbmNlKSxcbiAgICAgICAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKSxcbiAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmb3JtRmllbGRQcmVmaXggKyBrZXksIHBhcmVudFJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgICBcIiRpXCIgKyBrZXkudG9TdHJpbmcoMTYpKVxuICAgICAgICAgICAgICAgIDogQXJyYXkuZnJvbShwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFJlYWRhYmxlU3RyZWFtICYmXG4gICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVJlYWRhYmxlU3RyZWFtKHZhbHVlKTtcbiAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgPSB2YWx1ZVtBU1lOQ19JVEVSQVRPUl07XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHBhcmVudFJlZmVyZW5jZSlcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVBc3luY0l0ZXJhYmxlKHZhbHVlLCBwYXJlbnRSZWZlcmVuY2UuY2FsbCh2YWx1ZSkpO1xuICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IGdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJlbnRSZWZlcmVuY2UgIT09IE9iamVjdFByb3RvdHlwZSAmJlxuICAgICAgICAgICAgKG51bGwgPT09IHBhcmVudFJlZmVyZW5jZSB8fFxuICAgICAgICAgICAgICBudWxsICE9PSBnZXRQcm90b3R5cGVPZihwYXJlbnRSZWZlcmVuY2UpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdGVtcG9yYXJ5UmVmZXJlbmNlcylcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJPbmx5IHBsYWluIG9iamVjdHMsIGFuZCBhIGZldyBidWlsdC1pbnMsIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucy4gQ2xhc3NlcyBvciBudWxsIHByb3RvdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXCIgK1xuICAgICAgICAgICAgICAgICAgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodGhpcywga2V5KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIFwiJFRcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRVxuICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiUmVhY3QgQ29udGV4dCBQcm92aWRlcnMgY2Fubm90IGJlIHBhc3NlZCB0byBTZXJ2ZXIgRnVuY3Rpb25zIGZyb20gdGhlIENsaWVudC4lc1wiLFxuICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBcIk9iamVjdFwiICE9PSBvYmplY3ROYW1lKHZhbHVlKVxuICAgICAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIk9ubHkgcGxhaW4gb2JqZWN0cyBjYW4gYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMgZnJvbSB0aGUgQ2xpZW50LiAlcyBvYmplY3RzIGFyZSBub3Qgc3VwcG9ydGVkLiVzXCIsXG4gICAgICAgICAgICAgICAgICBvYmplY3ROYW1lKHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHRoaXMsIGtleSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogaXNTaW1wbGVPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmXG4gICAgICAgICAgICAgICAgICAoKHBhcmVudFJlZmVyZW5jZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpKSxcbiAgICAgICAgICAgICAgICAgIDAgPCBwYXJlbnRSZWZlcmVuY2UubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJPbmx5IHBsYWluIG9iamVjdHMgY2FuIGJlIHBhc3NlZCB0byBTZXJ2ZXIgRnVuY3Rpb25zIGZyb20gdGhlIENsaWVudC4gT2JqZWN0cyB3aXRoIHN5bWJvbCBwcm9wZXJ0aWVzIGxpa2UgJXMgYXJlIG5vdCBzdXBwb3J0ZWQuJXNcIixcbiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRSZWZlcmVuY2VbMF0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodGhpcywga2V5KVxuICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJPbmx5IHBsYWluIG9iamVjdHMgY2FuIGJlIHBhc3NlZCB0byBTZXJ2ZXIgRnVuY3Rpb25zIGZyb20gdGhlIENsaWVudC4gQ2xhc3NlcyBvciBvdGhlciBvYmplY3RzIHdpdGggbWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZC4lc1wiLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSh0aGlzLCBrZXkpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKFwiWlwiID09PSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSAmJiB0aGlzW2tleV0gaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgICAgcmV0dXJuIFwiJERcIiArIHZhbHVlO1xuICAgICAgICAgIGtleSA9IFwiJFwiID09PSB2YWx1ZVswXSA/IFwiJFwiICsgdmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChcImJvb2xlYW5cIiA9PT0gdHlwZW9mIHZhbHVlKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGlmIChcIm51bWJlclwiID09PSB0eXBlb2YgdmFsdWUpIHJldHVybiBzZXJpYWxpemVOdW1iZXIodmFsdWUpO1xuICAgICAgICBpZiAoXCJ1bmRlZmluZWRcIiA9PT0gdHlwZW9mIHZhbHVlKSByZXR1cm4gXCIkdW5kZWZpbmVkXCI7XG4gICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IGtub3duU2VydmVyUmVmZXJlbmNlcy5nZXQodmFsdWUpO1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHBhcmVudFJlZmVyZW5jZSkge1xuICAgICAgICAgICAga2V5ID0gd3JpdHRlbk9iamVjdHMuZ2V0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGtleSkgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIGtleSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB7IGlkOiBwYXJlbnRSZWZlcmVuY2UuaWQsIGJvdW5kOiBwYXJlbnRSZWZlcmVuY2UuYm91bmQgfSxcbiAgICAgICAgICAgICAgcmVzb2x2ZVRvSlNPTlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG51bGwgPT09IGZvcm1EYXRhICYmIChmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpKTtcbiAgICAgICAgICAgIHBhcmVudFJlZmVyZW5jZSA9IG5leHRQYXJ0SWQrKztcbiAgICAgICAgICAgIGZvcm1EYXRhLnNldChmb3JtRmllbGRQcmVmaXggKyBwYXJlbnRSZWZlcmVuY2UsIGtleSk7XG4gICAgICAgICAgICBrZXkgPSBcIiRoXCIgKyBwYXJlbnRSZWZlcmVuY2UudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgd3JpdHRlbk9iamVjdHMuc2V0KHZhbHVlLCBrZXkpO1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdm9pZCAwICE9PSB0ZW1wb3JhcnlSZWZlcmVuY2VzICYmXG4gICAgICAgICAgICAtMSA9PT0ga2V5LmluZGV4T2YoXCI6XCIpICYmXG4gICAgICAgICAgICAoKHBhcmVudFJlZmVyZW5jZSA9IHdyaXR0ZW5PYmplY3RzLmdldCh0aGlzKSksXG4gICAgICAgICAgICB2b2lkIDAgIT09IHBhcmVudFJlZmVyZW5jZSlcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICB0ZW1wb3JhcnlSZWZlcmVuY2VzLnNldChwYXJlbnRSZWZlcmVuY2UgKyBcIjpcIiArIGtleSwgdmFsdWUpLCBcIiRUXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkNsaWVudCBGdW5jdGlvbnMgY2Fubm90IGJlIHBhc3NlZCBkaXJlY3RseSB0byBTZXJ2ZXIgRnVuY3Rpb25zLiBPbmx5IEZ1bmN0aW9ucyBwYXNzZWQgZnJvbSB0aGUgU2VydmVyIGNhbiBiZSBwYXNzZWQgYmFjayBhZ2Fpbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwic3ltYm9sXCIgPT09IHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gdGVtcG9yYXJ5UmVmZXJlbmNlcyAmJlxuICAgICAgICAgICAgLTEgPT09IGtleS5pbmRleE9mKFwiOlwiKSAmJlxuICAgICAgICAgICAgKChwYXJlbnRSZWZlcmVuY2UgPSB3cml0dGVuT2JqZWN0cy5nZXQodGhpcykpLFxuICAgICAgICAgICAgdm9pZCAwICE9PSBwYXJlbnRSZWZlcmVuY2UpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGVtcG9yYXJ5UmVmZXJlbmNlcy5zZXQocGFyZW50UmVmZXJlbmNlICsgXCI6XCIgKyBrZXksIHZhbHVlKSwgXCIkVFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJTeW1ib2xzIGNhbm5vdCBiZSBwYXNzZWQgdG8gYSBTZXJ2ZXIgRnVuY3Rpb24gd2l0aG91dCBhIHRlbXBvcmFyeSByZWZlcmVuY2Ugc2V0LiBQYXNzIGEgVGVtcG9yYXJ5UmVmZXJlbmNlU2V0IHRvIHRoZSBvcHRpb25zLlwiICtcbiAgICAgICAgICAgICAgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodGhpcywga2V5KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwiYmlnaW50XCIgPT09IHR5cGVvZiB2YWx1ZSkgcmV0dXJuIFwiJG5cIiArIHZhbHVlLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJUeXBlIFwiICtcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSArXG4gICAgICAgICAgICBcIiBpcyBub3Qgc3VwcG9ydGVkIGFzIGFuIGFyZ3VtZW50IHRvIGEgU2VydmVyIEZ1bmN0aW9uLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBzZXJpYWxpemVNb2RlbChtb2RlbCwgaWQpIHtcbiAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG1vZGVsICYmXG4gICAgICAgICAgbnVsbCAhPT0gbW9kZWwgJiZcbiAgICAgICAgICAoKGlkID0gXCIkXCIgKyBpZC50b1N0cmluZygxNikpLFxuICAgICAgICAgIHdyaXR0ZW5PYmplY3RzLnNldChtb2RlbCwgaWQpLFxuICAgICAgICAgIHZvaWQgMCAhPT0gdGVtcG9yYXJ5UmVmZXJlbmNlcyAmJiB0ZW1wb3JhcnlSZWZlcmVuY2VzLnNldChpZCwgbW9kZWwpKTtcbiAgICAgICAgbW9kZWxSb290ID0gbW9kZWw7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtb2RlbCwgcmVzb2x2ZVRvSlNPTik7XG4gICAgICB9XG4gICAgICB2YXIgbmV4dFBhcnRJZCA9IDEsXG4gICAgICAgIHBlbmRpbmdQYXJ0cyA9IDAsXG4gICAgICAgIGZvcm1EYXRhID0gbnVsbCxcbiAgICAgICAgd3JpdHRlbk9iamVjdHMgPSBuZXcgV2Vha01hcCgpLFxuICAgICAgICBtb2RlbFJvb3QgPSByb290LFxuICAgICAgICBqc29uID0gc2VyaWFsaXplTW9kZWwocm9vdCwgMCk7XG4gICAgICBudWxsID09PSBmb3JtRGF0YVxuICAgICAgICA/IHJlc29sdmUoanNvbilcbiAgICAgICAgOiAoZm9ybURhdGEuc2V0KGZvcm1GaWVsZFByZWZpeCArIFwiMFwiLCBqc29uKSxcbiAgICAgICAgICAwID09PSBwZW5kaW5nUGFydHMgJiYgcmVzb2x2ZShmb3JtRGF0YSkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgMCA8IHBlbmRpbmdQYXJ0cyAmJlxuICAgICAgICAgICgocGVuZGluZ1BhcnRzID0gMCksXG4gICAgICAgICAgbnVsbCA9PT0gZm9ybURhdGEgPyByZXNvbHZlKGpzb24pIDogcmVzb2x2ZShmb3JtRGF0YSkpO1xuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5jb2RlRm9ybURhdGEocmVmZXJlbmNlKSB7XG4gICAgICB2YXIgcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICB0aGVuYWJsZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikge1xuICAgICAgICAgIHJlc29sdmUgPSByZXM7XG4gICAgICAgICAgcmVqZWN0ID0gcmVqO1xuICAgICAgICB9KTtcbiAgICAgIHByb2Nlc3NSZXBseShcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBcIlwiLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBib2R5KSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoXCIwXCIsIGJvZHkpO1xuICAgICAgICAgICAgYm9keSA9IGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgICAgdGhlbmFibGUudmFsdWUgPSBib2R5O1xuICAgICAgICAgIHJlc29sdmUoYm9keSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgdGhlbmFibGUuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICAgIHRoZW5hYmxlLnJlYXNvbiA9IGU7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoZW5hYmxlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZhdWx0RW5jb2RlRm9ybUFjdGlvbihpZGVudGlmaWVyUHJlZml4KSB7XG4gICAgICB2YXIgcmVmZXJlbmNlQ2xvc3VyZSA9IGtub3duU2VydmVyUmVmZXJlbmNlcy5nZXQodGhpcyk7XG4gICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVHJpZWQgdG8gZW5jb2RlIGEgU2VydmVyIEFjdGlvbiBmcm9tIGEgZGlmZmVyZW50IGluc3RhbmNlIHRoYW4gdGhlIGVuY29kZXIgaXMgZnJvbS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgdmFyIGRhdGEgPSBudWxsO1xuICAgICAgaWYgKG51bGwgIT09IHJlZmVyZW5jZUNsb3N1cmUuYm91bmQpIHtcbiAgICAgICAgZGF0YSA9IGJvdW5kQ2FjaGUuZ2V0KHJlZmVyZW5jZUNsb3N1cmUpO1xuICAgICAgICBkYXRhIHx8XG4gICAgICAgICAgKChkYXRhID0gZW5jb2RlRm9ybURhdGEoe1xuICAgICAgICAgICAgaWQ6IHJlZmVyZW5jZUNsb3N1cmUuaWQsXG4gICAgICAgICAgICBib3VuZDogcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBib3VuZENhY2hlLnNldChyZWZlcmVuY2VDbG9zdXJlLCBkYXRhKSk7XG4gICAgICAgIGlmIChcInJlamVjdGVkXCIgPT09IGRhdGEuc3RhdHVzKSB0aHJvdyBkYXRhLnJlYXNvbjtcbiAgICAgICAgaWYgKFwiZnVsZmlsbGVkXCIgIT09IGRhdGEuc3RhdHVzKSB0aHJvdyBkYXRhO1xuICAgICAgICByZWZlcmVuY2VDbG9zdXJlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHByZWZpeGVkRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICByZWZlcmVuY2VDbG9zdXJlLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICBwcmVmaXhlZERhdGEuYXBwZW5kKFwiJEFDVElPTl9cIiArIGlkZW50aWZpZXJQcmVmaXggKyBcIjpcIiArIGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0YSA9IHByZWZpeGVkRGF0YTtcbiAgICAgICAgcmVmZXJlbmNlQ2xvc3VyZSA9IFwiJEFDVElPTl9SRUZfXCIgKyBpZGVudGlmaWVyUHJlZml4O1xuICAgICAgfSBlbHNlIHJlZmVyZW5jZUNsb3N1cmUgPSBcIiRBQ1RJT05fSURfXCIgKyByZWZlcmVuY2VDbG9zdXJlLmlkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogcmVmZXJlbmNlQ2xvc3VyZSxcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgZW5jVHlwZTogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzU2lnbmF0dXJlRXF1YWwocmVmZXJlbmNlSWQsIG51bWJlck9mQm91bmRBcmdzKSB7XG4gICAgICB2YXIgcmVmZXJlbmNlQ2xvc3VyZSA9IGtub3duU2VydmVyUmVmZXJlbmNlcy5nZXQodGhpcyk7XG4gICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVHJpZWQgdG8gZW5jb2RlIGEgU2VydmVyIEFjdGlvbiBmcm9tIGEgZGlmZmVyZW50IGluc3RhbmNlIHRoYW4gdGhlIGVuY29kZXIgaXMgZnJvbS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgaWYgKHJlZmVyZW5jZUNsb3N1cmUuaWQgIT09IHJlZmVyZW5jZUlkKSByZXR1cm4gITE7XG4gICAgICB2YXIgYm91bmRQcm9taXNlID0gcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZDtcbiAgICAgIGlmIChudWxsID09PSBib3VuZFByb21pc2UpIHJldHVybiAwID09PSBudW1iZXJPZkJvdW5kQXJncztcbiAgICAgIHN3aXRjaCAoYm91bmRQcm9taXNlLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIGJvdW5kUHJvbWlzZS52YWx1ZS5sZW5ndGggPT09IG51bWJlck9mQm91bmRBcmdzO1xuICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgIHRocm93IGJvdW5kUHJvbWlzZTtcbiAgICAgICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICAgICAgdGhyb3cgYm91bmRQcm9taXNlLnJlYXNvbjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyAoXG4gICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIGJvdW5kUHJvbWlzZS5zdGF0dXMgJiZcbiAgICAgICAgICAgICAgKChib3VuZFByb21pc2Uuc3RhdHVzID0gXCJwZW5kaW5nXCIpLFxuICAgICAgICAgICAgICBib3VuZFByb21pc2UudGhlbihcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoYm91bmRBcmdzKSB7XG4gICAgICAgICAgICAgICAgICBib3VuZFByb21pc2Uuc3RhdHVzID0gXCJmdWxmaWxsZWRcIjtcbiAgICAgICAgICAgICAgICAgIGJvdW5kUHJvbWlzZS52YWx1ZSA9IGJvdW5kQXJncztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgYm91bmRQcm9taXNlLnN0YXR1cyA9IFwicmVqZWN0ZWRcIjtcbiAgICAgICAgICAgICAgICAgIGJvdW5kUHJvbWlzZS5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYm91bmRQcm9taXNlKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VTZXJ2ZXJGdW5jdGlvbihcbiAgICAgIG5hbWUsXG4gICAgICBmaWxlbmFtZSxcbiAgICAgIHNvdXJjZU1hcCxcbiAgICAgIGxpbmUsXG4gICAgICBjb2wsXG4gICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICBpbm5lckZ1bmN0aW9uXG4gICAgKSB7XG4gICAgICBuYW1lIHx8IChuYW1lID0gXCI8YW5vbnltb3VzPlwiKTtcbiAgICAgIHZhciBlbmNvZGVkTmFtZSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgICAgMSA+PSBsaW5lXG4gICAgICAgID8gKChsaW5lID0gZW5jb2RlZE5hbWUubGVuZ3RoICsgNyksXG4gICAgICAgICAgKGNvbCA9XG4gICAgICAgICAgICBcInM9Pih7XCIgK1xuICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCA8IGxpbmUgPyAwIDogY29sIC0gbGluZSkgK1xuICAgICAgICAgICAgXCI6KC4uLmFyZ3MpID0+IHMoLi4uYXJncyl9KVxcbi8qIFRoaXMgbW9kdWxlIGlzIGEgcHJveHkgdG8gYSBTZXJ2ZXIgQWN0aW9uLiBUdXJuIG9uIFNvdXJjZSBNYXBzIHRvIHNlZSB0aGUgc2VydmVyIHNvdXJjZS4gKi9cIikpXG4gICAgICAgIDogKGNvbCA9XG4gICAgICAgICAgICBcIi8qIFRoaXMgbW9kdWxlIGlzIGEgcHJveHkgdG8gYSBTZXJ2ZXIgQWN0aW9uLiBUdXJuIG9uIFNvdXJjZSBNYXBzIHRvIHNlZSB0aGUgc2VydmVyIHNvdXJjZS4gKi9cIiArXG4gICAgICAgICAgICBcIlxcblwiLnJlcGVhdChsaW5lIC0gMikgK1xuICAgICAgICAgICAgXCJzZXJ2ZXI9Pih7XCIgK1xuICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgXCI6XFxuXCIgK1xuICAgICAgICAgICAgXCIgXCIucmVwZWF0KDEgPiBjb2wgPyAwIDogY29sIC0gMSkgK1xuICAgICAgICAgICAgXCIoLi4uYXJncykgPT4gc2VydmVyKC4uLmFyZ3MpfSlcIik7XG4gICAgICBmaWxlbmFtZS5zdGFydHNXaXRoKFwiL1wiKSAmJiAoZmlsZW5hbWUgPSBcImZpbGU6Ly9cIiArIGZpbGVuYW1lKTtcbiAgICAgIHNvdXJjZU1hcFxuICAgICAgICA/ICgoY29sICs9XG4gICAgICAgICAgICBcIlxcbi8vIyBzb3VyY2VVUkw9YWJvdXQ6Ly9SZWFjdC9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoZW52aXJvbm1lbnROYW1lKSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUkkoZmlsZW5hbWUpICtcbiAgICAgICAgICAgIFwiP3NcIiArXG4gICAgICAgICAgICBmYWtlU2VydmVyRnVuY3Rpb25JZHgrKyksXG4gICAgICAgICAgKGNvbCArPSBcIlxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVwiICsgc291cmNlTWFwKSlcbiAgICAgICAgOiBmaWxlbmFtZSAmJiAoY29sICs9IFwiXFxuLy8jIHNvdXJjZVVSTD1cIiArIGZpbGVuYW1lKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoMCwgZXZhbCkoY29sKShpbm5lckZ1bmN0aW9uKVtuYW1lXTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgcmV0dXJuIGlubmVyRnVuY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICByZWZlcmVuY2UsXG4gICAgICBpZCxcbiAgICAgIGJvdW5kLFxuICAgICAgZW5jb2RlRm9ybUFjdGlvblxuICAgICkge1xuICAgICAga25vd25TZXJ2ZXJSZWZlcmVuY2VzLmhhcyhyZWZlcmVuY2UpIHx8XG4gICAgICAgIChrbm93blNlcnZlclJlZmVyZW5jZXMuc2V0KHJlZmVyZW5jZSwge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvcmlnaW5hbEJpbmQ6IHJlZmVyZW5jZS5iaW5kLFxuICAgICAgICAgIGJvdW5kOiBib3VuZFxuICAgICAgICB9KSxcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVmZXJlbmNlLCB7XG4gICAgICAgICAgJCRGT1JNX0FDVElPTjoge1xuICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgIHZvaWQgMCA9PT0gZW5jb2RlRm9ybUFjdGlvblxuICAgICAgICAgICAgICAgID8gZGVmYXVsdEVuY29kZUZvcm1BY3Rpb25cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZmVyZW5jZUNsb3N1cmUgPSBrbm93blNlcnZlclJlZmVyZW5jZXMuZ2V0KHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZUNsb3N1cmUpXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlRyaWVkIHRvIGVuY29kZSBhIFNlcnZlciBBY3Rpb24gZnJvbSBhIGRpZmZlcmVudCBpbnN0YW5jZSB0aGFuIHRoZSBlbmNvZGVyIGlzIGZyb20uIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYm91bmRQcm9taXNlID0gcmVmZXJlbmNlQ2xvc3VyZS5ib3VuZDtcbiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gYm91bmRQcm9taXNlICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGJvdW5kUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShbXSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlRm9ybUFjdGlvbihyZWZlcmVuY2VDbG9zdXJlLmlkLCBib3VuZFByb21pc2UpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJCRJU19TSUdOQVRVUkVfRVFVQUw6IHsgdmFsdWU6IGlzU2lnbmF0dXJlRXF1YWwgfSxcbiAgICAgICAgICBiaW5kOiB7IHZhbHVlOiBiaW5kIH1cbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBiaW5kKCkge1xuICAgICAgdmFyIHJlZmVyZW5jZUNsb3N1cmUgPSBrbm93blNlcnZlclJlZmVyZW5jZXMuZ2V0KHRoaXMpO1xuICAgICAgaWYgKCFyZWZlcmVuY2VDbG9zdXJlKSByZXR1cm4gRnVuY3Rpb25CaW5kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB2YXIgbmV3Rm4gPSByZWZlcmVuY2VDbG9zdXJlLm9yaWdpbmFsQmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgbnVsbCAhPSBhcmd1bWVudHNbMF0gJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnQ2Fubm90IGJpbmQgXCJ0aGlzXCIgb2YgYSBTZXJ2ZXIgQWN0aW9uLiBQYXNzIG51bGwgb3IgdW5kZWZpbmVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byAuYmluZCgpLidcbiAgICAgICAgKTtcbiAgICAgIHZhciBhcmdzID0gQXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICAgIGJvdW5kUHJvbWlzZSA9IG51bGw7XG4gICAgICBib3VuZFByb21pc2UgPVxuICAgICAgICBudWxsICE9PSByZWZlcmVuY2VDbG9zdXJlLmJvdW5kXG4gICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUocmVmZXJlbmNlQ2xvc3VyZS5ib3VuZCkudGhlbihmdW5jdGlvbiAoYm91bmRBcmdzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBib3VuZEFyZ3MuY29uY2F0KGFyZ3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShhcmdzKTtcbiAgICAgIGtub3duU2VydmVyUmVmZXJlbmNlcy5zZXQobmV3Rm4sIHtcbiAgICAgICAgaWQ6IHJlZmVyZW5jZUNsb3N1cmUuaWQsXG4gICAgICAgIG9yaWdpbmFsQmluZDogbmV3Rm4uYmluZCxcbiAgICAgICAgYm91bmQ6IGJvdW5kUHJvbWlzZVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZXdGbiwge1xuICAgICAgICAkJEZPUk1fQUNUSU9OOiB7IHZhbHVlOiB0aGlzLiQkRk9STV9BQ1RJT04gfSxcbiAgICAgICAgJCRJU19TSUdOQVRVUkVfRVFVQUw6IHsgdmFsdWU6IGlzU2lnbmF0dXJlRXF1YWwgfSxcbiAgICAgICAgYmluZDogeyB2YWx1ZTogYmluZCB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXdGbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICBtZXRhRGF0YSxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTFxuICAgICkge1xuICAgICAgZnVuY3Rpb24gYWN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBib3VuZFxuICAgICAgICAgID8gXCJmdWxmaWxsZWRcIiA9PT0gYm91bmQuc3RhdHVzXG4gICAgICAgICAgICA/IGNhbGxTZXJ2ZXIoaWQsIGJvdW5kLnZhbHVlLmNvbmNhdChhcmdzKSlcbiAgICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKGJvdW5kKS50aGVuKGZ1bmN0aW9uIChib3VuZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNlcnZlcihpZCwgYm91bmRBcmdzLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBjYWxsU2VydmVyKGlkLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHZhciBpZCA9IG1ldGFEYXRhLmlkLFxuICAgICAgICBib3VuZCA9IG1ldGFEYXRhLmJvdW5kLFxuICAgICAgICBsb2NhdGlvbiA9IG1ldGFEYXRhLmxvY2F0aW9uO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHZhciBmdW5jdGlvbk5hbWUgPSBtZXRhRGF0YS5uYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZmlsZW5hbWUgPSBsb2NhdGlvblsxXSxcbiAgICAgICAgICBsaW5lID0gbG9jYXRpb25bMl07XG4gICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb25bM107XG4gICAgICAgIG1ldGFEYXRhID0gbWV0YURhdGEuZW52IHx8IFwiU2VydmVyXCI7XG4gICAgICAgIGZpbmRTb3VyY2VNYXBVUkwgPVxuICAgICAgICAgIG51bGwgPT0gZmluZFNvdXJjZU1hcFVSTFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGZpbmRTb3VyY2VNYXBVUkwoZmlsZW5hbWUsIG1ldGFEYXRhKTtcbiAgICAgICAgYWN0aW9uID0gY3JlYXRlRmFrZVNlcnZlckZ1bmN0aW9uKFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgIGxpbmUsXG4gICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgbWV0YURhdGEsXG4gICAgICAgICAgYWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZWdpc3RlckJvdW5kU2VydmVyUmVmZXJlbmNlKGFjdGlvbiwgaWQsIGJvdW5kLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlU3RhY2tMb2NhdGlvbihlcnJvcikge1xuICAgICAgZXJyb3IgPSBlcnJvci5zdGFjaztcbiAgICAgIGVycm9yLnN0YXJ0c1dpdGgoXCJFcnJvcjogcmVhY3Qtc3RhY2stdG9wLWZyYW1lXFxuXCIpICYmXG4gICAgICAgIChlcnJvciA9IGVycm9yLnNsaWNlKDI5KSk7XG4gICAgICB2YXIgZW5kT2ZGaXJzdCA9IGVycm9yLmluZGV4T2YoXCJcXG5cIik7XG4gICAgICBpZiAoLTEgIT09IGVuZE9mRmlyc3QpIHtcbiAgICAgICAgdmFyIGVuZE9mU2Vjb25kID0gZXJyb3IuaW5kZXhPZihcIlxcblwiLCBlbmRPZkZpcnN0ICsgMSk7XG4gICAgICAgIGVuZE9mRmlyc3QgPVxuICAgICAgICAgIC0xID09PSBlbmRPZlNlY29uZFxuICAgICAgICAgICAgPyBlcnJvci5zbGljZShlbmRPZkZpcnN0ICsgMSlcbiAgICAgICAgICAgIDogZXJyb3Iuc2xpY2UoZW5kT2ZGaXJzdCArIDEsIGVuZE9mU2Vjb25kKTtcbiAgICAgIH0gZWxzZSBlbmRPZkZpcnN0ID0gZXJyb3I7XG4gICAgICBlcnJvciA9IHY4RnJhbWVSZWdFeHAuZXhlYyhlbmRPZkZpcnN0KTtcbiAgICAgIGlmIChcbiAgICAgICAgIWVycm9yICYmXG4gICAgICAgICgoZXJyb3IgPSBqc2NTcGlkZXJNb25rZXlGcmFtZVJlZ0V4cC5leGVjKGVuZE9mRmlyc3QpKSwgIWVycm9yKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGVuZE9mRmlyc3QgPSBlcnJvclsxXSB8fCBcIlwiO1xuICAgICAgXCI8YW5vbnltb3VzPlwiID09PSBlbmRPZkZpcnN0ICYmIChlbmRPZkZpcnN0ID0gXCJcIik7XG4gICAgICBlbmRPZlNlY29uZCA9IGVycm9yWzJdIHx8IGVycm9yWzVdIHx8IFwiXCI7XG4gICAgICBcIjxhbm9ueW1vdXM+XCIgPT09IGVuZE9mU2Vjb25kICYmIChlbmRPZlNlY29uZCA9IFwiXCIpO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgZW5kT2ZGaXJzdCxcbiAgICAgICAgZW5kT2ZTZWNvbmQsXG4gICAgICAgICsoZXJyb3JbM10gfHwgZXJyb3JbNl0pLFxuICAgICAgICArKGVycm9yWzRdIHx8IGVycm9yWzddKVxuICAgICAgXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlU2VydmVyUmVmZXJlbmNlJDEoXG4gICAgICBpZCxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgIGZ1bmN0aW9uTmFtZVxuICAgICkge1xuICAgICAgZnVuY3Rpb24gYWN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBjYWxsU2VydmVyKGlkLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHZhciBsb2NhdGlvbiA9IHBhcnNlU3RhY2tMb2NhdGlvbihFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKSk7XG4gICAgICBpZiAobnVsbCAhPT0gbG9jYXRpb24pIHtcbiAgICAgICAgdmFyIGZpbGVuYW1lID0gbG9jYXRpb25bMV0sXG4gICAgICAgICAgbGluZSA9IGxvY2F0aW9uWzJdO1xuICAgICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uWzNdO1xuICAgICAgICBmaW5kU291cmNlTWFwVVJMID1cbiAgICAgICAgICBudWxsID09IGZpbmRTb3VyY2VNYXBVUkxcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBmaW5kU291cmNlTWFwVVJMKGZpbGVuYW1lLCBcIkNsaWVudFwiKTtcbiAgICAgICAgYWN0aW9uID0gY3JlYXRlRmFrZVNlcnZlckZ1bmN0aW9uKFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZSB8fCBcIlwiLFxuICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gICAgICAgICAgbGluZSxcbiAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICBcIkNsaWVudFwiLFxuICAgICAgICAgIGFjdGlvblxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShhY3Rpb24sIGlkLCBudWxsLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICByZXR1cm4gdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIHR5cGU7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIkZyYWdtZW50XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQcm9maWxlclwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3RyaWN0TW9kZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VMaXN0XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfQUNUSVZJVFlfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJBY3Rpdml0eVwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIChcIm51bWJlclwiID09PSB0eXBlb2YgdHlwZS50YWcgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuIFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0eXBlLiQkdHlwZW9mKVxuICAgICAgICApIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIFwiUG9ydGFsXCI7XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlNVTUVSX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuQ29uc3VtZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICB2YXIgaW5uZXJUeXBlID0gdHlwZS5yZW5kZXI7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAgICAgKCh0eXBlID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8IFwiXCIpLFxuICAgICAgICAgICAgICAodHlwZSA9IFwiXCIgIT09IHR5cGUgPyBcIkZvcndhcmRSZWYoXCIgKyB0eXBlICsgXCIpXCIgOiBcIkZvcndhcmRSZWZcIikpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5uZXJUeXBlXG4gICAgICAgICAgICAgICAgPyBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByZXBhcmVTdGFja1RyYWNlKGVycm9yLCBzdHJ1Y3R1cmVkU3RhY2tUcmFjZSkge1xuICAgICAgZXJyb3IgPSAoZXJyb3IubmFtZSB8fCBcIkVycm9yXCIpICsgXCI6IFwiICsgKGVycm9yLm1lc3NhZ2UgfHwgXCJcIik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnVjdHVyZWRTdGFja1RyYWNlLmxlbmd0aDsgaSsrKVxuICAgICAgICBlcnJvciArPSBcIlxcbiAgICBhdCBcIiArIHN0cnVjdHVyZWRTdGFja1RyYWNlW2ldLnRvU3RyaW5nKCk7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFJlYWN0UHJvbWlzZShzdGF0dXMsIHZhbHVlLCByZWFzb24pIHtcbiAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgICB0aGlzLl9kZWJ1Z0luZm8gPSB0aGlzLl9kZWJ1Z0NodW5rID0gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gdW53cmFwV2Vha1Jlc3BvbnNlKHdlYWtSZXNwb25zZSkge1xuICAgICAgd2Vha1Jlc3BvbnNlID0gd2Vha1Jlc3BvbnNlLndlYWsuZGVyZWYoKTtcbiAgICAgIGlmICh2b2lkIDAgPT09IHdlYWtSZXNwb25zZSlcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJXZSBkaWQgbm90IGV4cGVjdCB0byByZWNlaXZlIG5ldyBkYXRhIGFmdGVyIEdDOmluZyB0aGUgcmVzcG9uc2UuXCJcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiB3ZWFrUmVzcG9uc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsZWFudXBEZWJ1Z0NoYW5uZWwoZGVidWdDaGFubmVsKSB7XG4gICAgICBkZWJ1Z0NoYW5uZWwoXCJcIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlYWRDaHVuayhjaHVuaykge1xuICAgICAgc3dpdGNoIChjaHVuay5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZGVsXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kdWxlXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKGNodW5rKTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICByZXR1cm4gY2h1bmsudmFsdWU7XG4gICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgIGNhc2UgXCJibG9ja2VkXCI6XG4gICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICB0aHJvdyBjaHVuaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBjaHVuay5yZWFzb247XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJvb3Qod2Vha1Jlc3BvbnNlKSB7XG4gICAgICB3ZWFrUmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKTtcbiAgICAgIHJldHVybiBnZXRDaHVuayh3ZWFrUmVzcG9uc2UsIDApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpIHtcbiAgICAgIDAgPT09IHJlc3BvbnNlLl9wZW5kaW5nQ2h1bmtzKysgJiZcbiAgICAgICAgKChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gcmVzcG9uc2UpLFxuICAgICAgICBudWxsICE9PSByZXNwb25zZS5fcGVuZGluZ0luaXRpYWxSZW5kZXIgJiZcbiAgICAgICAgICAoY2xlYXJUaW1lb3V0KHJlc3BvbnNlLl9wZW5kaW5nSW5pdGlhbFJlbmRlciksXG4gICAgICAgICAgKHJlc3BvbnNlLl9wZW5kaW5nSW5pdGlhbFJlbmRlciA9IG51bGwpKSk7XG4gICAgICByZXR1cm4gbmV3IFJlYWN0UHJvbWlzZShcInBlbmRpbmdcIiwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIGNodW5rKSB7XG4gICAgICBcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzICYmXG4gICAgICAgIDAgPT09IC0tcmVzcG9uc2UuX3BlbmRpbmdDaHVua3MgJiZcbiAgICAgICAgKChyZXNwb25zZS5fd2Vha1Jlc3BvbnNlLnJlc3BvbnNlID0gbnVsbCksXG4gICAgICAgIChyZXNwb25zZS5fcGVuZGluZ0luaXRpYWxSZW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgIGZsdXNoSW5pdGlhbFJlbmRlclBlcmZvcm1hbmNlLmJpbmQobnVsbCwgcmVzcG9uc2UpLFxuICAgICAgICAgIDEwMFxuICAgICAgICApKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdha2VDaHVuayhsaXN0ZW5lcnMsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGxpc3RlbmVyXG4gICAgICAgICAgPyBsaXN0ZW5lcih2YWx1ZSlcbiAgICAgICAgICA6IGZ1bGZpbGxSZWZlcmVuY2UobGlzdGVuZXIsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVqZWN0Q2h1bmsobGlzdGVuZXJzLCBlcnJvcikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBsaXN0ZW5lclxuICAgICAgICAgID8gbGlzdGVuZXIoZXJyb3IpXG4gICAgICAgICAgOiByZWplY3RSZWZlcmVuY2UobGlzdGVuZXIsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUJsb2NrZWRDeWNsZShyZXNvbHZlZENodW5rLCByZWZlcmVuY2UpIHtcbiAgICAgIHZhciByZWZlcmVuY2VkQ2h1bmsgPSByZWZlcmVuY2UuaGFuZGxlci5jaHVuaztcbiAgICAgIGlmIChudWxsID09PSByZWZlcmVuY2VkQ2h1bmspIHJldHVybiBudWxsO1xuICAgICAgaWYgKHJlZmVyZW5jZWRDaHVuayA9PT0gcmVzb2x2ZWRDaHVuaykgcmV0dXJuIHJlZmVyZW5jZS5oYW5kbGVyO1xuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlZENodW5rLnZhbHVlO1xuICAgICAgaWYgKG51bGwgIT09IHJlZmVyZW5jZSlcbiAgICAgICAgZm9yIChcbiAgICAgICAgICByZWZlcmVuY2VkQ2h1bmsgPSAwO1xuICAgICAgICAgIHJlZmVyZW5jZWRDaHVuayA8IHJlZmVyZW5jZS5sZW5ndGg7XG4gICAgICAgICAgcmVmZXJlbmNlZENodW5rKytcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVmZXJlbmNlW3JlZmVyZW5jZWRDaHVua107XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgbGlzdGVuZXIgJiZcbiAgICAgICAgICAgICgobGlzdGVuZXIgPSByZXNvbHZlQmxvY2tlZEN5Y2xlKHJlc29sdmVkQ2h1bmssIGxpc3RlbmVyKSksXG4gICAgICAgICAgICBudWxsICE9PSBsaXN0ZW5lcilcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3YWtlQ2h1bmtJZkluaXRpYWxpemVkKGNodW5rLCByZXNvbHZlTGlzdGVuZXJzLCByZWplY3RMaXN0ZW5lcnMpIHtcbiAgICAgIHN3aXRjaCAoY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICB3YWtlQ2h1bmsocmVzb2x2ZUxpc3RlbmVycywgY2h1bmsudmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb2x2ZUxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGxpc3RlbmVyID0gcmVzb2x2ZUxpc3RlbmVyc1tpXTtcbiAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBsaXN0ZW5lcikge1xuICAgICAgICAgICAgICB2YXIgY3ljbGljSGFuZGxlciA9IHJlc29sdmVCbG9ja2VkQ3ljbGUoY2h1bmssIGxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGN5Y2xpY0hhbmRsZXIpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgIChmdWxmaWxsUmVmZXJlbmNlKGxpc3RlbmVyLCBjeWNsaWNIYW5kbGVyLnZhbHVlKSxcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMuc3BsaWNlKGksIDEpLFxuICAgICAgICAgICAgICAgICAgaS0tLFxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcmVqZWN0TGlzdGVuZXJzICYmXG4gICAgICAgICAgICAgICAgICAgICgobGlzdGVuZXIgPSByZWplY3RMaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcikpLFxuICAgICAgICAgICAgICAgICAgICAtMSAhPT0gbGlzdGVuZXIgJiYgcmVqZWN0TGlzdGVuZXJzLnNwbGljZShsaXN0ZW5lciwgMSkpLFxuICAgICAgICAgICAgICAgICAgY2h1bmsuc3RhdHVzKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgICAgICAgICAgICB3YWtlQ2h1bmsocmVzb2x2ZUxpc3RlbmVycywgY2h1bmsudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcmVqZWN0TGlzdGVuZXJzICYmXG4gICAgICAgICAgICAgICAgICAgICAgcmVqZWN0Q2h1bmsocmVqZWN0TGlzdGVuZXJzLCBjaHVuay5yZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgICBpZiAoY2h1bmsudmFsdWUpXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVzb2x2ZUxpc3RlbmVycy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgY2h1bmsudmFsdWUucHVzaChyZXNvbHZlTGlzdGVuZXJzW2ldKTtcbiAgICAgICAgICBlbHNlIGNodW5rLnZhbHVlID0gcmVzb2x2ZUxpc3RlbmVycztcbiAgICAgICAgICBpZiAoY2h1bmsucmVhc29uKSB7XG4gICAgICAgICAgICBpZiAocmVqZWN0TGlzdGVuZXJzKVxuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMgPSAwO1xuICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMgPCByZWplY3RMaXN0ZW5lcnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJlc29sdmVMaXN0ZW5lcnMrK1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY2h1bmsucmVhc29uLnB1c2gocmVqZWN0TGlzdGVuZXJzW3Jlc29sdmVMaXN0ZW5lcnNdKTtcbiAgICAgICAgICB9IGVsc2UgY2h1bmsucmVhc29uID0gcmVqZWN0TGlzdGVuZXJzO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICByZWplY3RMaXN0ZW5lcnMgJiYgcmVqZWN0Q2h1bmsocmVqZWN0TGlzdGVuZXJzLCBjaHVuay5yZWFzb24pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0cmlnZ2VyRXJyb3JPbkNodW5rKHJlc3BvbnNlLCBjaHVuaywgZXJyb3IpIHtcbiAgICAgIGlmIChcInBlbmRpbmdcIiAhPT0gY2h1bmsuc3RhdHVzICYmIFwiYmxvY2tlZFwiICE9PSBjaHVuay5zdGF0dXMpXG4gICAgICAgIGNodW5rLnJlYXNvbi5lcnJvcihlcnJvcik7XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmVsZWFzZVBlbmRpbmdDaHVuayhyZXNwb25zZSwgY2h1bmspO1xuICAgICAgICB2YXIgbGlzdGVuZXJzID0gY2h1bmsucmVhc29uO1xuICAgICAgICBpZiAoXCJwZW5kaW5nXCIgPT09IGNodW5rLnN0YXR1cyAmJiBudWxsICE9IGNodW5rLl9kZWJ1Z0NodW5rKSB7XG4gICAgICAgICAgdmFyIHByZXZIYW5kbGVyID0gaW5pdGlhbGl6aW5nSGFuZGxlcjtcbiAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICBjaHVuay5zdGF0dXMgPSBcImJsb2NrZWRcIjtcbiAgICAgICAgICBjaHVuay52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgY2h1bmsucmVhc29uID0gbnVsbDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZURlYnVnQ2h1bmsocmVzcG9uc2UsIGNodW5rKSwgKGNodW5rLl9kZWJ1Z0NodW5rID0gbnVsbCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIgPSBwcmV2SGFuZGxlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmsuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICBjaHVuay5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgbnVsbCAhPT0gbGlzdGVuZXJzICYmIHJlamVjdENodW5rKGxpc3RlbmVycywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXNvbHZlZE1vZGVsQ2h1bmsocmVzcG9uc2UsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gbmV3IFJlYWN0UHJvbWlzZShcInJlc29sdmVkX21vZGVsXCIsIHZhbHVlLCByZXNwb25zZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc29sdmVkSXRlcmF0b3JSZXN1bHRDaHVuayhyZXNwb25zZSwgdmFsdWUsIGRvbmUpIHtcbiAgICAgIHJldHVybiBuZXcgUmVhY3RQcm9taXNlKFxuICAgICAgICBcInJlc29sdmVkX21vZGVsXCIsXG4gICAgICAgIChkb25lID8gJ3tcImRvbmVcIjp0cnVlLFwidmFsdWVcIjonIDogJ3tcImRvbmVcIjpmYWxzZSxcInZhbHVlXCI6JykgK1xuICAgICAgICAgIHZhbHVlICtcbiAgICAgICAgICBcIn1cIixcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVJdGVyYXRvclJlc3VsdENodW5rKHJlc3BvbnNlLCBjaHVuaywgdmFsdWUsIGRvbmUpIHtcbiAgICAgIHJlc29sdmVNb2RlbENodW5rKFxuICAgICAgICByZXNwb25zZSxcbiAgICAgICAgY2h1bmssXG4gICAgICAgIChkb25lID8gJ3tcImRvbmVcIjp0cnVlLFwidmFsdWVcIjonIDogJ3tcImRvbmVcIjpmYWxzZSxcInZhbHVlXCI6JykgK1xuICAgICAgICAgIHZhbHVlICtcbiAgICAgICAgICBcIn1cIlxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsQ2h1bmsocmVzcG9uc2UsIGNodW5rLCB2YWx1ZSkge1xuICAgICAgaWYgKFwicGVuZGluZ1wiICE9PSBjaHVuay5zdGF0dXMpIGNodW5rLnJlYXNvbi5lbnF1ZXVlTW9kZWwodmFsdWUpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIGNodW5rKTtcbiAgICAgICAgdmFyIHJlc29sdmVMaXN0ZW5lcnMgPSBjaHVuay52YWx1ZSxcbiAgICAgICAgICByZWplY3RMaXN0ZW5lcnMgPSBjaHVuay5yZWFzb247XG4gICAgICAgIGNodW5rLnN0YXR1cyA9IFwicmVzb2x2ZWRfbW9kZWxcIjtcbiAgICAgICAgY2h1bmsudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY2h1bmsucmVhc29uID0gcmVzcG9uc2U7XG4gICAgICAgIG51bGwgIT09IHJlc29sdmVMaXN0ZW5lcnMgJiZcbiAgICAgICAgICAoaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspLFxuICAgICAgICAgIHdha2VDaHVua0lmSW5pdGlhbGl6ZWQoY2h1bmssIHJlc29sdmVMaXN0ZW5lcnMsIHJlamVjdExpc3RlbmVycykpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlTW9kdWxlQ2h1bmsocmVzcG9uc2UsIGNodW5rLCB2YWx1ZSkge1xuICAgICAgaWYgKFwicGVuZGluZ1wiID09PSBjaHVuay5zdGF0dXMgfHwgXCJibG9ja2VkXCIgPT09IGNodW5rLnN0YXR1cykge1xuICAgICAgICByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICAgIHJlc3BvbnNlID0gY2h1bmsudmFsdWU7XG4gICAgICAgIHZhciByZWplY3RMaXN0ZW5lcnMgPSBjaHVuay5yZWFzb247XG4gICAgICAgIGNodW5rLnN0YXR1cyA9IFwicmVzb2x2ZWRfbW9kdWxlXCI7XG4gICAgICAgIGNodW5rLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGNodW5rLnJlYXNvbiA9IG51bGw7XG4gICAgICAgIHZhbHVlID0gW107XG4gICAgICAgIG51bGwgIT09IHZhbHVlICYmIG51bGwgIT0gY2h1bmsuX2RlYnVnSW5mb1xuICAgICAgICAgID8gY2h1bmsuX2RlYnVnSW5mby5wdXNoLmFwcGx5KGNodW5rLl9kZWJ1Z0luZm8sIHZhbHVlKVxuICAgICAgICAgIDogKGNodW5rLl9kZWJ1Z0luZm8gPSB2YWx1ZSk7XG4gICAgICAgIG51bGwgIT09IHJlc3BvbnNlICYmXG4gICAgICAgICAgKGluaXRpYWxpemVNb2R1bGVDaHVuayhjaHVuayksXG4gICAgICAgICAgd2FrZUNodW5rSWZJbml0aWFsaXplZChjaHVuaywgcmVzcG9uc2UsIHJlamVjdExpc3RlbmVycykpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgY2h1bmspIHtcbiAgICAgIHZhciBkZWJ1Z0NodW5rID0gY2h1bmsuX2RlYnVnQ2h1bms7XG4gICAgICBpZiAobnVsbCAhPT0gZGVidWdDaHVuaykge1xuICAgICAgICB2YXIgZGVidWdJbmZvID0gY2h1bmsuX2RlYnVnSW5mbyB8fCAoY2h1bmsuX2RlYnVnSW5mbyA9IFtdKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoXCJyZXNvbHZlZF9tb2RlbFwiID09PSBkZWJ1Z0NodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgdmFyIGlkeCA9IGRlYnVnSW5mby5sZW5ndGgsIGMgPSBkZWJ1Z0NodW5rLl9kZWJ1Z0NodW5rO1xuICAgICAgICAgICAgICBudWxsICE9PSBjO1xuXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiZnVsZmlsbGVkXCIgIT09IGMuc3RhdHVzICYmIGlkeCsrLCAoYyA9IGMuX2RlYnVnQ2h1bmspO1xuICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoZGVidWdDaHVuayk7XG4gICAgICAgICAgICBzd2l0Y2ggKGRlYnVnQ2h1bmsuc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICBkZWJ1Z0luZm9baWR4XSA9IGluaXRpYWxpemVEZWJ1Z0luZm8oXG4gICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgIGRlYnVnQ2h1bmsudmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwicGVuZGluZ1wiOlxuICAgICAgICAgICAgICAgIHdhaXRGb3JSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICBkZWJ1Z0NodW5rLFxuICAgICAgICAgICAgICAgICAgZGVidWdJbmZvLFxuICAgICAgICAgICAgICAgICAgXCJcIiArIGlkeCxcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5mbyxcbiAgICAgICAgICAgICAgICAgIFtcIlwiXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgZGVidWdDaHVuay5yZWFzb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGRlYnVnQ2h1bmsuc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgICAgICAgICB3YWl0Rm9yUmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgICAgZGVidWdDaHVuayxcbiAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgXCJkZWJ1Z1wiLFxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXplRGVidWdJbmZvLFxuICAgICAgICAgICAgICAgICAgW1wiXCJdXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBkZWJ1Z0NodW5rLnJlYXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0cmlnZ2VyRXJyb3JPbkNodW5rKHJlc3BvbnNlLCBjaHVuaywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKSB7XG4gICAgICB2YXIgcHJldkhhbmRsZXIgPSBpbml0aWFsaXppbmdIYW5kbGVyO1xuICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlciA9IG51bGw7XG4gICAgICB2YXIgcmVzb2x2ZWRNb2RlbCA9IGNodW5rLnZhbHVlLFxuICAgICAgICByZXNwb25zZSA9IGNodW5rLnJlYXNvbjtcbiAgICAgIGNodW5rLnN0YXR1cyA9IFwiYmxvY2tlZFwiO1xuICAgICAgY2h1bmsudmFsdWUgPSBudWxsO1xuICAgICAgY2h1bmsucmVhc29uID0gbnVsbDtcbiAgICAgIGluaXRpYWxpemVEZWJ1Z0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICBjaHVuay5fZGVidWdDaHVuayA9IG51bGw7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnBhcnNlKHJlc29sdmVkTW9kZWwsIHJlc3BvbnNlLl9mcm9tSlNPTiksXG4gICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycyA9IGNodW5rLnZhbHVlO1xuICAgICAgICBudWxsICE9PSByZXNvbHZlTGlzdGVuZXJzICYmXG4gICAgICAgICAgKChjaHVuay52YWx1ZSA9IG51bGwpLFxuICAgICAgICAgIChjaHVuay5yZWFzb24gPSBudWxsKSxcbiAgICAgICAgICB3YWtlQ2h1bmsocmVzb2x2ZUxpc3RlbmVycywgdmFsdWUpKTtcbiAgICAgICAgaWYgKG51bGwgIT09IGluaXRpYWxpemluZ0hhbmRsZXIpIHtcbiAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nSGFuZGxlci5lcnJvcmVkKSB0aHJvdyBpbml0aWFsaXppbmdIYW5kbGVyLnJlYXNvbjtcbiAgICAgICAgICBpZiAoMCA8IGluaXRpYWxpemluZ0hhbmRsZXIuZGVwcykge1xuICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlci52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlci5yZWFzb24gPSBudWxsO1xuICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlci5jaHVuayA9IGNodW5rO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaHVuay5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICAgICAgICBjaHVuay52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBjaHVuay5yZWFzb24gPSBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgKGNodW5rLnN0YXR1cyA9IFwicmVqZWN0ZWRcIiksIChjaHVuay5yZWFzb24gPSBlcnJvcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyID0gcHJldkhhbmRsZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGVDaHVuayhjaHVuaykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHZhbHVlID0gcmVxdWlyZU1vZHVsZShjaHVuay52YWx1ZSk7XG4gICAgICAgIGNodW5rLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgIGNodW5rLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGNodW5rLnJlYXNvbiA9IG51bGw7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAoY2h1bmsuc3RhdHVzID0gXCJyZWplY3RlZFwiKSwgKGNodW5rLnJlYXNvbiA9IGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVwb3J0R2xvYmFsRXJyb3Iod2Vha1Jlc3BvbnNlLCBlcnJvcikge1xuICAgICAgaWYgKHZvaWQgMCAhPT0gd2Vha1Jlc3BvbnNlLndlYWsuZGVyZWYoKSkge1xuICAgICAgICB2YXIgcmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2Uod2Vha1Jlc3BvbnNlKTtcbiAgICAgICAgcmVzcG9uc2UuX2Nsb3NlZCA9ICEwO1xuICAgICAgICByZXNwb25zZS5fY2xvc2VkUmVhc29uID0gZXJyb3I7XG4gICAgICAgIHJlc3BvbnNlLl9jaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzXG4gICAgICAgICAgICA/IHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBlcnJvcilcbiAgICAgICAgICAgIDogXCJmdWxmaWxsZWRcIiA9PT0gY2h1bmsuc3RhdHVzICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGNodW5rLnJlYXNvbiAmJlxuICAgICAgICAgICAgICBjaHVuay5yZWFzb24uZXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgd2Vha1Jlc3BvbnNlID0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbDtcbiAgICAgICAgdm9pZCAwICE9PSB3ZWFrUmVzcG9uc2UgJiZcbiAgICAgICAgICAod2Vha1Jlc3BvbnNlKFwiXCIpLCAocmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCA9IHZvaWQgMCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBudWxsUmVmR2V0dGVyKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFRhc2tOYW1lKHR5cGUpIHtcbiAgICAgIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSByZXR1cm4gXCI8PlwiO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiAnXCJ1c2UgY2xpZW50XCInO1xuICAgICAgaWYgKFxuICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSAmJlxuICAgICAgICBudWxsICE9PSB0eXBlICYmXG4gICAgICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdHlwZS5faW5pdCA9PT0gcmVhZENodW5rID8gJ1widXNlIGNsaWVudFwiJyA6IFwiPC4uLj5cIjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgICByZXR1cm4gbmFtZSA/IFwiPFwiICsgbmFtZSArIFwiPlwiIDogXCI8Li4uPlwiO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICByZXR1cm4gXCI8Li4uPlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplRWxlbWVudChyZXNwb25zZSwgZWxlbWVudCkge1xuICAgICAgdmFyIHN0YWNrID0gZWxlbWVudC5fZGVidWdTdGFjayxcbiAgICAgICAgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIG51bGwgPT09IG93bmVyICYmIChlbGVtZW50Ll9vd25lciA9IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RPd25lcik7XG4gICAgICB2YXIgZW52ID0gcmVzcG9uc2UuX3Jvb3RFbnZpcm9ubWVudE5hbWU7XG4gICAgICBudWxsICE9PSBvd25lciAmJiBudWxsICE9IG93bmVyLmVudiAmJiAoZW52ID0gb3duZXIuZW52KTtcbiAgICAgIHZhciBub3JtYWxpemVkU3RhY2tUcmFjZSA9IG51bGw7XG4gICAgICBudWxsID09PSBvd25lciAmJiBudWxsICE9IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RTdGFja1xuICAgICAgICA/IChub3JtYWxpemVkU3RhY2tUcmFjZSA9IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RTdGFjaylcbiAgICAgICAgOiBudWxsICE9PSBzdGFjayAmJlxuICAgICAgICAgIChub3JtYWxpemVkU3RhY2tUcmFjZSA9IGNyZWF0ZUZha2VKU1hDYWxsU3RhY2tJbkRFVihcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICApKTtcbiAgICAgIGVsZW1lbnQuX2RlYnVnU3RhY2sgPSBub3JtYWxpemVkU3RhY2tUcmFjZTtcbiAgICAgIG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gbnVsbDtcbiAgICAgIHN1cHBvcnRzQ3JlYXRlVGFzayAmJlxuICAgICAgICBudWxsICE9PSBzdGFjayAmJlxuICAgICAgICAoKG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gY29uc29sZS5jcmVhdGVUYXNrLmJpbmQoXG4gICAgICAgICAgY29uc29sZSxcbiAgICAgICAgICBnZXRUYXNrTmFtZShlbGVtZW50LnR5cGUpXG4gICAgICAgICkpLFxuICAgICAgICAoc3RhY2sgPSBidWlsZEZha2VDYWxsU3RhY2soXG4gICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgZW52LFxuICAgICAgICAgICExLFxuICAgICAgICAgIG5vcm1hbGl6ZWRTdGFja1RyYWNlXG4gICAgICAgICkpLFxuICAgICAgICAoZW52ID0gbnVsbCA9PT0gb3duZXIgPyBudWxsIDogaW5pdGlhbGl6ZUZha2VUYXNrKHJlc3BvbnNlLCBvd25lcikpLFxuICAgICAgICBudWxsID09PSBlbnZcbiAgICAgICAgICA/ICgoZW52ID0gcmVzcG9uc2UuX2RlYnVnUm9vdFRhc2spLFxuICAgICAgICAgICAgKG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gbnVsbCAhPSBlbnYgPyBlbnYucnVuKHN0YWNrKSA6IHN0YWNrKCkpKVxuICAgICAgICAgIDogKG5vcm1hbGl6ZWRTdGFja1RyYWNlID0gZW52LnJ1bihzdGFjaykpKTtcbiAgICAgIGVsZW1lbnQuX2RlYnVnVGFzayA9IG5vcm1hbGl6ZWRTdGFja1RyYWNlO1xuICAgICAgbnVsbCAhPT0gb3duZXIgJiYgaW5pdGlhbGl6ZUZha2VTdGFjayhyZXNwb25zZSwgb3duZXIpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTGF6eUNodW5rV3JhcHBlcihjaHVuaykge1xuICAgICAgdmFyIGxhenlUeXBlID0ge1xuICAgICAgICAkJHR5cGVvZjogUkVBQ1RfTEFaWV9UWVBFLFxuICAgICAgICBfcGF5bG9hZDogY2h1bmssXG4gICAgICAgIF9pbml0OiByZWFkQ2h1bmtcbiAgICAgIH07XG4gICAgICBjaHVuayA9IGNodW5rLl9kZWJ1Z0luZm8gfHwgKGNodW5rLl9kZWJ1Z0luZm8gPSBbXSk7XG4gICAgICBsYXp5VHlwZS5fZGVidWdJbmZvID0gY2h1bms7XG4gICAgICByZXR1cm4gbGF6eVR5cGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENodW5rKHJlc3BvbnNlLCBpZCkge1xuICAgICAgdmFyIGNodW5rcyA9IHJlc3BvbnNlLl9jaHVua3MsXG4gICAgICAgIGNodW5rID0gY2h1bmtzLmdldChpZCk7XG4gICAgICBjaHVuayB8fFxuICAgICAgICAoKGNodW5rID0gcmVzcG9uc2UuX2Nsb3NlZFxuICAgICAgICAgID8gbmV3IFJlYWN0UHJvbWlzZShcInJlamVjdGVkXCIsIG51bGwsIHJlc3BvbnNlLl9jbG9zZWRSZWFzb24pXG4gICAgICAgICAgOiBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpKSxcbiAgICAgICAgY2h1bmtzLnNldChpZCwgY2h1bmspKTtcbiAgICAgIHJldHVybiBjaHVuaztcbiAgICB9XG4gICAgZnVuY3Rpb24gZnVsZmlsbFJlZmVyZW5jZShyZWZlcmVuY2UsIHZhbHVlKSB7XG4gICAgICB2YXIgcmVzcG9uc2UgPSByZWZlcmVuY2UucmVzcG9uc2UsXG4gICAgICAgIGhhbmRsZXIgPSByZWZlcmVuY2UuaGFuZGxlcixcbiAgICAgICAgcGFyZW50T2JqZWN0ID0gcmVmZXJlbmNlLnBhcmVudE9iamVjdCxcbiAgICAgICAga2V5ID0gcmVmZXJlbmNlLmtleSxcbiAgICAgICAgbWFwID0gcmVmZXJlbmNlLm1hcCxcbiAgICAgICAgcGF0aCA9IHJlZmVyZW5jZS5wYXRoO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZm9yICg7IHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEU7ICkge1xuICAgICAgICAgICAgdmFyIHJlZmVyZW5jZWRDaHVuayA9IHZhbHVlLl9wYXlsb2FkO1xuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZWRDaHVuayA9PT0gaGFuZGxlci5jaHVuaykgdmFsdWUgPSBoYW5kbGVyLnZhbHVlO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHN3aXRjaCAocmVmZXJlbmNlZENodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2RlbFwiOlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsocmVmZXJlbmNlZENodW5rKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2R1bGVcIjpcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVNb2R1bGVDaHVuayhyZWZlcmVuY2VkQ2h1bmspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN3aXRjaCAocmVmZXJlbmNlZENodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmVmZXJlbmNlZENodW5rLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICAgICAgICAgIHZhciBjeWNsaWNIYW5kbGVyID0gcmVzb2x2ZUJsb2NrZWRDeWNsZShcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZENodW5rLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gY3ljbGljSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGN5Y2xpY0hhbmRsZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLCBpIC0gMSk7XG4gICAgICAgICAgICAgICAgICBudWxsID09PSByZWZlcmVuY2VkQ2h1bmsudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyAocmVmZXJlbmNlZENodW5rLnZhbHVlID0gW3JlZmVyZW5jZV0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlZENodW5rLnZhbHVlLnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgIG51bGwgPT09IHJlZmVyZW5jZWRDaHVuay5yZWFzb25cbiAgICAgICAgICAgICAgICAgICAgPyAocmVmZXJlbmNlZENodW5rLnJlYXNvbiA9IFtyZWZlcmVuY2VdKVxuICAgICAgICAgICAgICAgICAgICA6IHJlZmVyZW5jZWRDaHVuay5yZWFzb24ucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmVqZWN0UmVmZXJlbmNlKHJlZmVyZW5jZSwgcmVmZXJlbmNlZENodW5rLnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG5hbWUgPSBwYXRoW2ldO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdmFsdWUgJiZcbiAgICAgICAgICAgIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIG5hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtuYW1lXTtcbiAgICAgICAgICBlbHNlIHRocm93IEVycm9yKFwiSW52YWxpZCByZWZlcmVuY2UuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtYXBwZWRWYWx1ZSA9IG1hcChyZXNwb25zZSwgdmFsdWUsIHBhcmVudE9iamVjdCwga2V5KTtcbiAgICAgICAgXCJfX3Byb3RvX19cIiAhPT0ga2V5ICYmIChwYXJlbnRPYmplY3Rba2V5XSA9IG1hcHBlZFZhbHVlKTtcbiAgICAgICAgXCJcIiA9PT0ga2V5ICYmIG51bGwgPT09IGhhbmRsZXIudmFsdWUgJiYgKGhhbmRsZXIudmFsdWUgPSBtYXBwZWRWYWx1ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnRPYmplY3RbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJlxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgbnVsbCAhPT0gaGFuZGxlci52YWx1ZSAmJlxuICAgICAgICAgIGhhbmRsZXIudmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgZWxlbWVudCA9IGhhbmRsZXIudmFsdWU7XG4gICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgICAgICAgIGVsZW1lbnQucHJvcHMgPSBtYXBwZWRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiNFwiOlxuICAgICAgICAgICAgICBlbGVtZW50Ll9vd25lciA9IG1hcHBlZFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgICAgICAgIGVsZW1lbnQuX2RlYnVnU3RhY2sgPSBtYXBwZWRWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdFJlZmVyZW5jZShyZWZlcmVuY2UsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaGFuZGxlci5kZXBzLS07XG4gICAgICAwID09PSBoYW5kbGVyLmRlcHMgJiZcbiAgICAgICAgKChyZWZlcmVuY2UgPSBoYW5kbGVyLmNodW5rKSxcbiAgICAgICAgbnVsbCAhPT0gcmVmZXJlbmNlICYmXG4gICAgICAgICAgXCJibG9ja2VkXCIgPT09IHJlZmVyZW5jZS5zdGF0dXMgJiZcbiAgICAgICAgICAoKHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKSxcbiAgICAgICAgICAocmVmZXJlbmNlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCIpLFxuICAgICAgICAgIChyZWZlcmVuY2UudmFsdWUgPSBoYW5kbGVyLnZhbHVlKSxcbiAgICAgICAgICAocmVmZXJlbmNlLnJlYXNvbiA9IGhhbmRsZXIucmVhc29uKSxcbiAgICAgICAgICBudWxsICE9PSB2YWx1ZSAmJiB3YWtlQ2h1bmsodmFsdWUsIGhhbmRsZXIudmFsdWUpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlamVjdFJlZmVyZW5jZShyZWZlcmVuY2UsIGVycm9yKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IHJlZmVyZW5jZS5oYW5kbGVyO1xuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLnJlc3BvbnNlO1xuICAgICAgaWYgKCFoYW5kbGVyLmVycm9yZWQpIHtcbiAgICAgICAgdmFyIGJsb2NrZWRWYWx1ZSA9IGhhbmRsZXIudmFsdWU7XG4gICAgICAgIGhhbmRsZXIuZXJyb3JlZCA9ICEwO1xuICAgICAgICBoYW5kbGVyLnZhbHVlID0gbnVsbDtcbiAgICAgICAgaGFuZGxlci5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgaGFuZGxlciA9IGhhbmRsZXIuY2h1bms7XG4gICAgICAgIGlmIChudWxsICE9PSBoYW5kbGVyICYmIFwiYmxvY2tlZFwiID09PSBoYW5kbGVyLnN0YXR1cykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBibG9ja2VkVmFsdWUgJiZcbiAgICAgICAgICAgIG51bGwgIT09IGJsb2NrZWRWYWx1ZSAmJlxuICAgICAgICAgICAgYmxvY2tlZFZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBlcnJvcmVkQ29tcG9uZW50ID0ge1xuICAgICAgICAgICAgICBuYW1lOiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoYmxvY2tlZFZhbHVlLnR5cGUpIHx8IFwiXCIsXG4gICAgICAgICAgICAgIG93bmVyOiBibG9ja2VkVmFsdWUuX293bmVyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZXJyb3JlZENvbXBvbmVudC5kZWJ1Z1N0YWNrID0gYmxvY2tlZFZhbHVlLl9kZWJ1Z1N0YWNrO1xuICAgICAgICAgICAgc3VwcG9ydHNDcmVhdGVUYXNrICYmXG4gICAgICAgICAgICAgIChlcnJvcmVkQ29tcG9uZW50LmRlYnVnVGFzayA9IGJsb2NrZWRWYWx1ZS5fZGVidWdUYXNrKTtcbiAgICAgICAgICAgIChoYW5kbGVyLl9kZWJ1Z0luZm8gfHwgKGhhbmRsZXIuX2RlYnVnSW5mbyA9IFtdKSkucHVzaChcbiAgICAgICAgICAgICAgZXJyb3JlZENvbXBvbmVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJpZ2dlckVycm9yT25DaHVuayhyZWZlcmVuY2UsIGhhbmRsZXIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3YWl0Rm9yUmVmZXJlbmNlKFxuICAgICAgcmVmZXJlbmNlZENodW5rLFxuICAgICAgcGFyZW50T2JqZWN0LFxuICAgICAga2V5LFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBtYXAsXG4gICAgICBwYXRoXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHZvaWQgMCA9PT0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCAmJlxuICAgICAgICBcInBlbmRpbmdcIiA9PT0gcmVmZXJlbmNlZENodW5rLnN0YXR1cyAmJlxuICAgICAgICBwYXJlbnRPYmplY3RbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJlxuICAgICAgICAoXCI0XCIgPT09IGtleSB8fCBcIjVcIiA9PT0ga2V5KVxuICAgICAgKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChpbml0aWFsaXppbmdIYW5kbGVyKSB7XG4gICAgICAgIHZhciBoYW5kbGVyID0gaW5pdGlhbGl6aW5nSGFuZGxlcjtcbiAgICAgICAgaGFuZGxlci5kZXBzKys7XG4gICAgICB9IGVsc2VcbiAgICAgICAgaGFuZGxlciA9IGluaXRpYWxpemluZ0hhbmRsZXIgPSB7XG4gICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgIHJlYXNvbjogbnVsbCxcbiAgICAgICAgICBkZXBzOiAxLFxuICAgICAgICAgIGVycm9yZWQ6ICExXG4gICAgICAgIH07XG4gICAgICBwYXJlbnRPYmplY3QgPSB7XG4gICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgaGFuZGxlcjogaGFuZGxlcixcbiAgICAgICAgcGFyZW50T2JqZWN0OiBwYXJlbnRPYmplY3QsXG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBtYXA6IG1hcCxcbiAgICAgICAgcGF0aDogcGF0aFxuICAgICAgfTtcbiAgICAgIG51bGwgPT09IHJlZmVyZW5jZWRDaHVuay52YWx1ZVxuICAgICAgICA/IChyZWZlcmVuY2VkQ2h1bmsudmFsdWUgPSBbcGFyZW50T2JqZWN0XSlcbiAgICAgICAgOiByZWZlcmVuY2VkQ2h1bmsudmFsdWUucHVzaChwYXJlbnRPYmplY3QpO1xuICAgICAgbnVsbCA9PT0gcmVmZXJlbmNlZENodW5rLnJlYXNvblxuICAgICAgICA/IChyZWZlcmVuY2VkQ2h1bmsucmVhc29uID0gW3BhcmVudE9iamVjdF0pXG4gICAgICAgIDogcmVmZXJlbmNlZENodW5rLnJlYXNvbi5wdXNoKHBhcmVudE9iamVjdCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9hZFNlcnZlclJlZmVyZW5jZShyZXNwb25zZSwgbWV0YURhdGEsIHBhcmVudE9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoIXJlc3BvbnNlLl9zZXJ2ZXJSZWZlcmVuY2VDb25maWcpXG4gICAgICAgIHJldHVybiBjcmVhdGVCb3VuZFNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICBtZXRhRGF0YSxcbiAgICAgICAgICByZXNwb25zZS5fY2FsbFNlcnZlcixcbiAgICAgICAgICByZXNwb25zZS5fZW5jb2RlRm9ybUFjdGlvbixcbiAgICAgICAgICByZXNwb25zZS5fZGVidWdGaW5kU291cmNlTWFwVVJMXG4gICAgICAgICk7XG4gICAgICB2YXIgc2VydmVyUmVmZXJlbmNlID0gcmVzb2x2ZVNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICByZXNwb25zZS5fc2VydmVyUmVmZXJlbmNlQ29uZmlnLFxuICAgICAgICAgIG1ldGFEYXRhLmlkXG4gICAgICAgICksXG4gICAgICAgIHByb21pc2UgPSBwcmVsb2FkTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgICBpZiAocHJvbWlzZSlcbiAgICAgICAgbWV0YURhdGEuYm91bmQgJiYgKHByb21pc2UgPSBQcm9taXNlLmFsbChbcHJvbWlzZSwgbWV0YURhdGEuYm91bmRdKSk7XG4gICAgICBlbHNlIGlmIChtZXRhRGF0YS5ib3VuZCkgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShtZXRhRGF0YS5ib3VuZCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHByb21pc2UgPSByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSkpLFxuICAgICAgICAgIHJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UoXG4gICAgICAgICAgICBwcm9taXNlLFxuICAgICAgICAgICAgbWV0YURhdGEuaWQsXG4gICAgICAgICAgICBtZXRhRGF0YS5ib3VuZCxcbiAgICAgICAgICAgIHJlc3BvbnNlLl9lbmNvZGVGb3JtQWN0aW9uXG4gICAgICAgICAgKSxcbiAgICAgICAgICBwcm9taXNlXG4gICAgICAgICk7XG4gICAgICBpZiAoaW5pdGlhbGl6aW5nSGFuZGxlcikge1xuICAgICAgICB2YXIgaGFuZGxlciA9IGluaXRpYWxpemluZ0hhbmRsZXI7XG4gICAgICAgIGhhbmRsZXIuZGVwcysrO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGhhbmRsZXIgPSBpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICBjaHVuazogbnVsbCxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgZGVwczogMSxcbiAgICAgICAgICBlcnJvcmVkOiAhMVxuICAgICAgICB9O1xuICAgICAgcHJvbWlzZS50aGVuKFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgICAgICAgaWYgKG1ldGFEYXRhLmJvdW5kKSB7XG4gICAgICAgICAgICB2YXIgYm91bmRBcmdzID0gbWV0YURhdGEuYm91bmQudmFsdWUuc2xpY2UoMCk7XG4gICAgICAgICAgICBib3VuZEFyZ3MudW5zaGlmdChudWxsKTtcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSByZXNvbHZlZFZhbHVlLmJpbmQuYXBwbHkocmVzb2x2ZWRWYWx1ZSwgYm91bmRBcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUsXG4gICAgICAgICAgICBtZXRhRGF0YS5pZCxcbiAgICAgICAgICAgIG1ldGFEYXRhLmJvdW5kLFxuICAgICAgICAgICAgcmVzcG9uc2UuX2VuY29kZUZvcm1BY3Rpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIFwiX19wcm90b19fXCIgIT09IGtleSAmJiAocGFyZW50T2JqZWN0W2tleV0gPSByZXNvbHZlZFZhbHVlKTtcbiAgICAgICAgICBcIlwiID09PSBrZXkgJiZcbiAgICAgICAgICAgIG51bGwgPT09IGhhbmRsZXIudmFsdWUgJiZcbiAgICAgICAgICAgIChoYW5kbGVyLnZhbHVlID0gcmVzb2x2ZWRWYWx1ZSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50T2JqZWN0WzBdID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgJiZcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgICBudWxsICE9PSBoYW5kbGVyLnZhbHVlICYmXG4gICAgICAgICAgICBoYW5kbGVyLnZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbiAgICAgICAgICApXG4gICAgICAgICAgICBzd2l0Y2ggKCgoYm91bmRBcmdzID0gaGFuZGxlci52YWx1ZSksIGtleSkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIjNcIjpcbiAgICAgICAgICAgICAgICBib3VuZEFyZ3MucHJvcHMgPSByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiNFwiOlxuICAgICAgICAgICAgICAgIGJvdW5kQXJncy5fb3duZXIgPSByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGhhbmRsZXIuZGVwcy0tO1xuICAgICAgICAgIDAgPT09IGhhbmRsZXIuZGVwcyAmJlxuICAgICAgICAgICAgKChyZXNvbHZlZFZhbHVlID0gaGFuZGxlci5jaHVuayksXG4gICAgICAgICAgICBudWxsICE9PSByZXNvbHZlZFZhbHVlICYmXG4gICAgICAgICAgICAgIFwiYmxvY2tlZFwiID09PSByZXNvbHZlZFZhbHVlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAoKGJvdW5kQXJncyA9IHJlc29sdmVkVmFsdWUudmFsdWUpLFxuICAgICAgICAgICAgICAocmVzb2x2ZWRWYWx1ZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiKSxcbiAgICAgICAgICAgICAgKHJlc29sdmVkVmFsdWUudmFsdWUgPSBoYW5kbGVyLnZhbHVlKSxcbiAgICAgICAgICAgICAgKHJlc29sdmVkVmFsdWUucmVhc29uID0gbnVsbCksXG4gICAgICAgICAgICAgIG51bGwgIT09IGJvdW5kQXJncyAmJiB3YWtlQ2h1bmsoYm91bmRBcmdzLCBoYW5kbGVyLnZhbHVlKSkpO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoIWhhbmRsZXIuZXJyb3JlZCkge1xuICAgICAgICAgICAgdmFyIGJsb2NrZWRWYWx1ZSA9IGhhbmRsZXIudmFsdWU7XG4gICAgICAgICAgICBoYW5kbGVyLmVycm9yZWQgPSAhMDtcbiAgICAgICAgICAgIGhhbmRsZXIudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgaGFuZGxlci5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICAgIHZhciBjaHVuayA9IGhhbmRsZXIuY2h1bms7XG4gICAgICAgICAgICBpZiAobnVsbCAhPT0gY2h1bmsgJiYgXCJibG9ja2VkXCIgPT09IGNodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGJsb2NrZWRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIG51bGwgIT09IGJsb2NrZWRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIGJsb2NrZWRWYWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcmVkQ29tcG9uZW50ID0ge1xuICAgICAgICAgICAgICAgICAgbmFtZTogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGJsb2NrZWRWYWx1ZS50eXBlKSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgb3duZXI6IGJsb2NrZWRWYWx1ZS5fb3duZXJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGVycm9yZWRDb21wb25lbnQuZGVidWdTdGFjayA9IGJsb2NrZWRWYWx1ZS5fZGVidWdTdGFjaztcbiAgICAgICAgICAgICAgICBzdXBwb3J0c0NyZWF0ZVRhc2sgJiZcbiAgICAgICAgICAgICAgICAgIChlcnJvcmVkQ29tcG9uZW50LmRlYnVnVGFzayA9IGJsb2NrZWRWYWx1ZS5fZGVidWdUYXNrKTtcbiAgICAgICAgICAgICAgICAoY2h1bmsuX2RlYnVnSW5mbyB8fCAoY2h1bmsuX2RlYnVnSW5mbyA9IFtdKSkucHVzaChcbiAgICAgICAgICAgICAgICAgIGVycm9yZWRDb21wb25lbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRyaWdnZXJFcnJvck9uQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZmVyZW5jZSwgcGFyZW50T2JqZWN0LCBrZXksIG1hcCkge1xuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLnNwbGl0KFwiOlwiKTtcbiAgICAgIHZhciBpZCA9IHBhcnNlSW50KHJlZmVyZW5jZVswXSwgMTYpO1xuICAgICAgaWQgPSBnZXRDaHVuayhyZXNwb25zZSwgaWQpO1xuICAgICAgc3dpdGNoIChpZC5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZGVsXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoaWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kdWxlXCI6XG4gICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKGlkKTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoaWQuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICBmb3IgKHZhciB2YWx1ZSA9IGlkLnZhbHVlLCBpID0gMTsgaSA8IHJlZmVyZW5jZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yICg7IHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEU7ICkge1xuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXlsb2FkO1xuICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyZXNvbHZlZF9tb2RlbFwiOlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZHVsZVwiOlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZU1vZHVsZUNodW5rKHZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYmxvY2tlZFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJwZW5kaW5nXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gd2FpdEZvclJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Uuc2xpY2UoaSAtIDEpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJoYWx0ZWRcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICA/ICgocmVzcG9uc2UgPSBpbml0aWFsaXppbmdIYW5kbGVyKSwgcmVzcG9uc2UuZGVwcysrKVxuICAgICAgICAgICAgICAgICAgICAgIDogKGluaXRpYWxpemluZ0hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZWQ6ICExXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgID8gKChpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5pdGlhbGl6aW5nSGFuZGxlci52YWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIucmVhc29uID0gdmFsdWUucmVhc29uKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IChpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uOiB2YWx1ZS5yZWFzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZWQ6ICEwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtyZWZlcmVuY2VbaV1dO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNwb25zZSA9IG1hcChyZXNwb25zZSwgdmFsdWUsIHBhcmVudE9iamVjdCwga2V5KTtcbiAgICAgICAgICBpZC5fZGVidWdJbmZvICYmXG4gICAgICAgICAgICAoXCJvYmplY3RcIiAhPT0gdHlwZW9mIHJlc3BvbnNlIHx8XG4gICAgICAgICAgICAgIG51bGwgPT09IHJlc3BvbnNlIHx8XG4gICAgICAgICAgICAgICghaXNBcnJheUltcGwocmVzcG9uc2UpICYmXG4gICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgcmVzcG9uc2VbQVNZTkNfSVRFUkFUT1JdICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2UuX2RlYnVnSW5mbyB8fFxuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzcG9uc2UsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkLl9kZWJ1Z0luZm9cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICByZXR1cm4gd2FpdEZvclJlZmVyZW5jZShcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgcGFyZW50T2JqZWN0LFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICBtYXAsXG4gICAgICAgICAgICByZWZlcmVuY2VcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwiaGFsdGVkXCI6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXJcbiAgICAgICAgICAgICAgPyAoKHJlc3BvbnNlID0gaW5pdGlhbGl6aW5nSGFuZGxlciksIHJlc3BvbnNlLmRlcHMrKylcbiAgICAgICAgICAgICAgOiAoaW5pdGlhbGl6aW5nSGFuZGxlciA9IHtcbiAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICByZWFzb246IG51bGwsXG4gICAgICAgICAgICAgICAgICBkZXBzOiAxLFxuICAgICAgICAgICAgICAgICAgZXJyb3JlZDogITFcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyXG4gICAgICAgICAgICAgID8gKChpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgPSAhMCksXG4gICAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIudmFsdWUgPSBudWxsKSxcbiAgICAgICAgICAgICAgICAoaW5pdGlhbGl6aW5nSGFuZGxlci5yZWFzb24gPSBpZC5yZWFzb24pKVxuICAgICAgICAgICAgICA6IChpbml0aWFsaXppbmdIYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgY2h1bms6IG51bGwsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHJlYXNvbjogaWQucmVhc29uLFxuICAgICAgICAgICAgICAgICAgZGVwczogMCxcbiAgICAgICAgICAgICAgICAgIGVycm9yZWQ6ICEwXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlTWFwKHJlc3BvbnNlLCBtb2RlbCkge1xuICAgICAgcmV0dXJuIG5ldyBNYXAobW9kZWwpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVTZXQocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXR1cm4gbmV3IFNldChtb2RlbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUJsb2IocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2IobW9kZWwuc2xpY2UoMSksIHsgdHlwZTogbW9kZWxbMF0gfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZvcm1EYXRhKHJlc3BvbnNlLCBtb2RlbCkge1xuICAgICAgcmVzcG9uc2UgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW9kZWwubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlc3BvbnNlLmFwcGVuZChtb2RlbFtpXVswXSwgbW9kZWxbaV1bMV0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhcHBseUNvbnN0cnVjdG9yKHJlc3BvbnNlLCBtb2RlbCwgcGFyZW50T2JqZWN0KSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YocGFyZW50T2JqZWN0LCBtb2RlbC5wcm90b3R5cGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZpbmVMYXp5R2V0dGVyKHJlc3BvbnNlLCBjaHVuaywgcGFyZW50T2JqZWN0LCBrZXkpIHtcbiAgICAgIFwiX19wcm90b19fXCIgIT09IGtleSAmJlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocGFyZW50T2JqZWN0LCBrZXksIHtcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIFwicmVzb2x2ZWRfbW9kZWxcIiA9PT0gY2h1bmsuc3RhdHVzICYmIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gY2h1bmsudmFsdWU7XG4gICAgICAgICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgICAgICAgIHRocm93IGNodW5rLnJlYXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlRoaXMgb2JqZWN0IGhhcyBiZWVuIG9taXR0ZWQgYnkgUmVhY3QgaW4gdGhlIGNvbnNvbGUgbG9nIHRvIGF2b2lkIHNlbmRpbmcgdG9vIG11Y2ggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIFRyeSBsb2dnaW5nIHNtYWxsZXIgb3IgbW9yZSBzcGVjaWZpYyBvYmplY3RzLlwiO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiAhMVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBleHRyYWN0SXRlcmF0b3IocmVzcG9uc2UsIG1vZGVsKSB7XG4gICAgICByZXR1cm4gbW9kZWxbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVNb2RlbChyZXNwb25zZSwgbW9kZWwpIHtcbiAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0SW5mZXJyZWRGdW5jdGlvbkFwcHJveGltYXRlKGNvZGUpIHtcbiAgICAgIGNvZGUgPSBjb2RlLnN0YXJ0c1dpdGgoXCJPYmplY3QuZGVmaW5lUHJvcGVydHkoXCIpXG4gICAgICAgID8gY29kZS5zbGljZSgyMilcbiAgICAgICAgOiBjb2RlLnN0YXJ0c1dpdGgoXCIoXCIpXG4gICAgICAgICAgPyBjb2RlLnNsaWNlKDEpXG4gICAgICAgICAgOiBjb2RlO1xuICAgICAgaWYgKGNvZGUuc3RhcnRzV2l0aChcImFzeW5jIGZ1bmN0aW9uXCIpKSB7XG4gICAgICAgIHZhciBpZHggPSBjb2RlLmluZGV4T2YoXCIoXCIsIDE0KTtcbiAgICAgICAgaWYgKC0xICE9PSBpZHgpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChjb2RlID0gY29kZS5zbGljZSgxNCwgaWR4KS50cmltKCkpLFxuICAgICAgICAgICAgKDAsIGV2YWwpKFwiKHtcIiArIEpTT04uc3RyaW5naWZ5KGNvZGUpICsgXCI6YXN5bmMgZnVuY3Rpb24oKXt9fSlcIilbXG4gICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjb2RlLnN0YXJ0c1dpdGgoXCJmdW5jdGlvblwiKSkge1xuICAgICAgICBpZiAoKChpZHggPSBjb2RlLmluZGV4T2YoXCIoXCIsIDgpKSwgLTEgIT09IGlkeCkpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChjb2RlID0gY29kZS5zbGljZSg4LCBpZHgpLnRyaW0oKSksXG4gICAgICAgICAgICAoMCwgZXZhbCkoXCIoe1wiICsgSlNPTi5zdHJpbmdpZnkoY29kZSkgKyBcIjpmdW5jdGlvbigpe319KVwiKVtjb2RlXVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjb2RlLnN0YXJ0c1dpdGgoXCJjbGFzc1wiKSAmJlxuICAgICAgICAoKGlkeCA9IGNvZGUuaW5kZXhPZihcIntcIiwgNSkpLCAtMSAhPT0gaWR4KVxuICAgICAgKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChjb2RlID0gY29kZS5zbGljZSg1LCBpZHgpLnRyaW0oKSksXG4gICAgICAgICAgKDAsIGV2YWwpKFwiKHtcIiArIEpTT04uc3RyaW5naWZ5KGNvZGUpICsgXCI6Y2xhc3N7fX0pXCIpW2NvZGVdXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge307XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBhcnNlTW9kZWxTdHJpbmcocmVzcG9uc2UsIHBhcmVudE9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKFwiJFwiID09PSB2YWx1ZVswXSkge1xuICAgICAgICBpZiAoXCIkXCIgPT09IHZhbHVlKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBudWxsICE9PSBpbml0aWFsaXppbmdIYW5kbGVyICYmXG4gICAgICAgICAgICAgIFwiMFwiID09PSBrZXkgJiZcbiAgICAgICAgICAgICAgKGluaXRpYWxpemluZ0hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgcGFyZW50OiBpbml0aWFsaXppbmdIYW5kbGVyLFxuICAgICAgICAgICAgICAgIGNodW5rOiBudWxsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogbnVsbCxcbiAgICAgICAgICAgICAgICBkZXBzOiAwLFxuICAgICAgICAgICAgICAgIGVycm9yZWQ6ICExXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgUkVBQ1RfRUxFTUVOVF9UWVBFXG4gICAgICAgICAgKTtcbiAgICAgICAgc3dpdGNoICh2YWx1ZVsxXSkge1xuICAgICAgICAgIGNhc2UgXCIkXCI6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSk7XG4gICAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChwYXJlbnRPYmplY3QgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMTYpKSxcbiAgICAgICAgICAgICAgKHJlc3BvbnNlID0gZ2V0Q2h1bmsocmVzcG9uc2UsIHBhcmVudE9iamVjdCkpLFxuICAgICAgICAgICAgICBjcmVhdGVMYXp5Q2h1bmtXcmFwcGVyKHJlc3BvbnNlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFwiQFwiOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHBhcmVudE9iamVjdCA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAxNikpLFxuICAgICAgICAgICAgICBnZXRDaHVuayhyZXNwb25zZSwgcGFyZW50T2JqZWN0KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgICAgcmV0dXJuIFN5bWJvbC5mb3IodmFsdWUuc2xpY2UoMikpO1xuICAgICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgICB2YXIgcmVmID0gdmFsdWUuc2xpY2UoMik7XG4gICAgICAgICAgICByZXR1cm4gZ2V0T3V0bGluZWRNb2RlbChcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgcGFyZW50T2JqZWN0LFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGxvYWRTZXJ2ZXJSZWZlcmVuY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIlRcIjpcbiAgICAgICAgICAgIHBhcmVudE9iamVjdCA9IFwiJFwiICsgdmFsdWUuc2xpY2UoMik7XG4gICAgICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlLl90ZW1wUmVmcztcbiAgICAgICAgICAgIGlmIChudWxsID09IHJlc3BvbnNlKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIk1pc3NpbmcgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlIHNldCBidXQgdGhlIFJTQyByZXNwb25zZSByZXR1cm5lZCBhIHRlbXBvcmFyeSByZWZlcmVuY2UuIFBhc3MgYSB0ZW1wb3JhcnlSZWZlcmVuY2Ugb3B0aW9uIHdpdGggdGhlIHNldCB0aGF0IHdhcyB1c2VkIHdpdGggdGhlIHJlcGx5LlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZ2V0KHBhcmVudE9iamVjdCk7XG4gICAgICAgICAgY2FzZSBcIlFcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXksIGNyZWF0ZU1hcClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXksIGNyZWF0ZVNldClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIkJcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXksIGNyZWF0ZUJsb2IpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJLXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVmID0gdmFsdWUuc2xpY2UoMikpLFxuICAgICAgICAgICAgICBnZXRPdXRsaW5lZE1vZGVsKHJlc3BvbnNlLCByZWYsIHBhcmVudE9iamVjdCwga2V5LCBjcmVhdGVGb3JtRGF0YSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIlpcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZUVycm9yRGV2XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgZXh0cmFjdEl0ZXJhdG9yXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBcIklcIjpcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgICBjYXNlIFwiLVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiJC0wXCIgPT09IHZhbHVlID8gLTAgOiAtSW5maW5pdHk7XG4gICAgICAgICAgY2FzZSBcIk5cIjpcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFwiRFwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUuc2xpY2UoMikpKTtcbiAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludCh2YWx1ZS5zbGljZSgyKSk7XG4gICAgICAgICAgY2FzZSBcIlBcIjpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgyKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHBhcmVudE9iamVjdCxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgYXBwbHlDb25zdHJ1Y3RvclxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgICAgICByZXNwb25zZSA9IHZhbHVlLnNsaWNlKDIpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKCFtaWdodEhhdmVTdGF0aWNDb25zdHJ1Y3Rvci50ZXN0KHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIGV2YWwpKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKChyZWYgPSBnZXRJbmZlcnJlZEZ1bmN0aW9uQXBwcm94aW1hdGUocmVzcG9uc2UpKSxcbiAgICAgICAgICAgICAgICByZXNwb25zZS5zdGFydHNXaXRoKFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KFwiKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IHJlc3BvbnNlLmxhc3RJbmRleE9mKCcsXCJuYW1lXCIse3ZhbHVlOlwiJyk7XG4gICAgICAgICAgICAgICAgaWYgKC0xICE9PSBpZHgpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2xpY2UoaWR4ICsgMTYgLSAxLCByZXNwb25zZS5sZW5ndGggLSAyKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsIFwibmFtZVwiLCB7IHZhbHVlOiBuYW1lIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgICAgICByZWYgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWY7XG4gICAgICAgICAgY2FzZSBcIllcIjpcbiAgICAgICAgICAgIGlmICgyIDwgdmFsdWUubGVuZ3RoICYmIChyZWYgPSByZXNwb25zZS5fZGVidWdDaGFubmVsKSkge1xuICAgICAgICAgICAgICBpZiAoXCJAXCIgPT09IHZhbHVlWzJdKVxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAocGFyZW50T2JqZWN0ID0gdmFsdWUuc2xpY2UoMykpLFxuICAgICAgICAgICAgICAgICAgKGtleSA9IHBhcnNlSW50KHBhcmVudE9iamVjdCwgMTYpKSxcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLl9jaHVua3MuaGFzKGtleSkgfHwgcmVmKFwiUDpcIiArIHBhcmVudE9iamVjdCksXG4gICAgICAgICAgICAgICAgICBnZXRDaHVuayhyZXNwb25zZSwga2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMik7XG4gICAgICAgICAgICAgIGlkeCA9IHBhcnNlSW50KHZhbHVlLCAxNik7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLl9jaHVua3MuaGFzKGlkeCkgfHwgcmVmKFwiUTpcIiArIHZhbHVlKTtcbiAgICAgICAgICAgICAgcmVmID0gZ2V0Q2h1bmsocmVzcG9uc2UsIGlkeCk7XG4gICAgICAgICAgICAgIHJldHVybiBcImZ1bGZpbGxlZFwiID09PSByZWYuc3RhdHVzXG4gICAgICAgICAgICAgICAgPyByZWYudmFsdWVcbiAgICAgICAgICAgICAgICA6IGRlZmluZUxhenlHZXR0ZXIocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJfX3Byb3RvX19cIiAhPT0ga2V5ICYmXG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXJlbnRPYmplY3QsIGtleSwge1xuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiVGhpcyBvYmplY3QgaGFzIGJlZW4gb21pdHRlZCBieSBSZWFjdCBpbiB0aGUgY29uc29sZSBsb2cgdG8gYXZvaWQgc2VuZGluZyB0b28gbXVjaCBkYXRhIGZyb20gdGhlIHNlcnZlci4gVHJ5IGxvZ2dpbmcgc21hbGxlciBvciBtb3JlIHNwZWNpZmljIG9iamVjdHMuXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChyZWYgPSB2YWx1ZS5zbGljZSgxKSksXG4gICAgICAgICAgICAgIGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIHJlZiwgcGFyZW50T2JqZWN0LCBrZXksIGNyZWF0ZU1vZGVsKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtaXNzaW5nQ2FsbCgpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnVHJ5aW5nIHRvIGNhbGwgYSBmdW5jdGlvbiBmcm9tIFwidXNlIHNlcnZlclwiIGJ1dCB0aGUgY2FsbFNlcnZlciBvcHRpb24gd2FzIG5vdCBpbXBsZW1lbnRlZCBpbiB5b3VyIHJvdXRlciBydW50aW1lLidcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFJlc3BvbnNlSW5zdGFuY2UoXG4gICAgICBidW5kbGVyQ29uZmlnLFxuICAgICAgc2VydmVyUmVmZXJlbmNlQ29uZmlnLFxuICAgICAgbW9kdWxlTG9hZGluZyxcbiAgICAgIGNhbGxTZXJ2ZXIsXG4gICAgICBlbmNvZGVGb3JtQWN0aW9uLFxuICAgICAgbm9uY2UsXG4gICAgICB0ZW1wb3JhcnlSZWZlcmVuY2VzLFxuICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgIHJlcGxheUNvbnNvbGUsXG4gICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICBkZWJ1Z0NoYW5uZWxcbiAgICApIHtcbiAgICAgIHZhciBjaHVua3MgPSBuZXcgTWFwKCk7XG4gICAgICB0aGlzLl9idW5kbGVyQ29uZmlnID0gYnVuZGxlckNvbmZpZztcbiAgICAgIHRoaXMuX3NlcnZlclJlZmVyZW5jZUNvbmZpZyA9IHNlcnZlclJlZmVyZW5jZUNvbmZpZztcbiAgICAgIHRoaXMuX21vZHVsZUxvYWRpbmcgPSBtb2R1bGVMb2FkaW5nO1xuICAgICAgdGhpcy5fY2FsbFNlcnZlciA9IHZvaWQgMCAhPT0gY2FsbFNlcnZlciA/IGNhbGxTZXJ2ZXIgOiBtaXNzaW5nQ2FsbDtcbiAgICAgIHRoaXMuX2VuY29kZUZvcm1BY3Rpb24gPSBlbmNvZGVGb3JtQWN0aW9uO1xuICAgICAgdGhpcy5fbm9uY2UgPSBub25jZTtcbiAgICAgIHRoaXMuX2NodW5rcyA9IGNodW5rcztcbiAgICAgIHRoaXMuX3N0cmluZ0RlY29kZXIgPSBuZXcgdXRpbC5UZXh0RGVjb2RlcigpO1xuICAgICAgdGhpcy5fZnJvbUpTT04gPSBudWxsO1xuICAgICAgdGhpcy5fY2xvc2VkID0gITE7XG4gICAgICB0aGlzLl9jbG9zZWRSZWFzb24gPSBudWxsO1xuICAgICAgdGhpcy5fdGVtcFJlZnMgPSB0ZW1wb3JhcnlSZWZlcmVuY2VzO1xuICAgICAgdGhpcy5fcGVuZGluZ0NodW5rcyA9IDA7XG4gICAgICB0aGlzLl93ZWFrUmVzcG9uc2UgPSB7IHdlYWs6IG5ldyBXZWFrUmVmKHRoaXMpLCByZXNwb25zZTogdGhpcyB9O1xuICAgICAgdGhpcy5fZGVidWdSb290T3duZXIgPSBidW5kbGVyQ29uZmlnID1cbiAgICAgICAgdm9pZCAwID09PSBSZWFjdFNoYXJlZEludGVyYWxzU2VydmVyIHx8XG4gICAgICAgIG51bGwgPT09IFJlYWN0U2hhcmVkSW50ZXJhbHNTZXJ2ZXIuQVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogUmVhY3RTaGFyZWRJbnRlcmFsc1NlcnZlci5BLmdldE93bmVyKCk7XG4gICAgICB0aGlzLl9kZWJ1Z1Jvb3RTdGFjayA9XG4gICAgICAgIG51bGwgIT09IGJ1bmRsZXJDb25maWcgPyBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKSA6IG51bGw7XG4gICAgICBlbnZpcm9ubWVudE5hbWUgPSB2b2lkIDAgPT09IGVudmlyb25tZW50TmFtZSA/IFwiU2VydmVyXCIgOiBlbnZpcm9ubWVudE5hbWU7XG4gICAgICBzdXBwb3J0c0NyZWF0ZVRhc2sgJiZcbiAgICAgICAgKHRoaXMuX2RlYnVnUm9vdFRhc2sgPSBjb25zb2xlLmNyZWF0ZVRhc2soXG4gICAgICAgICAgJ1widXNlICcgKyBlbnZpcm9ubWVudE5hbWUudG9Mb3dlckNhc2UoKSArICdcIidcbiAgICAgICAgKSk7XG4gICAgICB0aGlzLl9kZWJ1Z0ZpbmRTb3VyY2VNYXBVUkwgPSBmaW5kU291cmNlTWFwVVJMO1xuICAgICAgdGhpcy5fZGVidWdDaGFubmVsID0gZGVidWdDaGFubmVsO1xuICAgICAgdGhpcy5fYmxvY2tlZENvbnNvbGUgPSBudWxsO1xuICAgICAgdGhpcy5fcmVwbGF5Q29uc29sZSA9IHJlcGxheUNvbnNvbGU7XG4gICAgICB0aGlzLl9yb290RW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnROYW1lO1xuICAgICAgZGVidWdDaGFubmVsICYmXG4gICAgICAgIChudWxsID09PSBkZWJ1Z0NoYW5uZWxSZWdpc3RyeVxuICAgICAgICAgID8gKGRlYnVnQ2hhbm5lbChcIlwiKSwgKHRoaXMuX2RlYnVnQ2hhbm5lbCA9IHZvaWQgMCkpXG4gICAgICAgICAgOiBkZWJ1Z0NoYW5uZWxSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLCBkZWJ1Z0NoYW5uZWwpKTtcbiAgICAgIHRoaXMuX2Zyb21KU09OID0gY3JlYXRlRnJvbUpTT05DYWxsYmFjayh0aGlzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlU3RyZWFtU3RhdGUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfcm93U3RhdGU6IDAsXG4gICAgICAgIF9yb3dJRDogMCxcbiAgICAgICAgX3Jvd1RhZzogMCxcbiAgICAgICAgX3Jvd0xlbmd0aDogMCxcbiAgICAgICAgX2J1ZmZlcjogW11cbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVCdWZmZXIocmVzcG9uc2UsIGlkLCBidWZmZXIpIHtcbiAgICAgIHZhciBjaHVua3MgPSByZXNwb25zZS5fY2h1bmtzLFxuICAgICAgICBjaHVuayA9IGNodW5rcy5nZXQoaWQpO1xuICAgICAgY2h1bmsgJiYgXCJwZW5kaW5nXCIgIT09IGNodW5rLnN0YXR1c1xuICAgICAgICA/IGNodW5rLnJlYXNvbi5lbnF1ZXVlVmFsdWUoYnVmZmVyKVxuICAgICAgICA6IChjaHVuayAmJiByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayksXG4gICAgICAgICAgY2h1bmtzLnNldChpZCwgbmV3IFJlYWN0UHJvbWlzZShcImZ1bGZpbGxlZFwiLCBidWZmZXIsIG51bGwpKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVNb2R1bGUocmVzcG9uc2UsIGlkLCBtb2RlbCkge1xuICAgICAgdmFyIGNodW5rcyA9IHJlc3BvbnNlLl9jaHVua3MsXG4gICAgICAgIGNodW5rID0gY2h1bmtzLmdldChpZCk7XG4gICAgICBtb2RlbCA9IEpTT04ucGFyc2UobW9kZWwsIHJlc3BvbnNlLl9mcm9tSlNPTik7XG4gICAgICB2YXIgY2xpZW50UmVmZXJlbmNlID0gcmVzb2x2ZUNsaWVudFJlZmVyZW5jZShcbiAgICAgICAgcmVzcG9uc2UuX2J1bmRsZXJDb25maWcsXG4gICAgICAgIG1vZGVsXG4gICAgICApO1xuICAgICAgcHJlcGFyZURlc3RpbmF0aW9uV2l0aENodW5rcyhcbiAgICAgICAgcmVzcG9uc2UuX21vZHVsZUxvYWRpbmcsXG4gICAgICAgIG1vZGVsWzFdLFxuICAgICAgICByZXNwb25zZS5fbm9uY2VcbiAgICAgICk7XG4gICAgICBpZiAoKG1vZGVsID0gcHJlbG9hZE1vZHVsZShjbGllbnRSZWZlcmVuY2UpKSkge1xuICAgICAgICBpZiAoY2h1bmspIHtcbiAgICAgICAgICByZWxlYXNlUGVuZGluZ0NodW5rKHJlc3BvbnNlLCBjaHVuayk7XG4gICAgICAgICAgdmFyIGJsb2NrZWRDaHVuayA9IGNodW5rO1xuICAgICAgICAgIGJsb2NrZWRDaHVuay5zdGF0dXMgPSBcImJsb2NrZWRcIjtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgKGJsb2NrZWRDaHVuayA9IG5ldyBSZWFjdFByb21pc2UoXCJibG9ja2VkXCIsIG51bGwsIG51bGwpKSxcbiAgICAgICAgICAgIGNodW5rcy5zZXQoaWQsIGJsb2NrZWRDaHVuayk7XG4gICAgICAgIG1vZGVsLnRoZW4oXG4gICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVNb2R1bGVDaHVuayhyZXNwb25zZSwgYmxvY2tlZENodW5rLCBjbGllbnRSZWZlcmVuY2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgYmxvY2tlZENodW5rLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGNodW5rXG4gICAgICAgICAgPyByZXNvbHZlTW9kdWxlQ2h1bmsocmVzcG9uc2UsIGNodW5rLCBjbGllbnRSZWZlcmVuY2UpXG4gICAgICAgICAgOiBjaHVua3Muc2V0KFxuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgbmV3IFJlYWN0UHJvbWlzZShcInJlc29sdmVkX21vZHVsZVwiLCBjbGllbnRSZWZlcmVuY2UsIG51bGwpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlU3RyZWFtKHJlc3BvbnNlLCBpZCwgc3RyZWFtLCBjb250cm9sbGVyKSB7XG4gICAgICB2YXIgY2h1bmtzID0gcmVzcG9uc2UuX2NodW5rcyxcbiAgICAgICAgY2h1bmsgPSBjaHVua3MuZ2V0KGlkKTtcbiAgICAgIGlmICghY2h1bmspXG4gICAgICAgIGNodW5rcy5zZXQoaWQsIG5ldyBSZWFjdFByb21pc2UoXCJmdWxmaWxsZWRcIiwgc3RyZWFtLCBjb250cm9sbGVyKSk7XG4gICAgICBlbHNlIGlmIChcInBlbmRpbmdcIiA9PT0gY2h1bmsuc3RhdHVzKSB7XG4gICAgICAgIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIGNodW5rKTtcbiAgICAgICAgaWQgPSBjaHVuay52YWx1ZTtcbiAgICAgICAgaWYgKG51bGwgIT0gY2h1bmsuX2RlYnVnQ2h1bmspIHtcbiAgICAgICAgICBjaHVua3MgPSBpbml0aWFsaXppbmdIYW5kbGVyO1xuICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIgPSBudWxsO1xuICAgICAgICAgIGNodW5rLnN0YXR1cyA9IFwiYmxvY2tlZFwiO1xuICAgICAgICAgIGNodW5rLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICBjaHVuay5yZWFzb24gPSBudWxsO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChpbml0aWFsaXplRGVidWdDaHVuayhyZXNwb25zZSwgY2h1bmspLFxuICAgICAgICAgICAgICAoY2h1bmsuX2RlYnVnQ2h1bmsgPSBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5pdGlhbGl6aW5nSGFuZGxlciAmJlxuICAgICAgICAgICAgICAgICFpbml0aWFsaXppbmdIYW5kbGVyLmVycm9yZWQgJiZcbiAgICAgICAgICAgICAgICAwIDwgaW5pdGlhbGl6aW5nSGFuZGxlci5kZXBzKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIudmFsdWUgPSBzdHJlYW07XG4gICAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIucmVhc29uID0gY29udHJvbGxlcjtcbiAgICAgICAgICAgICAgaW5pdGlhbGl6aW5nSGFuZGxlci5jaHVuayA9IGNodW5rO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIgPSBjaHVua3M7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNodW5rLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgIGNodW5rLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICBjaHVuay5yZWFzb24gPSBjb250cm9sbGVyO1xuICAgICAgICBudWxsICE9PSBpZCAmJiB3YWtlQ2h1bmsoaWQsIGNodW5rLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRSZWFkYWJsZVN0cmVhbShyZXNwb25zZSwgaWQsIHR5cGUpIHtcbiAgICAgIHZhciBjb250cm9sbGVyID0gbnVsbCxcbiAgICAgICAgY2xvc2VkID0gITE7XG4gICAgICB0eXBlID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgY29udHJvbGxlciA9IGM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHByZXZpb3VzQmxvY2tlZENodW5rID0gbnVsbDtcbiAgICAgIHJlc29sdmVTdHJlYW0ocmVzcG9uc2UsIGlkLCB0eXBlLCB7XG4gICAgICAgIGVucXVldWVWYWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgbnVsbCA9PT0gcHJldmlvdXNCbG9ja2VkQ2h1bmtcbiAgICAgICAgICAgID8gY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKVxuICAgICAgICAgICAgOiBwcmV2aW91c0Jsb2NrZWRDaHVuay50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5xdWV1ZU1vZGVsOiBmdW5jdGlvbiAoanNvbikge1xuICAgICAgICAgIGlmIChudWxsID09PSBwcmV2aW91c0Jsb2NrZWRDaHVuaykge1xuICAgICAgICAgICAgdmFyIGNodW5rID0gY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCBqc29uKTtcbiAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKTtcbiAgICAgICAgICAgIFwiZnVsZmlsbGVkXCIgPT09IGNodW5rLnN0YXR1c1xuICAgICAgICAgICAgICA/IGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuay52YWx1ZSlcbiAgICAgICAgICAgICAgOiAoY2h1bmsudGhlbihcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVucXVldWUodik7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAocHJldmlvdXNCbG9ja2VkQ2h1bmsgPSBjaHVuaykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaHVuayA9IHByZXZpb3VzQmxvY2tlZENodW5rO1xuICAgICAgICAgICAgdmFyIF9jaHVuazMgPSBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpO1xuICAgICAgICAgICAgX2NodW5rMy50aGVuKFxuICAgICAgICAgICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVucXVldWUodik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwcmV2aW91c0Jsb2NrZWRDaHVuayA9IF9jaHVuazM7XG4gICAgICAgICAgICBjaHVuay50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja2VkQ2h1bmsgPT09IF9jaHVuazMgJiYgKHByZXZpb3VzQmxvY2tlZENodW5rID0gbnVsbCk7XG4gICAgICAgICAgICAgIHJlc29sdmVNb2RlbENodW5rKHJlc3BvbnNlLCBfY2h1bmszLCBqc29uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWNsb3NlZClcbiAgICAgICAgICAgIGlmICgoKGNsb3NlZCA9ICEwKSwgbnVsbCA9PT0gcHJldmlvdXNCbG9ja2VkQ2h1bmspKVxuICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIGJsb2NrZWRDaHVuayA9IHByZXZpb3VzQmxvY2tlZENodW5rO1xuICAgICAgICAgICAgICBwcmV2aW91c0Jsb2NrZWRDaHVuayA9IG51bGw7XG4gICAgICAgICAgICAgIGJsb2NrZWRDaHVuay50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmICghY2xvc2VkKVxuICAgICAgICAgICAgaWYgKCgoY2xvc2VkID0gITApLCBudWxsID09PSBwcmV2aW91c0Jsb2NrZWRDaHVuaykpXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBibG9ja2VkQ2h1bmsgPSBwcmV2aW91c0Jsb2NrZWRDaHVuaztcbiAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja2VkQ2h1bmsgPSBudWxsO1xuICAgICAgICAgICAgICBibG9ja2VkQ2h1bmsudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFzeW5jSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlSXRlcmF0b3IobmV4dCkge1xuICAgICAgbmV4dCA9IHsgbmV4dDogbmV4dCB9O1xuICAgICAgbmV4dFtBU1lOQ19JVEVSQVRPUl0gPSBhc3luY0l0ZXJhdG9yO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0YXJ0QXN5bmNJdGVyYWJsZShyZXNwb25zZSwgaWQsIGl0ZXJhdG9yKSB7XG4gICAgICB2YXIgYnVmZmVyID0gW10sXG4gICAgICAgIGNsb3NlZCA9ICExLFxuICAgICAgICBuZXh0V3JpdGVJbmRleCA9IDAsXG4gICAgICAgIGl0ZXJhYmxlID0ge307XG4gICAgICBpdGVyYWJsZVtBU1lOQ19JVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuZXh0UmVhZEluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICBpZiAodm9pZCAwICE9PSBhcmcpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgXCJWYWx1ZXMgY2Fubm90IGJlIHBhc3NlZCB0byBuZXh0KCkgb2YgQXN5bmNJdGVyYWJsZXMgcGFzc2VkIHRvIENsaWVudCBDb21wb25lbnRzLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChuZXh0UmVhZEluZGV4ID09PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoY2xvc2VkKVxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlYWN0UHJvbWlzZShcbiAgICAgICAgICAgICAgICBcImZ1bGZpbGxlZFwiLFxuICAgICAgICAgICAgICAgIHsgZG9uZTogITAsIHZhbHVlOiB2b2lkIDAgfSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBidWZmZXJbbmV4dFJlYWRJbmRleF0gPSBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYnVmZmVyW25leHRSZWFkSW5kZXgrK107XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHJlc29sdmVTdHJlYW0oXG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBpZCxcbiAgICAgICAgaXRlcmF0b3IgPyBpdGVyYWJsZVtBU1lOQ19JVEVSQVRPUl0oKSA6IGl0ZXJhYmxlLFxuICAgICAgICB7XG4gICAgICAgICAgZW5xdWV1ZVZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChuZXh0V3JpdGVJbmRleCA9PT0gYnVmZmVyLmxlbmd0aClcbiAgICAgICAgICAgICAgYnVmZmVyW25leHRXcml0ZUluZGV4XSA9IG5ldyBSZWFjdFByb21pc2UoXG4gICAgICAgICAgICAgICAgXCJmdWxmaWxsZWRcIixcbiAgICAgICAgICAgICAgICB7IGRvbmU6ICExLCB2YWx1ZTogdmFsdWUgfSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIGNodW5rID0gYnVmZmVyW25leHRXcml0ZUluZGV4XSxcbiAgICAgICAgICAgICAgICByZXNvbHZlTGlzdGVuZXJzID0gY2h1bmsudmFsdWUsXG4gICAgICAgICAgICAgICAgcmVqZWN0TGlzdGVuZXJzID0gY2h1bmsucmVhc29uO1xuICAgICAgICAgICAgICBjaHVuay5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICAgICAgICAgICAgICBjaHVuay52YWx1ZSA9IHsgZG9uZTogITEsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgICAgICBjaHVuay5yZWFzb24gPSBudWxsO1xuICAgICAgICAgICAgICBudWxsICE9PSByZXNvbHZlTGlzdGVuZXJzICYmXG4gICAgICAgICAgICAgICAgd2FrZUNodW5rSWZJbml0aWFsaXplZChcbiAgICAgICAgICAgICAgICAgIGNodW5rLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZUxpc3RlbmVycyxcbiAgICAgICAgICAgICAgICAgIHJlamVjdExpc3RlbmVyc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0V3JpdGVJbmRleCsrO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZW5xdWV1ZU1vZGVsOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG5leHRXcml0ZUluZGV4ID09PSBidWZmZXIubGVuZ3RoXG4gICAgICAgICAgICAgID8gKGJ1ZmZlcltuZXh0V3JpdGVJbmRleF0gPSBjcmVhdGVSZXNvbHZlZEl0ZXJhdG9yUmVzdWx0Q2h1bmsoXG4gICAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IHJlc29sdmVJdGVyYXRvclJlc3VsdENodW5rKFxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICBidWZmZXJbbmV4dFdyaXRlSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBuZXh0V3JpdGVJbmRleCsrO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCFjbG9zZWQpXG4gICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgY2xvc2VkID0gITAsXG4gICAgICAgICAgICAgICAgICBuZXh0V3JpdGVJbmRleCA9PT0gYnVmZmVyLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IChidWZmZXJbbmV4dFdyaXRlSW5kZXhdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVJlc29sdmVkSXRlcmF0b3JSZXN1bHRDaHVuayhyZXNwb25zZSwgdmFsdWUsICEwKSlcbiAgICAgICAgICAgICAgICAgICAgOiByZXNvbHZlSXRlcmF0b3JSZXN1bHRDaHVuayhcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW25leHRXcml0ZUluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgITBcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbmV4dFdyaXRlSW5kZXgrKztcbiAgICAgICAgICAgICAgICBuZXh0V3JpdGVJbmRleCA8IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJlc29sdmVJdGVyYXRvclJlc3VsdENodW5rKFxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICBidWZmZXJbbmV4dFdyaXRlSW5kZXgrK10sXG4gICAgICAgICAgICAgICAgICAnXCIkdW5kZWZpbmVkXCInLFxuICAgICAgICAgICAgICAgICAgITBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKCFjbG9zZWQpXG4gICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgY2xvc2VkID0gITAsXG4gICAgICAgICAgICAgICAgICBuZXh0V3JpdGVJbmRleCA9PT0gYnVmZmVyLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAoYnVmZmVyW25leHRXcml0ZUluZGV4XSA9IGNyZWF0ZVBlbmRpbmdDaHVuayhyZXNwb25zZSkpO1xuICAgICAgICAgICAgICAgIG5leHRXcml0ZUluZGV4IDwgYnVmZmVyLmxlbmd0aDtcblxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgYnVmZmVyW25leHRXcml0ZUluZGV4KytdLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlRXJyb3JEZXYocmVzcG9uc2UsIGVycm9ySW5mbykge1xuICAgICAgdmFyIG5hbWUgPSBlcnJvckluZm8ubmFtZSxcbiAgICAgICAgZW52ID0gZXJyb3JJbmZvLmVudjtcbiAgICAgIGVycm9ySW5mbyA9IGJ1aWxkRmFrZUNhbGxTdGFjayhcbiAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgIGVycm9ySW5mby5zdGFjayxcbiAgICAgICAgZW52LFxuICAgICAgICAhMSxcbiAgICAgICAgRXJyb3IuYmluZChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGVycm9ySW5mby5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBTZXJ2ZXIgQ29tcG9uZW50cyByZW5kZXIgYnV0IG5vIG1lc3NhZ2Ugd2FzIHByb3ZpZGVkXCJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJlc3BvbnNlID0gZ2V0Um9vdFRhc2socmVzcG9uc2UsIGVudik7XG4gICAgICByZXNwb25zZSA9IG51bGwgIT0gcmVzcG9uc2UgPyByZXNwb25zZS5ydW4oZXJyb3JJbmZvKSA6IGVycm9ySW5mbygpO1xuICAgICAgcmVzcG9uc2UubmFtZSA9IG5hbWU7XG4gICAgICByZXNwb25zZS5lbnZpcm9ubWVudE5hbWUgPSBlbnY7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZha2VGdW5jdGlvbihcbiAgICAgIG5hbWUsXG4gICAgICBmaWxlbmFtZSxcbiAgICAgIHNvdXJjZU1hcCxcbiAgICAgIGxpbmUsXG4gICAgICBjb2wsXG4gICAgICBlbmNsb3NpbmdMaW5lLFxuICAgICAgZW5jbG9zaW5nQ29sLFxuICAgICAgZW52aXJvbm1lbnROYW1lXG4gICAgKSB7XG4gICAgICBuYW1lIHx8IChuYW1lID0gXCI8YW5vbnltb3VzPlwiKTtcbiAgICAgIHZhciBlbmNvZGVkTmFtZSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgICAgMSA+IGVuY2xvc2luZ0xpbmUgPyAoZW5jbG9zaW5nTGluZSA9IDApIDogZW5jbG9zaW5nTGluZS0tO1xuICAgICAgMSA+IGVuY2xvc2luZ0NvbCA/IChlbmNsb3NpbmdDb2wgPSAwKSA6IGVuY2xvc2luZ0NvbC0tO1xuICAgICAgMSA+IGxpbmUgPyAobGluZSA9IDApIDogbGluZS0tO1xuICAgICAgMSA+IGNvbCA/IChjb2wgPSAwKSA6IGNvbC0tO1xuICAgICAgaWYgKFxuICAgICAgICBsaW5lIDwgZW5jbG9zaW5nTGluZSB8fFxuICAgICAgICAobGluZSA9PT0gZW5jbG9zaW5nTGluZSAmJiBjb2wgPCBlbmNsb3NpbmdDb2wpXG4gICAgICApXG4gICAgICAgIGVuY2xvc2luZ0NvbCA9IGVuY2xvc2luZ0xpbmUgPSAwO1xuICAgICAgMSA+IGxpbmVcbiAgICAgICAgPyAoKGxpbmUgPSBlbmNvZGVkTmFtZS5sZW5ndGggKyAzKSxcbiAgICAgICAgICAoZW5jbG9zaW5nQ29sIC09IGxpbmUpLFxuICAgICAgICAgIDAgPiBlbmNsb3NpbmdDb2wgJiYgKGVuY2xvc2luZ0NvbCA9IDApLFxuICAgICAgICAgIChjb2wgPSBjb2wgLSBlbmNsb3NpbmdDb2wgLSBsaW5lIC0gMyksXG4gICAgICAgICAgMCA+IGNvbCAmJiAoY29sID0gMCksXG4gICAgICAgICAgKGVuY29kZWROYW1lID1cbiAgICAgICAgICAgIFwiKHtcIiArXG4gICAgICAgICAgICBlbmNvZGVkTmFtZSArXG4gICAgICAgICAgICBcIjpcIiArXG4gICAgICAgICAgICBcIiBcIi5yZXBlYXQoZW5jbG9zaW5nQ29sKSArXG4gICAgICAgICAgICBcIl89PlwiICtcbiAgICAgICAgICAgIFwiIFwiLnJlcGVhdChjb2wpICtcbiAgICAgICAgICAgIFwiXygpfSlcIikpXG4gICAgICAgIDogMSA+IGVuY2xvc2luZ0xpbmVcbiAgICAgICAgICA/ICgoZW5jbG9zaW5nQ29sIC09IGVuY29kZWROYW1lLmxlbmd0aCArIDMpLFxuICAgICAgICAgICAgMCA+IGVuY2xvc2luZ0NvbCAmJiAoZW5jbG9zaW5nQ29sID0gMCksXG4gICAgICAgICAgICAoZW5jb2RlZE5hbWUgPVxuICAgICAgICAgICAgICBcIih7XCIgK1xuICAgICAgICAgICAgICBlbmNvZGVkTmFtZSArXG4gICAgICAgICAgICAgIFwiOlwiICtcbiAgICAgICAgICAgICAgXCIgXCIucmVwZWF0KGVuY2xvc2luZ0NvbCkgK1xuICAgICAgICAgICAgICBcIl89PlwiICtcbiAgICAgICAgICAgICAgXCJcXG5cIi5yZXBlYXQobGluZSAtIGVuY2xvc2luZ0xpbmUpICtcbiAgICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCkgK1xuICAgICAgICAgICAgICBcIl8oKX0pXCIpKVxuICAgICAgICAgIDogZW5jbG9zaW5nTGluZSA9PT0gbGluZVxuICAgICAgICAgICAgPyAoKGNvbCA9IGNvbCAtIGVuY2xvc2luZ0NvbCAtIDMpLFxuICAgICAgICAgICAgICAwID4gY29sICYmIChjb2wgPSAwKSxcbiAgICAgICAgICAgICAgKGVuY29kZWROYW1lID1cbiAgICAgICAgICAgICAgICBcIlxcblwiLnJlcGVhdChlbmNsb3NpbmdMaW5lIC0gMSkgK1xuICAgICAgICAgICAgICAgIFwiKHtcIiArXG4gICAgICAgICAgICAgICAgZW5jb2RlZE5hbWUgK1xuICAgICAgICAgICAgICAgIFwiOlxcblwiICtcbiAgICAgICAgICAgICAgICBcIiBcIi5yZXBlYXQoZW5jbG9zaW5nQ29sKSArXG4gICAgICAgICAgICAgICAgXCJfPT5cIiArXG4gICAgICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCkgK1xuICAgICAgICAgICAgICAgIFwiXygpfSlcIikpXG4gICAgICAgICAgICA6IChlbmNvZGVkTmFtZSA9XG4gICAgICAgICAgICAgICAgXCJcXG5cIi5yZXBlYXQoZW5jbG9zaW5nTGluZSAtIDEpICtcbiAgICAgICAgICAgICAgICBcIih7XCIgK1xuICAgICAgICAgICAgICAgIGVuY29kZWROYW1lICtcbiAgICAgICAgICAgICAgICBcIjpcXG5cIiArXG4gICAgICAgICAgICAgICAgXCIgXCIucmVwZWF0KGVuY2xvc2luZ0NvbCkgK1xuICAgICAgICAgICAgICAgIFwiXz0+XCIgK1xuICAgICAgICAgICAgICAgIFwiXFxuXCIucmVwZWF0KGxpbmUgLSBlbmNsb3NpbmdMaW5lKSArXG4gICAgICAgICAgICAgICAgXCIgXCIucmVwZWF0KGNvbCkgK1xuICAgICAgICAgICAgICAgIFwiXygpfSlcIik7XG4gICAgICBlbmNvZGVkTmFtZSA9XG4gICAgICAgIDEgPiBlbmNsb3NpbmdMaW5lXG4gICAgICAgICAgPyBlbmNvZGVkTmFtZSArXG4gICAgICAgICAgICBcIlxcbi8qIFRoaXMgbW9kdWxlIHdhcyByZW5kZXJlZCBieSBhIFNlcnZlciBDb21wb25lbnQuIFR1cm4gb24gU291cmNlIE1hcHMgdG8gc2VlIHRoZSBzZXJ2ZXIgc291cmNlLiAqL1wiXG4gICAgICAgICAgOiBcIi8qIFRoaXMgbW9kdWxlIHdhcyByZW5kZXJlZCBieSBhIFNlcnZlciBDb21wb25lbnQuIFR1cm4gb24gU291cmNlIE1hcHMgdG8gc2VlIHRoZSBzZXJ2ZXIgc291cmNlLiAqL1wiICtcbiAgICAgICAgICAgIGVuY29kZWROYW1lO1xuICAgICAgZmlsZW5hbWUuc3RhcnRzV2l0aChcIi9cIikgJiYgKGZpbGVuYW1lID0gXCJmaWxlOi8vXCIgKyBmaWxlbmFtZSk7XG4gICAgICBzb3VyY2VNYXBcbiAgICAgICAgPyAoKGVuY29kZWROYW1lICs9XG4gICAgICAgICAgICBcIlxcbi8vIyBzb3VyY2VVUkw9YWJvdXQ6Ly9SZWFjdC9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoZW52aXJvbm1lbnROYW1lKSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBlbmNvZGVVUkkoZmlsZW5hbWUpICtcbiAgICAgICAgICAgIFwiP1wiICtcbiAgICAgICAgICAgIGZha2VGdW5jdGlvbklkeCsrKSxcbiAgICAgICAgICAoZW5jb2RlZE5hbWUgKz0gXCJcXG4vLyMgc291cmNlTWFwcGluZ1VSTD1cIiArIHNvdXJjZU1hcCkpXG4gICAgICAgIDogKGVuY29kZWROYW1lID0gZmlsZW5hbWVcbiAgICAgICAgICAgID8gZW5jb2RlZE5hbWUgKyAoXCJcXG4vLyMgc291cmNlVVJMPVwiICsgZW5jb2RlVVJJKGZpbGVuYW1lKSlcbiAgICAgICAgICAgIDogZW5jb2RlZE5hbWUgKyBcIlxcbi8vIyBzb3VyY2VVUkw9PGFub255bW91cz5cIik7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgZm4gPSAoMCwgZXZhbCkoZW5jb2RlZE5hbWUpW25hbWVdO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBmbiA9IGZ1bmN0aW9uIChfKSB7XG4gICAgICAgICAgcmV0dXJuIF8oKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRGYWtlQ2FsbFN0YWNrKFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBzdGFjayxcbiAgICAgIGVudmlyb25tZW50TmFtZSxcbiAgICAgIHVzZUVuY2xvc2luZ0xpbmUsXG4gICAgICBpbm5lckNhbGxcbiAgICApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZyYW1lID0gc3RhY2tbaV0sXG4gICAgICAgICAgZnJhbWVLZXkgPVxuICAgICAgICAgICAgZnJhbWUuam9pbihcIi1cIikgK1xuICAgICAgICAgICAgXCItXCIgK1xuICAgICAgICAgICAgZW52aXJvbm1lbnROYW1lICtcbiAgICAgICAgICAgICh1c2VFbmNsb3NpbmdMaW5lID8gXCItZVwiIDogXCItblwiKSxcbiAgICAgICAgICBmbiA9IGZha2VGdW5jdGlvbkNhY2hlLmdldChmcmFtZUtleSk7XG4gICAgICAgIGlmICh2b2lkIDAgPT09IGZuKSB7XG4gICAgICAgICAgZm4gPSBmcmFtZVswXTtcbiAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBmcmFtZVsxXSxcbiAgICAgICAgICAgIGxpbmUgPSBmcmFtZVsyXSxcbiAgICAgICAgICAgIGNvbCA9IGZyYW1lWzNdLFxuICAgICAgICAgICAgZW5jbG9zaW5nTGluZSA9IGZyYW1lWzRdO1xuICAgICAgICAgIGZyYW1lID0gZnJhbWVbNV07XG4gICAgICAgICAgdmFyIGZpbmRTb3VyY2VNYXBVUkwgPSByZXNwb25zZS5fZGVidWdGaW5kU291cmNlTWFwVVJMO1xuICAgICAgICAgIGZpbmRTb3VyY2VNYXBVUkwgPSBmaW5kU291cmNlTWFwVVJMXG4gICAgICAgICAgICA/IGZpbmRTb3VyY2VNYXBVUkwoZmlsZW5hbWUsIGVudmlyb25tZW50TmFtZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICBmbiA9IGNyZWF0ZUZha2VGdW5jdGlvbihcbiAgICAgICAgICAgIGZuLFxuICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgICAgbGluZSxcbiAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPyBsaW5lIDogZW5jbG9zaW5nTGluZSxcbiAgICAgICAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPyBjb2wgOiBmcmFtZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50TmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgZmFrZUZ1bmN0aW9uQ2FjaGUuc2V0KGZyYW1lS2V5LCBmbik7XG4gICAgICAgIH1cbiAgICAgICAgaW5uZXJDYWxsID0gZm4uYmluZChudWxsLCBpbm5lckNhbGwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlubmVyQ2FsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Um9vdFRhc2socmVzcG9uc2UsIGNoaWxkRW52aXJvbm1lbnROYW1lKSB7XG4gICAgICB2YXIgcm9vdFRhc2sgPSByZXNwb25zZS5fZGVidWdSb290VGFzaztcbiAgICAgIHJldHVybiByb290VGFza1xuICAgICAgICA/IHJlc3BvbnNlLl9yb290RW52aXJvbm1lbnROYW1lICE9PSBjaGlsZEVudmlyb25tZW50TmFtZVxuICAgICAgICAgID8gKChyZXNwb25zZSA9IGNvbnNvbGUuY3JlYXRlVGFzay5iaW5kKFxuICAgICAgICAgICAgICBjb25zb2xlLFxuICAgICAgICAgICAgICAnXCJ1c2UgJyArIGNoaWxkRW52aXJvbm1lbnROYW1lLnRvTG93ZXJDYXNlKCkgKyAnXCInXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIHJvb3RUYXNrLnJ1bihyZXNwb25zZSkpXG4gICAgICAgICAgOiByb290VGFza1xuICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICBpZiAoIXN1cHBvcnRzQ3JlYXRlVGFzayB8fCBudWxsID09IGRlYnVnSW5mby5zdGFjaykgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgY2FjaGVkRW50cnkgPSBkZWJ1Z0luZm8uZGVidWdUYXNrO1xuICAgICAgaWYgKHZvaWQgMCAhPT0gY2FjaGVkRW50cnkpIHJldHVybiBjYWNoZWRFbnRyeTtcbiAgICAgIHZhciB1c2VFbmNsb3NpbmdMaW5lID0gdm9pZCAwID09PSBkZWJ1Z0luZm8ua2V5LFxuICAgICAgICBzdGFjayA9IGRlYnVnSW5mby5zdGFjayxcbiAgICAgICAgZW52ID1cbiAgICAgICAgICBudWxsID09IGRlYnVnSW5mby5lbnYgPyByZXNwb25zZS5fcm9vdEVudmlyb25tZW50TmFtZSA6IGRlYnVnSW5mby5lbnY7XG4gICAgICBjYWNoZWRFbnRyeSA9XG4gICAgICAgIG51bGwgPT0gZGVidWdJbmZvLm93bmVyIHx8IG51bGwgPT0gZGVidWdJbmZvLm93bmVyLmVudlxuICAgICAgICAgID8gcmVzcG9uc2UuX3Jvb3RFbnZpcm9ubWVudE5hbWVcbiAgICAgICAgICA6IGRlYnVnSW5mby5vd25lci5lbnY7XG4gICAgICB2YXIgb3duZXJUYXNrID1cbiAgICAgICAgbnVsbCA9PSBkZWJ1Z0luZm8ub3duZXJcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgZGVidWdJbmZvLm93bmVyKTtcbiAgICAgIGVudiA9XG4gICAgICAgIGVudiAhPT0gY2FjaGVkRW50cnlcbiAgICAgICAgICA/ICdcInVzZSAnICsgZW52LnRvTG93ZXJDYXNlKCkgKyAnXCInXG4gICAgICAgICAgOiB2b2lkIDAgIT09IGRlYnVnSW5mby5rZXlcbiAgICAgICAgICAgID8gXCI8XCIgKyAoZGVidWdJbmZvLm5hbWUgfHwgXCIuLi5cIikgKyBcIj5cIlxuICAgICAgICAgICAgOiB2b2lkIDAgIT09IGRlYnVnSW5mby5uYW1lXG4gICAgICAgICAgICAgID8gZGVidWdJbmZvLm5hbWUgfHwgXCJ1bmtub3duXCJcbiAgICAgICAgICAgICAgOiBcImF3YWl0IFwiICsgKGRlYnVnSW5mby5hd2FpdGVkLm5hbWUgfHwgXCJ1bmtub3duXCIpO1xuICAgICAgZW52ID0gY29uc29sZS5jcmVhdGVUYXNrLmJpbmQoY29uc29sZSwgZW52KTtcbiAgICAgIHVzZUVuY2xvc2luZ0xpbmUgPSBidWlsZEZha2VDYWxsU3RhY2soXG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBzdGFjayxcbiAgICAgICAgY2FjaGVkRW50cnksXG4gICAgICAgIHVzZUVuY2xvc2luZ0xpbmUsXG4gICAgICAgIGVudlxuICAgICAgKTtcbiAgICAgIG51bGwgPT09IG93bmVyVGFza1xuICAgICAgICA/ICgocmVzcG9uc2UgPSBnZXRSb290VGFzayhyZXNwb25zZSwgY2FjaGVkRW50cnkpKSxcbiAgICAgICAgICAocmVzcG9uc2UgPVxuICAgICAgICAgICAgbnVsbCAhPSByZXNwb25zZVxuICAgICAgICAgICAgICA/IHJlc3BvbnNlLnJ1bih1c2VFbmNsb3NpbmdMaW5lKVxuICAgICAgICAgICAgICA6IHVzZUVuY2xvc2luZ0xpbmUoKSkpXG4gICAgICAgIDogKHJlc3BvbnNlID0gb3duZXJUYXNrLnJ1bih1c2VFbmNsb3NpbmdMaW5lKSk7XG4gICAgICByZXR1cm4gKGRlYnVnSW5mby5kZWJ1Z1Rhc2sgPSByZXNwb25zZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZha2VKU1hDYWxsU2l0ZSgpIHtcbiAgICAgIHJldHVybiBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZha2VTdGFjayhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBkZWJ1Z0luZm8uZGVidWdTdGFjaykge1xuICAgICAgICBudWxsICE9IGRlYnVnSW5mby5zdGFjayAmJlxuICAgICAgICAgIChkZWJ1Z0luZm8uZGVidWdTdGFjayA9IGNyZWF0ZUZha2VKU1hDYWxsU3RhY2tJbkRFVihcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgZGVidWdJbmZvLnN0YWNrLFxuICAgICAgICAgICAgbnVsbCA9PSBkZWJ1Z0luZm8uZW52ID8gXCJcIiA6IGRlYnVnSW5mby5lbnZcbiAgICAgICAgICApKTtcbiAgICAgICAgdmFyIG93bmVyID0gZGVidWdJbmZvLm93bmVyO1xuICAgICAgICBudWxsICE9IG93bmVyICYmXG4gICAgICAgICAgKGluaXRpYWxpemVGYWtlU3RhY2socmVzcG9uc2UsIG93bmVyKSxcbiAgICAgICAgICB2b2lkIDAgPT09IG93bmVyLmRlYnVnTG9jYXRpb24gJiZcbiAgICAgICAgICAgIG51bGwgIT0gZGVidWdJbmZvLmRlYnVnU3RhY2sgJiZcbiAgICAgICAgICAgIChvd25lci5kZWJ1Z0xvY2F0aW9uID0gZGVidWdJbmZvLmRlYnVnU3RhY2spKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZURlYnVnSW5mbyhyZXNwb25zZSwgZGVidWdJbmZvKSB7XG4gICAgICB2b2lkIDAgIT09IGRlYnVnSW5mby5zdGFjayAmJiBpbml0aWFsaXplRmFrZVRhc2socmVzcG9uc2UsIGRlYnVnSW5mbyk7XG4gICAgICBudWxsID09IGRlYnVnSW5mby5vd25lciAmJiBudWxsICE9IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RPd25lclxuICAgICAgICA/ICgoZGVidWdJbmZvLm93bmVyID0gcmVzcG9uc2UuX2RlYnVnUm9vdE93bmVyKSxcbiAgICAgICAgICAoZGVidWdJbmZvLnN0YWNrID0gbnVsbCksXG4gICAgICAgICAgKGRlYnVnSW5mby5kZWJ1Z1N0YWNrID0gcmVzcG9uc2UuX2RlYnVnUm9vdFN0YWNrKSxcbiAgICAgICAgICAoZGVidWdJbmZvLmRlYnVnVGFzayA9IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RUYXNrKSlcbiAgICAgICAgOiB2b2lkIDAgIT09IGRlYnVnSW5mby5zdGFjayAmJlxuICAgICAgICAgIGluaXRpYWxpemVGYWtlU3RhY2socmVzcG9uc2UsIGRlYnVnSW5mbyk7XG4gICAgICByZXR1cm4gZGVidWdJbmZvO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RhY2tJbkRFVigpIHtcbiAgICAgIHZhciBvd25lciA9IGN1cnJlbnRPd25lckluREVWO1xuICAgICAgaWYgKG51bGwgPT09IG93bmVyKSByZXR1cm4gXCJcIjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gXCJcIjtcbiAgICAgICAgaWYgKG93bmVyLm93bmVyIHx8IFwic3RyaW5nXCIgIT09IHR5cGVvZiBvd25lci5uYW1lKSB7XG4gICAgICAgICAgZm9yICg7IG93bmVyOyApIHtcbiAgICAgICAgICAgIHZhciBvd25lclN0YWNrID0gb3duZXIuZGVidWdTdGFjaztcbiAgICAgICAgICAgIGlmIChudWxsICE9IG93bmVyU3RhY2spIHtcbiAgICAgICAgICAgICAgaWYgKChvd25lciA9IG93bmVyLm93bmVyKSkge1xuICAgICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX3RlbXBfY29uc3QgPSBpbmZvO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IG93bmVyU3RhY2ssXG4gICAgICAgICAgICAgICAgICBwcmV2UHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgICAgICAgICAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVTdGFja1RyYWNlO1xuICAgICAgICAgICAgICAgIHZhciBzdGFjayA9IGVycm9yLnN0YWNrO1xuICAgICAgICAgICAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldlByZXBhcmVTdGFja1RyYWNlO1xuICAgICAgICAgICAgICAgIHN0YWNrLnN0YXJ0c1dpdGgoXCJFcnJvcjogcmVhY3Qtc3RhY2stdG9wLWZyYW1lXFxuXCIpICYmXG4gICAgICAgICAgICAgICAgICAoc3RhY2sgPSBzdGFjay5zbGljZSgyOSkpO1xuICAgICAgICAgICAgICAgIHZhciBpZHggPSBzdGFjay5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIC0xICE9PSBpZHggJiYgKHN0YWNrID0gc3RhY2suc2xpY2UoaWR4ICsgMSkpO1xuICAgICAgICAgICAgICAgIGlkeCA9IHN0YWNrLmluZGV4T2YoXCJyZWFjdF9zdGFja19ib3R0b21fZnJhbWVcIik7XG4gICAgICAgICAgICAgICAgLTEgIT09IGlkeCAmJiAoaWR4ID0gc3RhY2subGFzdEluZGV4T2YoXCJcXG5cIiwgaWR4KSk7XG4gICAgICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAtMSAhPT0gaWR4ID8gKHN0YWNrID0gc3RhY2suc2xpY2UoMCwgaWR4KSkgOiBcIlwiO1xuICAgICAgICAgICAgICAgIGluZm8gPVxuICAgICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wX2NvbnN0ICsgKFwiXFxuXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSBpbmZvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcF9jb25zdCA9IG93bmVyLm5hbWU7XG4gICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcHJlZml4KVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgKHByZWZpeCA9XG4gICAgICAgICAgICAgICAgKChlcnJvciA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLykpICYmIGVycm9yWzFdKSB8fFxuICAgICAgICAgICAgICAgIFwiXCIpLFxuICAgICAgICAgICAgICAgIChzdWZmaXggPVxuICAgICAgICAgICAgICAgICAgLTEgPCB4LnN0YWNrLmluZGV4T2YoXCJcXG4gICAgYXRcIilcbiAgICAgICAgICAgICAgICAgICAgPyBcIiAoPGFub255bW91cz4pXCJcbiAgICAgICAgICAgICAgICAgICAgOiAtMSA8IHguc3RhY2suaW5kZXhPZihcIkBcIilcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiQHVua25vd246MDowXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgICBcIlxcblwiICsgcHJlZml4ICsgSlNDb21waWxlcl90ZW1wX2NvbnN0ICsgc3VmZml4O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgXCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIiArIHgubWVzc2FnZSArIFwiXFxuXCIgKyB4LnN0YWNrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUNvbnNvbGVFbnRyeShyZXNwb25zZSwganNvbikge1xuICAgICAgaWYgKHJlc3BvbnNlLl9yZXBsYXlDb25zb2xlKSB7XG4gICAgICAgIHZhciBibG9ja2VkQ2h1bmsgPSByZXNwb25zZS5fYmxvY2tlZENvbnNvbGU7XG4gICAgICAgIGlmIChudWxsID09IGJsb2NrZWRDaHVuaylcbiAgICAgICAgICAoYmxvY2tlZENodW5rID0gY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCBqc29uKSksXG4gICAgICAgICAgICBpbml0aWFsaXplTW9kZWxDaHVuayhibG9ja2VkQ2h1bmspLFxuICAgICAgICAgICAgXCJmdWxmaWxsZWRcIiA9PT0gYmxvY2tlZENodW5rLnN0YXR1c1xuICAgICAgICAgICAgICA/IHJlcGxheUNvbnNvbGVXaXRoQ2FsbFN0YWNrSW5ERVYocmVzcG9uc2UsIGJsb2NrZWRDaHVuay52YWx1ZSlcbiAgICAgICAgICAgICAgOiAoYmxvY2tlZENodW5rLnRoZW4oXG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2tJbkRFVihyZXNwb25zZSwgdik7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkge31cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIChyZXNwb25zZS5fYmxvY2tlZENvbnNvbGUgPSBibG9ja2VkQ2h1bmspKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIF9jaHVuazQgPSBjcmVhdGVQZW5kaW5nQ2h1bmsocmVzcG9uc2UpO1xuICAgICAgICAgIF9jaHVuazQudGhlbihcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFja0luREVWKHJlc3BvbnNlLCB2KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7fVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuX2Jsb2NrZWRDb25zb2xlID0gX2NodW5rNDtcbiAgICAgICAgICB2YXIgdW5ibG9jayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLl9ibG9ja2VkQ29uc29sZSA9PT0gX2NodW5rNCAmJlxuICAgICAgICAgICAgICAocmVzcG9uc2UuX2Jsb2NrZWRDb25zb2xlID0gbnVsbCk7XG4gICAgICAgICAgICByZXNvbHZlTW9kZWxDaHVuayhyZXNwb25zZSwgX2NodW5rNCwganNvbik7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBibG9ja2VkQ2h1bmsudGhlbih1bmJsb2NrLCB1bmJsb2NrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplSU9JbmZvKHJlc3BvbnNlLCBpb0luZm8pIHtcbiAgICAgIHZvaWQgMCAhPT0gaW9JbmZvLnN0YWNrICYmXG4gICAgICAgIChpbml0aWFsaXplRmFrZVRhc2socmVzcG9uc2UsIGlvSW5mbyksXG4gICAgICAgIGluaXRpYWxpemVGYWtlU3RhY2socmVzcG9uc2UsIGlvSW5mbykpO1xuICAgICAgaW9JbmZvLnN0YXJ0ICs9IHJlc3BvbnNlLl90aW1lT3JpZ2luO1xuICAgICAgaW9JbmZvLmVuZCArPSByZXNwb25zZS5fdGltZU9yaWdpbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUlPSW5mbyhyZXNwb25zZSwgaWQsIG1vZGVsKSB7XG4gICAgICB2YXIgY2h1bmtzID0gcmVzcG9uc2UuX2NodW5rcyxcbiAgICAgICAgY2h1bmsgPSBjaHVua3MuZ2V0KGlkKTtcbiAgICAgIGNodW5rXG4gICAgICAgID8gKHJlc29sdmVNb2RlbENodW5rKHJlc3BvbnNlLCBjaHVuaywgbW9kZWwpLFxuICAgICAgICAgIFwicmVzb2x2ZWRfbW9kZWxcIiA9PT0gY2h1bmsuc3RhdHVzICYmIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKSlcbiAgICAgICAgOiAoKGNodW5rID0gY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCBtb2RlbCkpLFxuICAgICAgICAgIGNodW5rcy5zZXQoaWQsIGNodW5rKSxcbiAgICAgICAgICBpbml0aWFsaXplTW9kZWxDaHVuayhjaHVuaykpO1xuICAgICAgXCJmdWxmaWxsZWRcIiA9PT0gY2h1bmsuc3RhdHVzXG4gICAgICAgID8gaW5pdGlhbGl6ZUlPSW5mbyhyZXNwb25zZSwgY2h1bmsudmFsdWUpXG4gICAgICAgIDogY2h1bmsudGhlbihcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgIGluaXRpYWxpemVJT0luZm8ocmVzcG9uc2UsIHYpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt9XG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWVyZ2VCdWZmZXIoYnVmZmVyLCBsYXN0Q2h1bmspIHtcbiAgICAgIGZvciAoXG4gICAgICAgIHZhciBsID0gYnVmZmVyLmxlbmd0aCwgYnl0ZUxlbmd0aCA9IGxhc3RDaHVuay5sZW5ndGgsIGkgPSAwO1xuICAgICAgICBpIDwgbDtcbiAgICAgICAgaSsrXG4gICAgICApXG4gICAgICAgIGJ5dGVMZW5ndGggKz0gYnVmZmVyW2ldLmJ5dGVMZW5ndGg7XG4gICAgICBieXRlTGVuZ3RoID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBfaTMgPSAoaSA9IDApOyBfaTMgPCBsOyBfaTMrKykge1xuICAgICAgICB2YXIgY2h1bmsgPSBidWZmZXJbX2kzXTtcbiAgICAgICAgYnl0ZUxlbmd0aC5zZXQoY2h1bmssIGkpO1xuICAgICAgICBpICs9IGNodW5rLmJ5dGVMZW5ndGg7XG4gICAgICB9XG4gICAgICBieXRlTGVuZ3RoLnNldChsYXN0Q2h1bmssIGkpO1xuICAgICAgcmV0dXJuIGJ5dGVMZW5ndGg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVUeXBlZEFycmF5KFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBpZCxcbiAgICAgIGJ1ZmZlcixcbiAgICAgIGxhc3RDaHVuayxcbiAgICAgIGNvbnN0cnVjdG9yLFxuICAgICAgYnl0ZXNQZXJFbGVtZW50XG4gICAgKSB7XG4gICAgICBidWZmZXIgPVxuICAgICAgICAwID09PSBidWZmZXIubGVuZ3RoICYmIDAgPT09IGxhc3RDaHVuay5ieXRlT2Zmc2V0ICUgYnl0ZXNQZXJFbGVtZW50XG4gICAgICAgICAgPyBsYXN0Q2h1bmtcbiAgICAgICAgICA6IG1lcmdlQnVmZmVyKGJ1ZmZlciwgbGFzdENodW5rKTtcbiAgICAgIGNvbnN0cnVjdG9yID0gbmV3IGNvbnN0cnVjdG9yKFxuICAgICAgICBidWZmZXIuYnVmZmVyLFxuICAgICAgICBidWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgYnVmZmVyLmJ5dGVMZW5ndGggLyBieXRlc1BlckVsZW1lbnRcbiAgICAgICk7XG4gICAgICByZXNvbHZlQnVmZmVyKHJlc3BvbnNlLCBpZCwgY29uc3RydWN0b3IpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmbHVzaEluaXRpYWxSZW5kZXJQZXJmb3JtYW5jZSgpIHt9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0Z1bGxCaW5hcnlSb3cocmVzcG9uc2UsIGlkLCB0YWcsIGJ1ZmZlciwgY2h1bmspIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgcmVzb2x2ZUJ1ZmZlcihyZXNwb25zZSwgaWQsIG1lcmdlQnVmZmVyKGJ1ZmZlciwgY2h1bmspLmJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIDc5OlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KHJlc3BvbnNlLCBpZCwgYnVmZmVyLCBjaHVuaywgSW50OEFycmF5LCAxKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgIHJlc29sdmVCdWZmZXIoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgMCA9PT0gYnVmZmVyLmxlbmd0aCA/IGNodW5rIDogbWVyZ2VCdWZmZXIoYnVmZmVyLCBjaHVuaylcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShyZXNwb25zZSwgaWQsIGJ1ZmZlciwgY2h1bmssIFVpbnQ4Q2xhbXBlZEFycmF5LCAxKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkocmVzcG9uc2UsIGlkLCBidWZmZXIsIGNodW5rLCBJbnQxNkFycmF5LCAyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KHJlc3BvbnNlLCBpZCwgYnVmZmVyLCBjaHVuaywgVWludDE2QXJyYXksIDIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShyZXNwb25zZSwgaWQsIGJ1ZmZlciwgY2h1bmssIEludDMyQXJyYXksIDQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkocmVzcG9uc2UsIGlkLCBidWZmZXIsIGNodW5rLCBVaW50MzJBcnJheSwgNCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KHJlc3BvbnNlLCBpZCwgYnVmZmVyLCBjaHVuaywgRmxvYXQzMkFycmF5LCA0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTAzOlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KHJlc3BvbnNlLCBpZCwgYnVmZmVyLCBjaHVuaywgRmxvYXQ2NEFycmF5LCA4KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgcmVzb2x2ZVR5cGVkQXJyYXkocmVzcG9uc2UsIGlkLCBidWZmZXIsIGNodW5rLCBCaWdJbnQ2NEFycmF5LCA4KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgIHJlc29sdmVUeXBlZEFycmF5KHJlc3BvbnNlLCBpZCwgYnVmZmVyLCBjaHVuaywgQmlnVWludDY0QXJyYXksIDgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSA4NjpcbiAgICAgICAgICByZXNvbHZlVHlwZWRBcnJheShyZXNwb25zZSwgaWQsIGJ1ZmZlciwgY2h1bmssIERhdGFWaWV3LCAxKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgc3RyaW5nRGVjb2RlciA9IHJlc3BvbnNlLl9zdHJpbmdEZWNvZGVyLCByb3cgPSBcIlwiLCBpID0gMDtcbiAgICAgICAgaSA8IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGkrK1xuICAgICAgKVxuICAgICAgICByb3cgKz0gc3RyaW5nRGVjb2Rlci5kZWNvZGUoYnVmZmVyW2ldLCBkZWNvZGVyT3B0aW9ucyk7XG4gICAgICByb3cgKz0gc3RyaW5nRGVjb2Rlci5kZWNvZGUoY2h1bmspO1xuICAgICAgcHJvY2Vzc0Z1bGxTdHJpbmdSb3cocmVzcG9uc2UsIGlkLCB0YWcsIHJvdyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NGdWxsU3RyaW5nUm93KHJlc3BvbnNlLCBpZCwgdGFnLCByb3cpIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgNzM6XG4gICAgICAgICAgcmVzb2x2ZU1vZHVsZShyZXNwb25zZSwgaWQsIHJvdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgaWQgPSByb3dbMF07XG4gICAgICAgICAgcm93ID0gcm93LnNsaWNlKDEpO1xuICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShyb3csIHJlc3BvbnNlLl9mcm9tSlNPTik7XG4gICAgICAgICAgcm93ID0gUmVhY3RET01TaGFyZWRJbnRlcm5hbHMuZDtcbiAgICAgICAgICBzd2l0Y2ggKGlkKSB7XG4gICAgICAgICAgICBjYXNlIFwiRFwiOlxuICAgICAgICAgICAgICByb3cuRChyZXNwb25zZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNcIjpcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgPyByb3cuQyhyZXNwb25zZSlcbiAgICAgICAgICAgICAgICA6IHJvdy5DKHJlc3BvbnNlWzBdLCByZXNwb25zZVsxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICAgICAgaWQgPSByZXNwb25zZVswXTtcbiAgICAgICAgICAgICAgdGFnID0gcmVzcG9uc2VbMV07XG4gICAgICAgICAgICAgIDMgPT09IHJlc3BvbnNlLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gcm93LkwoaWQsIHRhZywgcmVzcG9uc2VbMl0pXG4gICAgICAgICAgICAgICAgOiByb3cuTChpZCwgdGFnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHJvdy5tKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIDogcm93Lm0ocmVzcG9uc2VbMF0sIHJlc3BvbnNlWzFdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiWFwiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHJvdy5YKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIDogcm93LlgocmVzcG9uc2VbMF0sIHJlc3BvbnNlWzFdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHJvdy5TKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIDogcm93LlMoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlWzBdLFxuICAgICAgICAgICAgICAgICAgICAwID09PSByZXNwb25zZVsxXSA/IHZvaWQgMCA6IHJlc3BvbnNlWzFdLFxuICAgICAgICAgICAgICAgICAgICAzID09PSByZXNwb25zZS5sZW5ndGggPyByZXNwb25zZVsyXSA6IHZvaWQgMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICA/IHJvdy5NKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIDogcm93Lk0ocmVzcG9uc2VbMF0sIHJlc3BvbnNlWzFdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjk6XG4gICAgICAgICAgdGFnID0gcmVzcG9uc2UuX2NodW5rcztcbiAgICAgICAgICB2YXIgY2h1bmsgPSB0YWcuZ2V0KGlkKTtcbiAgICAgICAgICByb3cgPSBKU09OLnBhcnNlKHJvdyk7XG4gICAgICAgICAgdmFyIGVycm9yID0gcmVzb2x2ZUVycm9yRGV2KHJlc3BvbnNlLCByb3cpO1xuICAgICAgICAgIGVycm9yLmRpZ2VzdCA9IHJvdy5kaWdlc3Q7XG4gICAgICAgICAgY2h1bmtcbiAgICAgICAgICAgID8gdHJpZ2dlckVycm9yT25DaHVuayhyZXNwb25zZSwgY2h1bmssIGVycm9yKVxuICAgICAgICAgICAgOiB0YWcuc2V0KGlkLCBuZXcgUmVhY3RQcm9taXNlKFwicmVqZWN0ZWRcIiwgbnVsbCwgZXJyb3IpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICB0YWcgPSByZXNwb25zZS5fY2h1bmtzO1xuICAgICAgICAgIChjaHVuayA9IHRhZy5nZXQoaWQpKSAmJiBcInBlbmRpbmdcIiAhPT0gY2h1bmsuc3RhdHVzXG4gICAgICAgICAgICA/IGNodW5rLnJlYXNvbi5lbnF1ZXVlVmFsdWUocm93KVxuICAgICAgICAgICAgOiAoY2h1bmsgJiYgcmVsZWFzZVBlbmRpbmdDaHVuayhyZXNwb25zZSwgY2h1bmspLFxuICAgICAgICAgICAgICB0YWcuc2V0KGlkLCBuZXcgUmVhY3RQcm9taXNlKFwiZnVsZmlsbGVkXCIsIHJvdywgbnVsbCkpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICByZXNwb25zZS5fdGltZU9yaWdpbiA9ICtyb3cgLSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgIGlkID0gZ2V0Q2h1bmsocmVzcG9uc2UsIGlkKTtcbiAgICAgICAgICBcImZ1bGZpbGxlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwicmVqZWN0ZWRcIiAhPT0gaWQuc3RhdHVzICYmXG4gICAgICAgICAgICBcImhhbHRlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwiYmxvY2tlZFwiICE9PSBpZC5zdGF0dXMgJiZcbiAgICAgICAgICAgIFwicmVzb2x2ZWRfbW9kdWxlXCIgIT09IGlkLnN0YXR1cyAmJlxuICAgICAgICAgICAgKCh0YWcgPSBpZC5fZGVidWdDaHVuayksXG4gICAgICAgICAgICAoY2h1bmsgPSBjcmVhdGVSZXNvbHZlZE1vZGVsQ2h1bmsocmVzcG9uc2UsIHJvdykpLFxuICAgICAgICAgICAgKGNodW5rLl9kZWJ1Z0NodW5rID0gdGFnKSxcbiAgICAgICAgICAgIChpZC5fZGVidWdDaHVuayA9IGNodW5rKSxcbiAgICAgICAgICAgIGluaXRpYWxpemVEZWJ1Z0NodW5rKHJlc3BvbnNlLCBpZCksXG4gICAgICAgICAgICBcImJsb2NrZWRcIiA9PT0gY2h1bmsuc3RhdHVzICYmXG4gICAgICAgICAgICAgIHZvaWQgMCA9PT0gcmVzcG9uc2UuX2RlYnVnQ2hhbm5lbCAmJlxuICAgICAgICAgICAgICAnXCInID09PSByb3dbMF0gJiZcbiAgICAgICAgICAgICAgXCIkXCIgPT09IHJvd1sxXSAmJlxuICAgICAgICAgICAgICAoKHJvdyA9IHJvdy5zbGljZSgyLCByb3cubGVuZ3RoIC0gMSkuc3BsaXQoXCI6XCIpKSxcbiAgICAgICAgICAgICAgKHJvdyA9IHBhcnNlSW50KHJvd1swXSwgMTYpKSxcbiAgICAgICAgICAgICAgXCJwZW5kaW5nXCIgPT09IGdldENodW5rKHJlc3BvbnNlLCByb3cpLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgIChpZC5fZGVidWdDaHVuayA9IG51bGwpKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzQ6XG4gICAgICAgICAgcmVzb2x2ZUlPSW5mbyhyZXNwb25zZSwgaWQsIHJvdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgcmVzb2x2ZUNvbnNvbGVFbnRyeShyZXNwb25zZSwgcm93KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICBzdGFydFJlYWRhYmxlU3RyZWFtKHJlc3BvbnNlLCBpZCwgdm9pZCAwKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbShyZXNwb25zZSwgaWQsIFwiYnl0ZXNcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgc3RhcnRBc3luY0l0ZXJhYmxlKHJlc3BvbnNlLCBpZCwgITEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICBzdGFydEFzeW5jSXRlcmFibGUocmVzcG9uc2UsIGlkLCAhMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgKHJlc3BvbnNlID0gcmVzcG9uc2UuX2NodW5rcy5nZXQoaWQpKSAmJlxuICAgICAgICAgICAgXCJmdWxmaWxsZWRcIiA9PT0gcmVzcG9uc2Uuc3RhdHVzICYmXG4gICAgICAgICAgICByZXNwb25zZS5yZWFzb24uY2xvc2UoXCJcIiA9PT0gcm93ID8gJ1wiJHVuZGVmaW5lZFwiJyA6IHJvdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKFwiXCIgPT09IHJvdykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoKHJvdyA9IHJlc3BvbnNlLl9jaHVua3MpLFxuICAgICAgICAgICAgICAodGFnID0gcm93LmdldChpZCkpIHx8XG4gICAgICAgICAgICAgICAgcm93LnNldChpZCwgKHRhZyA9IGNyZWF0ZVBlbmRpbmdDaHVuayhyZXNwb25zZSkpKSxcbiAgICAgICAgICAgICAgXCJwZW5kaW5nXCIgPT09IHRhZy5zdGF0dXMgfHwgXCJibG9ja2VkXCIgPT09IHRhZy5zdGF0dXMpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJlbGVhc2VQZW5kaW5nQ2h1bmsocmVzcG9uc2UsIHRhZyksXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlID0gdGFnKSxcbiAgICAgICAgICAgICAgICAocmVzcG9uc2Uuc3RhdHVzID0gXCJoYWx0ZWRcIiksXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlLnZhbHVlID0gbnVsbCksXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlYXNvbiA9IG51bGwpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgKHRhZyA9IHJlc3BvbnNlLl9jaHVua3MpLFxuICAgICAgICAgICAgICAoY2h1bmsgPSB0YWcuZ2V0KGlkKSlcbiAgICAgICAgICAgICAgICA/IHJlc29sdmVNb2RlbENodW5rKHJlc3BvbnNlLCBjaHVuaywgcm93KVxuICAgICAgICAgICAgICAgIDogdGFnLnNldChpZCwgY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCByb3cpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0JpbmFyeUNodW5rKHdlYWtSZXNwb25zZSwgc3RyZWFtU3RhdGUsIGNodW5rKSB7XG4gICAgICBpZiAodm9pZCAwICE9PSB3ZWFrUmVzcG9uc2Uud2Vhay5kZXJlZigpKSB7XG4gICAgICAgIHZhciByZXNwb25zZSA9IHVud3JhcFdlYWtSZXNwb25zZSh3ZWFrUmVzcG9uc2UpLFxuICAgICAgICAgIGkgPSAwLFxuICAgICAgICAgIHJvd1N0YXRlID0gc3RyZWFtU3RhdGUuX3Jvd1N0YXRlO1xuICAgICAgICB3ZWFrUmVzcG9uc2UgPSBzdHJlYW1TdGF0ZS5fcm93SUQ7XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdmFyIHJvd1RhZyA9IHN0cmVhbVN0YXRlLl9yb3dUYWcsXG4gICAgICAgICAgICByb3dMZW5ndGggPSBzdHJlYW1TdGF0ZS5fcm93TGVuZ3RoLFxuICAgICAgICAgICAgYnVmZmVyID0gc3RyZWFtU3RhdGUuX2J1ZmZlcixcbiAgICAgICAgICAgIGNodW5rTGVuZ3RoID0gY2h1bmsubGVuZ3RoO1xuICAgICAgICAgIGkgPCBjaHVua0xlbmd0aDtcblxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgbGFzdElkeCA9IC0xO1xuICAgICAgICAgIHN3aXRjaCAocm93U3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgbGFzdElkeCA9IGNodW5rW2krK107XG4gICAgICAgICAgICAgIDU4ID09PSBsYXN0SWR4XG4gICAgICAgICAgICAgICAgPyAocm93U3RhdGUgPSAxKVxuICAgICAgICAgICAgICAgIDogKHdlYWtSZXNwb25zZSA9XG4gICAgICAgICAgICAgICAgICAgICh3ZWFrUmVzcG9uc2UgPDwgNCkgfFxuICAgICAgICAgICAgICAgICAgICAoOTYgPCBsYXN0SWR4ID8gbGFzdElkeCAtIDg3IDogbGFzdElkeCAtIDQ4KSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICByb3dTdGF0ZSA9IGNodW5rW2ldO1xuICAgICAgICAgICAgICA4NCA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgNjUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDc5ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAxMTEgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgIDg1ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA4MyA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgMTE1ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA3NiA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgMTA4ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA3MSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgMTAzID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA3NyA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgMTA5ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICA4NiA9PT0gcm93U3RhdGVcbiAgICAgICAgICAgICAgICA/ICgocm93VGFnID0gcm93U3RhdGUpLCAocm93U3RhdGUgPSAyKSwgaSsrKVxuICAgICAgICAgICAgICAgIDogKDY0IDwgcm93U3RhdGUgJiYgOTEgPiByb3dTdGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgMzUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICAgIDExNCA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgMTIwID09PSByb3dTdGF0ZVxuICAgICAgICAgICAgICAgICAgPyAoKHJvd1RhZyA9IHJvd1N0YXRlKSwgKHJvd1N0YXRlID0gMyksIGkrKylcbiAgICAgICAgICAgICAgICAgIDogKChyb3dUYWcgPSAwKSwgKHJvd1N0YXRlID0gMykpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgbGFzdElkeCA9IGNodW5rW2krK107XG4gICAgICAgICAgICAgIDQ0ID09PSBsYXN0SWR4XG4gICAgICAgICAgICAgICAgPyAocm93U3RhdGUgPSA0KVxuICAgICAgICAgICAgICAgIDogKHJvd0xlbmd0aCA9XG4gICAgICAgICAgICAgICAgICAgIChyb3dMZW5ndGggPDwgNCkgfFxuICAgICAgICAgICAgICAgICAgICAoOTYgPCBsYXN0SWR4ID8gbGFzdElkeCAtIDg3IDogbGFzdElkeCAtIDQ4KSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmsuaW5kZXhPZigxMCwgaSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAobGFzdElkeCA9IGkgKyByb3dMZW5ndGgpLFxuICAgICAgICAgICAgICAgIGxhc3RJZHggPiBjaHVuay5sZW5ndGggJiYgKGxhc3RJZHggPSAtMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvZmZzZXQgPSBjaHVuay5ieXRlT2Zmc2V0ICsgaTtcbiAgICAgICAgICBpZiAoLTEgPCBsYXN0SWR4KVxuICAgICAgICAgICAgKHJvd0xlbmd0aCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmJ1ZmZlciwgb2Zmc2V0LCBsYXN0SWR4IC0gaSkpLFxuICAgICAgICAgICAgICBwcm9jZXNzRnVsbEJpbmFyeVJvdyhcbiAgICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgICAgICB3ZWFrUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgcm93VGFnLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgICAgICByb3dMZW5ndGhcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKGkgPSBsYXN0SWR4KSxcbiAgICAgICAgICAgICAgMyA9PT0gcm93U3RhdGUgJiYgaSsrLFxuICAgICAgICAgICAgICAocm93TGVuZ3RoID0gd2Vha1Jlc3BvbnNlID0gcm93VGFnID0gcm93U3RhdGUgPSAwKSxcbiAgICAgICAgICAgICAgKGJ1ZmZlci5sZW5ndGggPSAwKTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNodW5rID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuYnVmZmVyLCBvZmZzZXQsIGNodW5rLmJ5dGVMZW5ndGggLSBpKTtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgICAgICAgIHJvd0xlbmd0aCAtPSBjaHVuay5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0cmVhbVN0YXRlLl9yb3dTdGF0ZSA9IHJvd1N0YXRlO1xuICAgICAgICBzdHJlYW1TdGF0ZS5fcm93SUQgPSB3ZWFrUmVzcG9uc2U7XG4gICAgICAgIHN0cmVhbVN0YXRlLl9yb3dUYWcgPSByb3dUYWc7XG4gICAgICAgIHN0cmVhbVN0YXRlLl9yb3dMZW5ndGggPSByb3dMZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUZyb21KU09OQ2FsbGJhY2socmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoXCJfX3Byb3RvX19cIiAhPT0ga2V5KSB7XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU1vZGVsU3RyaW5nKHJlc3BvbnNlLCB0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmIG51bGwgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSlcbiAgICAgICAgICAgICAgYjoge1xuICAgICAgICAgICAgICAgIHZhciBvd25lciA9IHZhbHVlWzRdO1xuICAgICAgICAgICAgICAgIGtleSA9IHZhbHVlWzVdO1xuICAgICAgICAgICAgICAgIHZhciB2YWxpZGF0ZWQgPSB2YWx1ZVs2XTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgICAgICAgICAgICAgICB0eXBlOiB2YWx1ZVsxXSxcbiAgICAgICAgICAgICAgICAgIGtleTogdmFsdWVbMl0sXG4gICAgICAgICAgICAgICAgICBwcm9wczogdmFsdWVbM10sXG4gICAgICAgICAgICAgICAgICBfb3duZXI6IHZvaWQgMCA9PT0gb3duZXIgPyBudWxsIDogb3duZXJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgXCJyZWZcIiwge1xuICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgICBnZXQ6IG51bGxSZWZHZXR0ZXJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YWx1ZS5fc3RvcmUgPSB7fTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUuX3N0b3JlLCBcInZhbGlkYXRlZFwiLCB7XG4gICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlLCBcIl9kZWJ1Z0luZm9cIiwge1xuICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFwiX2RlYnVnU3RhY2tcIiwge1xuICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCA9PT0ga2V5ID8gbnVsbCA6IGtleVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgXCJfZGVidWdUYXNrXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGluaXRpYWxpemluZ0hhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZCA9IGluaXRpYWxpemluZ0hhbmRsZXI7XG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXppbmdIYW5kbGVyID0gdmFsaWRhdGVkLnBhcmVudDtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWQuZXJyb3JlZCkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBuZXcgUmVhY3RQcm9taXNlKFwicmVqZWN0ZWRcIiwgbnVsbCwgdmFsaWRhdGVkLnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVFbGVtZW50KHJlc3BvbnNlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodmFsdWUudHlwZSkgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICBvd25lcjogdmFsdWUuX293bmVyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZC5kZWJ1Z1N0YWNrID0gdmFsdWUuX2RlYnVnU3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQ3JlYXRlVGFzayAmJlxuICAgICAgICAgICAgICAgICAgICAgICh2YWxpZGF0ZWQuZGVidWdUYXNrID0gdmFsdWUuX2RlYnVnVGFzayk7XG4gICAgICAgICAgICAgICAgICAgIGtleS5fZGVidWdJbmZvID0gW3ZhbGlkYXRlZF07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRlTGF6eUNodW5rV3JhcHBlcihrZXkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKDAgPCB2YWxpZGF0ZWQuZGVwcykge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBuZXcgUmVhY3RQcm9taXNlKFwiYmxvY2tlZFwiLCBudWxsLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZC5jaHVuayA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbml0aWFsaXplRWxlbWVudC5iaW5kKG51bGwsIHJlc3BvbnNlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGtleS50aGVuKHZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRlTGF6eUNodW5rV3JhcHBlcihrZXkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbml0aWFsaXplRWxlbWVudChyZXNwb25zZSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xvc2Uod2Vha1Jlc3BvbnNlKSB7XG4gICAgICByZXBvcnRHbG9iYWxFcnJvcih3ZWFrUmVzcG9uc2UsIEVycm9yKFwiQ29ubmVjdGlvbiBjbG9zZWQuXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbm9TZXJ2ZXJDYWxsJDEoKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJTZXJ2ZXIgRnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWwgcmVuZGVyLiBUaGlzIHdvdWxkIGNyZWF0ZSBhIGZldGNoIHdhdGVyZmFsbC4gVHJ5IHRvIHVzZSBhIFNlcnZlciBDb21wb25lbnQgdG8gcGFzcyBkYXRhIHRvIENsaWVudCBDb21wb25lbnRzIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlRnJvbU9wdGlvbnMob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZUluc3RhbmNlKFxuICAgICAgICBvcHRpb25zLnNlcnZlckNvbnN1bWVyTWFuaWZlc3QubW9kdWxlTWFwLFxuICAgICAgICBvcHRpb25zLnNlcnZlckNvbnN1bWVyTWFuaWZlc3Quc2VydmVyTW9kdWxlTWFwLFxuICAgICAgICBvcHRpb25zLnNlcnZlckNvbnN1bWVyTWFuaWZlc3QubW9kdWxlTG9hZGluZyxcbiAgICAgICAgbm9TZXJ2ZXJDYWxsJDEsXG4gICAgICAgIG9wdGlvbnMuZW5jb2RlRm9ybUFjdGlvbixcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMudGVtcG9yYXJ5UmVmZXJlbmNlc1xuICAgICAgICAgID8gb3B0aW9ucy50ZW1wb3JhcnlSZWZlcmVuY2VzXG4gICAgICAgICAgOiB2b2lkIDAsXG4gICAgICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5maW5kU291cmNlTWFwVVJMID8gb3B0aW9ucy5maW5kU291cmNlTWFwVVJMIDogdm9pZCAwLFxuICAgICAgICBvcHRpb25zID8gITAgPT09IG9wdGlvbnMucmVwbGF5Q29uc29sZUxvZ3MgOiAhMSxcbiAgICAgICAgb3B0aW9ucyAmJiBvcHRpb25zLmVudmlyb25tZW50TmFtZSA/IG9wdGlvbnMuZW52aXJvbm1lbnROYW1lIDogdm9pZCAwLFxuICAgICAgICB2b2lkIDBcbiAgICAgICkuX3dlYWtSZXNwb25zZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRSZWFkaW5nRnJvbVN0cmVhbShyZXNwb25zZSwgc3RyZWFtKSB7XG4gICAgICBmdW5jdGlvbiBwcm9ncmVzcyhfcmVmKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IF9yZWYudmFsdWU7XG4gICAgICAgIGlmIChfcmVmLmRvbmUpIGNsb3NlKHJlc3BvbnNlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBwcm9jZXNzQmluYXJ5Q2h1bmsocmVzcG9uc2UsIHN0cmVhbVN0YXRlLCB2YWx1ZSksXG4gICAgICAgICAgICByZWFkZXIucmVhZCgpLnRoZW4ocHJvZ3Jlc3MpLmNhdGNoKGVycm9yKVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBlcnJvcihlKSB7XG4gICAgICAgIHJlcG9ydEdsb2JhbEVycm9yKHJlc3BvbnNlLCBlKTtcbiAgICAgIH1cbiAgICAgIHZhciBzdHJlYW1TdGF0ZSA9IGNyZWF0ZVN0cmVhbVN0YXRlKCksXG4gICAgICAgIHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkKCkudGhlbihwcm9ncmVzcykuY2F0Y2goZXJyb3IpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBub1NlcnZlckNhbGwoKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJTZXJ2ZXIgRnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWwgcmVuZGVyLiBUaGlzIHdvdWxkIGNyZWF0ZSBhIGZldGNoIHdhdGVyZmFsbC4gVHJ5IHRvIHVzZSBhIFNlcnZlciBDb21wb25lbnQgdG8gcGFzcyBkYXRhIHRvIENsaWVudCBDb21wb25lbnRzIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHZhciB1dGlsID0gcmVxdWlyZShcInV0aWxcIiksXG4gICAgICBSZWFjdERPTSA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIiksXG4gICAgICBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKSxcbiAgICAgIGRlY29kZXJPcHRpb25zID0geyBzdHJlYW06ICEwIH0sXG4gICAgICBiaW5kJDEgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgIGNodW5rQ2FjaGUgPSBuZXcgTWFwKCksXG4gICAgICBSZWFjdERPTVNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0RE9NLl9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgICAgIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxcbiAgICAgIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksXG4gICAgICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICAgICAgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxcbiAgICAgIFJFQUNUX0NPTlNVTUVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIiksXG4gICAgICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgICAgIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLFxuICAgICAgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksXG4gICAgICBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxcbiAgICAgIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICAgICAgUkVBQ1RfQUNUSVZJVFlfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5hY3Rpdml0eVwiKSxcbiAgICAgIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcixcbiAgICAgIEFTWU5DX0lURVJBVE9SID0gU3ltYm9sLmFzeW5jSXRlcmF0b3IsXG4gICAgICBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXksXG4gICAgICBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcbiAgICAgIGpzeFByb3BzUGFyZW50cyA9IG5ldyBXZWFrTWFwKCksXG4gICAgICBqc3hDaGlsZHJlblBhcmVudHMgPSBuZXcgV2Vha01hcCgpLFxuICAgICAgQ0xJRU5UX1JFRkVSRU5DRV9UQUcgPSBTeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxcbiAgICAgIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGUsXG4gICAgICBrbm93blNlcnZlclJlZmVyZW5jZXMgPSBuZXcgV2Vha01hcCgpLFxuICAgICAgYm91bmRDYWNoZSA9IG5ldyBXZWFrTWFwKCksXG4gICAgICBmYWtlU2VydmVyRnVuY3Rpb25JZHggPSAwLFxuICAgICAgRnVuY3Rpb25CaW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsXG4gICAgICBBcnJheVNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLFxuICAgICAgdjhGcmFtZVJlZ0V4cCA9XG4gICAgICAgIC9eIHszfSBhdCAoPzooLispIFxcKCguKyk6KFxcZCspOihcXGQrKVxcKXwoPzphc3luYyApPyguKyk6KFxcZCspOihcXGQrKSkkLyxcbiAgICAgIGpzY1NwaWRlck1vbmtleUZyYW1lUmVnRXhwID0gLyg/OiguKilAKT8oLiopOihcXGQrKTooXFxkKykvLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgcHJlZml4LFxuICAgICAgc3VmZml4O1xuICAgIG5ldyAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgV2Vha01hcCA/IFdlYWtNYXAgOiBNYXApKCk7XG4gICAgdmFyIFJlYWN0U2hhcmVkSW50ZXJhbHNTZXJ2ZXIgPVxuICAgICAgICBSZWFjdC5fX1NFUlZFUl9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsXG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSB8fFxuICAgICAgICBSZWFjdFNoYXJlZEludGVyYWxzU2VydmVyO1xuICAgIFJlYWN0UHJvbWlzZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFByb21pc2UucHJvdG90eXBlKTtcbiAgICBSZWFjdFByb21pc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwicmVzb2x2ZWRfbW9kZWxcIjpcbiAgICAgICAgICBpbml0aWFsaXplTW9kZWxDaHVuayh0aGlzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJlc29sdmVkX21vZHVsZVwiOlxuICAgICAgICAgIGluaXRpYWxpemVNb2R1bGVDaHVuayh0aGlzKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXNvbHZlQ2FsbGJhY2sgPSByZXNvbHZlLFxuICAgICAgICByZWplY3RDYWxsYmFjayA9IHJlamVjdCxcbiAgICAgICAgd3JhcHBlclByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzLCByZWopIHtcbiAgICAgICAgICByZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB3cmFwcGVyUHJvbWlzZS5fZGVidWdJbmZvID0gX3RoaXMuX2RlYnVnSW5mbztcbiAgICAgICAgICAgIHJlcyh2YWx1ZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZWplY3QgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgICB3cmFwcGVyUHJvbWlzZS5fZGVidWdJbmZvID0gX3RoaXMuX2RlYnVnSW5mbztcbiAgICAgICAgICAgIHJlaihyZWFzb24pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgd3JhcHBlclByb21pc2UudGhlbihyZXNvbHZlQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKTtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlc29sdmUgJiYgcmVzb2x2ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgY2FzZSBcImJsb2NrZWRcIjpcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZXNvbHZlICYmXG4gICAgICAgICAgICAobnVsbCA9PT0gdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZSA9IFtdKSxcbiAgICAgICAgICAgIHRoaXMudmFsdWUucHVzaChyZXNvbHZlKSk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVqZWN0ICYmXG4gICAgICAgICAgICAobnVsbCA9PT0gdGhpcy5yZWFzb24gJiYgKHRoaXMucmVhc29uID0gW10pLFxuICAgICAgICAgICAgdGhpcy5yZWFzb24ucHVzaChyZWplY3QpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImhhbHRlZFwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlamVjdCAmJiByZWplY3QodGhpcy5yZWFzb24pO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGRlYnVnQ2hhbm5lbFJlZ2lzdHJ5ID1cbiAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnlcbiAgICAgICAgICA/IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShjbGVhbnVwRGVidWdDaGFubmVsKVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGluaXRpYWxpemluZ0hhbmRsZXIgPSBudWxsLFxuICAgICAgbWlnaHRIYXZlU3RhdGljQ29uc3RydWN0b3IgPSAvXFxiY2xhc3NcXGIuKlxcYnN0YXRpY1xcYi8sXG4gICAgICBzdXBwb3J0c0NyZWF0ZVRhc2sgPSAhIWNvbnNvbGUuY3JlYXRlVGFzayxcbiAgICAgIGZha2VGdW5jdGlvbkNhY2hlID0gbmV3IE1hcCgpLFxuICAgICAgZmFrZUZ1bmN0aW9uSWR4ID0gMCxcbiAgICAgIGNyZWF0ZUZha2VKU1hDYWxsU3RhY2sgPSB7XG4gICAgICAgIHJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZTogZnVuY3Rpb24gKHJlc3BvbnNlLCBzdGFjaywgZW52aXJvbm1lbnROYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkRmFrZUNhbGxTdGFjayhcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgICBlbnZpcm9ubWVudE5hbWUsXG4gICAgICAgICAgICAhMSxcbiAgICAgICAgICAgIGZha2VKU1hDYWxsU2l0ZVxuICAgICAgICAgICkoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNyZWF0ZUZha2VKU1hDYWxsU3RhY2tJbkRFViA9XG4gICAgICAgIGNyZWF0ZUZha2VKU1hDYWxsU3RhY2sucmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lLmJpbmQoXG4gICAgICAgICAgY3JlYXRlRmFrZUpTWENhbGxTdGFja1xuICAgICAgICApLFxuICAgICAgY3VycmVudE93bmVySW5ERVYgPSBudWxsLFxuICAgICAgcmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2sgPSB7XG4gICAgICAgIHJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZTogZnVuY3Rpb24gKHJlc3BvbnNlLCBwYXlsb2FkKSB7XG4gICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBwYXlsb2FkWzBdLFxuICAgICAgICAgICAgc3RhY2tUcmFjZSA9IHBheWxvYWRbMV0sXG4gICAgICAgICAgICBvd25lciA9IHBheWxvYWRbMl0sXG4gICAgICAgICAgICBlbnYgPSBwYXlsb2FkWzNdO1xuICAgICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLnNsaWNlKDQpO1xuICAgICAgICAgIHZhciBwcmV2U3RhY2sgPSBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2s7XG4gICAgICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuZ2V0Q3VycmVudFN0YWNrID0gZ2V0Q3VycmVudFN0YWNrSW5ERVY7XG4gICAgICAgICAgY3VycmVudE93bmVySW5ERVYgPSBudWxsID09PSBvd25lciA/IHJlc3BvbnNlLl9kZWJ1Z1Jvb3RPd25lciA6IG93bmVyO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgICBzd2l0Y2ggKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZGlyXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImRpcnhtbFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJncm91cEVuZFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGJpbmQkMS5hcHBseShcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZVttZXRob2ROYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgW2NvbnNvbGVdLmNvbmNhdChwYXlsb2FkKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFzc2VydFwiOlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgbmV3QXJncyA9IHBheWxvYWQuc2xpY2UoMCk7XG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBuZXdBcmdzW29mZnNldF1cbiAgICAgICAgICAgICAgICA/IG5ld0FyZ3Muc3BsaWNlKFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIFwiXFx1MDAxYlswbVxcdTAwMWJbN20lYyVzXFx1MDAxYlswbSVjIFwiICsgbmV3QXJnc1tvZmZzZXRdLFxuICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQ6ICNlNmU2ZTY7YmFja2dyb3VuZDogbGlnaHQtZGFyayhyZ2JhKDAsMCwwLDAuMSksIHJnYmEoMjU1LDI1NSwyNTUsMC4yNSkpO2NvbG9yOiAjMDAwMDAwO2NvbG9yOiBsaWdodC1kYXJrKCMwMDAwMDAsICNmZmZmZmYpO2JvcmRlci1yYWRpdXM6IDJweFwiLFxuICAgICAgICAgICAgICAgICAgICBcIiBcIiArIGVudiArIFwiIFwiLFxuICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBuZXdBcmdzLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICBcIlxcdTAwMWJbMG1cXHUwMDFiWzdtJWMlc1xcdTAwMWJbMG0lY1wiLFxuICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQ6ICNlNmU2ZTY7YmFja2dyb3VuZDogbGlnaHQtZGFyayhyZ2JhKDAsMCwwLDAuMSksIHJnYmEoMjU1LDI1NSwyNTUsMC4yNSkpO2NvbG9yOiAjMDAwMDAwO2NvbG9yOiBsaWdodC1kYXJrKCMwMDAwMDAsICNmZmZmZmYpO2JvcmRlci1yYWRpdXM6IDJweFwiLFxuICAgICAgICAgICAgICAgICAgICBcIiBcIiArIGVudiArIFwiIFwiLFxuICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBuZXdBcmdzLnVuc2hpZnQoY29uc29sZSk7XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGJpbmQkMS5hcHBseShcbiAgICAgICAgICAgICAgICBjb25zb2xlW21ldGhvZE5hbWVdLFxuICAgICAgICAgICAgICAgIG5ld0FyZ3NcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWxsU3RhY2sgPSBidWlsZEZha2VDYWxsU3RhY2soXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICBzdGFja1RyYWNlLFxuICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgICExLFxuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobnVsbCAhPSBvd25lcikge1xuICAgICAgICAgICAgICB2YXIgdGFzayA9IGluaXRpYWxpemVGYWtlVGFzayhyZXNwb25zZSwgb3duZXIpO1xuICAgICAgICAgICAgICBpbml0aWFsaXplRmFrZVN0YWNrKHJlc3BvbnNlLCBvd25lcik7XG4gICAgICAgICAgICAgIGlmIChudWxsICE9PSB0YXNrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5ydW4oY2FsbFN0YWNrKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByb290VGFzayA9IGdldFJvb3RUYXNrKHJlc3BvbnNlLCBlbnYpO1xuICAgICAgICAgICAgbnVsbCAhPSByb290VGFzayA/IHJvb3RUYXNrLnJ1bihjYWxsU3RhY2spIDogY2FsbFN0YWNrKCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIChjdXJyZW50T3duZXJJbkRFViA9IG51bGwpLFxuICAgICAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuZ2V0Q3VycmVudFN0YWNrID0gcHJldlN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXBsYXlDb25zb2xlV2l0aENhbGxTdGFja0luREVWID1cbiAgICAgICAgcmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2sucmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lLmJpbmQoXG4gICAgICAgICAgcmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2tcbiAgICAgICAgKTtcbiAgICBleHBvcnRzLmNyZWF0ZUZyb21GZXRjaCA9IGZ1bmN0aW9uIChwcm9taXNlRm9yUmVzcG9uc2UsIG9wdGlvbnMpIHtcbiAgICAgIHZhciByZXNwb25zZSA9IGNyZWF0ZVJlc3BvbnNlRnJvbU9wdGlvbnMob3B0aW9ucyk7XG4gICAgICBwcm9taXNlRm9yUmVzcG9uc2UudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICBzdGFydFJlYWRpbmdGcm9tU3RyZWFtKHJlc3BvbnNlLCByLmJvZHkpO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJlcG9ydEdsb2JhbEVycm9yKHJlc3BvbnNlLCBlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBnZXRSb290KHJlc3BvbnNlKTtcbiAgICB9O1xuICAgIGV4cG9ydHMuY3JlYXRlRnJvbU5vZGVTdHJlYW0gPSBmdW5jdGlvbiAoXG4gICAgICBzdHJlYW0sXG4gICAgICBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0LFxuICAgICAgb3B0aW9uc1xuICAgICkge1xuICAgICAgdmFyIHJlc3BvbnNlJGpzY29tcCQwID0gbmV3IFJlc3BvbnNlSW5zdGFuY2UoXG4gICAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdC5tb2R1bGVNYXAsXG4gICAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdC5zZXJ2ZXJNb2R1bGVNYXAsXG4gICAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdC5tb2R1bGVMb2FkaW5nLFxuICAgICAgICAgIG5vU2VydmVyQ2FsbCxcbiAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5lbmNvZGVGb3JtQWN0aW9uIDogdm9pZCAwLFxuICAgICAgICAgIG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwLFxuICAgICAgICAgIHZvaWQgMCxcbiAgICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMuZmluZFNvdXJjZU1hcFVSTFxuICAgICAgICAgICAgPyBvcHRpb25zLmZpbmRTb3VyY2VNYXBVUkxcbiAgICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgICAgIG9wdGlvbnMgPyAhMCA9PT0gb3B0aW9ucy5yZXBsYXlDb25zb2xlTG9ncyA6ICExLFxuICAgICAgICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5lbnZpcm9ubWVudE5hbWUgPyBvcHRpb25zLmVudmlyb25tZW50TmFtZSA6IHZvaWQgMCxcbiAgICAgICAgICB2b2lkIDBcbiAgICAgICAgKS5fd2Vha1Jlc3BvbnNlLFxuICAgICAgICBzdHJlYW1TdGF0ZSA9IGNyZWF0ZVN0cmVhbVN0YXRlKCk7XG4gICAgICBzdHJlYW0ub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNodW5rKSB7XG4gICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcmVzcG9uc2UkanNjb21wJDAud2Vhay5kZXJlZigpKSB7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSB1bndyYXBXZWFrUmVzcG9uc2UocmVzcG9uc2UkanNjb21wJDApLFxuICAgICAgICAgICAgICAgIGkgPSAwLFxuICAgICAgICAgICAgICAgIHJvd1N0YXRlID0gc3RyZWFtU3RhdGUuX3Jvd1N0YXRlLFxuICAgICAgICAgICAgICAgIHJvd0lEID0gc3RyZWFtU3RhdGUuX3Jvd0lELFxuICAgICAgICAgICAgICAgIHJvd1RhZyA9IHN0cmVhbVN0YXRlLl9yb3dUYWcsXG4gICAgICAgICAgICAgICAgcm93TGVuZ3RoID0gc3RyZWFtU3RhdGUuX3Jvd0xlbmd0aCxcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBzdHJlYW1TdGF0ZS5fYnVmZmVyLFxuICAgICAgICAgICAgICAgIGNodW5rTGVuZ3RoID0gY2h1bmsubGVuZ3RoO1xuICAgICAgICAgICAgICBpIDwgY2h1bmtMZW5ndGg7XG5cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB2YXIgbGFzdElkeCA9IC0xO1xuICAgICAgICAgICAgICBzd2l0Y2ggKHJvd1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgbGFzdElkeCA9IGNodW5rLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgICAgICAgICAgICAgIDU4ID09PSBsYXN0SWR4XG4gICAgICAgICAgICAgICAgICAgID8gKHJvd1N0YXRlID0gMSlcbiAgICAgICAgICAgICAgICAgICAgOiAocm93SUQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0lEIDw8IDQpIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICg5NiA8IGxhc3RJZHggPyBsYXN0SWR4IC0gODcgOiBsYXN0SWR4IC0gNDgpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgIHJvd1N0YXRlID0gY2h1bmsuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgICAgICAgIDg0ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgNjUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA3OSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDExMSA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDg1ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgODMgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICAxMTUgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA3NiA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDEwOCA9PT0gcm93U3RhdGUgfHxcbiAgICAgICAgICAgICAgICAgIDcxID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgMTAzID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgNzcgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICAxMDkgPT09IHJvd1N0YXRlIHx8XG4gICAgICAgICAgICAgICAgICA4NiA9PT0gcm93U3RhdGVcbiAgICAgICAgICAgICAgICAgICAgPyAoKHJvd1RhZyA9IHJvd1N0YXRlKSwgKHJvd1N0YXRlID0gMiksIGkrKylcbiAgICAgICAgICAgICAgICAgICAgOiAoNjQgPCByb3dTdGF0ZSAmJiA5MSA+IHJvd1N0YXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgMTE0ID09PSByb3dTdGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgMTIwID09PSByb3dTdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgID8gKChyb3dUYWcgPSByb3dTdGF0ZSksIChyb3dTdGF0ZSA9IDMpLCBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgOiAoKHJvd1RhZyA9IDApLCAocm93U3RhdGUgPSAzKSk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmsuY2hhckNvZGVBdChpKyspO1xuICAgICAgICAgICAgICAgICAgNDQgPT09IGxhc3RJZHhcbiAgICAgICAgICAgICAgICAgICAgPyAocm93U3RhdGUgPSA0KVxuICAgICAgICAgICAgICAgICAgICA6IChyb3dMZW5ndGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0xlbmd0aCA8PCA0KSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoOTYgPCBsYXN0SWR4ID8gbGFzdElkeCAtIDg3IDogbGFzdElkeCAtIDQ4KSk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmsuaW5kZXhPZihcIlxcblwiLCBpKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgIGlmICg4NCAhPT0gcm93VGFnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBcIkJpbmFyeSBSU0MgY2h1bmtzIGNhbm5vdCBiZSBlbmNvZGVkIGFzIHN0cmluZ3MuIFRoaXMgaXMgYSBidWcgaW4gdGhlIHdpcmluZyBvZiB0aGUgUmVhY3Qgc3RyZWFtcy5cIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKHJvd0xlbmd0aCA8IGNodW5rLmxlbmd0aCB8fCBjaHVuay5sZW5ndGggPiAzICogcm93TGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBcIlN0cmluZyBjaHVua3MgbmVlZCB0byBiZSBwYXNzZWQgaW4gdGhlaXIgb3JpZ2luYWwgc2hhcGUuIE5vdCBzcGxpdCBpbnRvIHNtYWxsZXIgc3RyaW5nIGNodW5rcy4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgd2lyaW5nIG9mIHRoZSBSZWFjdCBzdHJlYW1zLlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsYXN0SWR4ID0gY2h1bmsubGVuZ3RoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICgtMSA8IGxhc3RJZHgpIHtcbiAgICAgICAgICAgICAgICBpZiAoMCA8IGJ1ZmZlci5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJTdHJpbmcgY2h1bmtzIG5lZWQgdG8gYmUgcGFzc2VkIGluIHRoZWlyIG9yaWdpbmFsIHNoYXBlLiBOb3Qgc3BsaXQgaW50byBzbWFsbGVyIHN0cmluZyBjaHVua3MuIFRoaXMgaXMgYSBidWcgaW4gdGhlIHdpcmluZyBvZiB0aGUgUmVhY3Qgc3RyZWFtcy5cIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpID0gY2h1bmsuc2xpY2UoaSwgbGFzdElkeCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Z1bGxTdHJpbmdSb3cocmVzcG9uc2UsIHJvd0lELCByb3dUYWcsIGkpO1xuICAgICAgICAgICAgICAgIGkgPSBsYXN0SWR4O1xuICAgICAgICAgICAgICAgIDMgPT09IHJvd1N0YXRlICYmIGkrKztcbiAgICAgICAgICAgICAgICByb3dMZW5ndGggPSByb3dJRCA9IHJvd1RhZyA9IHJvd1N0YXRlID0gMDtcbiAgICAgICAgICAgICAgICBidWZmZXIubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaHVuay5sZW5ndGggIT09IGkpXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlN0cmluZyBjaHVua3MgbmVlZCB0byBiZSBwYXNzZWQgaW4gdGhlaXIgb3JpZ2luYWwgc2hhcGUuIE5vdCBzcGxpdCBpbnRvIHNtYWxsZXIgc3RyaW5nIGNodW5rcy4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgd2lyaW5nIG9mIHRoZSBSZWFjdCBzdHJlYW1zLlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0cmVhbVN0YXRlLl9yb3dTdGF0ZSA9IHJvd1N0YXRlO1xuICAgICAgICAgICAgc3RyZWFtU3RhdGUuX3Jvd0lEID0gcm93SUQ7XG4gICAgICAgICAgICBzdHJlYW1TdGF0ZS5fcm93VGFnID0gcm93VGFnO1xuICAgICAgICAgICAgc3RyZWFtU3RhdGUuX3Jvd0xlbmd0aCA9IHJvd0xlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcm9jZXNzQmluYXJ5Q2h1bmsocmVzcG9uc2UkanNjb21wJDAsIHN0cmVhbVN0YXRlLCBjaHVuayk7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbihcImVycm9yXCIsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICByZXBvcnRHbG9iYWxFcnJvcihyZXNwb25zZSRqc2NvbXAkMCwgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oXCJlbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY2xvc2UocmVzcG9uc2UkanNjb21wJDApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZ2V0Um9vdChyZXNwb25zZSRqc2NvbXAkMCk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSA9IGZ1bmN0aW9uIChzdHJlYW0sIG9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSBjcmVhdGVSZXNwb25zZUZyb21PcHRpb25zKG9wdGlvbnMpO1xuICAgICAgc3RhcnRSZWFkaW5nRnJvbVN0cmVhbShvcHRpb25zLCBzdHJlYW0pO1xuICAgICAgcmV0dXJuIGdldFJvb3Qob3B0aW9ucyk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZVNlcnZlclJlZmVyZW5jZSA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclJlZmVyZW5jZSQxKGlkLCBub1NlcnZlckNhbGwkMSk7XG4gICAgfTtcbiAgICBleHBvcnRzLmNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgTWFwKCk7XG4gICAgfTtcbiAgICBleHBvcnRzLmVuY29kZVJlcGx5ID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgYWJvcnQgPSBwcm9jZXNzUmVwbHkoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMudGVtcG9yYXJ5UmVmZXJlbmNlc1xuICAgICAgICAgICAgPyBvcHRpb25zLnRlbXBvcmFyeVJlZmVyZW5jZXNcbiAgICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgcmVqZWN0XG4gICAgICAgICk7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgICAgICAgdmFyIHNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsO1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgYWJvcnQoc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGFib3J0KHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZXhwb3J0cy5yZWdpc3RlclNlcnZlclJlZmVyZW5jZSA9IGZ1bmN0aW9uIChcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGlkLFxuICAgICAgZW5jb2RlRm9ybUFjdGlvblxuICAgICkge1xuICAgICAgcmVnaXN0ZXJCb3VuZFNlcnZlclJlZmVyZW5jZShyZWZlcmVuY2UsIGlkLCBudWxsLCBlbmNvZGVGb3JtQWN0aW9uKTtcbiAgICAgIHJldHVybiByZWZlcmVuY2U7XG4gICAgfTtcbiAgfSkoKTtcbiJdLCJuYW1lcyI6WyJtZXRhZGF0YSIsInJlc29sdmVDbGllbnRSZWZlcmVuY2UiLCJidW5kbGVyQ29uZmlnIiwibW9kdWxlRXhwb3J0cyIsIm5hbWUiLCJFcnJvciIsImxlbmd0aCIsImlkIiwiY2h1bmtzIiwicmVzb2x2ZVNlcnZlclJlZmVyZW5jZSIsInJlc29sdmVkTW9kdWxlRGF0YSIsImlkeCIsImxhc3RJbmRleE9mIiwic2xpY2UiLCJhc3luYyIsInJlcXVpcmVBc3luY01vZHVsZSIsInByb21pc2UiLCJnbG9iYWxUaGlzIiwiX19uZXh0X3JlcXVpcmVfXyIsInRoZW4iLCJzdGF0dXMiLCJ2YWx1ZSIsInJlYXNvbiIsImlnbm9yZVJlamVjdCIsInByZWxvYWRNb2R1bGUiLCJwcm9taXNlcyIsImkiLCJjaHVua0lkIiwiZW50cnkiLCJjaHVua0NhY2hlIiwiZ2V0IiwiX193ZWJwYWNrX2NodW5rX2xvYWRfXyIsInB1c2giLCJyZXNvbHZlIiwic2V0IiwiYmluZCIsIlByb21pc2UiLCJhbGwiLCJyZXF1aXJlTW9kdWxlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwcmVwYXJlRGVzdGluYXRpb25XaXRoQ2h1bmtzIiwibW9kdWxlTG9hZGluZyIsIm5vbmNlJGpzY29tcCQwIiwibm9uY2UiLCJKU0NvbXBpbGVyX3RlbXBfY29uc3QiLCJSZWFjdERPTVNoYXJlZEludGVybmFscyIsImQiLCJKU0NvbXBpbGVyX3RlbXBfY29uc3QkanNjb21wJDAiLCJYIiwiSlNDb21waWxlcl90ZW1wX2NvbnN0JGpzY29tcCQxIiwicHJlZml4IiwiSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0IiwiY3Jvc3NPcmlnaW4iLCJnZXRJdGVyYXRvckZuIiwibWF5YmVJdGVyYWJsZSIsIk1BWUJFX0lURVJBVE9SX1NZTUJPTCIsImlzT2JqZWN0UHJvdG90eXBlIiwib2JqZWN0IiwiT2JqZWN0UHJvdG90eXBlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiaXNTaW1wbGVPYmplY3QiLCJuYW1lcyIsImRlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwib2JqZWN0TmFtZSIsInRvU3RyaW5nIiwiZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2UiLCJrZXkiLCJlbmNvZGVkS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsImRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UiLCJpc0FycmF5SW1wbCIsIiQkdHlwZW9mIiwiQ0xJRU5UX1JFRkVSRU5DRV9UQUciLCJkaXNwbGF5TmFtZSIsIlN0cmluZyIsImRlc2NyaWJlRWxlbWVudFR5cGUiLCJ0eXBlIiwiUkVBQ1RfU1VTUEVOU0VfVFlQRSIsIlJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSIsIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCJyZW5kZXIiLCJSRUFDVF9NRU1PX1RZUEUiLCJSRUFDVF9MQVpZX1RZUEUiLCJwYXlsb2FkIiwiX3BheWxvYWQiLCJfaW5pdCIsIngiLCJkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSIsIm9iamVjdE9yQXJyYXkiLCJleHBhbmRlZE5hbWUiLCJvYmpLaW5kIiwic3RhcnQiLCJqc3hDaGlsZHJlblBhcmVudHMiLCJoYXMiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJqc3hQcm9wc1BhcmVudHMiLCJrZXlzIiwiX3ZhbHVlMiIsIl9zdWJzdHIyIiwicmVwZWF0Iiwic2VyaWFsaXplTnVtYmVyIiwibnVtYmVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJJbmZpbml0eSIsInByb2Nlc3NSZXBseSIsInJvb3QiLCJmb3JtRmllbGRQcmVmaXgiLCJ0ZW1wb3JhcnlSZWZlcmVuY2VzIiwicmVqZWN0Iiwic2VyaWFsaXplVHlwZWRBcnJheSIsInRhZyIsInR5cGVkQXJyYXkiLCJCbG9iIiwiVWludDhBcnJheSIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiYmxvYklkIiwibmV4dFBhcnRJZCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJzZXJpYWxpemVCaW5hcnlSZWFkZXIiLCJyZWFkZXIiLCJwcm9ncmVzcyIsImRvbmUiLCJkYXRhIiwic3RyZWFtSWQiLCJwZW5kaW5nUGFydHMiLCJyZWFkIiwic2VyaWFsaXplUmVhZGVyIiwicGFydEpTT04iLCJyZXNvbHZlVG9KU09OIiwic2VyaWFsaXplUmVhZGFibGVTdHJlYW0iLCJzdHJlYW0iLCJiaW5hcnlSZWFkZXIiLCJnZXRSZWFkZXIiLCJtb2RlIiwic2VyaWFsaXplQXN5bmNJdGVyYWJsZSIsIml0ZXJhYmxlIiwiaXRlcmF0b3IiLCJfcGFydEpTT04iLCJuZXh0IiwieCQwIiwiY29uc29sZSIsImVycm9yIiwib3JpZ2luYWxWYWx1ZSIsIkRhdGUiLCJpbmRleE9mIiwicGFyZW50UmVmZXJlbmNlIiwid3JpdHRlbk9iamVjdHMiLCJpbml0IiwibGF6eUlkIiwic2VyaWFsaXplTW9kZWwiLCJfbGF6eUlkIiwiX3BhcnRKU09OMiIsIl9kYXRhIiwibW9kZWxSb290IiwicHJvbWlzZUlkIiwicGFydFZhbHVlIiwicHJldmlvdXNSZWZlcmVuY2UiLCJfcGFydEpTT04zIiwiX2RhdGEzIiwiZm9yRWFjaCIsIm9yaWdpbmFsS2V5IiwiTWFwIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwiQXJyYXlCdWZmZXIiLCJJbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSIsIkRhdGFWaWV3IiwiUmVhZGFibGVTdHJlYW0iLCJBU1lOQ19JVEVSQVRPUiIsIlJFQUNUX0NPTlRFWFRfVFlQRSIsImdldE93blByb3BlcnR5U3ltYm9scyIsImRlc2NyaXB0aW9uIiwia25vd25TZXJ2ZXJSZWZlcmVuY2VzIiwiYm91bmQiLCJtb2RlbCIsIldlYWtNYXAiLCJqc29uIiwiZW5jb2RlRm9ybURhdGEiLCJyZWZlcmVuY2UiLCJ0aGVuYWJsZSIsInJlcyIsInJlaiIsImJvZHkiLCJlIiwiZGVmYXVsdEVuY29kZUZvcm1BY3Rpb24iLCJpZGVudGlmaWVyUHJlZml4IiwicmVmZXJlbmNlQ2xvc3VyZSIsImJvdW5kQ2FjaGUiLCJwcmVmaXhlZERhdGEiLCJtZXRob2QiLCJlbmNUeXBlIiwiaXNTaWduYXR1cmVFcXVhbCIsInJlZmVyZW5jZUlkIiwibnVtYmVyT2ZCb3VuZEFyZ3MiLCJib3VuZFByb21pc2UiLCJib3VuZEFyZ3MiLCJjcmVhdGVGYWtlU2VydmVyRnVuY3Rpb24iLCJmaWxlbmFtZSIsInNvdXJjZU1hcCIsImxpbmUiLCJjb2wiLCJlbnZpcm9ubWVudE5hbWUiLCJpbm5lckZ1bmN0aW9uIiwiZW5jb2RlZE5hbWUiLCJzdGFydHNXaXRoIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZmFrZVNlcnZlckZ1bmN0aW9uSWR4IiwiZXZhbCIsInJlZ2lzdGVyQm91bmRTZXJ2ZXJSZWZlcmVuY2UiLCJlbmNvZGVGb3JtQWN0aW9uIiwib3JpZ2luYWxCaW5kIiwiZGVmaW5lUHJvcGVydGllcyIsIiQkRk9STV9BQ1RJT04iLCIkJElTX1NJR05BVFVSRV9FUVVBTCIsIkZ1bmN0aW9uQmluZCIsImFwcGx5IiwiYXJndW1lbnRzIiwibmV3Rm4iLCJhcmdzIiwiQXJyYXlTbGljZSIsImNvbmNhdCIsImNyZWF0ZUJvdW5kU2VydmVyUmVmZXJlbmNlIiwibWV0YURhdGEiLCJjYWxsU2VydmVyIiwiZmluZFNvdXJjZU1hcFVSTCIsImFjdGlvbiIsImxvY2F0aW9uIiwiZnVuY3Rpb25OYW1lIiwiZW52IiwicGFyc2VTdGFja0xvY2F0aW9uIiwic3RhY2siLCJlbmRPZkZpcnN0IiwiZW5kT2ZTZWNvbmQiLCJ2OEZyYW1lUmVnRXhwIiwiZXhlYyIsImpzY1NwaWRlck1vbmtleUZyYW1lUmVnRXhwIiwiY3JlYXRlU2VydmVyUmVmZXJlbmNlJDEiLCJnZXRDb21wb25lbnROYW1lRnJvbVR5cGUiLCJSRUFDVF9DTElFTlRfUkVGRVJFTkNFIiwiUkVBQ1RfRlJBR01FTlRfVFlQRSIsIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCJSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIiwiUkVBQ1RfQUNUSVZJVFlfVFlQRSIsIlJFQUNUX1BPUlRBTF9UWVBFIiwiUkVBQ1RfQ09OU1VNRVJfVFlQRSIsIl9jb250ZXh0IiwiaW5uZXJUeXBlIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJzdHJ1Y3R1cmVkU3RhY2tUcmFjZSIsIm1lc3NhZ2UiLCJSZWFjdFByb21pc2UiLCJfZGVidWdJbmZvIiwiX2RlYnVnQ2h1bmsiLCJ1bndyYXBXZWFrUmVzcG9uc2UiLCJ3ZWFrUmVzcG9uc2UiLCJ3ZWFrIiwiZGVyZWYiLCJjbGVhbnVwRGVidWdDaGFubmVsIiwiZGVidWdDaGFubmVsIiwicmVhZENodW5rIiwiY2h1bmsiLCJpbml0aWFsaXplTW9kZWxDaHVuayIsImluaXRpYWxpemVNb2R1bGVDaHVuayIsImdldFJvb3QiLCJnZXRDaHVuayIsImNyZWF0ZVBlbmRpbmdDaHVuayIsInJlc3BvbnNlIiwiX3BlbmRpbmdDaHVua3MiLCJfd2Vha1Jlc3BvbnNlIiwiX3BlbmRpbmdJbml0aWFsUmVuZGVyIiwiY2xlYXJUaW1lb3V0IiwicmVsZWFzZVBlbmRpbmdDaHVuayIsInNldFRpbWVvdXQiLCJmbHVzaEluaXRpYWxSZW5kZXJQZXJmb3JtYW5jZSIsIndha2VDaHVuayIsImxpc3RlbmVycyIsImxpc3RlbmVyIiwiZnVsZmlsbFJlZmVyZW5jZSIsInJlamVjdENodW5rIiwicmVqZWN0UmVmZXJlbmNlIiwicmVzb2x2ZUJsb2NrZWRDeWNsZSIsInJlc29sdmVkQ2h1bmsiLCJyZWZlcmVuY2VkQ2h1bmsiLCJoYW5kbGVyIiwid2FrZUNodW5rSWZJbml0aWFsaXplZCIsInJlc29sdmVMaXN0ZW5lcnMiLCJyZWplY3RMaXN0ZW5lcnMiLCJjeWNsaWNIYW5kbGVyIiwic3BsaWNlIiwidHJpZ2dlckVycm9yT25DaHVuayIsInByZXZIYW5kbGVyIiwiaW5pdGlhbGl6aW5nSGFuZGxlciIsImluaXRpYWxpemVEZWJ1Z0NodW5rIiwiY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rIiwiY3JlYXRlUmVzb2x2ZWRJdGVyYXRvclJlc3VsdENodW5rIiwicmVzb2x2ZUl0ZXJhdG9yUmVzdWx0Q2h1bmsiLCJyZXNvbHZlTW9kZWxDaHVuayIsImVucXVldWVNb2RlbCIsInJlc29sdmVNb2R1bGVDaHVuayIsImRlYnVnQ2h1bmsiLCJkZWJ1Z0luZm8iLCJjIiwiaW5pdGlhbGl6ZURlYnVnSW5mbyIsIndhaXRGb3JSZWZlcmVuY2UiLCJyZXNvbHZlZE1vZGVsIiwicGFyc2UiLCJfZnJvbUpTT04iLCJlcnJvcmVkIiwiZGVwcyIsInJlcG9ydEdsb2JhbEVycm9yIiwiX2Nsb3NlZCIsIl9jbG9zZWRSZWFzb24iLCJfY2h1bmtzIiwiX2RlYnVnQ2hhbm5lbCIsIm51bGxSZWZHZXR0ZXIiLCJnZXRUYXNrTmFtZSIsImluaXRpYWxpemVFbGVtZW50IiwiZWxlbWVudCIsIl9kZWJ1Z1N0YWNrIiwib3duZXIiLCJfb3duZXIiLCJfZGVidWdSb290T3duZXIiLCJfcm9vdEVudmlyb25tZW50TmFtZSIsIm5vcm1hbGl6ZWRTdGFja1RyYWNlIiwiX2RlYnVnUm9vdFN0YWNrIiwiY3JlYXRlRmFrZUpTWENhbGxTdGFja0luREVWIiwic3VwcG9ydHNDcmVhdGVUYXNrIiwiY3JlYXRlVGFzayIsImJ1aWxkRmFrZUNhbGxTdGFjayIsImluaXRpYWxpemVGYWtlVGFzayIsIl9kZWJ1Z1Jvb3RUYXNrIiwicnVuIiwiX2RlYnVnVGFzayIsImluaXRpYWxpemVGYWtlU3RhY2siLCJmcmVlemUiLCJwcm9wcyIsImNyZWF0ZUxhenlDaHVua1dyYXBwZXIiLCJsYXp5VHlwZSIsInBhcmVudE9iamVjdCIsIm1hcCIsInBhdGgiLCJtYXBwZWRWYWx1ZSIsImJsb2NrZWRWYWx1ZSIsImVycm9yZWRDb21wb25lbnQiLCJkZWJ1Z1N0YWNrIiwiZGVidWdUYXNrIiwicGFyZW50IiwibG9hZFNlcnZlclJlZmVyZW5jZSIsIl9zZXJ2ZXJSZWZlcmVuY2VDb25maWciLCJfY2FsbFNlcnZlciIsIl9lbmNvZGVGb3JtQWN0aW9uIiwiX2RlYnVnRmluZFNvdXJjZU1hcFVSTCIsInNlcnZlclJlZmVyZW5jZSIsInJlc29sdmVkVmFsdWUiLCJ1bnNoaWZ0IiwiZ2V0T3V0bGluZWRNb2RlbCIsInNwbGl0IiwicGFyc2VJbnQiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiY3JlYXRlTWFwIiwiY3JlYXRlU2V0IiwiY3JlYXRlQmxvYiIsImNyZWF0ZUZvcm1EYXRhIiwiYXBwbHlDb25zdHJ1Y3RvciIsInNldFByb3RvdHlwZU9mIiwiZGVmaW5lTGF6eUdldHRlciIsImV4dHJhY3RJdGVyYXRvciIsIlN5bWJvbCIsImNyZWF0ZU1vZGVsIiwiZ2V0SW5mZXJyZWRGdW5jdGlvbkFwcHJveGltYXRlIiwiY29kZSIsInRyaW0iLCJwYXJzZU1vZGVsU3RyaW5nIiwiZm9yIiwicmVmIiwiX3RlbXBSZWZzIiwicmVzb2x2ZUVycm9yRGV2IiwiTmFOIiwiQmlnSW50IiwibWlnaHRIYXZlU3RhdGljQ29uc3RydWN0b3IiLCJ0ZXN0IiwiXyIsIm1pc3NpbmdDYWxsIiwiUmVzcG9uc2VJbnN0YW5jZSIsInNlcnZlclJlZmVyZW5jZUNvbmZpZyIsInJlcGxheUNvbnNvbGUiLCJfYnVuZGxlckNvbmZpZyIsIl9tb2R1bGVMb2FkaW5nIiwiX25vbmNlIiwiX3N0cmluZ0RlY29kZXIiLCJ1dGlsIiwiVGV4dERlY29kZXIiLCJXZWFrUmVmIiwiUmVhY3RTaGFyZWRJbnRlcmFsc1NlcnZlciIsIkEiLCJnZXRPd25lciIsInRvTG93ZXJDYXNlIiwiX2Jsb2NrZWRDb25zb2xlIiwiX3JlcGxheUNvbnNvbGUiLCJkZWJ1Z0NoYW5uZWxSZWdpc3RyeSIsInJlZ2lzdGVyIiwiY3JlYXRlRnJvbUpTT05DYWxsYmFjayIsImNyZWF0ZVN0cmVhbVN0YXRlIiwiX3Jvd1N0YXRlIiwiX3Jvd0lEIiwiX3Jvd1RhZyIsIl9yb3dMZW5ndGgiLCJfYnVmZmVyIiwicmVzb2x2ZUJ1ZmZlciIsImVucXVldWVWYWx1ZSIsInJlc29sdmVNb2R1bGUiLCJjbGllbnRSZWZlcmVuY2UiLCJibG9ja2VkQ2h1bmsiLCJyZXNvbHZlU3RyZWFtIiwiY29udHJvbGxlciIsInN0YXJ0UmVhZGFibGVTdHJlYW0iLCJjbG9zZWQiLCJwcmV2aW91c0Jsb2NrZWRDaHVuayIsImVucXVldWUiLCJ2IiwiX2NodW5rMyIsImNsb3NlIiwiYXN5bmNJdGVyYXRvciIsImNyZWF0ZUl0ZXJhdG9yIiwic3RhcnRBc3luY0l0ZXJhYmxlIiwibmV4dFdyaXRlSW5kZXgiLCJuZXh0UmVhZEluZGV4IiwiYXJnIiwiZXJyb3JJbmZvIiwiZ2V0Um9vdFRhc2siLCJjcmVhdGVGYWtlRnVuY3Rpb24iLCJlbmNsb3NpbmdMaW5lIiwiZW5jbG9zaW5nQ29sIiwiZmFrZUZ1bmN0aW9uSWR4IiwiZm4iLCJ1c2VFbmNsb3NpbmdMaW5lIiwiaW5uZXJDYWxsIiwiZnJhbWUiLCJmcmFtZUtleSIsImpvaW4iLCJmYWtlRnVuY3Rpb25DYWNoZSIsImNoaWxkRW52aXJvbm1lbnROYW1lIiwicm9vdFRhc2siLCJjYWNoZWRFbnRyeSIsIm93bmVyVGFzayIsImF3YWl0ZWQiLCJmYWtlSlNYQ2FsbFNpdGUiLCJkZWJ1Z0xvY2F0aW9uIiwiZ2V0Q3VycmVudFN0YWNrSW5ERVYiLCJjdXJyZW50T3duZXJJbkRFViIsImluZm8iLCJvd25lclN0YWNrIiwicHJldlByZXBhcmVTdGFja1RyYWNlIiwiSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwIiwibWF0Y2giLCJzdWZmaXgiLCJyZXNvbHZlQ29uc29sZUVudHJ5IiwicmVwbGF5Q29uc29sZVdpdGhDYWxsU3RhY2tJbkRFViIsIl9jaHVuazQiLCJ1bmJsb2NrIiwiaW5pdGlhbGl6ZUlPSW5mbyIsImlvSW5mbyIsIl90aW1lT3JpZ2luIiwiZW5kIiwicmVzb2x2ZUlPSW5mbyIsIm1lcmdlQnVmZmVyIiwibGFzdENodW5rIiwibCIsIl9pMyIsInJlc29sdmVUeXBlZEFycmF5IiwiY29uc3RydWN0b3IiLCJieXRlc1BlckVsZW1lbnQiLCJwcm9jZXNzRnVsbEJpbmFyeVJvdyIsInN0cmluZ0RlY29kZXIiLCJyb3ciLCJkZWNvZGUiLCJkZWNvZGVyT3B0aW9ucyIsInByb2Nlc3NGdWxsU3RyaW5nUm93IiwiRCIsIkMiLCJMIiwibSIsIlMiLCJNIiwiZGlnZXN0IiwicGVyZm9ybWFuY2UiLCJ0aW1lT3JpZ2luIiwicHJvY2Vzc0JpbmFyeUNodW5rIiwic3RyZWFtU3RhdGUiLCJyb3dTdGF0ZSIsInJvd1RhZyIsInJvd0xlbmd0aCIsImNodW5rTGVuZ3RoIiwibGFzdElkeCIsIm9mZnNldCIsImIiLCJ2YWxpZGF0ZWQiLCJfc3RvcmUiLCJub1NlcnZlckNhbGwkMSIsImNyZWF0ZVJlc3BvbnNlRnJvbU9wdGlvbnMiLCJvcHRpb25zIiwic2VydmVyQ29uc3VtZXJNYW5pZmVzdCIsIm1vZHVsZU1hcCIsInNlcnZlck1vZHVsZU1hcCIsInJlcGxheUNvbnNvbGVMb2dzIiwic3RhcnRSZWFkaW5nRnJvbVN0cmVhbSIsIl9yZWYiLCJjYXRjaCIsIm5vU2VydmVyQ2FsbCIsInJlcXVpcmUiLCJSZWFjdERPTSIsIlJlYWN0IiwiYmluZCQxIiwiRnVuY3Rpb24iLCJfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUiLCJpc0FycmF5IiwiX19TRVJWRVJfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFIiwiUmVhY3RTaGFyZWRJbnRlcm5hbHMiLCJfX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUiLCJjcmVhdGUiLCJfdGhpcyIsInJlc29sdmVDYWxsYmFjayIsInJlamVjdENhbGxiYWNrIiwid3JhcHBlclByb21pc2UiLCJGaW5hbGl6YXRpb25SZWdpc3RyeSIsImNyZWF0ZUZha2VKU1hDYWxsU3RhY2siLCJyZWFjdF9zdGFja19ib3R0b21fZnJhbWUiLCJyZXBsYXlDb25zb2xlV2l0aENhbGxTdGFjayIsIm1ldGhvZE5hbWUiLCJzdGFja1RyYWNlIiwicHJldlN0YWNrIiwiZ2V0Q3VycmVudFN0YWNrIiwiYSIsIm5ld0FyZ3MiLCJjYWxsU3RhY2siLCJ0YXNrIiwiZXhwb3J0cyIsImNyZWF0ZUZyb21GZXRjaCIsInByb21pc2VGb3JSZXNwb25zZSIsInIiLCJjcmVhdGVGcm9tTm9kZVN0cmVhbSIsInJlc3BvbnNlJGpzY29tcCQwIiwib24iLCJyb3dJRCIsImNoYXJDb2RlQXQiLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0iLCJjcmVhdGVTZXJ2ZXJSZWZlcmVuY2UiLCJjcmVhdGVUZW1wb3JhcnlSZWZlcmVuY2VTZXQiLCJlbmNvZGVSZXBseSIsImFib3J0Iiwic2lnbmFsIiwiYWJvcnRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJTZXJ2ZXJSZWZlcmVuY2UiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js ***! \*********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-server-dom-webpack-client.node.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnQubm9kZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsaU9BQXFGO0FBQ3ZGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxjb21waWxlZFxccmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrXFxjbGllbnQubm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5ub2RlLnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5ub2RlLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/server-only/empty.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/compiled/server-only/empty.js ***! \**************************************************************/ /***/ (() => { /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/string-hash/index.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/compiled/string-hash/index.js ***! \**************************************************************/ /***/ ((module) => { eval("(()=>{\"use strict\";var e={328:e=>{function hash(e){var r=5381,_=e.length;while(_){r=r*33^e.charCodeAt(--_)}return r>>>0}e.exports=hash}};var r={};function __nccwpck_require__(_){var a=r[_];if(a!==undefined){return a.exports}var t=r[_]={exports:{}};var i=true;try{e[_](t,t.exports,__nccwpck_require__);i=false}finally{if(i)delete r[_]}return t.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var _=__nccwpck_require__(328);module.exports=_})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZy1oYXNoL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxPQUFPLFFBQVEsaUJBQWlCLHNCQUFzQixTQUFTLHlCQUF5QixhQUFhLGlCQUFpQixTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxzQ0FBc0MsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsaUZBQWlGLCtCQUErQixpQkFBaUIiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxzdHJpbmctaGFzaFxcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezMyODplPT57ZnVuY3Rpb24gaGFzaChlKXt2YXIgcj01MzgxLF89ZS5sZW5ndGg7d2hpbGUoXyl7cj1yKjMzXmUuY2hhckNvZGVBdCgtLV8pfXJldHVybiByPj4+MH1lLmV4cG9ydHM9aGFzaH19O3ZhciByPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18oXyl7dmFyIGE9cltfXTtpZihhIT09dW5kZWZpbmVkKXtyZXR1cm4gYS5leHBvcnRzfXZhciB0PXJbX109e2V4cG9ydHM6e319O3ZhciBpPXRydWU7dHJ5e2VbX10odCx0LmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7aT1mYWxzZX1maW5hbGx5e2lmKGkpZGVsZXRlIHJbX119cmV0dXJuIHQuZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIF89X19uY2N3cGNrX3JlcXVpcmVfXygzMjgpO21vZHVsZS5leHBvcnRzPV99KSgpOyJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/string-hash/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/batcher.js": /*!***********************************************!*\ !*** ./node_modules/next/dist/lib/batcher.js ***! \***********************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Batcher\", ({\n enumerable: true,\n get: function() {\n return Batcher;\n }\n}));\nconst _detachedpromise = __webpack_require__(/*! ./detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nclass Batcher {\n constructor(cacheKeyFn, /**\n * A function that will be called to schedule the wrapped function to be\n * executed. This defaults to a function that will execute the function\n * immediately.\n */ schedulerFn = (fn)=>fn()){\n this.cacheKeyFn = cacheKeyFn;\n this.schedulerFn = schedulerFn;\n this.pending = new Map();\n }\n static create(options) {\n return new Batcher(options == null ? void 0 : options.cacheKeyFn, options == null ? void 0 : options.schedulerFn);\n }\n /**\n * Wraps a function in a promise that will be resolved or rejected only once\n * for a given key. This will allow multiple calls to the function to be\n * made, but only one will be executed at a time. The result of the first\n * call will be returned to all callers.\n *\n * @param key the key to use for the cache\n * @param fn the function to wrap\n * @returns a promise that resolves to the result of the function\n */ async batch(key, fn) {\n const cacheKey = this.cacheKeyFn ? await this.cacheKeyFn(key) : key;\n if (cacheKey === null) {\n return fn(cacheKey, Promise.resolve);\n }\n const pending = this.pending.get(cacheKey);\n if (pending) return pending;\n const { promise, resolve, reject } = new _detachedpromise.DetachedPromise();\n this.pending.set(cacheKey, promise);\n this.schedulerFn(async ()=>{\n try {\n const result = await fn(cacheKey, resolve);\n // Resolving a promise multiple times is a no-op, so we can safely\n // resolve all pending promises with the same result.\n resolve(result);\n } catch (err) {\n reject(err);\n } finally{\n this.pending.delete(cacheKey);\n }\n });\n return promise;\n }\n}\n\n//# sourceMappingURL=batcher.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9iYXRjaGVyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMkNBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YseUJBQXlCLG1CQUFPLENBQUMsa0ZBQW9CO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkJBQTJCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXGJhdGNoZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCYXRjaGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBCYXRjaGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2RldGFjaGVkcHJvbWlzZSA9IHJlcXVpcmUoXCIuL2RldGFjaGVkLXByb21pc2VcIik7XG5jbGFzcyBCYXRjaGVyIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZUtleUZuLCAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gc2NoZWR1bGUgdGhlIHdyYXBwZWQgZnVuY3Rpb24gdG8gYmVcbiAgICAgKiBleGVjdXRlZC4gVGhpcyBkZWZhdWx0cyB0byBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBleGVjdXRlIHRoZSBmdW5jdGlvblxuICAgICAqIGltbWVkaWF0ZWx5LlxuICAgICAqLyBzY2hlZHVsZXJGbiA9IChmbik9PmZuKCkpe1xuICAgICAgICB0aGlzLmNhY2hlS2V5Rm4gPSBjYWNoZUtleUZuO1xuICAgICAgICB0aGlzLnNjaGVkdWxlckZuID0gc2NoZWR1bGVyRm47XG4gICAgICAgIHRoaXMucGVuZGluZyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmF0Y2hlcihvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmNhY2hlS2V5Rm4sIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2NoZWR1bGVyRm4pO1xuICAgIH1cbiAgICAvKipcbiAgICogV3JhcHMgYSBmdW5jdGlvbiBpbiBhIHByb21pc2UgdGhhdCB3aWxsIGJlIHJlc29sdmVkIG9yIHJlamVjdGVkIG9ubHkgb25jZVxuICAgKiBmb3IgYSBnaXZlbiBrZXkuIFRoaXMgd2lsbCBhbGxvdyBtdWx0aXBsZSBjYWxscyB0byB0aGUgZnVuY3Rpb24gdG8gYmVcbiAgICogbWFkZSwgYnV0IG9ubHkgb25lIHdpbGwgYmUgZXhlY3V0ZWQgYXQgYSB0aW1lLiBUaGUgcmVzdWx0IG9mIHRoZSBmaXJzdFxuICAgKiBjYWxsIHdpbGwgYmUgcmV0dXJuZWQgdG8gYWxsIGNhbGxlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UgZm9yIHRoZSBjYWNoZVxuICAgKiBAcGFyYW0gZm4gdGhlIGZ1bmN0aW9uIHRvIHdyYXBcbiAgICogQHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgICovIGFzeW5jIGJhdGNoKGtleSwgZm4pIHtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNhY2hlS2V5Rm4gPyBhd2FpdCB0aGlzLmNhY2hlS2V5Rm4oa2V5KSA6IGtleTtcbiAgICAgICAgaWYgKGNhY2hlS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZm4oY2FjaGVLZXksIFByb21pc2UucmVzb2x2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGVuZGluZyA9IHRoaXMucGVuZGluZy5nZXQoY2FjaGVLZXkpO1xuICAgICAgICBpZiAocGVuZGluZykgcmV0dXJuIHBlbmRpbmc7XG4gICAgICAgIGNvbnN0IHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH0gPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nLnNldChjYWNoZUtleSwgcHJvbWlzZSk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVyRm4oYXN5bmMgKCk9PntcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oY2FjaGVLZXksIHJlc29sdmUpO1xuICAgICAgICAgICAgICAgIC8vIFJlc29sdmluZyBhIHByb21pc2UgbXVsdGlwbGUgdGltZXMgaXMgYSBuby1vcCwgc28gd2UgY2FuIHNhZmVseVxuICAgICAgICAgICAgICAgIC8vIHJlc29sdmUgYWxsIHBlbmRpbmcgcHJvbWlzZXMgd2l0aCB0aGUgc2FtZSByZXN1bHQuXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/batcher.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/constants.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/lib/constants.js ***! \*************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_SUFFIX: function() {\n return ACTION_SUFFIX;\n },\n APP_DIR_ALIAS: function() {\n return APP_DIR_ALIAS;\n },\n CACHE_ONE_YEAR: function() {\n return CACHE_ONE_YEAR;\n },\n DOT_NEXT_ALIAS: function() {\n return DOT_NEXT_ALIAS;\n },\n ESLINT_DEFAULT_DIRS: function() {\n return ESLINT_DEFAULT_DIRS;\n },\n GSP_NO_RETURNED_VALUE: function() {\n return GSP_NO_RETURNED_VALUE;\n },\n GSSP_COMPONENT_MEMBER_ERROR: function() {\n return GSSP_COMPONENT_MEMBER_ERROR;\n },\n GSSP_NO_RETURNED_VALUE: function() {\n return GSSP_NO_RETURNED_VALUE;\n },\n HTML_CONTENT_TYPE_HEADER: function() {\n return HTML_CONTENT_TYPE_HEADER;\n },\n INFINITE_CACHE: function() {\n return INFINITE_CACHE;\n },\n INSTRUMENTATION_HOOK_FILENAME: function() {\n return INSTRUMENTATION_HOOK_FILENAME;\n },\n JSON_CONTENT_TYPE_HEADER: function() {\n return JSON_CONTENT_TYPE_HEADER;\n },\n MATCHED_PATH_HEADER: function() {\n return MATCHED_PATH_HEADER;\n },\n MIDDLEWARE_FILENAME: function() {\n return MIDDLEWARE_FILENAME;\n },\n MIDDLEWARE_LOCATION_REGEXP: function() {\n return MIDDLEWARE_LOCATION_REGEXP;\n },\n NEXT_BODY_SUFFIX: function() {\n return NEXT_BODY_SUFFIX;\n },\n NEXT_CACHE_IMPLICIT_TAG_ID: function() {\n return NEXT_CACHE_IMPLICIT_TAG_ID;\n },\n NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() {\n return NEXT_CACHE_REVALIDATED_TAGS_HEADER;\n },\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() {\n return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER;\n },\n NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_SOFT_TAG_MAX_LENGTH;\n },\n NEXT_CACHE_TAGS_HEADER: function() {\n return NEXT_CACHE_TAGS_HEADER;\n },\n NEXT_CACHE_TAG_MAX_ITEMS: function() {\n return NEXT_CACHE_TAG_MAX_ITEMS;\n },\n NEXT_CACHE_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_TAG_MAX_LENGTH;\n },\n NEXT_DATA_SUFFIX: function() {\n return NEXT_DATA_SUFFIX;\n },\n NEXT_INTERCEPTION_MARKER_PREFIX: function() {\n return NEXT_INTERCEPTION_MARKER_PREFIX;\n },\n NEXT_META_SUFFIX: function() {\n return NEXT_META_SUFFIX;\n },\n NEXT_QUERY_PARAM_PREFIX: function() {\n return NEXT_QUERY_PARAM_PREFIX;\n },\n NEXT_RESUME_HEADER: function() {\n return NEXT_RESUME_HEADER;\n },\n NON_STANDARD_NODE_ENV: function() {\n return NON_STANDARD_NODE_ENV;\n },\n PAGES_DIR_ALIAS: function() {\n return PAGES_DIR_ALIAS;\n },\n PRERENDER_REVALIDATE_HEADER: function() {\n return PRERENDER_REVALIDATE_HEADER;\n },\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() {\n return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER;\n },\n PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() {\n return PUBLIC_DIR_MIDDLEWARE_CONFLICT;\n },\n ROOT_DIR_ALIAS: function() {\n return ROOT_DIR_ALIAS;\n },\n RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() {\n return RSC_ACTION_CLIENT_WRAPPER_ALIAS;\n },\n RSC_ACTION_ENCRYPTION_ALIAS: function() {\n return RSC_ACTION_ENCRYPTION_ALIAS;\n },\n RSC_ACTION_PROXY_ALIAS: function() {\n return RSC_ACTION_PROXY_ALIAS;\n },\n RSC_ACTION_VALIDATE_ALIAS: function() {\n return RSC_ACTION_VALIDATE_ALIAS;\n },\n RSC_CACHE_WRAPPER_ALIAS: function() {\n return RSC_CACHE_WRAPPER_ALIAS;\n },\n RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() {\n return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS;\n },\n RSC_MOD_REF_PROXY_ALIAS: function() {\n return RSC_MOD_REF_PROXY_ALIAS;\n },\n RSC_PREFETCH_SUFFIX: function() {\n return RSC_PREFETCH_SUFFIX;\n },\n RSC_SEGMENTS_DIR_SUFFIX: function() {\n return RSC_SEGMENTS_DIR_SUFFIX;\n },\n RSC_SEGMENT_SUFFIX: function() {\n return RSC_SEGMENT_SUFFIX;\n },\n RSC_SUFFIX: function() {\n return RSC_SUFFIX;\n },\n SERVER_PROPS_EXPORT_ERROR: function() {\n return SERVER_PROPS_EXPORT_ERROR;\n },\n SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() {\n return SERVER_PROPS_GET_INIT_PROPS_CONFLICT;\n },\n SERVER_PROPS_SSG_CONFLICT: function() {\n return SERVER_PROPS_SSG_CONFLICT;\n },\n SERVER_RUNTIME: function() {\n return SERVER_RUNTIME;\n },\n SSG_FALLBACK_EXPORT_ERROR: function() {\n return SSG_FALLBACK_EXPORT_ERROR;\n },\n SSG_GET_INITIAL_PROPS_CONFLICT: function() {\n return SSG_GET_INITIAL_PROPS_CONFLICT;\n },\n STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() {\n return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;\n },\n TEXT_PLAIN_CONTENT_TYPE_HEADER: function() {\n return TEXT_PLAIN_CONTENT_TYPE_HEADER;\n },\n UNSTABLE_REVALIDATE_RENAME_ERROR: function() {\n return UNSTABLE_REVALIDATE_RENAME_ERROR;\n },\n WEBPACK_LAYERS: function() {\n return WEBPACK_LAYERS;\n },\n WEBPACK_RESOURCE_QUERIES: function() {\n return WEBPACK_RESOURCE_QUERIES;\n }\n});\nconst TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';\nconst HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';\nconst JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';\nconst NEXT_QUERY_PARAM_PREFIX = 'nxtP';\nconst NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';\nconst MATCHED_PATH_HEADER = 'x-matched-path';\nconst PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate';\nconst PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated';\nconst RSC_PREFETCH_SUFFIX = '.prefetch.rsc';\nconst RSC_SEGMENTS_DIR_SUFFIX = '.segments';\nconst RSC_SEGMENT_SUFFIX = '.segment.rsc';\nconst RSC_SUFFIX = '.rsc';\nconst ACTION_SUFFIX = '.action';\nconst NEXT_DATA_SUFFIX = '.json';\nconst NEXT_META_SUFFIX = '.meta';\nconst NEXT_BODY_SUFFIX = '.body';\nconst NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags';\nconst NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags';\nconst NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token';\nconst NEXT_RESUME_HEADER = 'next-resume';\nconst NEXT_CACHE_TAG_MAX_ITEMS = 128;\nconst NEXT_CACHE_TAG_MAX_LENGTH = 256;\nconst NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nconst NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_';\nconst CACHE_ONE_YEAR = 31536000;\nconst INFINITE_CACHE = 0xfffffffe;\nconst MIDDLEWARE_FILENAME = 'middleware';\nconst MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\nconst INSTRUMENTATION_HOOK_FILENAME = 'instrumentation';\nconst PAGES_DIR_ALIAS = 'private-next-pages';\nconst DOT_NEXT_ALIAS = 'private-dot-next';\nconst ROOT_DIR_ALIAS = 'private-next-root-dir';\nconst APP_DIR_ALIAS = 'private-next-app-dir';\nconst RSC_MOD_REF_PROXY_ALIAS = 'next/dist/build/webpack/loaders/next-flight-loader/module-proxy';\nconst RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate';\nconst RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference';\nconst RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper';\nconst RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import';\nconst RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption';\nconst RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper';\nconst PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nconst SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nconst SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nconst SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nconst STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nconst SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nconst GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?';\nconst GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?';\nconst UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\\n' + 'Please use `revalidate` instead.';\nconst GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nconst NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nconst SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nconst ESLINT_DEFAULT_DIRS = [\n 'app',\n 'pages',\n 'components',\n 'lib',\n 'src'\n];\nconst SERVER_RUNTIME = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs'\n};\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */ reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */ apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */ apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */ middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */ instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */ edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */ pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */ pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */ pagesDirNode: 'pages-dir-node'\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__'\n};\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBeURMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsNkNBQTZDO0FBQzdDLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msb0JBQW9CO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXGNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEFDVElPTl9TVUZGSVg6IG51bGwsXG4gICAgQVBQX0RJUl9BTElBUzogbnVsbCxcbiAgICBDQUNIRV9PTkVfWUVBUjogbnVsbCxcbiAgICBET1RfTkVYVF9BTElBUzogbnVsbCxcbiAgICBFU0xJTlRfREVGQVVMVF9ESVJTOiBudWxsLFxuICAgIEdTUF9OT19SRVRVUk5FRF9WQUxVRTogbnVsbCxcbiAgICBHU1NQX0NPTVBPTkVOVF9NRU1CRVJfRVJST1I6IG51bGwsXG4gICAgR1NTUF9OT19SRVRVUk5FRF9WQUxVRTogbnVsbCxcbiAgICBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVI6IG51bGwsXG4gICAgSU5GSU5JVEVfQ0FDSEU6IG51bGwsXG4gICAgSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUU6IG51bGwsXG4gICAgSlNPTl9DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIE1BVENIRURfUEFUSF9IRUFERVI6IG51bGwsXG4gICAgTUlERExFV0FSRV9GSUxFTkFNRTogbnVsbCxcbiAgICBNSURETEVXQVJFX0xPQ0FUSU9OX1JFR0VYUDogbnVsbCxcbiAgICBORVhUX0JPRFlfU1VGRklYOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lEOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVI6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVI6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHU19IRUFERVI6IG51bGwsXG4gICAgTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TOiBudWxsLFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg6IG51bGwsXG4gICAgTkVYVF9EQVRBX1NVRkZJWDogbnVsbCxcbiAgICBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYOiBudWxsLFxuICAgIE5FWFRfTUVUQV9TVUZGSVg6IG51bGwsXG4gICAgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVg6IG51bGwsXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBudWxsLFxuICAgIE5PTl9TVEFOREFSRF9OT0RFX0VOVjogbnVsbCxcbiAgICBQQUdFU19ESVJfQUxJQVM6IG51bGwsXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSOiBudWxsLFxuICAgIFBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUjogbnVsbCxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IG51bGwsXG4gICAgUk9PVF9ESVJfQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IG51bGwsXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogbnVsbCxcbiAgICBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTOiBudWxsLFxuICAgIFJTQ19DQUNIRV9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTOiBudWxsLFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBudWxsLFxuICAgIFJTQ19QUkVGRVRDSF9TVUZGSVg6IG51bGwsXG4gICAgUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg6IG51bGwsXG4gICAgUlNDX1NFR01FTlRfU1VGRklYOiBudWxsLFxuICAgIFJTQ19TVUZGSVg6IG51bGwsXG4gICAgU0VSVkVSX1BST1BTX0VYUE9SVF9FUlJPUjogbnVsbCxcbiAgICBTRVJWRVJfUFJPUFNfR0VUX0lOSVRfUFJPUFNfQ09ORkxJQ1Q6IG51bGwsXG4gICAgU0VSVkVSX1BST1BTX1NTR19DT05GTElDVDogbnVsbCxcbiAgICBTRVJWRVJfUlVOVElNRTogbnVsbCxcbiAgICBTU0dfRkFMTEJBQ0tfRVhQT1JUX0VSUk9SOiBudWxsLFxuICAgIFNTR19HRVRfSU5JVElBTF9QUk9QU19DT05GTElDVDogbnVsbCxcbiAgICBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1I6IG51bGwsXG4gICAgVEVYVF9QTEFJTl9DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIFVOU1RBQkxFX1JFVkFMSURBVEVfUkVOQU1FX0VSUk9SOiBudWxsLFxuICAgIFdFQlBBQ0tfTEFZRVJTOiBudWxsLFxuICAgIFdFQlBBQ0tfUkVTT1VSQ0VfUVVFUklFUzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBBQ1RJT05fU1VGRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFDVElPTl9TVUZGSVg7XG4gICAgfSxcbiAgICBBUFBfRElSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFQUF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBDQUNIRV9PTkVfWUVBUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBDQUNIRV9PTkVfWUVBUjtcbiAgICB9LFxuICAgIERPVF9ORVhUX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIERPVF9ORVhUX0FMSUFTO1xuICAgIH0sXG4gICAgRVNMSU5UX0RFRkFVTFRfRElSUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBFU0xJTlRfREVGQVVMVF9ESVJTO1xuICAgIH0sXG4gICAgR1NQX05PX1JFVFVSTkVEX1ZBTFVFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEdTUF9OT19SRVRVUk5FRF9WQUxVRTtcbiAgICB9LFxuICAgIEdTU1BfQ09NUE9ORU5UX01FTUJFUl9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBHU1NQX0NPTVBPTkVOVF9NRU1CRVJfRVJST1I7XG4gICAgfSxcbiAgICBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEdTU1BfTk9fUkVUVVJORURfVkFMVUU7XG4gICAgfSxcbiAgICBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSFRNTF9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgSU5GSU5JVEVfQ0FDSEU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSU5GSU5JVEVfQ0FDSEU7XG4gICAgfSxcbiAgICBJTlNUUlVNRU5UQVRJT05fSE9PS19GSUxFTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJTlNUUlVNRU5UQVRJT05fSE9PS19GSUxFTkFNRTtcbiAgICB9LFxuICAgIEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBKU09OX0NPTlRFTlRfVFlQRV9IRUFERVI7XG4gICAgfSxcbiAgICBNQVRDSEVEX1BBVEhfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1BVENIRURfUEFUSF9IRUFERVI7XG4gICAgfSxcbiAgICBNSURETEVXQVJFX0ZJTEVOQU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1JRERMRVdBUkVfRklMRU5BTUU7XG4gICAgfSxcbiAgICBNSURETEVXQVJFX0xPQ0FUSU9OX1JFR0VYUDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNSURETEVXQVJFX0xPQ0FUSU9OX1JFR0VYUDtcbiAgICB9LFxuICAgIE5FWFRfQk9EWV9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9CT0RZX1NVRkZJWDtcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lEOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lEO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9SRVZBTElEQVRFRF9UQUdTX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVI7XG4gICAgfSxcbiAgICBORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9TT0ZUX1RBR19NQVhfTEVOR1RIO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9UQUdTX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX0NBQ0hFX1RBR1NfSEVBREVSO1xuICAgIH0sXG4gICAgTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUztcbiAgICB9LFxuICAgIE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9DQUNIRV9UQUdfTUFYX0xFTkdUSDtcbiAgICB9LFxuICAgIE5FWFRfREFUQV9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9EQVRBX1NVRkZJWDtcbiAgICB9LFxuICAgIE5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWDtcbiAgICB9LFxuICAgIE5FWFRfTUVUQV9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9NRVRBX1NVRkZJWDtcbiAgICB9LFxuICAgIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUVVFUllfUEFSQU1fUFJFRklYO1xuICAgIH0sXG4gICAgTkVYVF9SRVNVTUVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUkVTVU1FX0hFQURFUjtcbiAgICB9LFxuICAgIE5PTl9TVEFOREFSRF9OT0RFX0VOVjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBOT05fU1RBTkRBUkRfTk9ERV9FTlY7XG4gICAgfSxcbiAgICBQQUdFU19ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUEFHRVNfRElSX0FMSUFTO1xuICAgIH0sXG4gICAgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUjtcbiAgICB9LFxuICAgIFBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUkVSRU5ERVJfUkVWQUxJREFURV9PTkxZX0dFTkVSQVRFRF9IRUFERVI7XG4gICAgfSxcbiAgICBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUFVCTElDX0RJUl9NSURETEVXQVJFX0NPTkZMSUNUO1xuICAgIH0sXG4gICAgUk9PVF9ESVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUk9PVF9ESVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0NMSUVOVF9XUkFQUEVSX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19BQ1RJT05fQ0xJRU5UX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9QUk9YWV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0FDVElPTl9WQUxJREFURV9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVM7XG4gICAgfSxcbiAgICBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfRFlOQU1JQ19JTVBPUlRfV1JBUFBFUl9BTElBUztcbiAgICB9LFxuICAgIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTO1xuICAgIH0sXG4gICAgUlNDX1BSRUZFVENIX1NVRkZJWDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfUFJFRkVUQ0hfU1VGRklYO1xuICAgIH0sXG4gICAgUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRTX0RJUl9TVUZGSVg7XG4gICAgfSxcbiAgICBSU0NfU0VHTUVOVF9TVUZGSVg6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDX1NFR01FTlRfU1VGRklYO1xuICAgIH0sXG4gICAgUlNDX1NVRkZJWDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfU1VGRklYO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9QUk9QU19HRVRfSU5JVF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU0VSVkVSX1BST1BTX1NTR19DT05GTElDVDtcbiAgICB9LFxuICAgIFNFUlZFUl9SVU5USU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNFUlZFUl9SVU5USU1FO1xuICAgIH0sXG4gICAgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTU0dfRkFMTEJBQ0tfRVhQT1JUX0VSUk9SO1xuICAgIH0sXG4gICAgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFNTR19HRVRfSU5JVElBTF9QUk9QU19DT05GTElDVDtcbiAgICB9LFxuICAgIFNUQVRJQ19TVEFUVVNfUEFHRV9HRVRfSU5JVElBTF9QUk9QU19FUlJPUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1I7XG4gICAgfSxcbiAgICBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVEVYVF9QTEFJTl9DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1I7XG4gICAgfSxcbiAgICBXRUJQQUNLX0xBWUVSUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX0xBWUVSUztcbiAgICB9LFxuICAgIFdFQlBBQ0tfUkVTT1VSQ0VfUVVFUklFUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVM7XG4gICAgfVxufSk7XG5jb25zdCBURVhUX1BMQUlOX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9wbGFpbic7XG5jb25zdCBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IEpTT05fQ09OVEVOVF9UWVBFX0hFQURFUiA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbmNvbnN0IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYID0gJ254dFAnO1xuY29uc3QgTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCA9ICdueHRJJztcbmNvbnN0IE1BVENIRURfUEFUSF9IRUFERVIgPSAneC1tYXRjaGVkLXBhdGgnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUnO1xuY29uc3QgUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSID0gJ3gtcHJlcmVuZGVyLXJldmFsaWRhdGUtaWYtZ2VuZXJhdGVkJztcbmNvbnN0IFJTQ19QUkVGRVRDSF9TVUZGSVggPSAnLnByZWZldGNoLnJzYyc7XG5jb25zdCBSU0NfU0VHTUVOVFNfRElSX1NVRkZJWCA9ICcuc2VnbWVudHMnO1xuY29uc3QgUlNDX1NFR01FTlRfU1VGRklYID0gJy5zZWdtZW50LnJzYyc7XG5jb25zdCBSU0NfU1VGRklYID0gJy5yc2MnO1xuY29uc3QgQUNUSU9OX1NVRkZJWCA9ICcuYWN0aW9uJztcbmNvbnN0IE5FWFRfREFUQV9TVUZGSVggPSAnLmpzb24nO1xuY29uc3QgTkVYVF9NRVRBX1NVRkZJWCA9ICcubWV0YSc7XG5jb25zdCBORVhUX0JPRFlfU1VGRklYID0gJy5ib2R5JztcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHU19IRUFERVIgPSAneC1uZXh0LWNhY2hlLXRhZ3MnO1xuY29uc3QgTkVYVF9DQUNIRV9SRVZBTElEQVRFRF9UQUdTX0hFQURFUiA9ICd4LW5leHQtcmV2YWxpZGF0ZWQtdGFncyc7XG5jb25zdCBORVhUX0NBQ0hFX1JFVkFMSURBVEVfVEFHX1RPS0VOX0hFQURFUiA9ICd4LW5leHQtcmV2YWxpZGF0ZS10YWctdG9rZW4nO1xuY29uc3QgTkVYVF9SRVNVTUVfSEVBREVSID0gJ25leHQtcmVzdW1lJztcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9JVEVNUyA9IDEyODtcbmNvbnN0IE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEggPSAyNTY7XG5jb25zdCBORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEggPSAxMDI0O1xuY29uc3QgTkVYVF9DQUNIRV9JTVBMSUNJVF9UQUdfSUQgPSAnX05fVF8nO1xuY29uc3QgQ0FDSEVfT05FX1lFQVIgPSAzMTUzNjAwMDtcbmNvbnN0IElORklOSVRFX0NBQ0hFID0gMHhmZmZmZmZmZTtcbmNvbnN0IE1JRERMRVdBUkVfRklMRU5BTUUgPSAnbWlkZGxld2FyZSc7XG5jb25zdCBNSURETEVXQVJFX0xPQ0FUSU9OX1JFR0VYUCA9IGAoPzpzcmMvKT8ke01JRERMRVdBUkVfRklMRU5BTUV9YDtcbmNvbnN0IElOU1RSVU1FTlRBVElPTl9IT09LX0ZJTEVOQU1FID0gJ2luc3RydW1lbnRhdGlvbic7XG5jb25zdCBQQUdFU19ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXBhZ2VzJztcbmNvbnN0IERPVF9ORVhUX0FMSUFTID0gJ3ByaXZhdGUtZG90LW5leHQnO1xuY29uc3QgUk9PVF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJvb3QtZGlyJztcbmNvbnN0IEFQUF9ESVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LWFwcC1kaXInO1xuY29uc3QgUlNDX01PRF9SRUZfUFJPWFlfQUxJQVMgPSAnbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1sb2FkZXIvbW9kdWxlLXByb3h5JztcbmNvbnN0IFJTQ19BQ1RJT05fVkFMSURBVEVfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1hY3Rpb24tdmFsaWRhdGUnO1xuY29uc3QgUlNDX0FDVElPTl9QUk9YWV9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLXNlcnZlci1yZWZlcmVuY2UnO1xuY29uc3QgUlNDX0NBQ0hFX1dSQVBQRVJfQUxJQVMgPSAncHJpdmF0ZS1uZXh0LXJzYy1jYWNoZS13cmFwcGVyJztcbmNvbnN0IFJTQ19EWU5BTUlDX0lNUE9SVF9XUkFQUEVSX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtdHJhY2stZHluYW1pYy1pbXBvcnQnO1xuY29uc3QgUlNDX0FDVElPTl9FTkNSWVBUSU9OX0FMSUFTID0gJ3ByaXZhdGUtbmV4dC1yc2MtYWN0aW9uLWVuY3J5cHRpb24nO1xuY29uc3QgUlNDX0FDVElPTl9DTElFTlRfV1JBUFBFUl9BTElBUyA9ICdwcml2YXRlLW5leHQtcnNjLWFjdGlvbi1jbGllbnQtd3JhcHBlcic7XG5jb25zdCBQVUJMSUNfRElSX01JRERMRVdBUkVfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgaGF2ZSBhICdfbmV4dCcgZm9sZGVyIGluc2lkZSBvZiB5b3VyIHB1YmxpYyBmb2xkZXIuIFRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGludGVybmFsICcvX25leHQnIHJvdXRlLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wdWJsaWMtbmV4dC1mb2xkZXItY29uZmxpY3RgO1xuY29uc3QgU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUID0gYFlvdSBjYW4gbm90IHVzZSBnZXRJbml0aWFsUHJvcHMgd2l0aCBnZXRTdGF0aWNQcm9wcy4gVG8gdXNlIFNTRywgcGxlYXNlIHJlbW92ZSB5b3VyIGdldEluaXRpYWxQcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfR0VUX0lOSVRfUFJPUFNfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldEluaXRpYWxQcm9wcyB3aXRoIGdldFNlcnZlclNpZGVQcm9wcy4gUGxlYXNlIHJlbW92ZSBnZXRJbml0aWFsUHJvcHMuYDtcbmNvbnN0IFNFUlZFUl9QUk9QU19TU0dfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldFN0YXRpY1Byb3BzIG9yIGdldFN0YXRpY1BhdGhzIHdpdGggZ2V0U2VydmVyU2lkZVByb3BzLiBUbyB1c2UgU1NHLCBwbGVhc2UgcmVtb3ZlIGdldFNlcnZlclNpZGVQcm9wc2A7XG5jb25zdCBTVEFUSUNfU1RBVFVTX1BBR0VfR0VUX0lOSVRJQUxfUFJPUFNfRVJST1IgPSBgY2FuIG5vdCBoYXZlIGdldEluaXRpYWxQcm9wcy9nZXRTZXJ2ZXJTaWRlUHJvcHMsIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzLzQwNC1nZXQtaW5pdGlhbC1wcm9wc2A7XG5jb25zdCBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SID0gYHBhZ2VzIHdpdGggXFxgZ2V0U2VydmVyU2lkZVByb3BzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1leHBvcnRgO1xuY29uc3QgR1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFN0YXRpY1Byb3BzYCBmdW5jdGlvbiBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBhIGByZXR1cm5gPyc7XG5jb25zdCBHU1NQX05PX1JFVFVSTkVEX1ZBTFVFID0gJ1lvdXIgYGdldFNlcnZlclNpZGVQcm9wc2AgZnVuY3Rpb24gZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiBEaWQgeW91IGZvcmdldCB0byBhZGQgYSBgcmV0dXJuYD8nO1xuY29uc3QgVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1IgPSAnVGhlIGB1bnN0YWJsZV9yZXZhbGlkYXRlYCBwcm9wZXJ0eSBpcyBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlLlxcbicgKyAnUGxlYXNlIHVzZSBgcmV2YWxpZGF0ZWAgaW5zdGVhZC4nO1xuY29uc3QgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SID0gYGNhbiBub3QgYmUgYXR0YWNoZWQgdG8gYSBwYWdlJ3MgY29tcG9uZW50IGFuZCBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdGhlIHBhZ2UuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1jb21wb25lbnQtbWVtYmVyYDtcbmNvbnN0IE5PTl9TVEFOREFSRF9OT0RFX0VOViA9IGBZb3UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIFwiTk9ERV9FTlZcIiB2YWx1ZSBpbiB5b3VyIGVudmlyb25tZW50LiBUaGlzIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSBwcm9qZWN0IGFuZCBpcyBzdHJvbmdseSBhZHZpc2VkIGFnYWluc3QuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbm9uLXN0YW5kYXJkLW5vZGUtZW52YDtcbmNvbnN0IFNTR19GQUxMQkFDS19FWFBPUlRfRVJST1IgPSBgUGFnZXMgd2l0aCBcXGBmYWxsYmFja1xcYCBlbmFibGVkIGluIFxcYGdldFN0YXRpY1BhdGhzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3NnLWZhbGxiYWNrLXRydWUtZXhwb3J0YDtcbmNvbnN0IEVTTElOVF9ERUZBVUxUX0RJUlMgPSBbXG4gICAgJ2FwcCcsXG4gICAgJ3BhZ2VzJyxcbiAgICAnY29tcG9uZW50cycsXG4gICAgJ2xpYicsXG4gICAgJ3NyYydcbl07XG5jb25zdCBTRVJWRVJfUlVOVElNRSA9IHtcbiAgICBlZGdlOiAnZWRnZScsXG4gICAgZXhwZXJpbWVudGFsRWRnZTogJ2V4cGVyaW1lbnRhbC1lZGdlJyxcbiAgICBub2RlanM6ICdub2RlanMnXG59O1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHdlYnBhY2sgbGF5ZXJzLiBUaGVzZSBsYXllcnMgYXJlIHRoZSBwcmltaXRpdmVzIGZvciB0aGVcbiAqIHdlYnBhY2sgY2h1bmtzLlxuICovIGNvbnN0IFdFQlBBQ0tfTEFZRVJTX05BTUVTID0ge1xuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBzaGFyZWQgY29kZSBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlciBidW5kbGVzLlxuICAgKi8gc2hhcmVkOiAnc2hhcmVkJyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBzZXJ2ZXItb25seSBydW50aW1lIGFuZCBwaWNraW5nIHVwIGByZWFjdC1zZXJ2ZXJgIGV4cG9ydCBjb25kaXRpb25zLlxuICAgKiBJbmNsdWRpbmcgYXBwIHJvdXRlciBSU0MgcGFnZXMgYW5kIGFwcCByb3V0ZXIgY3VzdG9tIHJvdXRlcyBhbmQgbWV0YWRhdGEgcm91dGVzLlxuICAgKi8gcmVhY3RTZXJ2ZXJDb21wb25lbnRzOiAncnNjJyxcbiAgICAvKipcbiAgICogU2VydmVyIFNpZGUgUmVuZGVyaW5nIGxheWVyIGZvciBhcHAgKHNzcikuXG4gICAqLyBzZXJ2ZXJTaWRlUmVuZGVyaW5nOiAnc3NyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgYWN0aW9ucy5cbiAgICovIGFjdGlvbkJyb3dzZXI6ICdhY3Rpb24tYnJvd3NlcicsXG4gICAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlOb2RlOiAnYXBpLW5vZGUnLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGlFZGdlOiAnYXBpLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIHRoZSBtaWRkbGV3YXJlIGNvZGUuXG4gICAqLyBtaWRkbGV3YXJlOiAnbWlkZGxld2FyZScsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIGluc3RydW1lbnRhdGlvbiBob29rcy5cbiAgICovIGluc3RydW1lbnQ6ICdpbnN0cnVtZW50JyxcbiAgICAvKipcbiAgICogVGhlIGxheWVyIGZvciBhc3NldHMgb24gdGhlIGVkZ2UuXG4gICAqLyBlZGdlQXNzZXQ6ICdlZGdlLWFzc2V0JyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgQXBwIGRpcmVjdG9yeS5cbiAgICovIGFwcFBhZ2VzQnJvd3NlcjogJ2FwcC1wYWdlcy1icm93c2VyJyxcbiAgICAvKipcbiAgICogVGhlIGJyb3dzZXIgY2xpZW50IGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJCcm93c2VyOiAncGFnZXMtZGlyLWJyb3dzZXInLFxuICAgIC8qKlxuICAgKiBUaGUgRWRnZSBMaXRlIGJ1bmRsZSBsYXllciBmb3IgUGFnZXMgZGlyZWN0b3J5LlxuICAgKi8gcGFnZXNEaXJFZGdlOiAncGFnZXMtZGlyLWVkZ2UnLFxuICAgIC8qKlxuICAgKiBUaGUgTm9kZS5qcyBidW5kbGUgbGF5ZXIgZm9yIFBhZ2VzIGRpcmVjdG9yeS5cbiAgICovIHBhZ2VzRGlyTm9kZTogJ3BhZ2VzLWRpci1ub2RlJ1xufTtcbmNvbnN0IFdFQlBBQ0tfTEFZRVJTID0ge1xuICAgIC4uLldFQlBBQ0tfTEFZRVJTX05BTUVTLFxuICAgIEdST1VQOiB7XG4gICAgICAgIGJ1aWx0aW5SZWFjdDogW1xuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMucmVhY3RTZXJ2ZXJDb21wb25lbnRzLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYWN0aW9uQnJvd3NlclxuICAgICAgICBdLFxuICAgICAgICBzZXJ2ZXJPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5yZWFjdFNlcnZlckNvbXBvbmVudHMsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgbmV1dHJhbFRhcmdldDogW1xuICAgICAgICAgICAgLy8gcGFnZXMgYXBpXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcGlOb2RlLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBpRWRnZVxuICAgICAgICBdLFxuICAgICAgICBjbGllbnRPbmx5OiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyXG4gICAgICAgIF0sXG4gICAgICAgIGJ1bmRsZWQ6IFtcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLmFjdGlvbkJyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuc2hhcmVkLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuaW5zdHJ1bWVudCxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLm1pZGRsZXdhcmVcbiAgICAgICAgXSxcbiAgICAgICAgYXBwUGFnZXM6IFtcbiAgICAgICAgICAgIC8vIGFwcCByb3V0ZXIgcGFnZXMgYW5kIGxheW91dHNcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnJlYWN0U2VydmVyQ29tcG9uZW50cyxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLnNlcnZlclNpZGVSZW5kZXJpbmcsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcHBQYWdlc0Jyb3dzZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyXG4gICAgICAgIF1cbiAgICB9XG59O1xuY29uc3QgV0VCUEFDS19SRVNPVVJDRV9RVUVSSUVTID0ge1xuICAgIGVkZ2VTU1JFbnRyeTogJ19fbmV4dF9lZGdlX3Nzcl9lbnRyeV9fJyxcbiAgICBtZXRhZGF0YTogJ19fbmV4dF9tZXRhZGF0YV9fJyxcbiAgICBtZXRhZGF0YVJvdXRlOiAnX19uZXh0X21ldGFkYXRhX3JvdXRlX18nLFxuICAgIG1ldGFkYXRhSW1hZ2VNZXRhOiAnX19uZXh0X21ldGFkYXRhX2ltYWdlX21ldGFfXydcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/constants.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/detached-promise.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/lib/detached-promise.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * A `Promise.withResolvers` implementation that exposes the `resolve` and\n * `reject` functions on a `Promise`.\n *\n * @see https://tc39.es/proposal-promise-with-resolvers/\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"DetachedPromise\", ({\n enumerable: true,\n get: function() {\n return DetachedPromise;\n }\n}));\nclass DetachedPromise {\n constructor(){\n let resolve;\n let reject;\n // Create the promise and assign the resolvers to the object.\n this.promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n // We know that resolvers is defined because the Promise constructor runs\n // synchronously.\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n//# sourceMappingURL=detached-promise.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9kZXRhY2hlZC1wcm9taXNlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixtREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxkZXRhY2hlZC1wcm9taXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBgUHJvbWlzZS53aXRoUmVzb2x2ZXJzYCBpbXBsZW1lbnRhdGlvbiB0aGF0IGV4cG9zZXMgdGhlIGByZXNvbHZlYCBhbmRcbiAqIGByZWplY3RgIGZ1bmN0aW9ucyBvbiBhIGBQcm9taXNlYC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcm9taXNlLXdpdGgtcmVzb2x2ZXJzL1xuICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGV0YWNoZWRQcm9taXNlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBEZXRhY2hlZFByb21pc2U7XG4gICAgfVxufSk7XG5jbGFzcyBEZXRhY2hlZFByb21pc2Uge1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIGxldCByZXNvbHZlO1xuICAgICAgICBsZXQgcmVqZWN0O1xuICAgICAgICAvLyBDcmVhdGUgdGhlIHByb21pc2UgYW5kIGFzc2lnbiB0aGUgcmVzb2x2ZXJzIHRvIHRoZSBvYmplY3QuXG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaik9PntcbiAgICAgICAgICAgIHJlc29sdmUgPSByZXM7XG4gICAgICAgICAgICByZWplY3QgPSByZWo7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSBrbm93IHRoYXQgcmVzb2x2ZXJzIGlzIGRlZmluZWQgYmVjYXVzZSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBydW5zXG4gICAgICAgIC8vIHN5bmNocm9ub3VzbHkuXG4gICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHRoaXMucmVqZWN0ID0gcmVqZWN0O1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV0YWNoZWQtcHJvbWlzZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/detached-promise.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js": /*!*************************************************************!*\ !*** ./node_modules/next/dist/lib/error-telemetry-utils.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createDigestWithErrorCode: function() {\n return createDigestWithErrorCode;\n },\n extractNextErrorCode: function() {\n return extractNextErrorCode;\n }\n});\nconst ERROR_CODE_DELIMITER = '@';\nconst createDigestWithErrorCode = (thrownValue, originalDigest)=>{\n if (typeof thrownValue === 'object' && thrownValue !== null && '__NEXT_ERROR_CODE' in thrownValue) {\n return `${originalDigest}${ERROR_CODE_DELIMITER}${thrownValue.__NEXT_ERROR_CODE}`;\n }\n return originalDigest;\n};\nconst extractNextErrorCode = (error)=>{\n if (typeof error === 'object' && error !== null && '__NEXT_ERROR_CODE' in error && typeof error.__NEXT_ERROR_CODE === 'string') {\n return error.__NEXT_ERROR_CODE;\n }\n if (typeof error === 'object' && error !== null && 'digest' in error && typeof error.digest === 'string') {\n const segments = error.digest.split(ERROR_CODE_DELIMITER);\n const errorCode = segments.find((segment)=>segment.startsWith('E'));\n return errorCode;\n }\n return undefined;\n};\n\n//# sourceMappingURL=error-telemetry-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9lcnJvci10ZWxlbWV0cnktdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEI7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxlcnJvci10ZWxlbWV0cnktdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVEaWdlc3RXaXRoRXJyb3JDb2RlOiBudWxsLFxuICAgIGV4dHJhY3ROZXh0RXJyb3JDb2RlOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRGlnZXN0V2l0aEVycm9yQ29kZTtcbiAgICB9LFxuICAgIGV4dHJhY3ROZXh0RXJyb3JDb2RlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGV4dHJhY3ROZXh0RXJyb3JDb2RlO1xuICAgIH1cbn0pO1xuY29uc3QgRVJST1JfQ09ERV9ERUxJTUlURVIgPSAnQCc7XG5jb25zdCBjcmVhdGVEaWdlc3RXaXRoRXJyb3JDb2RlID0gKHRocm93blZhbHVlLCBvcmlnaW5hbERpZ2VzdCk9PntcbiAgICBpZiAodHlwZW9mIHRocm93blZhbHVlID09PSAnb2JqZWN0JyAmJiB0aHJvd25WYWx1ZSAhPT0gbnVsbCAmJiAnX19ORVhUX0VSUk9SX0NPREUnIGluIHRocm93blZhbHVlKSB7XG4gICAgICAgIHJldHVybiBgJHtvcmlnaW5hbERpZ2VzdH0ke0VSUk9SX0NPREVfREVMSU1JVEVSfSR7dGhyb3duVmFsdWUuX19ORVhUX0VSUk9SX0NPREV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsRGlnZXN0O1xufTtcbmNvbnN0IGV4dHJhY3ROZXh0RXJyb3JDb2RlID0gKGVycm9yKT0+e1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmICdfX05FWFRfRVJST1JfQ09ERScgaW4gZXJyb3IgJiYgdHlwZW9mIGVycm9yLl9fTkVYVF9FUlJPUl9DT0RFID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gZXJyb3IuX19ORVhUX0VSUk9SX0NPREU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmICdkaWdlc3QnIGluIGVycm9yICYmIHR5cGVvZiBlcnJvci5kaWdlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gZXJyb3IuZGlnZXN0LnNwbGl0KEVSUk9SX0NPREVfREVMSU1JVEVSKTtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gc2VnbWVudHMuZmluZCgoc2VnbWVudCk9PnNlZ21lbnQuc3RhcnRzV2l0aCgnRScpKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ29kZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yLXRlbGVtZXRyeS11dGlscy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/fallback.js": /*!************************************************!*\ !*** ./node_modules/next/dist/lib/fallback.js ***! \************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Describes the different fallback modes that a given page can have.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n FallbackMode: function() {\n return FallbackMode;\n },\n fallbackModeToFallbackField: function() {\n return fallbackModeToFallbackField;\n },\n parseFallbackField: function() {\n return parseFallbackField;\n },\n parseStaticPathsResult: function() {\n return parseStaticPathsResult;\n }\n});\nvar FallbackMode = /*#__PURE__*/ function(FallbackMode) {\n /**\n * A BLOCKING_STATIC_RENDER fallback will block the request until the page is\n * generated. No fallback page will be rendered, and users will have to wait\n * to render the page.\n */ FallbackMode[\"BLOCKING_STATIC_RENDER\"] = \"BLOCKING_STATIC_RENDER\";\n /**\n * When set to PRERENDER, a fallback page will be sent to users in place of\n * forcing them to wait for the page to be generated. This allows the user to\n * see a rendered page earlier.\n */ FallbackMode[\"PRERENDER\"] = \"PRERENDER\";\n /**\n * When set to NOT_FOUND, pages that are not already prerendered will result\n * in a not found response.\n */ FallbackMode[\"NOT_FOUND\"] = \"NOT_FOUND\";\n return FallbackMode;\n}({});\nfunction parseFallbackField(fallbackField) {\n if (typeof fallbackField === 'string') {\n return \"PRERENDER\";\n } else if (fallbackField === null) {\n return \"BLOCKING_STATIC_RENDER\";\n } else if (fallbackField === false) {\n return \"NOT_FOUND\";\n } else if (fallbackField === undefined) {\n return undefined;\n } else {\n throw Object.defineProperty(new Error(`Invalid fallback option: ${fallbackField}. Fallback option must be a string, null, undefined, or false.`), \"__NEXT_ERROR_CODE\", {\n value: \"E285\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction fallbackModeToFallbackField(fallback, page) {\n switch(fallback){\n case \"BLOCKING_STATIC_RENDER\":\n return null;\n case \"NOT_FOUND\":\n return false;\n case \"PRERENDER\":\n if (!page) {\n throw Object.defineProperty(new Error(`Invariant: expected a page to be provided when fallback mode is \"${fallback}\"`), \"__NEXT_ERROR_CODE\", {\n value: \"E422\",\n enumerable: false,\n configurable: true\n });\n }\n return page;\n default:\n throw Object.defineProperty(new Error(`Invalid fallback mode: ${fallback}`), \"__NEXT_ERROR_CODE\", {\n value: \"E254\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction parseStaticPathsResult(result) {\n if (result === true) {\n return \"PRERENDER\";\n } else if (result === 'blocking') {\n return \"BLOCKING_STATIC_RENDER\";\n } else {\n return \"NOT_FOUND\";\n }\n}\n\n//# sourceMappingURL=fallback.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mYWxsYmFjay5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTiwwRUFBMEUsY0FBYztBQUN4RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwSEFBMEgsU0FBUztBQUNuSTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLFNBQVM7QUFDckY7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXGZhbGxiYWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVzY3JpYmVzIHRoZSBkaWZmZXJlbnQgZmFsbGJhY2sgbW9kZXMgdGhhdCBhIGdpdmVuIHBhZ2UgY2FuIGhhdmUuXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBGYWxsYmFja01vZGU6IG51bGwsXG4gICAgZmFsbGJhY2tNb2RlVG9GYWxsYmFja0ZpZWxkOiBudWxsLFxuICAgIHBhcnNlRmFsbGJhY2tGaWVsZDogbnVsbCxcbiAgICBwYXJzZVN0YXRpY1BhdGhzUmVzdWx0OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEZhbGxiYWNrTW9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBGYWxsYmFja01vZGU7XG4gICAgfSxcbiAgICBmYWxsYmFja01vZGVUb0ZhbGxiYWNrRmllbGQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZmFsbGJhY2tNb2RlVG9GYWxsYmFja0ZpZWxkO1xuICAgIH0sXG4gICAgcGFyc2VGYWxsYmFja0ZpZWxkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmFsbGJhY2tGaWVsZDtcbiAgICB9LFxuICAgIHBhcnNlU3RhdGljUGF0aHNSZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VTdGF0aWNQYXRoc1Jlc3VsdDtcbiAgICB9XG59KTtcbnZhciBGYWxsYmFja01vZGUgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKEZhbGxiYWNrTW9kZSkge1xuICAgIC8qKlxuICAgKiBBIEJMT0NLSU5HX1NUQVRJQ19SRU5ERVIgZmFsbGJhY2sgd2lsbCBibG9jayB0aGUgcmVxdWVzdCB1bnRpbCB0aGUgcGFnZSBpc1xuICAgKiBnZW5lcmF0ZWQuIE5vIGZhbGxiYWNrIHBhZ2Ugd2lsbCBiZSByZW5kZXJlZCwgYW5kIHVzZXJzIHdpbGwgaGF2ZSB0byB3YWl0XG4gICAqIHRvIHJlbmRlciB0aGUgcGFnZS5cbiAgICovIEZhbGxiYWNrTW9kZVtcIkJMT0NLSU5HX1NUQVRJQ19SRU5ERVJcIl0gPSBcIkJMT0NLSU5HX1NUQVRJQ19SRU5ERVJcIjtcbiAgICAvKipcbiAgICogV2hlbiBzZXQgdG8gUFJFUkVOREVSLCBhIGZhbGxiYWNrIHBhZ2Ugd2lsbCBiZSBzZW50IHRvIHVzZXJzIGluIHBsYWNlIG9mXG4gICAqIGZvcmNpbmcgdGhlbSB0byB3YWl0IGZvciB0aGUgcGFnZSB0byBiZSBnZW5lcmF0ZWQuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvXG4gICAqIHNlZSBhIHJlbmRlcmVkIHBhZ2UgZWFybGllci5cbiAgICovIEZhbGxiYWNrTW9kZVtcIlBSRVJFTkRFUlwiXSA9IFwiUFJFUkVOREVSXCI7XG4gICAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIE5PVF9GT1VORCwgcGFnZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgcHJlcmVuZGVyZWQgd2lsbCByZXN1bHRcbiAgICogaW4gYSBub3QgZm91bmQgcmVzcG9uc2UuXG4gICAqLyBGYWxsYmFja01vZGVbXCJOT1RfRk9VTkRcIl0gPSBcIk5PVF9GT1VORFwiO1xuICAgIHJldHVybiBGYWxsYmFja01vZGU7XG59KHt9KTtcbmZ1bmN0aW9uIHBhcnNlRmFsbGJhY2tGaWVsZChmYWxsYmFja0ZpZWxkKSB7XG4gICAgaWYgKHR5cGVvZiBmYWxsYmFja0ZpZWxkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gXCJQUkVSRU5ERVJcIjtcbiAgICB9IGVsc2UgaWYgKGZhbGxiYWNrRmllbGQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFwiQkxPQ0tJTkdfU1RBVElDX1JFTkRFUlwiO1xuICAgIH0gZWxzZSBpZiAoZmFsbGJhY2tGaWVsZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIFwiTk9UX0ZPVU5EXCI7XG4gICAgfSBlbHNlIGlmIChmYWxsYmFja0ZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIGZhbGxiYWNrIG9wdGlvbjogJHtmYWxsYmFja0ZpZWxkfS4gRmFsbGJhY2sgb3B0aW9uIG11c3QgYmUgYSBzdHJpbmcsIG51bGwsIHVuZGVmaW5lZCwgb3IgZmFsc2UuYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTI4NVwiLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZmFsbGJhY2tNb2RlVG9GYWxsYmFja0ZpZWxkKGZhbGxiYWNrLCBwYWdlKSB7XG4gICAgc3dpdGNoKGZhbGxiYWNrKXtcbiAgICAgICAgY2FzZSBcIkJMT0NLSU5HX1NUQVRJQ19SRU5ERVJcIjpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlIFwiTk9UX0ZPVU5EXCI6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNhc2UgXCJQUkVSRU5ERVJcIjpcbiAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFyaWFudDogZXhwZWN0ZWQgYSBwYWdlIHRvIGJlIHByb3ZpZGVkIHdoZW4gZmFsbGJhY2sgbW9kZSBpcyBcIiR7ZmFsbGJhY2t9XCJgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU0MjJcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhZ2U7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIGZhbGxiYWNrIG1vZGU6ICR7ZmFsbGJhY2t9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUyNTRcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHBhcnNlU3RhdGljUGF0aHNSZXN1bHQocmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gXCJQUkVSRU5ERVJcIjtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ2Jsb2NraW5nJykge1xuICAgICAgICByZXR1cm4gXCJCTE9DS0lOR19TVEFUSUNfUkVOREVSXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiTk9UX0ZPVU5EXCI7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/fallback.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/format-server-error.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/lib/format-server-error.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatServerError: function() {\n return formatServerError;\n },\n getStackWithoutErrorMessage: function() {\n return getStackWithoutErrorMessage;\n }\n});\nconst invalidServerComponentReactHooks = [\n 'useDeferredValue',\n 'useEffect',\n 'useImperativeHandle',\n 'useInsertionEffect',\n 'useLayoutEffect',\n 'useReducer',\n 'useRef',\n 'useState',\n 'useSyncExternalStore',\n 'useTransition',\n 'experimental_useOptimistic',\n 'useOptimistic'\n];\nfunction setMessage(error, message) {\n error.message = message;\n if (error.stack) {\n const lines = error.stack.split('\\n');\n lines[0] = message;\n error.stack = lines.join('\\n');\n }\n}\nfunction getStackWithoutErrorMessage(error) {\n const stack = error.stack;\n if (!stack) return '';\n return stack.replace(/^[^\\n]*\\n/, '');\n}\nfunction formatServerError(error) {\n if (typeof (error == null ? void 0 : error.message) !== 'string') return;\n if (error.message.includes('Class extends value undefined is not a constructor or null')) {\n const addedMessage = 'This might be caused by a React Class Component being rendered in a Server Component, React Class Components only works in Client Components. Read more: https://nextjs.org/docs/messages/class-component-in-server-component';\n // If this error instance already has the message, don't add it again\n if (error.message.includes(addedMessage)) return;\n setMessage(error, `${error.message}\n\n${addedMessage}`);\n return;\n }\n if (error.message.includes('createContext is not a function')) {\n setMessage(error, 'createContext only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/context-in-server-component');\n return;\n }\n for (const clientHook of invalidServerComponentReactHooks){\n const regex = new RegExp(`\\\\b${clientHook}\\\\b.*is not a function`);\n if (regex.test(error.message)) {\n setMessage(error, `${clientHook} only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component`);\n return;\n }\n }\n} //# sourceMappingURL=format-server-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mb3JtYXQtc2VydmVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXdDZ0JBLGlCQUFpQjtlQUFqQkE7O0lBTkFDLDJCQUEyQjtlQUEzQkE7OztBQWxDaEIsTUFBTUMsbUNBQW1DO0lBQ3ZDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsU0FBU0MsV0FBV0MsS0FBWSxFQUFFQyxPQUFlO0lBQy9DRCxNQUFNQyxPQUFPLEdBQUdBO0lBQ2hCLElBQUlELE1BQU1FLEtBQUssRUFBRTtRQUNmLE1BQU1DLFFBQVFILE1BQU1FLEtBQUssQ0FBQ0UsS0FBSyxDQUFDO1FBQ2hDRCxLQUFLLENBQUMsRUFBRSxHQUFHRjtRQUNYRCxNQUFNRSxLQUFLLEdBQUdDLE1BQU1FLElBQUksQ0FBQztJQUMzQjtBQUNGO0FBWU8sU0FBU1IsNEJBQTRCRyxLQUFZO0lBQ3RELE1BQU1FLFFBQVFGLE1BQU1FLEtBQUs7SUFDekIsSUFBSSxDQUFDQSxPQUFPLE9BQU87SUFDbkIsT0FBT0EsTUFBTUksT0FBTyxDQUFDLGFBQWE7QUFDcEM7QUFFTyxTQUFTVixrQkFBa0JJLEtBQVk7SUFDNUMsSUFBSSxRQUFPQSxTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPQyxPQUFBQSxNQUFZLFVBQVU7SUFFeEMsSUFDRUQsTUFBTUMsT0FBTyxDQUFDTSxRQUFRLENBQ3BCLCtEQUVGO1FBQ0EsTUFBTUMsZUFDSjtRQUVGLHFFQUFxRTtRQUNyRSxJQUFJUixNQUFNQyxPQUFPLENBQUNNLFFBQVEsQ0FBQ0MsZUFBZTtRQUUxQ1QsV0FDRUMsT0FDQSxHQUFHQSxNQUFNQyxPQUFPLENBQUM7O0FBRXZCLEVBQUVPLGNBQWM7UUFFWjtJQUNGO0lBRUEsSUFBSVIsTUFBTUMsT0FBTyxDQUFDTSxRQUFRLENBQUMsb0NBQW9DO1FBQzdEUixXQUNFQyxPQUNBO1FBRUY7SUFDRjtJQUVBLEtBQUssTUFBTVMsY0FBY1gsaUNBQWtDO1FBQ3pELE1BQU1ZLFFBQVEsSUFBSUMsT0FBTyxDQUFDLEdBQUcsRUFBRUYsV0FBVyxzQkFBc0IsQ0FBQztRQUNqRSxJQUFJQyxNQUFNRSxJQUFJLENBQUNaLE1BQU1DLE9BQU8sR0FBRztZQUM3QkYsV0FDRUMsT0FDQSxHQUFHUyxXQUFXLG9MQUFvTCxDQUFDO1lBRXJNO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcc3JjXFxsaWJcXGZvcm1hdC1zZXJ2ZXItZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaW52YWxpZFNlcnZlckNvbXBvbmVudFJlYWN0SG9va3MgPSBbXG4gICd1c2VEZWZlcnJlZFZhbHVlJyxcbiAgJ3VzZUVmZmVjdCcsXG4gICd1c2VJbXBlcmF0aXZlSGFuZGxlJyxcbiAgJ3VzZUluc2VydGlvbkVmZmVjdCcsXG4gICd1c2VMYXlvdXRFZmZlY3QnLFxuICAndXNlUmVkdWNlcicsXG4gICd1c2VSZWYnLFxuICAndXNlU3RhdGUnLFxuICAndXNlU3luY0V4dGVybmFsU3RvcmUnLFxuICAndXNlVHJhbnNpdGlvbicsXG4gICdleHBlcmltZW50YWxfdXNlT3B0aW1pc3RpYycsXG4gICd1c2VPcHRpbWlzdGljJyxcbl1cblxuZnVuY3Rpb24gc2V0TWVzc2FnZShlcnJvcjogRXJyb3IsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBlcnJvci5tZXNzYWdlID0gbWVzc2FnZVxuICBpZiAoZXJyb3Iuc3RhY2spIHtcbiAgICBjb25zdCBsaW5lcyA9IGVycm9yLnN0YWNrLnNwbGl0KCdcXG4nKVxuICAgIGxpbmVzWzBdID0gbWVzc2FnZVxuICAgIGVycm9yLnN0YWNrID0gbGluZXMuam9pbignXFxuJylcbiAgfVxufVxuXG4vKipcbiAqIElucHV0OlxuICogRXJyb3I6IFNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgYXQgZnVuY05hbWUgKC9wYXRoL3RvL2ZpbGUuanM6MTA6NSlcbiAgICBhdCBhbm90aGVyRnVuYyAoL3BhdGgvdG8vZmlsZS5qczoxNToxMClcbiBcbiAqIE91dHB1dDpcbiAgICBhdCBmdW5jTmFtZSAoL3BhdGgvdG8vZmlsZS5qczoxMDo1KVxuICAgIGF0IGFub3RoZXJGdW5jICgvcGF0aC90by9maWxlLmpzOjE1OjEwKSBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YWNrV2l0aG91dEVycm9yTWVzc2FnZShlcnJvcjogRXJyb3IpOiBzdHJpbmcge1xuICBjb25zdCBzdGFjayA9IGVycm9yLnN0YWNrXG4gIGlmICghc3RhY2spIHJldHVybiAnJ1xuICByZXR1cm4gc3RhY2sucmVwbGFjZSgvXlteXFxuXSpcXG4vLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNlcnZlckVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xuICBpZiAodHlwZW9mIGVycm9yPy5tZXNzYWdlICE9PSAnc3RyaW5nJykgcmV0dXJuXG5cbiAgaWYgKFxuICAgIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXG4gICAgICAnQ2xhc3MgZXh0ZW5kcyB2YWx1ZSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCdcbiAgICApXG4gICkge1xuICAgIGNvbnN0IGFkZGVkTWVzc2FnZSA9XG4gICAgICAnVGhpcyBtaWdodCBiZSBjYXVzZWQgYnkgYSBSZWFjdCBDbGFzcyBDb21wb25lbnQgYmVpbmcgcmVuZGVyZWQgaW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCBSZWFjdCBDbGFzcyBDb21wb25lbnRzIG9ubHkgd29ya3MgaW4gQ2xpZW50IENvbXBvbmVudHMuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY2xhc3MtY29tcG9uZW50LWluLXNlcnZlci1jb21wb25lbnQnXG5cbiAgICAvLyBJZiB0aGlzIGVycm9yIGluc3RhbmNlIGFscmVhZHkgaGFzIHRoZSBtZXNzYWdlLCBkb24ndCBhZGQgaXQgYWdhaW5cbiAgICBpZiAoZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhhZGRlZE1lc3NhZ2UpKSByZXR1cm5cblxuICAgIHNldE1lc3NhZ2UoXG4gICAgICBlcnJvcixcbiAgICAgIGAke2Vycm9yLm1lc3NhZ2V9XG5cbiR7YWRkZWRNZXNzYWdlfWBcbiAgICApXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnY3JlYXRlQ29udGV4dCBpcyBub3QgYSBmdW5jdGlvbicpKSB7XG4gICAgc2V0TWVzc2FnZShcbiAgICAgIGVycm9yLFxuICAgICAgJ2NyZWF0ZUNvbnRleHQgb25seSB3b3JrcyBpbiBDbGllbnQgQ29tcG9uZW50cy4gQWRkIHRoZSBcInVzZSBjbGllbnRcIiBkaXJlY3RpdmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1c2UgaXQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY29udGV4dC1pbi1zZXJ2ZXItY29tcG9uZW50J1xuICAgIClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZvciAoY29uc3QgY2xpZW50SG9vayBvZiBpbnZhbGlkU2VydmVyQ29tcG9uZW50UmVhY3RIb29rcykge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXGIke2NsaWVudEhvb2t9XFxcXGIuKmlzIG5vdCBhIGZ1bmN0aW9uYClcbiAgICBpZiAocmVnZXgudGVzdChlcnJvci5tZXNzYWdlKSkge1xuICAgICAgc2V0TWVzc2FnZShcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGAke2NsaWVudEhvb2t9IG9ubHkgd29ya3MgaW4gQ2xpZW50IENvbXBvbmVudHMuIEFkZCB0aGUgXCJ1c2UgY2xpZW50XCIgZGlyZWN0aXZlIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgdG8gdXNlIGl0LiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3JlYWN0LWNsaWVudC1ob29rLWluLXNlcnZlci1jb21wb25lbnRgXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRTZXJ2ZXJFcnJvciIsImdldFN0YWNrV2l0aG91dEVycm9yTWVzc2FnZSIsImludmFsaWRTZXJ2ZXJDb21wb25lbnRSZWFjdEhvb2tzIiwic2V0TWVzc2FnZSIsImVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwibGluZXMiLCJzcGxpdCIsImpvaW4iLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJhZGRlZE1lc3NhZ2UiLCJjbGllbnRIb29rIiwicmVnZXgiLCJSZWdFeHAiLCJ0ZXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/format-server-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/lib/framework/boundary-components.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\lib\\\\framework\\\\boundary-components.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZXMiOlsiX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzL19fbmV4dGpzLWludGVybmFsLXByb3h5LmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBXZWJwYWNrIG5leHQtZmxpZ2h0LWxvYWRlci5cbmNvbnN0IHsgY3JlYXRlUHJveHkgfSA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWxvYWRlci9tb2R1bGUtcHJveHlcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVQcm94eShcIkQ6XFxcXEdJVF9IT01FXFxcXEVQRUVBSUtpdFxcXFxhcnQtYWdlbnRcXFxcZnJvbnRlbmRcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxsaWJcXFxcZnJhbWV3b3JrXFxcXGJvdW5kYXJ5LWNvbXBvbmVudHMuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/lib/framework/boundary-constants.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n METADATA_BOUNDARY_NAME: function() {\n return METADATA_BOUNDARY_NAME;\n },\n OUTLET_BOUNDARY_NAME: function() {\n return OUTLET_BOUNDARY_NAME;\n },\n ROOT_LAYOUT_BOUNDARY_NAME: function() {\n return ROOT_LAYOUT_BOUNDARY_NAME;\n },\n VIEWPORT_BOUNDARY_NAME: function() {\n return VIEWPORT_BOUNDARY_NAME;\n }\n});\nconst METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nconst VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nconst OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nconst ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxmcmFtZXdvcmtcXGJvdW5kYXJ5LWNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgT1VUTEVUX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTogbnVsbCxcbiAgICBWSUVXUE9SVF9CT1VOREFSWV9OQU1FOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTUVUQURBVEFfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIE9VVExFVF9CT1VOREFSWV9OQU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE9VVExFVF9CT1VOREFSWV9OQU1FO1xuICAgIH0sXG4gICAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FO1xuICAgIH0sXG4gICAgVklFV1BPUlRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBWSUVXUE9SVF9CT1VOREFSWV9OQU1FO1xuICAgIH1cbn0pO1xuY29uc3QgTUVUQURBVEFfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfbWV0YWRhdGFfYm91bmRhcnlfXyc7XG5jb25zdCBWSUVXUE9SVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF92aWV3cG9ydF9ib3VuZGFyeV9fJztcbmNvbnN0IE9VVExFVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9vdXRsZXRfYm91bmRhcnlfXyc7XG5jb25zdCBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9yb290X2xheW91dF9ib3VuZGFyeV9fJztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Ym91bmRhcnktY29uc3RhbnRzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/interop-default.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/lib/interop-default.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"interopDefault\", ({\n enumerable: true,\n get: function() {\n return interopDefault;\n }\n}));\nfunction interopDefault(mod) {\n return mod.default || mod;\n}\n\n//# sourceMappingURL=interop-default.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pbnRlcm9wLWRlZmF1bHQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixrREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcaW50ZXJvcC1kZWZhdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaW50ZXJvcERlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGludGVyb3BEZWZhdWx0O1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gaW50ZXJvcERlZmF1bHQobW9kKSB7XG4gICAgcmV0dXJuIG1vZC5kZWZhdWx0IHx8IG1vZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJvcC1kZWZhdWx0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/interop-default.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/is-error.js": /*!************************************************!*\ !*** ./node_modules/next/dist/lib/is-error.js ***! \************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ default: function() {\n return isError;\n },\n getProperError: function() {\n return getProperError;\n }\n});\nconst _isplainobject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js\");\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction safeStringify(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error((0, _isplainobject.isPlainObject)(err) ? safeStringify(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx1QkFBdUIsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFzQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXGlzLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBnZXRQcm9wZXJFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICAvKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIE5leHRFcnJvci5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJpbnQgYSBtb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCBwcm9wZXJ0aWVzIGxpa2UgYGNvZGVgICYgYGRpZ2VzdGAuXG4gKi8gZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0Vycm9yO1xuICAgIH0sXG4gICAgZ2V0UHJvcGVyRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0UHJvcGVyRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfaXNwbGFpbm9iamVjdCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2lzLXBsYWluLW9iamVjdFwiKTtcbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZXJyICYmICdtZXNzYWdlJyBpbiBlcnI7XG59XG5mdW5jdGlvbiBzYWZlU3RyaW5naWZ5KG9iaikge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIChfa2V5LCB2YWx1ZSk9PntcbiAgICAgICAgLy8gSWYgdmFsdWUgaXMgYW4gb2JqZWN0IGFuZCBhbHJlYWR5IHNlZW4sIHJlcGxhY2Ugd2l0aCBcIltDaXJjdWxhcl1cIlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0UHJvcGVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKGlzRXJyb3IoZXJyKSkge1xuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgLy8gcHJvdmlkZSBiZXR0ZXIgZXJyb3IgZm9yIGNhc2Ugd2hlcmUgYHRocm93IHVuZGVmaW5lZGBcbiAgICAgICAgLy8gaXMgY2FsbGVkIGluIGRldmVsb3BtZW50XG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0FuIHVuZGVmaW5lZCBlcnJvciB3YXMgdGhyb3duLCAnICsgJ3NlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFOThcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdBIG51bGwgZXJyb3Igd2FzIHRocm93biwgJyArICdzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy90aHJldy11bmRlZmluZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTMzNlwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoKDAsIF9pc3BsYWlub2JqZWN0LmlzUGxhaW5PYmplY3QpKGVycikgPyBzYWZlU3RyaW5naWZ5KGVycikgOiBlcnIgKyAnJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/is-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/clone-metadata.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/clone-metadata.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"cloneMetadata\", ({\n enumerable: true,\n get: function() {\n return cloneMetadata;\n }\n}));\nconst TYPE_URL = '__METADATA_URL';\nfunction replacer(_key, val) {\n // clone URL as string but recover it as URL\n if (val instanceof URL) {\n return {\n _type: TYPE_URL,\n value: val.href\n };\n }\n return val;\n}\nfunction reviver(_key, val) {\n if (typeof val === 'object' && val !== null && val._type === TYPE_URL) {\n return new URL(val.value);\n }\n return val;\n}\nfunction cloneMetadata(metadata) {\n const jsonString = JSON.stringify(metadata, replacer);\n return JSON.parse(jsonString, reviver);\n}\n\n//# sourceMappingURL=clone-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9jbG9uZS1tZXRhZGF0YS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGlEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxcY2xvbmUtbWV0YWRhdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjbG9uZU1ldGFkYXRhXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjbG9uZU1ldGFkYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgVFlQRV9VUkwgPSAnX19NRVRBREFUQV9VUkwnO1xuZnVuY3Rpb24gcmVwbGFjZXIoX2tleSwgdmFsKSB7XG4gICAgLy8gY2xvbmUgVVJMIGFzIHN0cmluZyBidXQgcmVjb3ZlciBpdCBhcyBVUkxcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgVVJMKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBfdHlwZTogVFlQRV9VUkwsXG4gICAgICAgICAgICB2YWx1ZTogdmFsLmhyZWZcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbn1cbmZ1bmN0aW9uIHJldml2ZXIoX2tleSwgdmFsKSB7XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiB2YWwuX3R5cGUgPT09IFRZUEVfVVJMKSB7XG4gICAgICAgIHJldHVybiBuZXcgVVJMKHZhbC52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBjbG9uZU1ldGFkYXRhKG1ldGFkYXRhKSB7XG4gICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1ldGFkYXRhLCByZXBsYWNlcik7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblN0cmluZywgcmV2aXZlcik7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLW1ldGFkYXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/clone-metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/constants.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/constants.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n IconKeys: function() {\n return IconKeys;\n },\n ViewportMetaKeys: function() {\n return ViewportMetaKeys;\n }\n});\nconst ViewportMetaKeys = {\n width: 'width',\n height: 'height',\n initialScale: 'initial-scale',\n minimumScale: 'minimum-scale',\n maximumScale: 'maximum-scale',\n viewportFit: 'viewport-fit',\n userScalable: 'user-scalable',\n interactiveWidget: 'interactive-widget'\n};\nconst IconKeys = [\n 'icon',\n 'shortcut',\n 'apple',\n 'other'\n];\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9jb25zdGFudHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcbWV0YWRhdGFcXGNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEljb25LZXlzOiBudWxsLFxuICAgIFZpZXdwb3J0TWV0YUtleXM6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgSWNvbktleXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSWNvbktleXM7XG4gICAgfSxcbiAgICBWaWV3cG9ydE1ldGFLZXlzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFZpZXdwb3J0TWV0YUtleXM7XG4gICAgfVxufSk7XG5jb25zdCBWaWV3cG9ydE1ldGFLZXlzID0ge1xuICAgIHdpZHRoOiAnd2lkdGgnLFxuICAgIGhlaWdodDogJ2hlaWdodCcsXG4gICAgaW5pdGlhbFNjYWxlOiAnaW5pdGlhbC1zY2FsZScsXG4gICAgbWluaW11bVNjYWxlOiAnbWluaW11bS1zY2FsZScsXG4gICAgbWF4aW11bVNjYWxlOiAnbWF4aW11bS1zY2FsZScsXG4gICAgdmlld3BvcnRGaXQ6ICd2aWV3cG9ydC1maXQnLFxuICAgIHVzZXJTY2FsYWJsZTogJ3VzZXItc2NhbGFibGUnLFxuICAgIGludGVyYWN0aXZlV2lkZ2V0OiAnaW50ZXJhY3RpdmUtd2lkZ2V0J1xufTtcbmNvbnN0IEljb25LZXlzID0gW1xuICAgICdpY29uJyxcbiAgICAnc2hvcnRjdXQnLFxuICAgICdhcHBsZScsXG4gICAgJ290aGVyJ1xuXTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/constants.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/default-metadata.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createDefaultMetadata: function() {\n return createDefaultMetadata;\n },\n createDefaultViewport: function() {\n return createDefaultViewport;\n }\n});\nfunction createDefaultViewport() {\n return {\n // name=viewport\n width: 'device-width',\n initialScale: 1,\n // visual metadata\n themeColor: null,\n colorScheme: null\n };\n}\nfunction createDefaultMetadata() {\n return {\n // Deprecated ones\n viewport: null,\n themeColor: null,\n colorScheme: null,\n metadataBase: null,\n // Other values are all null\n title: null,\n description: null,\n applicationName: null,\n authors: null,\n generator: null,\n keywords: null,\n referrer: null,\n creator: null,\n publisher: null,\n robots: null,\n manifest: null,\n alternates: {\n canonical: null,\n languages: null,\n media: null,\n types: null\n },\n icons: null,\n openGraph: null,\n twitter: null,\n verification: {},\n appleWebApp: null,\n formatDetection: null,\n itunes: null,\n facebook: null,\n pinterest: null,\n abstract: null,\n appLinks: null,\n archives: null,\n assets: null,\n bookmarks: null,\n category: null,\n classification: null,\n pagination: {\n previous: null,\n next: null\n },\n other: {}\n };\n}\n\n//# sourceMappingURL=default-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9kZWZhdWx0LW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxkZWZhdWx0LW1ldGFkYXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlRGVmYXVsdE1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZURlZmF1bHRWaWV3cG9ydDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVEZWZhdWx0TWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRGVmYXVsdE1ldGFkYXRhO1xuICAgIH0sXG4gICAgY3JlYXRlRGVmYXVsdFZpZXdwb3J0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURlZmF1bHRWaWV3cG9ydDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRWaWV3cG9ydCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBuYW1lPXZpZXdwb3J0XG4gICAgICAgIHdpZHRoOiAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgaW5pdGlhbFNjYWxlOiAxLFxuICAgICAgICAvLyB2aXN1YWwgbWV0YWRhdGFcbiAgICAgICAgdGhlbWVDb2xvcjogbnVsbCxcbiAgICAgICAgY29sb3JTY2hlbWU6IG51bGxcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdE1ldGFkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIC8vIERlcHJlY2F0ZWQgb25lc1xuICAgICAgICB2aWV3cG9ydDogbnVsbCxcbiAgICAgICAgdGhlbWVDb2xvcjogbnVsbCxcbiAgICAgICAgY29sb3JTY2hlbWU6IG51bGwsXG4gICAgICAgIG1ldGFkYXRhQmFzZTogbnVsbCxcbiAgICAgICAgLy8gT3RoZXIgdmFsdWVzIGFyZSBhbGwgbnVsbFxuICAgICAgICB0aXRsZTogbnVsbCxcbiAgICAgICAgZGVzY3JpcHRpb246IG51bGwsXG4gICAgICAgIGFwcGxpY2F0aW9uTmFtZTogbnVsbCxcbiAgICAgICAgYXV0aG9yczogbnVsbCxcbiAgICAgICAgZ2VuZXJhdG9yOiBudWxsLFxuICAgICAgICBrZXl3b3JkczogbnVsbCxcbiAgICAgICAgcmVmZXJyZXI6IG51bGwsXG4gICAgICAgIGNyZWF0b3I6IG51bGwsXG4gICAgICAgIHB1Ymxpc2hlcjogbnVsbCxcbiAgICAgICAgcm9ib3RzOiBudWxsLFxuICAgICAgICBtYW5pZmVzdDogbnVsbCxcbiAgICAgICAgYWx0ZXJuYXRlczoge1xuICAgICAgICAgICAgY2Fub25pY2FsOiBudWxsLFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBudWxsLFxuICAgICAgICAgICAgbWVkaWE6IG51bGwsXG4gICAgICAgICAgICB0eXBlczogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBpY29uczogbnVsbCxcbiAgICAgICAgb3BlbkdyYXBoOiBudWxsLFxuICAgICAgICB0d2l0dGVyOiBudWxsLFxuICAgICAgICB2ZXJpZmljYXRpb246IHt9LFxuICAgICAgICBhcHBsZVdlYkFwcDogbnVsbCxcbiAgICAgICAgZm9ybWF0RGV0ZWN0aW9uOiBudWxsLFxuICAgICAgICBpdHVuZXM6IG51bGwsXG4gICAgICAgIGZhY2Vib29rOiBudWxsLFxuICAgICAgICBwaW50ZXJlc3Q6IG51bGwsXG4gICAgICAgIGFic3RyYWN0OiBudWxsLFxuICAgICAgICBhcHBMaW5rczogbnVsbCxcbiAgICAgICAgYXJjaGl2ZXM6IG51bGwsXG4gICAgICAgIGFzc2V0czogbnVsbCxcbiAgICAgICAgYm9va21hcmtzOiBudWxsLFxuICAgICAgICBjYXRlZ29yeTogbnVsbCxcbiAgICAgICAgY2xhc3NpZmljYXRpb246IG51bGwsXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgIHByZXZpb3VzOiBudWxsLFxuICAgICAgICAgICAgbmV4dDogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBvdGhlcjoge31cbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWZhdWx0LW1ldGFkYXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/alternate.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/alternate.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AlternatesMetadata\", ({\n enumerable: true,\n get: function() {\n return AlternatesMetadata;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _meta = __webpack_require__(/*! ./meta */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction AlternateLink({ descriptor, ...props }) {\n if (!descriptor.url) return null;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n ...props,\n ...descriptor.title && {\n title: descriptor.title\n },\n href: descriptor.url.toString()\n });\n}\nfunction AlternatesMetadata({ alternates }) {\n if (!alternates) return null;\n const { canonical, languages, media, types } = alternates;\n return (0, _meta.MetaFilter)([\n canonical ? AlternateLink({\n rel: 'canonical',\n descriptor: canonical\n }) : null,\n languages ? Object.entries(languages).flatMap(([locale, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n hrefLang: locale,\n descriptor\n }))) : null,\n media ? Object.entries(media).flatMap(([mediaName, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n media: mediaName,\n descriptor\n }))) : null,\n types ? Object.entries(types).flatMap(([type, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n type,\n descriptor\n }))) : null\n ]);\n}\n\n//# sourceMappingURL=alternate.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9hbHRlcm5hdGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixzREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixvQkFBb0IsbUJBQU8sQ0FBQyx5SEFBbUI7QUFDL0Msc0RBQXNELG1CQUFPLENBQUMsaUdBQU87QUFDckUsY0FBYyxtQkFBTyxDQUFDLDRFQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0JBQXNCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSw4QkFBOEIsWUFBWTtBQUMxQztBQUNBLFlBQVkscUNBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcbWV0YWRhdGFcXGdlbmVyYXRlXFxhbHRlcm5hdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBbHRlcm5hdGVzTWV0YWRhdGFcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFsdGVybmF0ZXNNZXRhZGF0YTtcbiAgICB9XG59KTtcbmNvbnN0IF9qc3hydW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9tZXRhID0gcmVxdWlyZShcIi4vbWV0YVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gQWx0ZXJuYXRlTGluayh7IGRlc2NyaXB0b3IsIC4uLnByb3BzIH0pIHtcbiAgICBpZiAoIWRlc2NyaXB0b3IudXJsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImxpbmtcIiwge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4uZGVzY3JpcHRvci50aXRsZSAmJiB7XG4gICAgICAgICAgICB0aXRsZTogZGVzY3JpcHRvci50aXRsZVxuICAgICAgICB9LFxuICAgICAgICBocmVmOiBkZXNjcmlwdG9yLnVybC50b1N0cmluZygpXG4gICAgfSk7XG59XG5mdW5jdGlvbiBBbHRlcm5hdGVzTWV0YWRhdGEoeyBhbHRlcm5hdGVzIH0pIHtcbiAgICBpZiAoIWFsdGVybmF0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHsgY2Fub25pY2FsLCBsYW5ndWFnZXMsIG1lZGlhLCB0eXBlcyB9ID0gYWx0ZXJuYXRlcztcbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgY2Fub25pY2FsID8gQWx0ZXJuYXRlTGluayh7XG4gICAgICAgICAgICByZWw6ICdjYW5vbmljYWwnLFxuICAgICAgICAgICAgZGVzY3JpcHRvcjogY2Fub25pY2FsXG4gICAgICAgIH0pIDogbnVsbCxcbiAgICAgICAgbGFuZ3VhZ2VzID8gT2JqZWN0LmVudHJpZXMobGFuZ3VhZ2VzKS5mbGF0TWFwKChbbG9jYWxlLCBkZXNjcmlwdG9yc10pPT5kZXNjcmlwdG9ycyA9PSBudWxsID8gdm9pZCAwIDogZGVzY3JpcHRvcnMubWFwKChkZXNjcmlwdG9yKT0+QWx0ZXJuYXRlTGluayh7XG4gICAgICAgICAgICAgICAgICAgIHJlbDogJ2FsdGVybmF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGhyZWZMYW5nOiBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICB9KSkpIDogbnVsbCxcbiAgICAgICAgbWVkaWEgPyBPYmplY3QuZW50cmllcyhtZWRpYSkuZmxhdE1hcCgoW21lZGlhTmFtZSwgZGVzY3JpcHRvcnNdKT0+ZGVzY3JpcHRvcnMgPT0gbnVsbCA/IHZvaWQgMCA6IGRlc2NyaXB0b3JzLm1hcCgoZGVzY3JpcHRvcik9PkFsdGVybmF0ZUxpbmsoe1xuICAgICAgICAgICAgICAgICAgICByZWw6ICdhbHRlcm5hdGUnLFxuICAgICAgICAgICAgICAgICAgICBtZWRpYTogbWVkaWFOYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgfSkpKSA6IG51bGwsXG4gICAgICAgIHR5cGVzID8gT2JqZWN0LmVudHJpZXModHlwZXMpLmZsYXRNYXAoKFt0eXBlLCBkZXNjcmlwdG9yc10pPT5kZXNjcmlwdG9ycyA9PSBudWxsID8gdm9pZCAwIDogZGVzY3JpcHRvcnMubWFwKChkZXNjcmlwdG9yKT0+QWx0ZXJuYXRlTGluayh7XG4gICAgICAgICAgICAgICAgICAgIHJlbDogJ2FsdGVybmF0ZScsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICB9KSkpIDogbnVsbFxuICAgIF0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hbHRlcm5hdGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/alternate.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/basic.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/basic.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n AppleWebAppMeta: function() {\n return AppleWebAppMeta;\n },\n BasicMeta: function() {\n return BasicMeta;\n },\n FacebookMeta: function() {\n return FacebookMeta;\n },\n FormatDetectionMeta: function() {\n return FormatDetectionMeta;\n },\n ItunesMeta: function() {\n return ItunesMeta;\n },\n PinterestMeta: function() {\n return PinterestMeta;\n },\n VerificationMeta: function() {\n return VerificationMeta;\n },\n ViewportMeta: function() {\n return ViewportMeta;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _meta = __webpack_require__(/*! ./meta */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\");\nconst _constants = __webpack_require__(/*! ../constants */ \"(rsc)/./node_modules/next/dist/lib/metadata/constants.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\n// convert viewport object to string for viewport meta tag\nfunction resolveViewportLayout(viewport) {\n let resolved = null;\n if (viewport && typeof viewport === 'object') {\n resolved = '';\n for(const viewportKey_ in _constants.ViewportMetaKeys){\n const viewportKey = viewportKey_;\n if (viewportKey in viewport) {\n let value = viewport[viewportKey];\n if (typeof value === 'boolean') {\n value = value ? 'yes' : 'no';\n } else if (!value && viewportKey === 'initialScale') {\n value = undefined;\n }\n if (value) {\n if (resolved) resolved += ', ';\n resolved += `${_constants.ViewportMetaKeys[viewportKey]}=${value}`;\n }\n }\n }\n }\n return resolved;\n}\nfunction ViewportMeta({ viewport }) {\n return (0, _meta.MetaFilter)([\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n charSet: \"utf-8\"\n }),\n (0, _meta.Meta)({\n name: 'viewport',\n content: resolveViewportLayout(viewport)\n }),\n ...viewport.themeColor ? viewport.themeColor.map((themeColor)=>(0, _meta.Meta)({\n name: 'theme-color',\n content: themeColor.color,\n media: themeColor.media\n })) : [],\n (0, _meta.Meta)({\n name: 'color-scheme',\n content: viewport.colorScheme\n })\n ]);\n}\nfunction BasicMeta({ metadata }) {\n var _metadata_keywords, _metadata_robots, _metadata_robots1;\n const manifestOrigin = metadata.manifest ? (0, _utils.getOrigin)(metadata.manifest) : undefined;\n return (0, _meta.MetaFilter)([\n metadata.title !== null && metadata.title.absolute ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: metadata.title.absolute\n }) : null,\n (0, _meta.Meta)({\n name: 'description',\n content: metadata.description\n }),\n (0, _meta.Meta)({\n name: 'application-name',\n content: metadata.applicationName\n }),\n ...metadata.authors ? metadata.authors.map((author)=>[\n author.url ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"author\",\n href: author.url.toString()\n }) : null,\n (0, _meta.Meta)({\n name: 'author',\n content: author.name\n })\n ]) : [],\n metadata.manifest ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"manifest\",\n href: metadata.manifest.toString(),\n // If it's same origin, and it's a preview deployment,\n // including credentials for manifest request.\n crossOrigin: !manifestOrigin && process.env.VERCEL_ENV === 'preview' ? 'use-credentials' : undefined\n }) : null,\n (0, _meta.Meta)({\n name: 'generator',\n content: metadata.generator\n }),\n (0, _meta.Meta)({\n name: 'keywords',\n content: (_metadata_keywords = metadata.keywords) == null ? void 0 : _metadata_keywords.join(',')\n }),\n (0, _meta.Meta)({\n name: 'referrer',\n content: metadata.referrer\n }),\n (0, _meta.Meta)({\n name: 'creator',\n content: metadata.creator\n }),\n (0, _meta.Meta)({\n name: 'publisher',\n content: metadata.publisher\n }),\n (0, _meta.Meta)({\n name: 'robots',\n content: (_metadata_robots = metadata.robots) == null ? void 0 : _metadata_robots.basic\n }),\n (0, _meta.Meta)({\n name: 'googlebot',\n content: (_metadata_robots1 = metadata.robots) == null ? void 0 : _metadata_robots1.googleBot\n }),\n (0, _meta.Meta)({\n name: 'abstract',\n content: metadata.abstract\n }),\n ...metadata.archives ? metadata.archives.map((archive)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"archives\",\n href: archive\n })) : [],\n ...metadata.assets ? metadata.assets.map((asset)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"assets\",\n href: asset\n })) : [],\n ...metadata.bookmarks ? metadata.bookmarks.map((bookmark)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"bookmarks\",\n href: bookmark\n })) : [],\n ...metadata.pagination ? [\n metadata.pagination.previous ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"prev\",\n href: metadata.pagination.previous\n }) : null,\n metadata.pagination.next ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"next\",\n href: metadata.pagination.next\n }) : null\n ] : [],\n (0, _meta.Meta)({\n name: 'category',\n content: metadata.category\n }),\n (0, _meta.Meta)({\n name: 'classification',\n content: metadata.classification\n }),\n ...metadata.other ? Object.entries(metadata.other).map(([name, content])=>{\n if (Array.isArray(content)) {\n return content.map((contentItem)=>(0, _meta.Meta)({\n name,\n content: contentItem\n }));\n } else {\n return (0, _meta.Meta)({\n name,\n content\n });\n }\n }) : []\n ]);\n}\nfunction ItunesMeta({ itunes }) {\n if (!itunes) return null;\n const { appId, appArgument } = itunes;\n let content = `app-id=${appId}`;\n if (appArgument) {\n content += `, app-argument=${appArgument}`;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"apple-itunes-app\",\n content: content\n });\n}\nfunction FacebookMeta({ facebook }) {\n if (!facebook) return null;\n const { appId, admins } = facebook;\n return (0, _meta.MetaFilter)([\n appId ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"fb:app_id\",\n content: appId\n }) : null,\n ...admins ? admins.map((admin)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"fb:admins\",\n content: admin\n })) : []\n ]);\n}\nfunction PinterestMeta({ pinterest }) {\n if (!pinterest || !pinterest.richPin) return null;\n const { richPin } = pinterest;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n property: \"pinterest-rich-pin\",\n content: richPin.toString()\n });\n}\nconst formatDetectionKeys = [\n 'telephone',\n 'date',\n 'address',\n 'email',\n 'url'\n];\nfunction FormatDetectionMeta({ formatDetection }) {\n if (!formatDetection) return null;\n let content = '';\n for (const key of formatDetectionKeys){\n if (key in formatDetection) {\n if (content) content += ', ';\n content += `${key}=no`;\n }\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"format-detection\",\n content: content\n });\n}\nfunction AppleWebAppMeta({ appleWebApp }) {\n if (!appleWebApp) return null;\n const { capable, title, startupImage, statusBarStyle } = appleWebApp;\n return (0, _meta.MetaFilter)([\n capable ? (0, _meta.Meta)({\n name: 'mobile-web-app-capable',\n content: 'yes'\n }) : null,\n (0, _meta.Meta)({\n name: 'apple-mobile-web-app-title',\n content: title\n }),\n startupImage ? startupImage.map((image)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n href: image.url,\n media: image.media,\n rel: \"apple-touch-startup-image\"\n })) : null,\n statusBarStyle ? (0, _meta.Meta)({\n name: 'apple-mobile-web-app-status-bar-style',\n content: statusBarStyle\n }) : null\n ]);\n}\nfunction VerificationMeta({ verification }) {\n if (!verification) return null;\n return (0, _meta.MetaFilter)([\n (0, _meta.MultiMeta)({\n namePrefix: 'google-site-verification',\n contents: verification.google\n }),\n (0, _meta.MultiMeta)({\n namePrefix: 'y_key',\n contents: verification.yahoo\n }),\n (0, _meta.MultiMeta)({\n namePrefix: 'yandex-verification',\n contents: verification.yandex\n }),\n (0, _meta.MultiMeta)({\n namePrefix: 'me',\n contents: verification.me\n }),\n ...verification.other ? Object.entries(verification.other).map(([key, value])=>(0, _meta.MultiMeta)({\n namePrefix: key,\n contents: value\n })) : []\n ]);\n}\n\n//# sourceMappingURL=basic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9iYXNpYy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FTTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxvQkFBb0IsbUJBQU8sQ0FBQyx5SEFBbUI7QUFDL0MsY0FBYyxtQkFBTyxDQUFDLDRFQUFRO0FBQzlCLG1CQUFtQixtQkFBTyxDQUFDLDhFQUFjO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyw4RUFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHlDQUF5QyxHQUFHLE1BQU07QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFVBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esc0JBQXNCLFFBQVE7QUFDOUI7QUFDQSxZQUFZLHFCQUFxQjtBQUNqQyw0QkFBNEIsTUFBTTtBQUNsQztBQUNBLHFDQUFxQyxZQUFZO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esd0JBQXdCLFVBQVU7QUFDbEM7QUFDQSxZQUFZLGdCQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLHlCQUF5QixXQUFXO0FBQ3BDO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGlCQUFpQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDJCQUEyQixhQUFhO0FBQ3hDO0FBQ0EsWUFBWSwrQ0FBK0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsNEJBQTRCLGNBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxcZ2VuZXJhdGVcXGJhc2ljLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQXBwbGVXZWJBcHBNZXRhOiBudWxsLFxuICAgIEJhc2ljTWV0YTogbnVsbCxcbiAgICBGYWNlYm9va01ldGE6IG51bGwsXG4gICAgRm9ybWF0RGV0ZWN0aW9uTWV0YTogbnVsbCxcbiAgICBJdHVuZXNNZXRhOiBudWxsLFxuICAgIFBpbnRlcmVzdE1ldGE6IG51bGwsXG4gICAgVmVyaWZpY2F0aW9uTWV0YTogbnVsbCxcbiAgICBWaWV3cG9ydE1ldGE6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQXBwbGVXZWJBcHBNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFwcGxlV2ViQXBwTWV0YTtcbiAgICB9LFxuICAgIEJhc2ljTWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBCYXNpY01ldGE7XG4gICAgfSxcbiAgICBGYWNlYm9va01ldGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRmFjZWJvb2tNZXRhO1xuICAgIH0sXG4gICAgRm9ybWF0RGV0ZWN0aW9uTWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBGb3JtYXREZXRlY3Rpb25NZXRhO1xuICAgIH0sXG4gICAgSXR1bmVzTWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJdHVuZXNNZXRhO1xuICAgIH0sXG4gICAgUGludGVyZXN0TWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQaW50ZXJlc3RNZXRhO1xuICAgIH0sXG4gICAgVmVyaWZpY2F0aW9uTWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBWZXJpZmljYXRpb25NZXRhO1xuICAgIH0sXG4gICAgVmlld3BvcnRNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFZpZXdwb3J0TWV0YTtcbiAgICB9XG59KTtcbmNvbnN0IF9qc3hydW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xuY29uc3QgX21ldGEgPSByZXF1aXJlKFwiLi9tZXRhXCIpO1xuY29uc3QgX2NvbnN0YW50cyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbi8vIGNvbnZlcnQgdmlld3BvcnQgb2JqZWN0IHRvIHN0cmluZyBmb3Igdmlld3BvcnQgbWV0YSB0YWdcbmZ1bmN0aW9uIHJlc29sdmVWaWV3cG9ydExheW91dCh2aWV3cG9ydCkge1xuICAgIGxldCByZXNvbHZlZCA9IG51bGw7XG4gICAgaWYgKHZpZXdwb3J0ICYmIHR5cGVvZiB2aWV3cG9ydCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmVzb2x2ZWQgPSAnJztcbiAgICAgICAgZm9yKGNvbnN0IHZpZXdwb3J0S2V5XyBpbiBfY29uc3RhbnRzLlZpZXdwb3J0TWV0YUtleXMpe1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRLZXkgPSB2aWV3cG9ydEtleV87XG4gICAgICAgICAgICBpZiAodmlld3BvcnRLZXkgaW4gdmlld3BvcnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB2aWV3cG9ydFt2aWV3cG9ydEtleV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyAneWVzJyA6ICdubyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWUgJiYgdmlld3BvcnRLZXkgPT09ICdpbml0aWFsU2NhbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVkKSByZXNvbHZlZCArPSAnLCAnO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZCArPSBgJHtfY29uc3RhbnRzLlZpZXdwb3J0TWV0YUtleXNbdmlld3BvcnRLZXldfT0ke3ZhbHVlfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZDtcbn1cbmZ1bmN0aW9uIFZpZXdwb3J0TWV0YSh7IHZpZXdwb3J0IH0pIHtcbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcIm1ldGFcIiwge1xuICAgICAgICAgICAgY2hhclNldDogXCJ1dGYtOFwiXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3ZpZXdwb3J0JyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHJlc29sdmVWaWV3cG9ydExheW91dCh2aWV3cG9ydClcbiAgICAgICAgfSksXG4gICAgICAgIC4uLnZpZXdwb3J0LnRoZW1lQ29sb3IgPyB2aWV3cG9ydC50aGVtZUNvbG9yLm1hcCgodGhlbWVDb2xvcik9PigwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3RoZW1lLWNvbG9yJyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aGVtZUNvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgIG1lZGlhOiB0aGVtZUNvbG9yLm1lZGlhXG4gICAgICAgICAgICB9KSkgOiBbXSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdjb2xvci1zY2hlbWUnLFxuICAgICAgICAgICAgY29udGVudDogdmlld3BvcnQuY29sb3JTY2hlbWVcbiAgICAgICAgfSlcbiAgICBdKTtcbn1cbmZ1bmN0aW9uIEJhc2ljTWV0YSh7IG1ldGFkYXRhIH0pIHtcbiAgICB2YXIgX21ldGFkYXRhX2tleXdvcmRzLCBfbWV0YWRhdGFfcm9ib3RzLCBfbWV0YWRhdGFfcm9ib3RzMTtcbiAgICBjb25zdCBtYW5pZmVzdE9yaWdpbiA9IG1ldGFkYXRhLm1hbmlmZXN0ID8gKDAsIF91dGlscy5nZXRPcmlnaW4pKG1ldGFkYXRhLm1hbmlmZXN0KSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgbWV0YWRhdGEudGl0bGUgIT09IG51bGwgJiYgbWV0YWRhdGEudGl0bGUuYWJzb2x1dGUgPyAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwidGl0bGVcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IG1ldGFkYXRhLnRpdGxlLmFic29sdXRlXG4gICAgICAgIH0pIDogbnVsbCxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5kZXNjcmlwdGlvblxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdhcHBsaWNhdGlvbi1uYW1lJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1ldGFkYXRhLmFwcGxpY2F0aW9uTmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgLi4ubWV0YWRhdGEuYXV0aG9ycyA/IG1ldGFkYXRhLmF1dGhvcnMubWFwKChhdXRob3IpPT5bXG4gICAgICAgICAgICAgICAgYXV0aG9yLnVybCA/IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcImF1dGhvclwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBhdXRob3IudXJsLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB9KSA6IG51bGwsXG4gICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2F1dGhvcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF1dGhvci5uYW1lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pIDogW10sXG4gICAgICAgIG1ldGFkYXRhLm1hbmlmZXN0ID8gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImxpbmtcIiwge1xuICAgICAgICAgICAgcmVsOiBcIm1hbmlmZXN0XCIsXG4gICAgICAgICAgICBocmVmOiBtZXRhZGF0YS5tYW5pZmVzdC50b1N0cmluZygpLFxuICAgICAgICAgICAgLy8gSWYgaXQncyBzYW1lIG9yaWdpbiwgYW5kIGl0J3MgYSBwcmV2aWV3IGRlcGxveW1lbnQsXG4gICAgICAgICAgICAvLyBpbmNsdWRpbmcgY3JlZGVudGlhbHMgZm9yIG1hbmlmZXN0IHJlcXVlc3QuXG4gICAgICAgICAgICBjcm9zc09yaWdpbjogIW1hbmlmZXN0T3JpZ2luICYmIHByb2Nlc3MuZW52LlZFUkNFTF9FTlYgPT09ICdwcmV2aWV3JyA/ICd1c2UtY3JlZGVudGlhbHMnIDogdW5kZWZpbmVkXG4gICAgICAgIH0pIDogbnVsbCxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdnZW5lcmF0b3InLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuZ2VuZXJhdG9yXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ2tleXdvcmRzJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IChfbWV0YWRhdGFfa2V5d29yZHMgPSBtZXRhZGF0YS5rZXl3b3JkcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tZXRhZGF0YV9rZXl3b3Jkcy5qb2luKCcsJylcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAncmVmZXJyZXInLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEucmVmZXJyZXJcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAnY3JlYXRvcicsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5jcmVhdG9yXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcicsXG4gICAgICAgICAgICBjb250ZW50OiBtZXRhZGF0YS5wdWJsaXNoZXJcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAncm9ib3RzJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IChfbWV0YWRhdGFfcm9ib3RzID0gbWV0YWRhdGEucm9ib3RzKSA9PSBudWxsID8gdm9pZCAwIDogX21ldGFkYXRhX3JvYm90cy5iYXNpY1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdnb29nbGVib3QnLFxuICAgICAgICAgICAgY29udGVudDogKF9tZXRhZGF0YV9yb2JvdHMxID0gbWV0YWRhdGEucm9ib3RzKSA9PSBudWxsID8gdm9pZCAwIDogX21ldGFkYXRhX3JvYm90czEuZ29vZ2xlQm90XG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ2Fic3RyYWN0JyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1ldGFkYXRhLmFic3RyYWN0XG4gICAgICAgIH0pLFxuICAgICAgICAuLi5tZXRhZGF0YS5hcmNoaXZlcyA/IG1ldGFkYXRhLmFyY2hpdmVzLm1hcCgoYXJjaGl2ZSk9Pi8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICByZWw6IFwiYXJjaGl2ZXNcIixcbiAgICAgICAgICAgICAgICBocmVmOiBhcmNoaXZlXG4gICAgICAgICAgICB9KSkgOiBbXSxcbiAgICAgICAgLi4ubWV0YWRhdGEuYXNzZXRzID8gbWV0YWRhdGEuYXNzZXRzLm1hcCgoYXNzZXQpPT4vKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImFzc2V0c1wiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGFzc2V0XG4gICAgICAgICAgICB9KSkgOiBbXSxcbiAgICAgICAgLi4ubWV0YWRhdGEuYm9va21hcmtzID8gbWV0YWRhdGEuYm9va21hcmtzLm1hcCgoYm9va21hcmspPT4vKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImJvb2ttYXJrc1wiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGJvb2ttYXJrXG4gICAgICAgICAgICB9KSkgOiBbXSxcbiAgICAgICAgLi4ubWV0YWRhdGEucGFnaW5hdGlvbiA/IFtcbiAgICAgICAgICAgIG1ldGFkYXRhLnBhZ2luYXRpb24ucHJldmlvdXMgPyAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcInByZXZcIixcbiAgICAgICAgICAgICAgICBocmVmOiBtZXRhZGF0YS5wYWdpbmF0aW9uLnByZXZpb3VzXG4gICAgICAgICAgICB9KSA6IG51bGwsXG4gICAgICAgICAgICBtZXRhZGF0YS5wYWdpbmF0aW9uLm5leHQgPyAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcIm5leHRcIixcbiAgICAgICAgICAgICAgICBocmVmOiBtZXRhZGF0YS5wYWdpbmF0aW9uLm5leHRcbiAgICAgICAgICAgIH0pIDogbnVsbFxuICAgICAgICBdIDogW10sXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAnY2F0ZWdvcnknLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuY2F0ZWdvcnlcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAnY2xhc3NpZmljYXRpb24nLFxuICAgICAgICAgICAgY29udGVudDogbWV0YWRhdGEuY2xhc3NpZmljYXRpb25cbiAgICAgICAgfSksXG4gICAgICAgIC4uLm1ldGFkYXRhLm90aGVyID8gT2JqZWN0LmVudHJpZXMobWV0YWRhdGEub3RoZXIpLm1hcCgoW25hbWUsIGNvbnRlbnRdKT0+e1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudC5tYXAoKGNvbnRlbnRJdGVtKT0+KDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIDogW11cbiAgICBdKTtcbn1cbmZ1bmN0aW9uIEl0dW5lc01ldGEoeyBpdHVuZXMgfSkge1xuICAgIGlmICghaXR1bmVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IGFwcElkLCBhcHBBcmd1bWVudCB9ID0gaXR1bmVzO1xuICAgIGxldCBjb250ZW50ID0gYGFwcC1pZD0ke2FwcElkfWA7XG4gICAgaWYgKGFwcEFyZ3VtZW50KSB7XG4gICAgICAgIGNvbnRlbnQgKz0gYCwgYXBwLWFyZ3VtZW50PSR7YXBwQXJndW1lbnR9YDtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgbmFtZTogXCJhcHBsZS1pdHVuZXMtYXBwXCIsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIEZhY2Vib29rTWV0YSh7IGZhY2Vib29rIH0pIHtcbiAgICBpZiAoIWZhY2Vib29rKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IGFwcElkLCBhZG1pbnMgfSA9IGZhY2Vib29rO1xuICAgIHJldHVybiAoMCwgX21ldGEuTWV0YUZpbHRlcikoW1xuICAgICAgICBhcHBJZCA/IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIHByb3BlcnR5OiBcImZiOmFwcF9pZFwiLFxuICAgICAgICAgICAgY29udGVudDogYXBwSWRcbiAgICAgICAgfSkgOiBudWxsLFxuICAgICAgICAuLi5hZG1pbnMgPyBhZG1pbnMubWFwKChhZG1pbik9Pi8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJmYjphZG1pbnNcIixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBhZG1pblxuICAgICAgICAgICAgfSkpIDogW11cbiAgICBdKTtcbn1cbmZ1bmN0aW9uIFBpbnRlcmVzdE1ldGEoeyBwaW50ZXJlc3QgfSkge1xuICAgIGlmICghcGludGVyZXN0IHx8ICFwaW50ZXJlc3QucmljaFBpbikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyByaWNoUGluIH0gPSBwaW50ZXJlc3Q7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJtZXRhXCIsIHtcbiAgICAgICAgcHJvcGVydHk6IFwicGludGVyZXN0LXJpY2gtcGluXCIsXG4gICAgICAgIGNvbnRlbnQ6IHJpY2hQaW4udG9TdHJpbmcoKVxuICAgIH0pO1xufVxuY29uc3QgZm9ybWF0RGV0ZWN0aW9uS2V5cyA9IFtcbiAgICAndGVsZXBob25lJyxcbiAgICAnZGF0ZScsXG4gICAgJ2FkZHJlc3MnLFxuICAgICdlbWFpbCcsXG4gICAgJ3VybCdcbl07XG5mdW5jdGlvbiBGb3JtYXREZXRlY3Rpb25NZXRhKHsgZm9ybWF0RGV0ZWN0aW9uIH0pIHtcbiAgICBpZiAoIWZvcm1hdERldGVjdGlvbikgcmV0dXJuIG51bGw7XG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBmb3JtYXREZXRlY3Rpb25LZXlzKXtcbiAgICAgICAgaWYgKGtleSBpbiBmb3JtYXREZXRlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50KSBjb250ZW50ICs9ICcsICc7XG4gICAgICAgICAgICBjb250ZW50ICs9IGAke2tleX09bm9gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgIG5hbWU6IFwiZm9ybWF0LWRldGVjdGlvblwiLFxuICAgICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG59XG5mdW5jdGlvbiBBcHBsZVdlYkFwcE1ldGEoeyBhcHBsZVdlYkFwcCB9KSB7XG4gICAgaWYgKCFhcHBsZVdlYkFwcCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBjYXBhYmxlLCB0aXRsZSwgc3RhcnR1cEltYWdlLCBzdGF0dXNCYXJTdHlsZSB9ID0gYXBwbGVXZWJBcHA7XG4gICAgcmV0dXJuICgwLCBfbWV0YS5NZXRhRmlsdGVyKShbXG4gICAgICAgIGNhcGFibGUgPyAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ21vYmlsZS13ZWItYXBwLWNhcGFibGUnLFxuICAgICAgICAgICAgY29udGVudDogJ3llcydcbiAgICAgICAgfSkgOiBudWxsLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ2FwcGxlLW1vYmlsZS13ZWItYXBwLXRpdGxlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRpdGxlXG4gICAgICAgIH0pLFxuICAgICAgICBzdGFydHVwSW1hZ2UgPyBzdGFydHVwSW1hZ2UubWFwKChpbWFnZSk9Pi8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICBocmVmOiBpbWFnZS51cmwsXG4gICAgICAgICAgICAgICAgbWVkaWE6IGltYWdlLm1lZGlhLFxuICAgICAgICAgICAgICAgIHJlbDogXCJhcHBsZS10b3VjaC1zdGFydHVwLWltYWdlXCJcbiAgICAgICAgICAgIH0pKSA6IG51bGwsXG4gICAgICAgIHN0YXR1c0JhclN0eWxlID8gKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6ICdhcHBsZS1tb2JpbGUtd2ViLWFwcC1zdGF0dXMtYmFyLXN0eWxlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0YXR1c0JhclN0eWxlXG4gICAgICAgIH0pIDogbnVsbFxuICAgIF0pO1xufVxuZnVuY3Rpb24gVmVyaWZpY2F0aW9uTWV0YSh7IHZlcmlmaWNhdGlvbiB9KSB7XG4gICAgaWYgKCF2ZXJpZmljYXRpb24pIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoMCwgX21ldGEuTWV0YUZpbHRlcikoW1xuICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICBuYW1lUHJlZml4OiAnZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiB2ZXJpZmljYXRpb24uZ29vZ2xlXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICBuYW1lUHJlZml4OiAneV9rZXknLFxuICAgICAgICAgICAgY29udGVudHM6IHZlcmlmaWNhdGlvbi55YWhvb1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgbmFtZVByZWZpeDogJ3lhbmRleC12ZXJpZmljYXRpb24nLFxuICAgICAgICAgICAgY29udGVudHM6IHZlcmlmaWNhdGlvbi55YW5kZXhcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIG5hbWVQcmVmaXg6ICdtZScsXG4gICAgICAgICAgICBjb250ZW50czogdmVyaWZpY2F0aW9uLm1lXG4gICAgICAgIH0pLFxuICAgICAgICAuLi52ZXJpZmljYXRpb24ub3RoZXIgPyBPYmplY3QuZW50cmllcyh2ZXJpZmljYXRpb24ub3RoZXIpLm1hcCgoW2tleSwgdmFsdWVdKT0+KDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgIG5hbWVQcmVmaXg6IGtleSxcbiAgICAgICAgICAgICAgICBjb250ZW50czogdmFsdWVcbiAgICAgICAgICAgIH0pKSA6IFtdXG4gICAgXSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2ljLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/basic.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/icon-mark.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\lib\\\\metadata\\\\generate\\\\icon-mark.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXGxpYlxcXFxtZXRhZGF0YVxcXFxnZW5lcmF0ZVxcXFxpY29uLW1hcmsuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/icons.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/icons.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"IconsMetadata\", ({\n enumerable: true,\n get: function() {\n return IconsMetadata;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _iconmark = __webpack_require__(/*! ./icon-mark */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\");\nconst _meta = __webpack_require__(/*! ./meta */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\");\nfunction IconDescriptorLink({ icon }) {\n const { url, rel = 'icon', ...props } = icon;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel,\n href: url.toString(),\n ...props\n });\n}\nfunction IconLink({ rel, icon }) {\n if (typeof icon === 'object' && !(icon instanceof URL)) {\n if (!icon.rel && rel) icon.rel = rel;\n return IconDescriptorLink({\n icon\n });\n } else {\n const href = icon.toString();\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: rel,\n href: href\n });\n }\n}\nfunction IconsMetadata({ icons }) {\n if (!icons) return null;\n const shortcutList = icons.shortcut;\n const iconList = icons.icon;\n const appleList = icons.apple;\n const otherList = icons.other;\n const hasIcon = Boolean((shortcutList == null ? void 0 : shortcutList.length) || (iconList == null ? void 0 : iconList.length) || (appleList == null ? void 0 : appleList.length) || (otherList == null ? void 0 : otherList.length));\n if (!hasIcon) return null;\n return (0, _meta.MetaFilter)([\n shortcutList ? shortcutList.map((icon)=>IconLink({\n rel: 'shortcut icon',\n icon\n })) : null,\n iconList ? iconList.map((icon)=>IconLink({\n rel: 'icon',\n icon\n })) : null,\n appleList ? appleList.map((icon)=>IconLink({\n rel: 'apple-touch-icon',\n icon\n })) : null,\n otherList ? otherList.map((icon)=>IconDescriptorLink({\n icon\n })) : null,\n hasIcon ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_iconmark.IconMark, {}) : null\n ]);\n}\n\n//# sourceMappingURL=icons.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29ucy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGlEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLG9CQUFvQixtQkFBTyxDQUFDLHlIQUFtQjtBQUMvQyxrQkFBa0IsbUJBQU8sQ0FBQyxzRkFBYTtBQUN2QyxjQUFjLG1CQUFPLENBQUMsNEVBQVE7QUFDOUIsOEJBQThCLE1BQU07QUFDcEMsWUFBWSw4QkFBOEI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxvQkFBb0IsV0FBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHlCQUF5QixPQUFPO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiLDJFQUEyRTtBQUMzRTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxnZW5lcmF0ZVxcaWNvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJY29uc01ldGFkYXRhXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJY29uc01ldGFkYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX2pzeHJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG5jb25zdCBfaWNvbm1hcmsgPSByZXF1aXJlKFwiLi9pY29uLW1hcmtcIik7XG5jb25zdCBfbWV0YSA9IHJlcXVpcmUoXCIuL21ldGFcIik7XG5mdW5jdGlvbiBJY29uRGVzY3JpcHRvckxpbmsoeyBpY29uIH0pIHtcbiAgICBjb25zdCB7IHVybCwgcmVsID0gJ2ljb24nLCAuLi5wcm9wcyB9ID0gaWNvbjtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImxpbmtcIiwge1xuICAgICAgICByZWw6IHJlbCxcbiAgICAgICAgaHJlZjogdXJsLnRvU3RyaW5nKCksXG4gICAgICAgIC4uLnByb3BzXG4gICAgfSk7XG59XG5mdW5jdGlvbiBJY29uTGluayh7IHJlbCwgaWNvbiB9KSB7XG4gICAgaWYgKHR5cGVvZiBpY29uID09PSAnb2JqZWN0JyAmJiAhKGljb24gaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgICAgIGlmICghaWNvbi5yZWwgJiYgcmVsKSBpY29uLnJlbCA9IHJlbDtcbiAgICAgICAgcmV0dXJuIEljb25EZXNjcmlwdG9yTGluayh7XG4gICAgICAgICAgICBpY29uXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSBpY29uLnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibGlua1wiLCB7XG4gICAgICAgICAgICByZWw6IHJlbCxcbiAgICAgICAgICAgIGhyZWY6IGhyZWZcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gSWNvbnNNZXRhZGF0YSh7IGljb25zIH0pIHtcbiAgICBpZiAoIWljb25zKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzaG9ydGN1dExpc3QgPSBpY29ucy5zaG9ydGN1dDtcbiAgICBjb25zdCBpY29uTGlzdCA9IGljb25zLmljb247XG4gICAgY29uc3QgYXBwbGVMaXN0ID0gaWNvbnMuYXBwbGU7XG4gICAgY29uc3Qgb3RoZXJMaXN0ID0gaWNvbnMub3RoZXI7XG4gICAgY29uc3QgaGFzSWNvbiA9IEJvb2xlYW4oKHNob3J0Y3V0TGlzdCA9PSBudWxsID8gdm9pZCAwIDogc2hvcnRjdXRMaXN0Lmxlbmd0aCkgfHwgKGljb25MaXN0ID09IG51bGwgPyB2b2lkIDAgOiBpY29uTGlzdC5sZW5ndGgpIHx8IChhcHBsZUxpc3QgPT0gbnVsbCA/IHZvaWQgMCA6IGFwcGxlTGlzdC5sZW5ndGgpIHx8IChvdGhlckxpc3QgPT0gbnVsbCA/IHZvaWQgMCA6IG90aGVyTGlzdC5sZW5ndGgpKTtcbiAgICBpZiAoIWhhc0ljb24pIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoMCwgX21ldGEuTWV0YUZpbHRlcikoW1xuICAgICAgICBzaG9ydGN1dExpc3QgPyBzaG9ydGN1dExpc3QubWFwKChpY29uKT0+SWNvbkxpbmsoe1xuICAgICAgICAgICAgICAgIHJlbDogJ3Nob3J0Y3V0IGljb24nLFxuICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgIH0pKSA6IG51bGwsXG4gICAgICAgIGljb25MaXN0ID8gaWNvbkxpc3QubWFwKChpY29uKT0+SWNvbkxpbmsoe1xuICAgICAgICAgICAgICAgIHJlbDogJ2ljb24nLFxuICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgIH0pKSA6IG51bGwsXG4gICAgICAgIGFwcGxlTGlzdCA/IGFwcGxlTGlzdC5tYXAoKGljb24pPT5JY29uTGluayh7XG4gICAgICAgICAgICAgICAgcmVsOiAnYXBwbGUtdG91Y2gtaWNvbicsXG4gICAgICAgICAgICAgICAgaWNvblxuICAgICAgICAgICAgfSkpIDogbnVsbCxcbiAgICAgICAgb3RoZXJMaXN0ID8gb3RoZXJMaXN0Lm1hcCgoaWNvbik9Pkljb25EZXNjcmlwdG9yTGluayh7XG4gICAgICAgICAgICAgICAgaWNvblxuICAgICAgICAgICAgfSkpIDogbnVsbCxcbiAgICAgICAgaGFzSWNvbiA/IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX2ljb25tYXJrLkljb25NYXJrLCB7fSkgOiBudWxsXG4gICAgXSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWljb25zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/icons.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/meta.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Meta: function() {\n return Meta;\n },\n MetaFilter: function() {\n return MetaFilter;\n },\n MultiMeta: function() {\n return MultiMeta;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _nonnullable = __webpack_require__(/*! ../../non-nullable */ \"(rsc)/./node_modules/next/dist/lib/non-nullable.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction Meta({ name, property, content, media }) {\n if (typeof content !== 'undefined' && content !== null && content !== '') {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n ...name ? {\n name\n } : {\n property\n },\n ...media ? {\n media\n } : undefined,\n content: typeof content === 'string' ? content : content.toString()\n });\n }\n return null;\n}\nfunction MetaFilter(items) {\n const acc = [];\n for (const item of items){\n if (Array.isArray(item)) {\n acc.push(...item.filter(_nonnullable.nonNullable));\n } else if ((0, _nonnullable.nonNullable)(item)) {\n acc.push(item);\n }\n }\n return acc;\n}\nfunction camelToSnake(camelCaseStr) {\n return camelCaseStr.replace(/([A-Z])/g, function(match) {\n return '_' + match.toLowerCase();\n });\n}\nconst aliasPropPrefixes = new Set([\n 'og:image',\n 'twitter:image',\n 'og:video',\n 'og:audio'\n]);\nfunction getMetaKey(prefix, key) {\n // Use `twitter:image` and `og:image` instead of `twitter:image:url` and `og:image:url`\n // to be more compatible as it's a more common format.\n // `og:video` & `og:audio` do not have a `:url` suffix alias\n if (aliasPropPrefixes.has(prefix) && key === 'url') {\n return prefix;\n }\n if (prefix.startsWith('og:') || prefix.startsWith('twitter:')) {\n key = camelToSnake(key);\n }\n return prefix + ':' + key;\n}\nfunction ExtendMeta({ content, namePrefix, propertyPrefix }) {\n if (!content) return null;\n return MetaFilter(Object.entries(content).map(([k, v])=>{\n return typeof v === 'undefined' ? null : Meta({\n ...propertyPrefix && {\n property: getMetaKey(propertyPrefix, k)\n },\n ...namePrefix && {\n name: getMetaKey(namePrefix, k)\n },\n content: typeof v === 'string' ? v : v == null ? void 0 : v.toString()\n });\n }));\n}\nfunction MultiMeta({ propertyPrefix, namePrefix, contents }) {\n if (typeof contents === 'undefined' || contents === null) {\n return null;\n }\n return MetaFilter(contents.map((content)=>{\n if (typeof content === 'string' || typeof content === 'number' || content instanceof URL) {\n return Meta({\n ...propertyPrefix ? {\n property: propertyPrefix\n } : {\n name: namePrefix\n },\n content\n });\n } else {\n return ExtendMeta({\n namePrefix,\n propertyPrefix,\n content\n });\n }\n }));\n}\n\n//# sourceMappingURL=meta.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9tZXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUlMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsb0JBQW9CLG1CQUFPLENBQUMseUhBQW1CO0FBQy9DLHNEQUFzRCxtQkFBTyxDQUFDLGlHQUFPO0FBQ3JFLHFCQUFxQixtQkFBTyxDQUFDLDhFQUFvQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdDQUFnQztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxQ0FBcUM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLHFCQUFxQixzQ0FBc0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGFBQWE7QUFDYixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcbWV0YWRhdGFcXGdlbmVyYXRlXFxtZXRhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgTWV0YTogbnVsbCxcbiAgICBNZXRhRmlsdGVyOiBudWxsLFxuICAgIE11bHRpTWV0YTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1ldGE7XG4gICAgfSxcbiAgICBNZXRhRmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1ldGFGaWx0ZXI7XG4gICAgfSxcbiAgICBNdWx0aU1ldGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTXVsdGlNZXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX2pzeHJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX25vbm51bGxhYmxlID0gcmVxdWlyZShcIi4uLy4uL25vbi1udWxsYWJsZVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gTWV0YSh7IG5hbWUsIHByb3BlcnR5LCBjb250ZW50LCBtZWRpYSB9KSB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ICE9PSAndW5kZWZpbmVkJyAmJiBjb250ZW50ICE9PSBudWxsICYmIGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAuLi5uYW1lID8ge1xuICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5tZWRpYSA/IHtcbiAgICAgICAgICAgICAgICBtZWRpYVxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyA/IGNvbnRlbnQgOiBjb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gTWV0YUZpbHRlcihpdGVtcykge1xuICAgIGNvbnN0IGFjYyA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcyl7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgICAgICBhY2MucHVzaCguLi5pdGVtLmZpbHRlcihfbm9ubnVsbGFibGUubm9uTnVsbGFibGUpKTtcbiAgICAgICAgfSBlbHNlIGlmICgoMCwgX25vbm51bGxhYmxlLm5vbk51bGxhYmxlKShpdGVtKSkge1xuICAgICAgICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbn1cbmZ1bmN0aW9uIGNhbWVsVG9TbmFrZShjYW1lbENhc2VTdHIpIHtcbiAgICByZXR1cm4gY2FtZWxDYXNlU3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuICdfJyArIG1hdGNoLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG59XG5jb25zdCBhbGlhc1Byb3BQcmVmaXhlcyA9IG5ldyBTZXQoW1xuICAgICdvZzppbWFnZScsXG4gICAgJ3R3aXR0ZXI6aW1hZ2UnLFxuICAgICdvZzp2aWRlbycsXG4gICAgJ29nOmF1ZGlvJ1xuXSk7XG5mdW5jdGlvbiBnZXRNZXRhS2V5KHByZWZpeCwga2V5KSB7XG4gICAgLy8gVXNlIGB0d2l0dGVyOmltYWdlYCBhbmQgYG9nOmltYWdlYCBpbnN0ZWFkIG9mIGB0d2l0dGVyOmltYWdlOnVybGAgYW5kIGBvZzppbWFnZTp1cmxgXG4gICAgLy8gdG8gYmUgbW9yZSBjb21wYXRpYmxlIGFzIGl0J3MgYSBtb3JlIGNvbW1vbiBmb3JtYXQuXG4gICAgLy8gYG9nOnZpZGVvYCAmIGBvZzphdWRpb2AgZG8gbm90IGhhdmUgYSBgOnVybGAgc3VmZml4IGFsaWFzXG4gICAgaWYgKGFsaWFzUHJvcFByZWZpeGVzLmhhcyhwcmVmaXgpICYmIGtleSA9PT0gJ3VybCcpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG4gICAgaWYgKHByZWZpeC5zdGFydHNXaXRoKCdvZzonKSB8fCBwcmVmaXguc3RhcnRzV2l0aCgndHdpdHRlcjonKSkge1xuICAgICAgICBrZXkgPSBjYW1lbFRvU25ha2Uoa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArICc6JyArIGtleTtcbn1cbmZ1bmN0aW9uIEV4dGVuZE1ldGEoeyBjb250ZW50LCBuYW1lUHJlZml4LCBwcm9wZXJ0eVByZWZpeCB9KSB7XG4gICAgaWYgKCFjb250ZW50KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gTWV0YUZpbHRlcihPYmplY3QuZW50cmllcyhjb250ZW50KS5tYXAoKFtrLCB2XSk9PntcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBNZXRhKHtcbiAgICAgICAgICAgIC4uLnByb3BlcnR5UHJlZml4ICYmIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eTogZ2V0TWV0YUtleShwcm9wZXJ0eVByZWZpeCwgaylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5uYW1lUHJlZml4ICYmIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBnZXRNZXRhS2V5KG5hbWVQcmVmaXgsIGspXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGVudDogdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gdiA6IHYgPT0gbnVsbCA/IHZvaWQgMCA6IHYudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICB9KSk7XG59XG5mdW5jdGlvbiBNdWx0aU1ldGEoeyBwcm9wZXJ0eVByZWZpeCwgbmFtZVByZWZpeCwgY29udGVudHMgfSkge1xuICAgIGlmICh0eXBlb2YgY29udGVudHMgPT09ICd1bmRlZmluZWQnIHx8IGNvbnRlbnRzID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gTWV0YUZpbHRlcihjb250ZW50cy5tYXAoKGNvbnRlbnQpPT57XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNvbnRlbnQgPT09ICdudW1iZXInIHx8IGNvbnRlbnQgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICAgICAgICAgIHJldHVybiBNZXRhKHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wZXJ0eVByZWZpeCA/IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5UHJlZml4XG4gICAgICAgICAgICAgICAgfSA6IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZVByZWZpeFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29udGVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gRXh0ZW5kTWV0YSh7XG4gICAgICAgICAgICAgICAgbmFtZVByZWZpeCxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeCxcbiAgICAgICAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWV0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/opengraph.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/opengraph.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n AppLinksMeta: function() {\n return AppLinksMeta;\n },\n OpenGraphMetadata: function() {\n return OpenGraphMetadata;\n },\n TwitterMetadata: function() {\n return TwitterMetadata;\n }\n});\nconst _meta = __webpack_require__(/*! ./meta */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\");\nfunction OpenGraphMetadata({ openGraph }) {\n var _openGraph_title, _openGraph_url, _openGraph_ttl;\n if (!openGraph) {\n return null;\n }\n let typedOpenGraph;\n if ('type' in openGraph) {\n const openGraphType = openGraph.type;\n switch(openGraphType){\n case 'website':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'website'\n })\n ];\n break;\n case 'article':\n var _openGraph_publishedTime, _openGraph_modifiedTime, _openGraph_expirationTime;\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'article'\n }),\n (0, _meta.Meta)({\n property: 'article:published_time',\n content: (_openGraph_publishedTime = openGraph.publishedTime) == null ? void 0 : _openGraph_publishedTime.toString()\n }),\n (0, _meta.Meta)({\n property: 'article:modified_time',\n content: (_openGraph_modifiedTime = openGraph.modifiedTime) == null ? void 0 : _openGraph_modifiedTime.toString()\n }),\n (0, _meta.Meta)({\n property: 'article:expiration_time',\n content: (_openGraph_expirationTime = openGraph.expirationTime) == null ? void 0 : _openGraph_expirationTime.toString()\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'article:author',\n contents: openGraph.authors\n }),\n (0, _meta.Meta)({\n property: 'article:section',\n content: openGraph.section\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'article:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'book':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'book'\n }),\n (0, _meta.Meta)({\n property: 'book:isbn',\n content: openGraph.isbn\n }),\n (0, _meta.Meta)({\n property: 'book:release_date',\n content: openGraph.releaseDate\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'book:author',\n contents: openGraph.authors\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'book:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'profile':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'profile'\n }),\n (0, _meta.Meta)({\n property: 'profile:first_name',\n content: openGraph.firstName\n }),\n (0, _meta.Meta)({\n property: 'profile:last_name',\n content: openGraph.lastName\n }),\n (0, _meta.Meta)({\n property: 'profile:username',\n content: openGraph.username\n }),\n (0, _meta.Meta)({\n property: 'profile:gender',\n content: openGraph.gender\n })\n ];\n break;\n case 'music.song':\n var _openGraph_duration;\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'music.song'\n }),\n (0, _meta.Meta)({\n property: 'music:duration',\n content: (_openGraph_duration = openGraph.duration) == null ? void 0 : _openGraph_duration.toString()\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:album',\n contents: openGraph.albums\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:musician',\n contents: openGraph.musicians\n })\n ];\n break;\n case 'music.album':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'music.album'\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:song',\n contents: openGraph.songs\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:musician',\n contents: openGraph.musicians\n }),\n (0, _meta.Meta)({\n property: 'music:release_date',\n content: openGraph.releaseDate\n })\n ];\n break;\n case 'music.playlist':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'music.playlist'\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:song',\n contents: openGraph.songs\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:creator',\n contents: openGraph.creators\n })\n ];\n break;\n case 'music.radio_station':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'music.radio_station'\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'music:creator',\n contents: openGraph.creators\n })\n ];\n break;\n case 'video.movie':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'video.movie'\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:actor',\n contents: openGraph.actors\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:director',\n contents: openGraph.directors\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:writer',\n contents: openGraph.writers\n }),\n (0, _meta.Meta)({\n property: 'video:duration',\n content: openGraph.duration\n }),\n (0, _meta.Meta)({\n property: 'video:release_date',\n content: openGraph.releaseDate\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'video.episode':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'video.episode'\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:actor',\n contents: openGraph.actors\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:director',\n contents: openGraph.directors\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:writer',\n contents: openGraph.writers\n }),\n (0, _meta.Meta)({\n property: 'video:duration',\n content: openGraph.duration\n }),\n (0, _meta.Meta)({\n property: 'video:release_date',\n content: openGraph.releaseDate\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'video:tag',\n contents: openGraph.tags\n }),\n (0, _meta.Meta)({\n property: 'video:series',\n content: openGraph.series\n })\n ];\n break;\n case 'video.tv_show':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'video.tv_show'\n })\n ];\n break;\n case 'video.other':\n typedOpenGraph = [\n (0, _meta.Meta)({\n property: 'og:type',\n content: 'video.other'\n })\n ];\n break;\n default:\n const _exhaustiveCheck = openGraphType;\n throw Object.defineProperty(new Error(`Invalid OpenGraph type: ${_exhaustiveCheck}`), \"__NEXT_ERROR_CODE\", {\n value: \"E237\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return (0, _meta.MetaFilter)([\n (0, _meta.Meta)({\n property: 'og:determiner',\n content: openGraph.determiner\n }),\n (0, _meta.Meta)({\n property: 'og:title',\n content: (_openGraph_title = openGraph.title) == null ? void 0 : _openGraph_title.absolute\n }),\n (0, _meta.Meta)({\n property: 'og:description',\n content: openGraph.description\n }),\n (0, _meta.Meta)({\n property: 'og:url',\n content: (_openGraph_url = openGraph.url) == null ? void 0 : _openGraph_url.toString()\n }),\n (0, _meta.Meta)({\n property: 'og:site_name',\n content: openGraph.siteName\n }),\n (0, _meta.Meta)({\n property: 'og:locale',\n content: openGraph.locale\n }),\n (0, _meta.Meta)({\n property: 'og:country_name',\n content: openGraph.countryName\n }),\n (0, _meta.Meta)({\n property: 'og:ttl',\n content: (_openGraph_ttl = openGraph.ttl) == null ? void 0 : _openGraph_ttl.toString()\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:image',\n contents: openGraph.images\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:video',\n contents: openGraph.videos\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:audio',\n contents: openGraph.audio\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:email',\n contents: openGraph.emails\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:phone_number',\n contents: openGraph.phoneNumbers\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:fax_number',\n contents: openGraph.faxNumbers\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'og:locale:alternate',\n contents: openGraph.alternateLocale\n }),\n ...typedOpenGraph ? typedOpenGraph : []\n ]);\n}\nfunction TwitterAppItem({ app, type }) {\n var _app_url_type, _app_url;\n return [\n (0, _meta.Meta)({\n name: `twitter:app:name:${type}`,\n content: app.name\n }),\n (0, _meta.Meta)({\n name: `twitter:app:id:${type}`,\n content: app.id[type]\n }),\n (0, _meta.Meta)({\n name: `twitter:app:url:${type}`,\n content: (_app_url = app.url) == null ? void 0 : (_app_url_type = _app_url[type]) == null ? void 0 : _app_url_type.toString()\n })\n ];\n}\nfunction TwitterMetadata({ twitter }) {\n var _twitter_title;\n if (!twitter) return null;\n const { card } = twitter;\n return (0, _meta.MetaFilter)([\n (0, _meta.Meta)({\n name: 'twitter:card',\n content: card\n }),\n (0, _meta.Meta)({\n name: 'twitter:site',\n content: twitter.site\n }),\n (0, _meta.Meta)({\n name: 'twitter:site:id',\n content: twitter.siteId\n }),\n (0, _meta.Meta)({\n name: 'twitter:creator',\n content: twitter.creator\n }),\n (0, _meta.Meta)({\n name: 'twitter:creator:id',\n content: twitter.creatorId\n }),\n (0, _meta.Meta)({\n name: 'twitter:title',\n content: (_twitter_title = twitter.title) == null ? void 0 : _twitter_title.absolute\n }),\n (0, _meta.Meta)({\n name: 'twitter:description',\n content: twitter.description\n }),\n (0, _meta.MultiMeta)({\n namePrefix: 'twitter:image',\n contents: twitter.images\n }),\n ...card === 'player' ? twitter.players.flatMap((player)=>[\n (0, _meta.Meta)({\n name: 'twitter:player',\n content: player.playerUrl.toString()\n }),\n (0, _meta.Meta)({\n name: 'twitter:player:stream',\n content: player.streamUrl.toString()\n }),\n (0, _meta.Meta)({\n name: 'twitter:player:width',\n content: player.width\n }),\n (0, _meta.Meta)({\n name: 'twitter:player:height',\n content: player.height\n })\n ]) : [],\n ...card === 'app' ? [\n TwitterAppItem({\n app: twitter.app,\n type: 'iphone'\n }),\n TwitterAppItem({\n app: twitter.app,\n type: 'ipad'\n }),\n TwitterAppItem({\n app: twitter.app,\n type: 'googleplay'\n })\n ] : []\n ]);\n}\nfunction AppLinksMeta({ appLinks }) {\n if (!appLinks) return null;\n return (0, _meta.MetaFilter)([\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:ios',\n contents: appLinks.ios\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:iphone',\n contents: appLinks.iphone\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:ipad',\n contents: appLinks.ipad\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:android',\n contents: appLinks.android\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:windows_phone',\n contents: appLinks.windows_phone\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:windows',\n contents: appLinks.windows\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:windows_universal',\n contents: appLinks.windows_universal\n }),\n (0, _meta.MultiMeta)({\n propertyPrefix: 'al:web',\n contents: appLinks.web\n })\n ]);\n}\n\n//# sourceMappingURL=opengraph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9vcGVuZ3JhcGguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxjQUFjLG1CQUFPLENBQUMsNEVBQVE7QUFDOUIsNkJBQTZCLFdBQVc7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUZBQWlGLGlCQUFpQjtBQUNsRztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLEtBQUs7QUFDM0M7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxvQ0FBb0MsS0FBSztBQUN6QztBQUNBLFNBQVM7QUFDVDtBQUNBLHFDQUFxQyxLQUFLO0FBQzFDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSwyQkFBMkIsU0FBUztBQUNwQztBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFVBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxcZ2VuZXJhdGVcXG9wZW5ncmFwaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEFwcExpbmtzTWV0YTogbnVsbCxcbiAgICBPcGVuR3JhcGhNZXRhZGF0YTogbnVsbCxcbiAgICBUd2l0dGVyTWV0YWRhdGE6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQXBwTGlua3NNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFwcExpbmtzTWV0YTtcbiAgICB9LFxuICAgIE9wZW5HcmFwaE1ldGFkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE9wZW5HcmFwaE1ldGFkYXRhO1xuICAgIH0sXG4gICAgVHdpdHRlck1ldGFkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFR3aXR0ZXJNZXRhZGF0YTtcbiAgICB9XG59KTtcbmNvbnN0IF9tZXRhID0gcmVxdWlyZShcIi4vbWV0YVwiKTtcbmZ1bmN0aW9uIE9wZW5HcmFwaE1ldGFkYXRhKHsgb3BlbkdyYXBoIH0pIHtcbiAgICB2YXIgX29wZW5HcmFwaF90aXRsZSwgX29wZW5HcmFwaF91cmwsIF9vcGVuR3JhcGhfdHRsO1xuICAgIGlmICghb3BlbkdyYXBoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgdHlwZWRPcGVuR3JhcGg7XG4gICAgaWYgKCd0eXBlJyBpbiBvcGVuR3JhcGgpIHtcbiAgICAgICAgY29uc3Qgb3BlbkdyYXBoVHlwZSA9IG9wZW5HcmFwaC50eXBlO1xuICAgICAgICBzd2l0Y2gob3BlbkdyYXBoVHlwZSl7XG4gICAgICAgICAgICBjYXNlICd3ZWJzaXRlJzpcbiAgICAgICAgICAgICAgICB0eXBlZE9wZW5HcmFwaCA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnd2Vic2l0ZSdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXJ0aWNsZSc6XG4gICAgICAgICAgICAgICAgdmFyIF9vcGVuR3JhcGhfcHVibGlzaGVkVGltZSwgX29wZW5HcmFwaF9tb2RpZmllZFRpbWUsIF9vcGVuR3JhcGhfZXhwaXJhdGlvblRpbWU7XG4gICAgICAgICAgICAgICAgdHlwZWRPcGVuR3JhcGggPSBbXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ2FydGljbGUnXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdhcnRpY2xlOnB1Ymxpc2hlZF90aW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChfb3BlbkdyYXBoX3B1Ymxpc2hlZFRpbWUgPSBvcGVuR3JhcGgucHVibGlzaGVkVGltZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vcGVuR3JhcGhfcHVibGlzaGVkVGltZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdhcnRpY2xlOm1vZGlmaWVkX3RpbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogKF9vcGVuR3JhcGhfbW9kaWZpZWRUaW1lID0gb3BlbkdyYXBoLm1vZGlmaWVkVGltZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vcGVuR3JhcGhfbW9kaWZpZWRUaW1lLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ2FydGljbGU6ZXhwaXJhdGlvbl90aW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChfb3BlbkdyYXBoX2V4cGlyYXRpb25UaW1lID0gb3BlbkdyYXBoLmV4cGlyYXRpb25UaW1lKSA9PSBudWxsID8gdm9pZCAwIDogX29wZW5HcmFwaF9leHBpcmF0aW9uVGltZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ2FydGljbGU6YXV0aG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguYXV0aG9yc1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnYXJ0aWNsZTpzZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5zZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ2FydGljbGU6dGFnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGgudGFnc1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib29rJzpcbiAgICAgICAgICAgICAgICB0eXBlZE9wZW5HcmFwaCA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnYm9vaydcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ2Jvb2s6aXNibicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBvcGVuR3JhcGguaXNiblxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnYm9vazpyZWxlYXNlX2RhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLnJlbGVhc2VEYXRlXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ2Jvb2s6YXV0aG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguYXV0aG9yc1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdib29rOnRhZycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJvZmlsZSc6XG4gICAgICAgICAgICAgICAgdHlwZWRPcGVuR3JhcGggPSBbXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ3Byb2ZpbGUnXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdwcm9maWxlOmZpcnN0X25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLmZpcnN0TmFtZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncHJvZmlsZTpsYXN0X25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLmxhc3ROYW1lXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdwcm9maWxlOnVzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC51c2VybmFtZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncHJvZmlsZTpnZW5kZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLmdlbmRlclxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtdXNpYy5zb25nJzpcbiAgICAgICAgICAgICAgICB2YXIgX29wZW5HcmFwaF9kdXJhdGlvbjtcbiAgICAgICAgICAgICAgICB0eXBlZE9wZW5HcmFwaCA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnbXVzaWMuc29uZydcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ211c2ljOmR1cmF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IChfb3BlbkdyYXBoX2R1cmF0aW9uID0gb3BlbkdyYXBoLmR1cmF0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX29wZW5HcmFwaF9kdXJhdGlvbi50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ211c2ljOmFsYnVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguYWxidW1zXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ211c2ljOm11c2ljaWFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGgubXVzaWNpYW5zXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ211c2ljLmFsYnVtJzpcbiAgICAgICAgICAgICAgICB0eXBlZE9wZW5HcmFwaCA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnbXVzaWMuYWxidW0nXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ211c2ljOnNvbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHM6IG9wZW5HcmFwaC5zb25nc1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdtdXNpYzptdXNpY2lhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLm11c2ljaWFuc1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnbXVzaWM6cmVsZWFzZV9kYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5yZWxlYXNlRGF0ZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtdXNpYy5wbGF5bGlzdCc6XG4gICAgICAgICAgICAgICAgdHlwZWRPcGVuR3JhcGggPSBbXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ211c2ljLnBsYXlsaXN0J1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdtdXNpYzpzb25nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguc29uZ3NcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnbXVzaWM6Y3JlYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLmNyZWF0b3JzXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ211c2ljLnJhZGlvX3N0YXRpb24nOlxuICAgICAgICAgICAgICAgIHR5cGVkT3BlbkdyYXBoID0gW1xuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdvZzp0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdtdXNpYy5yYWRpb19zdGF0aW9uJ1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdtdXNpYzpjcmVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguY3JlYXRvcnNcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8ubW92aWUnOlxuICAgICAgICAgICAgICAgIHR5cGVkT3BlbkdyYXBoID0gW1xuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdvZzp0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICd2aWRlby5tb3ZpZSdcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAndmlkZW86YWN0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHM6IG9wZW5HcmFwaC5hY3RvcnNcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAndmlkZW86ZGlyZWN0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHM6IG9wZW5HcmFwaC5kaXJlY3RvcnNcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAndmlkZW86d3JpdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGgud3JpdGVyc1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAndmlkZW86ZHVyYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLmR1cmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICd2aWRlbzpyZWxlYXNlX2RhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLnJlbGVhc2VEYXRlXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ3ZpZGVvOnRhZycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8uZXBpc29kZSc6XG4gICAgICAgICAgICAgICAgdHlwZWRPcGVuR3JhcGggPSBbXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ3ZpZGVvLmVwaXNvZGUnXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ3ZpZGVvOmFjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguYWN0b3JzXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ3ZpZGVvOmRpcmVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguZGlyZWN0b3JzXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ3ZpZGVvOndyaXRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLndyaXRlcnNcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3ZpZGVvOmR1cmF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5kdXJhdGlvblxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAndmlkZW86cmVsZWFzZV9kYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5yZWxlYXNlRGF0ZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICd2aWRlbzp0YWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHM6IG9wZW5HcmFwaC50YWdzXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICd2aWRlbzpzZXJpZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogb3BlbkdyYXBoLnNlcmllc1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2aWRlby50dl9zaG93JzpcbiAgICAgICAgICAgICAgICB0eXBlZE9wZW5HcmFwaCA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAndmlkZW8udHZfc2hvdydcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8ub3RoZXInOlxuICAgICAgICAgICAgICAgIHR5cGVkT3BlbkdyYXBoID0gW1xuICAgICAgICAgICAgICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdvZzp0eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICd2aWRlby5vdGhlcidcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrID0gb3BlbkdyYXBoVHlwZTtcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhbGlkIE9wZW5HcmFwaCB0eXBlOiAke19leGhhdXN0aXZlQ2hlY2t9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMjM3XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6ZGV0ZXJtaW5lcicsXG4gICAgICAgICAgICBjb250ZW50OiBvcGVuR3JhcGguZGV0ZXJtaW5lclxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6dGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogKF9vcGVuR3JhcGhfdGl0bGUgPSBvcGVuR3JhcGgudGl0bGUpID09IG51bGwgPyB2b2lkIDAgOiBfb3BlbkdyYXBoX3RpdGxlLmFic29sdXRlXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHk6ICdvZzpkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICBjb250ZW50OiBvcGVuR3JhcGguZGVzY3JpcHRpb25cbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnVybCcsXG4gICAgICAgICAgICBjb250ZW50OiAoX29wZW5HcmFwaF91cmwgPSBvcGVuR3JhcGgudXJsKSA9PSBudWxsID8gdm9pZCAwIDogX29wZW5HcmFwaF91cmwudG9TdHJpbmcoKVxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6c2l0ZV9uYW1lJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5zaXRlTmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5OiAnb2c6bG9jYWxlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG9wZW5HcmFwaC5sb2NhbGVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogJ29nOmNvdW50cnlfbmFtZScsXG4gICAgICAgICAgICBjb250ZW50OiBvcGVuR3JhcGguY291bnRyeU5hbWVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogJ29nOnR0bCcsXG4gICAgICAgICAgICBjb250ZW50OiAoX29wZW5HcmFwaF90dGwgPSBvcGVuR3JhcGgudHRsKSA9PSBudWxsID8gdm9pZCAwIDogX29wZW5HcmFwaF90dGwudG9TdHJpbmcoKVxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdvZzppbWFnZScsXG4gICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLmltYWdlc1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdvZzp2aWRlbycsXG4gICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLnZpZGVvc1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdvZzphdWRpbycsXG4gICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLmF1ZGlvXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ29nOmVtYWlsJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguZW1haWxzXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ29nOnBob25lX251bWJlcicsXG4gICAgICAgICAgICBjb250ZW50czogb3BlbkdyYXBoLnBob25lTnVtYmVyc1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdvZzpmYXhfbnVtYmVyJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguZmF4TnVtYmVyc1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdvZzpsb2NhbGU6YWx0ZXJuYXRlJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBvcGVuR3JhcGguYWx0ZXJuYXRlTG9jYWxlXG4gICAgICAgIH0pLFxuICAgICAgICAuLi50eXBlZE9wZW5HcmFwaCA/IHR5cGVkT3BlbkdyYXBoIDogW11cbiAgICBdKTtcbn1cbmZ1bmN0aW9uIFR3aXR0ZXJBcHBJdGVtKHsgYXBwLCB0eXBlIH0pIHtcbiAgICB2YXIgX2FwcF91cmxfdHlwZSwgX2FwcF91cmw7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgIG5hbWU6IGB0d2l0dGVyOmFwcDpuYW1lOiR7dHlwZX1gLFxuICAgICAgICAgICAgY29udGVudDogYXBwLm5hbWVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiBgdHdpdHRlcjphcHA6aWQ6JHt0eXBlfWAsXG4gICAgICAgICAgICBjb250ZW50OiBhcHAuaWRbdHlwZV1cbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiBgdHdpdHRlcjphcHA6dXJsOiR7dHlwZX1gLFxuICAgICAgICAgICAgY29udGVudDogKF9hcHBfdXJsID0gYXBwLnVybCkgPT0gbnVsbCA/IHZvaWQgMCA6IChfYXBwX3VybF90eXBlID0gX2FwcF91cmxbdHlwZV0pID09IG51bGwgPyB2b2lkIDAgOiBfYXBwX3VybF90eXBlLnRvU3RyaW5nKClcbiAgICAgICAgfSlcbiAgICBdO1xufVxuZnVuY3Rpb24gVHdpdHRlck1ldGFkYXRhKHsgdHdpdHRlciB9KSB7XG4gICAgdmFyIF90d2l0dGVyX3RpdGxlO1xuICAgIGlmICghdHdpdHRlcikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBjYXJkIH0gPSB0d2l0dGVyO1xuICAgIHJldHVybiAoMCwgX21ldGEuTWV0YUZpbHRlcikoW1xuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6Y2FyZCcsXG4gICAgICAgICAgICBjb250ZW50OiBjYXJkXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6c2l0ZScsXG4gICAgICAgICAgICBjb250ZW50OiB0d2l0dGVyLnNpdGVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAndHdpdHRlcjpzaXRlOmlkJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR3aXR0ZXIuc2l0ZUlkXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6Y3JlYXRvcicsXG4gICAgICAgICAgICBjb250ZW50OiB0d2l0dGVyLmNyZWF0b3JcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICBuYW1lOiAndHdpdHRlcjpjcmVhdG9yOmlkJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR3aXR0ZXIuY3JlYXRvcklkXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6dGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogKF90d2l0dGVyX3RpdGxlID0gdHdpdHRlci50aXRsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90d2l0dGVyX3RpdGxlLmFic29sdXRlXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTWV0YSkoe1xuICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6ZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgY29udGVudDogdHdpdHRlci5kZXNjcmlwdGlvblxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgbmFtZVByZWZpeDogJ3R3aXR0ZXI6aW1hZ2UnLFxuICAgICAgICAgICAgY29udGVudHM6IHR3aXR0ZXIuaW1hZ2VzXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jYXJkID09PSAncGxheWVyJyA/IHR3aXR0ZXIucGxheWVycy5mbGF0TWFwKChwbGF5ZXIpPT5bXG4gICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6cGxheWVyJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcGxheWVyLnBsYXllclVybC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKDAsIF9tZXRhLk1ldGEpKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3R3aXR0ZXI6cGxheWVyOnN0cmVhbScsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBsYXllci5zdHJlYW1VcmwudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0d2l0dGVyOnBsYXllcjp3aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBsYXllci53aWR0aFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICgwLCBfbWV0YS5NZXRhKSh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0d2l0dGVyOnBsYXllcjpoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwbGF5ZXIuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pIDogW10sXG4gICAgICAgIC4uLmNhcmQgPT09ICdhcHAnID8gW1xuICAgICAgICAgICAgVHdpdHRlckFwcEl0ZW0oe1xuICAgICAgICAgICAgICAgIGFwcDogdHdpdHRlci5hcHAsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2lwaG9uZSdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgVHdpdHRlckFwcEl0ZW0oe1xuICAgICAgICAgICAgICAgIGFwcDogdHdpdHRlci5hcHAsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2lwYWQnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFR3aXR0ZXJBcHBJdGVtKHtcbiAgICAgICAgICAgICAgICBhcHA6IHR3aXR0ZXIuYXBwLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdnb29nbGVwbGF5J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXSA6IFtdXG4gICAgXSk7XG59XG5mdW5jdGlvbiBBcHBMaW5rc01ldGEoeyBhcHBMaW5rcyB9KSB7XG4gICAgaWYgKCFhcHBMaW5rcykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuICgwLCBfbWV0YS5NZXRhRmlsdGVyKShbXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnYWw6aW9zJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBhcHBMaW5rcy5pb3NcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnYWw6aXBob25lJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBhcHBMaW5rcy5pcGhvbmVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnYWw6aXBhZCcsXG4gICAgICAgICAgICBjb250ZW50czogYXBwTGlua3MuaXBhZFxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdhbDphbmRyb2lkJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBhcHBMaW5rcy5hbmRyb2lkXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX21ldGEuTXVsdGlNZXRhKSh7XG4gICAgICAgICAgICBwcm9wZXJ0eVByZWZpeDogJ2FsOndpbmRvd3NfcGhvbmUnLFxuICAgICAgICAgICAgY29udGVudHM6IGFwcExpbmtzLndpbmRvd3NfcGhvbmVcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnYWw6d2luZG93cycsXG4gICAgICAgICAgICBjb250ZW50czogYXBwTGlua3Mud2luZG93c1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9tZXRhLk11bHRpTWV0YSkoe1xuICAgICAgICAgICAgcHJvcGVydHlQcmVmaXg6ICdhbDp3aW5kb3dzX3VuaXZlcnNhbCcsXG4gICAgICAgICAgICBjb250ZW50czogYXBwTGlua3Mud2luZG93c191bml2ZXJzYWxcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfbWV0YS5NdWx0aU1ldGEpKHtcbiAgICAgICAgICAgIHByb3BlcnR5UHJlZml4OiAnYWw6d2ViJyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiBhcHBMaW5rcy53ZWJcbiAgICAgICAgfSlcbiAgICBdKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3BlbmdyYXBoLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/opengraph.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/utils.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getOrigin: function() {\n return getOrigin;\n },\n resolveArray: function() {\n return resolveArray;\n },\n resolveAsArrayOrUndefined: function() {\n return resolveAsArrayOrUndefined;\n }\n});\nfunction resolveArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return [\n value\n ];\n}\nfunction resolveAsArrayOrUndefined(value) {\n if (typeof value === 'undefined' || value === null) {\n return undefined;\n }\n return resolveArray(value);\n}\nfunction getOrigin(url) {\n let origin = undefined;\n if (typeof url === 'string') {\n try {\n url = new URL(url);\n origin = url.origin;\n } catch {}\n }\n return origin;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxnZW5lcmF0ZVxcdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRPcmlnaW46IG51bGwsXG4gICAgcmVzb2x2ZUFycmF5OiBudWxsLFxuICAgIHJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0T3JpZ2luOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldE9yaWdpbjtcbiAgICB9LFxuICAgIHJlc29sdmVBcnJheTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXJyYXk7XG4gICAgfSxcbiAgICByZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQ7XG4gICAgfVxufSk7XG5mdW5jdGlvbiByZXNvbHZlQXJyYXkodmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgICB2YWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiByZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVBcnJheSh2YWx1ZSk7XG59XG5mdW5jdGlvbiBnZXRPcmlnaW4odXJsKSB7XG4gICAgbGV0IG9yaWdpbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgICAgIG9yaWdpbiA9IHVybC5vcmlnaW47XG4gICAgICAgIH0gY2F0Y2ggIHt9XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW47XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/metadata.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/metadata.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createMetadataComponents\", ({\n enumerable: true,\n get: function() {\n return createMetadataComponents;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _basic = __webpack_require__(/*! ./generate/basic */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/basic.js\");\nconst _alternate = __webpack_require__(/*! ./generate/alternate */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/alternate.js\");\nconst _opengraph = __webpack_require__(/*! ./generate/opengraph */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/opengraph.js\");\nconst _icons = __webpack_require__(/*! ./generate/icons */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/icons.js\");\nconst _resolvemetadata = __webpack_require__(/*! ./resolve-metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js\");\nconst _meta = __webpack_require__(/*! ./generate/meta */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/meta.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ../../client/components/http-access-fallback/http-access-fallback */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _boundaryconstants = __webpack_require__(/*! ../framework/boundary-constants */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\nconst _asyncmetadata = __webpack_require__(/*! ../../client/components/metadata/async-metadata */ \"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js\");\nconst _ispostpone = __webpack_require__(/*! ../../server/lib/router-utils/is-postpone */ \"(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\");\nconst _searchparams = __webpack_require__(/*! ../../server/request/search-params */ \"(rsc)/./node_modules/next/dist/server/request/search-params.js\");\nconst _pathname = __webpack_require__(/*! ../../server/request/pathname */ \"(rsc)/./node_modules/next/dist/server/request/pathname.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction createMetadataComponents({ tree, pathname, parsedQuery, metadataContext, getDynamicParamFromSegment, appUsingSizeAdjustment, errorType, workStore, MetadataBoundary, ViewportBoundary, serveStreamingMetadata }) {\n const searchParams = (0, _searchparams.createServerSearchParamsForMetadata)(parsedQuery, workStore);\n const pathnameForMetadata = (0, _pathname.createServerPathnameForMetadata)(pathname, workStore);\n function ViewportTree() {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(ViewportBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Viewport, {})\n }),\n appUsingSizeAdjustment ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"next-size-adjust\",\n content: \"\"\n }) : null\n ]\n });\n }\n function MetadataTree() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataBoundary, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Metadata, {})\n });\n }\n function viewport() {\n return getResolvedViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorType);\n }\n async function Viewport() {\n try {\n return await viewport();\n } catch (error) {\n if (!errorType && (0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\n try {\n return await getNotFoundViewport(tree, searchParams, getDynamicParamFromSegment, workStore);\n } catch {}\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null;\n }\n }\n Viewport.displayName = _boundaryconstants.VIEWPORT_BOUNDARY_NAME;\n function metadata() {\n return getResolvedMetadata(tree, pathnameForMetadata, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorType);\n }\n async function resolveFinalMetadata() {\n let result;\n let error = null;\n try {\n result = await metadata();\n return {\n metadata: result,\n error: null,\n digest: undefined\n };\n } catch (metadataErr) {\n error = metadataErr;\n if (!errorType && (0, _httpaccessfallback.isHTTPAccessFallbackError)(metadataErr)) {\n try {\n result = await getNotFoundMetadata(tree, pathnameForMetadata, searchParams, getDynamicParamFromSegment, metadataContext, workStore);\n return {\n metadata: result,\n error,\n digest: error == null ? void 0 : error.digest\n };\n } catch (notFoundMetadataErr) {\n error = notFoundMetadataErr;\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && (0, _ispostpone.isPostpone)(notFoundMetadataErr)) {\n throw notFoundMetadataErr;\n }\n }\n }\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && (0, _ispostpone.isPostpone)(metadataErr)) {\n throw metadataErr;\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return {\n metadata: result,\n error,\n digest: error == null ? void 0 : error.digest\n };\n }\n }\n function Metadata() {\n if (!serveStreamingMetadata) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataResolver, {});\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n hidden: true,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n fallback: null,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataResolver, {})\n })\n });\n }\n async function MetadataResolver() {\n const metadataState = await resolveFinalMetadata();\n return metadataState.metadata;\n }\n Metadata.displayName = _boundaryconstants.METADATA_BOUNDARY_NAME;\n async function getMetadataReady() {\n // Only warm up metadata() call when it's blocking metadata,\n // otherwise it will be fully managed by AsyncMetadata component.\n if (!serveStreamingMetadata) {\n await metadata();\n }\n return undefined;\n }\n async function getViewportReady() {\n await viewport();\n return undefined;\n }\n function StreamingMetadataOutletImpl() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_asyncmetadata.AsyncMetadataOutlet, {\n promise: resolveFinalMetadata()\n });\n }\n const StreamingMetadataOutlet = serveStreamingMetadata ? StreamingMetadataOutletImpl : null;\n return {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n StreamingMetadataOutlet\n };\n}\nconst getResolvedMetadata = (0, _react.cache)(getResolvedMetadataImpl);\nasync function getResolvedMetadataImpl(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorConvention);\n}\nconst getNotFoundMetadata = (0, _react.cache)(getNotFoundMetadataImpl);\nasync function getNotFoundMetadataImpl(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore) {\n const notFoundErrorConvention = 'not-found';\n return renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, notFoundErrorConvention);\n}\nconst getResolvedViewport = (0, _react.cache)(getResolvedViewportImpl);\nasync function getResolvedViewportImpl(tree, searchParams, getDynamicParamFromSegment, workStore, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorConvention);\n}\nconst getNotFoundViewport = (0, _react.cache)(getNotFoundViewportImpl);\nasync function getNotFoundViewportImpl(tree, searchParams, getDynamicParamFromSegment, workStore) {\n const notFoundErrorConvention = 'not-found';\n return renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, notFoundErrorConvention);\n}\nasync function renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorConvention) {\n const resolvedMetadata = await (0, _resolvemetadata.resolveMetadata)(tree, pathname, searchParams, errorConvention, getDynamicParamFromSegment, workStore, metadataContext);\n const elements = createMetadataElements(resolvedMetadata);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: elements.map((el, index)=>{\n return /*#__PURE__*/ (0, _react.cloneElement)(el, {\n key: index\n });\n })\n });\n}\nasync function renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorConvention) {\n const resolvedViewport = await (0, _resolvemetadata.resolveViewport)(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n const elements = createViewportElements(resolvedViewport);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: elements.map((el, index)=>{\n return /*#__PURE__*/ (0, _react.cloneElement)(el, {\n key: index\n });\n })\n });\n}\nfunction createMetadataElements(metadata) {\n return (0, _meta.MetaFilter)([\n (0, _basic.BasicMeta)({\n metadata\n }),\n (0, _alternate.AlternatesMetadata)({\n alternates: metadata.alternates\n }),\n (0, _basic.ItunesMeta)({\n itunes: metadata.itunes\n }),\n (0, _basic.FacebookMeta)({\n facebook: metadata.facebook\n }),\n (0, _basic.PinterestMeta)({\n pinterest: metadata.pinterest\n }),\n (0, _basic.FormatDetectionMeta)({\n formatDetection: metadata.formatDetection\n }),\n (0, _basic.VerificationMeta)({\n verification: metadata.verification\n }),\n (0, _basic.AppleWebAppMeta)({\n appleWebApp: metadata.appleWebApp\n }),\n (0, _opengraph.OpenGraphMetadata)({\n openGraph: metadata.openGraph\n }),\n (0, _opengraph.TwitterMetadata)({\n twitter: metadata.twitter\n }),\n (0, _opengraph.AppLinksMeta)({\n appLinks: metadata.appLinks\n }),\n (0, _icons.IconsMetadata)({\n icons: metadata.icons\n })\n ]);\n}\nfunction createViewportElements(viewport) {\n return (0, _meta.MetaFilter)([\n (0, _basic.ViewportMeta)({\n viewport: viewport\n })\n ]);\n}\n\n//# sourceMappingURL=metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9tZXRhZGF0YS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDREQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLG9CQUFvQixtQkFBTyxDQUFDLHlIQUFtQjtBQUMvQyx1REFBdUQsbUJBQU8sQ0FBQyxpR0FBTztBQUN0RSxlQUFlLG1CQUFPLENBQUMsdUZBQWtCO0FBQ3pDLG1CQUFtQixtQkFBTyxDQUFDLCtGQUFzQjtBQUNqRCxtQkFBbUIsbUJBQU8sQ0FBQywrRkFBc0I7QUFDakQsZUFBZSxtQkFBTyxDQUFDLHVGQUFrQjtBQUN6Qyx5QkFBeUIsbUJBQU8sQ0FBQywyRkFBb0I7QUFDckQsY0FBYyxtQkFBTyxDQUFDLHFGQUFpQjtBQUN2Qyw0QkFBNEIsbUJBQU8sQ0FBQyx3S0FBbUU7QUFDdkcsMkJBQTJCLG1CQUFPLENBQUMsMkdBQWlDO0FBQ3BFLHVCQUF1QixtQkFBTyxDQUFDLG9JQUFpRDtBQUNoRixvQkFBb0IsbUJBQU8sQ0FBQyx3SEFBMkM7QUFDdkUsc0JBQXNCLG1CQUFPLENBQUMsMEdBQW9DO0FBQ2xFLGtCQUFrQixtQkFBTyxDQUFDLGdHQUErQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxvTEFBb0w7QUFDeE47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EscUVBQXFFO0FBQ3JFLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRjtBQUNqRixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxcbWV0YWRhdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVNZXRhZGF0YUNvbXBvbmVudHNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU1ldGFkYXRhQ29tcG9uZW50cztcbiAgICB9XG59KTtcbmNvbnN0IF9qc3hydW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfYmFzaWMgPSByZXF1aXJlKFwiLi9nZW5lcmF0ZS9iYXNpY1wiKTtcbmNvbnN0IF9hbHRlcm5hdGUgPSByZXF1aXJlKFwiLi9nZW5lcmF0ZS9hbHRlcm5hdGVcIik7XG5jb25zdCBfb3BlbmdyYXBoID0gcmVxdWlyZShcIi4vZ2VuZXJhdGUvb3BlbmdyYXBoXCIpO1xuY29uc3QgX2ljb25zID0gcmVxdWlyZShcIi4vZ2VuZXJhdGUvaWNvbnNcIik7XG5jb25zdCBfcmVzb2x2ZW1ldGFkYXRhID0gcmVxdWlyZShcIi4vcmVzb2x2ZS1tZXRhZGF0YVwiKTtcbmNvbnN0IF9tZXRhID0gcmVxdWlyZShcIi4vZ2VuZXJhdGUvbWV0YVwiKTtcbmNvbnN0IF9odHRwYWNjZXNzZmFsbGJhY2sgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2tcIik7XG5jb25zdCBfYm91bmRhcnljb25zdGFudHMgPSByZXF1aXJlKFwiLi4vZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbnN0YW50c1wiKTtcbmNvbnN0IF9hc3luY21ldGFkYXRhID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL21ldGFkYXRhL2FzeW5jLW1ldGFkYXRhXCIpO1xuY29uc3QgX2lzcG9zdHBvbmUgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL2xpYi9yb3V0ZXItdXRpbHMvaXMtcG9zdHBvbmVcIik7XG5jb25zdCBfc2VhcmNocGFyYW1zID0gcmVxdWlyZShcIi4uLy4uL3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXNcIik7XG5jb25zdCBfcGF0aG5hbWUgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL3JlcXVlc3QvcGF0aG5hbWVcIik7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHtcbiAgICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1ldGFkYXRhQ29tcG9uZW50cyh7IHRyZWUsIHBhdGhuYW1lLCBwYXJzZWRRdWVyeSwgbWV0YWRhdGFDb250ZXh0LCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgYXBwVXNpbmdTaXplQWRqdXN0bWVudCwgZXJyb3JUeXBlLCB3b3JrU3RvcmUsIE1ldGFkYXRhQm91bmRhcnksIFZpZXdwb3J0Qm91bmRhcnksIHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgfSkge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9ICgwLCBfc2VhcmNocGFyYW1zLmNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhKShwYXJzZWRRdWVyeSwgd29ya1N0b3JlKTtcbiAgICBjb25zdCBwYXRobmFtZUZvck1ldGFkYXRhID0gKDAsIF9wYXRobmFtZS5jcmVhdGVTZXJ2ZXJQYXRobmFtZUZvck1ldGFkYXRhKShwYXRobmFtZSwgd29ya1N0b3JlKTtcbiAgICBmdW5jdGlvbiBWaWV3cG9ydFRyZWUoKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3hzKShfanN4cnVudGltZS5GcmFnbWVudCwge1xuICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFZpZXdwb3J0Qm91bmRhcnksIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoVmlld3BvcnQsIHt9KVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFwcFVzaW5nU2l6ZUFkanVzdG1lbnQgPyAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibmV4dC1zaXplLWFkanVzdFwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiXG4gICAgICAgICAgICAgICAgfSkgOiBudWxsXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBNZXRhZGF0YVRyZWUoKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKE1ldGFkYXRhQm91bmRhcnksIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKE1ldGFkYXRhLCB7fSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZpZXdwb3J0KCkge1xuICAgICAgICByZXR1cm4gZ2V0UmVzb2x2ZWRWaWV3cG9ydCh0cmVlLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUsIGVycm9yVHlwZSk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIFZpZXdwb3J0KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHZpZXdwb3J0KCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoIWVycm9yVHlwZSAmJiAoMCwgX2h0dHBhY2Nlc3NmYWxsYmFjay5pc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKShlcnJvcikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgZ2V0Tm90Rm91bmRWaWV3cG9ydCh0cmVlLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggIHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSB3YW50IHRvIGVycm9yIGluIHRoaXMgY29tcG9uZW50LiBXZSB3aWxsXG4gICAgICAgICAgICAvLyBhbHNvIGVycm9yIGluIHRoZSBNZXRhZGF0YU91dGxldCB3aGljaCBjYXVzZXMgdGhlIGVycm9yIHRvXG4gICAgICAgICAgICAvLyBidWJibGUgZnJvbSB0aGUgcmlnaHQgcG9zaXRpb24gaW4gdGhlIHBhZ2UgdG8gYmUgY2F1Z2h0IGJ5IHRoZVxuICAgICAgICAgICAgLy8gYXBwcm9wcmlhdGUgYm91bmRhcmllc1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgVmlld3BvcnQuZGlzcGxheU5hbWUgPSBfYm91bmRhcnljb25zdGFudHMuVklFV1BPUlRfQk9VTkRBUllfTkFNRTtcbiAgICBmdW5jdGlvbiBtZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIGdldFJlc29sdmVkTWV0YWRhdGEodHJlZSwgcGF0aG5hbWVGb3JNZXRhZGF0YSwgc2VhcmNoUGFyYW1zLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgbWV0YWRhdGFDb250ZXh0LCB3b3JrU3RvcmUsIGVycm9yVHlwZSk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVGaW5hbE1ldGFkYXRhKCkge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgbWV0YWRhdGEoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgICAgICBkaWdlc3Q6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAobWV0YWRhdGFFcnIpIHtcbiAgICAgICAgICAgIGVycm9yID0gbWV0YWRhdGFFcnI7XG4gICAgICAgICAgICBpZiAoIWVycm9yVHlwZSAmJiAoMCwgX2h0dHBhY2Nlc3NmYWxsYmFjay5pc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKShtZXRhZGF0YUVycikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBnZXROb3RGb3VuZE1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lRm9yTWV0YWRhdGEsIHNlYXJjaFBhcmFtcywgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIG1ldGFkYXRhQ29udGV4dCwgd29ya1N0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdDogZXJyb3IgPT0gbnVsbCA/IHZvaWQgMCA6IGVycm9yLmRpZ2VzdFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG5vdEZvdW5kTWV0YWRhdGFFcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBub3RGb3VuZE1ldGFkYXRhRXJyO1xuICAgICAgICAgICAgICAgICAgICAvLyBJbiBQUFIgcmVuZGVyaW5nIHdlIHN0aWxsIG5lZWQgdG8gdGhyb3cgdGhlIHBvc3Rwb25lIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBtZXRhZGF0YSBpcyBwb3N0cG9uZWQsIFJlYWN0IG5lZWRzIHRvIGJlIGF3YXJlIG9mIHRoZSBsb2NhdGlvbiBvZiBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgJiYgKDAsIF9pc3Bvc3Rwb25lLmlzUG9zdHBvbmUpKG5vdEZvdW5kTWV0YWRhdGFFcnIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBub3RGb3VuZE1ldGFkYXRhRXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW4gUFBSIHJlbmRlcmluZyB3ZSBzdGlsbCBuZWVkIHRvIHRocm93IHRoZSBwb3N0cG9uZSBlcnJvci5cbiAgICAgICAgICAgIC8vIElmIG1ldGFkYXRhIGlzIHBvc3Rwb25lZCwgUmVhY3QgbmVlZHMgdG8gYmUgYXdhcmUgb2YgdGhlIGxvY2F0aW9uIG9mIGVycm9yLlxuICAgICAgICAgICAgaWYgKHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgJiYgKDAsIF9pc3Bvc3Rwb25lLmlzUG9zdHBvbmUpKG1ldGFkYXRhRXJyKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG1ldGFkYXRhRXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBlcnJvciBpbiB0aGlzIGNvbXBvbmVudC4gV2Ugd2lsbFxuICAgICAgICAgICAgLy8gYWxzbyBlcnJvciBpbiB0aGUgTWV0YWRhdGFPdXRsZXQgd2hpY2ggY2F1c2VzIHRoZSBlcnJvciB0b1xuICAgICAgICAgICAgLy8gYnViYmxlIGZyb20gdGhlIHJpZ2h0IHBvc2l0aW9uIGluIHRoZSBwYWdlIHRvIGJlIGNhdWdodCBieSB0aGVcbiAgICAgICAgICAgIC8vIGFwcHJvcHJpYXRlIGJvdW5kYXJpZXNcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICBkaWdlc3Q6IGVycm9yID09IG51bGwgPyB2b2lkIDAgOiBlcnJvci5kaWdlc3RcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gTWV0YWRhdGEoKSB7XG4gICAgICAgIGlmICghc2VydmVTdHJlYW1pbmdNZXRhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoTWV0YWRhdGFSZXNvbHZlciwge30pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKF9yZWFjdC5TdXNwZW5zZSwge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrOiBudWxsLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKE1ldGFkYXRhUmVzb2x2ZXIsIHt9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIE1ldGFkYXRhUmVzb2x2ZXIoKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhU3RhdGUgPSBhd2FpdCByZXNvbHZlRmluYWxNZXRhZGF0YSgpO1xuICAgICAgICByZXR1cm4gbWV0YWRhdGFTdGF0ZS5tZXRhZGF0YTtcbiAgICB9XG4gICAgTWV0YWRhdGEuZGlzcGxheU5hbWUgPSBfYm91bmRhcnljb25zdGFudHMuTUVUQURBVEFfQk9VTkRBUllfTkFNRTtcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRNZXRhZGF0YVJlYWR5KCkge1xuICAgICAgICAvLyBPbmx5IHdhcm0gdXAgbWV0YWRhdGEoKSBjYWxsIHdoZW4gaXQncyBibG9ja2luZyBtZXRhZGF0YSxcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgYmUgZnVsbHkgbWFuYWdlZCBieSBBc3luY01ldGFkYXRhIGNvbXBvbmVudC5cbiAgICAgICAgaWYgKCFzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhKSB7XG4gICAgICAgICAgICBhd2FpdCBtZXRhZGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVhZHkoKSB7XG4gICAgICAgIGF3YWl0IHZpZXdwb3J0KCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFN0cmVhbWluZ01ldGFkYXRhT3V0bGV0SW1wbCgpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX2FzeW5jbWV0YWRhdGEuQXN5bmNNZXRhZGF0YU91dGxldCwge1xuICAgICAgICAgICAgcHJvbWlzZTogcmVzb2x2ZUZpbmFsTWV0YWRhdGEoKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgU3RyZWFtaW5nTWV0YWRhdGFPdXRsZXQgPSBzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhID8gU3RyZWFtaW5nTWV0YWRhdGFPdXRsZXRJbXBsIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBWaWV3cG9ydFRyZWUsXG4gICAgICAgIE1ldGFkYXRhVHJlZSxcbiAgICAgICAgZ2V0Vmlld3BvcnRSZWFkeSxcbiAgICAgICAgZ2V0TWV0YWRhdGFSZWFkeSxcbiAgICAgICAgU3RyZWFtaW5nTWV0YWRhdGFPdXRsZXRcbiAgICB9O1xufVxuY29uc3QgZ2V0UmVzb2x2ZWRNZXRhZGF0YSA9ICgwLCBfcmVhY3QuY2FjaGUpKGdldFJlc29sdmVkTWV0YWRhdGFJbXBsKTtcbmFzeW5jIGZ1bmN0aW9uIGdldFJlc29sdmVkTWV0YWRhdGFJbXBsKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCBtZXRhZGF0YUNvbnRleHQsIHdvcmtTdG9yZSwgZXJyb3JUeXBlKSB7XG4gICAgY29uc3QgZXJyb3JDb252ZW50aW9uID0gZXJyb3JUeXBlID09PSAncmVkaXJlY3QnID8gdW5kZWZpbmVkIDogZXJyb3JUeXBlO1xuICAgIHJldHVybiByZW5kZXJNZXRhZGF0YSh0cmVlLCBwYXRobmFtZSwgc2VhcmNoUGFyYW1zLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgbWV0YWRhdGFDb250ZXh0LCB3b3JrU3RvcmUsIGVycm9yQ29udmVudGlvbik7XG59XG5jb25zdCBnZXROb3RGb3VuZE1ldGFkYXRhID0gKDAsIF9yZWFjdC5jYWNoZSkoZ2V0Tm90Rm91bmRNZXRhZGF0YUltcGwpO1xuYXN5bmMgZnVuY3Rpb24gZ2V0Tm90Rm91bmRNZXRhZGF0YUltcGwodHJlZSwgcGF0aG5hbWUsIHNlYXJjaFBhcmFtcywgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIG1ldGFkYXRhQ29udGV4dCwgd29ya1N0b3JlKSB7XG4gICAgY29uc3Qgbm90Rm91bmRFcnJvckNvbnZlbnRpb24gPSAnbm90LWZvdW5kJztcbiAgICByZXR1cm4gcmVuZGVyTWV0YWRhdGEodHJlZSwgcGF0aG5hbWUsIHNlYXJjaFBhcmFtcywgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIG1ldGFkYXRhQ29udGV4dCwgd29ya1N0b3JlLCBub3RGb3VuZEVycm9yQ29udmVudGlvbik7XG59XG5jb25zdCBnZXRSZXNvbHZlZFZpZXdwb3J0ID0gKDAsIF9yZWFjdC5jYWNoZSkoZ2V0UmVzb2x2ZWRWaWV3cG9ydEltcGwpO1xuYXN5bmMgZnVuY3Rpb24gZ2V0UmVzb2x2ZWRWaWV3cG9ydEltcGwodHJlZSwgc2VhcmNoUGFyYW1zLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlLCBlcnJvclR5cGUpIHtcbiAgICBjb25zdCBlcnJvckNvbnZlbnRpb24gPSBlcnJvclR5cGUgPT09ICdyZWRpcmVjdCcgPyB1bmRlZmluZWQgOiBlcnJvclR5cGU7XG4gICAgcmV0dXJuIHJlbmRlclZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIHdvcmtTdG9yZSwgZXJyb3JDb252ZW50aW9uKTtcbn1cbmNvbnN0IGdldE5vdEZvdW5kVmlld3BvcnQgPSAoMCwgX3JlYWN0LmNhY2hlKShnZXROb3RGb3VuZFZpZXdwb3J0SW1wbCk7XG5hc3luYyBmdW5jdGlvbiBnZXROb3RGb3VuZFZpZXdwb3J0SW1wbCh0cmVlLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCBub3RGb3VuZEVycm9yQ29udmVudGlvbiA9ICdub3QtZm91bmQnO1xuICAgIHJldHVybiByZW5kZXJWaWV3cG9ydCh0cmVlLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUsIG5vdEZvdW5kRXJyb3JDb252ZW50aW9uKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlck1ldGFkYXRhKHRyZWUsIHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCBtZXRhZGF0YUNvbnRleHQsIHdvcmtTdG9yZSwgZXJyb3JDb252ZW50aW9uKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRNZXRhZGF0YSA9IGF3YWl0ICgwLCBfcmVzb2x2ZW1ldGFkYXRhLnJlc29sdmVNZXRhZGF0YSkodHJlZSwgcGF0aG5hbWUsIHNlYXJjaFBhcmFtcywgZXJyb3JDb252ZW50aW9uLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlLCBtZXRhZGF0YUNvbnRleHQpO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gY3JlYXRlTWV0YWRhdGFFbGVtZW50cyhyZXNvbHZlZE1ldGFkYXRhKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfanN4cnVudGltZS5GcmFnbWVudCwge1xuICAgICAgICBjaGlsZHJlbjogZWxlbWVudHMubWFwKChlbCwgaW5kZXgpPT57XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX3JlYWN0LmNsb25lRWxlbWVudCkoZWwsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclZpZXdwb3J0KHRyZWUsIHNlYXJjaFBhcmFtcywgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIHdvcmtTdG9yZSwgZXJyb3JDb252ZW50aW9uKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRWaWV3cG9ydCA9IGF3YWl0ICgwLCBfcmVzb2x2ZW1ldGFkYXRhLnJlc29sdmVWaWV3cG9ydCkodHJlZSwgc2VhcmNoUGFyYW1zLCBlcnJvckNvbnZlbnRpb24sIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gY3JlYXRlVmlld3BvcnRFbGVtZW50cyhyZXNvbHZlZFZpZXdwb3J0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfanN4cnVudGltZS5GcmFnbWVudCwge1xuICAgICAgICBjaGlsZHJlbjogZWxlbWVudHMubWFwKChlbCwgaW5kZXgpPT57XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX3JlYWN0LmNsb25lRWxlbWVudCkoZWwsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1ldGFkYXRhRWxlbWVudHMobWV0YWRhdGEpIHtcbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgKDAsIF9iYXNpYy5CYXNpY01ldGEpKHtcbiAgICAgICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX2FsdGVybmF0ZS5BbHRlcm5hdGVzTWV0YWRhdGEpKHtcbiAgICAgICAgICAgIGFsdGVybmF0ZXM6IG1ldGFkYXRhLmFsdGVybmF0ZXNcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuSXR1bmVzTWV0YSkoe1xuICAgICAgICAgICAgaXR1bmVzOiBtZXRhZGF0YS5pdHVuZXNcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuRmFjZWJvb2tNZXRhKSh7XG4gICAgICAgICAgICBmYWNlYm9vazogbWV0YWRhdGEuZmFjZWJvb2tcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuUGludGVyZXN0TWV0YSkoe1xuICAgICAgICAgICAgcGludGVyZXN0OiBtZXRhZGF0YS5waW50ZXJlc3RcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuRm9ybWF0RGV0ZWN0aW9uTWV0YSkoe1xuICAgICAgICAgICAgZm9ybWF0RGV0ZWN0aW9uOiBtZXRhZGF0YS5mb3JtYXREZXRlY3Rpb25cbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuVmVyaWZpY2F0aW9uTWV0YSkoe1xuICAgICAgICAgICAgdmVyaWZpY2F0aW9uOiBtZXRhZGF0YS52ZXJpZmljYXRpb25cbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfYmFzaWMuQXBwbGVXZWJBcHBNZXRhKSh7XG4gICAgICAgICAgICBhcHBsZVdlYkFwcDogbWV0YWRhdGEuYXBwbGVXZWJBcHBcbiAgICAgICAgfSksXG4gICAgICAgICgwLCBfb3BlbmdyYXBoLk9wZW5HcmFwaE1ldGFkYXRhKSh7XG4gICAgICAgICAgICBvcGVuR3JhcGg6IG1ldGFkYXRhLm9wZW5HcmFwaFxuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9vcGVuZ3JhcGguVHdpdHRlck1ldGFkYXRhKSh7XG4gICAgICAgICAgICB0d2l0dGVyOiBtZXRhZGF0YS50d2l0dGVyXG4gICAgICAgIH0pLFxuICAgICAgICAoMCwgX29wZW5ncmFwaC5BcHBMaW5rc01ldGEpKHtcbiAgICAgICAgICAgIGFwcExpbmtzOiBtZXRhZGF0YS5hcHBMaW5rc1xuICAgICAgICB9KSxcbiAgICAgICAgKDAsIF9pY29ucy5JY29uc01ldGFkYXRhKSh7XG4gICAgICAgICAgICBpY29uczogbWV0YWRhdGEuaWNvbnNcbiAgICAgICAgfSlcbiAgICBdKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVZpZXdwb3J0RWxlbWVudHModmlld3BvcnQpIHtcbiAgICByZXR1cm4gKDAsIF9tZXRhLk1ldGFGaWx0ZXIpKFtcbiAgICAgICAgKDAsIF9iYXNpYy5WaWV3cG9ydE1ldGEpKHtcbiAgICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydFxuICAgICAgICB9KVxuICAgIF0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXRhZGF0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolve-metadata.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n accumulateMetadata: function() {\n return accumulateMetadata;\n },\n accumulateViewport: function() {\n return accumulateViewport;\n },\n resolveMetadata: function() {\n return resolveMetadata;\n },\n resolveViewport: function() {\n return resolveViewport;\n }\n});\n__webpack_require__(/*! server-only */ \"(rsc)/./node_modules/next/dist/compiled/server-only/empty.js\");\nconst _react = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\");\nconst _defaultmetadata = __webpack_require__(/*! ./default-metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/default-metadata.js\");\nconst _resolveopengraph = __webpack_require__(/*! ./resolvers/resolve-opengraph */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js\");\nconst _resolvetitle = __webpack_require__(/*! ./resolvers/resolve-title */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\");\nconst _utils = __webpack_require__(/*! ./generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _appdirmodule = __webpack_require__(/*! ../../server/lib/app-dir-module */ \"(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js\");\nconst _interopdefault = __webpack_require__(/*! ../interop-default */ \"(rsc)/./node_modules/next/dist/lib/interop-default.js\");\nconst _resolvebasics = __webpack_require__(/*! ./resolvers/resolve-basics */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js\");\nconst _resolveicons = __webpack_require__(/*! ./resolvers/resolve-icons */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js\");\nconst _tracer = __webpack_require__(/*! ../../server/lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ../../server/lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! ../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\"));\nconst _params = __webpack_require__(/*! ../../server/request/params */ \"(rsc)/./node_modules/next/dist/server/request/params.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction isFavicon(icon) {\n if (!icon) {\n return false;\n }\n // turbopack appends a hash to all images\n return (icon.url === '/favicon.ico' || icon.url.toString().startsWith('/favicon.ico?')) && icon.type === 'image/x-icon';\n}\nasync function mergeStaticMetadata(source, target, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname) {\n var _source_twitter, _source_openGraph;\n if (!staticFilesMetadata) return target;\n const { icon, apple, openGraph, twitter, manifest } = staticFilesMetadata;\n // Keep updating the static icons in the most leaf node\n if (icon) {\n leafSegmentStaticIcons.icon = icon;\n }\n if (apple) {\n leafSegmentStaticIcons.apple = apple;\n }\n // file based metadata is specified and current level metadata twitter.images is not specified\n if (twitter && !(source == null ? void 0 : (_source_twitter = source.twitter) == null ? void 0 : _source_twitter.hasOwnProperty('images'))) {\n const resolvedTwitter = (0, _resolveopengraph.resolveTwitter)({\n ...target.twitter,\n images: twitter\n }, target.metadataBase, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.twitter);\n target.twitter = resolvedTwitter;\n }\n // file based metadata is specified and current level metadata openGraph.images is not specified\n if (openGraph && !(source == null ? void 0 : (_source_openGraph = source.openGraph) == null ? void 0 : _source_openGraph.hasOwnProperty('images'))) {\n const resolvedOpenGraph = await (0, _resolveopengraph.resolveOpenGraph)({\n ...target.openGraph,\n images: openGraph\n }, target.metadataBase, pathname, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.openGraph);\n target.openGraph = resolvedOpenGraph;\n }\n if (manifest) {\n target.manifest = manifest;\n }\n return target;\n}\n// Merge the source metadata into the resolved target metadata.\nasync function mergeMetadata(route, pathname, { source, target, staticFilesMetadata, titleTemplates, metadataContext, buildState, leafSegmentStaticIcons }) {\n // If there's override metadata, prefer it otherwise fallback to the default metadata.\n const metadataBase = typeof (source == null ? void 0 : source.metadataBase) !== 'undefined' ? source.metadataBase : target.metadataBase;\n for(const key_ in source){\n const key = key_;\n switch(key){\n case 'title':\n {\n target.title = (0, _resolvetitle.resolveTitle)(source.title, titleTemplates.title);\n break;\n }\n case 'alternates':\n {\n target.alternates = await (0, _resolvebasics.resolveAlternates)(source.alternates, metadataBase, pathname, metadataContext);\n break;\n }\n case 'openGraph':\n {\n target.openGraph = await (0, _resolveopengraph.resolveOpenGraph)(source.openGraph, metadataBase, pathname, metadataContext, titleTemplates.openGraph);\n break;\n }\n case 'twitter':\n {\n target.twitter = (0, _resolveopengraph.resolveTwitter)(source.twitter, metadataBase, metadataContext, titleTemplates.twitter);\n break;\n }\n case 'facebook':\n target.facebook = (0, _resolvebasics.resolveFacebook)(source.facebook);\n break;\n case 'verification':\n target.verification = (0, _resolvebasics.resolveVerification)(source.verification);\n break;\n case 'icons':\n {\n target.icons = (0, _resolveicons.resolveIcons)(source.icons);\n break;\n }\n case 'appleWebApp':\n target.appleWebApp = (0, _resolvebasics.resolveAppleWebApp)(source.appleWebApp);\n break;\n case 'appLinks':\n target.appLinks = (0, _resolvebasics.resolveAppLinks)(source.appLinks);\n break;\n case 'robots':\n {\n target.robots = (0, _resolvebasics.resolveRobots)(source.robots);\n break;\n }\n case 'archives':\n case 'assets':\n case 'bookmarks':\n case 'keywords':\n {\n target[key] = (0, _utils.resolveAsArrayOrUndefined)(source[key]);\n break;\n }\n case 'authors':\n {\n target[key] = (0, _utils.resolveAsArrayOrUndefined)(source.authors);\n break;\n }\n case 'itunes':\n {\n target[key] = await (0, _resolvebasics.resolveItunes)(source.itunes, metadataBase, pathname, metadataContext);\n break;\n }\n case 'pagination':\n {\n target.pagination = await (0, _resolvebasics.resolvePagination)(source.pagination, metadataBase, pathname, metadataContext);\n break;\n }\n // directly assign fields that fallback to null\n case 'abstract':\n case 'applicationName':\n case 'description':\n case 'generator':\n case 'creator':\n case 'publisher':\n case 'category':\n case 'classification':\n case 'referrer':\n case 'formatDetection':\n case 'manifest':\n case 'pinterest':\n // @ts-ignore TODO: support inferring\n target[key] = source[key] || null;\n break;\n case 'other':\n target.other = Object.assign({}, target.other, source.other);\n break;\n case 'metadataBase':\n target.metadataBase = metadataBase;\n break;\n case 'apple-touch-fullscreen':\n {\n buildState.warnings.add(`Use appleWebApp instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'apple-touch-icon-precomposed':\n {\n buildState.warnings.add(`Use icons.apple instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'themeColor':\n case 'colorScheme':\n case 'viewport':\n if (source[key] != null) {\n buildState.warnings.add(`Unsupported metadata ${key} is configured in metadata export in ${route}. Please move it to viewport export instead.\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-viewport`);\n }\n break;\n default:\n {\n key;\n }\n }\n }\n return mergeStaticMetadata(source, target, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname);\n}\nfunction mergeViewport({ target, source }) {\n if (!source) return;\n for(const key_ in source){\n const key = key_;\n switch(key){\n case 'themeColor':\n {\n target.themeColor = (0, _resolvebasics.resolveThemeColor)(source.themeColor);\n break;\n }\n case 'colorScheme':\n target.colorScheme = source.colorScheme || null;\n break;\n case 'width':\n case 'height':\n case 'initialScale':\n case 'minimumScale':\n case 'maximumScale':\n case 'userScalable':\n case 'viewportFit':\n case 'interactiveWidget':\n // always override the target with the source\n // @ts-ignore viewport properties\n target[key] = source[key];\n break;\n default:\n key;\n }\n }\n}\nfunction getDefinedViewport(mod, props, tracingProps) {\n if (typeof mod.generateViewport === 'function') {\n const { route } = tracingProps;\n return (parent)=>(0, _tracer.getTracer)().trace(_constants.ResolveMetadataSpan.generateViewport, {\n spanName: `generateViewport ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateViewport(props, parent));\n }\n return mod.viewport || null;\n}\nfunction getDefinedMetadata(mod, props, tracingProps) {\n if (typeof mod.generateMetadata === 'function') {\n const { route } = tracingProps;\n return (parent)=>(0, _tracer.getTracer)().trace(_constants.ResolveMetadataSpan.generateMetadata, {\n spanName: `generateMetadata ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateMetadata(props, parent));\n }\n return mod.metadata || null;\n}\nasync function collectStaticImagesFiles(metadata, props, type) {\n var _this;\n if (!(metadata == null ? void 0 : metadata[type])) return undefined;\n const iconPromises = metadata[type].map(async (imageModule)=>(0, _interopdefault.interopDefault)(await imageModule(props)));\n return (iconPromises == null ? void 0 : iconPromises.length) > 0 ? (_this = await Promise.all(iconPromises)) == null ? void 0 : _this.flat() : undefined;\n}\nasync function resolveStaticMetadata(modules, props) {\n const { metadata } = modules;\n if (!metadata) return null;\n const [icon, apple, openGraph, twitter] = await Promise.all([\n collectStaticImagesFiles(metadata, props, 'icon'),\n collectStaticImagesFiles(metadata, props, 'apple'),\n collectStaticImagesFiles(metadata, props, 'openGraph'),\n collectStaticImagesFiles(metadata, props, 'twitter')\n ]);\n const staticMetadata = {\n icon,\n apple,\n openGraph,\n twitter,\n manifest: metadata.manifest\n };\n return staticMetadata;\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectMetadata({ tree, metadataItems, errorMetadataItem, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await (0, _appdirmodule.getComponentTypeModule)(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await (0, _appdirmodule.getLayoutOrPageModule)(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const staticFilesMetadata = await resolveStaticMetadata(tree[2], props);\n const metadataExport = mod ? getDefinedMetadata(mod, props, {\n route\n }) : null;\n metadataItems.push([\n metadataExport,\n staticFilesMetadata\n ]);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await (0, _appdirmodule.getComponentTypeModule)(tree, errorConvention);\n const errorMetadataExport = errorMod ? getDefinedMetadata(errorMod, props, {\n route\n }) : null;\n errorMetadataItem[0] = errorMetadataExport;\n errorMetadataItem[1] = staticFilesMetadata;\n }\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectViewport({ tree, viewportItems, errorViewportItemRef, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await (0, _appdirmodule.getComponentTypeModule)(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await (0, _appdirmodule.getLayoutOrPageModule)(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const viewportExport = mod ? getDefinedViewport(mod, props, {\n route\n }) : null;\n viewportItems.push(viewportExport);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await (0, _appdirmodule.getComponentTypeModule)(tree, errorConvention);\n const errorViewportExport = errorMod ? getDefinedViewport(errorMod, props, {\n route\n }) : null;\n errorViewportItemRef.current = errorViewportExport;\n }\n}\nconst resolveMetadataItems = (0, _react.cache)(async function(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const parentParams = {};\n const metadataItems = [];\n const errorMetadataItem = [\n null,\n null\n ];\n const treePrefix = undefined;\n return resolveMetadataItemsImpl(metadataItems, tree, treePrefix, parentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore);\n});\nasync function resolveMetadataItemsImpl(metadataItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n const segmentParam = getDynamicParamFromSegment(segment);\n /**\n * Create object holding the parent params and current params\n */ let currentParams = parentParams;\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value\n };\n }\n const params = (0, _params.createServerParamsForMetadata)(currentParams, workStore);\n let layerProps;\n if (isPage) {\n layerProps = {\n params,\n searchParams\n };\n } else {\n layerProps = {\n params\n };\n }\n await collectMetadata({\n tree,\n metadataItems,\n errorMetadataItem,\n errorConvention,\n props: layerProps,\n route: currentTreePrefix// __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== _segment.PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveMetadataItemsImpl(metadataItems, childTree, currentTreePrefix, currentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n metadataItems.push(errorMetadataItem);\n }\n return metadataItems;\n}\nconst resolveViewportItems = (0, _react.cache)(async function(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const parentParams = {};\n const viewportItems = [];\n const errorViewportItemRef = {\n current: null\n };\n const treePrefix = undefined;\n return resolveViewportItemsImpl(viewportItems, tree, treePrefix, parentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore);\n});\nasync function resolveViewportItemsImpl(viewportItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n const segmentParam = getDynamicParamFromSegment(segment);\n /**\n * Create object holding the parent params and current params\n */ let currentParams = parentParams;\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value\n };\n }\n const params = (0, _params.createServerParamsForMetadata)(currentParams, workStore);\n let layerProps;\n if (isPage) {\n layerProps = {\n params,\n searchParams\n };\n } else {\n layerProps = {\n params\n };\n }\n await collectViewport({\n tree,\n viewportItems,\n errorViewportItemRef,\n errorConvention,\n props: layerProps,\n route: currentTreePrefix// __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== _segment.PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveViewportItemsImpl(viewportItems, childTree, currentTreePrefix, currentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n viewportItems.push(errorViewportItemRef.current);\n }\n return viewportItems;\n}\nconst isTitleTruthy = (title)=>!!(title == null ? void 0 : title.absolute);\nconst hasTitle = (metadata)=>isTitleTruthy(metadata == null ? void 0 : metadata.title);\nfunction inheritFromMetadata(target, metadata) {\n if (target) {\n if (!hasTitle(target) && hasTitle(metadata)) {\n target.title = metadata.title;\n }\n if (!target.description && metadata.description) {\n target.description = metadata.description;\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst commonOgKeys = [\n 'title',\n 'description',\n 'images'\n];\nfunction postProcessMetadata(metadata, favicon, titleTemplates, metadataContext) {\n const { openGraph, twitter } = metadata;\n if (openGraph) {\n // If there's openGraph information but not configured in twitter,\n // inherit them from openGraph metadata.\n let autoFillProps = {};\n const hasTwTitle = hasTitle(twitter);\n const hasTwDescription = twitter == null ? void 0 : twitter.description;\n const hasTwImages = Boolean((twitter == null ? void 0 : twitter.hasOwnProperty('images')) && twitter.images);\n if (!hasTwTitle) {\n if (isTitleTruthy(openGraph.title)) {\n autoFillProps.title = openGraph.title;\n } else if (metadata.title && isTitleTruthy(metadata.title)) {\n autoFillProps.title = metadata.title;\n }\n }\n if (!hasTwDescription) autoFillProps.description = openGraph.description || metadata.description || undefined;\n if (!hasTwImages) autoFillProps.images = openGraph.images;\n if (Object.keys(autoFillProps).length > 0) {\n const partialTwitter = (0, _resolveopengraph.resolveTwitter)(autoFillProps, metadata.metadataBase, metadataContext, titleTemplates.twitter);\n if (metadata.twitter) {\n metadata.twitter = Object.assign({}, metadata.twitter, {\n ...!hasTwTitle && {\n title: partialTwitter == null ? void 0 : partialTwitter.title\n },\n ...!hasTwDescription && {\n description: partialTwitter == null ? void 0 : partialTwitter.description\n },\n ...!hasTwImages && {\n images: partialTwitter == null ? void 0 : partialTwitter.images\n }\n });\n } else {\n metadata.twitter = partialTwitter;\n }\n }\n }\n // If there's no title and description configured in openGraph or twitter,\n // use the title and description from metadata.\n inheritFromMetadata(openGraph, metadata);\n inheritFromMetadata(twitter, metadata);\n if (favicon) {\n if (!metadata.icons) {\n metadata.icons = {\n icon: [],\n apple: []\n };\n }\n metadata.icons.icon.unshift(favicon);\n }\n return metadata;\n}\nfunction prerenderMetadata(metadataItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < metadataItems.length; i++){\n const metadataExport = metadataItems[i][0];\n getResult(resolversAndResults, metadataExport);\n }\n return resolversAndResults;\n}\nfunction prerenderViewport(viewportItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < viewportItems.length; i++){\n const viewportExport = viewportItems[i];\n getResult(resolversAndResults, viewportExport);\n }\n return resolversAndResults;\n}\nfunction getResult(resolversAndResults, exportForResult) {\n if (typeof exportForResult === 'function') {\n const result = exportForResult(new Promise((resolve)=>resolversAndResults.push(resolve)));\n resolversAndResults.push(result);\n if (result instanceof Promise) {\n // since we eager execute generateMetadata and\n // they can reject at anytime we need to ensure\n // we attach the catch handler right away to\n // prevent unhandled rejections crashing the process\n result.catch((err)=>{\n return {\n __nextError: err\n };\n });\n }\n } else if (typeof exportForResult === 'object') {\n resolversAndResults.push(exportForResult);\n } else {\n resolversAndResults.push(null);\n }\n}\nfunction resolvePendingResult(parentResult, resolveParentResult) {\n // In dev we clone and freeze to prevent relying on mutating resolvedMetadata directly.\n // In prod we just pass resolvedMetadata through without any copying.\n if (true) {\n // @ts-expect-error -- DeepReadonly is by definition not assignable to T\n // Instead, we should only accept DeepReadonly\n parentResult = (__webpack_require__(/*! ../../shared/lib/deep-freeze */ \"(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js\").deepFreeze)((__webpack_require__(/*! ./clone-metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/clone-metadata.js\").cloneMetadata)(parentResult));\n }\n resolveParentResult(parentResult);\n}\nasync function accumulateMetadata(route, metadataItems, pathname, metadataContext) {\n let resolvedMetadata = (0, _defaultmetadata.createDefaultMetadata)();\n let titleTemplates = {\n title: null,\n twitter: null,\n openGraph: null\n };\n const buildState = {\n warnings: new Set()\n };\n let favicon;\n // Collect the static icons in the most leaf node,\n // since we don't collect all the static metadata icons in the parent segments.\n const leafSegmentStaticIcons = {\n icon: [],\n apple: []\n };\n const resolversAndResults = prerenderMetadata(metadataItems);\n let resultIndex = 0;\n for(let i = 0; i < metadataItems.length; i++){\n var _staticFilesMetadata_icon;\n const staticFilesMetadata = metadataItems[i][1];\n // Treat favicon as special case, it should be the first icon in the list\n // i <= 1 represents root layout, and if current page is also at root\n if (i <= 1 && isFavicon(staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon[0])) {\n var _staticFilesMetadata_icon1;\n const iconMod = staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon1 = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon1.shift();\n if (i === 0) favicon = iconMod;\n }\n let pendingMetadata = resolversAndResults[resultIndex++];\n if (typeof pendingMetadata === 'function') {\n // This metadata item had a `generateMetadata` and\n // we need to provide the currently resolved metadata\n // to it before we continue;\n const resolveParentMetadata = pendingMetadata;\n // we know that the next item is a result if this item\n // was a resolver\n pendingMetadata = resolversAndResults[resultIndex++];\n resolvePendingResult(resolvedMetadata, resolveParentMetadata);\n }\n // Otherwise the item was either null or a static export\n let metadata;\n if (isPromiseLike(pendingMetadata)) {\n metadata = await pendingMetadata;\n } else {\n metadata = pendingMetadata;\n }\n resolvedMetadata = await mergeMetadata(route, pathname, {\n target: resolvedMetadata,\n source: metadata,\n metadataContext,\n staticFilesMetadata,\n titleTemplates,\n buildState,\n leafSegmentStaticIcons\n });\n // If the layout is the same layer with page, skip the leaf layout and leaf page\n // The leaf layout and page are the last two items\n if (i < metadataItems.length - 2) {\n var _resolvedMetadata_title, _resolvedMetadata_openGraph, _resolvedMetadata_twitter;\n titleTemplates = {\n title: ((_resolvedMetadata_title = resolvedMetadata.title) == null ? void 0 : _resolvedMetadata_title.template) || null,\n openGraph: ((_resolvedMetadata_openGraph = resolvedMetadata.openGraph) == null ? void 0 : _resolvedMetadata_openGraph.title.template) || null,\n twitter: ((_resolvedMetadata_twitter = resolvedMetadata.twitter) == null ? void 0 : _resolvedMetadata_twitter.title.template) || null\n };\n }\n }\n if (leafSegmentStaticIcons.icon.length > 0 || leafSegmentStaticIcons.apple.length > 0) {\n if (!resolvedMetadata.icons) {\n resolvedMetadata.icons = {\n icon: [],\n apple: []\n };\n if (leafSegmentStaticIcons.icon.length > 0) {\n resolvedMetadata.icons.icon.unshift(...leafSegmentStaticIcons.icon);\n }\n if (leafSegmentStaticIcons.apple.length > 0) {\n resolvedMetadata.icons.apple.unshift(...leafSegmentStaticIcons.apple);\n }\n }\n }\n // Only log warnings if there are any, and only once after the metadata resolving process is finished\n if (buildState.warnings.size > 0) {\n for (const warning of buildState.warnings){\n _log.warn(warning);\n }\n }\n return postProcessMetadata(resolvedMetadata, favicon, titleTemplates, metadataContext);\n}\nasync function accumulateViewport(viewportItems) {\n const resolvedViewport = (0, _defaultmetadata.createDefaultViewport)();\n const resolversAndResults = prerenderViewport(viewportItems);\n let i = 0;\n while(i < resolversAndResults.length){\n let pendingViewport = resolversAndResults[i++];\n if (typeof pendingViewport === 'function') {\n // this viewport item had a `generateViewport` and\n // we need to provide the currently resolved viewport\n // to it before we continue;\n const resolveParentViewport = pendingViewport;\n // we know that the next item is a result if this item\n // was a resolver\n pendingViewport = resolversAndResults[i++];\n resolvePendingResult(resolvedViewport, resolveParentViewport);\n }\n // Otherwise the item was either null or a static export\n let viewport;\n if (isPromiseLike(pendingViewport)) {\n viewport = await pendingViewport;\n } else {\n viewport = pendingViewport;\n }\n mergeViewport({\n target: resolvedViewport,\n source: viewport\n });\n }\n return resolvedViewport;\n}\nasync function resolveMetadata(tree, pathname, searchParams, errorConvention, getDynamicParamFromSegment, workStore, metadataContext) {\n const metadataItems = await resolveMetadataItems(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n return accumulateMetadata(workStore.route, metadataItems, pathname, metadataContext);\n}\nasync function resolveViewport(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const viewportItems = await resolveViewportItems(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n return accumulateViewport(viewportItems);\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && typeof value.then === 'function';\n}\n\n//# sourceMappingURL=resolve-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxtQkFBTyxDQUFDLGlGQUFhO0FBQ3JCLGVBQWUsbUJBQU8sQ0FBQyxpR0FBTztBQUM5Qix5QkFBeUIsbUJBQU8sQ0FBQywyRkFBb0I7QUFDckQsMEJBQTBCLG1CQUFPLENBQUMsaUhBQStCO0FBQ2pFLHNCQUFzQixtQkFBTyxDQUFDLHlHQUEyQjtBQUN6RCxlQUFlLG1CQUFPLENBQUMsdUZBQWtCO0FBQ3pDLHNCQUFzQixtQkFBTyxDQUFDLG9HQUFpQztBQUMvRCx3QkFBd0IsbUJBQU8sQ0FBQyxpRkFBb0I7QUFDcEQsdUJBQXVCLG1CQUFPLENBQUMsMkdBQTRCO0FBQzNELHNCQUFzQixtQkFBTyxDQUFDLHlHQUEyQjtBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyxnR0FBK0I7QUFDdkQsbUJBQW1CLG1CQUFPLENBQUMsc0dBQWtDO0FBQzdELGlCQUFpQixtQkFBTyxDQUFDLHNGQUEwQjtBQUNuRCxxREFBcUQsbUJBQU8sQ0FBQyxrRkFBd0I7QUFDckYsZ0JBQWdCLG1CQUFPLENBQUMsNEZBQTZCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDRDQUE0QztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMEdBQTBHO0FBQzFKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsS0FBSyxzQ0FBc0MsTUFBTTtBQUNySDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBLDhDQUE4QyxNQUFNO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQSw4Q0FBOEMsTUFBTTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyx1RUFBdUU7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLGdCQUFnQixxREFBcUQ7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMEVBQTBFO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixnQkFBZ0IscURBQXFEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0Esc0NBQXNDLE1BQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0Esc0NBQXNDLE1BQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscUJBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDBCQUEwQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBc0M7QUFDOUM7QUFDQTtBQUNBLHVCQUF1QixnSUFBa0QsQ0FBQyw0SEFBeUM7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEJBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxccmVzb2x2ZS1tZXRhZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGFjY3VtdWxhdGVNZXRhZGF0YTogbnVsbCxcbiAgICBhY2N1bXVsYXRlVmlld3BvcnQ6IG51bGwsXG4gICAgcmVzb2x2ZU1ldGFkYXRhOiBudWxsLFxuICAgIHJlc29sdmVWaWV3cG9ydDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhY2N1bXVsYXRlTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZU1ldGFkYXRhO1xuICAgIH0sXG4gICAgYWNjdW11bGF0ZVZpZXdwb3J0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVWaWV3cG9ydDtcbiAgICB9LFxuICAgIHJlc29sdmVNZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlTWV0YWRhdGE7XG4gICAgfSxcbiAgICByZXNvbHZlVmlld3BvcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZpZXdwb3J0O1xuICAgIH1cbn0pO1xucmVxdWlyZShcInNlcnZlci1vbmx5XCIpO1xuY29uc3QgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuY29uc3QgX2RlZmF1bHRtZXRhZGF0YSA9IHJlcXVpcmUoXCIuL2RlZmF1bHQtbWV0YWRhdGFcIik7XG5jb25zdCBfcmVzb2x2ZW9wZW5ncmFwaCA9IHJlcXVpcmUoXCIuL3Jlc29sdmVycy9yZXNvbHZlLW9wZW5ncmFwaFwiKTtcbmNvbnN0IF9yZXNvbHZldGl0bGUgPSByZXF1aXJlKFwiLi9yZXNvbHZlcnMvcmVzb2x2ZS10aXRsZVwiKTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuL2dlbmVyYXRlL3V0aWxzXCIpO1xuY29uc3QgX2FwcGRpcm1vZHVsZSA9IHJlcXVpcmUoXCIuLi8uLi9zZXJ2ZXIvbGliL2FwcC1kaXItbW9kdWxlXCIpO1xuY29uc3QgX2ludGVyb3BkZWZhdWx0ID0gcmVxdWlyZShcIi4uL2ludGVyb3AtZGVmYXVsdFwiKTtcbmNvbnN0IF9yZXNvbHZlYmFzaWNzID0gcmVxdWlyZShcIi4vcmVzb2x2ZXJzL3Jlc29sdmUtYmFzaWNzXCIpO1xuY29uc3QgX3Jlc29sdmVpY29ucyA9IHJlcXVpcmUoXCIuL3Jlc29sdmVycy9yZXNvbHZlLWljb25zXCIpO1xuY29uc3QgX3RyYWNlciA9IHJlcXVpcmUoXCIuLi8uLi9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL2xpYi90cmFjZS9jb25zdGFudHNcIik7XG5jb25zdCBfc2VnbWVudCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3NlZ21lbnRcIik7XG5jb25zdCBfbG9nID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKHJlcXVpcmUoXCIuLi8uLi9idWlsZC9vdXRwdXQvbG9nXCIpKTtcbmNvbnN0IF9wYXJhbXMgPSByZXF1aXJlKFwiLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zXCIpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBpc0Zhdmljb24oaWNvbikge1xuICAgIGlmICghaWNvbikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIHR1cmJvcGFjayBhcHBlbmRzIGEgaGFzaCB0byBhbGwgaW1hZ2VzXG4gICAgcmV0dXJuIChpY29uLnVybCA9PT0gJy9mYXZpY29uLmljbycgfHwgaWNvbi51cmwudG9TdHJpbmcoKS5zdGFydHNXaXRoKCcvZmF2aWNvbi5pY28/JykpICYmIGljb24udHlwZSA9PT0gJ2ltYWdlL3gtaWNvbic7XG59XG5hc3luYyBmdW5jdGlvbiBtZXJnZVN0YXRpY01ldGFkYXRhKHNvdXJjZSwgdGFyZ2V0LCBzdGF0aWNGaWxlc01ldGFkYXRhLCBtZXRhZGF0YUNvbnRleHQsIHRpdGxlVGVtcGxhdGVzLCBsZWFmU2VnbWVudFN0YXRpY0ljb25zLCBwYXRobmFtZSkge1xuICAgIHZhciBfc291cmNlX3R3aXR0ZXIsIF9zb3VyY2Vfb3BlbkdyYXBoO1xuICAgIGlmICghc3RhdGljRmlsZXNNZXRhZGF0YSkgcmV0dXJuIHRhcmdldDtcbiAgICBjb25zdCB7IGljb24sIGFwcGxlLCBvcGVuR3JhcGgsIHR3aXR0ZXIsIG1hbmlmZXN0IH0gPSBzdGF0aWNGaWxlc01ldGFkYXRhO1xuICAgIC8vIEtlZXAgdXBkYXRpbmcgdGhlIHN0YXRpYyBpY29ucyBpbiB0aGUgbW9zdCBsZWFmIG5vZGVcbiAgICBpZiAoaWNvbikge1xuICAgICAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zLmljb24gPSBpY29uO1xuICAgIH1cbiAgICBpZiAoYXBwbGUpIHtcbiAgICAgICAgbGVhZlNlZ21lbnRTdGF0aWNJY29ucy5hcHBsZSA9IGFwcGxlO1xuICAgIH1cbiAgICAvLyBmaWxlIGJhc2VkIG1ldGFkYXRhIGlzIHNwZWNpZmllZCBhbmQgY3VycmVudCBsZXZlbCBtZXRhZGF0YSB0d2l0dGVyLmltYWdlcyBpcyBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKHR3aXR0ZXIgJiYgIShzb3VyY2UgPT0gbnVsbCA/IHZvaWQgMCA6IChfc291cmNlX3R3aXR0ZXIgPSBzb3VyY2UudHdpdHRlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9zb3VyY2VfdHdpdHRlci5oYXNPd25Qcm9wZXJ0eSgnaW1hZ2VzJykpKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVHdpdHRlciA9ICgwLCBfcmVzb2x2ZW9wZW5ncmFwaC5yZXNvbHZlVHdpdHRlcikoe1xuICAgICAgICAgICAgLi4udGFyZ2V0LnR3aXR0ZXIsXG4gICAgICAgICAgICBpbWFnZXM6IHR3aXR0ZXJcbiAgICAgICAgfSwgdGFyZ2V0Lm1ldGFkYXRhQmFzZSwge1xuICAgICAgICAgICAgLi4ubWV0YWRhdGFDb250ZXh0LFxuICAgICAgICAgICAgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZTogdHJ1ZVxuICAgICAgICB9LCB0aXRsZVRlbXBsYXRlcy50d2l0dGVyKTtcbiAgICAgICAgdGFyZ2V0LnR3aXR0ZXIgPSByZXNvbHZlZFR3aXR0ZXI7XG4gICAgfVxuICAgIC8vIGZpbGUgYmFzZWQgbWV0YWRhdGEgaXMgc3BlY2lmaWVkIGFuZCBjdXJyZW50IGxldmVsIG1ldGFkYXRhIG9wZW5HcmFwaC5pbWFnZXMgaXMgbm90IHNwZWNpZmllZFxuICAgIGlmIChvcGVuR3JhcGggJiYgIShzb3VyY2UgPT0gbnVsbCA/IHZvaWQgMCA6IChfc291cmNlX29wZW5HcmFwaCA9IHNvdXJjZS5vcGVuR3JhcGgpID09IG51bGwgPyB2b2lkIDAgOiBfc291cmNlX29wZW5HcmFwaC5oYXNPd25Qcm9wZXJ0eSgnaW1hZ2VzJykpKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkT3BlbkdyYXBoID0gYXdhaXQgKDAsIF9yZXNvbHZlb3BlbmdyYXBoLnJlc29sdmVPcGVuR3JhcGgpKHtcbiAgICAgICAgICAgIC4uLnRhcmdldC5vcGVuR3JhcGgsXG4gICAgICAgICAgICBpbWFnZXM6IG9wZW5HcmFwaFxuICAgICAgICB9LCB0YXJnZXQubWV0YWRhdGFCYXNlLCBwYXRobmFtZSwge1xuICAgICAgICAgICAgLi4ubWV0YWRhdGFDb250ZXh0LFxuICAgICAgICAgICAgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZTogdHJ1ZVxuICAgICAgICB9LCB0aXRsZVRlbXBsYXRlcy5vcGVuR3JhcGgpO1xuICAgICAgICB0YXJnZXQub3BlbkdyYXBoID0gcmVzb2x2ZWRPcGVuR3JhcGg7XG4gICAgfVxuICAgIGlmIChtYW5pZmVzdCkge1xuICAgICAgICB0YXJnZXQubWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbi8vIE1lcmdlIHRoZSBzb3VyY2UgbWV0YWRhdGEgaW50byB0aGUgcmVzb2x2ZWQgdGFyZ2V0IG1ldGFkYXRhLlxuYXN5bmMgZnVuY3Rpb24gbWVyZ2VNZXRhZGF0YShyb3V0ZSwgcGF0aG5hbWUsIHsgc291cmNlLCB0YXJnZXQsIHN0YXRpY0ZpbGVzTWV0YWRhdGEsIHRpdGxlVGVtcGxhdGVzLCBtZXRhZGF0YUNvbnRleHQsIGJ1aWxkU3RhdGUsIGxlYWZTZWdtZW50U3RhdGljSWNvbnMgfSkge1xuICAgIC8vIElmIHRoZXJlJ3Mgb3ZlcnJpZGUgbWV0YWRhdGEsIHByZWZlciBpdCBvdGhlcndpc2UgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgbWV0YWRhdGEuXG4gICAgY29uc3QgbWV0YWRhdGFCYXNlID0gdHlwZW9mIChzb3VyY2UgPT0gbnVsbCA/IHZvaWQgMCA6IHNvdXJjZS5tZXRhZGF0YUJhc2UpICE9PSAndW5kZWZpbmVkJyA/IHNvdXJjZS5tZXRhZGF0YUJhc2UgOiB0YXJnZXQubWV0YWRhdGFCYXNlO1xuICAgIGZvcihjb25zdCBrZXlfIGluIHNvdXJjZSl7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleV87XG4gICAgICAgIHN3aXRjaChrZXkpe1xuICAgICAgICAgICAgY2FzZSAndGl0bGUnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRpdGxlID0gKDAsIF9yZXNvbHZldGl0bGUucmVzb2x2ZVRpdGxlKShzb3VyY2UudGl0bGUsIHRpdGxlVGVtcGxhdGVzLnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnYWx0ZXJuYXRlcyc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYWx0ZXJuYXRlcyA9IGF3YWl0ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlQWx0ZXJuYXRlcykoc291cmNlLmFsdGVybmF0ZXMsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ29wZW5HcmFwaCc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQub3BlbkdyYXBoID0gYXdhaXQgKDAsIF9yZXNvbHZlb3BlbmdyYXBoLnJlc29sdmVPcGVuR3JhcGgpKHNvdXJjZS5vcGVuR3JhcGgsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCwgdGl0bGVUZW1wbGF0ZXMub3BlbkdyYXBoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAndHdpdHRlcic6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQudHdpdHRlciA9ICgwLCBfcmVzb2x2ZW9wZW5ncmFwaC5yZXNvbHZlVHdpdHRlcikoc291cmNlLnR3aXR0ZXIsIG1ldGFkYXRhQmFzZSwgbWV0YWRhdGFDb250ZXh0LCB0aXRsZVRlbXBsYXRlcy50d2l0dGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZmFjZWJvb2snOlxuICAgICAgICAgICAgICAgIHRhcmdldC5mYWNlYm9vayA9ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlRmFjZWJvb2spKHNvdXJjZS5mYWNlYm9vayk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJpZmljYXRpb24nOlxuICAgICAgICAgICAgICAgIHRhcmdldC52ZXJpZmljYXRpb24gPSAoMCwgX3Jlc29sdmViYXNpY3MucmVzb2x2ZVZlcmlmaWNhdGlvbikoc291cmNlLnZlcmlmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpY29ucyc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuaWNvbnMgPSAoMCwgX3Jlc29sdmVpY29ucy5yZXNvbHZlSWNvbnMpKHNvdXJjZS5pY29ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FwcGxlV2ViQXBwJzpcbiAgICAgICAgICAgICAgICB0YXJnZXQuYXBwbGVXZWJBcHAgPSAoMCwgX3Jlc29sdmViYXNpY3MucmVzb2x2ZUFwcGxlV2ViQXBwKShzb3VyY2UuYXBwbGVXZWJBcHApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXBwTGlua3MnOlxuICAgICAgICAgICAgICAgIHRhcmdldC5hcHBMaW5rcyA9ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlQXBwTGlua3MpKHNvdXJjZS5hcHBMaW5rcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyb2JvdHMnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJvYm90cyA9ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlUm9ib3RzKShzb3VyY2Uucm9ib3RzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnYXJjaGl2ZXMnOlxuICAgICAgICAgICAgY2FzZSAnYXNzZXRzJzpcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2ttYXJrcyc6XG4gICAgICAgICAgICBjYXNlICdrZXl3b3Jkcyc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoc291cmNlW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdhdXRob3JzJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gKDAsIF91dGlscy5yZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkKShzb3VyY2UuYXV0aG9ycyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2l0dW5lcyc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IGF3YWl0ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlSXR1bmVzKShzb3VyY2UuaXR1bmVzLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdwYWdpbmF0aW9uJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wYWdpbmF0aW9uID0gYXdhaXQgKDAsIF9yZXNvbHZlYmFzaWNzLnJlc29sdmVQYWdpbmF0aW9uKShzb3VyY2UucGFnaW5hdGlvbiwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgbWV0YWRhdGFDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZGlyZWN0bHkgYXNzaWduIGZpZWxkcyB0aGF0IGZhbGxiYWNrIHRvIG51bGxcbiAgICAgICAgICAgIGNhc2UgJ2Fic3RyYWN0JzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uTmFtZSc6XG4gICAgICAgICAgICBjYXNlICdkZXNjcmlwdGlvbic6XG4gICAgICAgICAgICBjYXNlICdnZW5lcmF0b3InOlxuICAgICAgICAgICAgY2FzZSAnY3JlYXRvcic6XG4gICAgICAgICAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgICAgICAgY2FzZSAnY2F0ZWdvcnknOlxuICAgICAgICAgICAgY2FzZSAnY2xhc3NpZmljYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAncmVmZXJyZXInOlxuICAgICAgICAgICAgY2FzZSAnZm9ybWF0RGV0ZWN0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ21hbmlmZXN0JzpcbiAgICAgICAgICAgIGNhc2UgJ3BpbnRlcmVzdCc6XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBUT0RPOiBzdXBwb3J0IGluZmVycmluZ1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV0gfHwgbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ290aGVyJzpcbiAgICAgICAgICAgICAgICB0YXJnZXQub3RoZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0YXJnZXQub3RoZXIsIHNvdXJjZS5vdGhlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtZXRhZGF0YUJhc2UnOlxuICAgICAgICAgICAgICAgIHRhcmdldC5tZXRhZGF0YUJhc2UgPSBtZXRhZGF0YUJhc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhcHBsZS10b3VjaC1mdWxsc2NyZWVuJzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkU3RhdGUud2FybmluZ3MuYWRkKGBVc2UgYXBwbGVXZWJBcHAgaW5zdGVhZFxcblJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2dlbmVyYXRlLW1ldGFkYXRhYCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRTdGF0ZS53YXJuaW5ncy5hZGQoYFVzZSBpY29ucy5hcHBsZSBpbnN0ZWFkXFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZ2VuZXJhdGUtbWV0YWRhdGFgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAndGhlbWVDb2xvcic6XG4gICAgICAgICAgICBjYXNlICdjb2xvclNjaGVtZSc6XG4gICAgICAgICAgICBjYXNlICd2aWV3cG9ydCc6XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtrZXldICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRTdGF0ZS53YXJuaW5ncy5hZGQoYFVuc3VwcG9ydGVkIG1ldGFkYXRhICR7a2V5fSBpcyBjb25maWd1cmVkIGluIG1ldGFkYXRhIGV4cG9ydCBpbiAke3JvdXRlfS4gUGxlYXNlIG1vdmUgaXQgdG8gdmlld3BvcnQgZXhwb3J0IGluc3RlYWQuXFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZ2VuZXJhdGUtdmlld3BvcnRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VTdGF0aWNNZXRhZGF0YShzb3VyY2UsIHRhcmdldCwgc3RhdGljRmlsZXNNZXRhZGF0YSwgbWV0YWRhdGFDb250ZXh0LCB0aXRsZVRlbXBsYXRlcywgbGVhZlNlZ21lbnRTdGF0aWNJY29ucywgcGF0aG5hbWUpO1xufVxuZnVuY3Rpb24gbWVyZ2VWaWV3cG9ydCh7IHRhcmdldCwgc291cmNlIH0pIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xuICAgIGZvcihjb25zdCBrZXlfIGluIHNvdXJjZSl7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleV87XG4gICAgICAgIHN3aXRjaChrZXkpe1xuICAgICAgICAgICAgY2FzZSAndGhlbWVDb2xvcic6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGhlbWVDb2xvciA9ICgwLCBfcmVzb2x2ZWJhc2ljcy5yZXNvbHZlVGhlbWVDb2xvcikoc291cmNlLnRoZW1lQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdjb2xvclNjaGVtZSc6XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmNvbG9yU2NoZW1lID0gc291cmNlLmNvbG9yU2NoZW1lIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3aWR0aCc6XG4gICAgICAgICAgICBjYXNlICdoZWlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFNjYWxlJzpcbiAgICAgICAgICAgIGNhc2UgJ21pbmltdW1TY2FsZSc6XG4gICAgICAgICAgICBjYXNlICdtYXhpbXVtU2NhbGUnOlxuICAgICAgICAgICAgY2FzZSAndXNlclNjYWxhYmxlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdwb3J0Rml0JzpcbiAgICAgICAgICAgIGNhc2UgJ2ludGVyYWN0aXZlV2lkZ2V0JzpcbiAgICAgICAgICAgICAgICAvLyBhbHdheXMgb3ZlcnJpZGUgdGhlIHRhcmdldCB3aXRoIHRoZSBzb3VyY2VcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHZpZXdwb3J0IHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBrZXk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXREZWZpbmVkVmlld3BvcnQobW9kLCBwcm9wcywgdHJhY2luZ1Byb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBtb2QuZ2VuZXJhdGVWaWV3cG9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB7IHJvdXRlIH0gPSB0cmFjaW5nUHJvcHM7XG4gICAgICAgIHJldHVybiAocGFyZW50KT0+KDAsIF90cmFjZXIuZ2V0VHJhY2VyKSgpLnRyYWNlKF9jb25zdGFudHMuUmVzb2x2ZU1ldGFkYXRhU3Bhbi5nZW5lcmF0ZVZpZXdwb3J0LCB7XG4gICAgICAgICAgICAgICAgc3Bhbk5hbWU6IGBnZW5lcmF0ZVZpZXdwb3J0ICR7cm91dGV9YCxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICduZXh0LnBhZ2UnOiByb3V0ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sICgpPT5tb2QuZ2VuZXJhdGVWaWV3cG9ydChwcm9wcywgcGFyZW50KSk7XG4gICAgfVxuICAgIHJldHVybiBtb2Qudmlld3BvcnQgfHwgbnVsbDtcbn1cbmZ1bmN0aW9uIGdldERlZmluZWRNZXRhZGF0YShtb2QsIHByb3BzLCB0cmFjaW5nUHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIG1vZC5nZW5lcmF0ZU1ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHsgcm91dGUgfSA9IHRyYWNpbmdQcm9wcztcbiAgICAgICAgcmV0dXJuIChwYXJlbnQpPT4oMCwgX3RyYWNlci5nZXRUcmFjZXIpKCkudHJhY2UoX2NvbnN0YW50cy5SZXNvbHZlTWV0YWRhdGFTcGFuLmdlbmVyYXRlTWV0YWRhdGEsIHtcbiAgICAgICAgICAgICAgICBzcGFuTmFtZTogYGdlbmVyYXRlTWV0YWRhdGEgJHtyb3V0ZX1gLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ25leHQucGFnZSc6IHJvdXRlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgKCk9Pm1vZC5nZW5lcmF0ZU1ldGFkYXRhKHByb3BzLCBwYXJlbnQpKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZC5tZXRhZGF0YSB8fCBudWxsO1xufVxuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFN0YXRpY0ltYWdlc0ZpbGVzKG1ldGFkYXRhLCBwcm9wcywgdHlwZSkge1xuICAgIHZhciBfdGhpcztcbiAgICBpZiAoIShtZXRhZGF0YSA9PSBudWxsID8gdm9pZCAwIDogbWV0YWRhdGFbdHlwZV0pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGljb25Qcm9taXNlcyA9IG1ldGFkYXRhW3R5cGVdLm1hcChhc3luYyAoaW1hZ2VNb2R1bGUpPT4oMCwgX2ludGVyb3BkZWZhdWx0LmludGVyb3BEZWZhdWx0KShhd2FpdCBpbWFnZU1vZHVsZShwcm9wcykpKTtcbiAgICByZXR1cm4gKGljb25Qcm9taXNlcyA9PSBudWxsID8gdm9pZCAwIDogaWNvblByb21pc2VzLmxlbmd0aCkgPiAwID8gKF90aGlzID0gYXdhaXQgUHJvbWlzZS5hbGwoaWNvblByb21pc2VzKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzLmZsYXQoKSA6IHVuZGVmaW5lZDtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVTdGF0aWNNZXRhZGF0YShtb2R1bGVzLCBwcm9wcykge1xuICAgIGNvbnN0IHsgbWV0YWRhdGEgfSA9IG1vZHVsZXM7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgW2ljb24sIGFwcGxlLCBvcGVuR3JhcGgsIHR3aXR0ZXJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBjb2xsZWN0U3RhdGljSW1hZ2VzRmlsZXMobWV0YWRhdGEsIHByb3BzLCAnaWNvbicpLFxuICAgICAgICBjb2xsZWN0U3RhdGljSW1hZ2VzRmlsZXMobWV0YWRhdGEsIHByb3BzLCAnYXBwbGUnKSxcbiAgICAgICAgY29sbGVjdFN0YXRpY0ltYWdlc0ZpbGVzKG1ldGFkYXRhLCBwcm9wcywgJ29wZW5HcmFwaCcpLFxuICAgICAgICBjb2xsZWN0U3RhdGljSW1hZ2VzRmlsZXMobWV0YWRhdGEsIHByb3BzLCAndHdpdHRlcicpXG4gICAgXSk7XG4gICAgY29uc3Qgc3RhdGljTWV0YWRhdGEgPSB7XG4gICAgICAgIGljb24sXG4gICAgICAgIGFwcGxlLFxuICAgICAgICBvcGVuR3JhcGgsXG4gICAgICAgIHR3aXR0ZXIsXG4gICAgICAgIG1hbmlmZXN0OiBtZXRhZGF0YS5tYW5pZmVzdFxuICAgIH07XG4gICAgcmV0dXJuIHN0YXRpY01ldGFkYXRhO1xufVxuLy8gW2xheW91dC5tZXRhZGF0YSwgc3RhdGljIGZpbGVzIG1ldGFkYXRhXSAtPiAuLi4gLT4gW3BhZ2UubWV0YWRhdGEsIHN0YXRpYyBmaWxlcyBtZXRhZGF0YV1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RNZXRhZGF0YSh7IHRyZWUsIG1ldGFkYXRhSXRlbXMsIGVycm9yTWV0YWRhdGFJdGVtLCBwcm9wcywgcm91dGUsIGVycm9yQ29udmVudGlvbiB9KSB7XG4gICAgbGV0IG1vZDtcbiAgICBsZXQgbW9kVHlwZTtcbiAgICBjb25zdCBoYXNFcnJvckNvbnZlbnRpb25Db21wb25lbnQgPSBCb29sZWFuKGVycm9yQ29udmVudGlvbiAmJiB0cmVlWzJdW2Vycm9yQ29udmVudGlvbl0pO1xuICAgIGlmIChlcnJvckNvbnZlbnRpb24pIHtcbiAgICAgICAgbW9kID0gYXdhaXQgKDAsIF9hcHBkaXJtb2R1bGUuZ2V0Q29tcG9uZW50VHlwZU1vZHVsZSkodHJlZSwgJ2xheW91dCcpO1xuICAgICAgICBtb2RUeXBlID0gZXJyb3JDb252ZW50aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgbW9kOiBsYXlvdXRPclBhZ2VNb2QsIG1vZFR5cGU6IGxheW91dE9yUGFnZU1vZFR5cGUgfSA9IGF3YWl0ICgwLCBfYXBwZGlybW9kdWxlLmdldExheW91dE9yUGFnZU1vZHVsZSkodHJlZSk7XG4gICAgICAgIG1vZCA9IGxheW91dE9yUGFnZU1vZDtcbiAgICAgICAgbW9kVHlwZSA9IGxheW91dE9yUGFnZU1vZFR5cGU7XG4gICAgfVxuICAgIGlmIChtb2RUeXBlKSB7XG4gICAgICAgIHJvdXRlICs9IGAvJHttb2RUeXBlfWA7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRpY0ZpbGVzTWV0YWRhdGEgPSBhd2FpdCByZXNvbHZlU3RhdGljTWV0YWRhdGEodHJlZVsyXSwgcHJvcHMpO1xuICAgIGNvbnN0IG1ldGFkYXRhRXhwb3J0ID0gbW9kID8gZ2V0RGVmaW5lZE1ldGFkYXRhKG1vZCwgcHJvcHMsIHtcbiAgICAgICAgcm91dGVcbiAgICB9KSA6IG51bGw7XG4gICAgbWV0YWRhdGFJdGVtcy5wdXNoKFtcbiAgICAgICAgbWV0YWRhdGFFeHBvcnQsXG4gICAgICAgIHN0YXRpY0ZpbGVzTWV0YWRhdGFcbiAgICBdKTtcbiAgICBpZiAoaGFzRXJyb3JDb252ZW50aW9uQ29tcG9uZW50ICYmIGVycm9yQ29udmVudGlvbikge1xuICAgICAgICBjb25zdCBlcnJvck1vZCA9IGF3YWl0ICgwLCBfYXBwZGlybW9kdWxlLmdldENvbXBvbmVudFR5cGVNb2R1bGUpKHRyZWUsIGVycm9yQ29udmVudGlvbik7XG4gICAgICAgIGNvbnN0IGVycm9yTWV0YWRhdGFFeHBvcnQgPSBlcnJvck1vZCA/IGdldERlZmluZWRNZXRhZGF0YShlcnJvck1vZCwgcHJvcHMsIHtcbiAgICAgICAgICAgIHJvdXRlXG4gICAgICAgIH0pIDogbnVsbDtcbiAgICAgICAgZXJyb3JNZXRhZGF0YUl0ZW1bMF0gPSBlcnJvck1ldGFkYXRhRXhwb3J0O1xuICAgICAgICBlcnJvck1ldGFkYXRhSXRlbVsxXSA9IHN0YXRpY0ZpbGVzTWV0YWRhdGE7XG4gICAgfVxufVxuLy8gW2xheW91dC5tZXRhZGF0YSwgc3RhdGljIGZpbGVzIG1ldGFkYXRhXSAtPiAuLi4gLT4gW3BhZ2UubWV0YWRhdGEsIHN0YXRpYyBmaWxlcyBtZXRhZGF0YV1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RWaWV3cG9ydCh7IHRyZWUsIHZpZXdwb3J0SXRlbXMsIGVycm9yVmlld3BvcnRJdGVtUmVmLCBwcm9wcywgcm91dGUsIGVycm9yQ29udmVudGlvbiB9KSB7XG4gICAgbGV0IG1vZDtcbiAgICBsZXQgbW9kVHlwZTtcbiAgICBjb25zdCBoYXNFcnJvckNvbnZlbnRpb25Db21wb25lbnQgPSBCb29sZWFuKGVycm9yQ29udmVudGlvbiAmJiB0cmVlWzJdW2Vycm9yQ29udmVudGlvbl0pO1xuICAgIGlmIChlcnJvckNvbnZlbnRpb24pIHtcbiAgICAgICAgbW9kID0gYXdhaXQgKDAsIF9hcHBkaXJtb2R1bGUuZ2V0Q29tcG9uZW50VHlwZU1vZHVsZSkodHJlZSwgJ2xheW91dCcpO1xuICAgICAgICBtb2RUeXBlID0gZXJyb3JDb252ZW50aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgbW9kOiBsYXlvdXRPclBhZ2VNb2QsIG1vZFR5cGU6IGxheW91dE9yUGFnZU1vZFR5cGUgfSA9IGF3YWl0ICgwLCBfYXBwZGlybW9kdWxlLmdldExheW91dE9yUGFnZU1vZHVsZSkodHJlZSk7XG4gICAgICAgIG1vZCA9IGxheW91dE9yUGFnZU1vZDtcbiAgICAgICAgbW9kVHlwZSA9IGxheW91dE9yUGFnZU1vZFR5cGU7XG4gICAgfVxuICAgIGlmIChtb2RUeXBlKSB7XG4gICAgICAgIHJvdXRlICs9IGAvJHttb2RUeXBlfWA7XG4gICAgfVxuICAgIGNvbnN0IHZpZXdwb3J0RXhwb3J0ID0gbW9kID8gZ2V0RGVmaW5lZFZpZXdwb3J0KG1vZCwgcHJvcHMsIHtcbiAgICAgICAgcm91dGVcbiAgICB9KSA6IG51bGw7XG4gICAgdmlld3BvcnRJdGVtcy5wdXNoKHZpZXdwb3J0RXhwb3J0KTtcbiAgICBpZiAoaGFzRXJyb3JDb252ZW50aW9uQ29tcG9uZW50ICYmIGVycm9yQ29udmVudGlvbikge1xuICAgICAgICBjb25zdCBlcnJvck1vZCA9IGF3YWl0ICgwLCBfYXBwZGlybW9kdWxlLmdldENvbXBvbmVudFR5cGVNb2R1bGUpKHRyZWUsIGVycm9yQ29udmVudGlvbik7XG4gICAgICAgIGNvbnN0IGVycm9yVmlld3BvcnRFeHBvcnQgPSBlcnJvck1vZCA/IGdldERlZmluZWRWaWV3cG9ydChlcnJvck1vZCwgcHJvcHMsIHtcbiAgICAgICAgICAgIHJvdXRlXG4gICAgICAgIH0pIDogbnVsbDtcbiAgICAgICAgZXJyb3JWaWV3cG9ydEl0ZW1SZWYuY3VycmVudCA9IGVycm9yVmlld3BvcnRFeHBvcnQ7XG4gICAgfVxufVxuY29uc3QgcmVzb2x2ZU1ldGFkYXRhSXRlbXMgPSAoMCwgX3JlYWN0LmNhY2hlKShhc3luYyBmdW5jdGlvbih0cmVlLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHBhcmVudFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IG1ldGFkYXRhSXRlbXMgPSBbXTtcbiAgICBjb25zdCBlcnJvck1ldGFkYXRhSXRlbSA9IFtcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbFxuICAgIF07XG4gICAgY29uc3QgdHJlZVByZWZpeCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzb2x2ZU1ldGFkYXRhSXRlbXNJbXBsKG1ldGFkYXRhSXRlbXMsIHRyZWUsIHRyZWVQcmVmaXgsIHBhcmVudFBhcmFtcywgc2VhcmNoUGFyYW1zLCBlcnJvckNvbnZlbnRpb24sIGVycm9yTWV0YWRhdGFJdGVtLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlKTtcbn0pO1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZU1ldGFkYXRhSXRlbXNJbXBsKG1ldGFkYXRhSXRlbXMsIHRyZWUsIC8qKiBQcm92aWRlZCB0cmVlIGNhbiBiZSBuZXN0ZWQgc3VidHJlZSwgdGhpcyBhcmd1bWVudCBzYXlzIHdoYXQgaXMgdGhlIHBhdGggb2Ygc3VjaCBzdWJ0cmVlICovIHRyZWVQcmVmaXgsIHBhcmVudFBhcmFtcywgc2VhcmNoUGFyYW1zLCBlcnJvckNvbnZlbnRpb24sIGVycm9yTWV0YWRhdGFJdGVtLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlKSB7XG4gICAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzLCB7IHBhZ2UgfV0gPSB0cmVlO1xuICAgIGNvbnN0IGN1cnJlbnRUcmVlUHJlZml4ID0gdHJlZVByZWZpeCAmJiB0cmVlUHJlZml4Lmxlbmd0aCA/IFtcbiAgICAgICAgLi4udHJlZVByZWZpeCxcbiAgICAgICAgc2VnbWVudFxuICAgIF0gOiBbXG4gICAgICAgIHNlZ21lbnRcbiAgICBdO1xuICAgIGNvbnN0IGlzUGFnZSA9IHR5cGVvZiBwYWdlICE9PSAndW5kZWZpbmVkJztcbiAgICAvLyBIYW5kbGUgZHluYW1pYyBzZWdtZW50IHBhcmFtcy5cbiAgICBjb25zdCBzZWdtZW50UGFyYW0gPSBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudChzZWdtZW50KTtcbiAgICAvKipcbiAgICogQ3JlYXRlIG9iamVjdCBob2xkaW5nIHRoZSBwYXJlbnQgcGFyYW1zIGFuZCBjdXJyZW50IHBhcmFtc1xuICAgKi8gbGV0IGN1cnJlbnRQYXJhbXMgPSBwYXJlbnRQYXJhbXM7XG4gICAgaWYgKHNlZ21lbnRQYXJhbSAmJiBzZWdtZW50UGFyYW0udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgY3VycmVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLnBhcmVudFBhcmFtcyxcbiAgICAgICAgICAgIFtzZWdtZW50UGFyYW0ucGFyYW1dOiBzZWdtZW50UGFyYW0udmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0gKDAsIF9wYXJhbXMuY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGEpKGN1cnJlbnRQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgbGV0IGxheWVyUHJvcHM7XG4gICAgaWYgKGlzUGFnZSkge1xuICAgICAgICBsYXllclByb3BzID0ge1xuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgc2VhcmNoUGFyYW1zXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGF5ZXJQcm9wcyA9IHtcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9O1xuICAgIH1cbiAgICBhd2FpdCBjb2xsZWN0TWV0YWRhdGEoe1xuICAgICAgICB0cmVlLFxuICAgICAgICBtZXRhZGF0YUl0ZW1zLFxuICAgICAgICBlcnJvck1ldGFkYXRhSXRlbSxcbiAgICAgICAgZXJyb3JDb252ZW50aW9uLFxuICAgICAgICBwcm9wczogbGF5ZXJQcm9wcyxcbiAgICAgICAgcm91dGU6IGN1cnJlbnRUcmVlUHJlZml4Ly8gX19QQUdFX18gc2hvdWxkbid0IGJlIHNob3duIGluIGEgcm91dGVcbiAgICAgICAgLmZpbHRlcigocyk9PnMgIT09IF9zZWdtZW50LlBBR0VfU0VHTUVOVF9LRVkpLmpvaW4oJy8nKVxuICAgIH0pO1xuICAgIGZvcihjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpe1xuICAgICAgICBjb25zdCBjaGlsZFRyZWUgPSBwYXJhbGxlbFJvdXRlc1trZXldO1xuICAgICAgICBhd2FpdCByZXNvbHZlTWV0YWRhdGFJdGVtc0ltcGwobWV0YWRhdGFJdGVtcywgY2hpbGRUcmVlLCBjdXJyZW50VHJlZVByZWZpeCwgY3VycmVudFBhcmFtcywgc2VhcmNoUGFyYW1zLCBlcnJvckNvbnZlbnRpb24sIGVycm9yTWV0YWRhdGFJdGVtLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlKTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHBhcmFsbGVsUm91dGVzKS5sZW5ndGggPT09IDAgJiYgZXJyb3JDb252ZW50aW9uKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBwYXJhbGxlbCByb3V0ZXMsIHBsYWNlIGVycm9yIG1ldGFkYXRhIGFzIHRoZSBsYXN0IGl0ZW0uXG4gICAgICAgIC8vIGUuZy4gbGF5b3V0IC0+IGxheW91dCAtPiBub3QtZm91bmRcbiAgICAgICAgbWV0YWRhdGFJdGVtcy5wdXNoKGVycm9yTWV0YWRhdGFJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGFkYXRhSXRlbXM7XG59XG5jb25zdCByZXNvbHZlVmlld3BvcnRJdGVtcyA9ICgwLCBfcmVhY3QuY2FjaGUpKGFzeW5jIGZ1bmN0aW9uKHRyZWUsIHNlYXJjaFBhcmFtcywgZXJyb3JDb252ZW50aW9uLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlKSB7XG4gICAgY29uc3QgcGFyZW50UGFyYW1zID0ge307XG4gICAgY29uc3Qgdmlld3BvcnRJdGVtcyA9IFtdO1xuICAgIGNvbnN0IGVycm9yVmlld3BvcnRJdGVtUmVmID0ge1xuICAgICAgICBjdXJyZW50OiBudWxsXG4gICAgfTtcbiAgICBjb25zdCB0cmVlUHJlZml4ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXNvbHZlVmlld3BvcnRJdGVtc0ltcGwodmlld3BvcnRJdGVtcywgdHJlZSwgdHJlZVByZWZpeCwgcGFyZW50UGFyYW1zLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpO1xufSk7XG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVmlld3BvcnRJdGVtc0ltcGwodmlld3BvcnRJdGVtcywgdHJlZSwgLyoqIFByb3ZpZGVkIHRyZWUgY2FuIGJlIG5lc3RlZCBzdWJ0cmVlLCB0aGlzIGFyZ3VtZW50IHNheXMgd2hhdCBpcyB0aGUgcGF0aCBvZiBzdWNoIHN1YnRyZWUgKi8gdHJlZVByZWZpeCwgcGFyZW50UGFyYW1zLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCBbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZXMsIHsgcGFnZSB9XSA9IHRyZWU7XG4gICAgY29uc3QgY3VycmVudFRyZWVQcmVmaXggPSB0cmVlUHJlZml4ICYmIHRyZWVQcmVmaXgubGVuZ3RoID8gW1xuICAgICAgICAuLi50cmVlUHJlZml4LFxuICAgICAgICBzZWdtZW50XG4gICAgXSA6IFtcbiAgICAgICAgc2VnbWVudFxuICAgIF07XG4gICAgY29uc3QgaXNQYWdlID0gdHlwZW9mIHBhZ2UgIT09ICd1bmRlZmluZWQnO1xuICAgIC8vIEhhbmRsZSBkeW5hbWljIHNlZ21lbnQgcGFyYW1zLlxuICAgIGNvbnN0IHNlZ21lbnRQYXJhbSA9IGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50KHNlZ21lbnQpO1xuICAgIC8qKlxuICAgKiBDcmVhdGUgb2JqZWN0IGhvbGRpbmcgdGhlIHBhcmVudCBwYXJhbXMgYW5kIGN1cnJlbnQgcGFyYW1zXG4gICAqLyBsZXQgY3VycmVudFBhcmFtcyA9IHBhcmVudFBhcmFtcztcbiAgICBpZiAoc2VnbWVudFBhcmFtICYmIHNlZ21lbnRQYXJhbS52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjdXJyZW50UGFyYW1zID0ge1xuICAgICAgICAgICAgLi4ucGFyZW50UGFyYW1zLFxuICAgICAgICAgICAgW3NlZ21lbnRQYXJhbS5wYXJhbV06IHNlZ21lbnRQYXJhbS52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSAoMCwgX3BhcmFtcy5jcmVhdGVTZXJ2ZXJQYXJhbXNGb3JNZXRhZGF0YSkoY3VycmVudFBhcmFtcywgd29ya1N0b3JlKTtcbiAgICBsZXQgbGF5ZXJQcm9wcztcbiAgICBpZiAoaXNQYWdlKSB7XG4gICAgICAgIGxheWVyUHJvcHMgPSB7XG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICBzZWFyY2hQYXJhbXNcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXllclByb3BzID0ge1xuICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgIH07XG4gICAgfVxuICAgIGF3YWl0IGNvbGxlY3RWaWV3cG9ydCh7XG4gICAgICAgIHRyZWUsXG4gICAgICAgIHZpZXdwb3J0SXRlbXMsXG4gICAgICAgIGVycm9yVmlld3BvcnRJdGVtUmVmLFxuICAgICAgICBlcnJvckNvbnZlbnRpb24sXG4gICAgICAgIHByb3BzOiBsYXllclByb3BzLFxuICAgICAgICByb3V0ZTogY3VycmVudFRyZWVQcmVmaXgvLyBfX1BBR0VfXyBzaG91bGRuJ3QgYmUgc2hvd24gaW4gYSByb3V0ZVxuICAgICAgICAuZmlsdGVyKChzKT0+cyAhPT0gX3NlZ21lbnQuUEFHRV9TRUdNRU5UX0tFWSkuam9pbignLycpXG4gICAgfSk7XG4gICAgZm9yKGNvbnN0IGtleSBpbiBwYXJhbGxlbFJvdXRlcyl7XG4gICAgICAgIGNvbnN0IGNoaWxkVHJlZSA9IHBhcmFsbGVsUm91dGVzW2tleV07XG4gICAgICAgIGF3YWl0IHJlc29sdmVWaWV3cG9ydEl0ZW1zSW1wbCh2aWV3cG9ydEl0ZW1zLCBjaGlsZFRyZWUsIGN1cnJlbnRUcmVlUHJlZml4LCBjdXJyZW50UGFyYW1zLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZXJyb3JWaWV3cG9ydEl0ZW1SZWYsIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmxlbmd0aCA9PT0gMCAmJiBlcnJvckNvbnZlbnRpb24pIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHBhcmFsbGVsIHJvdXRlcywgcGxhY2UgZXJyb3IgbWV0YWRhdGEgYXMgdGhlIGxhc3QgaXRlbS5cbiAgICAgICAgLy8gZS5nLiBsYXlvdXQgLT4gbGF5b3V0IC0+IG5vdC1mb3VuZFxuICAgICAgICB2aWV3cG9ydEl0ZW1zLnB1c2goZXJyb3JWaWV3cG9ydEl0ZW1SZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHJldHVybiB2aWV3cG9ydEl0ZW1zO1xufVxuY29uc3QgaXNUaXRsZVRydXRoeSA9ICh0aXRsZSk9PiEhKHRpdGxlID09IG51bGwgPyB2b2lkIDAgOiB0aXRsZS5hYnNvbHV0ZSk7XG5jb25zdCBoYXNUaXRsZSA9IChtZXRhZGF0YSk9PmlzVGl0bGVUcnV0aHkobWV0YWRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IG1ldGFkYXRhLnRpdGxlKTtcbmZ1bmN0aW9uIGluaGVyaXRGcm9tTWV0YWRhdGEodGFyZ2V0LCBtZXRhZGF0YSkge1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKCFoYXNUaXRsZSh0YXJnZXQpICYmIGhhc1RpdGxlKG1ldGFkYXRhKSkge1xuICAgICAgICAgICAgdGFyZ2V0LnRpdGxlID0gbWV0YWRhdGEudGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YXJnZXQuZGVzY3JpcHRpb24gJiYgbWV0YWRhdGEuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRhcmdldC5kZXNjcmlwdGlvbiA9IG1ldGFkYXRhLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuY29uc3QgY29tbW9uT2dLZXlzID0gW1xuICAgICd0aXRsZScsXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnaW1hZ2VzJ1xuXTtcbmZ1bmN0aW9uIHBvc3RQcm9jZXNzTWV0YWRhdGEobWV0YWRhdGEsIGZhdmljb24sIHRpdGxlVGVtcGxhdGVzLCBtZXRhZGF0YUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG9wZW5HcmFwaCwgdHdpdHRlciB9ID0gbWV0YWRhdGE7XG4gICAgaWYgKG9wZW5HcmFwaCkge1xuICAgICAgICAvLyBJZiB0aGVyZSdzIG9wZW5HcmFwaCBpbmZvcm1hdGlvbiBidXQgbm90IGNvbmZpZ3VyZWQgaW4gdHdpdHRlcixcbiAgICAgICAgLy8gaW5oZXJpdCB0aGVtIGZyb20gb3BlbkdyYXBoIG1ldGFkYXRhLlxuICAgICAgICBsZXQgYXV0b0ZpbGxQcm9wcyA9IHt9O1xuICAgICAgICBjb25zdCBoYXNUd1RpdGxlID0gaGFzVGl0bGUodHdpdHRlcik7XG4gICAgICAgIGNvbnN0IGhhc1R3RGVzY3JpcHRpb24gPSB0d2l0dGVyID09IG51bGwgPyB2b2lkIDAgOiB0d2l0dGVyLmRlc2NyaXB0aW9uO1xuICAgICAgICBjb25zdCBoYXNUd0ltYWdlcyA9IEJvb2xlYW4oKHR3aXR0ZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHR3aXR0ZXIuaGFzT3duUHJvcGVydHkoJ2ltYWdlcycpKSAmJiB0d2l0dGVyLmltYWdlcyk7XG4gICAgICAgIGlmICghaGFzVHdUaXRsZSkge1xuICAgICAgICAgICAgaWYgKGlzVGl0bGVUcnV0aHkob3BlbkdyYXBoLnRpdGxlKSkge1xuICAgICAgICAgICAgICAgIGF1dG9GaWxsUHJvcHMudGl0bGUgPSBvcGVuR3JhcGgudGl0bGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnRpdGxlICYmIGlzVGl0bGVUcnV0aHkobWV0YWRhdGEudGl0bGUpKSB7XG4gICAgICAgICAgICAgICAgYXV0b0ZpbGxQcm9wcy50aXRsZSA9IG1ldGFkYXRhLnRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaGFzVHdEZXNjcmlwdGlvbikgYXV0b0ZpbGxQcm9wcy5kZXNjcmlwdGlvbiA9IG9wZW5HcmFwaC5kZXNjcmlwdGlvbiB8fCBtZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghaGFzVHdJbWFnZXMpIGF1dG9GaWxsUHJvcHMuaW1hZ2VzID0gb3BlbkdyYXBoLmltYWdlcztcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGF1dG9GaWxsUHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxUd2l0dGVyID0gKDAsIF9yZXNvbHZlb3BlbmdyYXBoLnJlc29sdmVUd2l0dGVyKShhdXRvRmlsbFByb3BzLCBtZXRhZGF0YS5tZXRhZGF0YUJhc2UsIG1ldGFkYXRhQ29udGV4dCwgdGl0bGVUZW1wbGF0ZXMudHdpdHRlcik7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEudHdpdHRlcikge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhLnR3aXR0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCBtZXRhZGF0YS50d2l0dGVyLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLiFoYXNUd1RpdGxlICYmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0aWFsVHdpdHRlciA9PSBudWxsID8gdm9pZCAwIDogcGFydGlhbFR3aXR0ZXIudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLi4uIWhhc1R3RGVzY3JpcHRpb24gJiYge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnRpYWxUd2l0dGVyID09IG51bGwgPyB2b2lkIDAgOiBwYXJ0aWFsVHdpdHRlci5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4haGFzVHdJbWFnZXMgJiYge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwYXJ0aWFsVHdpdHRlciA9PSBudWxsID8gdm9pZCAwIDogcGFydGlhbFR3aXR0ZXIuaW1hZ2VzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEudHdpdHRlciA9IHBhcnRpYWxUd2l0dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIElmIHRoZXJlJ3Mgbm8gdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGNvbmZpZ3VyZWQgaW4gb3BlbkdyYXBoIG9yIHR3aXR0ZXIsXG4gICAgLy8gdXNlIHRoZSB0aXRsZSBhbmQgZGVzY3JpcHRpb24gZnJvbSBtZXRhZGF0YS5cbiAgICBpbmhlcml0RnJvbU1ldGFkYXRhKG9wZW5HcmFwaCwgbWV0YWRhdGEpO1xuICAgIGluaGVyaXRGcm9tTWV0YWRhdGEodHdpdHRlciwgbWV0YWRhdGEpO1xuICAgIGlmIChmYXZpY29uKSB7XG4gICAgICAgIGlmICghbWV0YWRhdGEuaWNvbnMpIHtcbiAgICAgICAgICAgIG1ldGFkYXRhLmljb25zID0ge1xuICAgICAgICAgICAgICAgIGljb246IFtdLFxuICAgICAgICAgICAgICAgIGFwcGxlOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBtZXRhZGF0YS5pY29ucy5pY29uLnVuc2hpZnQoZmF2aWNvbik7XG4gICAgfVxuICAgIHJldHVybiBtZXRhZGF0YTtcbn1cbmZ1bmN0aW9uIHByZXJlbmRlck1ldGFkYXRhKG1ldGFkYXRhSXRlbXMpIHtcbiAgICAvLyBJZiB0aGUgaW5kZXggaXMgYSBmdW5jdGlvbiB0aGVuIGl0IGlzIGEgcmVzb2x2ZXIgYW5kIHRoZSBuZXh0IHNsb3RcbiAgICAvLyBpcyB0aGUgY29ycmVzcG9uZGluZyByZXN1bHQuIElmIHRoZSBpbmRleCBpcyBub3QgYSBmdW5jdGlvbiBpdCBpcyB0aGUgcmVzdWx0XG4gICAgLy8gaXRzZWxmLlxuICAgIGNvbnN0IHJlc29sdmVyc0FuZFJlc3VsdHMgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgbWV0YWRhdGFJdGVtcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhRXhwb3J0ID0gbWV0YWRhdGFJdGVtc1tpXVswXTtcbiAgICAgICAgZ2V0UmVzdWx0KHJlc29sdmVyc0FuZFJlc3VsdHMsIG1ldGFkYXRhRXhwb3J0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVyc0FuZFJlc3VsdHM7XG59XG5mdW5jdGlvbiBwcmVyZW5kZXJWaWV3cG9ydCh2aWV3cG9ydEl0ZW1zKSB7XG4gICAgLy8gSWYgdGhlIGluZGV4IGlzIGEgZnVuY3Rpb24gdGhlbiBpdCBpcyBhIHJlc29sdmVyIGFuZCB0aGUgbmV4dCBzbG90XG4gICAgLy8gaXMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzdWx0LiBJZiB0aGUgaW5kZXggaXMgbm90IGEgZnVuY3Rpb24gaXQgaXMgdGhlIHJlc3VsdFxuICAgIC8vIGl0c2VsZi5cbiAgICBjb25zdCByZXNvbHZlcnNBbmRSZXN1bHRzID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHZpZXdwb3J0SXRlbXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCB2aWV3cG9ydEV4cG9ydCA9IHZpZXdwb3J0SXRlbXNbaV07XG4gICAgICAgIGdldFJlc3VsdChyZXNvbHZlcnNBbmRSZXN1bHRzLCB2aWV3cG9ydEV4cG9ydCk7XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlcnNBbmRSZXN1bHRzO1xufVxuZnVuY3Rpb24gZ2V0UmVzdWx0KHJlc29sdmVyc0FuZFJlc3VsdHMsIGV4cG9ydEZvclJlc3VsdCkge1xuICAgIGlmICh0eXBlb2YgZXhwb3J0Rm9yUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4cG9ydEZvclJlc3VsdChuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PnJlc29sdmVyc0FuZFJlc3VsdHMucHVzaChyZXNvbHZlKSkpO1xuICAgICAgICByZXNvbHZlcnNBbmRSZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIC8vIHNpbmNlIHdlIGVhZ2VyIGV4ZWN1dGUgZ2VuZXJhdGVNZXRhZGF0YSBhbmRcbiAgICAgICAgICAgIC8vIHRoZXkgY2FuIHJlamVjdCBhdCBhbnl0aW1lIHdlIG5lZWQgdG8gZW5zdXJlXG4gICAgICAgICAgICAvLyB3ZSBhdHRhY2ggdGhlIGNhdGNoIGhhbmRsZXIgcmlnaHQgYXdheSB0b1xuICAgICAgICAgICAgLy8gcHJldmVudCB1bmhhbmRsZWQgcmVqZWN0aW9ucyBjcmFzaGluZyB0aGUgcHJvY2Vzc1xuICAgICAgICAgICAgcmVzdWx0LmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgX19uZXh0RXJyb3I6IGVyclxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydEZvclJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmVzb2x2ZXJzQW5kUmVzdWx0cy5wdXNoKGV4cG9ydEZvclJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZXJzQW5kUmVzdWx0cy5wdXNoKG51bGwpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlc29sdmVQZW5kaW5nUmVzdWx0KHBhcmVudFJlc3VsdCwgcmVzb2x2ZVBhcmVudFJlc3VsdCkge1xuICAgIC8vIEluIGRldiB3ZSBjbG9uZSBhbmQgZnJlZXplIHRvIHByZXZlbnQgcmVseWluZyBvbiBtdXRhdGluZyByZXNvbHZlZE1ldGFkYXRhIGRpcmVjdGx5LlxuICAgIC8vIEluIHByb2Qgd2UganVzdCBwYXNzIHJlc29sdmVkTWV0YWRhdGEgdGhyb3VnaCB3aXRob3V0IGFueSBjb3B5aW5nLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0tIERlZXBSZWFkb25seTxUPiBpcyBieSBkZWZpbml0aW9uIG5vdCBhc3NpZ25hYmxlIHRvIFRcbiAgICAgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIG9ubHkgYWNjZXB0IERlZXBSZWFkb25seTxSZXNvbHZlZFR5cGU+XG4gICAgICAgIHBhcmVudFJlc3VsdCA9IHJlcXVpcmUoJy4uLy4uL3NoYXJlZC9saWIvZGVlcC1mcmVlemUnKS5kZWVwRnJlZXplKHJlcXVpcmUoJy4vY2xvbmUtbWV0YWRhdGEnKS5jbG9uZU1ldGFkYXRhKHBhcmVudFJlc3VsdCkpO1xuICAgIH1cbiAgICByZXNvbHZlUGFyZW50UmVzdWx0KHBhcmVudFJlc3VsdCk7XG59XG5hc3luYyBmdW5jdGlvbiBhY2N1bXVsYXRlTWV0YWRhdGEocm91dGUsIG1ldGFkYXRhSXRlbXMsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQpIHtcbiAgICBsZXQgcmVzb2x2ZWRNZXRhZGF0YSA9ICgwLCBfZGVmYXVsdG1ldGFkYXRhLmNyZWF0ZURlZmF1bHRNZXRhZGF0YSkoKTtcbiAgICBsZXQgdGl0bGVUZW1wbGF0ZXMgPSB7XG4gICAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgICB0d2l0dGVyOiBudWxsLFxuICAgICAgICBvcGVuR3JhcGg6IG51bGxcbiAgICB9O1xuICAgIGNvbnN0IGJ1aWxkU3RhdGUgPSB7XG4gICAgICAgIHdhcm5pbmdzOiBuZXcgU2V0KClcbiAgICB9O1xuICAgIGxldCBmYXZpY29uO1xuICAgIC8vIENvbGxlY3QgdGhlIHN0YXRpYyBpY29ucyBpbiB0aGUgbW9zdCBsZWFmIG5vZGUsXG4gICAgLy8gc2luY2Ugd2UgZG9uJ3QgY29sbGVjdCBhbGwgdGhlIHN0YXRpYyBtZXRhZGF0YSBpY29ucyBpbiB0aGUgcGFyZW50IHNlZ21lbnRzLlxuICAgIGNvbnN0IGxlYWZTZWdtZW50U3RhdGljSWNvbnMgPSB7XG4gICAgICAgIGljb246IFtdLFxuICAgICAgICBhcHBsZTogW11cbiAgICB9O1xuICAgIGNvbnN0IHJlc29sdmVyc0FuZFJlc3VsdHMgPSBwcmVyZW5kZXJNZXRhZGF0YShtZXRhZGF0YUl0ZW1zKTtcbiAgICBsZXQgcmVzdWx0SW5kZXggPSAwO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBtZXRhZGF0YUl0ZW1zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIF9zdGF0aWNGaWxlc01ldGFkYXRhX2ljb247XG4gICAgICAgIGNvbnN0IHN0YXRpY0ZpbGVzTWV0YWRhdGEgPSBtZXRhZGF0YUl0ZW1zW2ldWzFdO1xuICAgICAgICAvLyBUcmVhdCBmYXZpY29uIGFzIHNwZWNpYWwgY2FzZSwgaXQgc2hvdWxkIGJlIHRoZSBmaXJzdCBpY29uIGluIHRoZSBsaXN0XG4gICAgICAgIC8vIGkgPD0gMSByZXByZXNlbnRzIHJvb3QgbGF5b3V0LCBhbmQgaWYgY3VycmVudCBwYWdlIGlzIGFsc28gYXQgcm9vdFxuICAgICAgICBpZiAoaSA8PSAxICYmIGlzRmF2aWNvbihzdGF0aWNGaWxlc01ldGFkYXRhID09IG51bGwgPyB2b2lkIDAgOiAoX3N0YXRpY0ZpbGVzTWV0YWRhdGFfaWNvbiA9IHN0YXRpY0ZpbGVzTWV0YWRhdGEuaWNvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9zdGF0aWNGaWxlc01ldGFkYXRhX2ljb25bMF0pKSB7XG4gICAgICAgICAgICB2YXIgX3N0YXRpY0ZpbGVzTWV0YWRhdGFfaWNvbjE7XG4gICAgICAgICAgICBjb25zdCBpY29uTW9kID0gc3RhdGljRmlsZXNNZXRhZGF0YSA9PSBudWxsID8gdm9pZCAwIDogKF9zdGF0aWNGaWxlc01ldGFkYXRhX2ljb24xID0gc3RhdGljRmlsZXNNZXRhZGF0YS5pY29uKSA9PSBudWxsID8gdm9pZCAwIDogX3N0YXRpY0ZpbGVzTWV0YWRhdGFfaWNvbjEuc2hpZnQoKTtcbiAgICAgICAgICAgIGlmIChpID09PSAwKSBmYXZpY29uID0gaWNvbk1vZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGVuZGluZ01ldGFkYXRhID0gcmVzb2x2ZXJzQW5kUmVzdWx0c1tyZXN1bHRJbmRleCsrXTtcbiAgICAgICAgaWYgKHR5cGVvZiBwZW5kaW5nTWV0YWRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgbWV0YWRhdGEgaXRlbSBoYWQgYSBgZ2VuZXJhdGVNZXRhZGF0YWAgYW5kXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHByb3ZpZGUgdGhlIGN1cnJlbnRseSByZXNvbHZlZCBtZXRhZGF0YVxuICAgICAgICAgICAgLy8gdG8gaXQgYmVmb3JlIHdlIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZVBhcmVudE1ldGFkYXRhID0gcGVuZGluZ01ldGFkYXRhO1xuICAgICAgICAgICAgLy8gd2Uga25vdyB0aGF0IHRoZSBuZXh0IGl0ZW0gaXMgYSByZXN1bHQgaWYgdGhpcyBpdGVtXG4gICAgICAgICAgICAvLyB3YXMgYSByZXNvbHZlclxuICAgICAgICAgICAgcGVuZGluZ01ldGFkYXRhID0gcmVzb2x2ZXJzQW5kUmVzdWx0c1tyZXN1bHRJbmRleCsrXTtcbiAgICAgICAgICAgIHJlc29sdmVQZW5kaW5nUmVzdWx0KHJlc29sdmVkTWV0YWRhdGEsIHJlc29sdmVQYXJlbnRNZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBpdGVtIHdhcyBlaXRoZXIgbnVsbCBvciBhIHN0YXRpYyBleHBvcnRcbiAgICAgICAgbGV0IG1ldGFkYXRhO1xuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShwZW5kaW5nTWV0YWRhdGEpKSB7XG4gICAgICAgICAgICBtZXRhZGF0YSA9IGF3YWl0IHBlbmRpbmdNZXRhZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1ldGFkYXRhID0gcGVuZGluZ01ldGFkYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmVkTWV0YWRhdGEgPSBhd2FpdCBtZXJnZU1ldGFkYXRhKHJvdXRlLCBwYXRobmFtZSwge1xuICAgICAgICAgICAgdGFyZ2V0OiByZXNvbHZlZE1ldGFkYXRhLFxuICAgICAgICAgICAgc291cmNlOiBtZXRhZGF0YSxcbiAgICAgICAgICAgIG1ldGFkYXRhQ29udGV4dCxcbiAgICAgICAgICAgIHN0YXRpY0ZpbGVzTWV0YWRhdGEsXG4gICAgICAgICAgICB0aXRsZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIGJ1aWxkU3RhdGUsXG4gICAgICAgICAgICBsZWFmU2VnbWVudFN0YXRpY0ljb25zXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB0aGUgbGF5b3V0IGlzIHRoZSBzYW1lIGxheWVyIHdpdGggcGFnZSwgc2tpcCB0aGUgbGVhZiBsYXlvdXQgYW5kIGxlYWYgcGFnZVxuICAgICAgICAvLyBUaGUgbGVhZiBsYXlvdXQgYW5kIHBhZ2UgYXJlIHRoZSBsYXN0IHR3byBpdGVtc1xuICAgICAgICBpZiAoaSA8IG1ldGFkYXRhSXRlbXMubGVuZ3RoIC0gMikge1xuICAgICAgICAgICAgdmFyIF9yZXNvbHZlZE1ldGFkYXRhX3RpdGxlLCBfcmVzb2x2ZWRNZXRhZGF0YV9vcGVuR3JhcGgsIF9yZXNvbHZlZE1ldGFkYXRhX3R3aXR0ZXI7XG4gICAgICAgICAgICB0aXRsZVRlbXBsYXRlcyA9IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKChfcmVzb2x2ZWRNZXRhZGF0YV90aXRsZSA9IHJlc29sdmVkTWV0YWRhdGEudGl0bGUpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzb2x2ZWRNZXRhZGF0YV90aXRsZS50ZW1wbGF0ZSkgfHwgbnVsbCxcbiAgICAgICAgICAgICAgICBvcGVuR3JhcGg6ICgoX3Jlc29sdmVkTWV0YWRhdGFfb3BlbkdyYXBoID0gcmVzb2x2ZWRNZXRhZGF0YS5vcGVuR3JhcGgpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzb2x2ZWRNZXRhZGF0YV9vcGVuR3JhcGgudGl0bGUudGVtcGxhdGUpIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgdHdpdHRlcjogKChfcmVzb2x2ZWRNZXRhZGF0YV90d2l0dGVyID0gcmVzb2x2ZWRNZXRhZGF0YS50d2l0dGVyKSA9PSBudWxsID8gdm9pZCAwIDogX3Jlc29sdmVkTWV0YWRhdGFfdHdpdHRlci50aXRsZS50ZW1wbGF0ZSkgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobGVhZlNlZ21lbnRTdGF0aWNJY29ucy5pY29uLmxlbmd0aCA+IDAgfHwgbGVhZlNlZ21lbnRTdGF0aWNJY29ucy5hcHBsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghcmVzb2x2ZWRNZXRhZGF0YS5pY29ucykge1xuICAgICAgICAgICAgcmVzb2x2ZWRNZXRhZGF0YS5pY29ucyA9IHtcbiAgICAgICAgICAgICAgICBpY29uOiBbXSxcbiAgICAgICAgICAgICAgICBhcHBsZTogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAobGVhZlNlZ21lbnRTdGF0aWNJY29ucy5pY29uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZE1ldGFkYXRhLmljb25zLmljb24udW5zaGlmdCguLi5sZWFmU2VnbWVudFN0YXRpY0ljb25zLmljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlYWZTZWdtZW50U3RhdGljSWNvbnMuYXBwbGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkTWV0YWRhdGEuaWNvbnMuYXBwbGUudW5zaGlmdCguLi5sZWFmU2VnbWVudFN0YXRpY0ljb25zLmFwcGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBPbmx5IGxvZyB3YXJuaW5ncyBpZiB0aGVyZSBhcmUgYW55LCBhbmQgb25seSBvbmNlIGFmdGVyIHRoZSBtZXRhZGF0YSByZXNvbHZpbmcgcHJvY2VzcyBpcyBmaW5pc2hlZFxuICAgIGlmIChidWlsZFN0YXRlLndhcm5pbmdzLnNpemUgPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3Qgd2FybmluZyBvZiBidWlsZFN0YXRlLndhcm5pbmdzKXtcbiAgICAgICAgICAgIF9sb2cud2Fybih3YXJuaW5nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9zdFByb2Nlc3NNZXRhZGF0YShyZXNvbHZlZE1ldGFkYXRhLCBmYXZpY29uLCB0aXRsZVRlbXBsYXRlcywgbWV0YWRhdGFDb250ZXh0KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGFjY3VtdWxhdGVWaWV3cG9ydCh2aWV3cG9ydEl0ZW1zKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRWaWV3cG9ydCA9ICgwLCBfZGVmYXVsdG1ldGFkYXRhLmNyZWF0ZURlZmF1bHRWaWV3cG9ydCkoKTtcbiAgICBjb25zdCByZXNvbHZlcnNBbmRSZXN1bHRzID0gcHJlcmVuZGVyVmlld3BvcnQodmlld3BvcnRJdGVtcyk7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlKGkgPCByZXNvbHZlcnNBbmRSZXN1bHRzLmxlbmd0aCl7XG4gICAgICAgIGxldCBwZW5kaW5nVmlld3BvcnQgPSByZXNvbHZlcnNBbmRSZXN1bHRzW2krK107XG4gICAgICAgIGlmICh0eXBlb2YgcGVuZGluZ1ZpZXdwb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyB0aGlzIHZpZXdwb3J0IGl0ZW0gaGFkIGEgYGdlbmVyYXRlVmlld3BvcnRgIGFuZFxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBwcm92aWRlIHRoZSBjdXJyZW50bHkgcmVzb2x2ZWQgdmlld3BvcnRcbiAgICAgICAgICAgIC8vIHRvIGl0IGJlZm9yZSB3ZSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVQYXJlbnRWaWV3cG9ydCA9IHBlbmRpbmdWaWV3cG9ydDtcbiAgICAgICAgICAgIC8vIHdlIGtub3cgdGhhdCB0aGUgbmV4dCBpdGVtIGlzIGEgcmVzdWx0IGlmIHRoaXMgaXRlbVxuICAgICAgICAgICAgLy8gd2FzIGEgcmVzb2x2ZXJcbiAgICAgICAgICAgIHBlbmRpbmdWaWV3cG9ydCA9IHJlc29sdmVyc0FuZFJlc3VsdHNbaSsrXTtcbiAgICAgICAgICAgIHJlc29sdmVQZW5kaW5nUmVzdWx0KHJlc29sdmVkVmlld3BvcnQsIHJlc29sdmVQYXJlbnRWaWV3cG9ydCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBpdGVtIHdhcyBlaXRoZXIgbnVsbCBvciBhIHN0YXRpYyBleHBvcnRcbiAgICAgICAgbGV0IHZpZXdwb3J0O1xuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShwZW5kaW5nVmlld3BvcnQpKSB7XG4gICAgICAgICAgICB2aWV3cG9ydCA9IGF3YWl0IHBlbmRpbmdWaWV3cG9ydDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZpZXdwb3J0ID0gcGVuZGluZ1ZpZXdwb3J0O1xuICAgICAgICB9XG4gICAgICAgIG1lcmdlVmlld3BvcnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiByZXNvbHZlZFZpZXdwb3J0LFxuICAgICAgICAgICAgc291cmNlOiB2aWV3cG9ydFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkVmlld3BvcnQ7XG59XG5hc3luYyBmdW5jdGlvbiByZXNvbHZlTWV0YWRhdGEodHJlZSwgcGF0aG5hbWUsIHNlYXJjaFBhcmFtcywgZXJyb3JDb252ZW50aW9uLCBnZXREeW5hbWljUGFyYW1Gcm9tU2VnbWVudCwgd29ya1N0b3JlLCBtZXRhZGF0YUNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhZGF0YUl0ZW1zID0gYXdhaXQgcmVzb2x2ZU1ldGFkYXRhSXRlbXModHJlZSwgc2VhcmNoUGFyYW1zLCBlcnJvckNvbnZlbnRpb24sIGdldER5bmFtaWNQYXJhbUZyb21TZWdtZW50LCB3b3JrU3RvcmUpO1xuICAgIHJldHVybiBhY2N1bXVsYXRlTWV0YWRhdGEod29ya1N0b3JlLnJvdXRlLCBtZXRhZGF0YUl0ZW1zLCBwYXRobmFtZSwgbWV0YWRhdGFDb250ZXh0KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVWaWV3cG9ydCh0cmVlLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHZpZXdwb3J0SXRlbXMgPSBhd2FpdCByZXNvbHZlVmlld3BvcnRJdGVtcyh0cmVlLCBzZWFyY2hQYXJhbXMsIGVycm9yQ29udmVudGlvbiwgZ2V0RHluYW1pY1BhcmFtRnJvbVNlZ21lbnQsIHdvcmtTdG9yZSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdGVWaWV3cG9ydCh2aWV3cG9ydEl0ZW1zKTtcbn1cbmZ1bmN0aW9uIGlzUHJvbWlzZUxpa2UodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS1tZXRhZGF0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolve-metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveAlternates: function() {\n return resolveAlternates;\n },\n resolveAppLinks: function() {\n return resolveAppLinks;\n },\n resolveAppleWebApp: function() {\n return resolveAppleWebApp;\n },\n resolveFacebook: function() {\n return resolveFacebook;\n },\n resolveItunes: function() {\n return resolveItunes;\n },\n resolvePagination: function() {\n return resolvePagination;\n },\n resolveRobots: function() {\n return resolveRobots;\n },\n resolveThemeColor: function() {\n return resolveThemeColor;\n },\n resolveVerification: function() {\n return resolveVerification;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nfunction resolveAlternateUrl(url, metadataBase, pathname, metadataContext) {\n // If alter native url is an URL instance,\n // we treat it as a URL base and resolve with current pathname\n if (url instanceof URL) {\n const newUrl = new URL(pathname, url);\n url.searchParams.forEach((value, key)=>newUrl.searchParams.set(key, value));\n url = newUrl;\n }\n return (0, _resolveurl.resolveAbsoluteUrlWithPathname)(url, metadataBase, pathname, metadataContext);\n}\nconst resolveThemeColor = (themeColor)=>{\n var _resolveAsArrayOrUndefined;\n if (!themeColor) return null;\n const themeColorDescriptors = [];\n (_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(themeColor)) == null ? void 0 : _resolveAsArrayOrUndefined.forEach((descriptor)=>{\n if (typeof descriptor === 'string') themeColorDescriptors.push({\n color: descriptor\n });\n else if (typeof descriptor === 'object') themeColorDescriptors.push({\n color: descriptor.color,\n media: descriptor.media\n });\n });\n return themeColorDescriptors;\n};\nasync function resolveUrlValuesOfObject(obj, metadataBase, pathname, metadataContext) {\n if (!obj) return null;\n const result = {};\n for (const [key, value] of Object.entries(obj)){\n if (typeof value === 'string' || value instanceof URL) {\n const pathnameForUrl = await pathname;\n result[key] = [\n {\n url: resolveAlternateUrl(value, metadataBase, pathnameForUrl, metadataContext)\n }\n ];\n } else if (value && value.length) {\n result[key] = [];\n const pathnameForUrl = await pathname;\n value.forEach((item, index)=>{\n const url = resolveAlternateUrl(item.url, metadataBase, pathnameForUrl, metadataContext);\n result[key][index] = {\n url,\n title: item.title\n };\n });\n }\n }\n return result;\n}\nasync function resolveCanonicalUrl(urlOrDescriptor, metadataBase, pathname, metadataContext) {\n if (!urlOrDescriptor) return null;\n const url = typeof urlOrDescriptor === 'string' || urlOrDescriptor instanceof URL ? urlOrDescriptor : urlOrDescriptor.url;\n const pathnameForUrl = await pathname;\n // Return string url because structureClone can't handle URL instance\n return {\n url: resolveAlternateUrl(url, metadataBase, pathnameForUrl, metadataContext)\n };\n}\nconst resolveAlternates = async (alternates, metadataBase, pathname, context)=>{\n if (!alternates) return null;\n const canonical = await resolveCanonicalUrl(alternates.canonical, metadataBase, pathname, context);\n const languages = await resolveUrlValuesOfObject(alternates.languages, metadataBase, pathname, context);\n const media = await resolveUrlValuesOfObject(alternates.media, metadataBase, pathname, context);\n const types = await resolveUrlValuesOfObject(alternates.types, metadataBase, pathname, context);\n const result = {\n canonical,\n languages,\n media,\n types\n };\n return result;\n};\nconst robotsKeys = [\n 'noarchive',\n 'nosnippet',\n 'noimageindex',\n 'nocache',\n 'notranslate',\n 'indexifembedded',\n 'nositelinkssearchbox',\n 'unavailable_after',\n 'max-video-preview',\n 'max-image-preview',\n 'max-snippet'\n];\nconst resolveRobotsValue = (robots)=>{\n if (!robots) return null;\n if (typeof robots === 'string') return robots;\n const values = [];\n if (robots.index) values.push('index');\n else if (typeof robots.index === 'boolean') values.push('noindex');\n if (robots.follow) values.push('follow');\n else if (typeof robots.follow === 'boolean') values.push('nofollow');\n for (const key of robotsKeys){\n const value = robots[key];\n if (typeof value !== 'undefined' && value !== false) {\n values.push(typeof value === 'boolean' ? key : `${key}:${value}`);\n }\n }\n return values.join(', ');\n};\nconst resolveRobots = (robots)=>{\n if (!robots) return null;\n return {\n basic: resolveRobotsValue(robots),\n googleBot: typeof robots !== 'string' ? resolveRobotsValue(robots.googleBot) : null\n };\n};\nconst VerificationKeys = [\n 'google',\n 'yahoo',\n 'yandex',\n 'me',\n 'other'\n];\nconst resolveVerification = (verification)=>{\n if (!verification) return null;\n const res = {};\n for (const key of VerificationKeys){\n const value = verification[key];\n if (value) {\n if (key === 'other') {\n res.other = {};\n for(const otherKey in verification.other){\n const otherValue = (0, _utils.resolveAsArrayOrUndefined)(verification.other[otherKey]);\n if (otherValue) res.other[otherKey] = otherValue;\n }\n } else res[key] = (0, _utils.resolveAsArrayOrUndefined)(value);\n }\n }\n return res;\n};\nconst resolveAppleWebApp = (appWebApp)=>{\n var _resolveAsArrayOrUndefined;\n if (!appWebApp) return null;\n if (appWebApp === true) {\n return {\n capable: true\n };\n }\n const startupImages = appWebApp.startupImage ? (_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(appWebApp.startupImage)) == null ? void 0 : _resolveAsArrayOrUndefined.map((item)=>typeof item === 'string' ? {\n url: item\n } : item) : null;\n return {\n capable: 'capable' in appWebApp ? !!appWebApp.capable : true,\n title: appWebApp.title || null,\n startupImage: startupImages,\n statusBarStyle: appWebApp.statusBarStyle || 'default'\n };\n};\nconst resolveAppLinks = (appLinks)=>{\n if (!appLinks) return null;\n for(const key in appLinks){\n // @ts-ignore // TODO: type infer\n appLinks[key] = (0, _utils.resolveAsArrayOrUndefined)(appLinks[key]);\n }\n return appLinks;\n};\nconst resolveItunes = async (itunes, metadataBase, pathname, context)=>{\n if (!itunes) return null;\n return {\n appId: itunes.appId,\n appArgument: itunes.appArgument ? resolveAlternateUrl(itunes.appArgument, metadataBase, await pathname, context) : undefined\n };\n};\nconst resolveFacebook = (facebook)=>{\n if (!facebook) return null;\n return {\n appId: facebook.appId,\n admins: (0, _utils.resolveAsArrayOrUndefined)(facebook.admins)\n };\n};\nconst resolvePagination = async (pagination, metadataBase, pathname, context)=>{\n return {\n previous: (pagination == null ? void 0 : pagination.previous) ? resolveAlternateUrl(pagination.previous, metadataBase, await pathname, context) : null,\n next: (pagination == null ? void 0 : pagination.next) ? resolveAlternateUrl(pagination.next, metadataBase, await pathname, context) : null\n };\n};\n\n//# sourceMappingURL=resolve-basics.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1iYXNpY3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBVUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxJQUFJLEdBQUcsTUFBTTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxyZXNvbHZlcnNcXHJlc29sdmUtYmFzaWNzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgcmVzb2x2ZUFsdGVybmF0ZXM6IG51bGwsXG4gICAgcmVzb2x2ZUFwcExpbmtzOiBudWxsLFxuICAgIHJlc29sdmVBcHBsZVdlYkFwcDogbnVsbCxcbiAgICByZXNvbHZlRmFjZWJvb2s6IG51bGwsXG4gICAgcmVzb2x2ZUl0dW5lczogbnVsbCxcbiAgICByZXNvbHZlUGFnaW5hdGlvbjogbnVsbCxcbiAgICByZXNvbHZlUm9ib3RzOiBudWxsLFxuICAgIHJlc29sdmVUaGVtZUNvbG9yOiBudWxsLFxuICAgIHJlc29sdmVWZXJpZmljYXRpb246IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVzb2x2ZUFsdGVybmF0ZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFsdGVybmF0ZXM7XG4gICAgfSxcbiAgICByZXNvbHZlQXBwTGlua3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFwcExpbmtzO1xuICAgIH0sXG4gICAgcmVzb2x2ZUFwcGxlV2ViQXBwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcHBsZVdlYkFwcDtcbiAgICB9LFxuICAgIHJlc29sdmVGYWNlYm9vazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlRmFjZWJvb2s7XG4gICAgfSxcbiAgICByZXNvbHZlSXR1bmVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVJdHVuZXM7XG4gICAgfSxcbiAgICByZXNvbHZlUGFnaW5hdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlUGFnaW5hdGlvbjtcbiAgICB9LFxuICAgIHJlc29sdmVSb2JvdHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVJvYm90cztcbiAgICB9LFxuICAgIHJlc29sdmVUaGVtZUNvbG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVUaGVtZUNvbG9yO1xuICAgIH0sXG4gICAgcmVzb2x2ZVZlcmlmaWNhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVmVyaWZpY2F0aW9uO1xuICAgIH1cbn0pO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uL2dlbmVyYXRlL3V0aWxzXCIpO1xuY29uc3QgX3Jlc29sdmV1cmwgPSByZXF1aXJlKFwiLi9yZXNvbHZlLXVybFwiKTtcbmZ1bmN0aW9uIHJlc29sdmVBbHRlcm5hdGVVcmwodXJsLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQpIHtcbiAgICAvLyBJZiBhbHRlciBuYXRpdmUgdXJsIGlzIGFuIFVSTCBpbnN0YW5jZSxcbiAgICAvLyB3ZSB0cmVhdCBpdCBhcyBhIFVSTCBiYXNlIGFuZCByZXNvbHZlIHdpdGggY3VycmVudCBwYXRobmFtZVxuICAgIGlmICh1cmwgaW5zdGFuY2VvZiBVUkwpIHtcbiAgICAgICAgY29uc3QgbmV3VXJsID0gbmV3IFVSTChwYXRobmFtZSwgdXJsKTtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KT0+bmV3VXJsLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCB2YWx1ZSkpO1xuICAgICAgICB1cmwgPSBuZXdVcmw7XG4gICAgfVxuICAgIHJldHVybiAoMCwgX3Jlc29sdmV1cmwucmVzb2x2ZUFic29sdXRlVXJsV2l0aFBhdGhuYW1lKSh1cmwsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCk7XG59XG5jb25zdCByZXNvbHZlVGhlbWVDb2xvciA9ICh0aGVtZUNvbG9yKT0+e1xuICAgIHZhciBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZDtcbiAgICBpZiAoIXRoZW1lQ29sb3IpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHRoZW1lQ29sb3JEZXNjcmlwdG9ycyA9IFtdO1xuICAgIChfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkodGhlbWVDb2xvcikpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZC5mb3JFYWNoKChkZXNjcmlwdG9yKT0+e1xuICAgICAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IgPT09ICdzdHJpbmcnKSB0aGVtZUNvbG9yRGVzY3JpcHRvcnMucHVzaCh7XG4gICAgICAgICAgICBjb2xvcjogZGVzY3JpcHRvclxuICAgICAgICB9KTtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRlc2NyaXB0b3IgPT09ICdvYmplY3QnKSB0aGVtZUNvbG9yRGVzY3JpcHRvcnMucHVzaCh7XG4gICAgICAgICAgICBjb2xvcjogZGVzY3JpcHRvci5jb2xvcixcbiAgICAgICAgICAgIG1lZGlhOiBkZXNjcmlwdG9yLm1lZGlhXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGVtZUNvbG9yRGVzY3JpcHRvcnM7XG59O1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVVybFZhbHVlc09mT2JqZWN0KG9iaiwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgbWV0YWRhdGFDb250ZXh0KSB7XG4gICAgaWYgKCFvYmopIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpe1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFVSTCkge1xuICAgICAgICAgICAgY29uc3QgcGF0aG5hbWVGb3JVcmwgPSBhd2FpdCBwYXRobmFtZTtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiByZXNvbHZlQWx0ZXJuYXRlVXJsKHZhbHVlLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lRm9yVXJsLCBtZXRhZGF0YUNvbnRleHQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW107XG4gICAgICAgICAgICBjb25zdCBwYXRobmFtZUZvclVybCA9IGF3YWl0IHBhdGhuYW1lO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoaXRlbSwgaW5kZXgpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gcmVzb2x2ZUFsdGVybmF0ZVVybChpdGVtLnVybCwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZUZvclVybCwgbWV0YWRhdGFDb250ZXh0KTtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XVtpbmRleF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVDYW5vbmljYWxVcmwodXJsT3JEZXNjcmlwdG9yLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQpIHtcbiAgICBpZiAoIXVybE9yRGVzY3JpcHRvcikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgdXJsID0gdHlwZW9mIHVybE9yRGVzY3JpcHRvciA9PT0gJ3N0cmluZycgfHwgdXJsT3JEZXNjcmlwdG9yIGluc3RhbmNlb2YgVVJMID8gdXJsT3JEZXNjcmlwdG9yIDogdXJsT3JEZXNjcmlwdG9yLnVybDtcbiAgICBjb25zdCBwYXRobmFtZUZvclVybCA9IGF3YWl0IHBhdGhuYW1lO1xuICAgIC8vIFJldHVybiBzdHJpbmcgdXJsIGJlY2F1c2Ugc3RydWN0dXJlQ2xvbmUgY2FuJ3QgaGFuZGxlIFVSTCBpbnN0YW5jZVxuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogcmVzb2x2ZUFsdGVybmF0ZVVybCh1cmwsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWVGb3JVcmwsIG1ldGFkYXRhQ29udGV4dClcbiAgICB9O1xufVxuY29uc3QgcmVzb2x2ZUFsdGVybmF0ZXMgPSBhc3luYyAoYWx0ZXJuYXRlcywgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk9PntcbiAgICBpZiAoIWFsdGVybmF0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGNhbm9uaWNhbCA9IGF3YWl0IHJlc29sdmVDYW5vbmljYWxVcmwoYWx0ZXJuYXRlcy5jYW5vbmljYWwsIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpO1xuICAgIGNvbnN0IGxhbmd1YWdlcyA9IGF3YWl0IHJlc29sdmVVcmxWYWx1ZXNPZk9iamVjdChhbHRlcm5hdGVzLmxhbmd1YWdlcywgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk7XG4gICAgY29uc3QgbWVkaWEgPSBhd2FpdCByZXNvbHZlVXJsVmFsdWVzT2ZPYmplY3QoYWx0ZXJuYXRlcy5tZWRpYSwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk7XG4gICAgY29uc3QgdHlwZXMgPSBhd2FpdCByZXNvbHZlVXJsVmFsdWVzT2ZPYmplY3QoYWx0ZXJuYXRlcy50eXBlcywgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICBjYW5vbmljYWwsXG4gICAgICAgIGxhbmd1YWdlcyxcbiAgICAgICAgbWVkaWEsXG4gICAgICAgIHR5cGVzXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IHJvYm90c0tleXMgPSBbXG4gICAgJ25vYXJjaGl2ZScsXG4gICAgJ25vc25pcHBldCcsXG4gICAgJ25vaW1hZ2VpbmRleCcsXG4gICAgJ25vY2FjaGUnLFxuICAgICdub3RyYW5zbGF0ZScsXG4gICAgJ2luZGV4aWZlbWJlZGRlZCcsXG4gICAgJ25vc2l0ZWxpbmtzc2VhcmNoYm94JyxcbiAgICAndW5hdmFpbGFibGVfYWZ0ZXInLFxuICAgICdtYXgtdmlkZW8tcHJldmlldycsXG4gICAgJ21heC1pbWFnZS1wcmV2aWV3JyxcbiAgICAnbWF4LXNuaXBwZXQnXG5dO1xuY29uc3QgcmVzb2x2ZVJvYm90c1ZhbHVlID0gKHJvYm90cyk9PntcbiAgICBpZiAoIXJvYm90cykgcmV0dXJuIG51bGw7XG4gICAgaWYgKHR5cGVvZiByb2JvdHMgPT09ICdzdHJpbmcnKSByZXR1cm4gcm9ib3RzO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGlmIChyb2JvdHMuaW5kZXgpIHZhbHVlcy5wdXNoKCdpbmRleCcpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiByb2JvdHMuaW5kZXggPT09ICdib29sZWFuJykgdmFsdWVzLnB1c2goJ25vaW5kZXgnKTtcbiAgICBpZiAocm9ib3RzLmZvbGxvdykgdmFsdWVzLnB1c2goJ2ZvbGxvdycpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiByb2JvdHMuZm9sbG93ID09PSAnYm9vbGVhbicpIHZhbHVlcy5wdXNoKCdub2ZvbGxvdycpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHJvYm90c0tleXMpe1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvYm90c1trZXldO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nID8ga2V5IDogYCR7a2V5fToke3ZhbHVlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXMuam9pbignLCAnKTtcbn07XG5jb25zdCByZXNvbHZlUm9ib3RzID0gKHJvYm90cyk9PntcbiAgICBpZiAoIXJvYm90cykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYmFzaWM6IHJlc29sdmVSb2JvdHNWYWx1ZShyb2JvdHMpLFxuICAgICAgICBnb29nbGVCb3Q6IHR5cGVvZiByb2JvdHMgIT09ICdzdHJpbmcnID8gcmVzb2x2ZVJvYm90c1ZhbHVlKHJvYm90cy5nb29nbGVCb3QpIDogbnVsbFxuICAgIH07XG59O1xuY29uc3QgVmVyaWZpY2F0aW9uS2V5cyA9IFtcbiAgICAnZ29vZ2xlJyxcbiAgICAneWFob28nLFxuICAgICd5YW5kZXgnLFxuICAgICdtZScsXG4gICAgJ290aGVyJ1xuXTtcbmNvbnN0IHJlc29sdmVWZXJpZmljYXRpb24gPSAodmVyaWZpY2F0aW9uKT0+e1xuICAgIGlmICghdmVyaWZpY2F0aW9uKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBWZXJpZmljYXRpb25LZXlzKXtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2ZXJpZmljYXRpb25ba2V5XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnb3RoZXInKSB7XG4gICAgICAgICAgICAgICAgcmVzLm90aGVyID0ge307XG4gICAgICAgICAgICAgICAgZm9yKGNvbnN0IG90aGVyS2V5IGluIHZlcmlmaWNhdGlvbi5vdGhlcil7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyVmFsdWUgPSAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKHZlcmlmaWNhdGlvbi5vdGhlcltvdGhlcktleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJWYWx1ZSkgcmVzLm90aGVyW290aGVyS2V5XSA9IG90aGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHJlc1trZXldID0gKDAsIF91dGlscy5yZXNvbHZlQXNBcnJheU9yVW5kZWZpbmVkKSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG5jb25zdCByZXNvbHZlQXBwbGVXZWJBcHAgPSAoYXBwV2ViQXBwKT0+e1xuICAgIHZhciBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZDtcbiAgICBpZiAoIWFwcFdlYkFwcCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGFwcFdlYkFwcCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2FwYWJsZTogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydHVwSW1hZ2VzID0gYXBwV2ViQXBwLnN0YXJ0dXBJbWFnZSA/IChfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoYXBwV2ViQXBwLnN0YXJ0dXBJbWFnZSkpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZC5tYXAoKGl0ZW0pPT50eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7XG4gICAgICAgICAgICB1cmw6IGl0ZW1cbiAgICAgICAgfSA6IGl0ZW0pIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBjYXBhYmxlOiAnY2FwYWJsZScgaW4gYXBwV2ViQXBwID8gISFhcHBXZWJBcHAuY2FwYWJsZSA6IHRydWUsXG4gICAgICAgIHRpdGxlOiBhcHBXZWJBcHAudGl0bGUgfHwgbnVsbCxcbiAgICAgICAgc3RhcnR1cEltYWdlOiBzdGFydHVwSW1hZ2VzLFxuICAgICAgICBzdGF0dXNCYXJTdHlsZTogYXBwV2ViQXBwLnN0YXR1c0JhclN0eWxlIHx8ICdkZWZhdWx0J1xuICAgIH07XG59O1xuY29uc3QgcmVzb2x2ZUFwcExpbmtzID0gKGFwcExpbmtzKT0+e1xuICAgIGlmICghYXBwTGlua3MpIHJldHVybiBudWxsO1xuICAgIGZvcihjb25zdCBrZXkgaW4gYXBwTGlua3Mpe1xuICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE86IHR5cGUgaW5mZXJcbiAgICAgICAgYXBwTGlua3Nba2V5XSA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoYXBwTGlua3Nba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiBhcHBMaW5rcztcbn07XG5jb25zdCByZXNvbHZlSXR1bmVzID0gYXN5bmMgKGl0dW5lcywgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgY29udGV4dCk9PntcbiAgICBpZiAoIWl0dW5lcykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXBwSWQ6IGl0dW5lcy5hcHBJZCxcbiAgICAgICAgYXBwQXJndW1lbnQ6IGl0dW5lcy5hcHBBcmd1bWVudCA/IHJlc29sdmVBbHRlcm5hdGVVcmwoaXR1bmVzLmFwcEFyZ3VtZW50LCBtZXRhZGF0YUJhc2UsIGF3YWl0IHBhdGhuYW1lLCBjb250ZXh0KSA6IHVuZGVmaW5lZFxuICAgIH07XG59O1xuY29uc3QgcmVzb2x2ZUZhY2Vib29rID0gKGZhY2Vib29rKT0+e1xuICAgIGlmICghZmFjZWJvb2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFwcElkOiBmYWNlYm9vay5hcHBJZCxcbiAgICAgICAgYWRtaW5zOiAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKGZhY2Vib29rLmFkbWlucylcbiAgICB9O1xufTtcbmNvbnN0IHJlc29sdmVQYWdpbmF0aW9uID0gYXN5bmMgKHBhZ2luYXRpb24sIG1ldGFkYXRhQmFzZSwgcGF0aG5hbWUsIGNvbnRleHQpPT57XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlvdXM6IChwYWdpbmF0aW9uID09IG51bGwgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLnByZXZpb3VzKSA/IHJlc29sdmVBbHRlcm5hdGVVcmwocGFnaW5hdGlvbi5wcmV2aW91cywgbWV0YWRhdGFCYXNlLCBhd2FpdCBwYXRobmFtZSwgY29udGV4dCkgOiBudWxsLFxuICAgICAgICBuZXh0OiAocGFnaW5hdGlvbiA9PSBudWxsID8gdm9pZCAwIDogcGFnaW5hdGlvbi5uZXh0KSA/IHJlc29sdmVBbHRlcm5hdGVVcmwocGFnaW5hdGlvbi5uZXh0LCBtZXRhZGF0YUJhc2UsIGF3YWl0IHBhdGhuYW1lLCBjb250ZXh0KSA6IG51bGxcbiAgICB9O1xufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS1iYXNpY3MuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveIcon: function() {\n return resolveIcon;\n },\n resolveIcons: function() {\n return resolveIcons;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nconst _constants = __webpack_require__(/*! ../constants */ \"(rsc)/./node_modules/next/dist/lib/metadata/constants.js\");\nfunction resolveIcon(icon) {\n if ((0, _resolveurl.isStringOrURL)(icon)) return {\n url: icon\n };\n else if (Array.isArray(icon)) return icon;\n return icon;\n}\nconst resolveIcons = (icons)=>{\n if (!icons) {\n return null;\n }\n const resolved = {\n icon: [],\n apple: []\n };\n if (Array.isArray(icons)) {\n resolved.icon = icons.map(resolveIcon).filter(Boolean);\n } else if ((0, _resolveurl.isStringOrURL)(icons)) {\n resolved.icon = [\n resolveIcon(icons)\n ];\n } else {\n for (const key of _constants.IconKeys){\n const values = (0, _utils.resolveAsArrayOrUndefined)(icons[key]);\n if (values) resolved[key] = values.map(resolveIcon);\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-icons.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1pY29ucy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDLG1CQUFtQixtQkFBTyxDQUFDLDhFQUFjO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxyZXNvbHZlcnNcXHJlc29sdmUtaWNvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICByZXNvbHZlSWNvbjogbnVsbCxcbiAgICByZXNvbHZlSWNvbnM6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVzb2x2ZUljb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUljb247XG4gICAgfSxcbiAgICByZXNvbHZlSWNvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUljb25zO1xuICAgIH1cbn0pO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uL2dlbmVyYXRlL3V0aWxzXCIpO1xuY29uc3QgX3Jlc29sdmV1cmwgPSByZXF1aXJlKFwiLi9yZXNvbHZlLXVybFwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUljb24oaWNvbikge1xuICAgIGlmICgoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaWNvbikpIHJldHVybiB7XG4gICAgICAgIHVybDogaWNvblxuICAgIH07XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpY29uKSkgcmV0dXJuIGljb247XG4gICAgcmV0dXJuIGljb247XG59XG5jb25zdCByZXNvbHZlSWNvbnMgPSAoaWNvbnMpPT57XG4gICAgaWYgKCFpY29ucykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB7XG4gICAgICAgIGljb246IFtdLFxuICAgICAgICBhcHBsZTogW11cbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGljb25zKSkge1xuICAgICAgICByZXNvbHZlZC5pY29uID0gaWNvbnMubWFwKHJlc29sdmVJY29uKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfSBlbHNlIGlmICgoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaWNvbnMpKSB7XG4gICAgICAgIHJlc29sdmVkLmljb24gPSBbXG4gICAgICAgICAgICByZXNvbHZlSWNvbihpY29ucylcbiAgICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBfY29uc3RhbnRzLkljb25LZXlzKXtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkoaWNvbnNba2V5XSk7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSByZXNvbHZlZFtrZXldID0gdmFsdWVzLm1hcChyZXNvbHZlSWNvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkO1xufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS1pY29ucy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js": /*!****************************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js ***! \****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n resolveImages: function() {\n return resolveImages;\n },\n resolveOpenGraph: function() {\n return resolveOpenGraph;\n },\n resolveTwitter: function() {\n return resolveTwitter;\n }\n});\nconst _utils = __webpack_require__(/*! ../generate/utils */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/utils.js\");\nconst _resolveurl = __webpack_require__(/*! ./resolve-url */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\");\nconst _resolvetitle = __webpack_require__(/*! ./resolve-title */ \"(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\");\nconst _url = __webpack_require__(/*! ../../url */ \"(rsc)/./node_modules/next/dist/lib/url.js\");\nconst _log = __webpack_require__(/*! ../../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\");\nconst OgTypeFields = {\n article: [\n 'authors',\n 'tags'\n ],\n song: [\n 'albums',\n 'musicians'\n ],\n playlist: [\n 'albums',\n 'musicians'\n ],\n radio: [\n 'creators'\n ],\n video: [\n 'actors',\n 'directors',\n 'writers',\n 'tags'\n ],\n basic: [\n 'emails',\n 'phoneNumbers',\n 'faxNumbers',\n 'alternateLocale',\n 'audio',\n 'videos'\n ]\n};\nfunction resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile) {\n if (!item) return undefined;\n const isItemUrl = (0, _resolveurl.isStringOrURL)(item);\n const inputUrl = isItemUrl ? item : item.url;\n if (!inputUrl) return undefined;\n // process.env.VERCEL is set to \"1\" when System Environment Variables are\n // exposed. When exposed, validation is not necessary since we are falling back to\n // process.env.VERCEL_PROJECT_PRODUCTION_URL, process.env.VERCEL_BRANCH_URL, or\n // process.env.VERCEL_URL for the `metadataBase`. process.env.VERCEL is undefined\n // when System Environment Variables are not exposed. When not exposed, we cannot\n // detect in the build environment if the deployment is a Vercel deployment or not.\n //\n // x-ref: https://vercel.com/docs/projects/environment-variables/system-environment-variables#system-environment-variables\n const isUsingVercelSystemEnvironmentVariables = Boolean(process.env.VERCEL);\n const isRelativeUrl = typeof inputUrl === 'string' && !(0, _url.isFullStringUrl)(inputUrl);\n // When no explicit metadataBase is specified by the user, we'll override it with the fallback metadata\n // under the following conditions:\n // - The provided URL is relative (ie ./og-image).\n // - The image is statically generated by Next.js (such as the special `opengraph-image` route)\n // In both cases, we want to ensure that across all environments, the ogImage is a fully qualified URL.\n // In the `opengraph-image` case, since the user isn't explicitly passing a relative path, this ensures\n // the ogImage will be properly discovered across different environments without the user needing to\n // have a bunch of `process.env` checks when defining their `metadataBase`.\n if (isRelativeUrl && (!metadataBase || isStaticMetadataRouteFile)) {\n const fallbackMetadataBase = (0, _resolveurl.getSocialImageMetadataBaseFallback)(metadataBase);\n // When not using Vercel environment variables for URL injection, we aren't able to determine\n // a fallback value for `metadataBase`. For self-hosted setups, we want to warn\n // about this since the only fallback we'll be able to generate is `localhost`.\n // In development, we'll only warn for relative metadata that isn't part of the static\n // metadata conventions (eg `opengraph-image`), as otherwise it's currently very noisy\n // for common cases. Eventually we should remove this warning all together in favor of\n // devtools.\n const shouldWarn = !isUsingVercelSystemEnvironmentVariables && !metadataBase && ( false || !isStaticMetadataRouteFile);\n if (shouldWarn) {\n (0, _log.warnOnce)(`metadataBase property in metadata export is not set for resolving social open graph or twitter images, using \"${fallbackMetadataBase.origin}\". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase`);\n }\n metadataBase = fallbackMetadataBase;\n }\n return isItemUrl ? {\n url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)\n } : {\n ...item,\n // Update image descriptor url\n url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)\n };\n}\nfunction resolveImages(images, metadataBase, isStaticMetadataRouteFile) {\n const resolvedImages = (0, _utils.resolveAsArrayOrUndefined)(images);\n if (!resolvedImages) return resolvedImages;\n const nonNullableImages = [];\n for (const item of resolvedImages){\n const resolvedItem = resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile);\n if (!resolvedItem) continue;\n nonNullableImages.push(resolvedItem);\n }\n return nonNullableImages;\n}\nconst ogTypeToFields = {\n article: OgTypeFields.article,\n book: OgTypeFields.article,\n 'music.song': OgTypeFields.song,\n 'music.album': OgTypeFields.song,\n 'music.playlist': OgTypeFields.playlist,\n 'music.radio_station': OgTypeFields.radio,\n 'video.movie': OgTypeFields.video,\n 'video.episode': OgTypeFields.video\n};\nfunction getFieldsByOgType(ogType) {\n if (!ogType || !(ogType in ogTypeToFields)) return OgTypeFields.basic;\n return ogTypeToFields[ogType].concat(OgTypeFields.basic);\n}\nconst resolveOpenGraph = async (openGraph, metadataBase, pathname, metadataContext, titleTemplate)=>{\n if (!openGraph) return null;\n function resolveProps(target, og) {\n const ogType = og && 'type' in og ? og.type : undefined;\n const keys = getFieldsByOgType(ogType);\n for (const k of keys){\n const key = k;\n if (key in og && key !== 'url') {\n const value = og[key];\n target[key] = value ? (0, _utils.resolveArray)(value) : null;\n }\n }\n target.images = resolveImages(og.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n }\n const resolved = {\n ...openGraph,\n title: (0, _resolvetitle.resolveTitle)(openGraph.title, titleTemplate)\n };\n resolveProps(resolved, openGraph);\n resolved.url = openGraph.url ? (0, _resolveurl.resolveAbsoluteUrlWithPathname)(openGraph.url, metadataBase, await pathname, metadataContext) : null;\n return resolved;\n};\nconst TwitterBasicInfoKeys = [\n 'site',\n 'siteId',\n 'creator',\n 'creatorId',\n 'description'\n];\nconst resolveTwitter = (twitter, metadataBase, metadataContext, titleTemplate)=>{\n var _resolved_images;\n if (!twitter) return null;\n let card = 'card' in twitter ? twitter.card : undefined;\n const resolved = {\n ...twitter,\n title: (0, _resolvetitle.resolveTitle)(twitter.title, titleTemplate)\n };\n for (const infoKey of TwitterBasicInfoKeys){\n resolved[infoKey] = twitter[infoKey] || null;\n }\n resolved.images = resolveImages(twitter.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n card = card || (((_resolved_images = resolved.images) == null ? void 0 : _resolved_images.length) ? 'summary_large_image' : 'summary');\n resolved.card = card;\n if ('card' in resolved) {\n switch(resolved.card){\n case 'player':\n {\n resolved.players = (0, _utils.resolveAsArrayOrUndefined)(resolved.players) || [];\n break;\n }\n case 'app':\n {\n resolved.app = resolved.app || {};\n break;\n }\n case 'summary':\n case 'summary_large_image':\n break;\n default:\n resolved;\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-opengraph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS1vcGVuZ3JhcGguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxlQUFlLG1CQUFPLENBQUMsd0ZBQW1CO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLDJGQUFlO0FBQzNDLHNCQUFzQixtQkFBTyxDQUFDLCtGQUFpQjtBQUMvQyxhQUFhLG1CQUFPLENBQUMsNERBQVc7QUFDaEMsYUFBYSxtQkFBTyxDQUFDLHFGQUEyQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFBeUYsTUFBcUM7QUFDOUg7QUFDQSxnSkFBZ0osNEJBQTRCO0FBQzVLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcbWV0YWRhdGFcXHJlc29sdmVyc1xccmVzb2x2ZS1vcGVuZ3JhcGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICByZXNvbHZlSW1hZ2VzOiBudWxsLFxuICAgIHJlc29sdmVPcGVuR3JhcGg6IG51bGwsXG4gICAgcmVzb2x2ZVR3aXR0ZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVzb2x2ZUltYWdlczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSW1hZ2VzO1xuICAgIH0sXG4gICAgcmVzb2x2ZU9wZW5HcmFwaDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlT3BlbkdyYXBoO1xuICAgIH0sXG4gICAgcmVzb2x2ZVR3aXR0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVR3aXR0ZXI7XG4gICAgfVxufSk7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vZ2VuZXJhdGUvdXRpbHNcIik7XG5jb25zdCBfcmVzb2x2ZXVybCA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtdXJsXCIpO1xuY29uc3QgX3Jlc29sdmV0aXRsZSA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtdGl0bGVcIik7XG5jb25zdCBfdXJsID0gcmVxdWlyZShcIi4uLy4uL3VybFwiKTtcbmNvbnN0IF9sb2cgPSByZXF1aXJlKFwiLi4vLi4vLi4vYnVpbGQvb3V0cHV0L2xvZ1wiKTtcbmNvbnN0IE9nVHlwZUZpZWxkcyA9IHtcbiAgICBhcnRpY2xlOiBbXG4gICAgICAgICdhdXRob3JzJyxcbiAgICAgICAgJ3RhZ3MnXG4gICAgXSxcbiAgICBzb25nOiBbXG4gICAgICAgICdhbGJ1bXMnLFxuICAgICAgICAnbXVzaWNpYW5zJ1xuICAgIF0sXG4gICAgcGxheWxpc3Q6IFtcbiAgICAgICAgJ2FsYnVtcycsXG4gICAgICAgICdtdXNpY2lhbnMnXG4gICAgXSxcbiAgICByYWRpbzogW1xuICAgICAgICAnY3JlYXRvcnMnXG4gICAgXSxcbiAgICB2aWRlbzogW1xuICAgICAgICAnYWN0b3JzJyxcbiAgICAgICAgJ2RpcmVjdG9ycycsXG4gICAgICAgICd3cml0ZXJzJyxcbiAgICAgICAgJ3RhZ3MnXG4gICAgXSxcbiAgICBiYXNpYzogW1xuICAgICAgICAnZW1haWxzJyxcbiAgICAgICAgJ3Bob25lTnVtYmVycycsXG4gICAgICAgICdmYXhOdW1iZXJzJyxcbiAgICAgICAgJ2FsdGVybmF0ZUxvY2FsZScsXG4gICAgICAgICdhdWRpbycsXG4gICAgICAgICd2aWRlb3MnXG4gICAgXVxufTtcbmZ1bmN0aW9uIHJlc29sdmVBbmRWYWxpZGF0ZUltYWdlKGl0ZW0sIG1ldGFkYXRhQmFzZSwgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc0l0ZW1VcmwgPSAoMCwgX3Jlc29sdmV1cmwuaXNTdHJpbmdPclVSTCkoaXRlbSk7XG4gICAgY29uc3QgaW5wdXRVcmwgPSBpc0l0ZW1VcmwgPyBpdGVtIDogaXRlbS51cmw7XG4gICAgaWYgKCFpbnB1dFVybCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAvLyBwcm9jZXNzLmVudi5WRVJDRUwgaXMgc2V0IHRvIFwiMVwiIHdoZW4gU3lzdGVtIEVudmlyb25tZW50IFZhcmlhYmxlcyBhcmVcbiAgICAvLyBleHBvc2VkLiBXaGVuIGV4cG9zZWQsIHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSBzaW5jZSB3ZSBhcmUgZmFsbGluZyBiYWNrIHRvXG4gICAgLy8gcHJvY2Vzcy5lbnYuVkVSQ0VMX1BST0pFQ1RfUFJPRFVDVElPTl9VUkwsIHByb2Nlc3MuZW52LlZFUkNFTF9CUkFOQ0hfVVJMLCBvclxuICAgIC8vIHByb2Nlc3MuZW52LlZFUkNFTF9VUkwgZm9yIHRoZSBgbWV0YWRhdGFCYXNlYC4gcHJvY2Vzcy5lbnYuVkVSQ0VMIGlzIHVuZGVmaW5lZFxuICAgIC8vIHdoZW4gU3lzdGVtIEVudmlyb25tZW50IFZhcmlhYmxlcyBhcmUgbm90IGV4cG9zZWQuIFdoZW4gbm90IGV4cG9zZWQsIHdlIGNhbm5vdFxuICAgIC8vIGRldGVjdCBpbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaWYgdGhlIGRlcGxveW1lbnQgaXMgYSBWZXJjZWwgZGVwbG95bWVudCBvciBub3QuXG4gICAgLy9cbiAgICAvLyB4LXJlZjogaHR0cHM6Ly92ZXJjZWwuY29tL2RvY3MvcHJvamVjdHMvZW52aXJvbm1lbnQtdmFyaWFibGVzL3N5c3RlbS1lbnZpcm9ubWVudC12YXJpYWJsZXMjc3lzdGVtLWVudmlyb25tZW50LXZhcmlhYmxlc1xuICAgIGNvbnN0IGlzVXNpbmdWZXJjZWxTeXN0ZW1FbnZpcm9ubWVudFZhcmlhYmxlcyA9IEJvb2xlYW4ocHJvY2Vzcy5lbnYuVkVSQ0VMKTtcbiAgICBjb25zdCBpc1JlbGF0aXZlVXJsID0gdHlwZW9mIGlucHV0VXJsID09PSAnc3RyaW5nJyAmJiAhKDAsIF91cmwuaXNGdWxsU3RyaW5nVXJsKShpbnB1dFVybCk7XG4gICAgLy8gV2hlbiBubyBleHBsaWNpdCBtZXRhZGF0YUJhc2UgaXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB3ZSdsbCBvdmVycmlkZSBpdCB3aXRoIHRoZSBmYWxsYmFjayBtZXRhZGF0YVxuICAgIC8vIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAgICAvLyAtIFRoZSBwcm92aWRlZCBVUkwgaXMgcmVsYXRpdmUgKGllIC4vb2ctaW1hZ2UpLlxuICAgIC8vIC0gVGhlIGltYWdlIGlzIHN0YXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IE5leHQuanMgKHN1Y2ggYXMgdGhlIHNwZWNpYWwgYG9wZW5ncmFwaC1pbWFnZWAgcm91dGUpXG4gICAgLy8gSW4gYm90aCBjYXNlcywgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCBhY3Jvc3MgYWxsIGVudmlyb25tZW50cywgdGhlIG9nSW1hZ2UgaXMgYSBmdWxseSBxdWFsaWZpZWQgVVJMLlxuICAgIC8vIEluIHRoZSBgb3BlbmdyYXBoLWltYWdlYCBjYXNlLCBzaW5jZSB0aGUgdXNlciBpc24ndCBleHBsaWNpdGx5IHBhc3NpbmcgYSByZWxhdGl2ZSBwYXRoLCB0aGlzIGVuc3VyZXNcbiAgICAvLyB0aGUgb2dJbWFnZSB3aWxsIGJlIHByb3Blcmx5IGRpc2NvdmVyZWQgYWNyb3NzIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgd2l0aG91dCB0aGUgdXNlciBuZWVkaW5nIHRvXG4gICAgLy8gaGF2ZSBhIGJ1bmNoIG9mIGBwcm9jZXNzLmVudmAgY2hlY2tzIHdoZW4gZGVmaW5pbmcgdGhlaXIgYG1ldGFkYXRhQmFzZWAuXG4gICAgaWYgKGlzUmVsYXRpdmVVcmwgJiYgKCFtZXRhZGF0YUJhc2UgfHwgaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSkpIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tNZXRhZGF0YUJhc2UgPSAoMCwgX3Jlc29sdmV1cmwuZ2V0U29jaWFsSW1hZ2VNZXRhZGF0YUJhc2VGYWxsYmFjaykobWV0YWRhdGFCYXNlKTtcbiAgICAgICAgLy8gV2hlbiBub3QgdXNpbmcgVmVyY2VsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgVVJMIGluamVjdGlvbiwgd2UgYXJlbid0IGFibGUgdG8gZGV0ZXJtaW5lXG4gICAgICAgIC8vIGEgZmFsbGJhY2sgdmFsdWUgZm9yIGBtZXRhZGF0YUJhc2VgLiBGb3Igc2VsZi1ob3N0ZWQgc2V0dXBzLCB3ZSB3YW50IHRvIHdhcm5cbiAgICAgICAgLy8gYWJvdXQgdGhpcyBzaW5jZSB0aGUgb25seSBmYWxsYmFjayB3ZSdsbCBiZSBhYmxlIHRvIGdlbmVyYXRlIGlzIGBsb2NhbGhvc3RgLlxuICAgICAgICAvLyBJbiBkZXZlbG9wbWVudCwgd2UnbGwgb25seSB3YXJuIGZvciByZWxhdGl2ZSBtZXRhZGF0YSB0aGF0IGlzbid0IHBhcnQgb2YgdGhlIHN0YXRpY1xuICAgICAgICAvLyBtZXRhZGF0YSBjb252ZW50aW9ucyAoZWcgYG9wZW5ncmFwaC1pbWFnZWApLCBhcyBvdGhlcndpc2UgaXQncyBjdXJyZW50bHkgdmVyeSBub2lzeVxuICAgICAgICAvLyBmb3IgY29tbW9uIGNhc2VzLiBFdmVudHVhbGx5IHdlIHNob3VsZCByZW1vdmUgdGhpcyB3YXJuaW5nIGFsbCB0b2dldGhlciBpbiBmYXZvciBvZlxuICAgICAgICAvLyBkZXZ0b29scy5cbiAgICAgICAgY29uc3Qgc2hvdWxkV2FybiA9ICFpc1VzaW5nVmVyY2VsU3lzdGVtRW52aXJvbm1lbnRWYXJpYWJsZXMgJiYgIW1ldGFkYXRhQmFzZSAmJiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyB8fCAhaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSk7XG4gICAgICAgIGlmIChzaG91bGRXYXJuKSB7XG4gICAgICAgICAgICAoMCwgX2xvZy53YXJuT25jZSkoYG1ldGFkYXRhQmFzZSBwcm9wZXJ0eSBpbiBtZXRhZGF0YSBleHBvcnQgaXMgbm90IHNldCBmb3IgcmVzb2x2aW5nIHNvY2lhbCBvcGVuIGdyYXBoIG9yIHR3aXR0ZXIgaW1hZ2VzLCB1c2luZyBcIiR7ZmFsbGJhY2tNZXRhZGF0YUJhc2Uub3JpZ2lufVwiLiBTZWUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2dlbmVyYXRlLW1ldGFkYXRhI21ldGFkYXRhYmFzZWApO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhQmFzZSA9IGZhbGxiYWNrTWV0YWRhdGFCYXNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNJdGVtVXJsID8ge1xuICAgICAgICB1cmw6ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlVXJsKShpbnB1dFVybCwgbWV0YWRhdGFCYXNlKVxuICAgIH0gOiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIC8vIFVwZGF0ZSBpbWFnZSBkZXNjcmlwdG9yIHVybFxuICAgICAgICB1cmw6ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlVXJsKShpbnB1dFVybCwgbWV0YWRhdGFCYXNlKVxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlSW1hZ2VzKGltYWdlcywgbWV0YWRhdGFCYXNlLCBpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRJbWFnZXMgPSAoMCwgX3V0aWxzLnJlc29sdmVBc0FycmF5T3JVbmRlZmluZWQpKGltYWdlcyk7XG4gICAgaWYgKCFyZXNvbHZlZEltYWdlcykgcmV0dXJuIHJlc29sdmVkSW1hZ2VzO1xuICAgIGNvbnN0IG5vbk51bGxhYmxlSW1hZ2VzID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc29sdmVkSW1hZ2VzKXtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRJdGVtID0gcmVzb2x2ZUFuZFZhbGlkYXRlSW1hZ2UoaXRlbSwgbWV0YWRhdGFCYXNlLCBpc1N0YXRpY01ldGFkYXRhUm91dGVGaWxlKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZEl0ZW0pIGNvbnRpbnVlO1xuICAgICAgICBub25OdWxsYWJsZUltYWdlcy5wdXNoKHJlc29sdmVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiBub25OdWxsYWJsZUltYWdlcztcbn1cbmNvbnN0IG9nVHlwZVRvRmllbGRzID0ge1xuICAgIGFydGljbGU6IE9nVHlwZUZpZWxkcy5hcnRpY2xlLFxuICAgIGJvb2s6IE9nVHlwZUZpZWxkcy5hcnRpY2xlLFxuICAgICdtdXNpYy5zb25nJzogT2dUeXBlRmllbGRzLnNvbmcsXG4gICAgJ211c2ljLmFsYnVtJzogT2dUeXBlRmllbGRzLnNvbmcsXG4gICAgJ211c2ljLnBsYXlsaXN0JzogT2dUeXBlRmllbGRzLnBsYXlsaXN0LFxuICAgICdtdXNpYy5yYWRpb19zdGF0aW9uJzogT2dUeXBlRmllbGRzLnJhZGlvLFxuICAgICd2aWRlby5tb3ZpZSc6IE9nVHlwZUZpZWxkcy52aWRlbyxcbiAgICAndmlkZW8uZXBpc29kZSc6IE9nVHlwZUZpZWxkcy52aWRlb1xufTtcbmZ1bmN0aW9uIGdldEZpZWxkc0J5T2dUeXBlKG9nVHlwZSkge1xuICAgIGlmICghb2dUeXBlIHx8ICEob2dUeXBlIGluIG9nVHlwZVRvRmllbGRzKSkgcmV0dXJuIE9nVHlwZUZpZWxkcy5iYXNpYztcbiAgICByZXR1cm4gb2dUeXBlVG9GaWVsZHNbb2dUeXBlXS5jb25jYXQoT2dUeXBlRmllbGRzLmJhc2ljKTtcbn1cbmNvbnN0IHJlc29sdmVPcGVuR3JhcGggPSBhc3luYyAob3BlbkdyYXBoLCBtZXRhZGF0YUJhc2UsIHBhdGhuYW1lLCBtZXRhZGF0YUNvbnRleHQsIHRpdGxlVGVtcGxhdGUpPT57XG4gICAgaWYgKCFvcGVuR3JhcGgpIHJldHVybiBudWxsO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVQcm9wcyh0YXJnZXQsIG9nKSB7XG4gICAgICAgIGNvbnN0IG9nVHlwZSA9IG9nICYmICd0eXBlJyBpbiBvZyA/IG9nLnR5cGUgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGtleXMgPSBnZXRGaWVsZHNCeU9nVHlwZShvZ1R5cGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cyl7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrO1xuICAgICAgICAgICAgaWYgKGtleSBpbiBvZyAmJiBrZXkgIT09ICd1cmwnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvZ1trZXldO1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsdWUgPyAoMCwgX3V0aWxzLnJlc29sdmVBcnJheSkodmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuaW1hZ2VzID0gcmVzb2x2ZUltYWdlcyhvZy5pbWFnZXMsIG1ldGFkYXRhQmFzZSwgbWV0YWRhdGFDb250ZXh0LmlzU3RhdGljTWV0YWRhdGFSb3V0ZUZpbGUpO1xuICAgIH1cbiAgICBjb25zdCByZXNvbHZlZCA9IHtcbiAgICAgICAgLi4ub3BlbkdyYXBoLFxuICAgICAgICB0aXRsZTogKDAsIF9yZXNvbHZldGl0bGUucmVzb2x2ZVRpdGxlKShvcGVuR3JhcGgudGl0bGUsIHRpdGxlVGVtcGxhdGUpXG4gICAgfTtcbiAgICByZXNvbHZlUHJvcHMocmVzb2x2ZWQsIG9wZW5HcmFwaCk7XG4gICAgcmVzb2x2ZWQudXJsID0gb3BlbkdyYXBoLnVybCA/ICgwLCBfcmVzb2x2ZXVybC5yZXNvbHZlQWJzb2x1dGVVcmxXaXRoUGF0aG5hbWUpKG9wZW5HcmFwaC51cmwsIG1ldGFkYXRhQmFzZSwgYXdhaXQgcGF0aG5hbWUsIG1ldGFkYXRhQ29udGV4dCkgOiBudWxsO1xuICAgIHJldHVybiByZXNvbHZlZDtcbn07XG5jb25zdCBUd2l0dGVyQmFzaWNJbmZvS2V5cyA9IFtcbiAgICAnc2l0ZScsXG4gICAgJ3NpdGVJZCcsXG4gICAgJ2NyZWF0b3InLFxuICAgICdjcmVhdG9ySWQnLFxuICAgICdkZXNjcmlwdGlvbidcbl07XG5jb25zdCByZXNvbHZlVHdpdHRlciA9ICh0d2l0dGVyLCBtZXRhZGF0YUJhc2UsIG1ldGFkYXRhQ29udGV4dCwgdGl0bGVUZW1wbGF0ZSk9PntcbiAgICB2YXIgX3Jlc29sdmVkX2ltYWdlcztcbiAgICBpZiAoIXR3aXR0ZXIpIHJldHVybiBudWxsO1xuICAgIGxldCBjYXJkID0gJ2NhcmQnIGluIHR3aXR0ZXIgPyB0d2l0dGVyLmNhcmQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB7XG4gICAgICAgIC4uLnR3aXR0ZXIsXG4gICAgICAgIHRpdGxlOiAoMCwgX3Jlc29sdmV0aXRsZS5yZXNvbHZlVGl0bGUpKHR3aXR0ZXIudGl0bGUsIHRpdGxlVGVtcGxhdGUpXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGluZm9LZXkgb2YgVHdpdHRlckJhc2ljSW5mb0tleXMpe1xuICAgICAgICByZXNvbHZlZFtpbmZvS2V5XSA9IHR3aXR0ZXJbaW5mb0tleV0gfHwgbnVsbDtcbiAgICB9XG4gICAgcmVzb2x2ZWQuaW1hZ2VzID0gcmVzb2x2ZUltYWdlcyh0d2l0dGVyLmltYWdlcywgbWV0YWRhdGFCYXNlLCBtZXRhZGF0YUNvbnRleHQuaXNTdGF0aWNNZXRhZGF0YVJvdXRlRmlsZSk7XG4gICAgY2FyZCA9IGNhcmQgfHwgKCgoX3Jlc29sdmVkX2ltYWdlcyA9IHJlc29sdmVkLmltYWdlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXNvbHZlZF9pbWFnZXMubGVuZ3RoKSA/ICdzdW1tYXJ5X2xhcmdlX2ltYWdlJyA6ICdzdW1tYXJ5Jyk7XG4gICAgcmVzb2x2ZWQuY2FyZCA9IGNhcmQ7XG4gICAgaWYgKCdjYXJkJyBpbiByZXNvbHZlZCkge1xuICAgICAgICBzd2l0Y2gocmVzb2x2ZWQuY2FyZCl7XG4gICAgICAgICAgICBjYXNlICdwbGF5ZXInOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQucGxheWVycyA9ICgwLCBfdXRpbHMucmVzb2x2ZUFzQXJyYXlPclVuZGVmaW5lZCkocmVzb2x2ZWQucGxheWVycykgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FwcCc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZC5hcHAgPSByZXNvbHZlZC5hcHAgfHwge307XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3N1bW1hcnknOlxuICAgICAgICAgICAgY2FzZSAnc3VtbWFyeV9sYXJnZV9pbWFnZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc29sdmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZDtcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlc29sdmUtb3BlbmdyYXBoLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveTitle\", ({\n enumerable: true,\n get: function() {\n return resolveTitle;\n }\n}));\nfunction resolveTitleTemplate(template, title) {\n return template ? template.replace(/%s/g, title) : title;\n}\nfunction resolveTitle(title, stashedTemplate) {\n let resolved;\n const template = typeof title !== 'string' && title && 'template' in title ? title.template : null;\n if (typeof title === 'string') {\n resolved = resolveTitleTemplate(stashedTemplate, title);\n } else if (title) {\n if ('default' in title) {\n resolved = resolveTitleTemplate(stashedTemplate, title.default);\n }\n if ('absolute' in title && title.absolute) {\n resolved = title.absolute;\n }\n }\n if (title && typeof title !== 'string') {\n return {\n template,\n absolute: resolved || ''\n };\n } else {\n return {\n absolute: resolved || title || '',\n template\n };\n }\n}\n\n//# sourceMappingURL=resolve-title.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS10aXRsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGdEQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxtZXRhZGF0YVxccmVzb2x2ZXJzXFxyZXNvbHZlLXRpdGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVzb2x2ZVRpdGxlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVGl0bGU7XG4gICAgfVxufSk7XG5mdW5jdGlvbiByZXNvbHZlVGl0bGVUZW1wbGF0ZSh0ZW1wbGF0ZSwgdGl0bGUpIHtcbiAgICByZXR1cm4gdGVtcGxhdGUgPyB0ZW1wbGF0ZS5yZXBsYWNlKC8lcy9nLCB0aXRsZSkgOiB0aXRsZTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVUaXRsZSh0aXRsZSwgc3Rhc2hlZFRlbXBsYXRlKSB7XG4gICAgbGV0IHJlc29sdmVkO1xuICAgIGNvbnN0IHRlbXBsYXRlID0gdHlwZW9mIHRpdGxlICE9PSAnc3RyaW5nJyAmJiB0aXRsZSAmJiAndGVtcGxhdGUnIGluIHRpdGxlID8gdGl0bGUudGVtcGxhdGUgOiBudWxsO1xuICAgIGlmICh0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmVkID0gcmVzb2x2ZVRpdGxlVGVtcGxhdGUoc3Rhc2hlZFRlbXBsYXRlLCB0aXRsZSk7XG4gICAgfSBlbHNlIGlmICh0aXRsZSkge1xuICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIHRpdGxlKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IHJlc29sdmVUaXRsZVRlbXBsYXRlKHN0YXNoZWRUZW1wbGF0ZSwgdGl0bGUuZGVmYXVsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdhYnNvbHV0ZScgaW4gdGl0bGUgJiYgdGl0bGUuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdGl0bGUuYWJzb2x1dGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpdGxlICYmIHR5cGVvZiB0aXRsZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRlbXBsYXRlLFxuICAgICAgICAgICAgYWJzb2x1dGU6IHJlc29sdmVkIHx8ICcnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFic29sdXRlOiByZXNvbHZlZCB8fCB0aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIHRlbXBsYXRlXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlLXRpdGxlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-title.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getSocialImageMetadataBaseFallback: function() {\n return getSocialImageMetadataBaseFallback;\n },\n isStringOrURL: function() {\n return isStringOrURL;\n },\n resolveAbsoluteUrlWithPathname: function() {\n return resolveAbsoluteUrlWithPathname;\n },\n resolveRelativeUrl: function() {\n return resolveRelativeUrl;\n },\n resolveUrl: function() {\n return resolveUrl;\n }\n});\nconst _path = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../../../shared/lib/isomorphic/path */ \"(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isStringOrURL(icon) {\n return typeof icon === 'string' || icon instanceof URL;\n}\nfunction createLocalMetadataBase() {\n // Check if experimental HTTPS is enabled\n const isExperimentalHttps = Boolean(process.env.__NEXT_EXPERIMENTAL_HTTPS);\n const protocol = isExperimentalHttps ? 'https' : 'http';\n return new URL(`${protocol}://localhost:${process.env.PORT || 3000}`);\n}\nfunction getPreviewDeploymentUrl() {\n const origin = process.env.VERCEL_BRANCH_URL || process.env.VERCEL_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\nfunction getProductionDeploymentUrl() {\n const origin = process.env.VERCEL_PROJECT_PRODUCTION_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\nfunction getSocialImageMetadataBaseFallback(metadataBase) {\n const defaultMetadataBase = createLocalMetadataBase();\n const previewDeploymentUrl = getPreviewDeploymentUrl();\n const productionDeploymentUrl = getProductionDeploymentUrl();\n let fallbackMetadataBase;\n if (true) {\n fallbackMetadataBase = defaultMetadataBase;\n } else {}\n return fallbackMetadataBase;\n}\nfunction resolveUrl(url, metadataBase) {\n if (url instanceof URL) return url;\n if (!url) return null;\n try {\n // If we can construct a URL instance from url, ignore metadataBase\n const parsedUrl = new URL(url);\n return parsedUrl;\n } catch {}\n if (!metadataBase) {\n metadataBase = createLocalMetadataBase();\n }\n // Handle relative or absolute paths\n const pathname = metadataBase.pathname || '';\n const joinedPath = _path.default.posix.join(pathname, url);\n return new URL(joinedPath, metadataBase);\n}\n// Resolve with `pathname` if `url` is a relative path.\nfunction resolveRelativeUrl(url, pathname) {\n if (typeof url === 'string' && url.startsWith('./')) {\n return _path.default.posix.resolve(pathname, url);\n }\n return url;\n}\n// The regex is matching logic from packages/next/src/lib/load-custom-routes.ts\nconst FILE_REGEX = /^(?:\\/((?!\\.well-known(?:\\/.*)?)(?:[^/]+\\/)*[^/]+\\.\\w+))(\\/?|$)/i;\nfunction isFilePattern(pathname) {\n return FILE_REGEX.test(pathname);\n}\n// Resolve `pathname` if `url` is a relative path the compose with `metadataBase`.\nfunction resolveAbsoluteUrlWithPathname(url, metadataBase, pathname, { trailingSlash }) {\n // Resolve url with pathname that always starts with `/`\n url = resolveRelativeUrl(url, pathname);\n // Convert string url or URL instance to absolute url string,\n // if there's case needs to be resolved with metadataBase\n let resolvedUrl = '';\n const result = metadataBase ? resolveUrl(url, metadataBase) : url;\n if (typeof result === 'string') {\n resolvedUrl = result;\n } else {\n resolvedUrl = result.pathname === '/' ? result.origin : result.href;\n }\n // Add trailing slash if it's enabled for urls matches the condition\n // - Not external, same origin with metadataBase\n // - Doesn't have query\n if (trailingSlash && !resolvedUrl.endsWith('/')) {\n let isRelative = resolvedUrl.startsWith('/');\n let hasQuery = resolvedUrl.includes('?');\n let isExternal = false;\n let isFileUrl = false;\n if (!isRelative) {\n try {\n const parsedUrl = new URL(resolvedUrl);\n isExternal = metadataBase != null && parsedUrl.origin !== metadataBase.origin;\n isFileUrl = isFilePattern(parsedUrl.pathname);\n } catch {\n // If it's not a valid URL, treat it as external\n isExternal = true;\n }\n if (// Do not apply trailing slash for file like urls, aligning with the behavior with `trailingSlash`\n !isFileUrl && !isExternal && !hasQuery) return `${resolvedUrl}/`;\n }\n }\n return resolvedUrl;\n}\n\n//# sourceMappingURL=resolve-url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9yZXNvbHZlcnMvcmVzb2x2ZS11cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QscURBQXFELG1CQUFPLENBQUMseUdBQXFDO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixTQUFTLGVBQWUseUJBQXlCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBc0M7QUFDOUM7QUFDQSxNQUFNLEtBQUssRUFFTjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsZUFBZTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXG1ldGFkYXRhXFxyZXNvbHZlcnNcXHJlc29sdmUtdXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0U29jaWFsSW1hZ2VNZXRhZGF0YUJhc2VGYWxsYmFjazogbnVsbCxcbiAgICBpc1N0cmluZ09yVVJMOiBudWxsLFxuICAgIHJlc29sdmVBYnNvbHV0ZVVybFdpdGhQYXRobmFtZTogbnVsbCxcbiAgICByZXNvbHZlUmVsYXRpdmVVcmw6IG51bGwsXG4gICAgcmVzb2x2ZVVybDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBnZXRTb2NpYWxJbWFnZU1ldGFkYXRhQmFzZUZhbGxiYWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFNvY2lhbEltYWdlTWV0YWRhdGFCYXNlRmFsbGJhY2s7XG4gICAgfSxcbiAgICBpc1N0cmluZ09yVVJMOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nT3JVUkw7XG4gICAgfSxcbiAgICByZXNvbHZlQWJzb2x1dGVVcmxXaXRoUGF0aG5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUFic29sdXRlVXJsV2l0aFBhdGhuYW1lO1xuICAgIH0sXG4gICAgcmVzb2x2ZVJlbGF0aXZlVXJsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVSZWxhdGl2ZVVybDtcbiAgICB9LFxuICAgIHJlc29sdmVVcmw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVVybDtcbiAgICB9XG59KTtcbmNvbnN0IF9wYXRoID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gaXNTdHJpbmdPclVSTChpY29uKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpY29uID09PSAnc3RyaW5nJyB8fCBpY29uIGluc3RhbmNlb2YgVVJMO1xufVxuZnVuY3Rpb24gY3JlYXRlTG9jYWxNZXRhZGF0YUJhc2UoKSB7XG4gICAgLy8gQ2hlY2sgaWYgZXhwZXJpbWVudGFsIEhUVFBTIGlzIGVuYWJsZWRcbiAgICBjb25zdCBpc0V4cGVyaW1lbnRhbEh0dHBzID0gQm9vbGVhbihwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0hUVFBTKTtcbiAgICBjb25zdCBwcm90b2NvbCA9IGlzRXhwZXJpbWVudGFsSHR0cHMgPyAnaHR0cHMnIDogJ2h0dHAnO1xuICAgIHJldHVybiBuZXcgVVJMKGAke3Byb3RvY29sfTovL2xvY2FsaG9zdDoke3Byb2Nlc3MuZW52LlBPUlQgfHwgMzAwMH1gKTtcbn1cbmZ1bmN0aW9uIGdldFByZXZpZXdEZXBsb3ltZW50VXJsKCkge1xuICAgIGNvbnN0IG9yaWdpbiA9IHByb2Nlc3MuZW52LlZFUkNFTF9CUkFOQ0hfVVJMIHx8IHByb2Nlc3MuZW52LlZFUkNFTF9VUkw7XG4gICAgcmV0dXJuIG9yaWdpbiA/IG5ldyBVUkwoYGh0dHBzOi8vJHtvcmlnaW59YCkgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBnZXRQcm9kdWN0aW9uRGVwbG95bWVudFVybCgpIHtcbiAgICBjb25zdCBvcmlnaW4gPSBwcm9jZXNzLmVudi5WRVJDRUxfUFJPSkVDVF9QUk9EVUNUSU9OX1VSTDtcbiAgICByZXR1cm4gb3JpZ2luID8gbmV3IFVSTChgaHR0cHM6Ly8ke29yaWdpbn1gKSA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGdldFNvY2lhbEltYWdlTWV0YWRhdGFCYXNlRmFsbGJhY2sobWV0YWRhdGFCYXNlKSB7XG4gICAgY29uc3QgZGVmYXVsdE1ldGFkYXRhQmFzZSA9IGNyZWF0ZUxvY2FsTWV0YWRhdGFCYXNlKCk7XG4gICAgY29uc3QgcHJldmlld0RlcGxveW1lbnRVcmwgPSBnZXRQcmV2aWV3RGVwbG95bWVudFVybCgpO1xuICAgIGNvbnN0IHByb2R1Y3Rpb25EZXBsb3ltZW50VXJsID0gZ2V0UHJvZHVjdGlvbkRlcGxveW1lbnRVcmwoKTtcbiAgICBsZXQgZmFsbGJhY2tNZXRhZGF0YUJhc2U7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGZhbGxiYWNrTWV0YWRhdGFCYXNlID0gZGVmYXVsdE1ldGFkYXRhQmFzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWxsYmFja01ldGFkYXRhQmFzZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgJiYgcHJldmlld0RlcGxveW1lbnRVcmwgJiYgcHJvY2Vzcy5lbnYuVkVSQ0VMX0VOViA9PT0gJ3ByZXZpZXcnID8gcHJldmlld0RlcGxveW1lbnRVcmwgOiBtZXRhZGF0YUJhc2UgfHwgcHJvZHVjdGlvbkRlcGxveW1lbnRVcmwgfHwgZGVmYXVsdE1ldGFkYXRhQmFzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrTWV0YWRhdGFCYXNlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVVybCh1cmwsIG1ldGFkYXRhQmFzZSkge1xuICAgIGlmICh1cmwgaW5zdGFuY2VvZiBVUkwpIHJldHVybiB1cmw7XG4gICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIElmIHdlIGNhbiBjb25zdHJ1Y3QgYSBVUkwgaW5zdGFuY2UgZnJvbSB1cmwsIGlnbm9yZSBtZXRhZGF0YUJhc2VcbiAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgICAgICByZXR1cm4gcGFyc2VkVXJsO1xuICAgIH0gY2F0Y2ggIHt9XG4gICAgaWYgKCFtZXRhZGF0YUJhc2UpIHtcbiAgICAgICAgbWV0YWRhdGFCYXNlID0gY3JlYXRlTG9jYWxNZXRhZGF0YUJhc2UoKTtcbiAgICB9XG4gICAgLy8gSGFuZGxlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzXG4gICAgY29uc3QgcGF0aG5hbWUgPSBtZXRhZGF0YUJhc2UucGF0aG5hbWUgfHwgJyc7XG4gICAgY29uc3Qgam9pbmVkUGF0aCA9IF9wYXRoLmRlZmF1bHQucG9zaXguam9pbihwYXRobmFtZSwgdXJsKTtcbiAgICByZXR1cm4gbmV3IFVSTChqb2luZWRQYXRoLCBtZXRhZGF0YUJhc2UpO1xufVxuLy8gUmVzb2x2ZSB3aXRoIGBwYXRobmFtZWAgaWYgYHVybGAgaXMgYSByZWxhdGl2ZSBwYXRoLlxuZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlVXJsKHVybCwgcGF0aG5hbWUpIHtcbiAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycgJiYgdXJsLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgcmV0dXJuIF9wYXRoLmRlZmF1bHQucG9zaXgucmVzb2x2ZShwYXRobmFtZSwgdXJsKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbn1cbi8vIFRoZSByZWdleCBpcyBtYXRjaGluZyBsb2dpYyBmcm9tIHBhY2thZ2VzL25leHQvc3JjL2xpYi9sb2FkLWN1c3RvbS1yb3V0ZXMudHNcbmNvbnN0IEZJTEVfUkVHRVggPSAvXig/OlxcLygoPyFcXC53ZWxsLWtub3duKD86XFwvLiopPykoPzpbXi9dK1xcLykqW14vXStcXC5cXHcrKSkoXFwvP3wkKS9pO1xuZnVuY3Rpb24gaXNGaWxlUGF0dGVybihwYXRobmFtZSkge1xuICAgIHJldHVybiBGSUxFX1JFR0VYLnRlc3QocGF0aG5hbWUpO1xufVxuLy8gUmVzb2x2ZSBgcGF0aG5hbWVgIGlmIGB1cmxgIGlzIGEgcmVsYXRpdmUgcGF0aCB0aGUgY29tcG9zZSB3aXRoIGBtZXRhZGF0YUJhc2VgLlxuZnVuY3Rpb24gcmVzb2x2ZUFic29sdXRlVXJsV2l0aFBhdGhuYW1lKHVybCwgbWV0YWRhdGFCYXNlLCBwYXRobmFtZSwgeyB0cmFpbGluZ1NsYXNoIH0pIHtcbiAgICAvLyBSZXNvbHZlIHVybCB3aXRoIHBhdGhuYW1lIHRoYXQgYWx3YXlzIHN0YXJ0cyB3aXRoIGAvYFxuICAgIHVybCA9IHJlc29sdmVSZWxhdGl2ZVVybCh1cmwsIHBhdGhuYW1lKTtcbiAgICAvLyBDb252ZXJ0IHN0cmluZyB1cmwgb3IgVVJMIGluc3RhbmNlIHRvIGFic29sdXRlIHVybCBzdHJpbmcsXG4gICAgLy8gaWYgdGhlcmUncyBjYXNlIG5lZWRzIHRvIGJlIHJlc29sdmVkIHdpdGggbWV0YWRhdGFCYXNlXG4gICAgbGV0IHJlc29sdmVkVXJsID0gJyc7XG4gICAgY29uc3QgcmVzdWx0ID0gbWV0YWRhdGFCYXNlID8gcmVzb2x2ZVVybCh1cmwsIG1ldGFkYXRhQmFzZSkgOiB1cmw7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc29sdmVkVXJsID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkVXJsID0gcmVzdWx0LnBhdGhuYW1lID09PSAnLycgPyByZXN1bHQub3JpZ2luIDogcmVzdWx0LmhyZWY7XG4gICAgfVxuICAgIC8vIEFkZCB0cmFpbGluZyBzbGFzaCBpZiBpdCdzIGVuYWJsZWQgZm9yIHVybHMgbWF0Y2hlcyB0aGUgY29uZGl0aW9uXG4gICAgLy8gLSBOb3QgZXh0ZXJuYWwsIHNhbWUgb3JpZ2luIHdpdGggbWV0YWRhdGFCYXNlXG4gICAgLy8gLSBEb2Vzbid0IGhhdmUgcXVlcnlcbiAgICBpZiAodHJhaWxpbmdTbGFzaCAmJiAhcmVzb2x2ZWRVcmwuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgICBsZXQgaXNSZWxhdGl2ZSA9IHJlc29sdmVkVXJsLnN0YXJ0c1dpdGgoJy8nKTtcbiAgICAgICAgbGV0IGhhc1F1ZXJ5ID0gcmVzb2x2ZWRVcmwuaW5jbHVkZXMoJz8nKTtcbiAgICAgICAgbGV0IGlzRXh0ZXJuYWwgPSBmYWxzZTtcbiAgICAgICAgbGV0IGlzRmlsZVVybCA9IGZhbHNlO1xuICAgICAgICBpZiAoIWlzUmVsYXRpdmUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTChyZXNvbHZlZFVybCk7XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbCA9IG1ldGFkYXRhQmFzZSAhPSBudWxsICYmIHBhcnNlZFVybC5vcmlnaW4gIT09IG1ldGFkYXRhQmFzZS5vcmlnaW47XG4gICAgICAgICAgICAgICAgaXNGaWxlVXJsID0gaXNGaWxlUGF0dGVybihwYXJzZWRVcmwucGF0aG5hbWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAge1xuICAgICAgICAgICAgICAgIC8vIElmIGl0J3Mgbm90IGEgdmFsaWQgVVJMLCB0cmVhdCBpdCBhcyBleHRlcm5hbFxuICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKC8vIERvIG5vdCBhcHBseSB0cmFpbGluZyBzbGFzaCBmb3IgZmlsZSBsaWtlIHVybHMsIGFsaWduaW5nIHdpdGggdGhlIGJlaGF2aW9yIHdpdGggYHRyYWlsaW5nU2xhc2hgXG4gICAgICAgICAgICAhaXNGaWxlVXJsICYmICFpc0V4dGVybmFsICYmICFoYXNRdWVyeSkgcmV0dXJuIGAke3Jlc29sdmVkVXJsfS9gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZFVybDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZS11cmwuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/metadata/resolvers/resolve-url.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/non-nullable.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/lib/non-nullable.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"nonNullable\", ({\n enumerable: true,\n get: function() {\n return nonNullable;\n }\n}));\nfunction nonNullable(value) {\n return value !== null && value !== undefined;\n}\n\n//# sourceMappingURL=non-nullable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9ub24tbnVsbGFibGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwrQ0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcbm9uLW51bGxhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibm9uTnVsbGFibGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5vbk51bGxhYmxlO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gbm9uTnVsbGFibGUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm9uLW51bGxhYmxlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/non-nullable.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/picocolors.js": /*!**************************************************!*\ !*** ./node_modules/next/dist/lib/picocolors.js ***! \**************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// ISC License\n// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n//\n// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n bgBlack: function() {\n return bgBlack;\n },\n bgBlue: function() {\n return bgBlue;\n },\n bgCyan: function() {\n return bgCyan;\n },\n bgGreen: function() {\n return bgGreen;\n },\n bgMagenta: function() {\n return bgMagenta;\n },\n bgRed: function() {\n return bgRed;\n },\n bgWhite: function() {\n return bgWhite;\n },\n bgYellow: function() {\n return bgYellow;\n },\n black: function() {\n return black;\n },\n blue: function() {\n return blue;\n },\n bold: function() {\n return bold;\n },\n cyan: function() {\n return cyan;\n },\n dim: function() {\n return dim;\n },\n gray: function() {\n return gray;\n },\n green: function() {\n return green;\n },\n hidden: function() {\n return hidden;\n },\n inverse: function() {\n return inverse;\n },\n italic: function() {\n return italic;\n },\n magenta: function() {\n return magenta;\n },\n purple: function() {\n return purple;\n },\n red: function() {\n return red;\n },\n reset: function() {\n return reset;\n },\n strikethrough: function() {\n return strikethrough;\n },\n underline: function() {\n return underline;\n },\n white: function() {\n return white;\n },\n yellow: function() {\n return yellow;\n }\n});\nvar _globalThis;\nconst { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {};\nconst enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb');\nconst replaceClose = (str, close, replace, index)=>{\n const start = str.substring(0, index) + replace;\n const end = str.substring(index + close.length);\n const nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\nconst formatter = (open, close, replace = open)=>{\n if (!enabled) return String;\n return (input)=>{\n const string = '' + input;\n const index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n};\nconst reset = enabled ? (s)=>`\\x1b[0m${s}\\x1b[0m` : String;\nconst bold = formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m');\nconst dim = formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m');\nconst italic = formatter('\\x1b[3m', '\\x1b[23m');\nconst underline = formatter('\\x1b[4m', '\\x1b[24m');\nconst inverse = formatter('\\x1b[7m', '\\x1b[27m');\nconst hidden = formatter('\\x1b[8m', '\\x1b[28m');\nconst strikethrough = formatter('\\x1b[9m', '\\x1b[29m');\nconst black = formatter('\\x1b[30m', '\\x1b[39m');\nconst red = formatter('\\x1b[31m', '\\x1b[39m');\nconst green = formatter('\\x1b[32m', '\\x1b[39m');\nconst yellow = formatter('\\x1b[33m', '\\x1b[39m');\nconst blue = formatter('\\x1b[34m', '\\x1b[39m');\nconst magenta = formatter('\\x1b[35m', '\\x1b[39m');\nconst purple = formatter('\\x1b[38;2;173;127;168m', '\\x1b[39m');\nconst cyan = formatter('\\x1b[36m', '\\x1b[39m');\nconst white = formatter('\\x1b[37m', '\\x1b[39m');\nconst gray = formatter('\\x1b[90m', '\\x1b[39m');\nconst bgBlack = formatter('\\x1b[40m', '\\x1b[49m');\nconst bgRed = formatter('\\x1b[41m', '\\x1b[49m');\nconst bgGreen = formatter('\\x1b[42m', '\\x1b[49m');\nconst bgYellow = formatter('\\x1b[43m', '\\x1b[49m');\nconst bgBlue = formatter('\\x1b[44m', '\\x1b[49m');\nconst bgMagenta = formatter('\\x1b[45m', '\\x1b[49m');\nconst bgCyan = formatter('\\x1b[46m', '\\x1b[49m');\nconst bgWhite = formatter('\\x1b[47m', '\\x1b[49m');\n\n//# sourceMappingURL=picocolors.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9waWNvY29sb3JzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0EyQkw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLGNBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLEVBQUU7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsRUFBRSxJQUFJLElBQUk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxwaWNvY29sb3JzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIElTQyBMaWNlbnNlXG4vLyBDb3B5cmlnaHQgKGMpIDIwMjEgQWxleGV5IFJhc3BvcG92LCBLb3N0aWFudHluIERlbnlzb3YsIEFudG9uIFZlcmlub3Zcbi8vIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuLy8gcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuLy8gY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4vLyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuLy8gQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuLy8gV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4vLyBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuLy8gT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbi8vXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYWxleGV5cmFzcG9wb3YvcGljb2NvbG9ycy9ibG9iL2I2MjYxNDg3ZTdiODFhYWFiMjQ0MGUzOTdhMzU2NzMyY2FkOWUzNDIvcGljb2NvbG9ycy5qcyNMMVxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBiZ0JsYWNrOiBudWxsLFxuICAgIGJnQmx1ZTogbnVsbCxcbiAgICBiZ0N5YW46IG51bGwsXG4gICAgYmdHcmVlbjogbnVsbCxcbiAgICBiZ01hZ2VudGE6IG51bGwsXG4gICAgYmdSZWQ6IG51bGwsXG4gICAgYmdXaGl0ZTogbnVsbCxcbiAgICBiZ1llbGxvdzogbnVsbCxcbiAgICBibGFjazogbnVsbCxcbiAgICBibHVlOiBudWxsLFxuICAgIGJvbGQ6IG51bGwsXG4gICAgY3lhbjogbnVsbCxcbiAgICBkaW06IG51bGwsXG4gICAgZ3JheTogbnVsbCxcbiAgICBncmVlbjogbnVsbCxcbiAgICBoaWRkZW46IG51bGwsXG4gICAgaW52ZXJzZTogbnVsbCxcbiAgICBpdGFsaWM6IG51bGwsXG4gICAgbWFnZW50YTogbnVsbCxcbiAgICBwdXJwbGU6IG51bGwsXG4gICAgcmVkOiBudWxsLFxuICAgIHJlc2V0OiBudWxsLFxuICAgIHN0cmlrZXRocm91Z2g6IG51bGwsXG4gICAgdW5kZXJsaW5lOiBudWxsLFxuICAgIHdoaXRlOiBudWxsLFxuICAgIHllbGxvdzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBiZ0JsYWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJnQmxhY2s7XG4gICAgfSxcbiAgICBiZ0JsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdCbHVlO1xuICAgIH0sXG4gICAgYmdDeWFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJnQ3lhbjtcbiAgICB9LFxuICAgIGJnR3JlZW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdHcmVlbjtcbiAgICB9LFxuICAgIGJnTWFnZW50YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBiZ01hZ2VudGE7XG4gICAgfSxcbiAgICBiZ1JlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBiZ1JlZDtcbiAgICB9LFxuICAgIGJnV2hpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmdXaGl0ZTtcbiAgICB9LFxuICAgIGJnWWVsbG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJnWWVsbG93O1xuICAgIH0sXG4gICAgYmxhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYmxhY2s7XG4gICAgfSxcbiAgICBibHVlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJsdWU7XG4gICAgfSxcbiAgICBib2xkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGJvbGQ7XG4gICAgfSxcbiAgICBjeWFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGN5YW47XG4gICAgfSxcbiAgICBkaW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGltO1xuICAgIH0sXG4gICAgZ3JheTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBncmF5O1xuICAgIH0sXG4gICAgZ3JlZW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ3JlZW47XG4gICAgfSxcbiAgICBoaWRkZW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGlkZGVuO1xuICAgIH0sXG4gICAgaW52ZXJzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlO1xuICAgIH0sXG4gICAgaXRhbGljOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGl0YWxpYztcbiAgICB9LFxuICAgIG1hZ2VudGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbWFnZW50YTtcbiAgICB9LFxuICAgIHB1cnBsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwdXJwbGU7XG4gICAgfSxcbiAgICByZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVkO1xuICAgIH0sXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzZXQ7XG4gICAgfSxcbiAgICBzdHJpa2V0aHJvdWdoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmlrZXRocm91Z2g7XG4gICAgfSxcbiAgICB1bmRlcmxpbmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdW5kZXJsaW5lO1xuICAgIH0sXG4gICAgd2hpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd2hpdGU7XG4gICAgfSxcbiAgICB5ZWxsb3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4geWVsbG93O1xuICAgIH1cbn0pO1xudmFyIF9nbG9iYWxUaGlzO1xuY29uc3QgeyBlbnYsIHN0ZG91dCB9ID0gKChfZ2xvYmFsVGhpcyA9IGdsb2JhbFRoaXMpID09IG51bGwgPyB2b2lkIDAgOiBfZ2xvYmFsVGhpcy5wcm9jZXNzKSA/PyB7fTtcbmNvbnN0IGVuYWJsZWQgPSBlbnYgJiYgIWVudi5OT19DT0xPUiAmJiAoZW52LkZPUkNFX0NPTE9SIHx8IChzdGRvdXQgPT0gbnVsbCA/IHZvaWQgMCA6IHN0ZG91dC5pc1RUWSkgJiYgIWVudi5DSSAmJiBlbnYuVEVSTSAhPT0gJ2R1bWInKTtcbmNvbnN0IHJlcGxhY2VDbG9zZSA9IChzdHIsIGNsb3NlLCByZXBsYWNlLCBpbmRleCk9PntcbiAgICBjb25zdCBzdGFydCA9IHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZTtcbiAgICBjb25zdCBlbmQgPSBzdHIuc3Vic3RyaW5nKGluZGV4ICsgY2xvc2UubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSk7XG4gICAgcmV0dXJuIH5uZXh0SW5kZXggPyBzdGFydCArIHJlcGxhY2VDbG9zZShlbmQsIGNsb3NlLCByZXBsYWNlLCBuZXh0SW5kZXgpIDogc3RhcnQgKyBlbmQ7XG59O1xuY29uc3QgZm9ybWF0dGVyID0gKG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3Blbik9PntcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybiBTdHJpbmc7XG4gICAgcmV0dXJuIChpbnB1dCk9PntcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gJycgKyBpbnB1dDtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzdHJpbmcuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gfmluZGV4ID8gb3BlbiArIHJlcGxhY2VDbG9zZShzdHJpbmcsIGNsb3NlLCByZXBsYWNlLCBpbmRleCkgKyBjbG9zZSA6IG9wZW4gKyBzdHJpbmcgKyBjbG9zZTtcbiAgICB9O1xufTtcbmNvbnN0IHJlc2V0ID0gZW5hYmxlZCA/IChzKT0+YFxceDFiWzBtJHtzfVxceDFiWzBtYCA6IFN0cmluZztcbmNvbnN0IGJvbGQgPSBmb3JtYXR0ZXIoJ1xceDFiWzFtJywgJ1xceDFiWzIybScsICdcXHgxYlsyMm1cXHgxYlsxbScpO1xuY29uc3QgZGltID0gZm9ybWF0dGVyKCdcXHgxYlsybScsICdcXHgxYlsyMm0nLCAnXFx4MWJbMjJtXFx4MWJbMm0nKTtcbmNvbnN0IGl0YWxpYyA9IGZvcm1hdHRlcignXFx4MWJbM20nLCAnXFx4MWJbMjNtJyk7XG5jb25zdCB1bmRlcmxpbmUgPSBmb3JtYXR0ZXIoJ1xceDFiWzRtJywgJ1xceDFiWzI0bScpO1xuY29uc3QgaW52ZXJzZSA9IGZvcm1hdHRlcignXFx4MWJbN20nLCAnXFx4MWJbMjdtJyk7XG5jb25zdCBoaWRkZW4gPSBmb3JtYXR0ZXIoJ1xceDFiWzhtJywgJ1xceDFiWzI4bScpO1xuY29uc3Qgc3RyaWtldGhyb3VnaCA9IGZvcm1hdHRlcignXFx4MWJbOW0nLCAnXFx4MWJbMjltJyk7XG5jb25zdCBibGFjayA9IGZvcm1hdHRlcignXFx4MWJbMzBtJywgJ1xceDFiWzM5bScpO1xuY29uc3QgcmVkID0gZm9ybWF0dGVyKCdcXHgxYlszMW0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCBncmVlbiA9IGZvcm1hdHRlcignXFx4MWJbMzJtJywgJ1xceDFiWzM5bScpO1xuY29uc3QgeWVsbG93ID0gZm9ybWF0dGVyKCdcXHgxYlszM20nLCAnXFx4MWJbMzltJyk7XG5jb25zdCBibHVlID0gZm9ybWF0dGVyKCdcXHgxYlszNG0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCBtYWdlbnRhID0gZm9ybWF0dGVyKCdcXHgxYlszNW0nLCAnXFx4MWJbMzltJyk7XG5jb25zdCBwdXJwbGUgPSBmb3JtYXR0ZXIoJ1xceDFiWzM4OzI7MTczOzEyNzsxNjhtJywgJ1xceDFiWzM5bScpO1xuY29uc3QgY3lhbiA9IGZvcm1hdHRlcignXFx4MWJbMzZtJywgJ1xceDFiWzM5bScpO1xuY29uc3Qgd2hpdGUgPSBmb3JtYXR0ZXIoJ1xceDFiWzM3bScsICdcXHgxYlszOW0nKTtcbmNvbnN0IGdyYXkgPSBmb3JtYXR0ZXIoJ1xceDFiWzkwbScsICdcXHgxYlszOW0nKTtcbmNvbnN0IGJnQmxhY2sgPSBmb3JtYXR0ZXIoJ1xceDFiWzQwbScsICdcXHgxYls0OW0nKTtcbmNvbnN0IGJnUmVkID0gZm9ybWF0dGVyKCdcXHgxYls0MW0nLCAnXFx4MWJbNDltJyk7XG5jb25zdCBiZ0dyZWVuID0gZm9ybWF0dGVyKCdcXHgxYls0Mm0nLCAnXFx4MWJbNDltJyk7XG5jb25zdCBiZ1llbGxvdyA9IGZvcm1hdHRlcignXFx4MWJbNDNtJywgJ1xceDFiWzQ5bScpO1xuY29uc3QgYmdCbHVlID0gZm9ybWF0dGVyKCdcXHgxYls0NG0nLCAnXFx4MWJbNDltJyk7XG5jb25zdCBiZ01hZ2VudGEgPSBmb3JtYXR0ZXIoJ1xceDFiWzQ1bScsICdcXHgxYls0OW0nKTtcbmNvbnN0IGJnQ3lhbiA9IGZvcm1hdHRlcignXFx4MWJbNDZtJywgJ1xceDFiWzQ5bScpO1xuY29uc3QgYmdXaGl0ZSA9IGZvcm1hdHRlcignXFx4MWJbNDdtJywgJ1xceDFiWzQ5bScpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1waWNvY29sb3JzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/picocolors.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/route-pattern-normalizer.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/lib/route-pattern-normalizer.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n hasAdjacentParameterIssues: function() {\n return hasAdjacentParameterIssues;\n },\n normalizeAdjacentParameters: function() {\n return normalizeAdjacentParameters;\n },\n normalizeTokensForRegexp: function() {\n return normalizeTokensForRegexp;\n },\n stripParameterSeparators: function() {\n return stripParameterSeparators;\n }\n});\n/**\n * Route pattern normalization utilities for path-to-regexp compatibility.\n *\n * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain\n * patterns commonly used in Next.js interception routes. This module provides\n * normalization functions to make Next.js route patterns compatible with the\n * updated library while preserving all functionality.\n */ /**\n * Internal separator used to normalize adjacent parameter patterns.\n * This unique marker is inserted between adjacent parameters and stripped out\n * during parameter extraction to avoid conflicts with real URL content.\n */ const PARAM_SEPARATOR = '_NEXTSEP_';\nfunction hasAdjacentParameterIssues(route) {\n if (typeof route !== 'string') return false;\n // Check for interception route markers followed immediately by parameters\n // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.\n // These patterns cause \"Must have text between two parameters\" errors\n if (/\\/\\(\\.{1,3}\\):[^/\\s]+/.test(route)) {\n return true;\n }\n // Check for basic adjacent parameters without separators\n // Pattern: :param1:param2 (but not :param* or other URL patterns)\n if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {\n return true;\n }\n return false;\n}\nfunction normalizeAdjacentParameters(route) {\n let normalized = route;\n // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param\n normalized = normalized.replace(/(\\([^)]*\\)):([^/\\s]+)/g, `$1${PARAM_SEPARATOR}:$2`);\n // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2\n normalized = normalized.replace(/:([^:/\\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`);\n return normalized;\n}\nfunction normalizeTokensForRegexp(tokens) {\n return tokens.map((token)=>{\n // Token union type: Token = string | TokenObject\n // Literal path segments are strings, parameters/wildcards are objects\n if (typeof token === 'object' && token !== null && // Not all token objects have 'modifier' property (e.g., simple text tokens)\n 'modifier' in token && // Only repeating modifiers (* or +) cause the validation error\n // Other modifiers like '?' (optional) are fine\n (token.modifier === '*' || token.modifier === '+') && // Token objects can have different shapes depending on route pattern\n 'prefix' in token && 'suffix' in token && // Both prefix and suffix must be empty strings\n // This is what causes the validation error in path-to-regexp\n token.prefix === '' && token.suffix === '') {\n // Add minimal prefix to satisfy path-to-regexp validation\n // We use '/' as it's the most common path delimiter and won't break route matching\n // The prefix gets used in regex generation but doesn't affect parameter extraction\n return {\n ...token,\n prefix: '/'\n };\n }\n return token;\n });\n}\nfunction stripParameterSeparators(params) {\n const cleaned = {};\n for (const [key, value] of Object.entries(params)){\n if (typeof value === 'string') {\n // Remove the separator if it appears at the start of parameter values\n cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '');\n } else if (Array.isArray(value)) {\n // Handle array parameters (from repeated route segments)\n cleaned[key] = value.map((item)=>typeof item === 'string' ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '') : item);\n } else {\n cleaned[key] = value;\n }\n }\n return cleaned;\n}\n\n//# sourceMappingURL=route-pattern-normalizer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9yb3V0ZS1wYXR0ZXJuLW5vcm1hbGl6ZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRUFBbUUsZ0JBQWdCO0FBQ25GO0FBQ0EsZ0VBQWdFLGdCQUFnQjtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsZ0JBQWdCO0FBQ3hFLFVBQVU7QUFDVjtBQUNBLG9HQUFvRyxnQkFBZ0I7QUFDcEgsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxccm91dGUtcGF0dGVybi1ub3JtYWxpemVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaGFzQWRqYWNlbnRQYXJhbWV0ZXJJc3N1ZXM6IG51bGwsXG4gICAgbm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzOiBudWxsLFxuICAgIG5vcm1hbGl6ZVRva2Vuc0ZvclJlZ2V4cDogbnVsbCxcbiAgICBzdHJpcFBhcmFtZXRlclNlcGFyYXRvcnM6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaGFzQWRqYWNlbnRQYXJhbWV0ZXJJc3N1ZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFzQWRqYWNlbnRQYXJhbWV0ZXJJc3N1ZXM7XG4gICAgfSxcbiAgICBub3JtYWxpemVBZGphY2VudFBhcmFtZXRlcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzO1xuICAgIH0sXG4gICAgbm9ybWFsaXplVG9rZW5zRm9yUmVnZXhwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRva2Vuc0ZvclJlZ2V4cDtcbiAgICB9LFxuICAgIHN0cmlwUGFyYW1ldGVyU2VwYXJhdG9yczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJpcFBhcmFtZXRlclNlcGFyYXRvcnM7XG4gICAgfVxufSk7XG4vKipcbiAqIFJvdXRlIHBhdHRlcm4gbm9ybWFsaXphdGlvbiB1dGlsaXRpZXMgZm9yIHBhdGgtdG8tcmVnZXhwIGNvbXBhdGliaWxpdHkuXG4gKlxuICogcGF0aC10by1yZWdleHAgNi4zLjArIGludHJvZHVjZWQgc3RyaWN0ZXIgdmFsaWRhdGlvbiB0aGF0IHJlamVjdHMgY2VydGFpblxuICogcGF0dGVybnMgY29tbW9ubHkgdXNlZCBpbiBOZXh0LmpzIGludGVyY2VwdGlvbiByb3V0ZXMuIFRoaXMgbW9kdWxlIHByb3ZpZGVzXG4gKiBub3JtYWxpemF0aW9uIGZ1bmN0aW9ucyB0byBtYWtlIE5leHQuanMgcm91dGUgcGF0dGVybnMgY29tcGF0aWJsZSB3aXRoIHRoZVxuICogdXBkYXRlZCBsaWJyYXJ5IHdoaWxlIHByZXNlcnZpbmcgYWxsIGZ1bmN0aW9uYWxpdHkuXG4gKi8gLyoqXG4gKiBJbnRlcm5hbCBzZXBhcmF0b3IgdXNlZCB0byBub3JtYWxpemUgYWRqYWNlbnQgcGFyYW1ldGVyIHBhdHRlcm5zLlxuICogVGhpcyB1bmlxdWUgbWFya2VyIGlzIGluc2VydGVkIGJldHdlZW4gYWRqYWNlbnQgcGFyYW1ldGVycyBhbmQgc3RyaXBwZWQgb3V0XG4gKiBkdXJpbmcgcGFyYW1ldGVyIGV4dHJhY3Rpb24gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggcmVhbCBVUkwgY29udGVudC5cbiAqLyBjb25zdCBQQVJBTV9TRVBBUkFUT1IgPSAnX05FWFRTRVBfJztcbmZ1bmN0aW9uIGhhc0FkamFjZW50UGFyYW1ldGVySXNzdWVzKHJvdXRlKSB7XG4gICAgaWYgKHR5cGVvZiByb3V0ZSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgICAvLyBDaGVjayBmb3IgaW50ZXJjZXB0aW9uIHJvdXRlIG1hcmtlcnMgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgcGFyYW1ldGVyc1xuICAgIC8vIFBhdHRlcm46IC8oLik6cGFyYW0sIC8oLi4pOnBhcmFtLCAvKC4uLik6cGFyYW0sIC8oLikoLik6cGFyYW0gZXRjLlxuICAgIC8vIFRoZXNlIHBhdHRlcm5zIGNhdXNlIFwiTXVzdCBoYXZlIHRleHQgYmV0d2VlbiB0d28gcGFyYW1ldGVyc1wiIGVycm9yc1xuICAgIGlmICgvXFwvXFwoXFwuezEsM31cXCk6W14vXFxzXSsvLnRlc3Qocm91dGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBDaGVjayBmb3IgYmFzaWMgYWRqYWNlbnQgcGFyYW1ldGVycyB3aXRob3V0IHNlcGFyYXRvcnNcbiAgICAvLyBQYXR0ZXJuOiA6cGFyYW0xOnBhcmFtMiAoYnV0IG5vdCA6cGFyYW0qIG9yIG90aGVyIFVSTCBwYXR0ZXJucylcbiAgICBpZiAoLzpbYS16QS1aX11bYS16QS1aMC05X10qOlthLXpBLVpfXVthLXpBLVowLTlfXSovLnRlc3Qocm91dGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBub3JtYWxpemVBZGphY2VudFBhcmFtZXRlcnMocm91dGUpIHtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHJvdXRlO1xuICAgIC8vIEhhbmRsZSBpbnRlcmNlcHRpb24gcm91dGUgcGF0dGVybnM6ICguKTpwYXJhbSAtPiAoLilfTkVYVFNFUF86cGFyYW1cbiAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlKC8oXFwoW14pXSpcXCkpOihbXi9cXHNdKykvZywgYCQxJHtQQVJBTV9TRVBBUkFUT1J9OiQyYCk7XG4gICAgLy8gSGFuZGxlIG90aGVyIGFkamFjZW50IHBhcmFtZXRlciBwYXR0ZXJuczogOnBhcmFtMTpwYXJhbTIgLT4gOnBhcmFtMV9ORVhUU0VQXzpwYXJhbTJcbiAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlKC86KFteOi9cXHMpXSspKD89OikvZywgYDokMSR7UEFSQU1fU0VQQVJBVE9SfWApO1xuICAgIHJldHVybiBub3JtYWxpemVkO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVG9rZW5zRm9yUmVnZXhwKHRva2Vucykge1xuICAgIHJldHVybiB0b2tlbnMubWFwKCh0b2tlbik9PntcbiAgICAgICAgLy8gVG9rZW4gdW5pb24gdHlwZTogVG9rZW4gPSBzdHJpbmcgfCBUb2tlbk9iamVjdFxuICAgICAgICAvLyBMaXRlcmFsIHBhdGggc2VnbWVudHMgYXJlIHN0cmluZ3MsIHBhcmFtZXRlcnMvd2lsZGNhcmRzIGFyZSBvYmplY3RzXG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdvYmplY3QnICYmIHRva2VuICE9PSBudWxsICYmIC8vIE5vdCBhbGwgdG9rZW4gb2JqZWN0cyBoYXZlICdtb2RpZmllcicgcHJvcGVydHkgKGUuZy4sIHNpbXBsZSB0ZXh0IHRva2VucylcbiAgICAgICAgJ21vZGlmaWVyJyBpbiB0b2tlbiAmJiAvLyBPbmx5IHJlcGVhdGluZyBtb2RpZmllcnMgKCogb3IgKykgY2F1c2UgdGhlIHZhbGlkYXRpb24gZXJyb3JcbiAgICAgICAgLy8gT3RoZXIgbW9kaWZpZXJzIGxpa2UgJz8nIChvcHRpb25hbCkgYXJlIGZpbmVcbiAgICAgICAgKHRva2VuLm1vZGlmaWVyID09PSAnKicgfHwgdG9rZW4ubW9kaWZpZXIgPT09ICcrJykgJiYgLy8gVG9rZW4gb2JqZWN0cyBjYW4gaGF2ZSBkaWZmZXJlbnQgc2hhcGVzIGRlcGVuZGluZyBvbiByb3V0ZSBwYXR0ZXJuXG4gICAgICAgICdwcmVmaXgnIGluIHRva2VuICYmICdzdWZmaXgnIGluIHRva2VuICYmIC8vIEJvdGggcHJlZml4IGFuZCBzdWZmaXggbXVzdCBiZSBlbXB0eSBzdHJpbmdzXG4gICAgICAgIC8vIFRoaXMgaXMgd2hhdCBjYXVzZXMgdGhlIHZhbGlkYXRpb24gZXJyb3IgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgdG9rZW4ucHJlZml4ID09PSAnJyAmJiB0b2tlbi5zdWZmaXggPT09ICcnKSB7XG4gICAgICAgICAgICAvLyBBZGQgbWluaW1hbCBwcmVmaXggdG8gc2F0aXNmeSBwYXRoLXRvLXJlZ2V4cCB2YWxpZGF0aW9uXG4gICAgICAgICAgICAvLyBXZSB1c2UgJy8nIGFzIGl0J3MgdGhlIG1vc3QgY29tbW9uIHBhdGggZGVsaW1pdGVyIGFuZCB3b24ndCBicmVhayByb3V0ZSBtYXRjaGluZ1xuICAgICAgICAgICAgLy8gVGhlIHByZWZpeCBnZXRzIHVzZWQgaW4gcmVnZXggZ2VuZXJhdGlvbiBidXQgZG9lc24ndCBhZmZlY3QgcGFyYW1ldGVyIGV4dHJhY3Rpb25cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4udG9rZW4sXG4gICAgICAgICAgICAgICAgcHJlZml4OiAnLydcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gc3RyaXBQYXJhbWV0ZXJTZXBhcmF0b3JzKHBhcmFtcykge1xuICAgIGNvbnN0IGNsZWFuZWQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKXtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgc2VwYXJhdG9yIGlmIGl0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIHBhcmFtZXRlciB2YWx1ZXNcbiAgICAgICAgICAgIGNsZWFuZWRba2V5XSA9IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7UEFSQU1fU0VQQVJBVE9SfWApLCAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhcnJheSBwYXJhbWV0ZXJzIChmcm9tIHJlcGVhdGVkIHJvdXRlIHNlZ21lbnRzKVxuICAgICAgICAgICAgY2xlYW5lZFtrZXldID0gdmFsdWUubWFwKChpdGVtKT0+dHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke1BBUkFNX1NFUEFSQVRPUn1gKSwgJycpIDogaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGVhbmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xlYW5lZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUtcGF0dGVybi1ub3JtYWxpemVyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/route-pattern-normalizer.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/scheduler.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/lib/scheduler.js ***! \*************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n atLeastOneTask: function() {\n return atLeastOneTask;\n },\n scheduleImmediate: function() {\n return scheduleImmediate;\n },\n scheduleOnNextTick: function() {\n return scheduleOnNextTick;\n },\n waitAtLeastOneReactRenderTask: function() {\n return waitAtLeastOneReactRenderTask;\n }\n});\nconst scheduleOnNextTick = (cb)=>{\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(()=>{\n if (false) {} else {\n process.nextTick(cb);\n }\n });\n};\nconst scheduleImmediate = (cb)=>{\n if (false) {} else {\n setImmediate(cb);\n }\n};\nfunction atLeastOneTask() {\n return new Promise((resolve)=>scheduleImmediate(resolve));\n}\nfunction waitAtLeastOneReactRenderTask() {\n if (false) {} else {\n return new Promise((r)=>setImmediate(r));\n }\n}\n\n//# sourceMappingURL=scheduler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9zY2hlZHVsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFFBQVEsS0FBbUMsRUFBRSxFQUV4QyxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNOO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxzY2hlZHVsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhdExlYXN0T25lVGFzazogbnVsbCxcbiAgICBzY2hlZHVsZUltbWVkaWF0ZTogbnVsbCxcbiAgICBzY2hlZHVsZU9uTmV4dFRpY2s6IG51bGwsXG4gICAgd2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2s6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgYXRMZWFzdE9uZVRhc2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXRMZWFzdE9uZVRhc2s7XG4gICAgfSxcbiAgICBzY2hlZHVsZUltbWVkaWF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzY2hlZHVsZUltbWVkaWF0ZTtcbiAgICB9LFxuICAgIHNjaGVkdWxlT25OZXh0VGljazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzY2hlZHVsZU9uTmV4dFRpY2s7XG4gICAgfSxcbiAgICB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzaztcbiAgICB9XG59KTtcbmNvbnN0IHNjaGVkdWxlT25OZXh0VGljayA9IChjYik9PntcbiAgICAvLyBXZSB1c2UgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigpIGhlcmUgc28gdGhhdCB0aGUgb3BlcmF0aW9uIGlzIHNjaGVkdWxlZCBhdFxuICAgIC8vIHRoZSBlbmQgb2YgdGhlIHByb21pc2Ugam9iIHF1ZXVlLCB3ZSB0aGVuIGFkZCBpdCB0byB0aGUgbmV4dCBwcm9jZXNzIHRpY2tcbiAgICAvLyB0byBlbnN1cmUgaXQncyBldmFsdWF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2FzIGluc3BpcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRGF0YUxvYWRlciBpbnRlcmZhY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2RhdGFsb2FkZXIvYmxvYi9kMzM2YmQxNTI4MjY2NGUwYmU0YjRhNjU3Y2I3OTZmMDliYWZiYzZiL3NyYy9pbmRleC5qcyNMMjEzLUwyNTVcbiAgICAvL1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2IpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuY29uc3Qgc2NoZWR1bGVJbW1lZGlhdGUgPSAoY2IpPT57XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEltbWVkaWF0ZShjYik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGF0TGVhc3RPbmVUYXNrKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PnNjaGVkdWxlSW1tZWRpYXRlKHJlc29sdmUpKTtcbn1cbmZ1bmN0aW9uIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHIpPT5zZXRUaW1lb3V0KHIsIDApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHIpPT5zZXRJbW1lZGlhdGUocikpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZWR1bGVyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/scheduler.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/url.js": /*!*******************************************!*\ !*** ./node_modules/next/dist/lib/url.js ***! \*******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isFullStringUrl: function() {\n return isFullStringUrl;\n },\n parseReqUrl: function() {\n return parseReqUrl;\n },\n parseUrl: function() {\n return parseUrl;\n },\n stripNextRscUnionQuery: function() {\n return stripNextRscUnionQuery;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst DUMMY_ORIGIN = 'http://n';\nfunction isFullStringUrl(url) {\n return /https?:\\/\\//.test(url);\n}\nfunction parseUrl(url) {\n let parsed = undefined;\n try {\n parsed = new URL(url, DUMMY_ORIGIN);\n } catch {}\n return parsed;\n}\nfunction parseReqUrl(url) {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return;\n }\n const query = {};\n for (const key of parsedUrl.searchParams.keys()){\n const values = parsedUrl.searchParams.getAll(key);\n query[key] = values.length > 1 ? values : values[0];\n }\n const legacyUrl = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: ''\n };\n return legacyUrl;\n}\nfunction stripNextRscUnionQuery(relativeUrl) {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN);\n urlInstance.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n return urlInstance.pathname + urlInstance.search;\n}\n\n//# sourceMappingURL=url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi91cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDBCQUEwQixtQkFBTyxDQUFDLHVIQUF5QztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGxpYlxcdXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNGdWxsU3RyaW5nVXJsOiBudWxsLFxuICAgIHBhcnNlUmVxVXJsOiBudWxsLFxuICAgIHBhcnNlVXJsOiBudWxsLFxuICAgIHN0cmlwTmV4dFJzY1VuaW9uUXVlcnk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNGdWxsU3RyaW5nVXJsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzRnVsbFN0cmluZ1VybDtcbiAgICB9LFxuICAgIHBhcnNlUmVxVXJsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlUmVxVXJsO1xuICAgIH0sXG4gICAgcGFyc2VVcmw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGFyc2VVcmw7XG4gICAgfSxcbiAgICBzdHJpcE5leHRSc2NVbmlvblF1ZXJ5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmlwTmV4dFJzY1VuaW9uUXVlcnk7XG4gICAgfVxufSk7XG5jb25zdCBfYXBwcm91dGVyaGVhZGVycyA9IHJlcXVpcmUoXCIuLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIik7XG5jb25zdCBEVU1NWV9PUklHSU4gPSAnaHR0cDovL24nO1xuZnVuY3Rpb24gaXNGdWxsU3RyaW5nVXJsKHVybCkge1xuICAgIHJldHVybiAvaHR0cHM/OlxcL1xcLy8udGVzdCh1cmwpO1xufVxuZnVuY3Rpb24gcGFyc2VVcmwodXJsKSB7XG4gICAgbGV0IHBhcnNlZCA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgICBwYXJzZWQgPSBuZXcgVVJMKHVybCwgRFVNTVlfT1JJR0lOKTtcbiAgICB9IGNhdGNoICB7fVxuICAgIHJldHVybiBwYXJzZWQ7XG59XG5mdW5jdGlvbiBwYXJzZVJlcVVybCh1cmwpIHtcbiAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZVVybCh1cmwpO1xuICAgIGlmICghcGFyc2VkVXJsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcXVlcnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBwYXJzZWRVcmwuc2VhcmNoUGFyYW1zLmtleXMoKSl7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHBhcnNlZFVybC5zZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZXMubGVuZ3RoID4gMSA/IHZhbHVlcyA6IHZhbHVlc1swXTtcbiAgICB9XG4gICAgY29uc3QgbGVnYWN5VXJsID0ge1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgaGFzaDogcGFyc2VkVXJsLmhhc2gsXG4gICAgICAgIHNlYXJjaDogcGFyc2VkVXJsLnNlYXJjaCxcbiAgICAgICAgcGF0aDogcGFyc2VkVXJsLnBhdGhuYW1lLFxuICAgICAgICBwYXRobmFtZTogcGFyc2VkVXJsLnBhdGhuYW1lLFxuICAgICAgICBocmVmOiBgJHtwYXJzZWRVcmwucGF0aG5hbWV9JHtwYXJzZWRVcmwuc2VhcmNofSR7cGFyc2VkVXJsLmhhc2h9YCxcbiAgICAgICAgaG9zdDogJycsXG4gICAgICAgIGhvc3RuYW1lOiAnJyxcbiAgICAgICAgYXV0aDogJycsXG4gICAgICAgIHByb3RvY29sOiAnJyxcbiAgICAgICAgc2xhc2hlczogbnVsbCxcbiAgICAgICAgcG9ydDogJydcbiAgICB9O1xuICAgIHJldHVybiBsZWdhY3lVcmw7XG59XG5mdW5jdGlvbiBzdHJpcE5leHRSc2NVbmlvblF1ZXJ5KHJlbGF0aXZlVXJsKSB7XG4gICAgY29uc3QgdXJsSW5zdGFuY2UgPSBuZXcgVVJMKHJlbGF0aXZlVXJsLCBEVU1NWV9PUklHSU4pO1xuICAgIHVybEluc3RhbmNlLnNlYXJjaFBhcmFtcy5kZWxldGUoX2FwcHJvdXRlcmhlYWRlcnMuTkVYVF9SU0NfVU5JT05fUVVFUlkpO1xuICAgIHJldHVybiB1cmxJbnN0YW5jZS5wYXRobmFtZSArIHVybEluc3RhbmNlLnNlYXJjaDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJsLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/lib/url.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js": /*!*************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js ***! \*************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("// This file is generated by the Webpack next-flight-loader.\nconst { createProxy } = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\")\n\nmodule.exports = createProxy(\"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\node_modules\\\\next\\\\dist\\\\next-devtools\\\\userspace\\\\app\\\\segment-explorer-node.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIl9OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMvX19uZXh0anMtaW50ZXJuYWwtcHJveHkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIFdlYnBhY2sgbmV4dC1mbGlnaHQtbG9hZGVyLlxuY29uc3QgeyBjcmVhdGVQcm94eSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eVwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVByb3h5KFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXG5leHQtZGV2dG9vbHNcXFxcdXNlcnNwYWNlXFxcXGFwcFxcXFxzZWdtZW50LWV4cGxvcmVyLW5vZGUuanNcIilcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/server/api-utils/get-cookie-parser.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getCookieParser\", ({\n enumerable: true,\n get: function() {\n return getCookieParser;\n }\n}));\nfunction getCookieParser(headers) {\n return function parseCookie() {\n const { cookie } = headers;\n if (!cookie) {\n return {};\n }\n const { parse: parseCookieFn } = __webpack_require__(/*! next/dist/compiled/cookie */ \"(rsc)/./node_modules/next/dist/compiled/cookie/index.js\");\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie);\n };\n}\n\n//# sourceMappingURL=get-cookie-parser.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcGktdXRpbHMvZ2V0LWNvb2tpZS1wYXJzZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixtREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVCQUF1QixFQUFFLG1CQUFPLENBQUMsMEZBQTJCO0FBQzVFLG9FQUFvRTtBQUNwRTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGFwaS11dGlsc1xcZ2V0LWNvb2tpZS1wYXJzZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRDb29raWVQYXJzZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldENvb2tpZVBhcnNlcjtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldENvb2tpZVBhcnNlcihoZWFkZXJzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhcnNlQ29va2llKCkge1xuICAgICAgICBjb25zdCB7IGNvb2tpZSB9ID0gaGVhZGVycztcbiAgICAgICAgaWYgKCFjb29raWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHBhcnNlOiBwYXJzZUNvb2tpZUZuIH0gPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvY29va2llJyk7XG4gICAgICAgIHJldHVybiBwYXJzZUNvb2tpZUZuKEFycmF5LmlzQXJyYXkoY29va2llKSA/IGNvb2tpZS5qb2luKCc7ICcpIDogY29va2llKTtcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtY29va2llLXBhcnNlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/api-utils/index.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/server/api-utils/index.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ApiError: function() {\n return ApiError;\n },\n COOKIE_NAME_PRERENDER_BYPASS: function() {\n return COOKIE_NAME_PRERENDER_BYPASS;\n },\n COOKIE_NAME_PRERENDER_DATA: function() {\n return COOKIE_NAME_PRERENDER_DATA;\n },\n RESPONSE_LIMIT_DEFAULT: function() {\n return RESPONSE_LIMIT_DEFAULT;\n },\n SYMBOL_CLEARED_COOKIES: function() {\n return SYMBOL_CLEARED_COOKIES;\n },\n SYMBOL_PREVIEW_DATA: function() {\n return SYMBOL_PREVIEW_DATA;\n },\n checkIsOnDemandRevalidate: function() {\n return checkIsOnDemandRevalidate;\n },\n clearPreviewData: function() {\n return clearPreviewData;\n },\n redirect: function() {\n return redirect;\n },\n sendError: function() {\n return sendError;\n },\n sendStatusCode: function() {\n return sendStatusCode;\n },\n setLazyProp: function() {\n return setLazyProp;\n },\n wrapApiHandler: function() {\n return wrapApiHandler;\n }\n});\nconst _headers = __webpack_require__(/*! ../web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\");\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants1 = __webpack_require__(/*! ../lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nfunction wrapApiHandler(page, handler) {\n return (...args)=>{\n (0, _tracer.getTracer)().setRootSpanAttribute('next.route', page);\n // Call API route method\n return (0, _tracer.getTracer)().trace(_constants1.NodeSpan.runHandler, {\n spanName: `executing api route (pages) ${page}`\n }, ()=>handler(...args));\n };\n}\nfunction sendStatusCode(res, statusCode) {\n res.statusCode = statusCode;\n return res;\n}\nfunction redirect(res, statusOrUrl, url) {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl;\n statusOrUrl = 307;\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw Object.defineProperty(new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`), \"__NEXT_ERROR_CODE\", {\n value: \"E389\",\n enumerable: false,\n configurable: true\n });\n }\n res.writeHead(statusOrUrl, {\n Location: url\n });\n res.write(url);\n res.end();\n return res;\n}\nfunction checkIsOnDemandRevalidate(req, previewProps) {\n const headers = _headers.HeadersAdapter.from(req.headers);\n const previewModeId = headers.get(_constants.PRERENDER_REVALIDATE_HEADER);\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.has(_constants.PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);\n return {\n isOnDemandRevalidate,\n revalidateOnlyGenerated\n };\n}\nconst COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`;\nconst COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`;\nconst RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024;\nconst SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA);\nconst SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS);\nfunction clearPreviewData(res, options = {}) {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res;\n }\n const { serialize } = __webpack_require__(/*! next/dist/compiled/cookie */ \"(rsc)/./node_modules/next/dist/compiled/cookie/index.js\");\n const previous = res.getHeader('Set-Cookie');\n res.setHeader(`Set-Cookie`, [\n ...typeof previous === 'string' ? [\n previous\n ] : Array.isArray(previous) ? previous : [],\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: false ? 0 : 'lax',\n secure: \"development\" !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: false ? 0 : 'lax',\n secure: \"development\" !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n })\n ]);\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false\n });\n return res;\n}\nclass ApiError extends Error {\n constructor(statusCode, message){\n super(message);\n this.statusCode = statusCode;\n }\n}\nfunction sendError(res, statusCode, message) {\n res.statusCode = statusCode;\n res.statusMessage = message;\n res.end(message);\n}\nfunction setLazyProp({ req }, prop, getter) {\n const opts = {\n configurable: true,\n enumerable: true\n };\n const optsReset = {\n ...opts,\n writable: true\n };\n Object.defineProperty(req, prop, {\n ...opts,\n get: ()=>{\n const value = getter();\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n return value;\n },\n set: (value)=>{\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n }\n });\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcGktdXRpbHMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBY0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLDRIQUF3QztBQUNqRSxtQkFBbUIsbUJBQU8sQ0FBQyw0RUFBcUI7QUFDaEQsZ0JBQWdCLG1CQUFPLENBQUMsc0ZBQXFCO0FBQzdDLG9CQUFvQixtQkFBTyxDQUFDLDRGQUF3QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELEtBQUs7QUFDMUQsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQSxZQUFZLFlBQVksRUFBRSxtQkFBTyxDQUFDLDBGQUEyQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLE1BQXNDLEdBQUcsQ0FBTTtBQUNyRSxvQkFBb0IsYUFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsTUFBc0MsR0FBRyxDQUFNO0FBQ3JFLG9CQUFvQixhQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLEtBQUs7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcYXBpLXV0aWxzXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEFwaUVycm9yOiBudWxsLFxuICAgIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1M6IG51bGwsXG4gICAgQ09PS0lFX05BTUVfUFJFUkVOREVSX0RBVEE6IG51bGwsXG4gICAgUkVTUE9OU0VfTElNSVRfREVGQVVMVDogbnVsbCxcbiAgICBTWU1CT0xfQ0xFQVJFRF9DT09LSUVTOiBudWxsLFxuICAgIFNZTUJPTF9QUkVWSUVXX0RBVEE6IG51bGwsXG4gICAgY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZTogbnVsbCxcbiAgICBjbGVhclByZXZpZXdEYXRhOiBudWxsLFxuICAgIHJlZGlyZWN0OiBudWxsLFxuICAgIHNlbmRFcnJvcjogbnVsbCxcbiAgICBzZW5kU3RhdHVzQ29kZTogbnVsbCxcbiAgICBzZXRMYXp5UHJvcDogbnVsbCxcbiAgICB3cmFwQXBpSGFuZGxlcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBBcGlFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBBcGlFcnJvcjtcbiAgICB9LFxuICAgIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1M6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUztcbiAgICB9LFxuICAgIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9EQVRBOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIENPT0tJRV9OQU1FX1BSRVJFTkRFUl9EQVRBO1xuICAgIH0sXG4gICAgUkVTUE9OU0VfTElNSVRfREVGQVVMVDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSRVNQT05TRV9MSU1JVF9ERUZBVUxUO1xuICAgIH0sXG4gICAgU1lNQk9MX0NMRUFSRURfQ09PS0lFUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTWU1CT0xfQ0xFQVJFRF9DT09LSUVTO1xuICAgIH0sXG4gICAgU1lNQk9MX1BSRVZJRVdfREFUQTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTWU1CT0xfUFJFVklFV19EQVRBO1xuICAgIH0sXG4gICAgY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjaGVja0lzT25EZW1hbmRSZXZhbGlkYXRlO1xuICAgIH0sXG4gICAgY2xlYXJQcmV2aWV3RGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjbGVhclByZXZpZXdEYXRhO1xuICAgIH0sXG4gICAgcmVkaXJlY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVkaXJlY3Q7XG4gICAgfSxcbiAgICBzZW5kRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VuZEVycm9yO1xuICAgIH0sXG4gICAgc2VuZFN0YXR1c0NvZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VuZFN0YXR1c0NvZGU7XG4gICAgfSxcbiAgICBzZXRMYXp5UHJvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZXRMYXp5UHJvcDtcbiAgICB9LFxuICAgIHdyYXBBcGlIYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBBcGlIYW5kbGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2hlYWRlcnMgPSByZXF1aXJlKFwiLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL2hlYWRlcnNcIik7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9jb25zdGFudHNcIik7XG5jb25zdCBfdHJhY2VyID0gcmVxdWlyZShcIi4uL2xpYi90cmFjZS90cmFjZXJcIik7XG5jb25zdCBfY29uc3RhbnRzMSA9IHJlcXVpcmUoXCIuLi9saWIvdHJhY2UvY29uc3RhbnRzXCIpO1xuZnVuY3Rpb24gd3JhcEFwaUhhbmRsZXIocGFnZSwgaGFuZGxlcikge1xuICAgIHJldHVybiAoLi4uYXJncyk9PntcbiAgICAgICAgKDAsIF90cmFjZXIuZ2V0VHJhY2VyKSgpLnNldFJvb3RTcGFuQXR0cmlidXRlKCduZXh0LnJvdXRlJywgcGFnZSk7XG4gICAgICAgIC8vIENhbGwgQVBJIHJvdXRlIG1ldGhvZFxuICAgICAgICByZXR1cm4gKDAsIF90cmFjZXIuZ2V0VHJhY2VyKSgpLnRyYWNlKF9jb25zdGFudHMxLk5vZGVTcGFuLnJ1bkhhbmRsZXIsIHtcbiAgICAgICAgICAgIHNwYW5OYW1lOiBgZXhlY3V0aW5nIGFwaSByb3V0ZSAocGFnZXMpICR7cGFnZX1gXG4gICAgICAgIH0sICgpPT5oYW5kbGVyKC4uLmFyZ3MpKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gc2VuZFN0YXR1c0NvZGUocmVzLCBzdGF0dXNDb2RlKSB7XG4gICAgcmVzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIHJldHVybiByZXM7XG59XG5mdW5jdGlvbiByZWRpcmVjdChyZXMsIHN0YXR1c09yVXJsLCB1cmwpIHtcbiAgICBpZiAodHlwZW9mIHN0YXR1c09yVXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICB1cmwgPSBzdGF0dXNPclVybDtcbiAgICAgICAgc3RhdHVzT3JVcmwgPSAzMDc7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc3RhdHVzT3JVcmwgIT09ICdudW1iZXInIHx8IHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgcmVkaXJlY3QgYXJndW1lbnRzLiBQbGVhc2UgdXNlIGEgc2luZ2xlIGFyZ3VtZW50IFVSTCwgZS5nLiByZXMucmVkaXJlY3QoJy9kZXN0aW5hdGlvbicpIG9yIHVzZSBhIHN0YXR1cyBjb2RlIGFuZCBVUkwsIGUuZy4gcmVzLnJlZGlyZWN0KDMwNywgJy9kZXN0aW5hdGlvbicpLmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkUzODlcIixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXMud3JpdGVIZWFkKHN0YXR1c09yVXJsLCB7XG4gICAgICAgIExvY2F0aW9uOiB1cmxcbiAgICB9KTtcbiAgICByZXMud3JpdGUodXJsKTtcbiAgICByZXMuZW5kKCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmZ1bmN0aW9uIGNoZWNrSXNPbkRlbWFuZFJldmFsaWRhdGUocmVxLCBwcmV2aWV3UHJvcHMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gX2hlYWRlcnMuSGVhZGVyc0FkYXB0ZXIuZnJvbShyZXEuaGVhZGVycyk7XG4gICAgY29uc3QgcHJldmlld01vZGVJZCA9IGhlYWRlcnMuZ2V0KF9jb25zdGFudHMuUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSKTtcbiAgICBjb25zdCBpc09uRGVtYW5kUmV2YWxpZGF0ZSA9IHByZXZpZXdNb2RlSWQgPT09IHByZXZpZXdQcm9wcy5wcmV2aWV3TW9kZUlkO1xuICAgIGNvbnN0IHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkID0gaGVhZGVycy5oYXMoX2NvbnN0YW50cy5QUkVSRU5ERVJfUkVWQUxJREFURV9PTkxZX0dFTkVSQVRFRF9IRUFERVIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICByZXZhbGlkYXRlT25seUdlbmVyYXRlZFxuICAgIH07XG59XG5jb25zdCBDT09LSUVfTkFNRV9QUkVSRU5ERVJfQllQQVNTID0gYF9fcHJlcmVuZGVyX2J5cGFzc2A7XG5jb25zdCBDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSA9IGBfX25leHRfcHJldmlld19kYXRhYDtcbmNvbnN0IFJFU1BPTlNFX0xJTUlUX0RFRkFVTFQgPSA0ICogMTAyNCAqIDEwMjQ7XG5jb25zdCBTWU1CT0xfUFJFVklFV19EQVRBID0gU3ltYm9sKENPT0tJRV9OQU1FX1BSRVJFTkRFUl9EQVRBKTtcbmNvbnN0IFNZTUJPTF9DTEVBUkVEX0NPT0tJRVMgPSBTeW1ib2woQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUyk7XG5mdW5jdGlvbiBjbGVhclByZXZpZXdEYXRhKHJlcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKFNZTUJPTF9DTEVBUkVEX0NPT0tJRVMgaW4gcmVzKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGNvbnN0IHsgc2VyaWFsaXplIH0gPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvY29va2llJyk7XG4gICAgY29uc3QgcHJldmlvdXMgPSByZXMuZ2V0SGVhZGVyKCdTZXQtQ29va2llJyk7XG4gICAgcmVzLnNldEhlYWRlcihgU2V0LUNvb2tpZWAsIFtcbiAgICAgICAgLi4udHlwZW9mIHByZXZpb3VzID09PSAnc3RyaW5nJyA/IFtcbiAgICAgICAgICAgIHByZXZpb3VzXG4gICAgICAgIF0gOiBBcnJheS5pc0FycmF5KHByZXZpb3VzKSA/IHByZXZpb3VzIDogW10sXG4gICAgICAgIHNlcmlhbGl6ZShDT09LSUVfTkFNRV9QUkVSRU5ERVJfQllQQVNTLCAnJywge1xuICAgICAgICAgICAgLy8gVG8gZGVsZXRlIGEgY29va2llLCBzZXQgYGV4cGlyZXNgIHRvIGEgZGF0ZSBpbiB0aGUgcGFzdDpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjFcbiAgICAgICAgICAgIC8vIGBNYXgtQWdlOiAwYCBpcyBub3QgdmFsaWQsIHRodXMgaWdub3JlZCwgYW5kIHRoZSBjb29raWUgaXMgcGVyc2lzdGVkLlxuICAgICAgICAgICAgZXhwaXJlczogbmV3IERhdGUoMCksXG4gICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgIHNhbWVTaXRlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/ICdub25lJyA6ICdsYXgnLFxuICAgICAgICAgICAgc2VjdXJlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyxcbiAgICAgICAgICAgIHBhdGg6ICcvJyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucGF0aCAhPT0gdW5kZWZpbmVkID8ge1xuICAgICAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aFxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgICB9KSxcbiAgICAgICAgc2VyaWFsaXplKENPT0tJRV9OQU1FX1BSRVJFTkRFUl9EQVRBLCAnJywge1xuICAgICAgICAgICAgLy8gVG8gZGVsZXRlIGEgY29va2llLCBzZXQgYGV4cGlyZXNgIHRvIGEgZGF0ZSBpbiB0aGUgcGFzdDpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjFcbiAgICAgICAgICAgIC8vIGBNYXgtQWdlOiAwYCBpcyBub3QgdmFsaWQsIHRodXMgaWdub3JlZCwgYW5kIHRoZSBjb29raWUgaXMgcGVyc2lzdGVkLlxuICAgICAgICAgICAgZXhwaXJlczogbmV3IERhdGUoMCksXG4gICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgIHNhbWVTaXRlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyA/ICdub25lJyA6ICdsYXgnLFxuICAgICAgICAgICAgc2VjdXJlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyxcbiAgICAgICAgICAgIHBhdGg6ICcvJyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucGF0aCAhPT0gdW5kZWZpbmVkID8ge1xuICAgICAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMucGF0aFxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgIF0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXMsIFNZTUJPTF9DTEVBUkVEX0NPT0tJRVMsIHtcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmNsYXNzIEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHN0YXR1c0NvZGUsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZW5kRXJyb3IocmVzLCBzdGF0dXNDb2RlLCBtZXNzYWdlKSB7XG4gICAgcmVzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIHJlcy5zdGF0dXNNZXNzYWdlID0gbWVzc2FnZTtcbiAgICByZXMuZW5kKG1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gc2V0TGF6eVByb3AoeyByZXEgfSwgcHJvcCwgZ2V0dGVyKSB7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBvcHRzUmVzZXQgPSB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxLCBwcm9wLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIGdldDogKCk9PntcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0dGVyKCk7XG4gICAgICAgICAgICAvLyB3ZSBzZXQgdGhlIHByb3BlcnR5IG9uIHRoZSBvYmplY3QgdG8gYXZvaWQgcmVjYWxjdWxhdGluZyBpdFxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIC4uLm9wdHNSZXNldCxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogKHZhbHVlKT0+e1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIC4uLm9wdHNSZXNldCxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/api-utils/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/action-utils.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/action-utils.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createServerModuleMap: function() {\n return createServerModuleMap;\n },\n selectWorkerForForwarding: function() {\n return selectWorkerForForwarding;\n }\n});\nconst _apppaths = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst _pathhasprefix = __webpack_require__(/*! ../../shared/lib/router/utils/path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst _removepathprefix = __webpack_require__(/*! ../../shared/lib/router/utils/remove-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ./work-async-storage.external */ \"./work-async-storage.external\");\nfunction createServerModuleMap({ serverActionsManifest }) {\n return new Proxy({}, {\n get: (_, id)=>{\n var _serverActionsManifest__id, _serverActionsManifest_;\n const workers = (_serverActionsManifest_ = serverActionsManifest[ false ? 0 : 'node']) == null ? void 0 : (_serverActionsManifest__id = _serverActionsManifest_[id]) == null ? void 0 : _serverActionsManifest__id.workers;\n if (!workers) {\n return undefined;\n }\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n let workerEntry;\n if (workStore) {\n workerEntry = workers[normalizeWorkerPageName(workStore.page)];\n } else {\n // If there's no work store defined, we can assume that a server\n // module map is needed during module evaluation, e.g. to create a\n // server action using a higher-order function. Therefore it should be\n // safe to return any entry from the manifest that matches the action\n // ID. They all refer to the same module ID, which must also exist in\n // the current page bundle. TODO: This is currently not guaranteed in\n // Turbopack, and needs to be fixed.\n workerEntry = Object.values(workers).at(0);\n }\n if (!workerEntry) {\n return undefined;\n }\n const { moduleId, async } = workerEntry;\n return {\n id: moduleId,\n name: id,\n chunks: [],\n async\n };\n }\n });\n}\nfunction selectWorkerForForwarding(actionId, pageName, serverActionsManifest) {\n var _serverActionsManifest__actionId;\n const workers = (_serverActionsManifest__actionId = serverActionsManifest[ false ? 0 : 'node'][actionId]) == null ? void 0 : _serverActionsManifest__actionId.workers;\n const workerName = normalizeWorkerPageName(pageName);\n // no workers, nothing to forward to\n if (!workers) return;\n // if there is a worker for this page, no need to forward it.\n if (workers[workerName]) {\n return;\n }\n // otherwise, grab the first worker that has a handler for this action id\n return denormalizeWorkerPageName(Object.keys(workers)[0]);\n}\n/**\n * The flight entry loader keys actions by bundlePath.\n * bundlePath corresponds with the relative path (including 'app') to the page entrypoint.\n */ function normalizeWorkerPageName(pageName) {\n if ((0, _pathhasprefix.pathHasPrefix)(pageName, 'app')) {\n return pageName;\n }\n return 'app' + pageName;\n}\n/**\n * Converts a bundlePath (relative path to the entrypoint) to a routable page name\n */ function denormalizeWorkerPageName(bundlePath) {\n return (0, _apppaths.normalizeAppPath)((0, _removepathprefix.removePathPrefix)(bundlePath, 'app'));\n}\n\n//# sourceMappingURL=action-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQkFBa0IsbUJBQU8sQ0FBQyxvSEFBeUM7QUFDbkUsdUJBQXVCLG1CQUFPLENBQUMsZ0lBQStDO0FBQzlFLDBCQUEwQixtQkFBTyxDQUFDLHNJQUFrRDtBQUNwRixrQ0FBa0MsbUJBQU8sQ0FBQyxvRUFBK0I7QUFDekUsaUNBQWlDLHVCQUF1QjtBQUN4RCx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLDZFQUE2RSxNQUFtQyxHQUFHLENBQU07QUFDekg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw4RUFBOEUsTUFBbUMsR0FBRyxDQUFNO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxhcHAtcmVuZGVyXFxhY3Rpb24tdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVTZXJ2ZXJNb2R1bGVNYXA6IG51bGwsXG4gICAgc2VsZWN0V29ya2VyRm9yRm9yd2FyZGluZzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVTZXJ2ZXJNb2R1bGVNYXA6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyTW9kdWxlTWFwO1xuICAgIH0sXG4gICAgc2VsZWN0V29ya2VyRm9yRm9yd2FyZGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RXb3JrZXJGb3JGb3J3YXJkaW5nO1xuICAgIH1cbn0pO1xuY29uc3QgX2FwcHBhdGhzID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRoc1wiKTtcbmNvbnN0IF9wYXRoaGFzcHJlZml4ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeFwiKTtcbmNvbnN0IF9yZW1vdmVwYXRocHJlZml4ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS1wYXRoLXByZWZpeFwiKTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJNb2R1bGVNYXAoeyBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QgfSkge1xuICAgIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgZ2V0OiAoXywgaWQpPT57XG4gICAgICAgICAgICB2YXIgX3NlcnZlckFjdGlvbnNNYW5pZmVzdF9faWQsIF9zZXJ2ZXJBY3Rpb25zTWFuaWZlc3RfO1xuICAgICAgICAgICAgY29uc3Qgd29ya2VycyA9IChfc2VydmVyQWN0aW9uc01hbmlmZXN0XyA9IHNlcnZlckFjdGlvbnNNYW5pZmVzdFtwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJyA/ICdlZGdlJyA6ICdub2RlJ10pID09IG51bGwgPyB2b2lkIDAgOiAoX3NlcnZlckFjdGlvbnNNYW5pZmVzdF9faWQgPSBfc2VydmVyQWN0aW9uc01hbmlmZXN0X1tpZF0pID09IG51bGwgPyB2b2lkIDAgOiBfc2VydmVyQWN0aW9uc01hbmlmZXN0X19pZC53b3JrZXJzO1xuICAgICAgICAgICAgaWYgKCF3b3JrZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHdvcmtTdG9yZSA9IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgbGV0IHdvcmtlckVudHJ5O1xuICAgICAgICAgICAgaWYgKHdvcmtTdG9yZSkge1xuICAgICAgICAgICAgICAgIHdvcmtlckVudHJ5ID0gd29ya2Vyc1tub3JtYWxpemVXb3JrZXJQYWdlTmFtZSh3b3JrU3RvcmUucGFnZSldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHdvcmsgc3RvcmUgZGVmaW5lZCwgd2UgY2FuIGFzc3VtZSB0aGF0IGEgc2VydmVyXG4gICAgICAgICAgICAgICAgLy8gbW9kdWxlIG1hcCBpcyBuZWVkZWQgZHVyaW5nIG1vZHVsZSBldmFsdWF0aW9uLCBlLmcuIHRvIGNyZWF0ZSBhXG4gICAgICAgICAgICAgICAgLy8gc2VydmVyIGFjdGlvbiB1c2luZyBhIGhpZ2hlci1vcmRlciBmdW5jdGlvbi4gVGhlcmVmb3JlIGl0IHNob3VsZCBiZVxuICAgICAgICAgICAgICAgIC8vIHNhZmUgdG8gcmV0dXJuIGFueSBlbnRyeSBmcm9tIHRoZSBtYW5pZmVzdCB0aGF0IG1hdGNoZXMgdGhlIGFjdGlvblxuICAgICAgICAgICAgICAgIC8vIElELiBUaGV5IGFsbCByZWZlciB0byB0aGUgc2FtZSBtb2R1bGUgSUQsIHdoaWNoIG11c3QgYWxzbyBleGlzdCBpblxuICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IHBhZ2UgYnVuZGxlLiBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSBub3QgZ3VhcmFudGVlZCBpblxuICAgICAgICAgICAgICAgIC8vIFR1cmJvcGFjaywgYW5kIG5lZWRzIHRvIGJlIGZpeGVkLlxuICAgICAgICAgICAgICAgIHdvcmtlckVudHJ5ID0gT2JqZWN0LnZhbHVlcyh3b3JrZXJzKS5hdCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghd29ya2VyRW50cnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBtb2R1bGVJZCwgYXN5bmMgfSA9IHdvcmtlckVudHJ5O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgbmFtZTogaWQsXG4gICAgICAgICAgICAgICAgY2h1bmtzOiBbXSxcbiAgICAgICAgICAgICAgICBhc3luY1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gc2VsZWN0V29ya2VyRm9yRm9yd2FyZGluZyhhY3Rpb25JZCwgcGFnZU5hbWUsIHNlcnZlckFjdGlvbnNNYW5pZmVzdCkge1xuICAgIHZhciBfc2VydmVyQWN0aW9uc01hbmlmZXN0X19hY3Rpb25JZDtcbiAgICBjb25zdCB3b3JrZXJzID0gKF9zZXJ2ZXJBY3Rpb25zTWFuaWZlc3RfX2FjdGlvbklkID0gc2VydmVyQWN0aW9uc01hbmlmZXN0W3Byb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnID8gJ2VkZ2UnIDogJ25vZGUnXVthY3Rpb25JZF0pID09IG51bGwgPyB2b2lkIDAgOiBfc2VydmVyQWN0aW9uc01hbmlmZXN0X19hY3Rpb25JZC53b3JrZXJzO1xuICAgIGNvbnN0IHdvcmtlck5hbWUgPSBub3JtYWxpemVXb3JrZXJQYWdlTmFtZShwYWdlTmFtZSk7XG4gICAgLy8gbm8gd29ya2Vycywgbm90aGluZyB0byBmb3J3YXJkIHRvXG4gICAgaWYgKCF3b3JrZXJzKSByZXR1cm47XG4gICAgLy8gaWYgdGhlcmUgaXMgYSB3b3JrZXIgZm9yIHRoaXMgcGFnZSwgbm8gbmVlZCB0byBmb3J3YXJkIGl0LlxuICAgIGlmICh3b3JrZXJzW3dvcmtlck5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gb3RoZXJ3aXNlLCBncmFiIHRoZSBmaXJzdCB3b3JrZXIgdGhhdCBoYXMgYSBoYW5kbGVyIGZvciB0aGlzIGFjdGlvbiBpZFxuICAgIHJldHVybiBkZW5vcm1hbGl6ZVdvcmtlclBhZ2VOYW1lKE9iamVjdC5rZXlzKHdvcmtlcnMpWzBdKTtcbn1cbi8qKlxuICogVGhlIGZsaWdodCBlbnRyeSBsb2FkZXIga2V5cyBhY3Rpb25zIGJ5IGJ1bmRsZVBhdGguXG4gKiBidW5kbGVQYXRoIGNvcnJlc3BvbmRzIHdpdGggdGhlIHJlbGF0aXZlIHBhdGggKGluY2x1ZGluZyAnYXBwJykgdG8gdGhlIHBhZ2UgZW50cnlwb2ludC5cbiAqLyBmdW5jdGlvbiBub3JtYWxpemVXb3JrZXJQYWdlTmFtZShwYWdlTmFtZSkge1xuICAgIGlmICgoMCwgX3BhdGhoYXNwcmVmaXgucGF0aEhhc1ByZWZpeCkocGFnZU5hbWUsICdhcHAnKSkge1xuICAgICAgICByZXR1cm4gcGFnZU5hbWU7XG4gICAgfVxuICAgIHJldHVybiAnYXBwJyArIHBhZ2VOYW1lO1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhIGJ1bmRsZVBhdGggKHJlbGF0aXZlIHBhdGggdG8gdGhlIGVudHJ5cG9pbnQpIHRvIGEgcm91dGFibGUgcGFnZSBuYW1lXG4gKi8gZnVuY3Rpb24gZGVub3JtYWxpemVXb3JrZXJQYWdlTmFtZShidW5kbGVQYXRoKSB7XG4gICAgcmV0dXJuICgwLCBfYXBwcGF0aHMubm9ybWFsaXplQXBwUGF0aCkoKDAsIF9yZW1vdmVwYXRocHJlZml4LnJlbW92ZVBhdGhQcmVmaXgpKGJ1bmRsZVBhdGgsICdhcHAnKSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFjdGlvbi11dGlscy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/action-utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/collect-segment-data.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"collectSegmentData\", ({\n enumerable: true,\n get: function() {\n return collectSegmentData;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.node.js\");\nconst _static = __webpack_require__(/*! react-server-dom-webpack/static */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\");\nconst _nodewebstreamshelper = __webpack_require__(/*! ../stream-utils/node-web-streams-helper */ \"(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../../shared/lib/segment-cache/segment-value-encoding */ \"(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _createerrorhandler = __webpack_require__(/*! ./create-error-handler */ \"(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js\");\nconst filterStackFrame = true ? (__webpack_require__(/*! ../lib/source-maps */ \"(rsc)/./node_modules/next/dist/server/lib/source-maps.js\").filterStackFrameDEV) : 0;\nconst findSourceMapURL = true ? (__webpack_require__(/*! ../lib/source-maps */ \"(rsc)/./node_modules/next/dist/server/lib/source-maps.js\").findSourceMapURLDEV) : 0;\nfunction onSegmentPrerenderError(error) {\n const digest = (0, _createerrorhandler.getDigestForWellKnownError)(error);\n if (digest) {\n return digest;\n }\n// We don't need to log the errors because we would have already done that\n// when generating the original Flight stream for the whole page.\n}\nasync function collectSegmentData(isClientParamParsingEnabled, fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest) {\n // Traverse the router tree and generate a prefetch response for each segment.\n // A mutable map to collect the results as we traverse the route tree.\n const resultMap = new Map();\n // Before we start, warm up the module cache by decoding the page data once.\n // Then we can assume that any remaining async tasks that occur the next time\n // are due to hanging promises caused by dynamic data access. Note we only\n // have to do this once per page, not per individual segment.\n //\n try {\n await (0, _client.createFromReadableStream)((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer), {\n findSourceMapURL,\n serverConsumerManifest\n });\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n } catch {}\n // Create an abort controller that we'll use to stop the stream.\n const abortController = new AbortController();\n const onCompletedProcessingRouteTree = async ()=>{\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // serializing the stream takes longer than a microtask, it must because of\n // hanging promises caused by dynamic data.\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n abortController.abort();\n };\n // Generate a stream for the route tree prefetch. While we're walking the\n // tree, we'll also spawn additional tasks to generate the segment prefetches.\n // The promises for these tasks are pushed to a mutable array that we will\n // await once the route tree is fully rendered.\n const segmentTasks = [];\n const { prelude: treeStream } = await (0, _static.unstable_prerender)(// RootTreePrefetch is not a valid return type for a React component, but\n // we need to use a component so that when we decode the original stream\n // inside of it, the side effects are transferred to the new stream.\n // @ts-expect-error\n /*#__PURE__*/ (0, _jsxruntime.jsx)(PrefetchTreeData, {\n isClientParamParsingEnabled: isClientParamParsingEnabled,\n fullPageDataBuffer: fullPageDataBuffer,\n serverConsumerManifest: serverConsumerManifest,\n clientModules: clientModules,\n staleTime: staleTime,\n segmentTasks: segmentTasks,\n onCompletedProcessingRouteTree: onCompletedProcessingRouteTree\n }), clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n // Write the route tree to a special `/_tree` segment.\n const treeBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(treeStream);\n resultMap.set('/_tree', treeBuffer);\n // Now that we've finished rendering the route tree, all the segment tasks\n // should have been spawned. Await them in parallel and write the segment\n // prefetches to the result map.\n for (const [segmentPath, buffer] of (await Promise.all(segmentTasks))){\n resultMap.set(segmentPath, buffer);\n }\n return resultMap;\n}\nasync function PrefetchTreeData({ isClientParamParsingEnabled, fullPageDataBuffer, serverConsumerManifest, clientModules, staleTime, segmentTasks, onCompletedProcessingRouteTree }) {\n // We're currently rendering a Flight response for the route tree prefetch.\n // Inside this component, decode the Flight stream for the whole page. This is\n // a hack to transfer the side effects from the original Flight stream (e.g.\n // Float preloads) onto the Flight stream for the tree prefetch.\n // TODO: React needs a better way to do this. Needed for Server Actions, too.\n const initialRSCPayload = await (0, _client.createFromReadableStream)(createUnclosingPrefetchStream((0, _nodewebstreamshelper.streamFromBuffer)(fullPageDataBuffer)), {\n findSourceMapURL,\n serverConsumerManifest\n });\n const buildId = initialRSCPayload.b;\n // FlightDataPath is an unsound type, hence the additional checks.\n const flightDataPaths = initialRSCPayload.f;\n if (flightDataPaths.length !== 1 && flightDataPaths[0].length !== 3) {\n console.error('Internal Next.js error: InitialRSCPayload does not match the expected ' + 'shape for a prerendered page during segment prefetch generation.');\n return null;\n }\n const flightRouterState = flightDataPaths[0][0];\n const seedData = flightDataPaths[0][1];\n const head = flightDataPaths[0][2];\n // Compute the route metadata tree by traversing the FlightRouterState. As we\n // walk the tree, we will also spawn a task to produce a prefetch response for\n // each segment.\n const tree = collectSegmentDataImpl(isClientParamParsingEnabled, flightRouterState, buildId, seedData, clientModules, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, segmentTasks);\n const isHeadPartial = await isPartialRSCData(head, clientModules);\n // Notify the abort controller that we're done processing the route tree.\n // Anything async that happens after this point must be due to hanging\n // promises in the original stream.\n onCompletedProcessingRouteTree();\n // Render the route tree to a special `/_tree` segment.\n const treePrefetch = {\n buildId,\n tree,\n head,\n isHeadPartial,\n staleTime\n };\n return treePrefetch;\n}\nfunction collectSegmentDataImpl(isClientParamParsingEnabled, route, buildId, seedData, clientModules, requestKey, segmentTasks) {\n // Metadata about the segment. Sent as part of the tree prefetch. Null if\n // there are no children.\n let slotMetadata = null;\n const children = route[1];\n const seedDataChildren = seedData !== null ? seedData[2] : null;\n for(const parallelRouteKey in children){\n const childRoute = children[parallelRouteKey];\n const childSegment = childRoute[0];\n const childSeedData = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment));\n const childTree = collectSegmentDataImpl(isClientParamParsingEnabled, childRoute, buildId, childSeedData, clientModules, childRequestKey, segmentTasks);\n if (slotMetadata === null) {\n slotMetadata = {};\n }\n slotMetadata[parallelRouteKey] = childTree;\n }\n if (seedData !== null) {\n // Spawn a task to write the segment data to a new Flight stream.\n segmentTasks.push(// Since we're already in the middle of a render, wait until after the\n // current task to escape the current rendering context.\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>renderSegmentPrefetch(buildId, seedData, requestKey, clientModules)));\n } else {\n // This segment does not have any seed data. Skip generating a prefetch\n // response for it. We'll still include it in the route tree, though.\n // TODO: We should encode in the route tree whether a segment is missing\n // so we don't attempt to fetch it for no reason. As of now this shouldn't\n // ever happen in practice, though.\n }\n const segment = route[0];\n let name;\n let paramType = null;\n let paramKey = null;\n if (typeof segment === 'string') {\n name = segment;\n paramKey = segment;\n paramType = null;\n } else {\n name = segment[0];\n paramKey = segment[1];\n paramType = segment[2];\n }\n // Metadata about the segment. Sent to the client as part of the\n // tree prefetch.\n return {\n name,\n paramType,\n // This value is ommitted from the prefetch response when clientParamParsing\n // is enabled. The flag only exists while we're testing the feature, in\n // case there's a bug and we need to revert.\n // TODO: Remove once clientParamParsing is enabled everywhere.\n paramKey: isClientParamParsingEnabled ? null : paramKey,\n slots: slotMetadata,\n isRootLayout: route[4] === true\n };\n}\nasync function renderSegmentPrefetch(buildId, seedData, requestKey, clientModules) {\n // Render the segment data to a stream.\n // In the future, this is where we can include additional metadata, like the\n // stale time and cache tags.\n const rsc = seedData[1];\n const loading = seedData[3];\n const segmentPrefetch = {\n buildId,\n rsc,\n loading,\n isPartial: await isPartialRSCData(rsc, clientModules)\n };\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // it takes longer than a microtask, it must because of hanging promises\n // caused by dynamic data. Abort the stream at the end of the current task.\n const abortController = new AbortController();\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>abortController.abort());\n const { prelude: segmentStream } = await (0, _static.unstable_prerender)(segmentPrefetch, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n const segmentBuffer = await (0, _nodewebstreamshelper.streamToBuffer)(segmentStream);\n if (requestKey === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY) {\n return [\n '/_index',\n segmentBuffer\n ];\n } else {\n return [\n requestKey,\n segmentBuffer\n ];\n }\n}\nasync function isPartialRSCData(rsc, clientModules) {\n // We can determine if a segment contains only partial data if it takes longer\n // than a task to encode, because dynamic data is encoded as an infinite\n // promise. We must do this in a separate Flight prerender from the one that\n // actually generates the prefetch stream because we need to include\n // `isPartial` in the stream itself.\n let isPartial = false;\n const abortController = new AbortController();\n (0, _scheduler.waitAtLeastOneReactRenderTask)().then(()=>{\n // If we haven't yet finished the outer task, then it must be because we\n // accessed dynamic data.\n isPartial = true;\n abortController.abort();\n });\n await (0, _static.unstable_prerender)(rsc, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError () {},\n onPostpone () {\n // If something postponed, i.e. when Cache Components is not enabled, we can\n // infer that the RSC data is partial.\n isPartial = true;\n }\n });\n return isPartial;\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\n }\n }\n });\n}\n\n//# sourceMappingURL=collect-segment-data.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2NvbGxlY3Qtc2VnbWVudC1kYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysc0RBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysb0JBQW9CLG1CQUFPLENBQUMseUhBQW1CO0FBQy9DLGdCQUFnQixtQkFBTyxDQUFDLHdIQUFpQztBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQsOEJBQThCLG1CQUFPLENBQUMsOEhBQXlDO0FBQy9FLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCw4QkFBOEIsbUJBQU8sQ0FBQyxnSkFBdUQ7QUFDN0YsNEJBQTRCLG1CQUFPLENBQUMsd0dBQXdCO0FBQzVELHlCQUF5QixLQUFxQyxHQUFHLCtIQUFpRCxHQUFHLENBQVM7QUFDOUgseUJBQXlCLEtBQXFDLEdBQUcsK0hBQWlELEdBQUcsQ0FBUztBQUM5SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0JBQXNCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsaUpBQWlKO0FBQ25MO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxhcHAtcmVuZGVyXFxjb2xsZWN0LXNlZ21lbnQtZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbGxlY3RTZWdtZW50RGF0YVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29sbGVjdFNlZ21lbnREYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX2pzeHJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG5jb25zdCBfY2xpZW50ID0gcmVxdWlyZShcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnRcIik7XG5jb25zdCBfc3RhdGljID0gcmVxdWlyZShcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zdGF0aWNcIik7XG5jb25zdCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIgPSByZXF1aXJlKFwiLi4vc3RyZWFtLXV0aWxzL25vZGUtd2ViLXN0cmVhbXMtaGVscGVyXCIpO1xuY29uc3QgX3NjaGVkdWxlciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvc2NoZWR1bGVyXCIpO1xuY29uc3QgX3NlZ21lbnR2YWx1ZWVuY29kaW5nID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nXCIpO1xuY29uc3QgX2NyZWF0ZWVycm9yaGFuZGxlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lcnJvci1oYW5kbGVyXCIpO1xuY29uc3QgZmlsdGVyU3RhY2tGcmFtZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyByZXF1aXJlKCcuLi9saWIvc291cmNlLW1hcHMnKS5maWx0ZXJTdGFja0ZyYW1lREVWIDogdW5kZWZpbmVkO1xuY29uc3QgZmluZFNvdXJjZU1hcFVSTCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyByZXF1aXJlKCcuLi9saWIvc291cmNlLW1hcHMnKS5maW5kU291cmNlTWFwVVJMREVWIDogdW5kZWZpbmVkO1xuZnVuY3Rpb24gb25TZWdtZW50UHJlcmVuZGVyRXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBkaWdlc3QgPSAoMCwgX2NyZWF0ZWVycm9yaGFuZGxlci5nZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcikoZXJyb3IpO1xuICAgIGlmIChkaWdlc3QpIHtcbiAgICAgICAgcmV0dXJuIGRpZ2VzdDtcbiAgICB9XG4vLyBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3JzIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IGRvbmUgdGhhdFxuLy8gd2hlbiBnZW5lcmF0aW5nIHRoZSBvcmlnaW5hbCBGbGlnaHQgc3RyZWFtIGZvciB0aGUgd2hvbGUgcGFnZS5cbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RTZWdtZW50RGF0YShpc0NsaWVudFBhcmFtUGFyc2luZ0VuYWJsZWQsIGZ1bGxQYWdlRGF0YUJ1ZmZlciwgc3RhbGVUaW1lLCBjbGllbnRNb2R1bGVzLCBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0KSB7XG4gICAgLy8gVHJhdmVyc2UgdGhlIHJvdXRlciB0cmVlIGFuZCBnZW5lcmF0ZSBhIHByZWZldGNoIHJlc3BvbnNlIGZvciBlYWNoIHNlZ21lbnQuXG4gICAgLy8gQSBtdXRhYmxlIG1hcCB0byBjb2xsZWN0IHRoZSByZXN1bHRzIGFzIHdlIHRyYXZlcnNlIHRoZSByb3V0ZSB0cmVlLlxuICAgIGNvbnN0IHJlc3VsdE1hcCA9IG5ldyBNYXAoKTtcbiAgICAvLyBCZWZvcmUgd2Ugc3RhcnQsIHdhcm0gdXAgdGhlIG1vZHVsZSBjYWNoZSBieSBkZWNvZGluZyB0aGUgcGFnZSBkYXRhIG9uY2UuXG4gICAgLy8gVGhlbiB3ZSBjYW4gYXNzdW1lIHRoYXQgYW55IHJlbWFpbmluZyBhc3luYyB0YXNrcyB0aGF0IG9jY3VyIHRoZSBuZXh0IHRpbWVcbiAgICAvLyBhcmUgZHVlIHRvIGhhbmdpbmcgcHJvbWlzZXMgY2F1c2VkIGJ5IGR5bmFtaWMgZGF0YSBhY2Nlc3MuIE5vdGUgd2Ugb25seVxuICAgIC8vIGhhdmUgdG8gZG8gdGhpcyBvbmNlIHBlciBwYWdlLCBub3QgcGVyIGluZGl2aWR1YWwgc2VnbWVudC5cbiAgICAvL1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICgwLCBfY2xpZW50LmNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSkoKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tQnVmZmVyKShmdWxsUGFnZURhdGFCdWZmZXIpLCB7XG4gICAgICAgICAgICBmaW5kU291cmNlTWFwVVJMLFxuICAgICAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCk7XG4gICAgfSBjYXRjaCAge31cbiAgICAvLyBDcmVhdGUgYW4gYWJvcnQgY29udHJvbGxlciB0aGF0IHdlJ2xsIHVzZSB0byBzdG9wIHRoZSBzdHJlYW0uXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IG9uQ29tcGxldGVkUHJvY2Vzc2luZ1JvdXRlVHJlZSA9IGFzeW5jICgpPT57XG4gICAgICAgIC8vIFNpbmNlIGFsbCB3ZSdyZSBkb2luZyBpcyBkZWNvZGluZyBhbmQgcmUtZW5jb2RpbmcgYSBjYWNoZWQgcHJlcmVuZGVyLCBpZlxuICAgICAgICAvLyBzZXJpYWxpemluZyB0aGUgc3RyZWFtIHRha2VzIGxvbmdlciB0aGFuIGEgbWljcm90YXNrLCBpdCBtdXN0IGJlY2F1c2Ugb2ZcbiAgICAgICAgLy8gaGFuZ2luZyBwcm9taXNlcyBjYXVzZWQgYnkgZHluYW1pYyBkYXRhLlxuICAgICAgICBhd2FpdCAoMCwgX3NjaGVkdWxlci53YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzaykoKTtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfTtcbiAgICAvLyBHZW5lcmF0ZSBhIHN0cmVhbSBmb3IgdGhlIHJvdXRlIHRyZWUgcHJlZmV0Y2guIFdoaWxlIHdlJ3JlIHdhbGtpbmcgdGhlXG4gICAgLy8gdHJlZSwgd2UnbGwgYWxzbyBzcGF3biBhZGRpdGlvbmFsIHRhc2tzIHRvIGdlbmVyYXRlIHRoZSBzZWdtZW50IHByZWZldGNoZXMuXG4gICAgLy8gVGhlIHByb21pc2VzIGZvciB0aGVzZSB0YXNrcyBhcmUgcHVzaGVkIHRvIGEgbXV0YWJsZSBhcnJheSB0aGF0IHdlIHdpbGxcbiAgICAvLyBhd2FpdCBvbmNlIHRoZSByb3V0ZSB0cmVlIGlzIGZ1bGx5IHJlbmRlcmVkLlxuICAgIGNvbnN0IHNlZ21lbnRUYXNrcyA9IFtdO1xuICAgIGNvbnN0IHsgcHJlbHVkZTogdHJlZVN0cmVhbSB9ID0gYXdhaXQgKDAsIF9zdGF0aWMudW5zdGFibGVfcHJlcmVuZGVyKSgvLyBSb290VHJlZVByZWZldGNoIGlzIG5vdCBhIHZhbGlkIHJldHVybiB0eXBlIGZvciBhIFJlYWN0IGNvbXBvbmVudCwgYnV0XG4gICAgLy8gd2UgbmVlZCB0byB1c2UgYSBjb21wb25lbnQgc28gdGhhdCB3aGVuIHdlIGRlY29kZSB0aGUgb3JpZ2luYWwgc3RyZWFtXG4gICAgLy8gaW5zaWRlIG9mIGl0LCB0aGUgc2lkZSBlZmZlY3RzIGFyZSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IHN0cmVhbS5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShQcmVmZXRjaFRyZWVEYXRhLCB7XG4gICAgICAgIGlzQ2xpZW50UGFyYW1QYXJzaW5nRW5hYmxlZDogaXNDbGllbnRQYXJhbVBhcnNpbmdFbmFibGVkLFxuICAgICAgICBmdWxsUGFnZURhdGFCdWZmZXI6IGZ1bGxQYWdlRGF0YUJ1ZmZlcixcbiAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdDogc2VydmVyQ29uc3VtZXJNYW5pZmVzdCxcbiAgICAgICAgY2xpZW50TW9kdWxlczogY2xpZW50TW9kdWxlcyxcbiAgICAgICAgc3RhbGVUaW1lOiBzdGFsZVRpbWUsXG4gICAgICAgIHNlZ21lbnRUYXNrczogc2VnbWVudFRhc2tzLFxuICAgICAgICBvbkNvbXBsZXRlZFByb2Nlc3NpbmdSb3V0ZVRyZWU6IG9uQ29tcGxldGVkUHJvY2Vzc2luZ1JvdXRlVHJlZVxuICAgIH0pLCBjbGllbnRNb2R1bGVzLCB7XG4gICAgICAgIGZpbHRlclN0YWNrRnJhbWUsXG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25FcnJvcjogb25TZWdtZW50UHJlcmVuZGVyRXJyb3JcbiAgICB9KTtcbiAgICAvLyBXcml0ZSB0aGUgcm91dGUgdHJlZSB0byBhIHNwZWNpYWwgYC9fdHJlZWAgc2VnbWVudC5cbiAgICBjb25zdCB0cmVlQnVmZmVyID0gYXdhaXQgKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Ub0J1ZmZlcikodHJlZVN0cmVhbSk7XG4gICAgcmVzdWx0TWFwLnNldCgnL190cmVlJywgdHJlZUJ1ZmZlcik7XG4gICAgLy8gTm93IHRoYXQgd2UndmUgZmluaXNoZWQgcmVuZGVyaW5nIHRoZSByb3V0ZSB0cmVlLCBhbGwgdGhlIHNlZ21lbnQgdGFza3NcbiAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIHNwYXduZWQuIEF3YWl0IHRoZW0gaW4gcGFyYWxsZWwgYW5kIHdyaXRlIHRoZSBzZWdtZW50XG4gICAgLy8gcHJlZmV0Y2hlcyB0byB0aGUgcmVzdWx0IG1hcC5cbiAgICBmb3IgKGNvbnN0IFtzZWdtZW50UGF0aCwgYnVmZmVyXSBvZiAoYXdhaXQgUHJvbWlzZS5hbGwoc2VnbWVudFRhc2tzKSkpe1xuICAgICAgICByZXN1bHRNYXAuc2V0KHNlZ21lbnRQYXRoLCBidWZmZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0TWFwO1xufVxuYXN5bmMgZnVuY3Rpb24gUHJlZmV0Y2hUcmVlRGF0YSh7IGlzQ2xpZW50UGFyYW1QYXJzaW5nRW5hYmxlZCwgZnVsbFBhZ2VEYXRhQnVmZmVyLCBzZXJ2ZXJDb25zdW1lck1hbmlmZXN0LCBjbGllbnRNb2R1bGVzLCBzdGFsZVRpbWUsIHNlZ21lbnRUYXNrcywgb25Db21wbGV0ZWRQcm9jZXNzaW5nUm91dGVUcmVlIH0pIHtcbiAgICAvLyBXZSdyZSBjdXJyZW50bHkgcmVuZGVyaW5nIGEgRmxpZ2h0IHJlc3BvbnNlIGZvciB0aGUgcm91dGUgdHJlZSBwcmVmZXRjaC5cbiAgICAvLyBJbnNpZGUgdGhpcyBjb21wb25lbnQsIGRlY29kZSB0aGUgRmxpZ2h0IHN0cmVhbSBmb3IgdGhlIHdob2xlIHBhZ2UuIFRoaXMgaXNcbiAgICAvLyBhIGhhY2sgdG8gdHJhbnNmZXIgdGhlIHNpZGUgZWZmZWN0cyBmcm9tIHRoZSBvcmlnaW5hbCBGbGlnaHQgc3RyZWFtIChlLmcuXG4gICAgLy8gRmxvYXQgcHJlbG9hZHMpIG9udG8gdGhlIEZsaWdodCBzdHJlYW0gZm9yIHRoZSB0cmVlIHByZWZldGNoLlxuICAgIC8vIFRPRE86IFJlYWN0IG5lZWRzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLiBOZWVkZWQgZm9yIFNlcnZlciBBY3Rpb25zLCB0b28uXG4gICAgY29uc3QgaW5pdGlhbFJTQ1BheWxvYWQgPSBhd2FpdCAoMCwgX2NsaWVudC5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0pKGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKCgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuc3RyZWFtRnJvbUJ1ZmZlcikoZnVsbFBhZ2VEYXRhQnVmZmVyKSksIHtcbiAgICAgICAgZmluZFNvdXJjZU1hcFVSTCxcbiAgICAgICAgc2VydmVyQ29uc3VtZXJNYW5pZmVzdFxuICAgIH0pO1xuICAgIGNvbnN0IGJ1aWxkSWQgPSBpbml0aWFsUlNDUGF5bG9hZC5iO1xuICAgIC8vIEZsaWdodERhdGFQYXRoIGlzIGFuIHVuc291bmQgdHlwZSwgaGVuY2UgdGhlIGFkZGl0aW9uYWwgY2hlY2tzLlxuICAgIGNvbnN0IGZsaWdodERhdGFQYXRocyA9IGluaXRpYWxSU0NQYXlsb2FkLmY7XG4gICAgaWYgKGZsaWdodERhdGFQYXRocy5sZW5ndGggIT09IDEgJiYgZmxpZ2h0RGF0YVBhdGhzWzBdLmxlbmd0aCAhPT0gMykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnRlcm5hbCBOZXh0LmpzIGVycm9yOiBJbml0aWFsUlNDUGF5bG9hZCBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgJyArICdzaGFwZSBmb3IgYSBwcmVyZW5kZXJlZCBwYWdlIGR1cmluZyBzZWdtZW50IHByZWZldGNoIGdlbmVyYXRpb24uJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBmbGlnaHRSb3V0ZXJTdGF0ZSA9IGZsaWdodERhdGFQYXRoc1swXVswXTtcbiAgICBjb25zdCBzZWVkRGF0YSA9IGZsaWdodERhdGFQYXRoc1swXVsxXTtcbiAgICBjb25zdCBoZWFkID0gZmxpZ2h0RGF0YVBhdGhzWzBdWzJdO1xuICAgIC8vIENvbXB1dGUgdGhlIHJvdXRlIG1ldGFkYXRhIHRyZWUgYnkgdHJhdmVyc2luZyB0aGUgRmxpZ2h0Um91dGVyU3RhdGUuIEFzIHdlXG4gICAgLy8gd2FsayB0aGUgdHJlZSwgd2Ugd2lsbCBhbHNvIHNwYXduIGEgdGFzayB0byBwcm9kdWNlIGEgcHJlZmV0Y2ggcmVzcG9uc2UgZm9yXG4gICAgLy8gZWFjaCBzZWdtZW50LlxuICAgIGNvbnN0IHRyZWUgPSBjb2xsZWN0U2VnbWVudERhdGFJbXBsKGlzQ2xpZW50UGFyYW1QYXJzaW5nRW5hYmxlZCwgZmxpZ2h0Um91dGVyU3RhdGUsIGJ1aWxkSWQsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzLCBfc2VnbWVudHZhbHVlZW5jb2RpbmcuUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZLCBzZWdtZW50VGFza3MpO1xuICAgIGNvbnN0IGlzSGVhZFBhcnRpYWwgPSBhd2FpdCBpc1BhcnRpYWxSU0NEYXRhKGhlYWQsIGNsaWVudE1vZHVsZXMpO1xuICAgIC8vIE5vdGlmeSB0aGUgYWJvcnQgY29udHJvbGxlciB0aGF0IHdlJ3JlIGRvbmUgcHJvY2Vzc2luZyB0aGUgcm91dGUgdHJlZS5cbiAgICAvLyBBbnl0aGluZyBhc3luYyB0aGF0IGhhcHBlbnMgYWZ0ZXIgdGhpcyBwb2ludCBtdXN0IGJlIGR1ZSB0byBoYW5naW5nXG4gICAgLy8gcHJvbWlzZXMgaW4gdGhlIG9yaWdpbmFsIHN0cmVhbS5cbiAgICBvbkNvbXBsZXRlZFByb2Nlc3NpbmdSb3V0ZVRyZWUoKTtcbiAgICAvLyBSZW5kZXIgdGhlIHJvdXRlIHRyZWUgdG8gYSBzcGVjaWFsIGAvX3RyZWVgIHNlZ21lbnQuXG4gICAgY29uc3QgdHJlZVByZWZldGNoID0ge1xuICAgICAgICBidWlsZElkLFxuICAgICAgICB0cmVlLFxuICAgICAgICBoZWFkLFxuICAgICAgICBpc0hlYWRQYXJ0aWFsLFxuICAgICAgICBzdGFsZVRpbWVcbiAgICB9O1xuICAgIHJldHVybiB0cmVlUHJlZmV0Y2g7XG59XG5mdW5jdGlvbiBjb2xsZWN0U2VnbWVudERhdGFJbXBsKGlzQ2xpZW50UGFyYW1QYXJzaW5nRW5hYmxlZCwgcm91dGUsIGJ1aWxkSWQsIHNlZWREYXRhLCBjbGllbnRNb2R1bGVzLCByZXF1ZXN0S2V5LCBzZWdtZW50VGFza3MpIHtcbiAgICAvLyBNZXRhZGF0YSBhYm91dCB0aGUgc2VnbWVudC4gU2VudCBhcyBwYXJ0IG9mIHRoZSB0cmVlIHByZWZldGNoLiBOdWxsIGlmXG4gICAgLy8gdGhlcmUgYXJlIG5vIGNoaWxkcmVuLlxuICAgIGxldCBzbG90TWV0YWRhdGEgPSBudWxsO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcm91dGVbMV07XG4gICAgY29uc3Qgc2VlZERhdGFDaGlsZHJlbiA9IHNlZWREYXRhICE9PSBudWxsID8gc2VlZERhdGFbMl0gOiBudWxsO1xuICAgIGZvcihjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIGNoaWxkcmVuKXtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZSA9IGNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldO1xuICAgICAgICBjb25zdCBjaGlsZFNlZ21lbnQgPSBjaGlsZFJvdXRlWzBdO1xuICAgICAgICBjb25zdCBjaGlsZFNlZWREYXRhID0gc2VlZERhdGFDaGlsZHJlbiAhPT0gbnVsbCA/IHNlZWREYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gOiBudWxsO1xuICAgICAgICBjb25zdCBjaGlsZFJlcXVlc3RLZXkgPSAoMCwgX3NlZ21lbnR2YWx1ZWVuY29kaW5nLmFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCkocmVxdWVzdEtleSwgcGFyYWxsZWxSb3V0ZUtleSwgKDAsIF9zZWdtZW50dmFsdWVlbmNvZGluZy5jcmVhdGVTZWdtZW50UmVxdWVzdEtleVBhcnQpKGNoaWxkU2VnbWVudCkpO1xuICAgICAgICBjb25zdCBjaGlsZFRyZWUgPSBjb2xsZWN0U2VnbWVudERhdGFJbXBsKGlzQ2xpZW50UGFyYW1QYXJzaW5nRW5hYmxlZCwgY2hpbGRSb3V0ZSwgYnVpbGRJZCwgY2hpbGRTZWVkRGF0YSwgY2xpZW50TW9kdWxlcywgY2hpbGRSZXF1ZXN0S2V5LCBzZWdtZW50VGFza3MpO1xuICAgICAgICBpZiAoc2xvdE1ldGFkYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICBzbG90TWV0YWRhdGEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBzbG90TWV0YWRhdGFbcGFyYWxsZWxSb3V0ZUtleV0gPSBjaGlsZFRyZWU7XG4gICAgfVxuICAgIGlmIChzZWVkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAvLyBTcGF3biBhIHRhc2sgdG8gd3JpdGUgdGhlIHNlZ21lbnQgZGF0YSB0byBhIG5ldyBGbGlnaHQgc3RyZWFtLlxuICAgICAgICBzZWdtZW50VGFza3MucHVzaCgvLyBTaW5jZSB3ZSdyZSBhbHJlYWR5IGluIHRoZSBtaWRkbGUgb2YgYSByZW5kZXIsIHdhaXQgdW50aWwgYWZ0ZXIgdGhlXG4gICAgICAgIC8vIGN1cnJlbnQgdGFzayB0byBlc2NhcGUgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGNvbnRleHQuXG4gICAgICAgICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PnJlbmRlclNlZ21lbnRQcmVmZXRjaChidWlsZElkLCBzZWVkRGF0YSwgcmVxdWVzdEtleSwgY2xpZW50TW9kdWxlcykpKTtcbiAgICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgc2VnbWVudCBkb2VzIG5vdCBoYXZlIGFueSBzZWVkIGRhdGEuIFNraXAgZ2VuZXJhdGluZyBhIHByZWZldGNoXG4gICAgLy8gcmVzcG9uc2UgZm9yIGl0LiBXZSdsbCBzdGlsbCBpbmNsdWRlIGl0IGluIHRoZSByb3V0ZSB0cmVlLCB0aG91Z2guXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIGVuY29kZSBpbiB0aGUgcm91dGUgdHJlZSB3aGV0aGVyIGEgc2VnbWVudCBpcyBtaXNzaW5nXG4gICAgLy8gc28gd2UgZG9uJ3QgYXR0ZW1wdCB0byBmZXRjaCBpdCBmb3Igbm8gcmVhc29uLiBBcyBvZiBub3cgdGhpcyBzaG91bGRuJ3RcbiAgICAvLyBldmVyIGhhcHBlbiBpbiBwcmFjdGljZSwgdGhvdWdoLlxuICAgIH1cbiAgICBjb25zdCBzZWdtZW50ID0gcm91dGVbMF07XG4gICAgbGV0IG5hbWU7XG4gICAgbGV0IHBhcmFtVHlwZSA9IG51bGw7XG4gICAgbGV0IHBhcmFtS2V5ID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5hbWUgPSBzZWdtZW50O1xuICAgICAgICBwYXJhbUtleSA9IHNlZ21lbnQ7XG4gICAgICAgIHBhcmFtVHlwZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmFtZSA9IHNlZ21lbnRbMF07XG4gICAgICAgIHBhcmFtS2V5ID0gc2VnbWVudFsxXTtcbiAgICAgICAgcGFyYW1UeXBlID0gc2VnbWVudFsyXTtcbiAgICB9XG4gICAgLy8gTWV0YWRhdGEgYWJvdXQgdGhlIHNlZ21lbnQuIFNlbnQgdG8gdGhlIGNsaWVudCBhcyBwYXJ0IG9mIHRoZVxuICAgIC8vIHRyZWUgcHJlZmV0Y2guXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGFyYW1UeXBlLFxuICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIG9tbWl0dGVkIGZyb20gdGhlIHByZWZldGNoIHJlc3BvbnNlIHdoZW4gY2xpZW50UGFyYW1QYXJzaW5nXG4gICAgICAgIC8vIGlzIGVuYWJsZWQuIFRoZSBmbGFnIG9ubHkgZXhpc3RzIHdoaWxlIHdlJ3JlIHRlc3RpbmcgdGhlIGZlYXR1cmUsIGluXG4gICAgICAgIC8vIGNhc2UgdGhlcmUncyBhIGJ1ZyBhbmQgd2UgbmVlZCB0byByZXZlcnQuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBvbmNlIGNsaWVudFBhcmFtUGFyc2luZyBpcyBlbmFibGVkIGV2ZXJ5d2hlcmUuXG4gICAgICAgIHBhcmFtS2V5OiBpc0NsaWVudFBhcmFtUGFyc2luZ0VuYWJsZWQgPyBudWxsIDogcGFyYW1LZXksXG4gICAgICAgIHNsb3RzOiBzbG90TWV0YWRhdGEsXG4gICAgICAgIGlzUm9vdExheW91dDogcm91dGVbNF0gPT09IHRydWVcbiAgICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyU2VnbWVudFByZWZldGNoKGJ1aWxkSWQsIHNlZWREYXRhLCByZXF1ZXN0S2V5LCBjbGllbnRNb2R1bGVzKSB7XG4gICAgLy8gUmVuZGVyIHRoZSBzZWdtZW50IGRhdGEgdG8gYSBzdHJlYW0uXG4gICAgLy8gSW4gdGhlIGZ1dHVyZSwgdGhpcyBpcyB3aGVyZSB3ZSBjYW4gaW5jbHVkZSBhZGRpdGlvbmFsIG1ldGFkYXRhLCBsaWtlIHRoZVxuICAgIC8vIHN0YWxlIHRpbWUgYW5kIGNhY2hlIHRhZ3MuXG4gICAgY29uc3QgcnNjID0gc2VlZERhdGFbMV07XG4gICAgY29uc3QgbG9hZGluZyA9IHNlZWREYXRhWzNdO1xuICAgIGNvbnN0IHNlZ21lbnRQcmVmZXRjaCA9IHtcbiAgICAgICAgYnVpbGRJZCxcbiAgICAgICAgcnNjLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBpc1BhcnRpYWw6IGF3YWl0IGlzUGFydGlhbFJTQ0RhdGEocnNjLCBjbGllbnRNb2R1bGVzKVxuICAgIH07XG4gICAgLy8gU2luY2UgYWxsIHdlJ3JlIGRvaW5nIGlzIGRlY29kaW5nIGFuZCByZS1lbmNvZGluZyBhIGNhY2hlZCBwcmVyZW5kZXIsIGlmXG4gICAgLy8gaXQgdGFrZXMgbG9uZ2VyIHRoYW4gYSBtaWNyb3Rhc2ssIGl0IG11c3QgYmVjYXVzZSBvZiBoYW5naW5nIHByb21pc2VzXG4gICAgLy8gY2F1c2VkIGJ5IGR5bmFtaWMgZGF0YS4gQWJvcnQgdGhlIHN0cmVhbSBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHRhc2suXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICgwLCBfc2NoZWR1bGVyLndhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKSgpLnRoZW4oKCk9PmFib3J0Q29udHJvbGxlci5hYm9ydCgpKTtcbiAgICBjb25zdCB7IHByZWx1ZGU6IHNlZ21lbnRTdHJlYW0gfSA9IGF3YWl0ICgwLCBfc3RhdGljLnVuc3RhYmxlX3ByZXJlbmRlcikoc2VnbWVudFByZWZldGNoLCBjbGllbnRNb2R1bGVzLCB7XG4gICAgICAgIGZpbHRlclN0YWNrRnJhbWUsXG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25FcnJvcjogb25TZWdtZW50UHJlcmVuZGVyRXJyb3JcbiAgICB9KTtcbiAgICBjb25zdCBzZWdtZW50QnVmZmVyID0gYXdhaXQgKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Ub0J1ZmZlcikoc2VnbWVudFN0cmVhbSk7XG4gICAgaWYgKHJlcXVlc3RLZXkgPT09IF9zZWdtZW50dmFsdWVlbmNvZGluZy5ST09UX1NFR01FTlRfUkVRVUVTVF9LRVkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICcvX2luZGV4JyxcbiAgICAgICAgICAgIHNlZ21lbnRCdWZmZXJcbiAgICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgcmVxdWVzdEtleSxcbiAgICAgICAgICAgIHNlZ21lbnRCdWZmZXJcbiAgICAgICAgXTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBpc1BhcnRpYWxSU0NEYXRhKHJzYywgY2xpZW50TW9kdWxlcykge1xuICAgIC8vIFdlIGNhbiBkZXRlcm1pbmUgaWYgYSBzZWdtZW50IGNvbnRhaW5zIG9ubHkgcGFydGlhbCBkYXRhIGlmIGl0IHRha2VzIGxvbmdlclxuICAgIC8vIHRoYW4gYSB0YXNrIHRvIGVuY29kZSwgYmVjYXVzZSBkeW5hbWljIGRhdGEgaXMgZW5jb2RlZCBhcyBhbiBpbmZpbml0ZVxuICAgIC8vIHByb21pc2UuIFdlIG11c3QgZG8gdGhpcyBpbiBhIHNlcGFyYXRlIEZsaWdodCBwcmVyZW5kZXIgZnJvbSB0aGUgb25lIHRoYXRcbiAgICAvLyBhY3R1YWxseSBnZW5lcmF0ZXMgdGhlIHByZWZldGNoIHN0cmVhbSBiZWNhdXNlIHdlIG5lZWQgdG8gaW5jbHVkZVxuICAgIC8vIGBpc1BhcnRpYWxgIGluIHRoZSBzdHJlYW0gaXRzZWxmLlxuICAgIGxldCBpc1BhcnRpYWwgPSBmYWxzZTtcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCkudGhlbigoKT0+e1xuICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IHlldCBmaW5pc2hlZCB0aGUgb3V0ZXIgdGFzaywgdGhlbiBpdCBtdXN0IGJlIGJlY2F1c2Ugd2VcbiAgICAgICAgLy8gYWNjZXNzZWQgZHluYW1pYyBkYXRhLlxuICAgICAgICBpc1BhcnRpYWwgPSB0cnVlO1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB9KTtcbiAgICBhd2FpdCAoMCwgX3N0YXRpYy51bnN0YWJsZV9wcmVyZW5kZXIpKHJzYywgY2xpZW50TW9kdWxlcywge1xuICAgICAgICBmaWx0ZXJTdGFja0ZyYW1lLFxuICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG9uRXJyb3IgKCkge30sXG4gICAgICAgIG9uUG9zdHBvbmUgKCkge1xuICAgICAgICAgICAgLy8gSWYgc29tZXRoaW5nIHBvc3Rwb25lZCwgaS5lLiB3aGVuIENhY2hlIENvbXBvbmVudHMgaXMgbm90IGVuYWJsZWQsIHdlIGNhblxuICAgICAgICAgICAgLy8gaW5mZXIgdGhhdCB0aGUgUlNDIGRhdGEgaXMgcGFydGlhbC5cbiAgICAgICAgICAgIGlzUGFydGlhbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNQYXJ0aWFsO1xufVxuZnVuY3Rpb24gY3JlYXRlVW5jbG9zaW5nUHJlZmV0Y2hTdHJlYW0ob3JpZ2luYWxGbGlnaHRTdHJlYW0pIHtcbiAgICAvLyBXaGVuIFBQUiBpcyBlbmFibGVkLCBwcmVmZXRjaCBzdHJlYW1zIG1heSBjb250YWluIHJlZmVyZW5jZXMgdGhhdCBuZXZlclxuICAgIC8vIHJlc29sdmUsIGJlY2F1c2UgdGhhdCdzIGhvdyB3ZSBlbmNvZGUgZHluYW1pYyBkYXRhIGFjY2Vzcy4gSW4gdGhlIGRlY29kZWRcbiAgICAvLyBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIEZsaWdodCBjbGllbnQsIHRoZXNlIGFyZSByZWlmaWVkIGludG8gaGFuZ2luZ1xuICAgIC8vIHByb21pc2VzIHRoYXQgc3VzcGVuZCBkdXJpbmcgcmVuZGVyLCB3aGljaCBpcyBlZmZlY3RpdmVseSB3aGF0IHdlIHdhbnQuXG4gICAgLy8gVGhlIFVJIHJlc29sdmVzIHdoZW4gaXQgc3dpdGNoZXMgdG8gdGhlIGR5bmFtaWMgZGF0YSBzdHJlYW1cbiAgICAvLyAodmlhIHVzZURlZmVycmVkVmFsdWUoZHluYW1pYywgc3RhdGljKSkuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB0aGUgRmxpZ2h0IGltcGxlbWVudGF0aW9uIGN1cnJlbnRseSBlcnJvcnMgaWYgdGhlIHNlcnZlciBjbG9zZXNcbiAgICAvLyB0aGUgcmVzcG9uc2UgYmVmb3JlIGFsbCB0aGUgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQuIEFzIGEgY2hlYXQgdG8gd29ya1xuICAgIC8vIGFyb3VuZCB0aGlzLCB3ZSB3cmFwIHRoZSBvcmlnaW5hbCBzdHJlYW0gaW4gYSBuZXcgc3RyZWFtIHRoYXQgbmV2ZXIgY2xvc2VzLFxuICAgIC8vIGFuZCB0aGVyZWZvcmUgZG9lc24ndCBlcnJvci5cbiAgICBjb25zdCByZWFkZXIgPSBvcmlnaW5hbEZsaWdodFN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgYXN5bmMgcHVsbCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgd2hpbGUodHJ1ZSl7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyB0byB0aGUgdGFyZ2V0IHN0cmVhbSBhbmQga2VlcCBjb25zdW1pbmcgdGhlIEZsaWdodCByZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUaGUgc2VydmVyIHN0cmVhbSBoYXMgY2xvc2VkLiBFeGl0LCBidXQgaW50ZW50aW9uYWxseSBkbyBub3QgY2xvc2VcbiAgICAgICAgICAgICAgICAvLyB0aGUgdGFyZ2V0IHN0cmVhbS5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29sbGVjdC1zZWdtZW50LWRhdGEuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/create-error-handler.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createFlightReactServerErrorHandler: function() {\n return createFlightReactServerErrorHandler;\n },\n createHTMLErrorHandler: function() {\n return createHTMLErrorHandler;\n },\n createHTMLReactServerErrorHandler: function() {\n return createHTMLReactServerErrorHandler;\n },\n getDigestForWellKnownError: function() {\n return getDigestForWellKnownError;\n },\n isUserLandError: function() {\n return isUserLandError;\n }\n});\nconst _stringhash = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! next/dist/compiled/string-hash */ \"(rsc)/./node_modules/next/dist/compiled/string-hash/index.js\"));\nconst _formatservererror = __webpack_require__(/*! ../../lib/format-server-error */ \"(rsc)/./node_modules/next/dist/lib/format-server-error.js\");\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _pipereadable = __webpack_require__(/*! ../pipe-readable */ \"(rsc)/./node_modules/next/dist/server/pipe-readable.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../client/components/is-next-router-error */ \"(rsc)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _dynamicrendering = __webpack_require__(/*! ./dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _iserror = __webpack_require__(/*! ../../lib/is-error */ \"(rsc)/./node_modules/next/dist/lib/is-error.js\");\nconst _errortelemetryutils = __webpack_require__(/*! ../../lib/error-telemetry-utils */ \"(rsc)/./node_modules/next/dist/lib/error-telemetry-utils.js\");\nconst _reactlargeshellerror = __webpack_require__(/*! ./react-large-shell-error */ \"(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getDigestForWellKnownError(error) {\n // If we're bailing out to CSR, we don't need to log the error.\n if ((0, _bailouttocsr.isBailoutToCSRError)(error)) return error.digest;\n // If this is a navigation error, we don't need to log the error.\n if ((0, _isnextroutererror.isNextRouterError)(error)) return error.digest;\n // If this error occurs, we know that we should be stopping the static\n // render. This is only thrown in static generation when PPR is not enabled,\n // which causes the whole page to be marked as dynamic. We don't need to\n // tell the user about this error, as it's not actionable.\n if ((0, _hooksservercontext.isDynamicServerError)(error)) return error.digest;\n // If this is a prerender interrupted error, we don't need to log the error.\n if ((0, _dynamicrendering.isPrerenderInterruptedError)(error)) return error.digest;\n return undefined;\n}\nfunction createFlightReactServerErrorHandler(shouldFormatError, onReactServerRenderError) {\n return (thrownValue)=>{\n if (typeof thrownValue === 'string') {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n return (0, _stringhash.default)(thrownValue).toString();\n }\n // If the response was closed, we don't need to log the error.\n if ((0, _pipereadable.isAbortError)(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n const err = (0, _iserror.getProperError)(thrownValue);\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (!err.digest) {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n err.digest = (0, _stringhash.default)(err.message + err.stack || '').toString();\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n (0, _formatservererror.formatServerError)(err);\n }\n // Record exception in an active span, if available.\n const span = (0, _tracer.getTracer)().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: _tracer.SpanStatusCode.ERROR,\n message: err.message\n });\n }\n onReactServerRenderError(err);\n return (0, _errortelemetryutils.createDigestWithErrorCode)(thrownValue, err.digest);\n };\n}\nfunction createHTMLReactServerErrorHandler(shouldFormatError, isNextExport, reactServerErrors, silenceLogger, onReactServerRenderError) {\n return (thrownValue)=>{\n var _err_message;\n if (typeof thrownValue === 'string') {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n return (0, _stringhash.default)(thrownValue).toString();\n }\n // If the response was closed, we don't need to log the error.\n if ((0, _pipereadable.isAbortError)(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n const err = (0, _iserror.getProperError)(thrownValue);\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (!err.digest) {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n err.digest = (0, _stringhash.default)(err.message + (err.stack || '')).toString();\n }\n // @TODO by putting this here and not at the top it is possible that\n // we don't error the build in places we actually expect to\n if (!reactServerErrors.has(err.digest)) {\n reactServerErrors.set(err.digest, err);\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n (0, _formatservererror.formatServerError)(err);\n }\n // Don't log the suppressed error during export\n if (!(isNextExport && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // Record exception in an active span, if available.\n const span = (0, _tracer.getTracer)().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: _tracer.SpanStatusCode.ERROR,\n message: err.message\n });\n }\n if (!silenceLogger) {\n onReactServerRenderError == null ? void 0 : onReactServerRenderError(err);\n }\n }\n return (0, _errortelemetryutils.createDigestWithErrorCode)(thrownValue, err.digest);\n };\n}\nfunction createHTMLErrorHandler(shouldFormatError, isNextExport, reactServerErrors, allCapturedErrors, silenceLogger, onHTMLRenderSSRError) {\n return (thrownValue, errorInfo)=>{\n var _err_message;\n if ((0, _reactlargeshellerror.isReactLargeShellError)(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let isSSRError = true;\n allCapturedErrors.push(thrownValue);\n // If the response was closed, we don't need to log the error.\n if ((0, _pipereadable.isAbortError)(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n const err = (0, _iserror.getProperError)(thrownValue);\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (err.digest) {\n if (reactServerErrors.has(err.digest)) {\n // This error is likely an obfuscated error from react-server.\n // We recover the original error here.\n thrownValue = reactServerErrors.get(err.digest);\n isSSRError = false;\n } else {\n // The error is not from react-server but has a digest\n // from other means so we don't need to produce a new one\n }\n } else {\n err.digest = (0, _stringhash.default)(err.message + ((errorInfo == null ? void 0 : errorInfo.componentStack) || err.stack || '')).toString();\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n (0, _formatservererror.formatServerError)(err);\n }\n // Don't log the suppressed error during export\n if (!(isNextExport && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // Record exception in an active span, if available.\n const span = (0, _tracer.getTracer)().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: _tracer.SpanStatusCode.ERROR,\n message: err.message\n });\n }\n if (!silenceLogger && // HTML errors contain RSC errors as well, filter them out before reporting\n isSSRError) {\n onHTMLRenderSSRError(err, errorInfo);\n }\n }\n return (0, _errortelemetryutils.createDigestWithErrorCode)(thrownValue, err.digest);\n };\n}\nfunction isUserLandError(err) {\n return !(0, _pipereadable.isAbortError)(err) && !(0, _bailouttocsr.isBailoutToCSRError)(err) && !(0, _isnextroutererror.isNextRouterError)(err);\n}\n\n//# sourceMappingURL=create-error-handler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2NyZWF0ZS1lcnJvci1oYW5kbGVyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQU1MO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDJEQUEyRCxtQkFBTyxDQUFDLG9HQUFnQztBQUNuRywyQkFBMkIsbUJBQU8sQ0FBQyxnR0FBK0I7QUFDbEUsZ0JBQWdCLG1CQUFPLENBQUMsc0ZBQXFCO0FBQzdDLHNCQUFzQixtQkFBTyxDQUFDLGdGQUFrQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyw4SEFBOEM7QUFDNUUsNEJBQTRCLG1CQUFPLENBQUMsOEhBQThDO0FBQ2xGLDJCQUEyQixtQkFBTyxDQUFDLDhIQUE4QztBQUNqRiwwQkFBMEIsbUJBQU8sQ0FBQyxrR0FBcUI7QUFDdkQsaUJBQWlCLG1CQUFPLENBQUMsMEVBQW9CO0FBQzdDLDZCQUE2QixtQkFBTyxDQUFDLG9HQUFpQztBQUN0RSw4QkFBOEIsbUJBQU8sQ0FBQyw4R0FBMkI7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcYXBwLXJlbmRlclxcY3JlYXRlLWVycm9yLWhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVGbGlnaHRSZWFjdFNlcnZlckVycm9ySGFuZGxlcjogbnVsbCxcbiAgICBjcmVhdGVIVE1MRXJyb3JIYW5kbGVyOiBudWxsLFxuICAgIGNyZWF0ZUhUTUxSZWFjdFNlcnZlckVycm9ySGFuZGxlcjogbnVsbCxcbiAgICBnZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcjogbnVsbCxcbiAgICBpc1VzZXJMYW5kRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlRmxpZ2h0UmVhY3RTZXJ2ZXJFcnJvckhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRmxpZ2h0UmVhY3RTZXJ2ZXJFcnJvckhhbmRsZXI7XG4gICAgfSxcbiAgICBjcmVhdGVIVE1MRXJyb3JIYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFcnJvckhhbmRsZXI7XG4gICAgfSxcbiAgICBjcmVhdGVIVE1MUmVhY3RTZXJ2ZXJFcnJvckhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlSFRNTFJlYWN0U2VydmVyRXJyb3JIYW5kbGVyO1xuICAgIH0sXG4gICAgZ2V0RGlnZXN0Rm9yV2VsbEtub3duRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0RGlnZXN0Rm9yV2VsbEtub3duRXJyb3I7XG4gICAgfSxcbiAgICBpc1VzZXJMYW5kRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNVc2VyTGFuZEVycm9yO1xuICAgIH1cbn0pO1xuY29uc3QgX3N0cmluZ2hhc2ggPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZy1oYXNoXCIpKTtcbmNvbnN0IF9mb3JtYXRzZXJ2ZXJlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvZm9ybWF0LXNlcnZlci1lcnJvclwiKTtcbmNvbnN0IF90cmFjZXIgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL3RyYWNlclwiKTtcbmNvbnN0IF9waXBlcmVhZGFibGUgPSByZXF1aXJlKFwiLi4vcGlwZS1yZWFkYWJsZVwiKTtcbmNvbnN0IF9iYWlsb3V0dG9jc3IgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3JcIik7XG5jb25zdCBfaG9va3NzZXJ2ZXJjb250ZXh0ID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0XCIpO1xuY29uc3QgX2lzbmV4dHJvdXRlcmVycm9yID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yXCIpO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi9keW5hbWljLXJlbmRlcmluZ1wiKTtcbmNvbnN0IF9pc2Vycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi9pcy1lcnJvclwiKTtcbmNvbnN0IF9lcnJvcnRlbGVtZXRyeXV0aWxzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9lcnJvci10ZWxlbWV0cnktdXRpbHNcIik7XG5jb25zdCBfcmVhY3RsYXJnZXNoZWxsZXJyb3IgPSByZXF1aXJlKFwiLi9yZWFjdC1sYXJnZS1zaGVsbC1lcnJvclwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0RGlnZXN0Rm9yV2VsbEtub3duRXJyb3IoZXJyb3IpIHtcbiAgICAvLyBJZiB3ZSdyZSBiYWlsaW5nIG91dCB0byBDU1IsIHdlIGRvbid0IG5lZWQgdG8gbG9nIHRoZSBlcnJvci5cbiAgICBpZiAoKDAsIF9iYWlsb3V0dG9jc3IuaXNCYWlsb3V0VG9DU1JFcnJvcikoZXJyb3IpKSByZXR1cm4gZXJyb3IuZGlnZXN0O1xuICAgIC8vIElmIHRoaXMgaXMgYSBuYXZpZ2F0aW9uIGVycm9yLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKGVycm9yKSkgcmV0dXJuIGVycm9yLmRpZ2VzdDtcbiAgICAvLyBJZiB0aGlzIGVycm9yIG9jY3Vycywgd2Uga25vdyB0aGF0IHdlIHNob3VsZCBiZSBzdG9wcGluZyB0aGUgc3RhdGljXG4gICAgLy8gcmVuZGVyLiBUaGlzIGlzIG9ubHkgdGhyb3duIGluIHN0YXRpYyBnZW5lcmF0aW9uIHdoZW4gUFBSIGlzIG5vdCBlbmFibGVkLFxuICAgIC8vIHdoaWNoIGNhdXNlcyB0aGUgd2hvbGUgcGFnZSB0byBiZSBtYXJrZWQgYXMgZHluYW1pYy4gV2UgZG9uJ3QgbmVlZCB0b1xuICAgIC8vIHRlbGwgdGhlIHVzZXIgYWJvdXQgdGhpcyBlcnJvciwgYXMgaXQncyBub3QgYWN0aW9uYWJsZS5cbiAgICBpZiAoKDAsIF9ob29rc3NlcnZlcmNvbnRleHQuaXNEeW5hbWljU2VydmVyRXJyb3IpKGVycm9yKSkgcmV0dXJuIGVycm9yLmRpZ2VzdDtcbiAgICAvLyBJZiB0aGlzIGlzIGEgcHJlcmVuZGVyIGludGVycnVwdGVkIGVycm9yLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gICAgaWYgKCgwLCBfZHluYW1pY3JlbmRlcmluZy5pc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IpKGVycm9yKSkgcmV0dXJuIGVycm9yLmRpZ2VzdDtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gY3JlYXRlRmxpZ2h0UmVhY3RTZXJ2ZXJFcnJvckhhbmRsZXIoc2hvdWxkRm9ybWF0RXJyb3IsIG9uUmVhY3RTZXJ2ZXJSZW5kZXJFcnJvcikge1xuICAgIHJldHVybiAodGhyb3duVmFsdWUpPT57XG4gICAgICAgIGlmICh0eXBlb2YgdGhyb3duVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBUT0RPLUFQUDogbG9vayBhdCB1c2luZyB3ZWJjcnlwdG8gaW5zdGVhZC4gUmVxdWlyZXMgYSBwcm9taXNlIHRvIGJlIGF3YWl0ZWQuXG4gICAgICAgICAgICByZXR1cm4gKDAsIF9zdHJpbmdoYXNoLmRlZmF1bHQpKHRocm93blZhbHVlKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSByZXNwb25zZSB3YXMgY2xvc2VkLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gICAgICAgIGlmICgoMCwgX3BpcGVyZWFkYWJsZS5pc0Fib3J0RXJyb3IpKHRocm93blZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBkaWdlc3QgPSBnZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcih0aHJvd25WYWx1ZSk7XG4gICAgICAgIGlmIChkaWdlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBkaWdlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBfcmVhY3RsYXJnZXNoZWxsZXJyb3IuaXNSZWFjdExhcmdlU2hlbGxFcnJvcikodGhyb3duVmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBBZ2dyZWdhdGVcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IodGhyb3duVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnIgPSAoMCwgX2lzZXJyb3IuZ2V0UHJvcGVyRXJyb3IpKHRocm93blZhbHVlKTtcbiAgICAgICAgLy8gSWYgdGhlIGVycm9yIGFscmVhZHkgaGFzIGEgZGlnZXN0LCByZXNwZWN0IHRoZSBvcmlnaW5hbCBkaWdlc3QsXG4gICAgICAgIC8vIHNvIGl0IHdvbid0IGdldCByZS1nZW5lcmF0ZWQgaW50byBhbm90aGVyIG5ldyBlcnJvci5cbiAgICAgICAgaWYgKCFlcnIuZGlnZXN0KSB7XG4gICAgICAgICAgICAvLyBUT0RPLUFQUDogbG9vayBhdCB1c2luZyB3ZWJjcnlwdG8gaW5zdGVhZC4gUmVxdWlyZXMgYSBwcm9taXNlIHRvIGJlIGF3YWl0ZWQuXG4gICAgICAgICAgICBlcnIuZGlnZXN0ID0gKDAsIF9zdHJpbmdoYXNoLmRlZmF1bHQpKGVyci5tZXNzYWdlICsgZXJyLnN0YWNrIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCBzZXJ2ZXIgZXJyb3JzIGluIGRldmVsb3BtZW50IHRvIGFkZCBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZXNcbiAgICAgICAgaWYgKHNob3VsZEZvcm1hdEVycm9yKSB7XG4gICAgICAgICAgICAoMCwgX2Zvcm1hdHNlcnZlcmVycm9yLmZvcm1hdFNlcnZlckVycm9yKShlcnIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY29yZCBleGNlcHRpb24gaW4gYW4gYWN0aXZlIHNwYW4sIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgY29uc3Qgc3BhbiA9ICgwLCBfdHJhY2VyLmdldFRyYWNlcikoKS5nZXRBY3RpdmVTY29wZVNwYW4oKTtcbiAgICAgICAgaWYgKHNwYW4pIHtcbiAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycik7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXJyb3IudHlwZScsIGVyci5uYW1lKTtcbiAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBfdHJhY2VyLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBvblJlYWN0U2VydmVyUmVuZGVyRXJyb3IoZXJyKTtcbiAgICAgICAgcmV0dXJuICgwLCBfZXJyb3J0ZWxlbWV0cnl1dGlscy5jcmVhdGVEaWdlc3RXaXRoRXJyb3JDb2RlKSh0aHJvd25WYWx1ZSwgZXJyLmRpZ2VzdCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUhUTUxSZWFjdFNlcnZlckVycm9ySGFuZGxlcihzaG91bGRGb3JtYXRFcnJvciwgaXNOZXh0RXhwb3J0LCByZWFjdFNlcnZlckVycm9ycywgc2lsZW5jZUxvZ2dlciwgb25SZWFjdFNlcnZlclJlbmRlckVycm9yKSB7XG4gICAgcmV0dXJuICh0aHJvd25WYWx1ZSk9PntcbiAgICAgICAgdmFyIF9lcnJfbWVzc2FnZTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aHJvd25WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIFRPRE8tQVBQOiBsb29rIGF0IHVzaW5nIHdlYmNyeXB0byBpbnN0ZWFkLiBSZXF1aXJlcyBhIHByb21pc2UgdG8gYmUgYXdhaXRlZC5cbiAgICAgICAgICAgIHJldHVybiAoMCwgX3N0cmluZ2hhc2guZGVmYXVsdCkodGhyb3duVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIHdhcyBjbG9zZWQsIHdlIGRvbid0IG5lZWQgdG8gbG9nIHRoZSBlcnJvci5cbiAgICAgICAgaWYgKCgwLCBfcGlwZXJlYWRhYmxlLmlzQWJvcnRFcnJvcikodGhyb3duVmFsdWUpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGRpZ2VzdCA9IGdldERpZ2VzdEZvcldlbGxLbm93bkVycm9yKHRocm93blZhbHVlKTtcbiAgICAgICAgaWYgKGRpZ2VzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpZ2VzdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIF9yZWFjdGxhcmdlc2hlbGxlcnJvci5pc1JlYWN0TGFyZ2VTaGVsbEVycm9yKSh0aHJvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IEFnZ3JlZ2F0ZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aHJvd25WYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVyciA9ICgwLCBfaXNlcnJvci5nZXRQcm9wZXJFcnJvcikodGhyb3duVmFsdWUpO1xuICAgICAgICAvLyBJZiB0aGUgZXJyb3IgYWxyZWFkeSBoYXMgYSBkaWdlc3QsIHJlc3BlY3QgdGhlIG9yaWdpbmFsIGRpZ2VzdCxcbiAgICAgICAgLy8gc28gaXQgd29uJ3QgZ2V0IHJlLWdlbmVyYXRlZCBpbnRvIGFub3RoZXIgbmV3IGVycm9yLlxuICAgICAgICBpZiAoIWVyci5kaWdlc3QpIHtcbiAgICAgICAgICAgIC8vIFRPRE8tQVBQOiBsb29rIGF0IHVzaW5nIHdlYmNyeXB0byBpbnN0ZWFkLiBSZXF1aXJlcyBhIHByb21pc2UgdG8gYmUgYXdhaXRlZC5cbiAgICAgICAgICAgIGVyci5kaWdlc3QgPSAoMCwgX3N0cmluZ2hhc2guZGVmYXVsdCkoZXJyLm1lc3NhZ2UgKyAoZXJyLnN0YWNrIHx8ICcnKSkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAVE9ETyBieSBwdXR0aW5nIHRoaXMgaGVyZSBhbmQgbm90IGF0IHRoZSB0b3AgaXQgaXMgcG9zc2libGUgdGhhdFxuICAgICAgICAvLyB3ZSBkb24ndCBlcnJvciB0aGUgYnVpbGQgaW4gcGxhY2VzIHdlIGFjdHVhbGx5IGV4cGVjdCB0b1xuICAgICAgICBpZiAoIXJlYWN0U2VydmVyRXJyb3JzLmhhcyhlcnIuZGlnZXN0KSkge1xuICAgICAgICAgICAgcmVhY3RTZXJ2ZXJFcnJvcnMuc2V0KGVyci5kaWdlc3QsIGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHNlcnZlciBlcnJvcnMgaW4gZGV2ZWxvcG1lbnQgdG8gYWRkIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlc1xuICAgICAgICBpZiAoc2hvdWxkRm9ybWF0RXJyb3IpIHtcbiAgICAgICAgICAgICgwLCBfZm9ybWF0c2VydmVyZXJyb3IuZm9ybWF0U2VydmVyRXJyb3IpKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG9uJ3QgbG9nIHRoZSBzdXBwcmVzc2VkIGVycm9yIGR1cmluZyBleHBvcnRcbiAgICAgICAgaWYgKCEoaXNOZXh0RXhwb3J0ICYmIChlcnIgPT0gbnVsbCA/IHZvaWQgMCA6IChfZXJyX21lc3NhZ2UgPSBlcnIubWVzc2FnZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lcnJfbWVzc2FnZS5pbmNsdWRlcygnVGhlIHNwZWNpZmljIG1lc3NhZ2UgaXMgb21pdHRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyB0byBhdm9pZCBsZWFraW5nIHNlbnNpdGl2ZSBkZXRhaWxzLicpKSkpIHtcbiAgICAgICAgICAgIC8vIFJlY29yZCBleGNlcHRpb24gaW4gYW4gYWN0aXZlIHNwYW4sIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgICAgIGNvbnN0IHNwYW4gPSAoMCwgX3RyYWNlci5nZXRUcmFjZXIpKCkuZ2V0QWN0aXZlU2NvcGVTcGFuKCk7XG4gICAgICAgICAgICBpZiAoc3Bhbikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycik7XG4gICAgICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnR5cGUnLCBlcnIubmFtZSk7XG4gICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBfdHJhY2VyLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzaWxlbmNlTG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgb25SZWFjdFNlcnZlclJlbmRlckVycm9yID09IG51bGwgPyB2b2lkIDAgOiBvblJlYWN0U2VydmVyUmVuZGVyRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIF9lcnJvcnRlbGVtZXRyeXV0aWxzLmNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGUpKHRocm93blZhbHVlLCBlcnIuZGlnZXN0KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlSFRNTEVycm9ySGFuZGxlcihzaG91bGRGb3JtYXRFcnJvciwgaXNOZXh0RXhwb3J0LCByZWFjdFNlcnZlckVycm9ycywgYWxsQ2FwdHVyZWRFcnJvcnMsIHNpbGVuY2VMb2dnZXIsIG9uSFRNTFJlbmRlclNTUkVycm9yKSB7XG4gICAgcmV0dXJuICh0aHJvd25WYWx1ZSwgZXJyb3JJbmZvKT0+e1xuICAgICAgICB2YXIgX2Vycl9tZXNzYWdlO1xuICAgICAgICBpZiAoKDAsIF9yZWFjdGxhcmdlc2hlbGxlcnJvci5pc1JlYWN0TGFyZ2VTaGVsbEVycm9yKSh0aHJvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IEFnZ3JlZ2F0ZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aHJvd25WYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpc1NTUkVycm9yID0gdHJ1ZTtcbiAgICAgICAgYWxsQ2FwdHVyZWRFcnJvcnMucHVzaCh0aHJvd25WYWx1ZSk7XG4gICAgICAgIC8vIElmIHRoZSByZXNwb25zZSB3YXMgY2xvc2VkLCB3ZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgZXJyb3IuXG4gICAgICAgIGlmICgoMCwgX3BpcGVyZWFkYWJsZS5pc0Fib3J0RXJyb3IpKHRocm93blZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBkaWdlc3QgPSBnZXREaWdlc3RGb3JXZWxsS25vd25FcnJvcih0aHJvd25WYWx1ZSk7XG4gICAgICAgIGlmIChkaWdlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBkaWdlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyID0gKDAsIF9pc2Vycm9yLmdldFByb3BlckVycm9yKSh0aHJvd25WYWx1ZSk7XG4gICAgICAgIC8vIElmIHRoZSBlcnJvciBhbHJlYWR5IGhhcyBhIGRpZ2VzdCwgcmVzcGVjdCB0aGUgb3JpZ2luYWwgZGlnZXN0LFxuICAgICAgICAvLyBzbyBpdCB3b24ndCBnZXQgcmUtZ2VuZXJhdGVkIGludG8gYW5vdGhlciBuZXcgZXJyb3IuXG4gICAgICAgIGlmIChlcnIuZGlnZXN0KSB7XG4gICAgICAgICAgICBpZiAocmVhY3RTZXJ2ZXJFcnJvcnMuaGFzKGVyci5kaWdlc3QpKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBlcnJvciBpcyBsaWtlbHkgYW4gb2JmdXNjYXRlZCBlcnJvciBmcm9tIHJlYWN0LXNlcnZlci5cbiAgICAgICAgICAgICAgICAvLyBXZSByZWNvdmVyIHRoZSBvcmlnaW5hbCBlcnJvciBoZXJlLlxuICAgICAgICAgICAgICAgIHRocm93blZhbHVlID0gcmVhY3RTZXJ2ZXJFcnJvcnMuZ2V0KGVyci5kaWdlc3QpO1xuICAgICAgICAgICAgICAgIGlzU1NSRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgZXJyb3IgaXMgbm90IGZyb20gcmVhY3Qtc2VydmVyIGJ1dCBoYXMgYSBkaWdlc3RcbiAgICAgICAgICAgIC8vIGZyb20gb3RoZXIgbWVhbnMgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm9kdWNlIGEgbmV3IG9uZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyLmRpZ2VzdCA9ICgwLCBfc3RyaW5naGFzaC5kZWZhdWx0KShlcnIubWVzc2FnZSArICgoZXJyb3JJbmZvID09IG51bGwgPyB2b2lkIDAgOiBlcnJvckluZm8uY29tcG9uZW50U3RhY2spIHx8IGVyci5zdGFjayB8fCAnJykpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9ybWF0IHNlcnZlciBlcnJvcnMgaW4gZGV2ZWxvcG1lbnQgdG8gYWRkIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlc1xuICAgICAgICBpZiAoc2hvdWxkRm9ybWF0RXJyb3IpIHtcbiAgICAgICAgICAgICgwLCBfZm9ybWF0c2VydmVyZXJyb3IuZm9ybWF0U2VydmVyRXJyb3IpKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG9uJ3QgbG9nIHRoZSBzdXBwcmVzc2VkIGVycm9yIGR1cmluZyBleHBvcnRcbiAgICAgICAgaWYgKCEoaXNOZXh0RXhwb3J0ICYmIChlcnIgPT0gbnVsbCA/IHZvaWQgMCA6IChfZXJyX21lc3NhZ2UgPSBlcnIubWVzc2FnZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lcnJfbWVzc2FnZS5pbmNsdWRlcygnVGhlIHNwZWNpZmljIG1lc3NhZ2UgaXMgb21pdHRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyB0byBhdm9pZCBsZWFraW5nIHNlbnNpdGl2ZSBkZXRhaWxzLicpKSkpIHtcbiAgICAgICAgICAgIC8vIFJlY29yZCBleGNlcHRpb24gaW4gYW4gYWN0aXZlIHNwYW4sIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgICAgIGNvbnN0IHNwYW4gPSAoMCwgX3RyYWNlci5nZXRUcmFjZXIpKCkuZ2V0QWN0aXZlU2NvcGVTcGFuKCk7XG4gICAgICAgICAgICBpZiAoc3Bhbikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycik7XG4gICAgICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnR5cGUnLCBlcnIubmFtZSk7XG4gICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBfdHJhY2VyLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzaWxlbmNlTG9nZ2VyICYmIC8vIEhUTUwgZXJyb3JzIGNvbnRhaW4gUlNDIGVycm9ycyBhcyB3ZWxsLCBmaWx0ZXIgdGhlbSBvdXQgYmVmb3JlIHJlcG9ydGluZ1xuICAgICAgICAgICAgaXNTU1JFcnJvcikge1xuICAgICAgICAgICAgICAgIG9uSFRNTFJlbmRlclNTUkVycm9yKGVyciwgZXJyb3JJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIF9lcnJvcnRlbGVtZXRyeXV0aWxzLmNyZWF0ZURpZ2VzdFdpdGhFcnJvckNvZGUpKHRocm93blZhbHVlLCBlcnIuZGlnZXN0KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gaXNVc2VyTGFuZEVycm9yKGVycikge1xuICAgIHJldHVybiAhKDAsIF9waXBlcmVhZGFibGUuaXNBYm9ydEVycm9yKShlcnIpICYmICEoMCwgX2JhaWxvdXR0b2Nzci5pc0JhaWxvdXRUb0NTUkVycm9yKShlcnIpICYmICEoMCwgX2lzbmV4dHJvdXRlcmVycm9yLmlzTmV4dFJvdXRlckVycm9yKShlcnIpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtZXJyb3ItaGFuZGxlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/create-error-handler.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/dynamic-rendering.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Postpone: function() {\n return Postpone;\n },\n PreludeState: function() {\n return PreludeState;\n },\n abortAndThrowOnSynchronousRequestDataAccess: function() {\n return abortAndThrowOnSynchronousRequestDataAccess;\n },\n abortOnSynchronousPlatformIOAccess: function() {\n return abortOnSynchronousPlatformIOAccess;\n },\n accessedDynamicData: function() {\n return accessedDynamicData;\n },\n annotateDynamicAccess: function() {\n return annotateDynamicAccess;\n },\n consumeDynamicAccess: function() {\n return consumeDynamicAccess;\n },\n createDynamicTrackingState: function() {\n return createDynamicTrackingState;\n },\n createDynamicValidationState: function() {\n return createDynamicValidationState;\n },\n createHangingInputAbortSignal: function() {\n return createHangingInputAbortSignal;\n },\n createRenderInBrowserAbortSignal: function() {\n return createRenderInBrowserAbortSignal;\n },\n delayUntilRuntimeStage: function() {\n return delayUntilRuntimeStage;\n },\n formatDynamicAPIAccesses: function() {\n return formatDynamicAPIAccesses;\n },\n getFirstDynamicReason: function() {\n return getFirstDynamicReason;\n },\n isDynamicPostpone: function() {\n return isDynamicPostpone;\n },\n isPrerenderInterruptedError: function() {\n return isPrerenderInterruptedError;\n },\n logDisallowedDynamicError: function() {\n return logDisallowedDynamicError;\n },\n markCurrentScopeAsDynamic: function() {\n return markCurrentScopeAsDynamic;\n },\n postponeWithTracking: function() {\n return postponeWithTracking;\n },\n throwIfDisallowedDynamic: function() {\n return throwIfDisallowedDynamic;\n },\n throwToInterruptStaticGeneration: function() {\n return throwToInterruptStaticGeneration;\n },\n trackAllowedDynamicAccess: function() {\n return trackAllowedDynamicAccess;\n },\n trackDynamicDataInDynamicRender: function() {\n return trackDynamicDataInDynamicRender;\n },\n trackSynchronousPlatformIOAccessInDev: function() {\n return trackSynchronousPlatformIOAccessInDev;\n },\n trackSynchronousRequestDataAccessInDev: function() {\n return trackSynchronousRequestDataAccessInDev;\n },\n useDynamicRouteParams: function() {\n return useDynamicRouteParams;\n },\n warnOnSyncDynamicError: function() {\n return warnOnSyncDynamicError;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _boundaryconstants = __webpack_require__(/*! ../../lib/framework/boundary-constants */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst hasPostpone = typeof _react.default.unstable_postpone === 'function';\nfunction createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null\n };\n}\nfunction createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nfunction getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\nfunction markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E553\",\n enumerable: false,\n configurable: true\n });\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-ppr':\n return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking);\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E550\",\n enumerable: false,\n configurable: true\n });\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E558\",\n enumerable: false,\n configurable: true\n });\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\nfunction trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n}\nfunction trackSynchronousPlatformIOAccessInDev(requestStore) {\n // We don't actually have a controller to abort but we do the semantic equivalent by\n // advancing the request store out of prerender mode\n requestStore.prerenderPhase = false;\n}\nfunction abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nfunction warnOnSyncDynamicError(dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack) {\n // the server did something sync dynamic, likely\n // leading to an early termination of the prerender.\n console.error(dynamicTracking.syncDynamicErrorWithStack);\n }\n}\nconst trackSynchronousRequestDataAccessInDev = trackSynchronousPlatformIOAccessInDev;\nfunction Postpone({ reason, route }) {\n const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\n postponeWithTracking(route, reason, dynamicTracking);\n}\nfunction postponeWithTracking(route, expression, dynamicTracking) {\n assertPostpone();\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n _react.default.unstable_postpone(createPostponeReason(route, expression));\n}\nfunction createPostponeReason(route, expression) {\n return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;\n}\nfunction isDynamicPostpone(err) {\n if (typeof err === 'object' && err !== null && typeof err.message === 'string') {\n return isDynamicPostponeReason(err.message);\n }\n return false;\n}\nfunction isDynamicPostponeReason(reason) {\n return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error');\n}\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E296\",\n enumerable: false,\n configurable: true\n });\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nfunction isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nfunction accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nfunction consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nfunction formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n') // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' ()')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E224\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction createRenderInBrowserAbortSignal() {\n const controller = new AbortController();\n controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), \"__NEXT_ERROR_CODE\", {\n value: \"E721\",\n enumerable: false,\n configurable: true\n }));\n return controller.signal;\n}\nfunction createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = (0, _workunitasyncstorageexternal.getRuntimeStagePromise)(workUnitStore);\n if (runtimeStagePromise) {\n runtimeStagePromise.then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort()));\n } else {\n (0, _scheduler.scheduleOnNextTick)(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined;\n default:\n workUnitStore;\n }\n}\nfunction annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction useDynamicRouteParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workStore && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-client':\n case 'prerender':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E771\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense ()\n// at __next_root_layout_boundary__ ()\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense ()\n// at SomeComponent ()\n// at __next_root_layout_boundary__ ()\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nfunction trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a \"use cache\" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */ function createErrorWithComponentOrOwnerStack(message, componentStack) {\n const ownerStack = true && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null;\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = error.name + ': ' + message + (ownerStack ?? componentStack);\n return error;\n}\nvar PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nfunction logDisallowedDynamicError(workStore, error) {\n console.error(error);\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`);\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`);\n }\n }\n}\nfunction throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) {\n if (prelude !== 0) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return;\n }\n if (serverDynamic.syncDynamicErrorWithStack) {\n // There is no shell and the server did something sync dynamic likely\n // leading to an early termination of the prerender before the shell\n // could be completed. We terminate the build/validating render.\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(`Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n } else {\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(`Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n }\n}\nfunction delayUntilRuntimeStage(prerenderStore, result) {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(()=>result);\n }\n return result;\n} //# sourceMappingURL=dynamic-rendering.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQzs7Ozs7Ozs7Ozs7O0lBNlZlQSxRQUFRO2VBQVJBOztJQTRYSkMsWUFBWTtlQUFaQTs7SUFwYklDLDJDQUEyQztlQUEzQ0E7O0lBckNBQyxrQ0FBa0M7ZUFBbENBOztJQXVMQUMsbUJBQW1CO2VBQW5CQTs7SUFrSUFDLHFCQUFxQjtlQUFyQkE7O0lBNUhBQyxvQkFBb0I7ZUFBcEJBOztJQXJYQUMsMEJBQTBCO2VBQTFCQTs7SUFVQUMsNEJBQTRCO2VBQTVCQTs7SUFtYkFDLDZCQUE2QjtlQUE3QkE7O0lBWEFDLGdDQUFnQztlQUFoQ0E7O0lBOFRBQyxzQkFBc0I7ZUFBdEJBOztJQWhYQUMsd0JBQXdCO2VBQXhCQTs7SUE1V0FDLHFCQUFxQjtlQUFyQkE7O0lBc1NBQyxpQkFBaUI7ZUFBakJBOztJQXdDQUMsMkJBQTJCO2VBQTNCQTs7SUFxVEFDLHlCQUF5QjtlQUF6QkE7O0lBdG5CQUMseUJBQXlCO2VBQXpCQTs7SUE2UEFDLG9CQUFvQjtlQUFwQkE7O0lBNFlBQyx3QkFBd0I7ZUFBeEJBOztJQS9qQkFDLGdDQUFnQztlQUFoQ0E7O0lBdWVBQyx5QkFBeUI7ZUFBekJBOztJQTljQUMsK0JBQStCO2VBQS9CQTs7SUF1RUFDLHFDQUFxQztlQUFyQ0E7O0lBZ0VIQyxzQ0FBc0M7ZUFBdENBOztJQXFQR0MscUJBQXFCO2VBQXJCQTs7SUE5UEFDLHNCQUFzQjtlQUF0QkE7OzswRUE5VEU7Z0RBRWlCO3FEQUNHOzBEQUkvQjtzREFDMEI7bURBQ0U7K0NBTTVCO3VDQUM0QjswQ0FDRDs0Q0FDSDs7Ozs7O0FBRS9CLE1BQU1DLGNBQWMsT0FBT0MsT0FBQUEsT0FBSyxDQUFDQyxpQkFBaUIsS0FBSztBQXdDaEQsU0FBU3RCLDJCQUNkdUIsc0JBQTJDO0lBRTNDLE9BQU87UUFD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XHNyY1xcc2VydmVyXFxhcHAtcmVuZGVyXFxkeW5hbWljLXJlbmRlcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgY2VydGFpbiBwcm9wZXJ0aWVzXG4gKiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29kZSBzbyB0aGF0IE5leHQuanMgY2FuIG1ha2UgZGVjaXNpb25zIG9uIGhvdyB0byBoYW5kbGVcbiAqIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBpbiBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIHN1Y2ggYXMgcHJlLXJlbmRlcmluZywgcmVzdW1pbmcsIGFuZCBTU1IuXG4gKlxuICogVG9kYXkgTmV4dC5qcyB0cmVhdHMgYWxsIGNvZGUgYXMgcG90ZW50aWFsbHkgc3RhdGljLiBDZXJ0YWluIEFQSXMgbWF5IG9ubHkgbWFrZSBzZW5zZSB3aGVuIGR5bmFtaWNhbGx5IHJlbmRlcmluZy5cbiAqIFRyYWRpdGlvbmFsbHkgdGhpcyBtZWFudCBkZW9wdGluZyB0aGUgZW50aXJlIHJlbmRlciB0byBkeW5hbWljIGhvd2V2ZXIgd2l0aCBQUFIgd2UgY2FuIG5vdyBkZW9wdCBwYXJ0c1xuICogb2YgYSBSZWFjdCB0cmVlIGFzIGR5bmFtaWMgd2hpbGUgc3RpbGwga2VlcGluZyBvdGhlciBwYXJ0cyBzdGF0aWMuIFRoZXJlIGFyZSByZWFsbHkgdHdvIGRpZmZlcmVudCBraW5kcyBvZlxuICogRHluYW1pYyBpbmRpY2F0aW9ucy5cbiAqXG4gKiBUaGUgZmlyc3QgaXMgc2ltcGx5IGFuIGludGVudGlvbiB0byBiZSBkeW5hbWljLiB1bnN0YWJsZV9ub1N0b3JlIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyB3aGVyZVxuICogdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSBzaW1wbHkgZGVjbGFyZXMgdGhhdCB0aGUgY3VycmVudCBzY29wZSBpcyBkeW5hbWljIGJ1dCBpZiB5b3UgdXNlIGl0XG4gKiBpbnNpZGUgdW5zdGFibGVfY2FjaGUgaXQgY2FuIHN0aWxsIGJlIGNhY2hlZC4gVGhpcyB0eXBlIG9mIGluZGljYXRpb24gY2FuIGJlIHJlbW92ZWQgaWYgd2UgZXZlclxuICogbWFrZSB0aGUgZGVmYXVsdCBkeW5hbWljIHRvIGJlZ2luIHdpdGggYmVjYXVzZSB0aGUgb25seSB3YXkgeW91IHdvdWxkIGV2ZXIgYmUgc3RhdGljIGlzIGluc2lkZVxuICogYSBjYWNoZSBzY29wZSB3aGljaCB0aGlzIGluZGljYXRpb24gZG9lcyBub3QgYWZmZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IGEgZHluYW1pYyBkYXRhIHNvdXJjZSB3YXMgcmVhZC4gVGhpcyBpcyBhIHN0cm9uZ2VyIGZvcm0gb2YgZHluYW1pY1xuICogYmVjYXVzZSBpdCBtZWFucyB0aGF0IGl0IGlzIGluYXBwcm9wcmlhdGUgdG8gY2FjaGUgdGhpcyBhdCBhbGwuIHVzaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBpbnNpZGVcbiAqIHVuc3RhYmxlX2NhY2hlIHNob3VsZCBlcnJvci4gSWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgZHluYW1pYyBkYXRhIGluc2lkZSB1bnN0YWJsZV9jYWNoZSB5b3Ugc2hvdWxkXG4gKiByZWFkIHRoYXQgZGF0YSBvdXRzaWRlIHRoZSBjYWNoZSBhbmQgcGFzcyBpdCBpbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLlxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya1N0b3JlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7XG4gIFdvcmtVbml0U3RvcmUsXG4gIFJlcXVlc3RTdG9yZSxcbiAgUHJlcmVuZGVyU3RvcmVMZWdhY3ksXG4gIFByZXJlbmRlclN0b3JlTW9kZXJuLFxuICBQcmVyZW5kZXJTdG9yZU1vZGVyblJ1bnRpbWUsXG59IGZyb20gJy4uL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5cbi8vIE9uY2UgcG9zdHBvbmUgaXMgaW4gc3RhYmxlIHdlIHNob3VsZCBzd2l0Y2ggdG8gaW1wb3J0aW5nIHRoZSBwb3N0cG9uZSBleHBvcnQgZGlyZWN0bHlcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgRHluYW1pY1NlcnZlckVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHQnXG5pbXBvcnQgeyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0J1xuaW1wb3J0IHtcbiAgZ2V0UnVudGltZVN0YWdlUHJvbWlzZSxcbiAgd29ya1VuaXRBc3luY1N0b3JhZ2UsXG59IGZyb20gJy4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyB3b3JrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyBtYWtlSGFuZ2luZ1Byb21pc2UgfSBmcm9tICcuLi9keW5hbWljLXJlbmRlcmluZy11dGlscydcbmltcG9ydCB7XG4gIE1FVEFEQVRBX0JPVU5EQVJZX05BTUUsXG4gIFZJRVdQT1JUX0JPVU5EQVJZX05BTUUsXG4gIE9VVExFVF9CT1VOREFSWV9OQU1FLFxuICBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FLFxufSBmcm9tICcuLi8uLi9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbnN0YW50cydcbmltcG9ydCB7IHNjaGVkdWxlT25OZXh0VGljayB9IGZyb20gJy4uLy4uL2xpYi9zY2hlZHVsZXInXG5pbXBvcnQgeyBCYWlsb3V0VG9DU1JFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyJ1xuaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvcidcblxuY29uc3QgaGFzUG9zdHBvbmUgPSB0eXBlb2YgUmVhY3QudW5zdGFibGVfcG9zdHBvbmUgPT09ICdmdW5jdGlvbidcblxuZXhwb3J0IHR5cGUgRHluYW1pY0FjY2VzcyA9IHtcbiAgLyoqXG4gICAqIElmIGRlYnVnZ2luZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIHN0YWNrIHRyYWNlIG9mIHdoZXJlIHRoZSBkeW5hbWljIGFjY2Vzc1xuICAgKiBvY2N1cnJlZC4gVGhpcyBpcyB1c2VkIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiB0byB0aGUgdXNlciBhYm91dCB3aHlcbiAgICogdGhlaXIgcGFnZSBpcyBiZWluZyByZW5kZXJlZCBkeW5hbWljYWxseS5cbiAgICovXG4gIHN0YWNrPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBleHByZXNzaW9uIHRoYXQgd2FzIGFjY2Vzc2VkIGR5bmFtaWNhbGx5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogc3RyaW5nXG59XG5cbi8vIFN0b3JlcyBkeW5hbWljIHJlYXNvbnMgdXNlZCBkdXJpbmcgYW4gUlNDIHJlbmRlci5cbmV4cG9ydCB0eXBlIER5bmFtaWNUcmFja2luZ1N0YXRlID0ge1xuICAvKipcbiAgICogV2hlbiB0cnVlLCBzdGFjayBpbmZvcm1hdGlvbiB3aWxsIGFsc28gYmUgdHJhY2tlZCBkdXJpbmcgZHluYW1pYyBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzOiBib29sZWFuIHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIFRoZSBkeW5hbWljIGFjY2Vzc2VzIHRoYXQgb2NjdXJyZWQgZHVyaW5nIHRoZSByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG5cbiAgc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjazogbnVsbCB8IEVycm9yXG59XG5cbi8vIFN0b3JlcyBkeW5hbWljIHJlYXNvbnMgdXNlZCBkdXJpbmcgYW4gU1NSIHJlbmRlci5cbmV4cG9ydCB0eXBlIER5bmFtaWNWYWxpZGF0aW9uU3RhdGUgPSB7XG4gIGhhc1N1c3BlbnNlQWJvdmVCb2R5OiBib29sZWFuXG4gIGhhc0R5bmFtaWNNZXRhZGF0YTogYm9vbGVhblxuICBoYXNEeW5hbWljVmlld3BvcnQ6IGJvb2xlYW5cbiAgaGFzQWxsb3dlZER5bmFtaWM6IGJvb2xlYW5cbiAgZHluYW1pY0Vycm9yczogQXJyYXk8RXJyb3I+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljVHJhY2tpbmdTdGF0ZShcbiAgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlczogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogRHluYW1pY1RyYWNraW5nU3RhdGUge1xuICByZXR1cm4ge1xuICAgIGlzRGVidWdEeW5hbWljQWNjZXNzZXMsXG4gICAgZHluYW1pY0FjY2Vzc2VzOiBbXSxcbiAgICBzeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrOiBudWxsLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljVmFsaWRhdGlvblN0YXRlKCk6IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUge1xuICByZXR1cm4ge1xuICAgIGhhc1N1c3BlbnNlQWJvdmVCb2R5OiBmYWxzZSxcbiAgICBoYXNEeW5hbWljTWV0YWRhdGE6IGZhbHNlLFxuICAgIGhhc0R5bmFtaWNWaWV3cG9ydDogZmFsc2UsXG4gICAgaGFzQWxsb3dlZER5bmFtaWM6IGZhbHNlLFxuICAgIGR5bmFtaWNFcnJvcnM6IFtdLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJzdER5bmFtaWNSZWFzb24oXG4gIHRyYWNraW5nU3RhdGU6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiB1bmRlZmluZWQgfCBzdHJpbmcge1xuICByZXR1cm4gdHJhY2tpbmdTdGF0ZS5keW5hbWljQWNjZXNzZXNbMF0/LmV4cHJlc3Npb25cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB0aGF0IHRoZSBjdXJyZW50IHNjb3BlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGR5bmFtaWMuXG4gKlxuICogSW4gbW9zdCBjYXNlcyB0aGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgYnV0IGlmIGNhbGxlZCBkdXJpbmdcbiAqIGEgUFBSIHByZXJlbmRlciBpdCB3aWxsIHBvc3Rwb25lIHRoZSBjdXJyZW50IHN1Yi10cmVlIGFuZCBjYWxsaW5nXG4gKiBpdCBkdXJpbmcgYSBub3JtYWwgcHJlcmVuZGVyIHdpbGwgY2F1c2UgdGhlIGVudGlyZSBwcmVyZW5kZXIgdG8gYWJvcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMoXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHdvcmtVbml0U3RvcmU6IHVuZGVmaW5lZCB8IEV4Y2x1ZGU8V29ya1VuaXRTdG9yZSwgUHJlcmVuZGVyU3RvcmVNb2Rlcm4+LFxuICBleHByZXNzaW9uOiBzdHJpbmdcbik6IHZvaWQge1xuICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdjYWNoZSc6XG4gICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgIC8vIEluc2lkZSBjYWNoZSBzY29wZXMsIG1hcmtpbmcgYSBzY29wZSBhcyBkeW5hbWljIGhhcyBubyBlZmZlY3QsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIG91dGVyIGNhY2hlIHNjb3BlIGNyZWF0ZXMgYSBjYWNoZSBib3VuZGFyeS4gVGhpcyBpc1xuICAgICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAgIC8vIGZvcmJpZGRlbiBpbnNpZGUgYSBjYWNoZSBzY29wZS5cbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgLy8gQSBwcml2YXRlIGNhY2hlIHNjb3BlIGlzIGFscmVhZHkgZHluYW1pYyBieSBkZWZpbml0aW9uLlxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZyBkeW5hbWljIHJlbmRlcmluZyBvciB3ZSdyZSBmb3JjaW5nIHN0YXRpYyByZW5kZXJpbmcsIHdlXG4gIC8vIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIHRoZSBlbnRpcmUgcGFnZSBpcyBhbHJlYWR5IGR5bmFtaWNcbiAgLy8gb3IgaXQncyBzdGF0aWMgYW5kIGl0IHNob3VsZCBub3QgdGhyb3cgb3IgcG9zdHBvbmUgaGVyZS5cbiAgaWYgKHN0b3JlLmZvcmNlRHluYW1pYyB8fCBzdG9yZS5mb3JjZVN0YXRpYykgcmV0dXJuXG5cbiAgaWYgKHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoXG4gICAgICBgUm91dGUgJHtzdG9yZS5yb3V0ZX0gd2l0aCBcXGBkeW5hbWljID0gXCJlcnJvclwiXFxgIGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1hbmQtZHluYW1pYyNkeW5hbWljLXJlbmRlcmluZ2BcbiAgICApXG4gIH1cblxuICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgcmV0dXJuIHBvc3Rwb25lV2l0aFRyYWNraW5nKFxuICAgICAgICAgIHN0b3JlLnJvdXRlLFxuICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgICAgICAgKVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgIHdvcmtVbml0U3RvcmUucmV2YWxpZGF0ZSA9IDBcblxuICAgICAgICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nLCBidXQgd2UgYXJlIGdlbmVyYXRpbmcgYSBzdGF0aWMgcGFnZS4gV2UgbmVlZFxuICAgICAgICAvLyB0byBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgY29uc3QgZXJyID0gbmV3IER5bmFtaWNTZXJ2ZXJFcnJvcihcbiAgICAgICAgICBgUm91dGUgJHtzdG9yZS5yb3V0ZX0gY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9keW5hbWljLXNlcnZlci1lcnJvcmBcbiAgICAgICAgKVxuICAgICAgICBzdG9yZS5keW5hbWljVXNhZ2VEZXNjcmlwdGlvbiA9IGV4cHJlc3Npb25cbiAgICAgICAgc3RvcmUuZHluYW1pY1VzYWdlU3RhY2sgPSBlcnIuc3RhY2tcblxuICAgICAgICB0aHJvdyBlcnJcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdvcmtVbml0U3RvcmUudXNlZER5bmFtaWMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSB1c2VkIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGhvdXQgY2FjaGVDb21wb25lbnRzIG9yIFBQUi5cbiAqIFdoZW4gY2FsbGVkIGR1cmluZyBhIGJ1aWxkIGl0IHdpbGwgY2F1c2UgTmV4dC5qcyB0byBjb25zaWRlciB0aGUgcm91dGUgYXMgZHluYW1pYy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZUxlZ2FjeVxuKTogbmV2ZXIge1xuICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nIGJ1dCB3ZSBhcmUgZ2VuZXJhdGluZyBhIHN0YXRpYyBwYWdlLiBXZSBuZWVkIHRvIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uXG4gIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gIClcblxuICBwcmVyZW5kZXJTdG9yZS5yZXZhbGlkYXRlID0gMFxuXG4gIHN0b3JlLmR5bmFtaWNVc2FnZURlc2NyaXB0aW9uID0gZXhwcmVzc2lvblxuICBzdG9yZS5keW5hbWljVXNhZ2VTdGFjayA9IGVyci5zdGFja1xuXG4gIHRocm93IGVyclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdHJhY2sgd2hldGhlciBzb21ldGhpbmcgZHluYW1pYyBoYXBwZW5lZCBldmVuIHdoZW5cbiAqIHdlIGFyZSBpbiBhIGR5bmFtaWMgcmVuZGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgRGV2IHdoZXJlIGFsbCByZW5kZXJzIGFyZSBkeW5hbWljIGJ1dFxuICogd2Ugc3RpbGwgdHJhY2sgd2hldGhlciBkeW5hbWljIEFQSXMgd2VyZSBhY2Nlc3NlZCBmb3IgaGVscGZ1bCBtZXNzYWdpbmdcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIod29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZSkge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAvLyBJbnNpZGUgY2FjaGUgc2NvcGVzLCBtYXJraW5nIGEgc2NvcGUgYXMgZHluYW1pYyBoYXMgbm8gZWZmZWN0LFxuICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAvLyBmb3JiaWRkZW4gaW5zaWRlIGEgY2FjaGUgc2NvcGUuXG4gICAgICByZXR1cm5cbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIC8vIEEgcHJpdmF0ZSBjYWNoZSBzY29wZSBpcyBhbHJlYWR5IGR5bmFtaWMgYnkgZGVmaW5pdGlvbi5cbiAgICAgIHJldHVyblxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgYnJlYWtcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdvcmtVbml0U3RvcmUudXNlZER5bmFtaWMgPSB0cnVlXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmZ1bmN0aW9uIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogdm9pZCB7XG4gIGNvbnN0IHJlYXNvbiA9IGBSb3V0ZSAke3JvdXRlfSBuZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS5gXG5cbiAgY29uc3QgZXJyb3IgPSBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKHJlYXNvbilcblxuICBwcmVyZW5kZXJTdG9yZS5jb250cm9sbGVyLmFib3J0KGVycm9yKVxuXG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgZHluYW1pY1RyYWNraW5nLmR5bmFtaWNBY2Nlc3Nlcy5wdXNoKHtcbiAgICAgIC8vIFdoZW4gd2UgYXJlbid0IGRlYnVnZ2luZywgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBlcnJvciBmb3IgdGhlXG4gICAgICAvLyBzdGFjayB0cmFjZS5cbiAgICAgIHN0YWNrOiBkeW5hbWljVHJhY2tpbmcuaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlc1xuICAgICAgICA/IG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXhwcmVzc2lvbixcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydE9uU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGVycm9yV2l0aFN0YWNrOiBFcnJvcixcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuXG4pOiB2b2lkIHtcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID0gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKHJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSlcbiAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ugc2V0IHRoaXMgdHJhY2tpbmcgdmFsdWUgYWZ0ZXIgYWJvcnRpbmcuIEFib3J0cyBhcmUgZXhlY3V0ZWRcbiAgLy8gc3luY2hyb25vdXNseSBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBhYm9ydCBkdXJpbmcgcmVuZGVyIGl0c2VsZi4gQnkgc2V0dGluZyB0aGlzXG4gIC8vIHZhbHVlIGxhdGUgd2UgY2FuIHVzZSBpdCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhYm9ydGVkIHRhc2tzIGFyZSB0aGUgdGFzayB0aGF0XG4gIC8vIGNhbGxlZCB0aGUgc3luYyBJTyBleHByZXNzaW9uIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGlmIChkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9PT0gbnVsbCkge1xuICAgICAgZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPSBlcnJvcldpdGhTdGFja1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tTeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3NJbkRldihcbiAgcmVxdWVzdFN0b3JlOiBSZXF1ZXN0U3RvcmVcbik6IHZvaWQge1xuICAvLyBXZSBkb24ndCBhY3R1YWxseSBoYXZlIGEgY29udHJvbGxlciB0byBhYm9ydCBidXQgd2UgZG8gdGhlIHNlbWFudGljIGVxdWl2YWxlbnQgYnlcbiAgLy8gYWR2YW5jaW5nIHRoZSByZXF1ZXN0IHN0b3JlIG91dCBvZiBwcmVyZW5kZXIgbW9kZVxuICByZXF1ZXN0U3RvcmUucHJlcmVuZGVyUGhhc2UgPSBmYWxzZVxufVxuXG4vKipcbiAqIHVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGggY2FjaGVDb21wb25lbnRzLiBJZiB3ZSBhcmUgZG9pbmcgYVxuICogcHJvc3BlY3RpdmUgcHJlcmVuZGVyIHdlIGRvbid0IGFjdHVhbGx5IGFib3J0IGJlY2F1c2Ugd2Ugd2FudCB0byBkaXNjb3ZlclxuICogYWxsIGNhY2hlcyBmb3IgdGhlIHNoZWxsLiBJZiB0aGlzIGlzIHRoZSBhY3R1YWwgcHJlcmVuZGVyIHdlIGRvIGFib3J0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHByZXJlbmRlclN0b3JlIGJ1dCB0aGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgd2UncmVcbiAqIGFjdHVhbGx5IHJ1bm5pbmcgaW4gY2FjaGVDb21wb25lbnRzIG1vZGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydEFuZFRocm93T25TeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGVycm9yV2l0aFN0YWNrOiBFcnJvcixcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuXG4pOiBuZXZlciB7XG4gIGNvbnN0IHByZXJlbmRlclNpZ25hbCA9IHByZXJlbmRlclN0b3JlLmNvbnRyb2xsZXIuc2lnbmFsXG4gIGlmIChwcmVyZW5kZXJTaWduYWwuYWJvcnRlZCA9PT0gZmFsc2UpIHtcbiAgICAvLyBUT0RPIGl0IHdvdWxkIGJlIGJldHRlciB0byBtb3ZlIHRoaXMgYWJvcnRlZCBjaGVjayBpbnRvIHRoZSBjYWxsc2l0ZSBzbyB3ZSBjYW4gYXZvaWQgbWFraW5nXG4gICAgLy8gdGhlIGVycm9yIG9iamVjdCB3aGVuIGl0IGlzbid0IHJlbGV2YW50IHRvIHRoZSBhYm9ydGluZyBvZiB0aGUgcHJlcmVuZGVyIGhvd2V2ZXJcbiAgICAvLyBzaW5jZSB3ZSBuZWVkIHRoZSB0aHJvdyBzZW1hbnRpY3MgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlIGFib3J0IGl0IGlzIGVhc2llciB0byBsYW5kXG4gICAgLy8gdGhpcyB3YXkuIFNlZSBob3cgdGhpcyB3YXMgaGFuZGxlZCB3aXRoIGBhYm9ydE9uU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzYCBmb3IgYSBjbG9zZXJcbiAgICAvLyB0byBpZGVhbCBpbXBsZW1lbnRhdGlvblxuICAgIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKHJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSlcbiAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBzZXQgdGhpcyB0cmFja2luZyB2YWx1ZSBhZnRlciBhYm9ydGluZy4gQWJvcnRzIGFyZSBleGVjdXRlZFxuICAgIC8vIHN5bmNocm9ub3VzbHkgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3UgYWJvcnQgZHVyaW5nIHJlbmRlciBpdHNlbGYuIEJ5IHNldHRpbmcgdGhpc1xuICAgIC8vIHZhbHVlIGxhdGUgd2UgY2FuIHVzZSBpdCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhYm9ydGVkIHRhc2tzIGFyZSB0aGUgdGFzayB0aGF0XG4gICAgLy8gY2FsbGVkIHRoZSBzeW5jIElPIGV4cHJlc3Npb24gaW4gdGhlIGZpcnN0IHBsYWNlLlxuICAgIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICAgIGlmIChkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9PT0gbnVsbCkge1xuICAgICAgICBkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9IGVycm9yV2l0aFN0YWNrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRocm93IGNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IoXG4gICAgYFJvdXRlICR7cm91dGV9IG5lZWRzIHRvIGJhaWwgb3V0IG9mIHByZXJlbmRlcmluZyBhdCB0aGlzIHBvaW50IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LmBcbiAgKVxufVxuXG4vKipcbiAqIFVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gZHluYW1pY2FsbHkgcHJlcmVuZGVyaW5nIHdpdGggZHluYW1pY0lPLlxuICogV2UgZG9uJ3Qgd2FudCB0byBlcnJvciwgYmVjYXVzZSBpdCdzIGJldHRlciB0byByZXR1cm4gc29tZXRoaW5nXG4gKiAoYW5kIHdlJ3ZlIGFscmVhZHkgYWJvcnRlZCB0aGUgcmVuZGVyIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgc3luYyBkeW5hbWljIGVycm9yIG9jY3VyZWQpLFxuICogYnV0IHdlIHNob3VsZCBsb2cgYW4gZXJyb3Igc2VydmVyLXNpZGUuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhcm5PblN5bmNEeW5hbWljRXJyb3IoZHluYW1pY1RyYWNraW5nOiBEeW5hbWljVHJhY2tpbmdTdGF0ZSkge1xuICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyB0aGUgc2VydmVyIGRpZCBzb21ldGhpbmcgc3luYyBkeW5hbWljLCBsaWtlbHlcbiAgICAvLyBsZWFkaW5nIHRvIGFuIGVhcmx5IHRlcm1pbmF0aW9uIG9mIHRoZSBwcmVyZW5kZXIuXG4gICAgY29uc29sZS5lcnJvcihkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaylcbiAgfVxufVxuXG4vLyBGb3Igbm93IHRoZXNlIGltcGxlbWVudGF0aW9ucyBhcmUgdGhlIHNhbWUgc28gd2UganVzdCByZWV4cG9ydFxuZXhwb3J0IGNvbnN0IHRyYWNrU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2Vzc0luRGV2ID1cbiAgdHJhY2tTeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3NJbkRldlxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdpbGwgY2FsbCBgUmVhY3QucG9zdHBvbmVgIHRoYXQgdGhyb3dzIHRoZSBwb3N0cG9uZWQgZXJyb3IuXG4gKi9cbnR5cGUgUG9zdHBvbmVQcm9wcyA9IHtcbiAgcmVhc29uOiBzdHJpbmdcbiAgcm91dGU6IHN0cmluZ1xufVxuZXhwb3J0IGZ1bmN0aW9uIFBvc3Rwb25lKHsgcmVhc29uLCByb3V0ZSB9OiBQb3N0cG9uZVByb3BzKTogbmV2ZXIge1xuICBjb25zdCBwcmVyZW5kZXJTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID1cbiAgICBwcmVyZW5kZXJTdG9yZSAmJiBwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcidcbiAgICAgID8gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gICAgICA6IG51bGxcbiAgcG9zdHBvbmVXaXRoVHJhY2tpbmcocm91dGUsIHJlYXNvbiwgZHluYW1pY1RyYWNraW5nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zdHBvbmVXaXRoVHJhY2tpbmcoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZyxcbiAgZHluYW1pY1RyYWNraW5nOiBudWxsIHwgRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IG5ldmVyIHtcbiAgYXNzZXJ0UG9zdHBvbmUoKVxuICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgZHluYW1pY1RyYWNraW5nLmR5bmFtaWNBY2Nlc3Nlcy5wdXNoKHtcbiAgICAgIC8vIFdoZW4gd2UgYXJlbid0IGRlYnVnZ2luZywgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBlcnJvciBmb3IgdGhlXG4gICAgICAvLyBzdGFjayB0cmFjZS5cbiAgICAgIHN0YWNrOiBkeW5hbWljVHJhY2tpbmcuaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlc1xuICAgICAgICA/IG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXhwcmVzc2lvbixcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudW5zdGFibGVfcG9zdHBvbmUoY3JlYXRlUG9zdHBvbmVSZWFzb24ocm91dGUsIGV4cHJlc3Npb24pKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQb3N0cG9uZVJlYXNvbihyb3V0ZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICBgUm91dGUgJHtyb3V0ZX0gbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIGAgK1xuICAgIGBSZWFjdCB0aHJvd3MgdGhpcyBzcGVjaWFsIG9iamVjdCB0byBpbmRpY2F0ZSB3aGVyZS4gSXQgc2hvdWxkIG5vdCBiZSBjYXVnaHQgYnkgYCArXG4gICAgYHlvdXIgb3duIHRyeS9jYXRjaC4gTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHByLWNhdWdodC1lcnJvcmBcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEeW5hbWljUG9zdHBvbmUoZXJyOiB1bmtub3duKSB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJlxuICAgIGVyciAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiAoZXJyIGFzIGFueSkubWVzc2FnZSA9PT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGlzRHluYW1pY1Bvc3Rwb25lUmVhc29uKChlcnIgYXMgYW55KS5tZXNzYWdlKVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbihyZWFzb246IHN0cmluZykge1xuICByZXR1cm4gKFxuICAgIHJlYXNvbi5pbmNsdWRlcyhcbiAgICAgICduZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQnXG4gICAgKSAmJlxuICAgIHJlYXNvbi5pbmNsdWRlcyhcbiAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wcHItY2F1Z2h0LWVycm9yJ1xuICAgIClcbiAgKVxufVxuXG5pZiAoaXNEeW5hbWljUG9zdHBvbmVSZWFzb24oY3JlYXRlUG9zdHBvbmVSZWFzb24oJyUlJScsICdeXl4nKSkgPT09IGZhbHNlKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnSW52YXJpYW50OiBpc0R5bmFtaWNQb3N0cG9uZSBtaXNpZGVudGlmaWVkIGEgcG9zdHBvbmUgcmVhc29uLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMnXG4gIClcbn1cblxuY29uc3QgTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQgPSAnTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQnXG5cbmZ1bmN0aW9uIGNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IobWVzc2FnZTogc3RyaW5nKTogRXJyb3Ige1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuICA7KGVycm9yIGFzIGFueSkuZGlnZXN0ID0gTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURURcbiAgcmV0dXJuIGVycm9yXG59XG5cbnR5cGUgRGlnZXN0RXJyb3IgPSBFcnJvciAmIHtcbiAgZGlnZXN0OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIERpZ2VzdEVycm9yIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmXG4gICAgZXJyb3IgIT09IG51bGwgJiZcbiAgICAoZXJyb3IgYXMgYW55KS5kaWdlc3QgPT09IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEICYmXG4gICAgJ25hbWUnIGluIGVycm9yICYmXG4gICAgJ21lc3NhZ2UnIGluIGVycm9yICYmXG4gICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvclxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY2Nlc3NlZER5bmFtaWNEYXRhKFxuICBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGR5bmFtaWNBY2Nlc3Nlcy5sZW5ndGggPiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lRHluYW1pY0FjY2VzcyhcbiAgc2VydmVyRHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGUsXG4gIGNsaWVudER5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVsnZHluYW1pY0FjY2Vzc2VzJ10ge1xuICAvLyBXZSBtdXRhdGUgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlIHdlIGFyZSBubyBsb25nZXIgd3JpdGluZ1xuICAvLyB0byB0aGUgZHluYW1pY1RyYWNraW5nU3RhdGUgYW5kIGl0J3MgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVhdGluZyBhIG5ld1xuICAvLyBhcnJheS5cbiAgc2VydmVyRHluYW1pYy5keW5hbWljQWNjZXNzZXMucHVzaCguLi5jbGllbnREeW5hbWljLmR5bmFtaWNBY2Nlc3NlcylcbiAgcmV0dXJuIHNlcnZlckR5bmFtaWMuZHluYW1pY0FjY2Vzc2VzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREeW5hbWljQVBJQWNjZXNzZXMoXG4gIGR5bmFtaWNBY2Nlc3NlczogQXJyYXk8RHluYW1pY0FjY2Vzcz5cbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGR5bmFtaWNBY2Nlc3Nlc1xuICAgIC5maWx0ZXIoXG4gICAgICAoYWNjZXNzKTogYWNjZXNzIGlzIFJlcXVpcmVkPER5bmFtaWNBY2Nlc3M+ID0+XG4gICAgICAgIHR5cGVvZiBhY2Nlc3Muc3RhY2sgPT09ICdzdHJpbmcnICYmIGFjY2Vzcy5zdGFjay5sZW5ndGggPiAwXG4gICAgKVxuICAgIC5tYXAoKHsgZXhwcmVzc2lvbiwgc3RhY2sgfSkgPT4ge1xuICAgICAgc3RhY2sgPSBzdGFja1xuICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgXCJFcnJvcjogXCIgcHJlZml4IGZyb20gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHN0YWNrIHRyYWNlIGFzXG4gICAgICAgIC8vIHdlbGwgYXMgdGhlIGZpcnN0IDQgbGluZXMgb2YgdGhlIHN0YWNrIHRyYWNlIHdoaWNoIGlzIHRoZSBkaXN0YW5jZVxuICAgICAgICAvLyBmcm9tIHRoZSB1c2VyIGNvZGUgYW5kIHRoZSBgbmV3IEVycm9yKCkuc3RhY2tgIGNhbGwuXG4gICAgICAgIC5zbGljZSg0KVxuICAgICAgICAuZmlsdGVyKChsaW5lKSA9PiB7XG4gICAgICAgICAgLy8gRXhjbHVkZSBOZXh0LmpzIGludGVybmFscyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnbm9kZV9tb2R1bGVzL25leHQvJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgYW5vbnltb3VzIGZ1bmN0aW9ucyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnICg8YW5vbnltb3VzPiknKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRXhjbHVkZSBOb2RlLmpzIGludGVybmFscyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnIChub2RlOicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICAgIHJldHVybiBgRHluYW1pYyBBUEkgVXNhZ2UgRGVidWcgLSAke2V4cHJlc3Npb259OlxcbiR7c3RhY2t9YFxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIGFzc2VydFBvc3Rwb25lKCkge1xuICBpZiAoIWhhc1Bvc3Rwb25lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFyaWFudDogUmVhY3QudW5zdGFibGVfcG9zdHBvbmUgaXMgbm90IGRlZmluZWQuIFRoaXMgc3VnZ2VzdHMgdGhlIHdyb25nIHZlcnNpb24gb2YgUmVhY3Qgd2FzIGxvYWRlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzYFxuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrIHRvIGFsbG93IHVzIHRvIGFib3J0IGEgcmVuZGVyIHVzaW5nIGEgUG9zdHBvbmUgaW5zdGFuY2UgaW5zdGVhZCBvZiBhbiBFcnJvciB3aGljaCBjaGFuZ2VzIFJlYWN0J3NcbiAqIGFib3J0IHNlbWFudGljcyBzbGlnaHRseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlckluQnJvd3NlckFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb250cm9sbGVyLmFib3J0KG5ldyBCYWlsb3V0VG9DU1JFcnJvcignUmVuZGVyIGluIEJyb3dzZXInKSlcbiAgcmV0dXJuIGNvbnRyb2xsZXIuc2lnbmFsXG59XG5cbi8qKlxuICogSW4gYSBwcmVyZW5kZXIsIHdlIG1heSBlbmQgdXAgd2l0aCBoYW5naW5nIFByb21pc2VzIGFzIGlucHV0cyBkdWUgdGhlbVxuICogc3RhbGxpbmcgb24gY29ubmVjdGlvbigpIG9yIGJlY2F1c2UgdGhleSdyZSBsb2FkaW5nIGR5bmFtaWMgZGF0YS4gSW4gdGhhdFxuICogY2FzZSB3ZSBuZWVkIHRvIGFib3J0IHRoZSBlbmNvZGluZyBvZiBhcmd1bWVudHMgc2luY2UgdGhleSdsbCBuZXZlciBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhhbmdpbmdJbnB1dEFib3J0U2lnbmFsKFxuICB3b3JrVW5pdFN0b3JlOiBXb3JrVW5pdFN0b3JlXG4pOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGlmICh3b3JrVW5pdFN0b3JlLmNhY2hlU2lnbmFsKSB7XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBjYWNoZVNpZ25hbCBpdCBtZWFucyB3ZSdyZSBpbiBhIHByb3NwZWN0aXZlIHJlbmRlci4gSWZcbiAgICAgICAgLy8gdGhlIGlucHV0IHdlJ3JlIHdhaXRpbmcgb24gaXMgY29taW5nIGZyb20gYW5vdGhlciBjYWNoZSwgd2UgZG8gd2FudFxuICAgICAgICAvLyB0byB3YWl0IGZvciBpdCBzbyB0aGF0IHdlIGNhbiByZXNvbHZlIHRoaXMgY2FjaGUgZW50cnkgdG9vLlxuICAgICAgICB3b3JrVW5pdFN0b3JlLmNhY2hlU2lnbmFsLmlucHV0UmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb250cm9sbGVyLmFib3J0KClcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSB3ZSdyZSBpbiB0aGUgZmluYWwgcmVuZGVyIGFuZCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbFxuICAgICAgICAvLyBvdXIgY2FjaGVzIGZpbGxlZC5cbiAgICAgICAgLy8gSWYgdGhlIHByZXJlbmRlciB1c2VzIHN0YWdlcywgd2UgaGF2ZSB3YWl0IHVudGlsIHRoZSBydW50aW1lIHN0YWdlLFxuICAgICAgICAvLyBhdCB3aGljaCBwb2ludCBhbGwgcnVudGltZSBpbnB1dHMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICAgICAgLy8gKG90aGVyd2lzZSwgYSBydW50aW1lIHByZXJlbmRlciBtaWdodCBjb25zaWRlciBgY29va2llcygpYCBoYW5naW5nXG4gICAgICAgIC8vICBldmVuIHRob3VnaCB0aGV5J2QgcmVzb2x2ZSBpbiB0aGUgbmV4dCB0YXNrLilcbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgYmUgd2FpdGluZyBvbiBzb21lIG1pY3JvdGFza3Mgc28gd2VcbiAgICAgICAgLy8gd2FpdCBvbmUgdGljayBiZWZvcmUgZ2l2aW5nIHVwLiBXaGVuIHdlIGdpdmUgdXAsIHdlIHN0aWxsIHdhbnQgdG9cbiAgICAgICAgLy8gcmVuZGVyIHRoZSBjb250ZW50IG9mIHRoaXMgY2FjaGUgYXMgZGVlcGx5IGFzIHdlIGNhbiBzbyB0aGF0IHdlIGNhblxuICAgICAgICAvLyBzdXNwZW5kIGFzIGRlZXBseSBhcyBwb3NzaWJsZSBpbiB0aGUgdHJlZSBvciBub3QgYXQgYWxsIGlmIHdlIGRvbid0XG4gICAgICAgIC8vIGVuZCB1cCB3YWl0aW5nIGZvciB0aGUgaW5wdXQuXG4gICAgICAgIGNvbnN0IHJ1bnRpbWVTdGFnZVByb21pc2UgPSBnZXRSdW50aW1lU3RhZ2VQcm9taXNlKHdvcmtVbml0U3RvcmUpXG4gICAgICAgIGlmIChydW50aW1lU3RhZ2VQcm9taXNlKSB7XG4gICAgICAgICAgcnVudGltZVN0YWdlUHJvbWlzZS50aGVuKCgpID0+XG4gICAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgZGVmYXVsdDpcbiAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFubm90YXRlRHluYW1pY0FjY2VzcyhcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBwcmVyZW5kZXJTdG9yZTogUHJlcmVuZGVyU3RvcmVNb2Rlcm5cbikge1xuICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRHluYW1pY1JvdXRlUGFyYW1zKGV4cHJlc3Npb246IHN0cmluZykge1xuICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgaWYgKHdvcmtTdG9yZSAmJiB3b3JrVW5pdFN0b3JlKSB7XG4gICAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgY2FzZSAncHJlcmVuZGVyJzoge1xuICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtc1xuICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBwcmVyZW5kZXIgd2l0aCBjYWNoZUNvbXBvbmVudHMgc2VtYW50aWNzLiBXZSBhcmUgZ29pbmcgdG9cbiAgICAgICAgICAvLyBoYW5nIGhlcmUgYW5kIG5ldmVyIHJlc29sdmUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY3VycmVudGx5XG4gICAgICAgICAgLy8gcmVuZGVyaW5nIGNvbXBvbmVudCB0byBlZmZlY3RpdmVseSBiZSBhIGR5bmFtaWMgaG9sZS5cbiAgICAgICAgICBSZWFjdC51c2UoXG4gICAgICAgICAgICBtYWtlSGFuZ2luZ1Byb21pc2UoXG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgICB3b3JrVW5pdFN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFxcYCR7ZXhwcmVzc2lvbn1cXGAgd2FzIGNhbGxlZCBkdXJpbmcgYSBydW50aW1lIHByZXJlbmRlci4gTmV4dC5qcyBzaG91bGQgYmUgcHJldmVudGluZyAke2V4cHJlc3Npb259IGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gc2VydmVyIGNvbXBvbmVudHMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGluc2lkZSBhIGNhY2hlIHNjb3BlLiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgICApXG4gICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaGFzU3VzcGVuc2VSZWdleCA9IC9cXG5cXHMrYXQgU3VzcGVuc2UgXFwoPGFub255bW91cz5cXCkvXG5cbi8vIENvbW1vbiBpbXBsaWNpdCBib2R5IHRhZ3MgdGhhdCBSZWFjdCB3aWxsIHRyZWF0IGFzIGJvZHkgd2hlbiBwbGFjZWQgZGlyZWN0bHkgaW4gaHRtbFxuY29uc3QgYm9keUFuZEltcGxpY2l0VGFncyA9XG4gICdib2R5fGRpdnxtYWlufHNlY3Rpb258YXJ0aWNsZXxhc2lkZXxoZWFkZXJ8Zm9vdGVyfG5hdnxmb3JtfHB8c3BhbnxoMXxoMnxoM3xoNHxoNXxoNidcblxuLy8gRGV0ZWN0cyB3aGVuIFJvb3RMYXlvdXRCb3VuZGFyeSAob3VyIGZyYW1ld29yayBtYXJrZXIgY29tcG9uZW50KSBhcHBlYXJzXG4vLyBhZnRlciBTdXNwZW5zZSBpbiB0aGUgY29tcG9uZW50IHN0YWNrLCBpbmRpY2F0aW5nIHRoZSByb290IGxheW91dCBpcyB3cmFwcGVkXG4vLyB3aXRoaW4gYSBTdXNwZW5zZSBib3VuZGFyeS4gRW5zdXJlcyBubyBib2R5L2h0bWwvaW1wbGljaXQtYm9keSBjb21wb25lbnRzIGFyZSBpbiBiZXR3ZWVuLlxuLy9cbi8vIEV4YW1wbGUgbWF0Y2hlczpcbi8vICAgYXQgU3VzcGVuc2UgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyAoPGFub255bW91cz4pXG4vL1xuLy8gT3Igd2l0aCBvdGhlciBjb21wb25lbnRzIGluIGJldHdlZW4gKGJ1dCBub3QgYm9keS9odG1sL2ltcGxpY2l0LWJvZHkpOlxuLy8gICBhdCBTdXNwZW5zZSAoPGFub255bW91cz4pXG4vLyAgIGF0IFNvbWVDb21wb25lbnQgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyAoPGFub255bW91cz4pXG5jb25zdCBoYXNTdXNwZW5zZUJlZm9yZVJvb3RMYXlvdXRXaXRob3V0Qm9keU9ySW1wbGljaXRCb2R5UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCBTdXNwZW5zZSBcXFxcKDxhbm9ueW1vdXM+XFxcXCkoPzooPyFcXFxcblxcXFxzK2F0ICg/OiR7Ym9keUFuZEltcGxpY2l0VGFnc30pIFxcXFwoPGFub255bW91cz5cXFxcKSlbXFxcXHNcXFxcU10pKj9cXFxcblxcXFxzK2F0ICR7Uk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRX0gXFxcXChbXlxcXFxuXSpcXFxcKWBcbilcblxuY29uc3QgaGFzTWV0YWRhdGFSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBcXFxcblxcXFxzK2F0ICR7TUVUQURBVEFfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gXG4pXG5jb25zdCBoYXNWaWV3cG9ydFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgYFxcXFxuXFxcXHMrYXQgJHtWSUVXUE9SVF9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWBcbilcbmNvbnN0IGhhc091dGxldFJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXG5cXFxccythdCAke09VVExFVF9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWApXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFja0FsbG93ZWREeW5hbWljQWNjZXNzKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZyxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIGNsaWVudER5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pIHtcbiAgaWYgKGhhc091dGxldFJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB0cmFjayB0aGF0IHRoaXMgaXMgZHluYW1pYy4gSXQgaXMgb25seSBzbyB3aGVuIHNvbWV0aGluZyBlbHNlIGlzIGFsc28gZHluYW1pYy5cbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNNZXRhZGF0YVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzRHluYW1pY01ldGFkYXRhID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljVmlld3BvcnQgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4LnRlc3QoXG4gICAgICBjb21wb25lbnRTdGFja1xuICAgIClcbiAgKSB7XG4gICAgLy8gRm9yIFN1c3BlbnNlIHdpdGhpbiBib2R5LCB0aGUgcHJlbHVkZSB3b3VsZG4ndCBiZSBlbXB0eSBzbyBpdCB3b3VsZG4ndCB2aW9sYXRlIHRoZSBlbXB0eSBzdGF0aWMgc2hlbGxzIHJ1bGUuXG4gICAgLy8gQnV0IGlmIHlvdSBoYXZlIFN1c3BlbnNlIGFib3ZlIGJvZHksIHRoZSBwcmVsdWRlIGlzIGVtcHR5IGJ1dCB3ZSBhbGxvdyB0aGF0IGJlY2F1c2UgaGF2aW5nIFN1c3BlbnNlXG4gICAgLy8gaXMgYW4gZXhwbGljaXQgc2lnbmFsIGZyb20gdGhlIHVzZXIgdGhhdCB0aGV5IGFja25vd2xlZGdlIHRoZSBlbXB0eSBzaGVsbCBhbmQgd2FudCBkeW5hbWljIHJlbmRlcmluZy5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNTdXNwZW5zZUFib3ZlQm9keSA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNTdXNwZW5zZVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gdGhpcyBlcnJvciBoYWQgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSBpdCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdCBhcyBhIHNvdXJjZVxuICAgIC8vIG9mIGRpc2FsbG93ZWRcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyBUaGlzIHRhc2sgd2FzIHRoZSB0YXNrIHRoYXQgY2FsbGVkIHRoZSBzeW5jIGVycm9yLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChcbiAgICAgIGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFja1xuICAgIClcbiAgICByZXR1cm5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IEEgY29tcG9uZW50IGFjY2Vzc2VkIGRhdGEsIGhlYWRlcnMsIHBhcmFtcywgc2VhcmNoUGFyYW1zLCBvciBhIHNob3J0LWxpdmVkIGNhY2hlIHdpdGhvdXQgYSBTdXNwZW5zZSBib3VuZGFyeSBub3IgYSBcInVzZSBjYWNoZVwiIGFib3ZlIGl0LiBTZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1taXNzaW5nLXN1c3BlbnNlYFxuICAgIGNvbnN0IGVycm9yID0gY3JlYXRlRXJyb3JXaXRoQ29tcG9uZW50T3JPd25lclN0YWNrKG1lc3NhZ2UsIGNvbXBvbmVudFN0YWNrKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChlcnJvcilcbiAgICByZXR1cm5cbiAgfVxufVxuXG4vKipcbiAqIEluIGRldiBtb2RlLCB3ZSBwcmVmZXIgdXNpbmcgdGhlIG93bmVyIHN0YWNrLCBvdGhlcndpc2UgdGhlIHByb3ZpZGVkXG4gKiBjb21wb25lbnQgc3RhY2sgaXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXJyb3JXaXRoQ29tcG9uZW50T3JPd25lclN0YWNrKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIGNvbXBvbmVudFN0YWNrOiBzdHJpbmdcbikge1xuICBjb25zdCBvd25lclN0YWNrID1cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIFJlYWN0LmNhcHR1cmVPd25lclN0YWNrXG4gICAgICA/IFJlYWN0LmNhcHR1cmVPd25lclN0YWNrKClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpXG4gIGVycm9yLnN0YWNrID0gZXJyb3IubmFtZSArICc6ICcgKyBtZXNzYWdlICsgKG93bmVyU3RhY2sgPz8gY29tcG9uZW50U3RhY2spXG4gIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZW51bSBQcmVsdWRlU3RhdGUge1xuICBGdWxsID0gMCxcbiAgRW1wdHkgPSAxLFxuICBFcnJvcmVkID0gMixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBlcnJvcjogRXJyb3Jcbik6IHZvaWQge1xuICBjb25zb2xlLmVycm9yKGVycm9yKVxuXG4gIGlmICghd29ya1N0b3JlLmRldikge1xuICAgIGlmICh3b3JrU3RvcmUuaGFzUmVhZGFibGVFcnJvclN0YWNrcykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRvIGdldCBhIG1vcmUgZGV0YWlsZWQgc3RhY2sgdHJhY2UgYW5kIHBpbnBvaW50IHRoZSBpc3N1ZSwgc3RhcnQgdGhlIGFwcCBpbiBkZXZlbG9wbWVudCBtb2RlIGJ5IHJ1bm5pbmcgXFxgbmV4dCBkZXZcXGAsIHRoZW4gb3BlbiBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGluIHlvdXIgYnJvd3NlciB0byBpbnZlc3RpZ2F0ZSB0aGUgZXJyb3IuYFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUbyBnZXQgYSBtb3JlIGRldGFpbGVkIHN0YWNrIHRyYWNlIGFuZCBwaW5wb2ludCB0aGUgaXNzdWUsIHRyeSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiAgLSBTdGFydCB0aGUgYXBwIGluIGRldmVsb3BtZW50IG1vZGUgYnkgcnVubmluZyBcXGBuZXh0IGRldlxcYCwgdGhlbiBvcGVuIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaW4geW91ciBicm93c2VyIHRvIGludmVzdGlnYXRlIHRoZSBlcnJvci5cbiAgLSBSZXJ1biB0aGUgcHJvZHVjdGlvbiBidWlsZCB3aXRoIFxcYG5leHQgYnVpbGQgLS1kZWJ1Zy1wcmVyZW5kZXJcXGAgdG8gZ2VuZXJhdGUgYmV0dGVyIHN0YWNrIHRyYWNlcy5gKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dJZkRpc2FsbG93ZWREeW5hbWljKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgcHJlbHVkZTogUHJlbHVkZVN0YXRlLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgc2VydmVyRHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IHZvaWQge1xuICBpZiAocHJlbHVkZSAhPT0gUHJlbHVkZVN0YXRlLkZ1bGwpIHtcbiAgICBpZiAoZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAgIC8vIFRoaXMgcm91dGUgaGFzIG9wdGVkIGludG8gYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmdcbiAgICAgIC8vIGJ5IGluY2x1ZGluZyBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIHRoZSBib2R5LiBJbiB0aGlzIGNhc2VcbiAgICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHNlcnZlckR5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgICAgLy8gVGhlcmUgaXMgbm8gc2hlbGwgYW5kIHRoZSBzZXJ2ZXIgZGlkIHNvbWV0aGluZyBzeW5jIGR5bmFtaWMgbGlrZWx5XG4gICAgICAvLyBsZWFkaW5nIHRvIGFuIGVhcmx5IHRlcm1pbmF0aW9uIG9mIHRoZSBwcmVyZW5kZXIgYmVmb3JlIHRoZSBzaGVsbFxuICAgICAgLy8gY291bGQgYmUgY29tcGxldGVkLiBXZSB0ZXJtaW5hdGUgdGhlIGJ1aWxkL3ZhbGlkYXRpbmcgcmVuZGVyLlxuICAgICAgbG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvcihcbiAgICAgICAgd29ya1N0b3JlLFxuICAgICAgICBzZXJ2ZXJEeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIC8vIFdlIGRpZG4ndCBoYXZlIGFueSBzeW5jIGJhaWxvdXRzIGJ1dCB0aGVyZSBtYXkgYmUgdXNlciBjb2RlIHdoaWNoXG4gICAgLy8gYmxvY2tlZCB0aGUgcm9vdC4gV2Ugd291bGQgaGF2ZSBjYXB0dXJlZCB0aGVzZSBkdXJpbmcgdGhlIHByZXJlbmRlclxuICAgIC8vIGFuZCBjYW4gbG9nIHRoZW0gaGVyZSBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlIGJ1aWxkL3ZhbGlkYXRpbmcgcmVuZGVyXG4gICAgY29uc3QgZHluYW1pY0Vycm9ycyA9IGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnNcbiAgICBpZiAoZHluYW1pY0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNFcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvcih3b3JrU3RvcmUsIGR5bmFtaWNFcnJvcnNbaV0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIC8vIElmIHdlIGdvdCB0aGlzIGZhciB0aGVuIHRoZSBvbmx5IG90aGVyIHRoaW5nIHRoYXQgY291bGQgYmUgYmxvY2tpbmdcbiAgICAvLyB0aGUgcm9vdCBpcyBkeW5hbWljIFZpZXdwb3J0LiBJZiB0aGlzIGlzIGR5bmFtaWMgdGhlblxuICAgIC8vIHlvdSBuZWVkIHRvIG9wdCBpbnRvIHRoYXQgYnkgYWRkaW5nIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgdGhlIGJvZHlcbiAgICAvLyB0byBpbmRpY2F0ZSB5b3VyIGFyZSBvayB3aXRoIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nLlxuICAgIGlmIChkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljVmlld3BvcnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGhhcyBhIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAgdGhhdCBkZXBlbmRzIG9uIFJlcXVlc3QgZGF0YSAoXFxgY29va2llcygpXFxgLCBldGMuLi4pIG9yIHVuY2FjaGVkIGV4dGVybmFsIGRhdGEgKFxcYGZldGNoKC4uLilcXGAsIGV0Yy4uLikgd2l0aG91dCBleHBsaWNpdGx5IGFsbG93aW5nIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtdmlld3BvcnRgXG4gICAgICApXG4gICAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKClcbiAgICB9XG5cbiAgICBpZiAocHJlbHVkZSA9PT0gUHJlbHVkZVN0YXRlLkVtcHR5KSB7XG4gICAgICAvLyBJZiB3ZSBldmVyIGdldCB0aGlzIGZhciB0aGVuIHdlIG1lc3NlZCB1cCB0aGUgdHJhY2tpbmcgb2YgaW52YWxpZCBkeW5hbWljLlxuICAgICAgLy8gV2Ugc3RpbGwgYWRoZXJlIHRvIHRoZSBjb25zdHJhaW50IHRoYXQgeW91IG11c3QgcHJvZHVjZSBhIHNoZWxsIGJ1dCBpbnZpdGUgdGhlXG4gICAgICAvLyB1c2VyIHRvIHJlcG9ydCB0aGlzIGFzIGEgYnVnIGluIE5leHQuanMuXG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBkaWQgbm90IHByb2R1Y2UgYSBzdGF0aWMgc2hlbGwgYW5kIE5leHQuanMgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSByZWFzb24uIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy5gXG4gICAgICApXG4gICAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKFxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPT09IGZhbHNlICYmXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljTWV0YWRhdGFcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGhhcyBhIFxcYGdlbmVyYXRlTWV0YWRhdGFcXGAgdGhhdCBkZXBlbmRzIG9uIFJlcXVlc3QgZGF0YSAoXFxgY29va2llcygpXFxgLCBldGMuLi4pIG9yIHVuY2FjaGVkIGV4dGVybmFsIGRhdGEgKFxcYGZldGNoKC4uLilcXGAsIGV0Yy4uLikgd2hlbiB0aGUgcmVzdCBvZiB0aGUgcm91dGUgZG9lcyBub3QuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy1tZXRhZGF0YWBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZTxUPihcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuUnVudGltZSxcbiAgcmVzdWx0OiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+IHtcbiAgaWYgKHByZXJlbmRlclN0b3JlLnJ1bnRpbWVTdGFnZVByb21pc2UpIHtcbiAgICByZXR1cm4gcHJlcmVuZGVyU3RvcmUucnVudGltZVN0YWdlUHJvbWlzZS50aGVuKCgpID0+IHJlc3VsdClcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsiUG9zdHBvbmUiLCJQcmVsdWRlU3RhdGUiLCJhYm9ydEFuZFRocm93T25TeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzIiwiYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2VzcyIsImFjY2Vzc2VkRHluYW1pY0RhdGEiLCJhbm5vdGF0ZUR5bmFtaWNBY2Nlc3MiLCJjb25zdW1lRHluYW1pY0FjY2VzcyIsImNyZWF0ZUR5bmFtaWNUcmFja2luZ1N0YXRlIiwiY3JlYXRlRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSIsImNyZWF0ZUhhbmdpbmdJbnB1dEFib3J0U2lnbmFsIiwiY3JlYXRlUmVuZGVySW5Ccm93c2VyQWJvcnRTaWduYWwiLCJkZWxheVVudGlsUnVudGltZVN0YWdlIiwiZm9ybWF0RHluYW1pY0FQSUFjY2Vzc2VzIiwiZ2V0Rmlyc3REeW5hbWljUmVhc29uIiwiaXNEeW5hbWljUG9zdHBvbmUiLCJpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IiLCJsb2dEaXNhbGxvd2VkRHluYW1pY0Vycm9yIiwibWFya0N1cnJlbnRTY29wZUFzRHluYW1pYyIsInBvc3Rwb25lV2l0aFRyYWNraW5nIiwidGhyb3dJZkRpc2FsbG93ZWREeW5hbWljIiwidGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24iLCJ0cmFja0FsbG93ZWREeW5hbWljQWNjZXNzIiwidHJhY2tEeW5hbWljRGF0YUluRHluYW1pY1JlbmRlciIsInRyYWNrU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzSW5EZXYiLCJ0cmFja1N5bmNocm9ub3VzUmVxdWVzdERhdGFBY2Nlc3NJbkRldiIsInVzZUR5bmFtaWNSb3V0ZVBhcmFtcyIsIndhcm5PblN5bmNEeW5hbWljRXJyb3IiLCJoYXNQb3N0cG9uZSIsIlJlYWN0IiwidW5zdGFibGVfcG9zdHBvbmUiLCJpc0RlYnVnRHluYW1pY0FjY2Vzc2VzIiwiZHluYW1pY0FjY2Vzc2VzIiwic3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayIsImhhc1N1c3BlbnNlQWJvdmVCb2R5IiwiaGFzRHluYW1pY01ldGFkYXRhIiwiaGFzRHluYW1pY1ZpZXdwb3J0IiwiaGFzQWxsb3dlZER5bmFtaWMiLCJkeW5hbWljRXJyb3JzIiwidHJhY2tpbmdTdGF0ZSIsImV4cHJlc3Npb24iLCJzdG9yZSIsIndvcmtVbml0U3RvcmUiLCJ0eXBlIiwiZm9yY2VEeW5hbWljIiwiZm9yY2VTdGF0aWMiLCJkeW5hbWljU2hvdWxkRXJyb3IiLCJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJyb3V0ZSIsImR5bmFtaWNUcmFja2luZyIsInJldmFsaWRhdGUiLCJlcnIiLCJEeW5hbWljU2VydmVyRXJyb3IiLCJkeW5hbWljVXNhZ2VEZXNjcmlwdGlvbiIsImR5bmFtaWNVc2FnZVN0YWNrIiwic3RhY2siLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ1c2VkRHluYW1pYyIsInByZXJlbmRlclN0b3JlIiwiYWJvcnRPblN5bmNocm9ub3VzRHluYW1pY0RhdGFBY2Nlc3MiLCJyZWFzb24iLCJlcnJvciIsImNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJwdXNoIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJlcnJvcldpdGhTdGFjayIsInJlcXVlc3RTdG9yZSIsInByZXJlbmRlclBoYXNlIiwicHJlcmVuZGVyU2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsImNvbnNvbGUiLCJ3b3JrVW5pdEFzeW5jU3RvcmFnZSIsImdldFN0b3JlIiwiYXNzZXJ0UG9zdHBvbmUiLCJjcmVhdGVQb3N0cG9uZVJlYXNvbiIsIm1lc3NhZ2UiLCJpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbiIsImluY2x1ZGVzIiwiTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQiLCJkaWdlc3QiLCJsZW5ndGgiLCJzZXJ2ZXJEeW5hbWljIiwiY2xpZW50RHluYW1pYyIsImZpbHRlciIsImFjY2VzcyIsIm1hcCIsInNwbGl0Iiwic2xpY2UiLCJsaW5lIiwiam9pbiIsIkFib3J0Q29udHJvbGxlciIsIkJhaWxvdXRUb0NTUkVycm9yIiwiY2FjaGVTaWduYWwiLCJpbnB1dFJlYWR5IiwidGhlbiIsInJ1bnRpbWVTdGFnZVByb21pc2UiLCJnZXRSdW50aW1lU3RhZ2VQcm9taXNlIiwic2NoZWR1bGVPbk5leHRUaWNrIiwid29ya1N0b3JlIiwid29ya0FzeW5jU3RvcmFnZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2UiLCJtYWtlSGFuZ2luZ1Byb21pc2UiLCJyZW5kZXJTaWduYWwiLCJJbnZhcmlhbnRFcnJvciIsImhhc1N1c3BlbnNlUmVnZXgiLCJib2R5QW5kSW1wbGljaXRUYWdzIiwiaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4IiwiUmVnRXhwIiwiUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSIsImhhc01ldGFkYXRhUmVnZXgiLCJNRVRBREFUQV9CT1VOREFSWV9OQU1FIiwiaGFzVmlld3BvcnRSZWdleCIsIlZJRVdQT1JUX0JPVU5EQVJZX05BTUUiLCJoYXNPdXRsZXRSZWdleCIsIk9VVExFVF9CT1VOREFSWV9OQU1FIiwiY29tcG9uZW50U3RhY2siLCJkeW5hbWljVmFsaWRhdGlvbiIsInRlc3QiLCJjcmVhdGVFcnJvcldpdGhDb21wb25lbnRPck93bmVyU3RhY2siLCJvd25lclN0YWNrIiwiY2FwdHVyZU93bmVyU3RhY2siLCJuYW1lIiwiZGV2IiwiaGFzUmVhZGFibGVFcnJvclN0YWNrcyIsInByZWx1ZGUiLCJpIiwicmVzdWx0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/encryption-utils.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/encryption-utils.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n arrayBufferToString: function() {\n return arrayBufferToString;\n },\n decrypt: function() {\n return decrypt;\n },\n encrypt: function() {\n return encrypt;\n },\n getActionEncryptionKey: function() {\n return getActionEncryptionKey;\n },\n getClientReferenceManifestForRsc: function() {\n return getClientReferenceManifestForRsc;\n },\n getServerModuleMap: function() {\n return getServerModuleMap;\n },\n setReferenceManifestsSingleton: function() {\n return setReferenceManifestsSingleton;\n },\n stringToUint8Array: function() {\n return stringToUint8Array;\n }\n});\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _apppaths = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ./work-async-storage.external */ \"./work-async-storage.external\");\nlet __next_loaded_action_key;\nfunction arrayBufferToString(buffer) {\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n // @anonrig: V8 has a limit of 65535 arguments in a function.\n // For len < 65535, this is faster.\n // https://github.com/vercel/next.js/pull/56377#pullrequestreview-1656181623\n if (len < 65535) {\n return String.fromCharCode.apply(null, bytes);\n }\n let binary = '';\n for(let i = 0; i < len; i++){\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\nfunction stringToUint8Array(binary) {\n const len = binary.length;\n const arr = new Uint8Array(len);\n for(let i = 0; i < len; i++){\n arr[i] = binary.charCodeAt(i);\n }\n return arr;\n}\nfunction encrypt(key, iv, data) {\n return crypto.subtle.encrypt({\n name: 'AES-GCM',\n iv\n }, key, data);\n}\nfunction decrypt(key, iv, data) {\n return crypto.subtle.decrypt({\n name: 'AES-GCM',\n iv\n }, key, data);\n}\n// This is a global singleton that is used to encode/decode the action bound args from\n// the closure. This can't be using a AsyncLocalStorage as it might happen on the module\n// level. Since the client reference manifest won't be mutated, let's use a global singleton\n// to keep it.\nconst SERVER_ACTION_MANIFESTS_SINGLETON = Symbol.for('next.server.action-manifests');\nfunction setReferenceManifestsSingleton({ page, clientReferenceManifest, serverActionsManifest, serverModuleMap }) {\n var _globalThis_SERVER_ACTION_MANIFESTS_SINGLETON;\n // @ts-expect-error\n const clientReferenceManifestsPerPage = (_globalThis_SERVER_ACTION_MANIFESTS_SINGLETON = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON]) == null ? void 0 : _globalThis_SERVER_ACTION_MANIFESTS_SINGLETON.clientReferenceManifestsPerPage;\n // @ts-expect-error\n globalThis[SERVER_ACTION_MANIFESTS_SINGLETON] = {\n clientReferenceManifestsPerPage: {\n ...clientReferenceManifestsPerPage,\n [(0, _apppaths.normalizeAppPath)(page)]: clientReferenceManifest\n },\n serverActionsManifest,\n serverModuleMap\n };\n}\nfunction getServerModuleMap() {\n const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON];\n if (!serverActionsManifestSingleton) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing manifest for Server Actions.'), \"__NEXT_ERROR_CODE\", {\n value: \"E606\",\n enumerable: false,\n configurable: true\n });\n }\n return serverActionsManifestSingleton.serverModuleMap;\n}\nfunction getClientReferenceManifestForRsc() {\n const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON];\n if (!serverActionsManifestSingleton) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing manifest for Server Actions.'), \"__NEXT_ERROR_CODE\", {\n value: \"E606\",\n enumerable: false,\n configurable: true\n });\n }\n const { clientReferenceManifestsPerPage } = serverActionsManifestSingleton;\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n // If there's no work store defined, we can assume that a client reference\n // manifest is needed during module evaluation, e.g. to create a server\n // action using a higher-order function. This might also use client\n // components which need to be serialized by Flight, and therefore client\n // references need to be resolvable. To make this work, we're returning a\n // merged manifest across all pages. This is fine as long as the module IDs\n // are not page specific, which they are not for Webpack. TODO: Fix this in\n // Turbopack.\n return mergeClientReferenceManifests(clientReferenceManifestsPerPage);\n }\n const clientReferenceManifest = clientReferenceManifestsPerPage[workStore.route];\n if (!clientReferenceManifest) {\n throw Object.defineProperty(new _invarianterror.InvariantError(`Missing Client Reference Manifest for ${workStore.route}.`), \"__NEXT_ERROR_CODE\", {\n value: \"E570\",\n enumerable: false,\n configurable: true\n });\n }\n return clientReferenceManifest;\n}\nasync function getActionEncryptionKey() {\n if (__next_loaded_action_key) {\n return __next_loaded_action_key;\n }\n const serverActionsManifestSingleton = globalThis[SERVER_ACTION_MANIFESTS_SINGLETON];\n if (!serverActionsManifestSingleton) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing manifest for Server Actions.'), \"__NEXT_ERROR_CODE\", {\n value: \"E606\",\n enumerable: false,\n configurable: true\n });\n }\n const rawKey = process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY || serverActionsManifestSingleton.serverActionsManifest.encryptionKey;\n if (rawKey === undefined) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing encryption key for Server Actions'), \"__NEXT_ERROR_CODE\", {\n value: \"E571\",\n enumerable: false,\n configurable: true\n });\n }\n __next_loaded_action_key = await crypto.subtle.importKey('raw', stringToUint8Array(atob(rawKey)), 'AES-GCM', true, [\n 'encrypt',\n 'decrypt'\n ]);\n return __next_loaded_action_key;\n}\nfunction mergeClientReferenceManifests(clientReferenceManifestsPerPage) {\n const clientReferenceManifests = Object.values(clientReferenceManifestsPerPage);\n const mergedClientReferenceManifest = {\n clientModules: {},\n edgeRscModuleMapping: {},\n rscModuleMapping: {}\n };\n for (const clientReferenceManifest of clientReferenceManifests){\n mergedClientReferenceManifest.clientModules = {\n ...mergedClientReferenceManifest.clientModules,\n ...clientReferenceManifest.clientModules\n };\n mergedClientReferenceManifest.edgeRscModuleMapping = {\n ...mergedClientReferenceManifest.edgeRscModuleMapping,\n ...clientReferenceManifest.edgeRscModuleMapping\n };\n mergedClientReferenceManifest.rscModuleMapping = {\n ...mergedClientReferenceManifest.rscModuleMapping,\n ...clientReferenceManifest.rscModuleMapping\n };\n }\n return mergedClientReferenceManifest;\n} //# sourceMappingURL=encryption-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VuY3J5cHRpb24tdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBWWdCQSxtQkFBbUI7ZUFBbkJBOztJQTBDQUMsT0FBTztlQUFQQTs7SUFYQUMsT0FBTztlQUFQQTs7SUE2SE1DLHNCQUFzQjtlQUF0QkE7O0lBeENOQyxnQ0FBZ0M7ZUFBaENBOztJQXBCQUMsa0JBQWtCO2VBQWxCQTs7SUFuQ0FDLDhCQUE4QjtlQUE5QkE7O0lBekNBQyxrQkFBa0I7ZUFBbEJBOzs7NENBMUJlO3NDQUNFO3NEQUNBO0FBRWpDLElBQUlDO0FBRUcsU0FBU1Isb0JBQ2RTLE1BQWlEO0lBRWpELE1BQU1DLFFBQVEsSUFBSUMsV0FBV0Y7SUFDN0IsTUFBTUcsTUFBTUYsTUFBTUcsVUFBVTtJQUU1Qiw2REFBNkQ7SUFDN0QsbUNBQW1DO0lBQ25DLDRFQUE0RTtJQUM1RSxJQUFJRCxNQUFNLE9BQU87UUFDZixPQUFPRSxPQUFPQyxZQUFZLENBQUNDLEtBQUssQ0FBQyxNQUFNTjtJQUN6QztJQUVBLElBQUlPLFNBQVM7SUFDYixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSU4sS0FBS00sSUFBSztRQUM1QkQsVUFBVUgsT0FBT0MsWUFBWSxDQUFDTCxLQUFLLENBQUNRLEVBQUU7SUFDeEM7SUFDQSxPQUFPRDtBQUNUO0FBRU8sU0FBU1YsbUJBQW1CVSxNQUFjO0lBQy9DLE1BQU1MLE1BQU1LLE9BQU9FLE1BQU07SUFDekIsTUFBTUMsTUFBTSxJQUFJVCxXQUFXQztJQUUzQixJQUFLLElBQUlNLElBQUksR0FBR0EsSUFBSU4sS0FBS00sSUFBSztRQUM1QkUsR0FBRyxDQUFDRixFQUFFLEdBQUdELE9BQU9JLFVBQVUsQ0FBQ0g7SUFDN0I7SUFFQSxPQUFPRTtBQUNUO0FBRU8sU0FBU2xCLFFBQVFvQixHQUFjLEVBQUVDLEVBQWMsRUFBRUMsSUFBZ0I7SUFDdEUsT0FBT0MsT0FBT0MsTUFB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U0FBUyxDQUN0RCxPQUNBNUMsbUJBQW1CNkMsS0FBS1AsVUFDeEIsV0FDQSxNQUNBO1FBQUM7UUFBVztLQUFVO0lBR3hCLE9BQU9yQztBQUNUO0FBRUEsU0FBU21DLDhCQUNQUCwrQkFFQztJQUVELE1BQU1pQiwyQkFBMkJDLE9BQU9DLE1BQU0sQ0FDNUNuQjtJQUdGLE1BQU1vQixnQ0FBK0Q7UUFDbkVDLGVBQWUsQ0FBQztRQUNoQkMsc0JBQXNCLENBQUM7UUFDdkJDLGtCQUFrQixDQUFDO0lBQ3JCO0lBRUEsS0FBSyxNQUFNM0IsMkJBQTJCcUIseUJBQTBCO1FBQzlERyw4QkFBOEJDLGFBQWEsR0FBRztZQUM1QyxHQUFHRCw4QkFBOEJDLGFBQWE7WUFDOUMsR0FBR3pCLHdCQUF3QnlCLGFBQWE7UUFDMUM7UUFDQUQsOEJBQThCRSxvQkFBb0IsR0FBRztZQUNuRCxHQUFHRiw4QkFBOEJFLG9CQUFvQjtZQUNyRCxHQUFHMUIsd0JBQXdCMEIsb0JBQW9CO1FBQ2pEO1FBQ0FGLDhCQUE4QkcsZ0JBQWdCLEdBQUc7WUFDL0MsR0FBR0gsOEJBQThCRyxnQkFBZ0I7WUFDakQsR0FBRzNCLHdCQUF3QjJCLGdCQUFnQjtRQUM3QztJQUNGO0lBRUEsT0FBT0g7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNlcnZlclxcYXBwLXJlbmRlclxcZW5jcnlwdGlvbi11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbk1hbmlmZXN0IH0gZnJvbSAnLi4vLi4vYnVpbGQvd2VicGFjay9wbHVnaW5zL2ZsaWdodC1jbGllbnQtZW50cnktcGx1Z2luJ1xuaW1wb3J0IHR5cGUge1xuICBDbGllbnRSZWZlcmVuY2VNYW5pZmVzdCxcbiAgQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3RGb3JSc2MsXG59IGZyb20gJy4uLy4uL2J1aWxkL3dlYnBhY2svcGx1Z2lucy9mbGlnaHQtbWFuaWZlc3QtcGx1Z2luJ1xuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2RlZXAtcmVhZG9ubHknXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuaW1wb3J0IHsgbm9ybWFsaXplQXBwUGF0aCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocydcbmltcG9ydCB7IHdvcmtBc3luY1N0b3JhZ2UgfSBmcm9tICcuL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCdcblxubGV0IF9fbmV4dF9sb2FkZWRfYWN0aW9uX2tleTogQ3J5cHRvS2V5XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUJ1ZmZlclRvU3RyaW5nKFxuICBidWZmZXI6IEFycmF5QnVmZmVyIHwgVWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+XG4pIHtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpXG4gIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGhcblxuICAvLyBAYW5vbnJpZzogVjggaGFzIGEgbGltaXQgb2YgNjU1MzUgYXJndW1lbnRzIGluIGEgZnVuY3Rpb24uXG4gIC8vIEZvciBsZW4gPCA2NTUzNSwgdGhpcyBpcyBmYXN0ZXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzU2Mzc3I3B1bGxyZXF1ZXN0cmV2aWV3LTE2NTYxODE2MjNcbiAgaWYgKGxlbiA8IDY1NTM1KSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgYnl0ZXMgYXMgdW5rbm93biBhcyBudW1iZXJbXSlcbiAgfVxuXG4gIGxldCBiaW5hcnkgPSAnJ1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pXG4gIH1cbiAgcmV0dXJuIGJpbmFyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9VaW50OEFycmF5KGJpbmFyeTogc3RyaW5nKSB7XG4gIGNvbnN0IGxlbiA9IGJpbmFyeS5sZW5ndGhcbiAgY29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkobGVuKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnJbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKVxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdChrZXk6IENyeXB0b0tleSwgaXY6IFVpbnQ4QXJyYXksIGRhdGE6IFVpbnQ4QXJyYXkpIHtcbiAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICB7XG4gICAgICBuYW1lOiAnQUVTLUdDTScsXG4gICAgICBpdixcbiAgICB9LFxuICAgIGtleSxcbiAgICBkYXRhXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHQoa2V5OiBDcnlwdG9LZXksIGl2OiBVaW50OEFycmF5LCBkYXRhOiBVaW50OEFycmF5KSB7XG4gIHJldHVybiBjcnlwdG8uc3VidGxlLmRlY3J5cHQoXG4gICAge1xuICAgICAgbmFtZTogJ0FFUy1HQ00nLFxuICAgICAgaXYsXG4gICAgfSxcbiAgICBrZXksXG4gICAgZGF0YVxuICApXG59XG5cbi8vIFRoaXMgaXMgYSBnbG9iYWwgc2luZ2xldG9uIHRoYXQgaXMgdXNlZCB0byBlbmNvZGUvZGVjb2RlIHRoZSBhY3Rpb24gYm91bmQgYXJncyBmcm9tXG4vLyB0aGUgY2xvc3VyZS4gVGhpcyBjYW4ndCBiZSB1c2luZyBhIEFzeW5jTG9jYWxTdG9yYWdlIGFzIGl0IG1pZ2h0IGhhcHBlbiBvbiB0aGUgbW9kdWxlXG4vLyBsZXZlbC4gU2luY2UgdGhlIGNsaWVudCByZWZlcmVuY2UgbWFuaWZlc3Qgd29uJ3QgYmUgbXV0YXRlZCwgbGV0J3MgdXNlIGEgZ2xvYmFsIHNpbmdsZXRvblxuLy8gdG8ga2VlcCBpdC5cbmNvbnN0IFNFUlZFUl9BQ1RJT05fTUFOSUZFU1RTX1NJTkdMRVRPTiA9IFN5bWJvbC5mb3IoXG4gICduZXh0LnNlcnZlci5hY3Rpb24tbWFuaWZlc3RzJ1xuKVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVmZXJlbmNlTWFuaWZlc3RzU2luZ2xldG9uKHtcbiAgcGFnZSxcbiAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QsXG4gIHNlcnZlckFjdGlvbnNNYW5pZmVzdCxcbiAgc2VydmVyTW9kdWxlTWFwLFxufToge1xuICBwYWdlOiBzdHJpbmdcbiAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3Q6IERlZXBSZWFkb25seTxDbGllbnRSZWZlcmVuY2VNYW5pZmVzdD5cbiAgc2VydmVyQWN0aW9uc01hbmlmZXN0OiBEZWVwUmVhZG9ubHk8QWN0aW9uTWFuaWZlc3Q+XG4gIHNlcnZlck1vZHVsZU1hcDoge1xuICAgIFtpZDogc3RyaW5nXToge1xuICAgICAgaWQ6IHN0cmluZ1xuICAgICAgY2h1bmtzOiBzdHJpbmdbXVxuICAgICAgbmFtZTogc3RyaW5nXG4gICAgfVxuICB9XG59KSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUGFnZSA9IGdsb2JhbFRoaXNbXG4gICAgU0VSVkVSX0FDVElPTl9NQU5JRkVTVFNfU0lOR0xFVE9OXG4gIF0/LmNsaWVudFJlZmVyZW5jZU1hbmlmZXN0c1BlclBhZ2UgYXNcbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgRGVlcFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIENsaWVudFJlZmVyZW5jZU1hbmlmZXN0Pj5cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGdsb2JhbFRoaXNbU0VSVkVSX0FDVElPTl9NQU5JRkVTVFNfU0lOR0xFVE9OXSA9IHtcbiAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlOiB7XG4gICAgICAuLi5jbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlLFxuICAgICAgW25vcm1hbGl6ZUFwcFBhdGgocGFnZSldOiBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCxcbiAgICB9LFxuICAgIHNlcnZlckFjdGlvbnNNYW5pZmVzdCxcbiAgICBzZXJ2ZXJNb2R1bGVNYXAsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZlck1vZHVsZU1hcCgpIHtcbiAgY29uc3Qgc2VydmVyQWN0aW9uc01hbmlmZXN0U2luZ2xldG9uID0gKGdsb2JhbFRoaXMgYXMgYW55KVtcbiAgICBTRVJWRVJfQUNUSU9OX01BTklGRVNUU19TSU5HTEVUT05cbiAgXSBhcyB7XG4gICAgc2VydmVyTW9kdWxlTWFwOiB7XG4gICAgICBbaWQ6IHN0cmluZ106IHtcbiAgICAgICAgaWQ6IHN0cmluZ1xuICAgICAgICBjaHVua3M6IHN0cmluZ1tdXG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghc2VydmVyQWN0aW9uc01hbmlmZXN0U2luZ2xldG9uKSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKCdNaXNzaW5nIG1hbmlmZXN0IGZvciBTZXJ2ZXIgQWN0aW9ucy4nKVxuICB9XG5cbiAgcmV0dXJuIHNlcnZlckFjdGlvbnNNYW5pZmVzdFNpbmdsZXRvbi5zZXJ2ZXJNb2R1bGVNYXBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFJlZmVyZW5jZU1hbmlmZXN0Rm9yUnNjKCk6IERlZXBSZWFkb25seTxDbGllbnRSZWZlcmVuY2VNYW5pZmVzdEZvclJzYz4ge1xuICBjb25zdCBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RTaW5nbGV0b24gPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1xuICAgIFNFUlZFUl9BQ1RJT05fTUFOSUZFU1RTX1NJTkdMRVRPTlxuICBdIGFzIHtcbiAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlOiBEZWVwUmVhZG9ubHk8XG4gICAgICBSZWNvcmQ8c3RyaW5nLCBDbGllbnRSZWZlcmVuY2VNYW5pZmVzdD5cbiAgICA+XG4gIH1cblxuICBpZiAoIXNlcnZlckFjdGlvbnNNYW5pZmVzdFNpbmdsZXRvbikge1xuICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcignTWlzc2luZyBtYW5pZmVzdCBmb3IgU2VydmVyIEFjdGlvbnMuJylcbiAgfVxuXG4gIGNvbnN0IHsgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUGFnZSB9ID0gc2VydmVyQWN0aW9uc01hbmlmZXN0U2luZ2xldG9uXG4gIGNvbnN0IHdvcmtTdG9yZSA9IHdvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKVxuXG4gIGlmICghd29ya1N0b3JlKSB7XG4gICAgLy8gSWYgdGhlcmUncyBubyB3b3JrIHN0b3JlIGRlZmluZWQsIHdlIGNhbiBhc3N1bWUgdGhhdCBhIGNsaWVudCByZWZlcmVuY2VcbiAgICAvLyBtYW5pZmVzdCBpcyBuZWVkZWQgZHVyaW5nIG1vZHVsZSBldmFsdWF0aW9uLCBlLmcuIHRvIGNyZWF0ZSBhIHNlcnZlclxuICAgIC8vIGFjdGlvbiB1c2luZyBhIGhpZ2hlci1vcmRlciBmdW5jdGlvbi4gVGhpcyBtaWdodCBhbHNvIHVzZSBjbGllbnRcbiAgICAvLyBjb21wb25lbnRzIHdoaWNoIG5lZWQgdG8gYmUgc2VyaWFsaXplZCBieSBGbGlnaHQsIGFuZCB0aGVyZWZvcmUgY2xpZW50XG4gICAgLy8gcmVmZXJlbmNlcyBuZWVkIHRvIGJlIHJlc29sdmFibGUuIFRvIG1ha2UgdGhpcyB3b3JrLCB3ZSdyZSByZXR1cm5pbmcgYVxuICAgIC8vIG1lcmdlZCBtYW5pZmVzdCBhY3Jvc3MgYWxsIHBhZ2VzLiBUaGlzIGlzIGZpbmUgYXMgbG9uZyBhcyB0aGUgbW9kdWxlIElEc1xuICAgIC8vIGFyZSBub3QgcGFnZSBzcGVjaWZpYywgd2hpY2ggdGhleSBhcmUgbm90IGZvciBXZWJwYWNrLiBUT0RPOiBGaXggdGhpcyBpblxuICAgIC8vIFR1cmJvcGFjay5cbiAgICByZXR1cm4gbWVyZ2VDbGllbnRSZWZlcmVuY2VNYW5pZmVzdHMoY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUGFnZSlcbiAgfVxuXG4gIGNvbnN0IGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0ID1cbiAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlW3dvcmtTdG9yZS5yb3V0ZV1cblxuICBpZiAoIWNsaWVudFJlZmVyZW5jZU1hbmlmZXN0KSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgYE1pc3NpbmcgQ2xpZW50IFJlZmVyZW5jZSBNYW5pZmVzdCBmb3IgJHt3b3JrU3RvcmUucm91dGV9LmBcbiAgICApXG4gIH1cblxuICByZXR1cm4gY2xpZW50UmVmZXJlbmNlTWFuaWZlc3Rcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGlvbkVuY3J5cHRpb25LZXkoKSB7XG4gIGlmIChfX25leHRfbG9hZGVkX2FjdGlvbl9rZXkpIHtcbiAgICByZXR1cm4gX19uZXh0X2xvYWRlZF9hY3Rpb25fa2V5XG4gIH1cblxuICBjb25zdCBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RTaW5nbGV0b24gPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1xuICAgIFNFUlZFUl9BQ1RJT05fTUFOSUZFU1RTX1NJTkdMRVRPTlxuICBdIGFzIHtcbiAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3Q6IERlZXBSZWFkb25seTxBY3Rpb25NYW5pZmVzdD5cbiAgfVxuXG4gIGlmICghc2VydmVyQWN0aW9uc01hbmlmZXN0U2luZ2xldG9uKSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKCdNaXNzaW5nIG1hbmlmZXN0IGZvciBTZXJ2ZXIgQWN0aW9ucy4nKVxuICB9XG5cbiAgY29uc3QgcmF3S2V5ID1cbiAgICBwcm9jZXNzLmVudi5ORVhUX1NFUlZFUl9BQ1RJT05TX0VOQ1JZUFRJT05fS0VZIHx8XG4gICAgc2VydmVyQWN0aW9uc01hbmlmZXN0U2luZ2xldG9uLnNlcnZlckFjdGlvbnNNYW5pZmVzdC5lbmNyeXB0aW9uS2V5XG5cbiAgaWYgKHJhd0tleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKCdNaXNzaW5nIGVuY3J5cHRpb24ga2V5IGZvciBTZXJ2ZXIgQWN0aW9ucycpXG4gIH1cblxuICBfX25leHRfbG9hZGVkX2FjdGlvbl9rZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgICAncmF3JyxcbiAgICBzdHJpbmdUb1VpbnQ4QXJyYXkoYXRvYihyYXdLZXkpKSxcbiAgICAnQUVTLUdDTScsXG4gICAgdHJ1ZSxcbiAgICBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddXG4gIClcblxuICByZXR1cm4gX19uZXh0X2xvYWRlZF9hY3Rpb25fa2V5XG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzKFxuICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlOiBEZWVwUmVhZG9ubHk8XG4gICAgUmVjb3JkPHN0cmluZywgQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3Q+XG4gID5cbik6IENsaWVudFJlZmVyZW5jZU1hbmlmZXN0Rm9yUnNjIHtcbiAgY29uc3QgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzID0gT2JqZWN0LnZhbHVlcyhcbiAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdHNQZXJQYWdlIGFzIFJlY29yZDxzdHJpbmcsIENsaWVudFJlZmVyZW5jZU1hbmlmZXN0PlxuICApXG5cbiAgY29uc3QgbWVyZ2VkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3Q6IENsaWVudFJlZmVyZW5jZU1hbmlmZXN0Rm9yUnNjID0ge1xuICAgIGNsaWVudE1vZHVsZXM6IHt9LFxuICAgIGVkZ2VSc2NNb2R1bGVNYXBwaW5nOiB7fSxcbiAgICByc2NNb2R1bGVNYXBwaW5nOiB7fSxcbiAgfVxuXG4gIGZvciAoY29uc3QgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3Qgb2YgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzKSB7XG4gICAgbWVyZ2VkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3QuY2xpZW50TW9kdWxlcyA9IHtcbiAgICAgIC4uLm1lcmdlZENsaWVudFJlZmVyZW5jZU1hbmlmZXN0LmNsaWVudE1vZHVsZXMsXG4gICAgICAuLi5jbGllbnRSZWZlcmVuY2VNYW5pZmVzdC5jbGllbnRNb2R1bGVzLFxuICAgIH1cbiAgICBtZXJnZWRDbGllbnRSZWZlcmVuY2VNYW5pZmVzdC5lZGdlUnNjTW9kdWxlTWFwcGluZyA9IHtcbiAgICAgIC4uLm1lcmdlZENsaWVudFJlZmVyZW5jZU1hbmlmZXN0LmVkZ2VSc2NNb2R1bGVNYXBwaW5nLFxuICAgICAgLi4uY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QuZWRnZVJzY01vZHVsZU1hcHBpbmcsXG4gICAgfVxuICAgIG1lcmdlZENsaWVudFJlZmVyZW5jZU1hbmlmZXN0LnJzY01vZHVsZU1hcHBpbmcgPSB7XG4gICAgICAuLi5tZXJnZWRDbGllbnRSZWZlcmVuY2VNYW5pZmVzdC5yc2NNb2R1bGVNYXBwaW5nLFxuICAgICAgLi4uY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QucnNjTW9kdWxlTWFwcGluZyxcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3Rcbn1cbiJdLCJuYW1lcyI6WyJhcnJheUJ1ZmZlclRvU3RyaW5nIiwiZGVjcnlwdCIsImVuY3J5cHQiLCJnZXRBY3Rpb25FbmNyeXB0aW9uS2V5IiwiZ2V0Q2xpZW50UmVmZXJlbmNlTWFuaWZlc3RGb3JSc2MiLCJnZXRTZXJ2ZXJNb2R1bGVNYXAiLCJzZXRSZWZlcmVuY2VNYW5pZmVzdHNTaW5nbGV0b24iLCJzdHJpbmdUb1VpbnQ4QXJyYXkiLCJfX25leHRfbG9hZGVkX2FjdGlvbl9rZXkiLCJidWZmZXIiLCJieXRlcyIsIlVpbnQ4QXJyYXkiLCJsZW4iLCJieXRlTGVuZ3RoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYXBwbHkiLCJiaW5hcnkiLCJpIiwibGVuZ3RoIiwiYXJyIiwiY2hhckNvZGVBdCIsImtleSIsIml2IiwiZGF0YSIsImNyeXB0byIsInN1YnRsZSIsIm5hbWUiLCJTRVJWRVJfQUNUSU9OX01BTklGRVNUU19TSU5HTEVUT04iLCJTeW1ib2wiLCJmb3IiLCJwYWdlIiwiY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QiLCJzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QiLCJzZXJ2ZXJNb2R1bGVNYXAiLCJnbG9iYWxUaGlzIiwiY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzUGVyUGFnZSIsIm5vcm1hbGl6ZUFwcFBhdGgiLCJzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RTaW5nbGV0b24iLCJJbnZhcmlhbnRFcnJvciIsIndvcmtTdG9yZSIsIndvcmtBc3luY1N0b3JhZ2UiLCJnZXRTdG9yZSIsIm1lcmdlQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzIiwicm91dGUiLCJyYXdLZXkiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9TRVJWRVJfQUNUSU9OU19FTkNSWVBUSU9OX0tFWSIsImVuY3J5cHRpb25LZXkiLCJ1bmRlZmluZWQiLCJpbXBvcnRLZXkiLCJhdG9iIiwiY2xpZW50UmVmZXJlbmNlTWFuaWZlc3RzIiwiT2JqZWN0IiwidmFsdWVzIiwibWVyZ2VkQ2xpZW50UmVmZXJlbmNlTWFuaWZlc3QiLCJjbGllbnRNb2R1bGVzIiwiZWRnZVJzY01vZHVsZU1hcHBpbmciLCJyc2NNb2R1bGVNYXBwaW5nIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/encryption-utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/entry-base.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/entry-base.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("// eslint-disable-next-line import/no-extraneous-dependencies\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ClientPageRoot: function() {\n return _clientpage.ClientPageRoot;\n },\n ClientSegmentRoot: function() {\n return _clientsegment.ClientSegmentRoot;\n },\n HTTPAccessFallbackBoundary: function() {\n return _errorboundary.HTTPAccessFallbackBoundary;\n },\n LayoutRouter: function() {\n return _layoutrouter.default;\n },\n MetadataBoundary: function() {\n return _boundarycomponents.MetadataBoundary;\n },\n OutletBoundary: function() {\n return _boundarycomponents.OutletBoundary;\n },\n Postpone: function() {\n return _postpone.Postpone;\n },\n RenderFromTemplateContext: function() {\n return _renderfromtemplatecontext.default;\n },\n RootLayoutBoundary: function() {\n return _boundarycomponents.RootLayoutBoundary;\n },\n SegmentViewNode: function() {\n return SegmentViewNode;\n },\n SegmentViewStateNode: function() {\n return SegmentViewStateNode;\n },\n ViewportBoundary: function() {\n return _boundarycomponents.ViewportBoundary;\n },\n actionAsyncStorage: function() {\n return _actionasyncstorageexternal.actionAsyncStorage;\n },\n captureOwnerStack: function() {\n return _react.captureOwnerStack;\n },\n collectSegmentData: function() {\n return _collectsegmentdata.collectSegmentData;\n },\n createMetadataComponents: function() {\n return _metadata.createMetadataComponents;\n },\n createPrerenderParamsForClientSegment: function() {\n return _params.createPrerenderParamsForClientSegment;\n },\n createPrerenderSearchParamsForClientPage: function() {\n return _searchparams.createPrerenderSearchParamsForClientPage;\n },\n createServerParamsForServerSegment: function() {\n return _params.createServerParamsForServerSegment;\n },\n createServerSearchParamsForServerPage: function() {\n return _searchparams.createServerSearchParamsForServerPage;\n },\n createTemporaryReferenceSet: function() {\n return _server.createTemporaryReferenceSet;\n },\n decodeAction: function() {\n return _server.decodeAction;\n },\n decodeFormState: function() {\n return _server.decodeFormState;\n },\n decodeReply: function() {\n return _server.decodeReply;\n },\n patchFetch: function() {\n return patchFetch;\n },\n preconnect: function() {\n return _preloads.preconnect;\n },\n preloadFont: function() {\n return _preloads.preloadFont;\n },\n preloadStyle: function() {\n return _preloads.preloadStyle;\n },\n prerender: function() {\n return _static.unstable_prerender;\n },\n renderToReadableStream: function() {\n return _server.renderToReadableStream;\n },\n serverHooks: function() {\n return _hooksservercontext;\n },\n taintObjectReference: function() {\n return _taint.taintObjectReference;\n },\n workAsyncStorage: function() {\n return _workasyncstorageexternal.workAsyncStorage;\n },\n workUnitAsyncStorage: function() {\n return _workunitasyncstorageexternal.workUnitAsyncStorage;\n }\n});\nconst _server = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\nconst _static = __webpack_require__(/*! react-server-dom-webpack/static */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\");\nconst _react = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\");\nconst _layoutrouter = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../../client/components/layout-router */ \"(rsc)/./node_modules/next/dist/client/components/layout-router.js\"));\nconst _renderfromtemplatecontext = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../../client/components/render-from-template-context */ \"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\"));\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _actionasyncstorageexternal = __webpack_require__(/*! ../app-render/action-async-storage.external */ \"../app-render/action-async-storage.external\");\nconst _clientpage = __webpack_require__(/*! ../../client/components/client-page */ \"(rsc)/./node_modules/next/dist/client/components/client-page.js\");\nconst _clientsegment = __webpack_require__(/*! ../../client/components/client-segment */ \"(rsc)/./node_modules/next/dist/client/components/client-segment.js\");\nconst _searchparams = __webpack_require__(/*! ../request/search-params */ \"(rsc)/./node_modules/next/dist/server/request/search-params.js\");\nconst _params = __webpack_require__(/*! ../request/params */ \"(rsc)/./node_modules/next/dist/server/request/params.js\");\nconst _hooksservercontext = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! ../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/client/components/hooks-server-context.js\"));\nconst _errorboundary = __webpack_require__(/*! ../../client/components/http-access-fallback/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nconst _metadata = __webpack_require__(/*! ../../lib/metadata/metadata */ \"(rsc)/./node_modules/next/dist/lib/metadata/metadata.js\");\nconst _boundarycomponents = __webpack_require__(/*! ../../lib/framework/boundary-components */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\");\nconst _preloads = __webpack_require__(/*! ./rsc/preloads */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js\");\nconst _postpone = __webpack_require__(/*! ./rsc/postpone */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js\");\nconst _taint = __webpack_require__(/*! ./rsc/taint */ \"(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js\");\nconst _collectsegmentdata = __webpack_require__(/*! ./collect-segment-data */ \"(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js\");\nconst _patchfetch = __webpack_require__(/*! ../lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nlet SegmentViewNode = ()=>null;\nlet SegmentViewStateNode = ()=>null;\nif (true) {\n const mod = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n SegmentViewNode = mod.SegmentViewNode;\n SegmentViewStateNode = mod.SegmentViewStateNode;\n}\n// hot-reloader modules are not bundled so we need to inject `__next__clear_chunk_cache__`\n// into globalThis from this file which is bundled.\nif (false) {} else {\n // Webpack does not have chunks on the server\n globalThis.__next__clear_chunk_cache__ = null;\n}\nfunction patchFetch() {\n return (0, _patchfetch.patchFetch)({\n workAsyncStorage: _workasyncstorageexternal.workAsyncStorage,\n workUnitAsyncStorage: _workunitasyncstorageexternal.workUnitAsyncStorage\n });\n}\n\n//# sourceMappingURL=entry-base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2UuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FtQ0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGdCQUFnQixtQkFBTyxDQUFDLHFKQUFpQztBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyxxSkFBaUM7QUFDekQsZUFBZSxtQkFBTyxDQUFDLGlHQUFPO0FBQzlCLDZEQUE2RCxtQkFBTyxDQUFDLGdIQUF1QztBQUM1RywwRUFBMEUsbUJBQU8sQ0FBQyw4SUFBc0Q7QUFDeEksa0NBQWtDLG1CQUFPLENBQUMsZ0ZBQTJDO0FBQ3JGLHNDQUFzQyxtQkFBTyxDQUFDLDhFQUFvQztBQUNsRixvQ0FBb0MsbUJBQU8sQ0FBQyxnR0FBNkM7QUFDekYsb0JBQW9CLG1CQUFPLENBQUMsNEdBQXFDO0FBQ2pFLHVCQUF1QixtQkFBTyxDQUFDLGtIQUF3QztBQUN2RSxzQkFBc0IsbUJBQU8sQ0FBQyxnR0FBMEI7QUFDeEQsZ0JBQWdCLG1CQUFPLENBQUMsa0ZBQW1CO0FBQzNDLG9FQUFvRSxtQkFBTyxDQUFDLDhIQUE4QztBQUMxSCx1QkFBdUIsbUJBQU8sQ0FBQyw0SkFBNkQ7QUFDNUYsa0JBQWtCLG1CQUFPLENBQUMsNEZBQTZCO0FBQ3ZELDRCQUE0QixtQkFBTyxDQUFDLG9IQUF5QztBQUM3RSxrQkFBa0IsbUJBQU8sQ0FBQyx3RkFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsd0ZBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyxrRkFBYTtBQUNwQyw0QkFBNEIsbUJBQU8sQ0FBQyx3R0FBd0I7QUFDNUQsb0JBQW9CLG1CQUFPLENBQUMsb0ZBQW9CO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQXNDO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLG9KQUF5RDtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFxQixFQUFFLEVBRTFCLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxhcHAtcmVuZGVyXFxlbnRyeS1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQ2xpZW50UGFnZVJvb3Q6IG51bGwsXG4gICAgQ2xpZW50U2VnbWVudFJvb3Q6IG51bGwsXG4gICAgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk6IG51bGwsXG4gICAgTGF5b3V0Um91dGVyOiBudWxsLFxuICAgIE1ldGFkYXRhQm91bmRhcnk6IG51bGwsXG4gICAgT3V0bGV0Qm91bmRhcnk6IG51bGwsXG4gICAgUG9zdHBvbmU6IG51bGwsXG4gICAgUmVuZGVyRnJvbVRlbXBsYXRlQ29udGV4dDogbnVsbCxcbiAgICBSb290TGF5b3V0Qm91bmRhcnk6IG51bGwsXG4gICAgU2VnbWVudFZpZXdOb2RlOiBudWxsLFxuICAgIFNlZ21lbnRWaWV3U3RhdGVOb2RlOiBudWxsLFxuICAgIFZpZXdwb3J0Qm91bmRhcnk6IG51bGwsXG4gICAgYWN0aW9uQXN5bmNTdG9yYWdlOiBudWxsLFxuICAgIGNhcHR1cmVPd25lclN0YWNrOiBudWxsLFxuICAgIGNvbGxlY3RTZWdtZW50RGF0YTogbnVsbCxcbiAgICBjcmVhdGVNZXRhZGF0YUNvbXBvbmVudHM6IG51bGwsXG4gICAgY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudDogbnVsbCxcbiAgICBjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ6IG51bGwsXG4gICAgY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZTogbnVsbCxcbiAgICBjcmVhdGVUZW1wb3JhcnlSZWZlcmVuY2VTZXQ6IG51bGwsXG4gICAgZGVjb2RlQWN0aW9uOiBudWxsLFxuICAgIGRlY29kZUZvcm1TdGF0ZTogbnVsbCxcbiAgICBkZWNvZGVSZXBseTogbnVsbCxcbiAgICBwYXRjaEZldGNoOiBudWxsLFxuICAgIHByZWNvbm5lY3Q6IG51bGwsXG4gICAgcHJlbG9hZEZvbnQ6IG51bGwsXG4gICAgcHJlbG9hZFN0eWxlOiBudWxsLFxuICAgIHByZXJlbmRlcjogbnVsbCxcbiAgICByZW5kZXJUb1JlYWRhYmxlU3RyZWFtOiBudWxsLFxuICAgIHNlcnZlckhvb2tzOiBudWxsLFxuICAgIHRhaW50T2JqZWN0UmVmZXJlbmNlOiBudWxsLFxuICAgIHdvcmtBc3luY1N0b3JhZ2U6IG51bGwsXG4gICAgd29ya1VuaXRBc3luY1N0b3JhZ2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQ2xpZW50UGFnZVJvb3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NsaWVudHBhZ2UuQ2xpZW50UGFnZVJvb3Q7XG4gICAgfSxcbiAgICBDbGllbnRTZWdtZW50Um9vdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfY2xpZW50c2VnbWVudC5DbGllbnRTZWdtZW50Um9vdDtcbiAgICB9LFxuICAgIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9lcnJvcmJvdW5kYXJ5LkhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5O1xuICAgIH0sXG4gICAgTGF5b3V0Um91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9sYXlvdXRyb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIE1ldGFkYXRhQm91bmRhcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2JvdW5kYXJ5Y29tcG9uZW50cy5NZXRhZGF0YUJvdW5kYXJ5O1xuICAgIH0sXG4gICAgT3V0bGV0Qm91bmRhcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2JvdW5kYXJ5Y29tcG9uZW50cy5PdXRsZXRCb3VuZGFyeTtcbiAgICB9LFxuICAgIFBvc3Rwb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9wb3N0cG9uZS5Qb3N0cG9uZTtcbiAgICB9LFxuICAgIFJlbmRlckZyb21UZW1wbGF0ZUNvbnRleHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3JlbmRlcmZyb210ZW1wbGF0ZWNvbnRleHQuZGVmYXVsdDtcbiAgICB9LFxuICAgIFJvb3RMYXlvdXRCb3VuZGFyeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfYm91bmRhcnljb21wb25lbnRzLlJvb3RMYXlvdXRCb3VuZGFyeTtcbiAgICB9LFxuICAgIFNlZ21lbnRWaWV3Tm9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTZWdtZW50Vmlld05vZGU7XG4gICAgfSxcbiAgICBTZWdtZW50Vmlld1N0YXRlTm9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTZWdtZW50Vmlld1N0YXRlTm9kZTtcbiAgICB9LFxuICAgIFZpZXdwb3J0Qm91bmRhcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2JvdW5kYXJ5Y29tcG9uZW50cy5WaWV3cG9ydEJvdW5kYXJ5O1xuICAgIH0sXG4gICAgYWN0aW9uQXN5bmNTdG9yYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9hY3Rpb25hc3luY3N0b3JhZ2VleHRlcm5hbC5hY3Rpb25Bc3luY1N0b3JhZ2U7XG4gICAgfSxcbiAgICBjYXB0dXJlT3duZXJTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QuY2FwdHVyZU93bmVyU3RhY2s7XG4gICAgfSxcbiAgICBjb2xsZWN0U2VnbWVudERhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2NvbGxlY3RzZWdtZW50ZGF0YS5jb2xsZWN0U2VnbWVudERhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVNZXRhZGF0YUNvbXBvbmVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX21ldGFkYXRhLmNyZWF0ZU1ldGFkYXRhQ29tcG9uZW50cztcbiAgICB9LFxuICAgIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3BhcmFtcy5jcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50O1xuICAgIH0sXG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc2VhcmNocGFyYW1zLmNyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2U7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JTZXJ2ZXJTZWdtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9wYXJhbXMuY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDtcbiAgICB9LFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3NlYXJjaHBhcmFtcy5jcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZXJ2ZXIuY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0O1xuICAgIH0sXG4gICAgZGVjb2RlQWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZXJ2ZXIuZGVjb2RlQWN0aW9uO1xuICAgIH0sXG4gICAgZGVjb2RlRm9ybVN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zZXJ2ZXIuZGVjb2RlRm9ybVN0YXRlO1xuICAgIH0sXG4gICAgZGVjb2RlUmVwbHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3NlcnZlci5kZWNvZGVSZXBseTtcbiAgICB9LFxuICAgIHBhdGNoRmV0Y2g6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGF0Y2hGZXRjaDtcbiAgICB9LFxuICAgIHByZWNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3ByZWxvYWRzLnByZWNvbm5lY3Q7XG4gICAgfSxcbiAgICBwcmVsb2FkRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcHJlbG9hZHMucHJlbG9hZEZvbnQ7XG4gICAgfSxcbiAgICBwcmVsb2FkU3R5bGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3ByZWxvYWRzLnByZWxvYWRTdHlsZTtcbiAgICB9LFxuICAgIHByZXJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3RhdGljLnVuc3RhYmxlX3ByZXJlbmRlcjtcbiAgICB9LFxuICAgIHJlbmRlclRvUmVhZGFibGVTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3NlcnZlci5yZW5kZXJUb1JlYWRhYmxlU3RyZWFtO1xuICAgIH0sXG4gICAgc2VydmVySG9va3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2hvb2tzc2VydmVyY29udGV4dDtcbiAgICB9LFxuICAgIHRhaW50T2JqZWN0UmVmZXJlbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF90YWludC50YWludE9iamVjdFJlZmVyZW5jZTtcbiAgICB9LFxuICAgIHdvcmtBc3luY1N0b3JhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlO1xuICAgIH0sXG4gICAgd29ya1VuaXRBc3luY1N0b3JhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2U7XG4gICAgfVxufSk7XG5jb25zdCBfc2VydmVyID0gcmVxdWlyZShcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zZXJ2ZXJcIik7XG5jb25zdCBfc3RhdGljID0gcmVxdWlyZShcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zdGF0aWNcIik7XG5jb25zdCBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5jb25zdCBfbGF5b3V0cm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXJcIikpO1xuY29uc3QgX3JlbmRlcmZyb210ZW1wbGF0ZWNvbnRleHQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dFwiKSk7XG5jb25zdCBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvd29yay1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9hY3Rpb25hc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL2FjdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2NsaWVudHBhZ2UgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvY2xpZW50LXBhZ2VcIik7XG5jb25zdCBfY2xpZW50c2VnbWVudCA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudFwiKTtcbmNvbnN0IF9zZWFyY2hwYXJhbXMgPSByZXF1aXJlKFwiLi4vcmVxdWVzdC9zZWFyY2gtcGFyYW1zXCIpO1xuY29uc3QgX3BhcmFtcyA9IHJlcXVpcmUoXCIuLi9yZXF1ZXN0L3BhcmFtc1wiKTtcbmNvbnN0IF9ob29rc3NlcnZlcmNvbnRleHQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQocmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0XCIpKTtcbmNvbnN0IF9lcnJvcmJvdW5kYXJ5ID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5XCIpO1xuY29uc3QgX21ldGFkYXRhID0gcmVxdWlyZShcIi4uLy4uL2xpYi9tZXRhZGF0YS9tZXRhZGF0YVwiKTtcbmNvbnN0IF9ib3VuZGFyeWNvbXBvbmVudHMgPSByZXF1aXJlKFwiLi4vLi4vbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzXCIpO1xuY29uc3QgX3ByZWxvYWRzID0gcmVxdWlyZShcIi4vcnNjL3ByZWxvYWRzXCIpO1xuY29uc3QgX3Bvc3Rwb25lID0gcmVxdWlyZShcIi4vcnNjL3Bvc3Rwb25lXCIpO1xuY29uc3QgX3RhaW50ID0gcmVxdWlyZShcIi4vcnNjL3RhaW50XCIpO1xuY29uc3QgX2NvbGxlY3RzZWdtZW50ZGF0YSA9IHJlcXVpcmUoXCIuL2NvbGxlY3Qtc2VnbWVudC1kYXRhXCIpO1xuY29uc3QgX3BhdGNoZmV0Y2ggPSByZXF1aXJlKFwiLi4vbGliL3BhdGNoLWZldGNoXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHtcbiAgICAgICAgX19wcm90b19fOiBudWxsXG4gICAgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmxldCBTZWdtZW50Vmlld05vZGUgPSAoKT0+bnVsbDtcbmxldCBTZWdtZW50Vmlld1N0YXRlTm9kZSA9ICgpPT5udWxsO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgY29uc3QgbW9kID0gcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL3NlZ21lbnQtZXhwbG9yZXItbm9kZScpO1xuICAgIFNlZ21lbnRWaWV3Tm9kZSA9IG1vZC5TZWdtZW50Vmlld05vZGU7XG4gICAgU2VnbWVudFZpZXdTdGF0ZU5vZGUgPSBtb2QuU2VnbWVudFZpZXdTdGF0ZU5vZGU7XG59XG4vLyBob3QtcmVsb2FkZXIgbW9kdWxlcyBhcmUgbm90IGJ1bmRsZWQgc28gd2UgbmVlZCB0byBpbmplY3QgYF9fbmV4dF9fY2xlYXJfY2h1bmtfY2FjaGVfX2Bcbi8vIGludG8gZ2xvYmFsVGhpcyBmcm9tIHRoaXMgZmlsZSB3aGljaCBpcyBidW5kbGVkLlxuaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgIGdsb2JhbFRoaXMuX19uZXh0X19jbGVhcl9jaHVua19jYWNoZV9fID0gX190dXJib3BhY2tfY2xlYXJfY2h1bmtfY2FjaGVfXztcbn0gZWxzZSB7XG4gICAgLy8gV2VicGFjayBkb2VzIG5vdCBoYXZlIGNodW5rcyBvbiB0aGUgc2VydmVyXG4gICAgZ2xvYmFsVGhpcy5fX25leHRfX2NsZWFyX2NodW5rX2NhY2hlX18gPSBudWxsO1xufVxuZnVuY3Rpb24gcGF0Y2hGZXRjaCgpIHtcbiAgICByZXR1cm4gKDAsIF9wYXRjaGZldGNoLnBhdGNoRmV0Y2gpKHtcbiAgICAgICAgd29ya0FzeW5jU3RvcmFnZTogX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLFxuICAgICAgICB3b3JrVW5pdEFzeW5jU3RvcmFnZTogX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2VcbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW50cnktYmFzZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/interop-default.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/interop-default.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Interop between \"export default\" and \"module.exports\".\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"interopDefault\", ({\n enumerable: true,\n get: function() {\n return interopDefault;\n }\n}));\nfunction interopDefault(mod) {\n return mod.default || mod;\n}\n\n//# sourceMappingURL=interop-default.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2ludGVyb3AtZGVmYXVsdC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0RBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGFwcC1yZW5kZXJcXGludGVyb3AtZGVmYXVsdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVyb3AgYmV0d2VlbiBcImV4cG9ydCBkZWZhdWx0XCIgYW5kIFwibW9kdWxlLmV4cG9ydHNcIi5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImludGVyb3BEZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbnRlcm9wRGVmYXVsdDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGludGVyb3BEZWZhdWx0KG1vZCkge1xuICAgIHJldHVybiBtb2QuZGVmYXVsdCB8fCBtb2Q7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVyb3AtZGVmYXVsdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/interop-default.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/react-large-shell-error.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// TODO: isWellKnownError -> isNextInternalError\n// isReactLargeShellError -> isWarning\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isReactLargeShellError\", ({\n enumerable: true,\n get: function() {\n return isReactLargeShellError;\n }\n}));\nfunction isReactLargeShellError(error) {\n return typeof error === 'object' && error !== null && 'message' in error && typeof error.message === 'string' && error.message.startsWith('This rendered a large document (>');\n}\n\n//# sourceMappingURL=react-large-shell-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JlYWN0LWxhcmdlLXNoZWxsLWVycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDBEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxhcHAtcmVuZGVyXFxyZWFjdC1sYXJnZS1zaGVsbC1lcnJvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiBpc1dlbGxLbm93bkVycm9yIC0+IGlzTmV4dEludGVybmFsRXJyb3Jcbi8vIGlzUmVhY3RMYXJnZVNoZWxsRXJyb3IgLT4gaXNXYXJuaW5nXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImlzUmVhY3RMYXJnZVNoZWxsRXJyb3JcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzUmVhY3RMYXJnZVNoZWxsRXJyb3I7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBpc1JlYWN0TGFyZ2VTaGVsbEVycm9yKGVycm9yKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IgIT09IG51bGwgJiYgJ21lc3NhZ2UnIGluIGVycm9yICYmIHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ1RoaXMgcmVuZGVyZWQgYSBsYXJnZSBkb2N1bWVudCAoPicpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC1sYXJnZS1zaGVsbC1lcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/react-large-shell-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/rsc/postpone.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ // When postpone is available in canary React we can switch to importing it directly\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Postpone\", ({\n enumerable: true,\n get: function() {\n return _dynamicrendering.Postpone;\n }\n}));\nconst _dynamicrendering = __webpack_require__(/*! ../dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\n\n//# sourceMappingURL=postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy9wb3N0cG9uZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQTtBQUNhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsNENBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMEJBQTBCLG1CQUFPLENBQUMsbUdBQXNCOztBQUV4RCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxhcHAtcmVuZGVyXFxyc2NcXHBvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbkZpbGVzIGluIHRoZSByc2MgZGlyZWN0b3J5IGFyZSBtZWFudCB0byBiZSBwYWNrYWdlZCBhcyBwYXJ0IG9mIHRoZSBSU0MgZ3JhcGggdXNpbmcgbmV4dC1hcHAtbG9hZGVyLlxuXG4qLyAvLyBXaGVuIHBvc3Rwb25lIGlzIGF2YWlsYWJsZSBpbiBjYW5hcnkgUmVhY3Qgd2UgY2FuIHN3aXRjaCB0byBpbXBvcnRpbmcgaXQgZGlyZWN0bHlcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUG9zdHBvbmVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9keW5hbWljcmVuZGVyaW5nLlBvc3Rwb25lO1xuICAgIH1cbn0pO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmdcIik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvc3Rwb25lLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/postpone.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/rsc/preloads.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n preconnect: function() {\n return preconnect;\n },\n preloadFont: function() {\n return preloadFont;\n },\n preloadStyle: function() {\n return preloadStyle;\n }\n});\nconst _reactdom = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react-dom */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction preloadStyle(href, crossOrigin, nonce) {\n const opts = {\n as: 'style'\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n _reactdom.default.preload(href, opts);\n}\nfunction preloadFont(href, type, crossOrigin, nonce) {\n const opts = {\n as: 'font',\n type\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n _reactdom.default.preload(href, opts);\n}\nfunction preconnect(href, crossOrigin, nonce) {\n const opts = {};\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n ;\n _reactdom.default.preconnect(href, opts);\n}\n\n//# sourceMappingURL=preloads.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy9wcmVsb2Fkcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxHQUFnQjtBQUNoQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx5REFBeUQsbUJBQU8sQ0FBQyx5R0FBVztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGFwcC1yZW5kZXJcXHJzY1xccHJlbG9hZHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblxuRmlsZXMgaW4gdGhlIHJzYyBkaXJlY3RvcnkgYXJlIG1lYW50IHRvIGJlIHBhY2thZ2VkIGFzIHBhcnQgb2YgdGhlIFJTQyBncmFwaCB1c2luZyBuZXh0LWFwcC1sb2FkZXIuXG5cbiovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgcHJlY29ubmVjdDogbnVsbCxcbiAgICBwcmVsb2FkRm9udDogbnVsbCxcbiAgICBwcmVsb2FkU3R5bGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcHJlY29ubmVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwcmVjb25uZWN0O1xuICAgIH0sXG4gICAgcHJlbG9hZEZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJlbG9hZEZvbnQ7XG4gICAgfSxcbiAgICBwcmVsb2FkU3R5bGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcHJlbG9hZFN0eWxlO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ZG9tID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHByZWxvYWRTdHlsZShocmVmLCBjcm9zc09yaWdpbiwgbm9uY2UpIHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBhczogJ3N0eWxlJ1xuICAgIH07XG4gICAgaWYgKHR5cGVvZiBjcm9zc09yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb3B0cy5jcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG5vbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICAgIF9yZWFjdGRvbS5kZWZhdWx0LnByZWxvYWQoaHJlZiwgb3B0cyk7XG59XG5mdW5jdGlvbiBwcmVsb2FkRm9udChocmVmLCB0eXBlLCBjcm9zc09yaWdpbiwgbm9uY2UpIHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBhczogJ2ZvbnQnLFxuICAgICAgICB0eXBlXG4gICAgfTtcbiAgICBpZiAodHlwZW9mIGNyb3NzT3JpZ2luID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRzLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygbm9uY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdHMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gICAgX3JlYWN0ZG9tLmRlZmF1bHQucHJlbG9hZChocmVmLCBvcHRzKTtcbn1cbmZ1bmN0aW9uIHByZWNvbm5lY3QoaHJlZiwgY3Jvc3NPcmlnaW4sIG5vbmNlKSB7XG4gICAgY29uc3Qgb3B0cyA9IHt9O1xuICAgIGlmICh0eXBlb2YgY3Jvc3NPcmlnaW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdHMuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBub25jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgb3B0cy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgICA7XG4gICAgX3JlYWN0ZG9tLmRlZmF1bHQucHJlY29ubmVjdChocmVmLCBvcHRzKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJlbG9hZHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/preloads.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/rsc/taint.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n taintObjectReference: function() {\n return taintObjectReference;\n },\n taintUniqueValue: function() {\n return taintUniqueValue;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction notImplemented() {\n throw Object.defineProperty(new Error('Taint can only be used with the taint flag.'), \"__NEXT_ERROR_CODE\", {\n value: \"E354\",\n enumerable: false,\n configurable: true\n });\n}\nconst taintObjectReference = false ? 0 : notImplemented;\nconst taintUniqueValue = false ? 0 : notImplemented;\n\n//# sourceMappingURL=taint.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3JzYy90YWludC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxHQUFnQjtBQUNoQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCLE1BQXFDLEdBQUcsQ0FBd0M7QUFDN0cseUJBQXlCLE1BQXFDLEdBQUcsQ0FBb0M7O0FBRXJHIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGFwcC1yZW5kZXJcXHJzY1xcdGFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblxuRmlsZXMgaW4gdGhlIHJzYyBkaXJlY3RvcnkgYXJlIG1lYW50IHRvIGJlIHBhY2thZ2VkIGFzIHBhcnQgb2YgdGhlIFJTQyBncmFwaCB1c2luZyBuZXh0LWFwcC1sb2FkZXIuXG5cbiovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGFpbnRPYmplY3RSZWZlcmVuY2U6IG51bGwsXG4gICAgdGFpbnRVbmlxdWVWYWx1ZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICB0YWludE9iamVjdFJlZmVyZW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0YWludE9iamVjdFJlZmVyZW5jZTtcbiAgICB9LFxuICAgIHRhaW50VW5pcXVlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGFpbnRVbmlxdWVWYWx1ZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBub3RJbXBsZW1lbnRlZCgpIHtcbiAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdUYWludCBjYW4gb25seSBiZSB1c2VkIHdpdGggdGhlIHRhaW50IGZsYWcuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzU0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cbmNvbnN0IHRhaW50T2JqZWN0UmVmZXJlbmNlID0gcHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCA/IF9yZWFjdC5leHBlcmltZW50YWxfdGFpbnRPYmplY3RSZWZlcmVuY2UgOiBub3RJbXBsZW1lbnRlZDtcbmNvbnN0IHRhaW50VW5pcXVlVmFsdWUgPSBwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1JFQUNUID8gX3JlYWN0LmV4cGVyaW1lbnRhbF90YWludFVuaXF1ZVZhbHVlIDogbm90SW1wbGVtZW50ZWQ7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRhaW50LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/rsc/taint.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/strip-flight-headers.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"stripFlightHeaders\", ({\n enumerable: true,\n get: function() {\n return stripFlightHeaders;\n }\n}));\nconst _approuterheaders = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction stripFlightHeaders(headers) {\n for (const header of _approuterheaders.FLIGHT_HEADERS){\n delete headers[header];\n }\n}\n\n//# sourceMappingURL=strip-flight-headers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL3N0cmlwLWZsaWdodC1oZWFkZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysc0RBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMEJBQTBCLG1CQUFPLENBQUMsMEhBQTRDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcYXBwLXJlbmRlclxcc3RyaXAtZmxpZ2h0LWhlYWRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpcEZsaWdodEhlYWRlcnNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHN0cmlwRmxpZ2h0SGVhZGVycztcbiAgICB9XG59KTtcbmNvbnN0IF9hcHByb3V0ZXJoZWFkZXJzID0gcmVxdWlyZShcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVyc1wiKTtcbmZ1bmN0aW9uIHN0cmlwRmxpZ2h0SGVhZGVycyhoZWFkZXJzKSB7XG4gICAgZm9yIChjb25zdCBoZWFkZXIgb2YgX2FwcHJvdXRlcmhlYWRlcnMuRkxJR0hUX0hFQURFUlMpe1xuICAgICAgICBkZWxldGUgaGVhZGVyc1toZWFkZXJdO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyaXAtZmxpZ2h0LWhlYWRlcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/base-http/helpers.js": /*!************************************************************!*\ !*** ./node_modules/next/dist/server/base-http/helpers.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isNodeNextRequest: function() {\n return isNodeNextRequest;\n },\n isNodeNextResponse: function() {\n return isNodeNextResponse;\n },\n isWebNextRequest: function() {\n return isWebNextRequest;\n },\n isWebNextResponse: function() {\n return isWebNextResponse;\n }\n});\nconst isWebNextRequest = (req)=>\"nodejs\" === 'edge';\nconst isWebNextResponse = (res)=>\"nodejs\" === 'edge';\nconst isNodeNextRequest = (req)=>\"nodejs\" !== 'edge';\nconst isNodeNextResponse = (res)=>\"nodejs\" !== 'edge';\n\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvaGVscGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FLTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZ0NBQWdDLFFBQXdCO0FBQ3hELGlDQUFpQyxRQUF3QjtBQUN6RCxpQ0FBaUMsUUFBd0I7QUFDekQsa0NBQWtDLFFBQXdCOztBQUUxRCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxiYXNlLWh0dHBcXGhlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpc05vZGVOZXh0UmVxdWVzdDogbnVsbCxcbiAgICBpc05vZGVOZXh0UmVzcG9uc2U6IG51bGwsXG4gICAgaXNXZWJOZXh0UmVxdWVzdDogbnVsbCxcbiAgICBpc1dlYk5leHRSZXNwb25zZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBpc05vZGVOZXh0UmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc05vZGVOZXh0UmVxdWVzdDtcbiAgICB9LFxuICAgIGlzTm9kZU5leHRSZXNwb25zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc05vZGVOZXh0UmVzcG9uc2U7XG4gICAgfSxcbiAgICBpc1dlYk5leHRSZXF1ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzV2ViTmV4dFJlcXVlc3Q7XG4gICAgfSxcbiAgICBpc1dlYk5leHRSZXNwb25zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1dlYk5leHRSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IGlzV2ViTmV4dFJlcXVlc3QgPSAocmVxKT0+cHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZSc7XG5jb25zdCBpc1dlYk5leHRSZXNwb25zZSA9IChyZXMpPT5wcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJztcbmNvbnN0IGlzTm9kZU5leHRSZXF1ZXN0ID0gKHJlcSk9PnByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gJ2VkZ2UnO1xuY29uc3QgaXNOb2RlTmV4dFJlc3BvbnNlID0gKHJlcyk9PnByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gJ2VkZ2UnO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/helpers.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/base-http/index.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/server/base-http/index.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BaseNextRequest: function() {\n return BaseNextRequest;\n },\n BaseNextResponse: function() {\n return BaseNextResponse;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ../../client/components/redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _getcookieparser = __webpack_require__(/*! ../api-utils/get-cookie-parser */ \"(rsc)/./node_modules/next/dist/server/api-utils/get-cookie-parser.js\");\nclass BaseNextRequest {\n constructor(method, url, body){\n this.method = method;\n this.url = url;\n this.body = body;\n }\n // Utils implemented using the abstract methods above\n get cookies() {\n if (this._cookies) return this._cookies;\n return this._cookies = (0, _getcookieparser.getCookieParser)(this.headers)();\n }\n}\nclass BaseNextResponse {\n constructor(destination){\n this.destination = destination;\n }\n // Utils implemented using the abstract methods above\n redirect(destination, statusCode) {\n this.setHeader('Location', destination);\n this.statusCode = statusCode;\n // Since IE11 doesn't support the 308 header add backwards\n // compatibility using refresh header\n if (statusCode === _redirectstatuscode.RedirectStatusCode.PermanentRedirect) {\n this.setHeader('Refresh', `0;url=${destination}`);\n }\n return this;\n }\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsNEJBQTRCLG1CQUFPLENBQUMsOEhBQThDO0FBQ2xGLHlCQUF5QixtQkFBTyxDQUFDLDRHQUFnQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLE1BQU0sWUFBWTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxiYXNlLWh0dHBcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQmFzZU5leHRSZXF1ZXN0OiBudWxsLFxuICAgIEJhc2VOZXh0UmVzcG9uc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgQmFzZU5leHRSZXF1ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEJhc2VOZXh0UmVxdWVzdDtcbiAgICB9LFxuICAgIEJhc2VOZXh0UmVzcG9uc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQmFzZU5leHRSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWRpcmVjdHN0YXR1c2NvZGUgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGVcIik7XG5jb25zdCBfZ2V0Y29va2llcGFyc2VyID0gcmVxdWlyZShcIi4uL2FwaS11dGlscy9nZXQtY29va2llLXBhcnNlclwiKTtcbmNsYXNzIEJhc2VOZXh0UmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3IobWV0aG9kLCB1cmwsIGJvZHkpe1xuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG4gICAgfVxuICAgIC8vIFV0aWxzIGltcGxlbWVudGVkIHVzaW5nIHRoZSBhYnN0cmFjdCBtZXRob2RzIGFib3ZlXG4gICAgZ2V0IGNvb2tpZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb29raWVzKSByZXR1cm4gdGhpcy5fY29va2llcztcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZXMgPSAoMCwgX2dldGNvb2tpZXBhcnNlci5nZXRDb29raWVQYXJzZXIpKHRoaXMuaGVhZGVycykoKTtcbiAgICB9XG59XG5jbGFzcyBCYXNlTmV4dFJlc3BvbnNlIHtcbiAgICBjb25zdHJ1Y3RvcihkZXN0aW5hdGlvbil7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICB9XG4gICAgLy8gVXRpbHMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIGFic3RyYWN0IG1ldGhvZHMgYWJvdmVcbiAgICByZWRpcmVjdChkZXN0aW5hdGlvbiwgc3RhdHVzQ29kZSkge1xuICAgICAgICB0aGlzLnNldEhlYWRlcignTG9jYXRpb24nLCBkZXN0aW5hdGlvbik7XG4gICAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgICAgIC8vIFNpbmNlIElFMTEgZG9lc24ndCBzdXBwb3J0IHRoZSAzMDggaGVhZGVyIGFkZCBiYWNrd2FyZHNcbiAgICAgICAgLy8gY29tcGF0aWJpbGl0eSB1c2luZyByZWZyZXNoIGhlYWRlclxuICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gX3JlZGlyZWN0c3RhdHVzY29kZS5SZWRpcmVjdFN0YXR1c0NvZGUuUGVybWFuZW50UmVkaXJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SGVhZGVyKCdSZWZyZXNoJywgYDA7dXJsPSR7ZGVzdGluYXRpb259YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/base-http/node.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/server/base-http/node.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NodeNextRequest: function() {\n return NodeNextRequest;\n },\n NodeNextResponse: function() {\n return NodeNextResponse;\n }\n});\nconst _apiutils = __webpack_require__(/*! ../api-utils */ \"(rsc)/./node_modules/next/dist/server/api-utils/index.js\");\nconst _requestmeta = __webpack_require__(/*! ../request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\nconst _index = __webpack_require__(/*! ./index */ \"(rsc)/./node_modules/next/dist/server/base-http/index.js\");\nlet prop;\nclass NodeNextRequest extends _index.BaseNextRequest {\n static #_ = prop = _NEXT_REQUEST_META = _requestmeta.NEXT_REQUEST_META;\n constructor(_req){\n var _this__req;\n super(_req.method.toUpperCase(), _req.url, _req), this._req = _req, this.headers = this._req.headers, this.fetchMetrics = (_this__req = this._req) == null ? void 0 : _this__req.fetchMetrics, this[_NEXT_REQUEST_META] = this._req[_requestmeta.NEXT_REQUEST_META] || {}, this.streaming = false;\n }\n get originalRequest() {\n // Need to mimic these changes to the original req object for places where we use it:\n // render.tsx, api/ssg requests\n this._req[_requestmeta.NEXT_REQUEST_META] = this[_requestmeta.NEXT_REQUEST_META];\n this._req.url = this.url;\n this._req.cookies = this.cookies;\n return this._req;\n }\n set originalRequest(value) {\n this._req = value;\n }\n /**\n * Returns the request body as a Web Readable Stream. The body here can only\n * be read once as the body will start flowing as soon as the data handler\n * is attached.\n *\n * @internal\n */ stream() {\n if (this.streaming) {\n throw Object.defineProperty(new Error('Invariant: NodeNextRequest.stream() can only be called once'), \"__NEXT_ERROR_CODE\", {\n value: \"E467\",\n enumerable: false,\n configurable: true\n });\n }\n this.streaming = true;\n return new ReadableStream({\n start: (controller)=>{\n this._req.on('data', (chunk)=>{\n controller.enqueue(new Uint8Array(chunk));\n });\n this._req.on('end', ()=>{\n controller.close();\n });\n this._req.on('error', (err)=>{\n controller.error(err);\n });\n }\n });\n }\n}\nclass NodeNextResponse extends _index.BaseNextResponse {\n get originalResponse() {\n if (_apiutils.SYMBOL_CLEARED_COOKIES in this) {\n this._res[_apiutils.SYMBOL_CLEARED_COOKIES] = this[_apiutils.SYMBOL_CLEARED_COOKIES];\n }\n return this._res;\n }\n constructor(_res){\n super(_res), this._res = _res, this.textBody = undefined;\n }\n get sent() {\n return this._res.finished || this._res.headersSent;\n }\n get statusCode() {\n return this._res.statusCode;\n }\n set statusCode(value) {\n this._res.statusCode = value;\n }\n get statusMessage() {\n return this._res.statusMessage;\n }\n set statusMessage(value) {\n this._res.statusMessage = value;\n }\n setHeader(name, value) {\n this._res.setHeader(name, value);\n return this;\n }\n removeHeader(name) {\n this._res.removeHeader(name);\n return this;\n }\n getHeaderValues(name) {\n const values = this._res.getHeader(name);\n if (values === undefined) return undefined;\n return (Array.isArray(values) ? values : [\n values\n ]).map((value)=>value.toString());\n }\n hasHeader(name) {\n return this._res.hasHeader(name);\n }\n getHeader(name) {\n const values = this.getHeaderValues(name);\n return Array.isArray(values) ? values.join(',') : undefined;\n }\n getHeaders() {\n return this._res.getHeaders();\n }\n appendHeader(name, value) {\n const currentValues = this.getHeaderValues(name) ?? [];\n if (!currentValues.includes(value)) {\n this._res.setHeader(name, [\n ...currentValues,\n value\n ]);\n }\n return this;\n }\n body(value) {\n this.textBody = value;\n return this;\n }\n send() {\n this._res.end(this.textBody);\n }\n onClose(callback) {\n this.originalResponse.on('close', callback);\n }\n}\nvar _NEXT_REQUEST_META;\n\n//# sourceMappingURL=node.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9iYXNlLWh0dHAvbm9kZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQkFBa0IsbUJBQU8sQ0FBQyw4RUFBYztBQUN4QyxxQkFBcUIsbUJBQU8sQ0FBQyw4RUFBaUI7QUFDOUMsZUFBZSxtQkFBTyxDQUFDLHlFQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpUkFBaVI7QUFDalI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxiYXNlLWh0dHBcXG5vZGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBOb2RlTmV4dFJlcXVlc3Q6IG51bGwsXG4gICAgTm9kZU5leHRSZXNwb25zZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBOb2RlTmV4dFJlcXVlc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTm9kZU5leHRSZXF1ZXN0O1xuICAgIH0sXG4gICAgTm9kZU5leHRSZXNwb25zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBOb2RlTmV4dFJlc3BvbnNlO1xuICAgIH1cbn0pO1xuY29uc3QgX2FwaXV0aWxzID0gcmVxdWlyZShcIi4uL2FwaS11dGlsc1wiKTtcbmNvbnN0IF9yZXF1ZXN0bWV0YSA9IHJlcXVpcmUoXCIuLi9yZXF1ZXN0LW1ldGFcIik7XG5jb25zdCBfaW5kZXggPSByZXF1aXJlKFwiLi9pbmRleFwiKTtcbmxldCBwcm9wO1xuY2xhc3MgTm9kZU5leHRSZXF1ZXN0IGV4dGVuZHMgX2luZGV4LkJhc2VOZXh0UmVxdWVzdCB7XG4gICAgc3RhdGljICNfID0gcHJvcCA9IF9ORVhUX1JFUVVFU1RfTUVUQSA9IF9yZXF1ZXN0bWV0YS5ORVhUX1JFUVVFU1RfTUVUQTtcbiAgICBjb25zdHJ1Y3RvcihfcmVxKXtcbiAgICAgICAgdmFyIF90aGlzX19yZXE7XG4gICAgICAgIHN1cGVyKF9yZXEubWV0aG9kLnRvVXBwZXJDYXNlKCksIF9yZXEudXJsLCBfcmVxKSwgdGhpcy5fcmVxID0gX3JlcSwgdGhpcy5oZWFkZXJzID0gdGhpcy5fcmVxLmhlYWRlcnMsIHRoaXMuZmV0Y2hNZXRyaWNzID0gKF90aGlzX19yZXEgPSB0aGlzLl9yZXEpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19fcmVxLmZldGNoTWV0cmljcywgdGhpc1tfTkVYVF9SRVFVRVNUX01FVEFdID0gdGhpcy5fcmVxW19yZXF1ZXN0bWV0YS5ORVhUX1JFUVVFU1RfTUVUQV0gfHwge30sIHRoaXMuc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIGdldCBvcmlnaW5hbFJlcXVlc3QoKSB7XG4gICAgICAgIC8vIE5lZWQgdG8gbWltaWMgdGhlc2UgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgcmVxIG9iamVjdCBmb3IgcGxhY2VzIHdoZXJlIHdlIHVzZSBpdDpcbiAgICAgICAgLy8gcmVuZGVyLnRzeCwgYXBpL3NzZyByZXF1ZXN0c1xuICAgICAgICB0aGlzLl9yZXFbX3JlcXVlc3RtZXRhLk5FWFRfUkVRVUVTVF9NRVRBXSA9IHRoaXNbX3JlcXVlc3RtZXRhLk5FWFRfUkVRVUVTVF9NRVRBXTtcbiAgICAgICAgdGhpcy5fcmVxLnVybCA9IHRoaXMudXJsO1xuICAgICAgICB0aGlzLl9yZXEuY29va2llcyA9IHRoaXMuY29va2llcztcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcTtcbiAgICB9XG4gICAgc2V0IG9yaWdpbmFsUmVxdWVzdCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yZXEgPSB2YWx1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJlcXVlc3QgYm9keSBhcyBhIFdlYiBSZWFkYWJsZSBTdHJlYW0uIFRoZSBib2R5IGhlcmUgY2FuIG9ubHlcbiAgICogYmUgcmVhZCBvbmNlIGFzIHRoZSBib2R5IHdpbGwgc3RhcnQgZmxvd2luZyBhcyBzb29uIGFzIHRoZSBkYXRhIGhhbmRsZXJcbiAgICogaXMgYXR0YWNoZWQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi8gc3RyZWFtKCkge1xuICAgICAgICBpZiAodGhpcy5zdHJlYW1pbmcpIHtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0ludmFyaWFudDogTm9kZU5leHRSZXF1ZXN0LnN0cmVhbSgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU0NjdcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RyZWFtaW5nID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICBzdGFydDogKGNvbnRyb2xsZXIpPT57XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxLm9uKCdkYXRhJywgKGNodW5rKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoY2h1bmspKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXEub24oJ2VuZCcsICgpPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXEub24oJ2Vycm9yJywgKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBOb2RlTmV4dFJlc3BvbnNlIGV4dGVuZHMgX2luZGV4LkJhc2VOZXh0UmVzcG9uc2Uge1xuICAgIGdldCBvcmlnaW5hbFJlc3BvbnNlKCkge1xuICAgICAgICBpZiAoX2FwaXV0aWxzLlNZTUJPTF9DTEVBUkVEX0NPT0tJRVMgaW4gdGhpcykge1xuICAgICAgICAgICAgdGhpcy5fcmVzW19hcGl1dGlscy5TWU1CT0xfQ0xFQVJFRF9DT09LSUVTXSA9IHRoaXNbX2FwaXV0aWxzLlNZTUJPTF9DTEVBUkVEX0NPT0tJRVNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKF9yZXMpe1xuICAgICAgICBzdXBlcihfcmVzKSwgdGhpcy5fcmVzID0gX3JlcywgdGhpcy50ZXh0Qm9keSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZ2V0IHNlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXMuZmluaXNoZWQgfHwgdGhpcy5fcmVzLmhlYWRlcnNTZW50O1xuICAgIH1cbiAgICBnZXQgc3RhdHVzQ29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlcy5zdGF0dXNDb2RlO1xuICAgIH1cbiAgICBzZXQgc3RhdHVzQ29kZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yZXMuc3RhdHVzQ29kZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc3RhdHVzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlcy5zdGF0dXNNZXNzYWdlO1xuICAgIH1cbiAgICBzZXQgc3RhdHVzTWVzc2FnZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yZXMuc3RhdHVzTWVzc2FnZSA9IHZhbHVlO1xuICAgIH1cbiAgICBzZXRIZWFkZXIobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcmVzLnNldEhlYWRlcihuYW1lLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZW1vdmVIZWFkZXIobmFtZSkge1xuICAgICAgICB0aGlzLl9yZXMucmVtb3ZlSGVhZGVyKG5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0SGVhZGVyVmFsdWVzKG5hbWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5fcmVzLmdldEhlYWRlcihuYW1lKTtcbiAgICAgICAgaWYgKHZhbHVlcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHZhbHVlcyA6IFtcbiAgICAgICAgICAgIHZhbHVlc1xuICAgICAgICBdKS5tYXAoKHZhbHVlKT0+dmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGhhc0hlYWRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXMuaGFzSGVhZGVyKG5hbWUpO1xuICAgIH1cbiAgICBnZXRIZWFkZXIobmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEhlYWRlclZhbHVlcyhuYW1lKTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHZhbHVlcy5qb2luKCcsJykgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXMuZ2V0SGVhZGVycygpO1xuICAgIH1cbiAgICBhcHBlbmRIZWFkZXIobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMuZ2V0SGVhZGVyVmFsdWVzKG5hbWUpID8/IFtdO1xuICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXMuc2V0SGVhZGVyKG5hbWUsIFtcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50VmFsdWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgYm9keSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnRleHRCb2R5ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZW5kKCkge1xuICAgICAgICB0aGlzLl9yZXMuZW5kKHRoaXMudGV4dEJvZHkpO1xuICAgIH1cbiAgICBvbkNsb3NlKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMub3JpZ2luYWxSZXNwb25zZS5vbignY2xvc2UnLCBjYWxsYmFjayk7XG4gICAgfVxufVxudmFyIF9ORVhUX1JFUVVFU1RfTUVUQTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bm9kZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/base-http/node.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/server/client-component-renderer-logger.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getClientComponentLoaderMetrics: function() {\n return getClientComponentLoaderMetrics;\n },\n wrapClientComponentLoader: function() {\n return wrapClientComponentLoader;\n }\n});\n// Combined load times for loading client components\nlet clientComponentLoadStart = 0;\nlet clientComponentLoadTimes = 0;\nlet clientComponentLoadCount = 0;\nfunction wrapClientComponentLoader(ComponentMod) {\n if (!('performance' in globalThis)) {\n return ComponentMod.__next_app__;\n }\n return {\n require: (...args)=>{\n const startTime = performance.now();\n if (clientComponentLoadStart === 0) {\n clientComponentLoadStart = startTime;\n }\n try {\n clientComponentLoadCount += 1;\n return ComponentMod.__next_app__.require(...args);\n } finally{\n clientComponentLoadTimes += performance.now() - startTime;\n }\n },\n loadChunk: (...args)=>{\n const startTime = performance.now();\n const result = ComponentMod.__next_app__.loadChunk(...args);\n // Avoid wrapping `loadChunk`'s result in an extra promise in case something like React depends on its identity.\n // We only need to know when it's settled.\n result.finally(()=>{\n clientComponentLoadTimes += performance.now() - startTime;\n });\n return result;\n }\n };\n}\nfunction getClientComponentLoaderMetrics(options = {}) {\n const metrics = clientComponentLoadStart === 0 ? undefined : {\n clientComponentLoadStart,\n clientComponentLoadTimes,\n clientComponentLoadCount\n };\n if (options.reset) {\n clientComponentLoadStart = 0;\n clientComponentLoadTimes = 0;\n clientComponentLoadCount = 0;\n }\n return metrics;\n}\n\n//# sourceMappingURL=client-component-renderer-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jbGllbnQtY29tcG9uZW50LXJlbmRlcmVyLWxvZ2dlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGNsaWVudC1jb21wb25lbnQtcmVuZGVyZXItbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZ2V0Q2xpZW50Q29tcG9uZW50TG9hZGVyTWV0cmljczogbnVsbCxcbiAgICB3cmFwQ2xpZW50Q29tcG9uZW50TG9hZGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGdldENsaWVudENvbXBvbmVudExvYWRlck1ldHJpY3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0Q2xpZW50Q29tcG9uZW50TG9hZGVyTWV0cmljcztcbiAgICB9LFxuICAgIHdyYXBDbGllbnRDb21wb25lbnRMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gd3JhcENsaWVudENvbXBvbmVudExvYWRlcjtcbiAgICB9XG59KTtcbi8vIENvbWJpbmVkIGxvYWQgdGltZXMgZm9yIGxvYWRpbmcgY2xpZW50IGNvbXBvbmVudHNcbmxldCBjbGllbnRDb21wb25lbnRMb2FkU3RhcnQgPSAwO1xubGV0IGNsaWVudENvbXBvbmVudExvYWRUaW1lcyA9IDA7XG5sZXQgY2xpZW50Q29tcG9uZW50TG9hZENvdW50ID0gMDtcbmZ1bmN0aW9uIHdyYXBDbGllbnRDb21wb25lbnRMb2FkZXIoQ29tcG9uZW50TW9kKSB7XG4gICAgaWYgKCEoJ3BlcmZvcm1hbmNlJyBpbiBnbG9iYWxUaGlzKSkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50TW9kLl9fbmV4dF9hcHBfXztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZTogKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgICAgIGlmIChjbGllbnRDb21wb25lbnRMb2FkU3RhcnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkU3RhcnQgPSBzdGFydFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNsaWVudENvbXBvbmVudExvYWRDb3VudCArPSAxO1xuICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnRNb2QuX19uZXh0X2FwcF9fLnJlcXVpcmUoLi4uYXJncyk7XG4gICAgICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICAgICAgY2xpZW50Q29tcG9uZW50TG9hZFRpbWVzICs9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb2FkQ2h1bms6ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBDb21wb25lbnRNb2QuX19uZXh0X2FwcF9fLmxvYWRDaHVuayguLi5hcmdzKTtcbiAgICAgICAgICAgIC8vIEF2b2lkIHdyYXBwaW5nIGBsb2FkQ2h1bmtgJ3MgcmVzdWx0IGluIGFuIGV4dHJhIHByb21pc2UgaW4gY2FzZSBzb21ldGhpbmcgbGlrZSBSZWFjdCBkZXBlbmRzIG9uIGl0cyBpZGVudGl0eS5cbiAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBrbm93IHdoZW4gaXQncyBzZXR0bGVkLlxuICAgICAgICAgICAgcmVzdWx0LmZpbmFsbHkoKCk9PntcbiAgICAgICAgICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkVGltZXMgKz0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50Q29tcG9uZW50TG9hZGVyTWV0cmljcyhvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBtZXRyaWNzID0gY2xpZW50Q29tcG9uZW50TG9hZFN0YXJ0ID09PSAwID8gdW5kZWZpbmVkIDoge1xuICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkU3RhcnQsXG4gICAgICAgIGNsaWVudENvbXBvbmVudExvYWRUaW1lcyxcbiAgICAgICAgY2xpZW50Q29tcG9uZW50TG9hZENvdW50XG4gICAgfTtcbiAgICBpZiAob3B0aW9ucy5yZXNldCkge1xuICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkU3RhcnQgPSAwO1xuICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkVGltZXMgPSAwO1xuICAgICAgICBjbGllbnRDb21wb25lbnRMb2FkQ291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gbWV0cmljcztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xpZW50LWNvbXBvbmVudC1yZW5kZXJlci1sb2dnZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupedByCallsiteServerErrorLoggerDev\", ({\n enumerable: true,\n get: function() {\n return createDedupedByCallsiteServerErrorLoggerDev;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst errorRef = {\n current: null\n};\n// React.cache is currently only available in canary/experimental React channels.\nconst cache = typeof _react.cache === 'function' ? _react.cache : (fn)=>fn;\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = false ? 0 : console.warn;\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n(key)=>{\n try {\n logErrorOrWarn(errorRef.current);\n } finally{\n errorRef.current = null;\n }\n});\nfunction createDedupedByCallsiteServerErrorLoggerDev(getMessage) {\n return function logDedupedError(...args) {\n const message = getMessage(...args);\n if (true) {\n var _stack;\n const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\\n');\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message);\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // \n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4];\n errorRef.current = message;\n flushCurrentErrorIfNew(key);\n }\n } else {}\n };\n}\n\n//# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsK0VBQThFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE1BQW1DLEdBQUcsQ0FBYTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsS0FBSyxFQUVOO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxjcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldlwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldjtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5jb25zdCBlcnJvclJlZiA9IHtcbiAgICBjdXJyZW50OiBudWxsXG59O1xuLy8gUmVhY3QuY2FjaGUgaXMgY3VycmVudGx5IG9ubHkgYXZhaWxhYmxlIGluIGNhbmFyeS9leHBlcmltZW50YWwgUmVhY3QgY2hhbm5lbHMuXG5jb25zdCBjYWNoZSA9IHR5cGVvZiBfcmVhY3QuY2FjaGUgPT09ICdmdW5jdGlvbicgPyBfcmVhY3QuY2FjaGUgOiAoZm4pPT5mbjtcbi8vIFdoZW4gQ2FjaGUgQ29tcG9uZW50cyBpcyBlbmFibGVkLCB3ZSByZWNvcmQgdGhlc2UgYXMgZXJyb3JzIHNvIHRoYXQgdGhleVxuLy8gYXJlIGNhcHR1cmVkIGJ5IHRoZSBkZXYgb3ZlcmxheSBhcyBpdCdzIG1vcmUgY3JpdGljYWwgdG8gZml4IHRoZXNlXG4vLyB3aGVuIGVuYWJsZWQuXG5jb25zdCBsb2dFcnJvck9yV2FybiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTID8gY29uc29sZS5lcnJvciA6IGNvbnNvbGUud2Fybjtcbi8vIFdlIGRvbid0IHdhbnQgdG8gZGVkdXBlIGFjcm9zcyByZXF1ZXN0cy5cbi8vIFRoZSBkZXZlbG9wZXIgbWlnaHQndmUganVzdCBhdHRlbXB0ZWQgdG8gZml4IHRoZSB3YXJuaW5nIHNvIHdlIHNob3VsZCB3YXJuIGFnYWluIGlmIGl0IHN0aWxsIGhhcHBlbnMuXG5jb25zdCBmbHVzaEN1cnJlbnRFcnJvcklmTmV3ID0gY2FjaGUoLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBjYWNoZSBrZXlcbihrZXkpPT57XG4gICAgdHJ5IHtcbiAgICAgICAgbG9nRXJyb3JPcldhcm4oZXJyb3JSZWYuY3VycmVudCk7XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICBlcnJvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNyZWF0ZURlZHVwZWRCeUNhbGxzaXRlU2VydmVyRXJyb3JMb2dnZXJEZXYoZ2V0TWVzc2FnZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBsb2dEZWR1cGVkRXJyb3IoLi4uYXJncykge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZ2V0TWVzc2FnZSguLi5hcmdzKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2s7XG4gICAgICAgICAgICBjb25zdCBjYWxsU3RhY2tGcmFtZXMgPSAoX3N0YWNrID0gbmV3IEVycm9yKCkuc3RhY2spID09IG51bGwgPyB2b2lkIDAgOiBfc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgaWYgKGNhbGxTdGFja0ZyYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGNhbGxTdGFja0ZyYW1lcy5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3JPcldhcm4obWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yOlxuICAgICAgICAgICAgICAgIC8vICAgbG9nRGVkdXBlZEVycm9yXG4gICAgICAgICAgICAgICAgLy8gICBhc3luY0FwaUJlaW5nQWNjZXNzZWRTeW5jaHJvbm91c2x5XG4gICAgICAgICAgICAgICAgLy8gICA8dXNlcmxhbmQgY2FsbHNpdGU+XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBicmVha3MgaWYgc291cmNlbWFwcyB3aXRoIGlnbm9yZSBsaXN0cyBhcmUgZW5hYmxlZC5cbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBjYWxsU3RhY2tGcmFtZXNbNF07XG4gICAgICAgICAgICAgICAgZXJyb3JSZWYuY3VycmVudCA9IG1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgZmx1c2hDdXJyZW50RXJyb3JJZk5ldyhrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nRXJyb3JPcldhcm4obWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/dynamic-rendering-utils.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isHangingPromiseRejectionError: function() {\n return isHangingPromiseRejectionError;\n },\n makeDevtoolsIOAwarePromise: function() {\n return makeDevtoolsIOAwarePromise;\n },\n makeHangingPromise: function() {\n return makeHangingPromise;\n }\n});\nfunction isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst abortListenersBySignal = new WeakMap();\nfunction makeHangingPromise(signal, route, expression) {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression));\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\nfunction makeDevtoolsIOAwarePromise(underlying) {\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxZQUFZLHNHQUFzRyxZQUFZLCtLQUErSyxNQUFNO0FBQ3pWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsc0JBQXNCO0FBQ3pEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxkeW5hbWljLXJlbmRlcmluZy11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogbnVsbCxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogbnVsbCxcbiAgICBtYWtlSGFuZ2luZ1Byb21pc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjtcbiAgICB9LFxuICAgIG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlO1xuICAgIH0sXG4gICAgbWFrZUhhbmdpbmdQcm9taXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nUHJvbWlzZTtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcihlcnIpIHtcbiAgICBpZiAodHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHwgZXJyID09PSBudWxsIHx8ICEoJ2RpZ2VzdCcgaW4gZXJyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBlcnIuZGlnZXN0ID09PSBIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OO1xufVxuY29uc3QgSEFOR0lOR19QUk9NSVNFX1JFSkVDVElPTiA9ICdIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OJztcbmNsYXNzIEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3Iocm91dGUsIGV4cHJlc3Npb24pe1xuICAgICAgICBzdXBlcihgRHVyaW5nIHByZXJlbmRlcmluZywgJHtleHByZXNzaW9ufSByZWplY3RzIHdoZW4gdGhlIHByZXJlbmRlciBpcyBjb21wbGV0ZS4gVHlwaWNhbGx5IHRoZXNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSBSZWFjdCBidXQgaWYgeW91IG1vdmUgJHtleHByZXNzaW9ufSB0byBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHVzaW5nIFxcYHNldFRpbWVvdXRcXGAsIFxcYGFmdGVyXFxgLCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB5b3UgbWF5IG9ic2VydmUgdGhpcyBlcnJvciBhbmQgeW91IHNob3VsZCBoYW5kbGUgaXQgaW4gdGhhdCBjb250ZXh0LiBUaGlzIG9jY3VycmVkIGF0IHJvdXRlIFwiJHtyb3V0ZX1cIi5gKSwgdGhpcy5yb3V0ZSA9IHJvdXRlLCB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uLCB0aGlzLmRpZ2VzdCA9IEhBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT047XG4gICAgfVxufVxuY29uc3QgYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbCA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBtYWtlSGFuZ2luZ1Byb21pc2Uoc2lnbmFsLCByb3V0ZSwgZXhwcmVzc2lvbikge1xuICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5naW5nUHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpPT57XG4gICAgICAgICAgICBjb25zdCBib3VuZFJlamVjdGlvbiA9IHJlamVjdC5iaW5kKG51bGwsIG5ldyBIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yKHJvdXRlLCBleHByZXNzaW9uKSk7XG4gICAgICAgICAgICBsZXQgY3VycmVudExpc3RlbmVycyA9IGFib3J0TGlzdGVuZXJzQnlTaWduYWwuZ2V0KHNpZ25hbCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudExpc3RlbmVycykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRMaXN0ZW5lcnMucHVzaChib3VuZFJlamVjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgYm91bmRSZWplY3Rpb25cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGFib3J0TGlzdGVuZXJzQnlTaWduYWwuc2V0KHNpZ25hbCwgbGlzdGVuZXJzKTtcbiAgICAgICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKT0+e1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSBhcmUgZmluZSBpZiBubyBvbmUgYWN0dWFsbHkgYXdhaXRzIHRoaXMgcHJvbWlzZS4gV2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoaXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBzb1xuICAgICAgICAvLyB3ZSBhdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgaGVyZSB0byBzdXBwcmVzcyB0aGlzIHdhcm5pbmcuIElmIHlvdSBhY3R1YWxseSBhd2FpdCBzb21ld2hlcmUgb3IgY29uc3RydWN0XG4gICAgICAgIC8vIHlvdXIgb3duIHByb21pc2Ugb3V0IG9mIGl0IHlvdSdsbCBuZWVkIHRvIGVuc3VyZSB5b3UgaGFuZGxlIHRoZSBlcnJvciB3aGVuIGl0IHJlamVjdHMuXG4gICAgICAgIGhhbmdpbmdQcm9taXNlLmNhdGNoKGlnbm9yZVJlamVjdCk7XG4gICAgICAgIHJldHVybiBoYW5naW5nUHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBpZ25vcmVSZWplY3QoKSB7fVxuZnVuY3Rpb24gbWFrZURldnRvb2xzSU9Bd2FyZVByb21pc2UodW5kZXJseWluZykge1xuICAgIC8vIGluIFJlYWN0IERldlRvb2xzIGlmIHdlIHJlc29sdmUgaW4gYSBzZXRUaW1lb3V0IHdlIHdpbGwgb2JzZXJ2ZVxuICAgIC8vIHRoZSBwcm9taXNlIHJlc29sdXRpb24gYXMgc29tZXRoaW5nIHRoYXQgY2FuIHN1c3BlbmQgYSBib3VuZGFyeSBvciByb290LlxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgLy8gTXVzdCB1c2Ugc2V0VGltZW91dCB0byBiZSBjb25zaWRlcmVkIElPIFJlYWN0IERldlRvb2xzLiBzZXRJbW1lZGlhdGUgd2lsbCBub3Qgd29yay5cbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZSh1bmRlcmx5aW5nKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5bmFtaWMtcmVuZGVyaW5nLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/instrumentation/utils.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/server/instrumentation/utils.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getRevalidateReason\", ({\n enumerable: true,\n get: function() {\n return getRevalidateReason;\n }\n}));\nfunction getRevalidateReason(params) {\n if (params.isOnDemandRevalidate) {\n return 'on-demand';\n }\n if (params.isRevalidate) {\n return 'stale';\n }\n return undefined;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9pbnN0cnVtZW50YXRpb24vdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRix1REFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcaW5zdHJ1bWVudGF0aW9uXFx1dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldFJldmFsaWRhdGVSZWFzb25cIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFJldmFsaWRhdGVSZWFzb247XG4gICAgfVxufSk7XG5mdW5jdGlvbiBnZXRSZXZhbGlkYXRlUmVhc29uKHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMuaXNPbkRlbWFuZFJldmFsaWRhdGUpIHtcbiAgICAgICAgcmV0dXJuICdvbi1kZW1hbmQnO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmlzUmV2YWxpZGF0ZSkge1xuICAgICAgICByZXR1cm4gJ3N0YWxlJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/instrumentation/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js": /*!*************************************************************!*\ !*** ./node_modules/next/dist/server/lib/app-dir-module.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getComponentTypeModule: function() {\n return getComponentTypeModule;\n },\n getLayoutOrPageModule: function() {\n return getLayoutOrPageModule;\n }\n});\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nasync function getLayoutOrPageModule(loaderTree) {\n const { layout, page, defaultPage } = loaderTree[2];\n const isLayout = typeof layout !== 'undefined';\n const isPage = typeof page !== 'undefined';\n const isDefaultPage = typeof defaultPage !== 'undefined' && loaderTree[0] === _segment.DEFAULT_SEGMENT_KEY;\n let mod = undefined;\n let modType = undefined;\n let filePath = undefined;\n if (isLayout) {\n mod = await layout[0]();\n modType = 'layout';\n filePath = layout[1];\n } else if (isPage) {\n mod = await page[0]();\n modType = 'page';\n filePath = page[1];\n } else if (isDefaultPage) {\n mod = await defaultPage[0]();\n modType = 'page';\n filePath = defaultPage[1];\n }\n return {\n mod,\n modType,\n filePath\n };\n}\nasync function getComponentTypeModule(loaderTree, moduleType) {\n const { [moduleType]: module1 } = loaderTree[2];\n if (typeof module1 !== 'undefined') {\n return await module1[0]();\n }\n return undefined;\n}\n\n//# sourceMappingURL=app-dir-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvYXBwLWRpci1tb2R1bGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsc0ZBQTBCO0FBQ25EO0FBQ0EsWUFBWSw0QkFBNEI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdCQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGxpYlxcYXBwLWRpci1tb2R1bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBnZXRDb21wb25lbnRUeXBlTW9kdWxlOiBudWxsLFxuICAgIGdldExheW91dE9yUGFnZU1vZHVsZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBnZXRDb21wb25lbnRUeXBlTW9kdWxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudFR5cGVNb2R1bGU7XG4gICAgfSxcbiAgICBnZXRMYXlvdXRPclBhZ2VNb2R1bGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0TGF5b3V0T3JQYWdlTW9kdWxlO1xuICAgIH1cbn0pO1xuY29uc3QgX3NlZ21lbnQgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50XCIpO1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF5b3V0T3JQYWdlTW9kdWxlKGxvYWRlclRyZWUpIHtcbiAgICBjb25zdCB7IGxheW91dCwgcGFnZSwgZGVmYXVsdFBhZ2UgfSA9IGxvYWRlclRyZWVbMl07XG4gICAgY29uc3QgaXNMYXlvdXQgPSB0eXBlb2YgbGF5b3V0ICE9PSAndW5kZWZpbmVkJztcbiAgICBjb25zdCBpc1BhZ2UgPSB0eXBlb2YgcGFnZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgY29uc3QgaXNEZWZhdWx0UGFnZSA9IHR5cGVvZiBkZWZhdWx0UGFnZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9hZGVyVHJlZVswXSA9PT0gX3NlZ21lbnQuREVGQVVMVF9TRUdNRU5UX0tFWTtcbiAgICBsZXQgbW9kID0gdW5kZWZpbmVkO1xuICAgIGxldCBtb2RUeXBlID0gdW5kZWZpbmVkO1xuICAgIGxldCBmaWxlUGF0aCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNMYXlvdXQpIHtcbiAgICAgICAgbW9kID0gYXdhaXQgbGF5b3V0WzBdKCk7XG4gICAgICAgIG1vZFR5cGUgPSAnbGF5b3V0JztcbiAgICAgICAgZmlsZVBhdGggPSBsYXlvdXRbMV07XG4gICAgfSBlbHNlIGlmIChpc1BhZ2UpIHtcbiAgICAgICAgbW9kID0gYXdhaXQgcGFnZVswXSgpO1xuICAgICAgICBtb2RUeXBlID0gJ3BhZ2UnO1xuICAgICAgICBmaWxlUGF0aCA9IHBhZ2VbMV07XG4gICAgfSBlbHNlIGlmIChpc0RlZmF1bHRQYWdlKSB7XG4gICAgICAgIG1vZCA9IGF3YWl0IGRlZmF1bHRQYWdlWzBdKCk7XG4gICAgICAgIG1vZFR5cGUgPSAncGFnZSc7XG4gICAgICAgIGZpbGVQYXRoID0gZGVmYXVsdFBhZ2VbMV07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1vZCxcbiAgICAgICAgbW9kVHlwZSxcbiAgICAgICAgZmlsZVBhdGhcbiAgICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29tcG9uZW50VHlwZU1vZHVsZShsb2FkZXJUcmVlLCBtb2R1bGVUeXBlKSB7XG4gICAgY29uc3QgeyBbbW9kdWxlVHlwZV06IG1vZHVsZTEgfSA9IGxvYWRlclRyZWVbMl07XG4gICAgaWYgKHR5cGVvZiBtb2R1bGUxICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gYXdhaXQgbW9kdWxlMVswXSgpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtZGlyLW1vZHVsZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/app-dir-module.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/cache-control.js": /*!************************************************************!*\ !*** ./node_modules/next/dist/server/lib/cache-control.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getCacheControlHeader\", ({\n enumerable: true,\n get: function() {\n return getCacheControlHeader;\n }\n}));\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction getCacheControlHeader({ revalidate, expire }) {\n const swrHeader = typeof revalidate === 'number' && expire !== undefined && revalidate < expire ? `, stale-while-revalidate=${expire - revalidate}` : '';\n if (revalidate === 0) {\n return 'private, no-cache, no-store, max-age=0, must-revalidate';\n } else if (typeof revalidate === 'number') {\n return `s-maxage=${revalidate}${swrHeader}`;\n }\n return `s-maxage=${_constants.CACHE_ONE_YEAR}${swrHeader}`;\n}\n\n//# sourceMappingURL=cache-control.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvY2FjaGUtY29udHJvbC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHlEQUF3RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxpQ0FBaUMsb0JBQW9CO0FBQ3JELGtJQUFrSSxvQkFBb0I7QUFDdEo7QUFDQTtBQUNBLE1BQU07QUFDTiwyQkFBMkIsV0FBVyxFQUFFLFVBQVU7QUFDbEQ7QUFDQSx1QkFBdUIsMEJBQTBCLEVBQUUsVUFBVTtBQUM3RDs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXGNhY2hlLWNvbnRyb2wuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRDYWNoZUNvbnRyb2xIZWFkZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldENhY2hlQ29udHJvbEhlYWRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vLi4vbGliL2NvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIGdldENhY2hlQ29udHJvbEhlYWRlcih7IHJldmFsaWRhdGUsIGV4cGlyZSB9KSB7XG4gICAgY29uc3Qgc3dySGVhZGVyID0gdHlwZW9mIHJldmFsaWRhdGUgPT09ICdudW1iZXInICYmIGV4cGlyZSAhPT0gdW5kZWZpbmVkICYmIHJldmFsaWRhdGUgPCBleHBpcmUgPyBgLCBzdGFsZS13aGlsZS1yZXZhbGlkYXRlPSR7ZXhwaXJlIC0gcmV2YWxpZGF0ZX1gIDogJyc7XG4gICAgaWYgKHJldmFsaWRhdGUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuICdwcml2YXRlLCBuby1jYWNoZSwgbm8tc3RvcmUsIG1heC1hZ2U9MCwgbXVzdC1yZXZhbGlkYXRlJztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXZhbGlkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gYHMtbWF4YWdlPSR7cmV2YWxpZGF0ZX0ke3N3ckhlYWRlcn1gO1xuICAgIH1cbiAgICByZXR1cm4gYHMtbWF4YWdlPSR7X2NvbnN0YW50cy5DQUNIRV9PTkVfWUVBUn0ke3N3ckhlYWRlcn1gO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYWNoZS1jb250cm9sLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/cache-control.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/clone-response.js": /*!*************************************************************!*\ !*** ./node_modules/next/dist/server/lib/clone-response.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"cloneResponse\", ({\n enumerable: true,\n get: function() {\n return cloneResponse;\n }\n}));\nconst noop = ()=>{};\nlet registry;\nif (globalThis.FinalizationRegistry) {\n registry = new FinalizationRegistry((weakRef)=>{\n const stream = weakRef.deref();\n if (stream && !stream.locked) {\n stream.cancel('Response object has been garbage collected').then(noop);\n }\n });\n}\nfunction cloneResponse(original) {\n // If the response has no body, then we can just return the original response\n // twice because it's immutable.\n if (!original.body) {\n return [\n original,\n original\n ];\n }\n const [body1, body2] = original.body.tee();\n const cloned1 = new Response(body1, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned1, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n // The Fetch Standard allows users to skip consuming the response body by\n // relying on garbage collection to release connection resources.\n // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection\n //\n // To cancel the stream you then need to cancel both resulting branches.\n // Teeing a stream will generally lock it for the duration, preventing other\n // readers from locking it.\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee\n // cloned2 is stored in a react cache and cloned for subsequent requests.\n // It is the original request, and is is garbage collected by a\n // FinalizationRegistry in Undici, but since we're tee-ing the stream\n // ourselves, we need to cancel clone1's stream (the response returned from\n // our dedupe fetch) when clone1 is reclaimed, otherwise we leak memory.\n if (registry && cloned1.body) {\n registry.register(cloned1, new WeakRef(cloned1.body));\n }\n const cloned2 = new Response(body2, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned2, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n return [\n cloned1,\n cloned2\n ];\n}\n\n//# sourceMappingURL=clone-response.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvY2xvbmUtcmVzcG9uc2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixpREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXGNsb25lLXJlc3BvbnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY2xvbmVSZXNwb25zZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2xvbmVSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IG5vb3AgPSAoKT0+e307XG5sZXQgcmVnaXN0cnk7XG5pZiAoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkge1xuICAgIHJlZ2lzdHJ5ID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCh3ZWFrUmVmKT0+e1xuICAgICAgICBjb25zdCBzdHJlYW0gPSB3ZWFrUmVmLmRlcmVmKCk7XG4gICAgICAgIGlmIChzdHJlYW0gJiYgIXN0cmVhbS5sb2NrZWQpIHtcbiAgICAgICAgICAgIHN0cmVhbS5jYW5jZWwoJ1Jlc3BvbnNlIG9iamVjdCBoYXMgYmVlbiBnYXJiYWdlIGNvbGxlY3RlZCcpLnRoZW4obm9vcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNsb25lUmVzcG9uc2Uob3JpZ2luYWwpIHtcbiAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaGFzIG5vIGJvZHksIHRoZW4gd2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXNwb25zZVxuICAgIC8vIHR3aWNlIGJlY2F1c2UgaXQncyBpbW11dGFibGUuXG4gICAgaWYgKCFvcmlnaW5hbC5ib2R5KSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBvcmlnaW5hbCxcbiAgICAgICAgICAgIG9yaWdpbmFsXG4gICAgICAgIF07XG4gICAgfVxuICAgIGNvbnN0IFtib2R5MSwgYm9keTJdID0gb3JpZ2luYWwuYm9keS50ZWUoKTtcbiAgICBjb25zdCBjbG9uZWQxID0gbmV3IFJlc3BvbnNlKGJvZHkxLCB7XG4gICAgICAgIHN0YXR1czogb3JpZ2luYWwuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiBvcmlnaW5hbC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBvcmlnaW5hbC5oZWFkZXJzXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsb25lZDEsICd1cmwnLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbC51cmwsXG4gICAgICAgIC8vIEhvdyB0aGUgb3JpZ2luYWwgcmVzcG9uc2UudXJsIGJlaGF2ZXNcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICAvLyBUaGUgRmV0Y2ggU3RhbmRhcmQgYWxsb3dzIHVzZXJzIHRvIHNraXAgY29uc3VtaW5nIHRoZSByZXNwb25zZSBib2R5IGJ5XG4gICAgLy8gcmVseWluZyBvbiBnYXJiYWdlIGNvbGxlY3Rpb24gdG8gcmVsZWFzZSBjb25uZWN0aW9uIHJlc291cmNlcy5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL3VuZGljaT90YWI9cmVhZG1lLW92LWZpbGUjZ2FyYmFnZS1jb2xsZWN0aW9uXG4gICAgLy9cbiAgICAvLyBUbyBjYW5jZWwgdGhlIHN0cmVhbSB5b3UgdGhlbiBuZWVkIHRvIGNhbmNlbCBib3RoIHJlc3VsdGluZyBicmFuY2hlcy5cbiAgICAvLyBUZWVpbmcgYSBzdHJlYW0gd2lsbCBnZW5lcmFsbHkgbG9jayBpdCBmb3IgdGhlIGR1cmF0aW9uLCBwcmV2ZW50aW5nIG90aGVyXG4gICAgLy8gcmVhZGVycyBmcm9tIGxvY2tpbmcgaXQuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1JlYWRhYmxlU3RyZWFtL3RlZVxuICAgIC8vIGNsb25lZDIgaXMgc3RvcmVkIGluIGEgcmVhY3QgY2FjaGUgYW5kIGNsb25lZCBmb3Igc3Vic2VxdWVudCByZXF1ZXN0cy5cbiAgICAvLyBJdCBpcyB0aGUgb3JpZ2luYWwgcmVxdWVzdCwgYW5kIGlzIGlzIGdhcmJhZ2UgY29sbGVjdGVkIGJ5IGFcbiAgICAvLyBGaW5hbGl6YXRpb25SZWdpc3RyeSBpbiBVbmRpY2ksIGJ1dCBzaW5jZSB3ZSdyZSB0ZWUtaW5nIHRoZSBzdHJlYW1cbiAgICAvLyBvdXJzZWx2ZXMsIHdlIG5lZWQgdG8gY2FuY2VsIGNsb25lMSdzIHN0cmVhbSAodGhlIHJlc3BvbnNlIHJldHVybmVkIGZyb21cbiAgICAvLyBvdXIgZGVkdXBlIGZldGNoKSB3aGVuIGNsb25lMSBpcyByZWNsYWltZWQsIG90aGVyd2lzZSB3ZSBsZWFrIG1lbW9yeS5cbiAgICBpZiAocmVnaXN0cnkgJiYgY2xvbmVkMS5ib2R5KSB7XG4gICAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKGNsb25lZDEsIG5ldyBXZWFrUmVmKGNsb25lZDEuYm9keSkpO1xuICAgIH1cbiAgICBjb25zdCBjbG9uZWQyID0gbmV3IFJlc3BvbnNlKGJvZHkyLCB7XG4gICAgICAgIHN0YXR1czogb3JpZ2luYWwuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiBvcmlnaW5hbC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBvcmlnaW5hbC5oZWFkZXJzXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsb25lZDIsICd1cmwnLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbC51cmwsXG4gICAgICAgIC8vIEhvdyB0aGUgb3JpZ2luYWwgcmVzcG9uc2UudXJsIGJlaGF2ZXNcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gW1xuICAgICAgICBjbG9uZWQxLFxuICAgICAgICBjbG9uZWQyXG4gICAgXTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xvbmUtcmVzcG9uc2UuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/clone-response.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/server/lib/dedupe-fetch.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\n * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupeFetch\", ({\n enumerable: true,\n get: function() {\n return createDedupeFetch;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\"));\nconst _cloneresponse = __webpack_require__(/*! ./clone-response */ \"(rsc)/./node_modules/next/dist/server/lib/clone-response.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]' // generateCacheKey(new Request('https://blank'));\n;\nfunction generateCacheKey(request) {\n // We pick the fields that goes into the key used to dedupe requests.\n // We don't include the `cache` field, because we end up using whatever\n // caching resulted from the first request.\n // Notably we currently don't consider non-standard (or future) options.\n // This might not be safe. TODO: warn for non-standard extensions differing.\n // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.\n return JSON.stringify([\n request.method,\n Array.from(request.headers.entries()),\n request.mode,\n request.redirect,\n request.credentials,\n request.referrer,\n request.referrerPolicy,\n request.integrity\n ]);\n}\nfunction createDedupeFetch(originalFetch) {\n const getCacheEntries = _react.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key\n (url)=>[]);\n return function dedupeFetch(resource, options) {\n if (options && options.signal) {\n // If we're passed a signal, then we assume that\n // someone else controls the lifetime of this object and opts out of\n // caching. It's effectively the opt-out mechanism.\n // Ideally we should be able to check this on the Request but\n // it always gets initialized with its own signal so we don't\n // know if it's supposed to override - unless we also override the\n // Request constructor.\n return originalFetch(resource, options);\n }\n // Normalize the Request\n let url;\n let cacheKey;\n if (typeof resource === 'string' && !options) {\n // Fast path.\n cacheKey = simpleCacheKey;\n url = resource;\n } else {\n // Normalize the request.\n // if resource is not a string or a URL (its an instance of Request)\n // then do not instantiate a new Request but instead\n // reuse the request as to not disturb the body in the event it's a ReadableStream.\n const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource;\n if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) {\n // We currently don't dedupe requests that might have side-effects. Those\n // have to be explicitly cached. We assume that the request doesn't have a\n // body if it's GET or HEAD.\n // keepalive gets treated the same as if you passed a custom cache signal.\n return originalFetch(resource, options);\n }\n cacheKey = generateCacheKey(request);\n url = request.url;\n }\n const cacheEntries = getCacheEntries(url);\n for(let i = 0, j = cacheEntries.length; i < j; i += 1){\n const [key, promise] = cacheEntries[i];\n if (key === cacheKey) {\n return promise.then(()=>{\n const response = cacheEntries[i][2];\n if (!response) throw Object.defineProperty(new _invarianterror.InvariantError('No cached response'), \"__NEXT_ERROR_CODE\", {\n value: \"E579\",\n enumerable: false,\n configurable: true\n });\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);\n cacheEntries[i][2] = cloned2;\n return cloned1;\n });\n }\n }\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n const promise = originalFetch(resource, options);\n const entry = [\n cacheKey,\n promise,\n null\n ];\n cacheEntries.push(entry);\n return promise.then((response)=>{\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(response);\n entry[2] = cloned2;\n return cloned1;\n });\n };\n}\n\n//# sourceMappingURL=dedupe-fetch.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZGVkdXBlLWZldGNoLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixxREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRix1REFBdUQsbUJBQU8sQ0FBQyxpR0FBTztBQUN0RSx1QkFBdUIsbUJBQU8sQ0FBQyxxRkFBa0I7QUFDakQsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXGRlZHVwZS1mZXRjaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2Q0ZTc4YzQyYTk0YmUwMjdiNGRjN2VkMjY1OWE1ZmRkZmJmOWJkNGUvcGFja2FnZXMvcmVhY3Qvc3JjL1JlYWN0RmV0Y2guanNcbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZURlZHVwZUZldGNoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEZWR1cGVGZXRjaDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX2Nsb25lcmVzcG9uc2UgPSByZXF1aXJlKFwiLi9jbG9uZS1yZXNwb25zZVwiKTtcbmNvbnN0IF9pbnZhcmlhbnRlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvclwiKTtcbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHtcbiAgICBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqID0ge1xuICAgICAgICBfX3Byb3RvX186IG51bGxcbiAgICB9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuY29uc3Qgc2ltcGxlQ2FjaGVLZXkgPSAnW1wiR0VUXCIsW10sbnVsbCxcImZvbGxvd1wiLG51bGwsbnVsbCxudWxsLG51bGxdJyAvLyBnZW5lcmF0ZUNhY2hlS2V5KG5ldyBSZXF1ZXN0KCdodHRwczovL2JsYW5rJykpO1xuO1xuZnVuY3Rpb24gZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KSB7XG4gICAgLy8gV2UgcGljayB0aGUgZmllbGRzIHRoYXQgZ29lcyBpbnRvIHRoZSBrZXkgdXNlZCB0byBkZWR1cGUgcmVxdWVzdHMuXG4gICAgLy8gV2UgZG9uJ3QgaW5jbHVkZSB0aGUgYGNhY2hlYCBmaWVsZCwgYmVjYXVzZSB3ZSBlbmQgdXAgdXNpbmcgd2hhdGV2ZXJcbiAgICAvLyBjYWNoaW5nIHJlc3VsdGVkIGZyb20gdGhlIGZpcnN0IHJlcXVlc3QuXG4gICAgLy8gTm90YWJseSB3ZSBjdXJyZW50bHkgZG9uJ3QgY29uc2lkZXIgbm9uLXN0YW5kYXJkIChvciBmdXR1cmUpIG9wdGlvbnMuXG4gICAgLy8gVGhpcyBtaWdodCBub3QgYmUgc2FmZS4gVE9ETzogd2FybiBmb3Igbm9uLXN0YW5kYXJkIGV4dGVuc2lvbnMgZGlmZmVyaW5nLlxuICAgIC8vIElGIFlPVSBDSEFOR0UgVEhJUyBVUERBVEUgVEhFIHNpbXBsZUNhY2hlS2V5IEFCT1ZFLlxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIHJlcXVlc3QubWV0aG9kLFxuICAgICAgICBBcnJheS5mcm9tKHJlcXVlc3QuaGVhZGVycy5lbnRyaWVzKCkpLFxuICAgICAgICByZXF1ZXN0Lm1vZGUsXG4gICAgICAgIHJlcXVlc3QucmVkaXJlY3QsXG4gICAgICAgIHJlcXVlc3QuY3JlZGVudGlhbHMsXG4gICAgICAgIHJlcXVlc3QucmVmZXJyZXIsXG4gICAgICAgIHJlcXVlc3QucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgIHJlcXVlc3QuaW50ZWdyaXR5XG4gICAgXSk7XG59XG5mdW5jdGlvbiBjcmVhdGVEZWR1cGVGZXRjaChvcmlnaW5hbEZldGNoKSB7XG4gICAgY29uc3QgZ2V0Q2FjaGVFbnRyaWVzID0gX3JlYWN0LmNhY2hlKC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgLS0gdXJsIGlzIHRoZSBjYWNoZSBrZXlcbiAgICAodXJsKT0+W10pO1xuICAgIHJldHVybiBmdW5jdGlvbiBkZWR1cGVGZXRjaChyZXNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNpZ25hbCkge1xuICAgICAgICAgICAgLy8gSWYgd2UncmUgcGFzc2VkIGEgc2lnbmFsLCB0aGVuIHdlIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAvLyBzb21lb25lIGVsc2UgY29udHJvbHMgdGhlIGxpZmV0aW1lIG9mIHRoaXMgb2JqZWN0IGFuZCBvcHRzIG91dCBvZlxuICAgICAgICAgICAgLy8gY2FjaGluZy4gSXQncyBlZmZlY3RpdmVseSB0aGUgb3B0LW91dCBtZWNoYW5pc20uXG4gICAgICAgICAgICAvLyBJZGVhbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrIHRoaXMgb24gdGhlIFJlcXVlc3QgYnV0XG4gICAgICAgICAgICAvLyBpdCBhbHdheXMgZ2V0cyBpbml0aWFsaXplZCB3aXRoIGl0cyBvd24gc2lnbmFsIHNvIHdlIGRvbid0XG4gICAgICAgICAgICAvLyBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gb3ZlcnJpZGUgLSB1bmxlc3Mgd2UgYWxzbyBvdmVycmlkZSB0aGVcbiAgICAgICAgICAgIC8vIFJlcXVlc3QgY29uc3RydWN0b3IuXG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBSZXF1ZXN0XG4gICAgICAgIGxldCB1cmw7XG4gICAgICAgIGxldCBjYWNoZUtleTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gJ3N0cmluZycgJiYgIW9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIEZhc3QgcGF0aC5cbiAgICAgICAgICAgIGNhY2hlS2V5ID0gc2ltcGxlQ2FjaGVLZXk7XG4gICAgICAgICAgICB1cmwgPSByZXNvdXJjZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgIC8vIGlmIHJlc291cmNlIGlzIG5vdCBhIHN0cmluZyBvciBhIFVSTCAoaXRzIGFuIGluc3RhbmNlIG9mIFJlcXVlc3QpXG4gICAgICAgICAgICAvLyB0aGVuIGRvIG5vdCBpbnN0YW50aWF0ZSBhIG5ldyBSZXF1ZXN0IGJ1dCBpbnN0ZWFkXG4gICAgICAgICAgICAvLyByZXVzZSB0aGUgcmVxdWVzdCBhcyB0byBub3QgZGlzdHVyYiB0aGUgYm9keSBpbiB0aGUgZXZlbnQgaXQncyBhIFJlYWRhYmxlU3RyZWFtLlxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHR5cGVvZiByZXNvdXJjZSA9PT0gJ3N0cmluZycgfHwgcmVzb3VyY2UgaW5zdGFuY2VvZiBVUkwgPyBuZXcgUmVxdWVzdChyZXNvdXJjZSwgb3B0aW9ucykgOiByZXNvdXJjZTtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJyB8fCByZXF1ZXN0LmtlZXBhbGl2ZSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBkZWR1cGUgcmVxdWVzdHMgdGhhdCBtaWdodCBoYXZlIHNpZGUtZWZmZWN0cy4gVGhvc2VcbiAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgY2FjaGVkLiBXZSBhc3N1bWUgdGhhdCB0aGUgcmVxdWVzdCBkb2Vzbid0IGhhdmUgYVxuICAgICAgICAgICAgICAgIC8vIGJvZHkgaWYgaXQncyBHRVQgb3IgSEVBRC5cbiAgICAgICAgICAgICAgICAvLyBrZWVwYWxpdmUgZ2V0cyB0cmVhdGVkIHRoZSBzYW1lIGFzIGlmIHlvdSBwYXNzZWQgYSBjdXN0b20gY2FjaGUgc2lnbmFsLlxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEZldGNoKHJlc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlS2V5ID0gZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICAgICAgICAgIHVybCA9IHJlcXVlc3QudXJsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlRW50cmllcyA9IGdldENhY2hlRW50cmllcyh1cmwpO1xuICAgICAgICBmb3IobGV0IGkgPSAwLCBqID0gY2FjaGVFbnRyaWVzLmxlbmd0aDsgaSA8IGo7IGkgKz0gMSl7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBwcm9taXNlXSA9IGNhY2hlRW50cmllc1tpXTtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IGNhY2hlS2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGNhY2hlRW50cmllc1tpXVsyXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ05vIGNhY2hlZCByZXNwb25zZScpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU1NzlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSdyZSBjbG9uaW5nIHRoZSByZXNwb25zZSB1c2luZyB0aGlzIHV0aWxpdHkgYmVjYXVzZSB0aGVyZSBleGlzdHNcbiAgICAgICAgICAgICAgICAgICAgLy8gYSBidWcgaW4gdGhlIHVuZGljaSBsaWJyYXJ5IGFyb3VuZCByZXNwb25zZSBjbG9uaW5nLiBTZWUgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZyBwdWxsIHJlcXVlc3QgZm9yIG1vcmUgZGV0YWlsczpcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3B1bGwvNzMyNzRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2Nsb25lZDEsIGNsb25lZDJdID0gKDAsIF9jbG9uZXJlc3BvbnNlLmNsb25lUmVzcG9uc2UpKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVFbnRyaWVzW2ldWzJdID0gY2xvbmVkMjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsb25lZDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgcGFzcyB0aGUgb3JpZ2luYWwgYXJndW1lbnRzIGhlcmUgaW4gY2FzZSBub3JtYWxpemluZyB0aGUgUmVxdWVzdFxuICAgICAgICAvLyBkb2Vzbid0IGluY2x1ZGUgYWxsIHRoZSBvcHRpb25zIGluIHRoaXMgZW52aXJvbm1lbnQuXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBvcmlnaW5hbEZldGNoKHJlc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSBbXG4gICAgICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgICAgIHByb21pc2UsXG4gICAgICAgICAgICBudWxsXG4gICAgICAgIF07XG4gICAgICAgIGNhY2hlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgICAvLyBXZSdyZSBjbG9uaW5nIHRoZSByZXNwb25zZSB1c2luZyB0aGlzIHV0aWxpdHkgYmVjYXVzZSB0aGVyZSBleGlzdHNcbiAgICAgICAgICAgIC8vIGEgYnVnIGluIHRoZSB1bmRpY2kgbGlicmFyeSBhcm91bmQgcmVzcG9uc2UgY2xvbmluZy4gU2VlIHRoZVxuICAgICAgICAgICAgLy8gZm9sbG93aW5nIHB1bGwgcmVxdWVzdCBmb3IgbW9yZSBkZXRhaWxzOlxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3B1bGwvNzMyNzRcbiAgICAgICAgICAgIGNvbnN0IFtjbG9uZWQxLCBjbG9uZWQyXSA9ICgwLCBfY2xvbmVyZXNwb25zZS5jbG9uZVJlc3BvbnNlKShyZXNwb25zZSk7XG4gICAgICAgICAgICBlbnRyeVsyXSA9IGNsb25lZDI7XG4gICAgICAgICAgICByZXR1cm4gY2xvbmVkMTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVkdXBlLWZldGNoLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/etag.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/server/lib/etag.js ***! \***************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * FNV-1a Hash implementation\n * @author Travis Webb (tjwebb) \n *\n * Ported from https://github.com/tjwebb/fnv-plus/blob/master/index.js\n *\n * Simplified, optimized and add modified for 52 bit, which provides a larger hash space\n * and still making use of Javascript's 53-bit integer space.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fnv1a52: function() {\n return fnv1a52;\n },\n generateETag: function() {\n return generateETag;\n }\n});\nconst fnv1a52 = (str)=>{\n const len = str.length;\n let i = 0, t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n while(i < len){\n v0 ^= str.charCodeAt(i++);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = t3 + (t2 >>> 16) & 65535;\n v2 = t2 & 65535;\n }\n return (v3 & 15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0 ^ v3 >> 4);\n};\nconst generateETag = (payload, weak = false)=>{\n const prefix = weak ? 'W/\"' : '\"';\n return prefix + fnv1a52(payload).toString(36) + payload.length.toString(36) + '\"';\n};\n\n//# sourceMappingURL=etag.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZXRhZy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXGV0YWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGTlYtMWEgSGFzaCBpbXBsZW1lbnRhdGlvblxuICogQGF1dGhvciBUcmF2aXMgV2ViYiAodGp3ZWJiKSA8bWVAdHJhdmlzd2ViYi5jb20+XG4gKlxuICogUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Rqd2ViYi9mbnYtcGx1cy9ibG9iL21hc3Rlci9pbmRleC5qc1xuICpcbiAqIFNpbXBsaWZpZWQsIG9wdGltaXplZCBhbmQgYWRkIG1vZGlmaWVkIGZvciA1MiBiaXQsIHdoaWNoIHByb3ZpZGVzIGEgbGFyZ2VyIGhhc2ggc3BhY2VcbiAqIGFuZCBzdGlsbCBtYWtpbmcgdXNlIG9mIEphdmFzY3JpcHQncyA1My1iaXQgaW50ZWdlciBzcGFjZS5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGZudjFhNTI6IG51bGwsXG4gICAgZ2VuZXJhdGVFVGFnOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGZudjFhNTI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZm52MWE1MjtcbiAgICB9LFxuICAgIGdlbmVyYXRlRVRhZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0ZUVUYWc7XG4gICAgfVxufSk7XG5jb25zdCBmbnYxYTUyID0gKHN0cik9PntcbiAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoO1xuICAgIGxldCBpID0gMCwgdDAgPSAwLCB2MCA9IDB4MjMyNSwgdDEgPSAwLCB2MSA9IDB4ODQyMiwgdDIgPSAwLCB2MiA9IDB4OWNlNCwgdDMgPSAwLCB2MyA9IDB4Y2JmMjtcbiAgICB3aGlsZShpIDwgbGVuKXtcbiAgICAgICAgdjAgXj0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgICAgdDAgPSB2MCAqIDQzNTtcbiAgICAgICAgdDEgPSB2MSAqIDQzNTtcbiAgICAgICAgdDIgPSB2MiAqIDQzNTtcbiAgICAgICAgdDMgPSB2MyAqIDQzNTtcbiAgICAgICAgdDIgKz0gdjAgPDwgODtcbiAgICAgICAgdDMgKz0gdjEgPDwgODtcbiAgICAgICAgdDEgKz0gdDAgPj4+IDE2O1xuICAgICAgICB2MCA9IHQwICYgNjU1MzU7XG4gICAgICAgIHQyICs9IHQxID4+PiAxNjtcbiAgICAgICAgdjEgPSB0MSAmIDY1NTM1O1xuICAgICAgICB2MyA9IHQzICsgKHQyID4+PiAxNikgJiA2NTUzNTtcbiAgICAgICAgdjIgPSB0MiAmIDY1NTM1O1xuICAgIH1cbiAgICByZXR1cm4gKHYzICYgMTUpICogMjgxNDc0OTc2NzEwNjU2ICsgdjIgKiA0Mjk0OTY3Mjk2ICsgdjEgKiA2NTUzNiArICh2MCBeIHYzID4+IDQpO1xufTtcbmNvbnN0IGdlbmVyYXRlRVRhZyA9IChwYXlsb2FkLCB3ZWFrID0gZmFsc2UpPT57XG4gICAgY29uc3QgcHJlZml4ID0gd2VhayA/ICdXL1wiJyA6ICdcIic7XG4gICAgcmV0dXJuIHByZWZpeCArIGZudjFhNTIocGF5bG9hZCkudG9TdHJpbmcoMzYpICsgcGF5bG9hZC5sZW5ndGgudG9TdHJpbmcoMzYpICsgJ1wiJztcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV0YWcuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/etag.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/server/lib/experimental/ppr.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * If set to `incremental`, only those leaf pages that export\n * `experimental_ppr = true` will have partial prerendering enabled. If any\n * page exports this value as `false` or does not export it at all will not\n * have partial prerendering enabled. If set to a boolean, the options for\n * `experimental_ppr` will be ignored.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n checkIsAppPPREnabled: function() {\n return checkIsAppPPREnabled;\n },\n checkIsRoutePPREnabled: function() {\n return checkIsRoutePPREnabled;\n }\n});\nfunction checkIsAppPPREnabled(config) {\n // If the config is undefined, partial prerendering is disabled.\n if (typeof config === 'undefined') return false;\n // If the config is a boolean, use it directly.\n if (typeof config === 'boolean') return config;\n // If the config is a string, it must be 'incremental' to enable partial\n // prerendering.\n if (config === 'incremental') return true;\n return false;\n}\nfunction checkIsRoutePPREnabled(config, appConfig) {\n // If the config is undefined, partial prerendering is disabled.\n if (typeof config === 'undefined') return false;\n // If the config is a boolean, use it directly.\n if (typeof config === 'boolean') return config;\n // If the config is a string, it must be 'incremental' to enable partial\n // prerendering.\n if (config === 'incremental' && appConfig.experimental_ppr === true) {\n return true;\n }\n return false;\n}\n\n//# sourceMappingURL=ppr.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvZXhwZXJpbWVudGFsL3Bwci5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxleHBlcmltZW50YWxcXHBwci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElmIHNldCB0byBgaW5jcmVtZW50YWxgLCBvbmx5IHRob3NlIGxlYWYgcGFnZXMgdGhhdCBleHBvcnRcbiAqIGBleHBlcmltZW50YWxfcHByID0gdHJ1ZWAgd2lsbCBoYXZlIHBhcnRpYWwgcHJlcmVuZGVyaW5nIGVuYWJsZWQuIElmIGFueVxuICogcGFnZSBleHBvcnRzIHRoaXMgdmFsdWUgYXMgYGZhbHNlYCBvciBkb2VzIG5vdCBleHBvcnQgaXQgYXQgYWxsIHdpbGwgbm90XG4gKiBoYXZlIHBhcnRpYWwgcHJlcmVuZGVyaW5nIGVuYWJsZWQuIElmIHNldCB0byBhIGJvb2xlYW4sIHRoZSBvcHRpb25zIGZvclxuICogYGV4cGVyaW1lbnRhbF9wcHJgIHdpbGwgYmUgaWdub3JlZC5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNoZWNrSXNBcHBQUFJFbmFibGVkOiBudWxsLFxuICAgIGNoZWNrSXNSb3V0ZVBQUkVuYWJsZWQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY2hlY2tJc0FwcFBQUkVuYWJsZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2hlY2tJc0FwcFBQUkVuYWJsZWQ7XG4gICAgfSxcbiAgICBjaGVja0lzUm91dGVQUFJFbmFibGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrSXNSb3V0ZVBQUkVuYWJsZWQ7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBjaGVja0lzQXBwUFBSRW5hYmxlZChjb25maWcpIHtcbiAgICAvLyBJZiB0aGUgY29uZmlnIGlzIHVuZGVmaW5lZCwgcGFydGlhbCBwcmVyZW5kZXJpbmcgaXMgZGlzYWJsZWQuXG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gSWYgdGhlIGNvbmZpZyBpcyBhIGJvb2xlYW4sIHVzZSBpdCBkaXJlY3RseS5cbiAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gY29uZmlnO1xuICAgIC8vIElmIHRoZSBjb25maWcgaXMgYSBzdHJpbmcsIGl0IG11c3QgYmUgJ2luY3JlbWVudGFsJyB0byBlbmFibGUgcGFydGlhbFxuICAgIC8vIHByZXJlbmRlcmluZy5cbiAgICBpZiAoY29uZmlnID09PSAnaW5jcmVtZW50YWwnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjaGVja0lzUm91dGVQUFJFbmFibGVkKGNvbmZpZywgYXBwQ29uZmlnKSB7XG4gICAgLy8gSWYgdGhlIGNvbmZpZyBpcyB1bmRlZmluZWQsIHBhcnRpYWwgcHJlcmVuZGVyaW5nIGlzIGRpc2FibGVkLlxuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIElmIHRoZSBjb25maWcgaXMgYSBib29sZWFuLCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdib29sZWFuJykgcmV0dXJuIGNvbmZpZztcbiAgICAvLyBJZiB0aGUgY29uZmlnIGlzIGEgc3RyaW5nLCBpdCBtdXN0IGJlICdpbmNyZW1lbnRhbCcgdG8gZW5hYmxlIHBhcnRpYWxcbiAgICAvLyBwcmVyZW5kZXJpbmcuXG4gICAgaWYgKGNvbmZpZyA9PT0gJ2luY3JlbWVudGFsJyAmJiBhcHBDb25maWcuZXhwZXJpbWVudGFsX3BwciA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcHIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/lru-cache.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/server/lib/lru-cache.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Node in the doubly-linked list used for LRU tracking.\n * Each node represents a cache entry with bidirectional pointers.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"LRUCache\", ({\n enumerable: true,\n get: function() {\n return LRUCache;\n }\n}));\nclass LRUNode {\n constructor(key, data, size){\n this.prev = null;\n this.next = null;\n this.key = key;\n this.data = data;\n this.size = size;\n }\n}\n/**\n * Sentinel node used for head/tail boundaries.\n * These nodes don't contain actual cache data but simplify list operations.\n */ class SentinelNode {\n constructor(){\n this.prev = null;\n this.next = null;\n }\n}\nclass LRUCache {\n constructor(maxSize, calculateSize, onEvict){\n this.cache = new Map();\n this.totalSize = 0;\n this.maxSize = maxSize;\n this.calculateSize = calculateSize;\n this.onEvict = onEvict;\n // Create sentinel nodes to simplify doubly-linked list operations\n // HEAD <-> TAIL (empty list)\n this.head = new SentinelNode();\n this.tail = new SentinelNode();\n this.head.next = this.tail;\n this.tail.prev = this.head;\n }\n /**\n * Adds a node immediately after the head (marks as most recently used).\n * Used when inserting new items or when an item is accessed.\n * PRECONDITION: node must be disconnected (prev/next should be null)\n */ addToHead(node) {\n node.prev = this.head;\n node.next = this.head.next;\n // head.next is always non-null (points to tail or another node)\n this.head.next.prev = node;\n this.head.next = node;\n }\n /**\n * Removes a node from its current position in the doubly-linked list.\n * Updates the prev/next pointers of adjacent nodes to maintain list integrity.\n * PRECONDITION: node must be connected (prev/next are non-null)\n */ removeNode(node) {\n // Connected nodes always have non-null prev/next\n node.prev.next = node.next;\n node.next.prev = node.prev;\n }\n /**\n * Moves an existing node to the head position (marks as most recently used).\n * This is the core LRU operation - accessed items become most recent.\n */ moveToHead(node) {\n this.removeNode(node);\n this.addToHead(node);\n }\n /**\n * Removes and returns the least recently used node (the one before tail).\n * This is called during eviction when the cache exceeds capacity.\n * PRECONDITION: cache is not empty (ensured by caller)\n */ removeTail() {\n const lastNode = this.tail.prev;\n // tail.prev is always non-null and always LRUNode when cache is not empty\n this.removeNode(lastNode);\n return lastNode;\n }\n /**\n * Sets a key-value pair in the cache.\n * If the key exists, updates the value and moves to head.\n * If new, adds at head and evicts from tail if necessary.\n *\n * Time Complexity:\n * - O(1) for uniform item sizes\n * - O(k) where k is the number of items evicted (can be O(N) for variable sizes)\n */ set(key, value) {\n const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1;\n if (size <= 0) {\n throw Object.defineProperty(new Error(`LRUCache: calculateSize returned ${size}, but size must be > 0. ` + `Items with size 0 would never be evicted, causing unbounded cache growth.`), \"__NEXT_ERROR_CODE\", {\n value: \"E789\",\n enumerable: false,\n configurable: true\n });\n }\n if (size > this.maxSize) {\n console.warn('Single item size exceeds maxSize');\n return false;\n }\n const existing = this.cache.get(key);\n if (existing) {\n // Update existing node: adjust size and move to head (most recent)\n existing.data = value;\n this.totalSize = this.totalSize - existing.size + size;\n existing.size = size;\n this.moveToHead(existing);\n } else {\n // Add new node at head (most recent position)\n const newNode = new LRUNode(key, value, size);\n this.cache.set(key, newNode);\n this.addToHead(newNode);\n this.totalSize += size;\n }\n // Evict least recently used items until under capacity\n while(this.totalSize > this.maxSize && this.cache.size > 0){\n const tail = this.removeTail();\n this.cache.delete(tail.key);\n this.totalSize -= tail.size;\n this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data);\n }\n return true;\n }\n /**\n * Checks if a key exists in the cache.\n * This is a pure query operation - does NOT update LRU order.\n *\n * Time Complexity: O(1)\n */ has(key) {\n return this.cache.has(key);\n }\n /**\n * Retrieves a value by key and marks it as most recently used.\n * Moving to head maintains the LRU property for future evictions.\n *\n * Time Complexity: O(1)\n */ get(key) {\n const node = this.cache.get(key);\n if (!node) return undefined;\n // Mark as most recently used by moving to head\n this.moveToHead(node);\n return node.data;\n }\n /**\n * Returns an iterator over the cache entries. The order is outputted in the\n * order of most recently used to least recently used.\n */ *[Symbol.iterator]() {\n let current = this.head.next;\n while(current && current !== this.tail){\n // Between head and tail, current is always LRUNode\n const node = current;\n yield [\n node.key,\n node.data\n ];\n current = current.next;\n }\n }\n /**\n * Removes a specific key from the cache.\n * Updates both the hash map and doubly-linked list.\n *\n * Note: This is an explicit removal and does NOT trigger the `onEvict`\n * callback. Use this for intentional deletions where eviction tracking\n * is not needed.\n *\n * Time Complexity: O(1)\n */ remove(key) {\n const node = this.cache.get(key);\n if (!node) return;\n this.removeNode(node);\n this.cache.delete(key);\n this.totalSize -= node.size;\n }\n /**\n * Returns the number of items in the cache.\n */ get size() {\n return this.cache.size;\n }\n /**\n * Returns the current total size of all cached items.\n * This uses the custom size calculation if provided.\n */ get currentSize() {\n return this.totalSize;\n }\n}\n\n//# sourceMappingURL=lru-cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvbHJ1LWNhY2hlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLElBQWlCO0FBQ2pCLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDRDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRkFBc0YsS0FBSztBQUMzRjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXGxydS1jYWNoZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5vZGUgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdCB1c2VkIGZvciBMUlUgdHJhY2tpbmcuXG4gKiBFYWNoIG5vZGUgcmVwcmVzZW50cyBhIGNhY2hlIGVudHJ5IHdpdGggYmlkaXJlY3Rpb25hbCBwb2ludGVycy5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxSVUNhY2hlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBMUlVDYWNoZTtcbiAgICB9XG59KTtcbmNsYXNzIExSVU5vZGUge1xuICAgIGNvbnN0cnVjdG9yKGtleSwgZGF0YSwgc2l6ZSl7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIH1cbn1cbi8qKlxuICogU2VudGluZWwgbm9kZSB1c2VkIGZvciBoZWFkL3RhaWwgYm91bmRhcmllcy5cbiAqIFRoZXNlIG5vZGVzIGRvbid0IGNvbnRhaW4gYWN0dWFsIGNhY2hlIGRhdGEgYnV0IHNpbXBsaWZ5IGxpc3Qgb3BlcmF0aW9ucy5cbiAqLyBjbGFzcyBTZW50aW5lbE5vZGUge1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgfVxufVxuY2xhc3MgTFJVQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yKG1heFNpemUsIGNhbGN1bGF0ZVNpemUsIG9uRXZpY3Qpe1xuICAgICAgICB0aGlzLmNhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IDA7XG4gICAgICAgIHRoaXMubWF4U2l6ZSA9IG1heFNpemU7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU2l6ZSA9IGNhbGN1bGF0ZVNpemU7XG4gICAgICAgIHRoaXMub25FdmljdCA9IG9uRXZpY3Q7XG4gICAgICAgIC8vIENyZWF0ZSBzZW50aW5lbCBub2RlcyB0byBzaW1wbGlmeSBkb3VibHktbGlua2VkIGxpc3Qgb3BlcmF0aW9uc1xuICAgICAgICAvLyBIRUFEIDwtPiBUQUlMIChlbXB0eSBsaXN0KVxuICAgICAgICB0aGlzLmhlYWQgPSBuZXcgU2VudGluZWxOb2RlKCk7XG4gICAgICAgIHRoaXMudGFpbCA9IG5ldyBTZW50aW5lbE5vZGUoKTtcbiAgICAgICAgdGhpcy5oZWFkLm5leHQgPSB0aGlzLnRhaWw7XG4gICAgICAgIHRoaXMudGFpbC5wcmV2ID0gdGhpcy5oZWFkO1xuICAgIH1cbiAgICAvKipcbiAgICogQWRkcyBhIG5vZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGhlYWQgKG1hcmtzIGFzIG1vc3QgcmVjZW50bHkgdXNlZCkuXG4gICAqIFVzZWQgd2hlbiBpbnNlcnRpbmcgbmV3IGl0ZW1zIG9yIHdoZW4gYW4gaXRlbSBpcyBhY2Nlc3NlZC5cbiAgICogUFJFQ09ORElUSU9OOiBub2RlIG11c3QgYmUgZGlzY29ubmVjdGVkIChwcmV2L25leHQgc2hvdWxkIGJlIG51bGwpXG4gICAqLyBhZGRUb0hlYWQobm9kZSkge1xuICAgICAgICBub2RlLnByZXYgPSB0aGlzLmhlYWQ7XG4gICAgICAgIG5vZGUubmV4dCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgICAvLyBoZWFkLm5leHQgaXMgYWx3YXlzIG5vbi1udWxsIChwb2ludHMgdG8gdGFpbCBvciBhbm90aGVyIG5vZGUpXG4gICAgICAgIHRoaXMuaGVhZC5uZXh0LnByZXYgPSBub2RlO1xuICAgICAgICB0aGlzLmhlYWQubmV4dCA9IG5vZGU7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZW1vdmVzIGEgbm9kZSBmcm9tIGl0cyBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBkb3VibHktbGlua2VkIGxpc3QuXG4gICAqIFVwZGF0ZXMgdGhlIHByZXYvbmV4dCBwb2ludGVycyBvZiBhZGphY2VudCBub2RlcyB0byBtYWludGFpbiBsaXN0IGludGVncml0eS5cbiAgICogUFJFQ09ORElUSU9OOiBub2RlIG11c3QgYmUgY29ubmVjdGVkIChwcmV2L25leHQgYXJlIG5vbi1udWxsKVxuICAgKi8gcmVtb3ZlTm9kZShub2RlKSB7XG4gICAgICAgIC8vIENvbm5lY3RlZCBub2RlcyBhbHdheXMgaGF2ZSBub24tbnVsbCBwcmV2L25leHRcbiAgICAgICAgbm9kZS5wcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgICAgIG5vZGUubmV4dC5wcmV2ID0gbm9kZS5wcmV2O1xuICAgIH1cbiAgICAvKipcbiAgICogTW92ZXMgYW4gZXhpc3Rpbmcgbm9kZSB0byB0aGUgaGVhZCBwb3NpdGlvbiAobWFya3MgYXMgbW9zdCByZWNlbnRseSB1c2VkKS5cbiAgICogVGhpcyBpcyB0aGUgY29yZSBMUlUgb3BlcmF0aW9uIC0gYWNjZXNzZWQgaXRlbXMgYmVjb21lIG1vc3QgcmVjZW50LlxuICAgKi8gbW92ZVRvSGVhZChub2RlKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZShub2RlKTtcbiAgICAgICAgdGhpcy5hZGRUb0hlYWQobm9kZSk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZW1vdmVzIGFuZCByZXR1cm5zIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIG5vZGUgKHRoZSBvbmUgYmVmb3JlIHRhaWwpLlxuICAgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgZXZpY3Rpb24gd2hlbiB0aGUgY2FjaGUgZXhjZWVkcyBjYXBhY2l0eS5cbiAgICogUFJFQ09ORElUSU9OOiBjYWNoZSBpcyBub3QgZW1wdHkgKGVuc3VyZWQgYnkgY2FsbGVyKVxuICAgKi8gcmVtb3ZlVGFpbCgpIHtcbiAgICAgICAgY29uc3QgbGFzdE5vZGUgPSB0aGlzLnRhaWwucHJldjtcbiAgICAgICAgLy8gdGFpbC5wcmV2IGlzIGFsd2F5cyBub24tbnVsbCBhbmQgYWx3YXlzIExSVU5vZGUgd2hlbiBjYWNoZSBpcyBub3QgZW1wdHlcbiAgICAgICAgdGhpcy5yZW1vdmVOb2RlKGxhc3ROb2RlKTtcbiAgICAgICAgcmV0dXJuIGxhc3ROb2RlO1xuICAgIH1cbiAgICAvKipcbiAgICogU2V0cyBhIGtleS12YWx1ZSBwYWlyIGluIHRoZSBjYWNoZS5cbiAgICogSWYgdGhlIGtleSBleGlzdHMsIHVwZGF0ZXMgdGhlIHZhbHVlIGFuZCBtb3ZlcyB0byBoZWFkLlxuICAgKiBJZiBuZXcsIGFkZHMgYXQgaGVhZCBhbmQgZXZpY3RzIGZyb20gdGFpbCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIFRpbWUgQ29tcGxleGl0eTpcbiAgICogLSBPKDEpIGZvciB1bmlmb3JtIGl0ZW0gc2l6ZXNcbiAgICogLSBPKGspIHdoZXJlIGsgaXMgdGhlIG51bWJlciBvZiBpdGVtcyBldmljdGVkIChjYW4gYmUgTyhOKSBmb3IgdmFyaWFibGUgc2l6ZXMpXG4gICAqLyBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBzaXplID0gKHRoaXMuY2FsY3VsYXRlU2l6ZSA9PSBudWxsID8gdm9pZCAwIDogdGhpcy5jYWxjdWxhdGVTaXplLmNhbGwodGhpcywgdmFsdWUpKSA/PyAxO1xuICAgICAgICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBMUlVDYWNoZTogY2FsY3VsYXRlU2l6ZSByZXR1cm5lZCAke3NpemV9LCBidXQgc2l6ZSBtdXN0IGJlID4gMC4gYCArIGBJdGVtcyB3aXRoIHNpemUgMCB3b3VsZCBuZXZlciBiZSBldmljdGVkLCBjYXVzaW5nIHVuYm91bmRlZCBjYWNoZSBncm93dGguYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3ODlcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaXplID4gdGhpcy5tYXhTaXplKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1NpbmdsZSBpdGVtIHNpemUgZXhjZWVkcyBtYXhTaXplJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBub2RlOiBhZGp1c3Qgc2l6ZSBhbmQgbW92ZSB0byBoZWFkIChtb3N0IHJlY2VudClcbiAgICAgICAgICAgIGV4aXN0aW5nLmRhdGEgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplID0gdGhpcy50b3RhbFNpemUgLSBleGlzdGluZy5zaXplICsgc2l6ZTtcbiAgICAgICAgICAgIGV4aXN0aW5nLnNpemUgPSBzaXplO1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9IZWFkKGV4aXN0aW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEFkZCBuZXcgbm9kZSBhdCBoZWFkIChtb3N0IHJlY2VudCBwb3NpdGlvbilcbiAgICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBuZXcgTFJVTm9kZShrZXksIHZhbHVlLCBzaXplKTtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgbmV3Tm9kZSk7XG4gICAgICAgICAgICB0aGlzLmFkZFRvSGVhZChuZXdOb2RlKTtcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplICs9IHNpemU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZpY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBpdGVtcyB1bnRpbCB1bmRlciBjYXBhY2l0eVxuICAgICAgICB3aGlsZSh0aGlzLnRvdGFsU2l6ZSA+IHRoaXMubWF4U2l6ZSAmJiB0aGlzLmNhY2hlLnNpemUgPiAwKXtcbiAgICAgICAgICAgIGNvbnN0IHRhaWwgPSB0aGlzLnJlbW92ZVRhaWwoKTtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKHRhaWwua2V5KTtcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplIC09IHRhaWwuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMub25FdmljdCA9PSBudWxsID8gdm9pZCAwIDogdGhpcy5vbkV2aWN0LmNhbGwodGhpcywgdGFpbC5rZXksIHRhaWwuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgKiBDaGVja3MgaWYgYSBrZXkgZXhpc3RzIGluIHRoZSBjYWNoZS5cbiAgICogVGhpcyBpcyBhIHB1cmUgcXVlcnkgb3BlcmF0aW9uIC0gZG9lcyBOT1QgdXBkYXRlIExSVSBvcmRlci5cbiAgICpcbiAgICogVGltZSBDb21wbGV4aXR5OiBPKDEpXG4gICAqLyBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLmhhcyhrZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0cmlldmVzIGEgdmFsdWUgYnkga2V5IGFuZCBtYXJrcyBpdCBhcyBtb3N0IHJlY2VudGx5IHVzZWQuXG4gICAqIE1vdmluZyB0byBoZWFkIG1haW50YWlucyB0aGUgTFJVIHByb3BlcnR5IGZvciBmdXR1cmUgZXZpY3Rpb25zLlxuICAgKlxuICAgKiBUaW1lIENvbXBsZXhpdHk6IE8oMSlcbiAgICovIGdldChrZXkpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIGlmICghbm9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gTWFyayBhcyBtb3N0IHJlY2VudGx5IHVzZWQgYnkgbW92aW5nIHRvIGhlYWRcbiAgICAgICAgdGhpcy5tb3ZlVG9IZWFkKG5vZGUpO1xuICAgICAgICByZXR1cm4gbm9kZS5kYXRhO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyBhbiBpdGVyYXRvciBvdmVyIHRoZSBjYWNoZSBlbnRyaWVzLiBUaGUgb3JkZXIgaXMgb3V0cHV0dGVkIGluIHRoZVxuICAgKiBvcmRlciBvZiBtb3N0IHJlY2VudGx5IHVzZWQgdG8gbGVhc3QgcmVjZW50bHkgdXNlZC5cbiAgICovICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAgICAgd2hpbGUoY3VycmVudCAmJiBjdXJyZW50ICE9PSB0aGlzLnRhaWwpe1xuICAgICAgICAgICAgLy8gQmV0d2VlbiBoZWFkIGFuZCB0YWlsLCBjdXJyZW50IGlzIGFsd2F5cyBMUlVOb2RlXG4gICAgICAgICAgICBjb25zdCBub2RlID0gY3VycmVudDtcbiAgICAgICAgICAgIHlpZWxkIFtcbiAgICAgICAgICAgICAgICBub2RlLmtleSxcbiAgICAgICAgICAgICAgICBub2RlLmRhdGFcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZW1vdmVzIGEgc3BlY2lmaWMga2V5IGZyb20gdGhlIGNhY2hlLlxuICAgKiBVcGRhdGVzIGJvdGggdGhlIGhhc2ggbWFwIGFuZCBkb3VibHktbGlua2VkIGxpc3QuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaXMgYW4gZXhwbGljaXQgcmVtb3ZhbCBhbmQgZG9lcyBOT1QgdHJpZ2dlciB0aGUgYG9uRXZpY3RgXG4gICAqIGNhbGxiYWNrLiBVc2UgdGhpcyBmb3IgaW50ZW50aW9uYWwgZGVsZXRpb25zIHdoZXJlIGV2aWN0aW9uIHRyYWNraW5nXG4gICAqIGlzIG5vdCBuZWVkZWQuXG4gICAqXG4gICAqIFRpbWUgQ29tcGxleGl0eTogTygxKVxuICAgKi8gcmVtb3ZlKGtleSkge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZShub2RlKTtcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgICAgdGhpcy50b3RhbFNpemUgLT0gbm9kZS5zaXplO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjYWNoZS5cbiAgICovIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5zaXplO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB0b3RhbCBzaXplIG9mIGFsbCBjYWNoZWQgaXRlbXMuXG4gICAqIFRoaXMgdXNlcyB0aGUgY3VzdG9tIHNpemUgY2FsY3VsYXRpb24gaWYgcHJvdmlkZWQuXG4gICAqLyBnZXQgY3VycmVudFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsU2l6ZTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxydS1jYWNoZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/server/lib/patch-fetch.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NEXT_PATCH_SYMBOL: function() {\n return NEXT_PATCH_SYMBOL;\n },\n createPatchedFetcher: function() {\n return createPatchedFetcher;\n },\n patchFetch: function() {\n return patchFetch;\n },\n validateRevalidate: function() {\n return validateRevalidate;\n },\n validateTags: function() {\n return validateTags;\n }\n});\nconst _constants = __webpack_require__(/*! ./trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _tracer = __webpack_require__(/*! ./trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants1 = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _dedupefetch = __webpack_require__(/*! ./dedupe-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/dedupe-fetch.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _responsecache = __webpack_require__(/*! ../response-cache */ \"(rsc)/./node_modules/next/dist/server/response-cache/index.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _cloneresponse = __webpack_require__(/*! ./clone-response */ \"(rsc)/./node_modules/next/dist/server/lib/clone-response.js\");\nconst isEdgeRuntime = \"nodejs\" === 'edge';\nconst NEXT_PATCH_SYMBOL = Symbol.for('next-patch');\nfunction isFetchPatched() {\n return globalThis[NEXT_PATCH_SYMBOL] === true;\n}\nfunction validateRevalidate(revalidateVal, route) {\n try {\n let normalizedRevalidate = undefined;\n if (revalidateVal === false) {\n normalizedRevalidate = _constants1.INFINITE_CACHE;\n } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal !== 'undefined') {\n throw Object.defineProperty(new Error(`Invalid revalidate value \"${revalidateVal}\" on \"${route}\", must be a non-negative number or false`), \"__NEXT_ERROR_CODE\", {\n value: \"E179\",\n enumerable: false,\n configurable: true\n });\n }\n return normalizedRevalidate;\n } catch (err) {\n // handle client component error from attempting to check revalidate value\n if (err instanceof Error && err.message.includes('Invalid revalidate')) {\n throw err;\n }\n return undefined;\n }\n}\nfunction validateTags(tags, description) {\n const validTags = [];\n const invalidTags = [];\n for(let i = 0; i < tags.length; i++){\n const tag = tags[i];\n if (typeof tag !== 'string') {\n invalidTags.push({\n tag,\n reason: 'invalid type, must be a string'\n });\n } else if (tag.length > _constants1.NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${_constants1.NEXT_CACHE_TAG_MAX_LENGTH}`\n });\n } else {\n validTags.push(tag);\n }\n if (validTags.length > _constants1.NEXT_CACHE_TAG_MAX_ITEMS) {\n console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', '));\n break;\n }\n }\n if (invalidTags.length > 0) {\n console.warn(`Warning: invalid tags passed to ${description}: `);\n for (const { tag, reason } of invalidTags){\n console.log(`tag: \"${tag}\" ${reason}`);\n }\n }\n return validTags;\n}\nfunction trackFetchMetric(workStore, ctx) {\n if (!workStore.shouldTrackFetchMetrics) {\n return;\n }\n workStore.fetchMetrics ??= [];\n workStore.fetchMetrics.push({\n ...ctx,\n end: performance.timeOrigin + performance.now(),\n idx: workStore.nextFetchId || 0\n });\n}\nasync function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) {\n // We are prerendering at build time or revalidate time with cacheComponents so we\n // need to buffer the response so we can guarantee it can be read in a\n // microtask.\n const bodyBuffer = await res.arrayBuffer();\n const fetchedData = {\n headers: Object.fromEntries(res.headers.entries()),\n body: Buffer.from(bodyBuffer).toString('base64'),\n status: res.status,\n url: res.url\n };\n // We can skip setting the serverComponentsHmrCache because we aren't in dev\n // mode.\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: _responsecache.CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n await handleUnlock();\n // We return a new Response to the caller.\n return new Response(bodyBuffer, {\n headers: res.headers,\n status: res.status,\n statusText: res.statusText\n });\n}\nasync function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock) {\n // We're cloning the response using this utility because there exists a bug in\n // the undici library around response cloning. See the following pull request\n // for more details: https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = (0, _cloneresponse.cloneResponse)(res);\n // We are dynamically rendering including dev mode. We want to return the\n // response to the caller as soon as possible because it might stream over a\n // very long time.\n const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{\n const bodyBuffer = Buffer.from(arrayBuffer);\n const fetchedData = {\n headers: Object.fromEntries(cloned1.headers.entries()),\n body: bodyBuffer.toString('base64'),\n status: cloned1.status,\n url: cloned1.url\n };\n serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData);\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: _responsecache.CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n }).catch((error)=>console.warn(`Failed to set fetch cache`, input, error)).finally(handleUnlock);\n const pendingRevalidateKey = `cache-set-${cacheKey}`;\n workStore.pendingRevalidates ??= {};\n if (pendingRevalidateKey in workStore.pendingRevalidates) {\n // there is already a pending revalidate entry that we need to await to\n // avoid race conditions\n await workStore.pendingRevalidates[pendingRevalidateKey];\n }\n workStore.pendingRevalidates[pendingRevalidateKey] = cacheSetPromise.finally(()=>{\n var _workStore_pendingRevalidates;\n // If the pending revalidate is not present in the store, then we have\n // nothing to delete.\n if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete workStore.pendingRevalidates[pendingRevalidateKey];\n });\n return cloned2;\n}\nfunction createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) {\n // Create the patched fetch function.\n const patched = async function fetch(input, init) {\n var _init_method, _init_next;\n let url;\n try {\n url = new URL(input instanceof Request ? input.url : input);\n url.username = '';\n url.password = '';\n } catch {\n // Error caused by malformed URL should be handled by native fetch\n url = undefined;\n }\n const fetchUrl = (url == null ? void 0 : url.href) ?? '';\n const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET';\n // Do create a new span trace for internal fetches in the\n // non-verbose mode.\n const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true;\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1';\n // We don't track fetch metrics for internal fetches\n // so it's not critical that we have a start time, as it won't be recorded.\n // This is to workaround a flaky issue where performance APIs might\n // not be available and will require follow-up investigation.\n const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now();\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n // During static generation we track cache reads so we can reason about when they fill\n let cacheSignal = workUnitStore ? (0, _workunitasyncstorageexternal.getCacheSignal)(workUnitStore) : null;\n if (cacheSignal) {\n cacheSignal.beginRead();\n }\n const result = (0, _tracer.getTracer)().trace(isInternal ? _constants.NextNodeServerSpan.internalFetch : _constants.AppRenderSpan.fetch, {\n hideSpan,\n kind: _tracer.SpanKind.CLIENT,\n spanName: [\n 'fetch',\n method,\n fetchUrl\n ].filter(Boolean).join(' '),\n attributes: {\n 'http.url': fetchUrl,\n 'http.method': method,\n 'net.peer.name': url == null ? void 0 : url.hostname,\n 'net.peer.port': (url == null ? void 0 : url.port) || undefined\n }\n }, async ()=>{\n var _getRequestMeta;\n // If this is an internal fetch, we should not do any special treatment.\n if (isInternal) {\n return originFetch(input, init);\n }\n // If the workStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!workStore) {\n return originFetch(input, init);\n }\n // We should also fallback to the original fetch implementation if we\n // are in draft mode, it does not constitute a static generation.\n if (workStore.isDraftMode) {\n return originFetch(input, init);\n }\n const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string';\n const getRequestMeta = (field)=>{\n // If request input is present but init is not, retrieve from input first.\n const value = init == null ? void 0 : init[field];\n return value || (isRequestInput ? input[field] : null);\n };\n let finalRevalidate = undefined;\n const getNextField = (field)=>{\n var _init_next, _init_next1, _input_next;\n return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined;\n };\n // RequestInit doesn't keep extra fields e.g. next so it's\n // only available if init is used separate\n const originalFetchRevalidate = getNextField('revalidate');\n let currentFetchRevalidate = originalFetchRevalidate;\n const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`);\n let revalidateStore;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // TODO: Stop accumulating tags in client prerender. (fallthrough)\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n revalidateStore = workUnitStore;\n break;\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (revalidateStore) {\n if (Array.isArray(tags)) {\n // Collect tags onto parent caches or parent prerenders.\n const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []);\n for (const tag of tags){\n if (!collectedTags.includes(tag)) {\n collectedTags.push(tag);\n }\n }\n }\n }\n const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags;\n let pageFetchCacheMode = workStore.fetchCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'unstable-cache':\n // Inside unstable-cache we treat it the same as force-no-store on\n // the page.\n pageFetchCacheMode = 'force-no-store';\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n break;\n default:\n workUnitStore;\n }\n }\n const isUsingNoStore = !!workStore.isUnstableNoStore;\n let currentFetchCacheConfig = getRequestMeta('cache');\n let cacheReason = '';\n let cacheWarning;\n if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') {\n // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values.\n const isConflictingRevalidate = // revalidate: 0 and cache: force-cache\n currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store\n currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false);\n if (isConflictingRevalidate) {\n cacheWarning = `Specified \"cache: ${currentFetchCacheConfig}\" and \"revalidate: ${currentFetchRevalidate}\", only one should be specified.`;\n currentFetchCacheConfig = undefined;\n currentFetchRevalidate = undefined;\n }\n }\n const hasExplicitFetchCacheOptOut = // fetch config itself signals not to cache\n currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache\n // note: `pageFetchCacheMode` is also set by being in an unstable_cache context.\n pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store';\n // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set,\n // we shouldn't consider caching the fetch. This is because the `dynamic` cache\n // is considered a \"top-level\" cache mode, whereas something like `fetchCache` is more\n // fine-grained. Top-level modes are responsible for setting reasonable defaults for the\n // other configurations.\n const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic;\n if (// force-cache was specified without a revalidate value. We set the revalidate value to false\n // which will signal the cache to not revalidate\n currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') {\n currentFetchRevalidate = false;\n } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) {\n currentFetchRevalidate = 0;\n }\n if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') {\n cacheReason = `cache: ${currentFetchCacheConfig}`;\n }\n finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route);\n const _headers = getRequestMeta('headers');\n const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {});\n const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie');\n const isUnCacheableMethod = ![\n 'get',\n 'head'\n ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get');\n /**\n * We automatically disable fetch caching under the following conditions:\n * - Fetch cache configs are not set. Specifically:\n * - A page fetch cache mode is not set (export const fetchCache=...)\n * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... }))\n * or the fetch cache mode is set to 'default'\n * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... }))\n * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies())\n * and the fetch was considered uncacheable (e.g., POST method or has authorization headers)\n */ const hasNoExplicitCacheConfig = // eslint-disable-next-line eqeqeq\n pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq\n (currentFetchCacheConfig == undefined || // when considering whether to opt into the default \"no-cache\" fetch semantics,\n // a \"default\" cache config should be treated the same as no cache config\n currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq\n currentFetchRevalidate == undefined;\n let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0);\n let isImplicitBuildTimeCache = false;\n if (!autoNoCache && hasNoExplicitCacheConfig) {\n // We don't enable automatic no-cache behavior during build-time\n // prerendering so that we can still leverage the fetch cache between\n // export workers.\n if (workStore.isBuildTimePrerendering) {\n isImplicitBuildTimeCache = true;\n } else {\n autoNoCache = true;\n }\n }\n // If we have no cache config, and we're in Dynamic I/O prerendering,\n // it'll be a dynamic call. We don't have to issue that dynamic call.\n if (hasNoExplicitCacheConfig && workUnitStore !== undefined) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // While we don't want to do caching in the client scope we know the\n // fetch will be dynamic for cacheComponents so we may as well avoid the\n // call here. (fallthrough)\n case 'prerender-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n switch(pageFetchCacheMode){\n case 'force-no-store':\n {\n cacheReason = 'fetchCache = force-no-store';\n break;\n }\n case 'only-no-store':\n {\n if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) {\n throw Object.defineProperty(new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`), \"__NEXT_ERROR_CODE\", {\n value: \"E448\",\n enumerable: false,\n configurable: true\n });\n }\n cacheReason = 'fetchCache = only-no-store';\n break;\n }\n case 'only-cache':\n {\n if (currentFetchCacheConfig === 'no-store') {\n throw Object.defineProperty(new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`), \"__NEXT_ERROR_CODE\", {\n value: \"E521\",\n enumerable: false,\n configurable: true\n });\n }\n break;\n }\n case 'force-cache':\n {\n if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) {\n cacheReason = 'fetchCache = force-cache';\n finalRevalidate = _constants1.INFINITE_CACHE;\n }\n break;\n }\n case 'default-cache':\n case 'default-no-store':\n case 'auto':\n case undefined:\n break;\n default:\n pageFetchCacheMode;\n }\n if (typeof finalRevalidate === 'undefined') {\n if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) {\n finalRevalidate = _constants1.INFINITE_CACHE;\n cacheReason = 'fetchCache = default-cache';\n } else if (pageFetchCacheMode === 'default-no-store') {\n finalRevalidate = 0;\n cacheReason = 'fetchCache = default-no-store';\n } else if (isUsingNoStore) {\n finalRevalidate = 0;\n cacheReason = 'noStore call';\n } else if (autoNoCache) {\n finalRevalidate = 0;\n cacheReason = 'auto no cache';\n } else {\n // TODO: should we consider this case an invariant?\n cacheReason = 'auto cache';\n finalRevalidate = revalidateStore ? revalidateStore.revalidate : _constants1.INFINITE_CACHE;\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${finalRevalidate}`;\n }\n if (// when force static is configured we don't bail from\n // `revalidate: 0` values\n !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR\n !autoNoCache && // If the revalidate value isn't currently set or the value is less\n // than the current revalidate value, we should update the revalidate\n // value.\n revalidateStore && finalRevalidate < revalidateStore.revalidate) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (finalRevalidate === 0) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n // We only want to set the revalidate store's revalidate time if it\n // was explicitly set for the fetch call, i.e.\n // originalFetchRevalidate.\n if (revalidateStore && originalFetchRevalidate === finalRevalidate) {\n revalidateStore.revalidate = finalRevalidate;\n }\n }\n const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0;\n let cacheKey;\n const { incrementalCache } = workStore;\n let isHmrRefresh = false;\n let serverComponentsHmrCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'cache':\n case 'private-cache':\n isHmrRefresh = workUnitStore.isHmrRefresh ?? false;\n serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache;\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) {\n try {\n cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init);\n } catch (err) {\n console.error(`Failed to generate cache key for`, input);\n }\n }\n const fetchIdx = workStore.nextFetchId ?? 1;\n workStore.nextFetchId = fetchIdx + 1;\n let handleUnlock = ()=>{};\n const doOriginalFetch = async (isStale, cacheReasonOverride)=>{\n const requestInputFields = [\n 'cache',\n 'credentials',\n 'headers',\n 'integrity',\n 'keepalive',\n 'method',\n 'mode',\n 'redirect',\n 'referrer',\n 'referrerPolicy',\n 'window',\n 'duplex',\n // don't pass through signal when revalidating\n ...isStale ? [] : [\n 'signal'\n ]\n ];\n if (isRequestInput) {\n const reqInput = input;\n const reqOptions = {\n body: reqInput._ogBody || reqInput.body\n };\n for (const field of requestInputFields){\n // @ts-expect-error custom fields\n reqOptions[field] = reqInput[field];\n }\n input = new Request(reqInput.url, reqOptions);\n } else if (init) {\n const { _ogBody, body, signal, ...otherInput } = init;\n init = {\n ...otherInput,\n body: _ogBody || body,\n signal: isStale ? undefined : signal\n };\n }\n // add metadata to init without editing the original\n const clonedInit = {\n ...init,\n next: {\n ...init == null ? void 0 : init.next,\n fetchType: 'origin',\n fetchIdx\n }\n };\n return originFetch(input, clonedInit).then(async (res)=>{\n if (!isStale && fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss',\n cacheWarning,\n status: res.status,\n method: clonedInit.method || 'GET'\n });\n }\n if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) {\n const normalizedRevalidate = finalRevalidate >= _constants1.INFINITE_CACHE ? _constants1.CACHE_ONE_YEAR : finalRevalidate;\n const incrementalCacheConfig = isCacheableRevalidate ? {\n fetchCache: true,\n fetchUrl,\n fetchIdx,\n tags,\n isImplicitBuildTimeCache\n } : undefined;\n switch(workUnitStore == null ? void 0 : workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case undefined:\n return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock);\n default:\n workUnitStore;\n }\n }\n // we had response that we determined shouldn't be cached so we return it\n // and don't cache it. This also needs to unlock the cache lock we acquired.\n await handleUnlock();\n return res;\n }).catch((error)=>{\n handleUnlock();\n throw error;\n });\n };\n let cacheReasonOverride;\n let isForegroundRevalidate = false;\n let isHmrRefreshCache = false;\n if (cacheKey && incrementalCache) {\n let cachedFetchData;\n if (isHmrRefresh && serverComponentsHmrCache) {\n cachedFetchData = serverComponentsHmrCache.get(cacheKey);\n isHmrRefreshCache = true;\n }\n if (isCacheableRevalidate && !cachedFetchData) {\n handleUnlock = await incrementalCache.lock(cacheKey);\n const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, {\n kind: _responsecache.IncrementalCacheKind.FETCH,\n revalidate: finalRevalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags == null ? void 0 : implicitTags.tags\n });\n if (hasNoExplicitCacheConfig && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // We sometimes use the cache to dedupe fetches that do not\n // specify a cache configuration. In these cases we want to\n // make sure we still exclude them from prerenders if\n // cacheComponents is on so we introduce an artificial task boundary\n // here.\n await (0, _scheduler.waitAtLeastOneReactRenderTask)();\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (entry) {\n await handleUnlock();\n } else {\n // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers\n cacheReasonOverride = 'cache-control: no-cache (hard refresh)';\n }\n if ((entry == null ? void 0 : entry.value) && entry.value.kind === _responsecache.CachedRouteKind.FETCH) {\n // when stale and is revalidating we wait for fresh data\n // so the revalidated entry has the updated data\n if (workStore.isRevalidate && entry.isStale) {\n isForegroundRevalidate = true;\n } else {\n if (entry.isStale) {\n workStore.pendingRevalidates ??= {};\n if (!workStore.pendingRevalidates[cacheKey]) {\n const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n })).finally(()=>{\n workStore.pendingRevalidates ??= {};\n delete workStore.pendingRevalidates[cacheKey || ''];\n });\n // Attach the empty catch here so we don't get a \"unhandled\n // promise rejection\" warning.\n pendingRevalidate.catch(console.error);\n workStore.pendingRevalidates[cacheKey] = pendingRevalidate;\n }\n }\n cachedFetchData = entry.value.data;\n }\n }\n }\n if (cachedFetchData) {\n if (fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit',\n cacheWarning,\n status: cachedFetchData.status || 200,\n method: (init == null ? void 0 : init.method) || 'GET'\n });\n }\n const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), {\n headers: cachedFetchData.headers,\n status: cachedFetchData.status\n });\n Object.defineProperty(response, 'url', {\n value: cachedFetchData.url\n });\n return response;\n }\n }\n if (workStore.isStaticGeneration && init && typeof init === 'object') {\n const { cache } = init;\n // Delete `cache` property as Cloudflare Workers will throw an error\n if (isEdgeRuntime) delete init.cache;\n if (cache === 'no-store') {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`);\n }\n const hasNextConfig = 'next' in init;\n const { next = {} } = init;\n if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) {\n if (next.revalidate === 0) {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n break;\n default:\n workUnitStore;\n }\n }\n (0, _dynamicrendering.markCurrentScopeAsDynamic)(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n if (!workStore.forceStatic || next.revalidate !== 0) {\n revalidateStore.revalidate = next.revalidate;\n }\n }\n if (hasNextConfig) delete init.next;\n }\n // if we are revalidating the whole page via time or on-demand and\n // the fetch cache entry is stale we should still de-dupe the\n // origin hit if it's a cache-able entry\n if (cacheKey && isForegroundRevalidate) {\n const pendingRevalidateKey = cacheKey;\n workStore.pendingRevalidates ??= {};\n let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey];\n if (pendingRevalidate) {\n const revalidatedResult = await pendingRevalidate;\n return new Response(revalidatedResult.body, {\n headers: revalidatedResult.headers,\n status: revalidatedResult.status,\n statusText: revalidatedResult.statusText\n });\n }\n // We used to just resolve the Response and clone it however for\n // static generation with cacheComponents we need the response to be able to\n // be resolved in a microtask and cloning the response will never have\n // a body that can resolve in a microtask in node (as observed through\n // experimentation) So instead we await the body and then when it is\n // available we construct manually cloned Response objects with the\n // body as an ArrayBuffer. This will be resolvable in a microtask\n // making it compatible with cacheComponents.\n const pendingResponse = doOriginalFetch(true, cacheReasonOverride)// We're cloning the response using this utility because there\n // exists a bug in the undici library around response cloning.\n // See the following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n .then(_cloneresponse.cloneResponse);\n pendingRevalidate = pendingResponse.then(async (responses)=>{\n const response = responses[0];\n return {\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n };\n }).finally(()=>{\n var _workStore_pendingRevalidates;\n // If the pending revalidate is not present in the store, then\n // we have nothing to delete.\n if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete workStore.pendingRevalidates[pendingRevalidateKey];\n });\n // Attach the empty catch here so we don't get a \"unhandled promise\n // rejection\" warning\n pendingRevalidate.catch(()=>{});\n workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate;\n return pendingResponse.then((responses)=>responses[1]);\n } else {\n return doOriginalFetch(false, cacheReasonOverride);\n }\n });\n if (cacheSignal) {\n try {\n return await result;\n } finally{\n if (cacheSignal) {\n cacheSignal.endRead();\n }\n }\n }\n return result;\n };\n // Attach the necessary properties to the patched fetch function.\n // We don't use this to determine if the fetch function has been patched,\n // but for external consumers to determine if the fetch function has been\n // patched.\n patched.__nextPatched = true;\n patched.__nextGetStaticStore = ()=>workAsyncStorage;\n patched._nextOriginalFetch = originFetch;\n globalThis[NEXT_PATCH_SYMBOL] = true;\n // Assign the function name also as a name property, so that it's preserved\n // even when mangling is enabled.\n Object.defineProperty(patched, 'name', {\n value: 'fetch',\n writable: false\n });\n return patched;\n}\nfunction patchFetch(options) {\n // If we've already patched fetch, we should not patch it again.\n if (isFetchPatched()) return;\n // Grab the original fetch function. We'll attach this so we can use it in\n // the patched fetch function.\n const original = (0, _dedupefetch.createDedupeFetch)(globalThis.fetch);\n // Set the global fetch to the patched fetch.\n globalThis.fetch = createPatchedFetcher(original, options);\n}\n\n//# sourceMappingURL=patch-fetch.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcGF0Y2gtZmV0Y2guanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsbUJBQW1CLG1CQUFPLENBQUMsdUZBQW1CO0FBQzlDLGdCQUFnQixtQkFBTyxDQUFDLGlGQUFnQjtBQUN4QyxvQkFBb0IsbUJBQU8sQ0FBQyw0RUFBcUI7QUFDakQsMEJBQTBCLG1CQUFPLENBQUMsOEdBQWlDO0FBQ25FLCtCQUErQixtQkFBTyxDQUFDLG9HQUE0QjtBQUNuRSxxQkFBcUIsbUJBQU8sQ0FBQyxpRkFBZ0I7QUFDN0Msc0NBQXNDLG1CQUFPLENBQUMsMEZBQWdEO0FBQzlGLHVCQUF1QixtQkFBTyxDQUFDLHdGQUFtQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw0RUFBcUI7QUFDaEQsdUJBQXVCLG1CQUFPLENBQUMscUZBQWtCO0FBQ2pELHNCQUFzQixRQUF3QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1YsK0VBQStFLGNBQWMsUUFBUSxNQUFNO0FBQzNHO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFVBQVU7QUFDVjtBQUNBO0FBQ0Esa0RBQWtELHND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Q0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxsaWJcXHBhdGNoLWZldGNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgTkVYVF9QQVRDSF9TWU1CT0w6IG51bGwsXG4gICAgY3JlYXRlUGF0Y2hlZEZldGNoZXI6IG51bGwsXG4gICAgcGF0Y2hGZXRjaDogbnVsbCxcbiAgICB2YWxpZGF0ZVJldmFsaWRhdGU6IG51bGwsXG4gICAgdmFsaWRhdGVUYWdzOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIE5FWFRfUEFUQ0hfU1lNQk9MOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUEFUQ0hfU1lNQk9MO1xuICAgIH0sXG4gICAgY3JlYXRlUGF0Y2hlZEZldGNoZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUGF0Y2hlZEZldGNoZXI7XG4gICAgfSxcbiAgICBwYXRjaEZldGNoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoRmV0Y2g7XG4gICAgfSxcbiAgICB2YWxpZGF0ZVJldmFsaWRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVSZXZhbGlkYXRlO1xuICAgIH0sXG4gICAgdmFsaWRhdGVUYWdzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlVGFncztcbiAgICB9XG59KTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi90cmFjZS9jb25zdGFudHNcIik7XG5jb25zdCBfdHJhY2VyID0gcmVxdWlyZShcIi4vdHJhY2UvdHJhY2VyXCIpO1xuY29uc3QgX2NvbnN0YW50czEgPSByZXF1aXJlKFwiLi4vLi4vbGliL2NvbnN0YW50c1wiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2RlZHVwZWZldGNoID0gcmVxdWlyZShcIi4vZGVkdXBlLWZldGNoXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9yZXNwb25zZWNhY2hlID0gcmVxdWlyZShcIi4uL3Jlc3BvbnNlLWNhY2hlXCIpO1xuY29uc3QgX3NjaGVkdWxlciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvc2NoZWR1bGVyXCIpO1xuY29uc3QgX2Nsb25lcmVzcG9uc2UgPSByZXF1aXJlKFwiLi9jbG9uZS1yZXNwb25zZVwiKTtcbmNvbnN0IGlzRWRnZVJ1bnRpbWUgPSBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJztcbmNvbnN0IE5FWFRfUEFUQ0hfU1lNQk9MID0gU3ltYm9sLmZvcignbmV4dC1wYXRjaCcpO1xuZnVuY3Rpb24gaXNGZXRjaFBhdGNoZWQoKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXNbTkVYVF9QQVRDSF9TWU1CT0xdID09PSB0cnVlO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVSZXZhbGlkYXRlKHJldmFsaWRhdGVWYWwsIHJvdXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmV2YWxpZGF0ZVZhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gX2NvbnN0YW50czEuSU5GSU5JVEVfQ0FDSEU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJldmFsaWRhdGVWYWwgPT09ICdudW1iZXInICYmICFpc05hTihyZXZhbGlkYXRlVmFsKSAmJiByZXZhbGlkYXRlVmFsID4gLTEpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gcmV2YWxpZGF0ZVZhbDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmV2YWxpZGF0ZVZhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgcmV2YWxpZGF0ZSB2YWx1ZSBcIiR7cmV2YWxpZGF0ZVZhbH1cIiBvbiBcIiR7cm91dGV9XCIsIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyIG9yIGZhbHNlYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxNzlcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkUmV2YWxpZGF0ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaGFuZGxlIGNsaWVudCBjb21wb25lbnQgZXJyb3IgZnJvbSBhdHRlbXB0aW5nIHRvIGNoZWNrIHJldmFsaWRhdGUgdmFsdWVcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbnZhbGlkIHJldmFsaWRhdGUnKSkge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVUYWdzKHRhZ3MsIGRlc2NyaXB0aW9uKSB7XG4gICAgY29uc3QgdmFsaWRUYWdzID0gW107XG4gICAgY29uc3QgaW52YWxpZFRhZ3MgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRhZ3NbaV07XG4gICAgICAgIGlmICh0eXBlb2YgdGFnICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaW52YWxpZFRhZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogJ2ludmFsaWQgdHlwZSwgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy5sZW5ndGggPiBfY29uc3RhbnRzMS5ORVhUX0NBQ0hFX1RBR19NQVhfTEVOR1RIKSB7XG4gICAgICAgICAgICBpbnZhbGlkVGFncy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgcmVhc29uOiBgZXhjZWVkZWQgbWF4IGxlbmd0aCBvZiAke19jb25zdGFudHMxLk5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEh9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZFRhZ3MucHVzaCh0YWcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWxpZFRhZ3MubGVuZ3RoID4gX2NvbnN0YW50czEuTkVYVF9DQUNIRV9UQUdfTUFYX0lURU1TKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFdhcm5pbmc6IGV4Y2VlZGVkIG1heCB0YWcgY291bnQgZm9yICR7ZGVzY3JpcHRpb259LCBkcm9wcGVkIHRhZ3M6YCwgdGFncy5zbGljZShpKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpbnZhbGlkVGFncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgV2FybmluZzogaW52YWxpZCB0YWdzIHBhc3NlZCB0byAke2Rlc2NyaXB0aW9ufTogYCk7XG4gICAgICAgIGZvciAoY29uc3QgeyB0YWcsIHJlYXNvbiB9IG9mIGludmFsaWRUYWdzKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB0YWc6IFwiJHt0YWd9XCIgJHtyZWFzb259YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkVGFncztcbn1cbmZ1bmN0aW9uIHRyYWNrRmV0Y2hNZXRyaWMod29ya1N0b3JlLCBjdHgpIHtcbiAgICBpZiAoIXdvcmtTdG9yZS5zaG91bGRUcmFja0ZldGNoTWV0cmljcykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHdvcmtTdG9yZS5mZXRjaE1ldHJpY3MgPz89IFtdO1xuICAgIHdvcmtTdG9yZS5mZXRjaE1ldHJpY3MucHVzaCh7XG4gICAgICAgIC4uLmN0eCxcbiAgICAgICAgZW5kOiBwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCksXG4gICAgICAgIGlkeDogd29ya1N0b3JlLm5leHRGZXRjaElkIHx8IDBcbiAgICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNhY2hlZFByZXJlbmRlclJlc3BvbnNlKHJlcywgY2FjaGVLZXksIGluY3JlbWVudGFsQ2FjaGVDb250ZXh0LCBpbmNyZW1lbnRhbENhY2hlLCByZXZhbGlkYXRlLCBoYW5kbGVVbmxvY2spIHtcbiAgICAvLyBXZSBhcmUgcHJlcmVuZGVyaW5nIGF0IGJ1aWxkIHRpbWUgb3IgcmV2YWxpZGF0ZSB0aW1lIHdpdGggY2FjaGVDb21wb25lbnRzIHNvIHdlXG4gICAgLy8gbmVlZCB0byBidWZmZXIgdGhlIHJlc3BvbnNlIHNvIHdlIGNhbiBndWFyYW50ZWUgaXQgY2FuIGJlIHJlYWQgaW4gYVxuICAgIC8vIG1pY3JvdGFzay5cbiAgICBjb25zdCBib2R5QnVmZmVyID0gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCk7XG4gICAgY29uc3QgZmV0Y2hlZERhdGEgPSB7XG4gICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhyZXMuaGVhZGVycy5lbnRyaWVzKCkpLFxuICAgICAgICBib2R5OiBCdWZmZXIuZnJvbShib2R5QnVmZmVyKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgICAgdXJsOiByZXMudXJsXG4gICAgfTtcbiAgICAvLyBXZSBjYW4gc2tpcCBzZXR0aW5nIHRoZSBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUgYmVjYXVzZSB3ZSBhcmVuJ3QgaW4gZGV2XG4gICAgLy8gbW9kZS5cbiAgICBpZiAoaW5jcmVtZW50YWxDYWNoZUNvbnRleHQpIHtcbiAgICAgICAgYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgICAgIGtpbmQ6IF9yZXNwb25zZWNhY2hlLkNhY2hlZFJvdXRlS2luZC5GRVRDSCxcbiAgICAgICAgICAgIGRhdGE6IGZldGNoZWREYXRhLFxuICAgICAgICAgICAgcmV2YWxpZGF0ZVxuICAgICAgICB9LCBpbmNyZW1lbnRhbENhY2hlQ29udGV4dCk7XG4gICAgfVxuICAgIGF3YWl0IGhhbmRsZVVubG9jaygpO1xuICAgIC8vIFdlIHJldHVybiBhIG5ldyBSZXNwb25zZSB0byB0aGUgY2FsbGVyLlxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keUJ1ZmZlciwge1xuICAgICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXMuc3RhdHVzVGV4dFxuICAgIH0pO1xufVxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2FjaGVkRHluYW1pY1Jlc3BvbnNlKHdvcmtTdG9yZSwgcmVzLCBjYWNoZUtleSwgaW5jcmVtZW50YWxDYWNoZUNvbnRleHQsIGluY3JlbWVudGFsQ2FjaGUsIHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSwgcmV2YWxpZGF0ZSwgaW5wdXQsIGhhbmRsZVVubG9jaykge1xuICAgIC8vIFdlJ3JlIGNsb25pbmcgdGhlIHJlc3BvbnNlIHVzaW5nIHRoaXMgdXRpbGl0eSBiZWNhdXNlIHRoZXJlIGV4aXN0cyBhIGJ1ZyBpblxuICAgIC8vIHRoZSB1bmRpY2kgbGlicmFyeSBhcm91bmQgcmVzcG9uc2UgY2xvbmluZy4gU2VlIHRoZSBmb2xsb3dpbmcgcHVsbCByZXF1ZXN0XG4gICAgLy8gZm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3B1bGwvNzMyNzRcbiAgICBjb25zdCBbY2xvbmVkMSwgY2xvbmVkMl0gPSAoMCwgX2Nsb25lcmVzcG9uc2UuY2xvbmVSZXNwb25zZSkocmVzKTtcbiAgICAvLyBXZSBhcmUgZHluYW1pY2FsbHkgcmVuZGVyaW5nIGluY2x1ZGluZyBkZXYgbW9kZS4gV2Ugd2FudCB0byByZXR1cm4gdGhlXG4gICAgLy8gcmVzcG9uc2UgdG8gdGhlIGNhbGxlciBhcyBzb29uIGFzIHBvc3NpYmxlIGJlY2F1c2UgaXQgbWlnaHQgc3RyZWFtIG92ZXIgYVxuICAgIC8vIHZlcnkgbG9uZyB0aW1lLlxuICAgIGNvbnN0IGNhY2hlU2V0UHJvbWlzZSA9IGNsb25lZDEuYXJyYXlCdWZmZXIoKS50aGVuKGFzeW5jIChhcnJheUJ1ZmZlcik9PntcbiAgICAgICAgY29uc3QgYm9keUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKTtcbiAgICAgICAgY29uc3QgZmV0Y2hlZERhdGEgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBPYmplY3QuZnJvbUVudHJpZXMoY2xvbmVkMS5oZWFkZXJzLmVudHJpZXMoKSksXG4gICAgICAgICAgICBib2R5OiBib2R5QnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgICAgIHN0YXR1czogY2xvbmVkMS5zdGF0dXMsXG4gICAgICAgICAgICB1cmw6IGNsb25lZDEudXJsXG4gICAgICAgIH07XG4gICAgICAgIHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSA9PSBudWxsID8gdm9pZCAwIDogc2VydmVyQ29tcG9uZW50c0htckNhY2hlLnNldChjYWNoZUtleSwgZmV0Y2hlZERhdGEpO1xuICAgICAgICBpZiAoaW5jcmVtZW50YWxDYWNoZUNvbnRleHQpIHtcbiAgICAgICAgICAgIGF3YWl0IGluY3JlbWVudGFsQ2FjaGUuc2V0KGNhY2hlS2V5LCB7XG4gICAgICAgICAgICAgICAga2luZDogX3Jlc3BvbnNlY2FjaGUuQ2FjaGVkUm91dGVLaW5kLkZFVENILFxuICAgICAgICAgICAgICAgIGRhdGE6IGZldGNoZWREYXRhLFxuICAgICAgICAgICAgICAgIHJldmFsaWRhdGVcbiAgICAgICAgICAgIH0sIGluY3JlbWVudGFsQ2FjaGVDb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH0pLmNhdGNoKChlcnJvcik9PmNvbnNvbGUud2FybihgRmFpbGVkIHRvIHNldCBmZXRjaCBjYWNoZWAsIGlucHV0LCBlcnJvcikpLmZpbmFsbHkoaGFuZGxlVW5sb2NrKTtcbiAgICBjb25zdCBwZW5kaW5nUmV2YWxpZGF0ZUtleSA9IGBjYWNoZS1zZXQtJHtjYWNoZUtleX1gO1xuICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9O1xuICAgIGlmIChwZW5kaW5nUmV2YWxpZGF0ZUtleSBpbiB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzKSB7XG4gICAgICAgIC8vIHRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nIHJldmFsaWRhdGUgZW50cnkgdGhhdCB3ZSBuZWVkIHRvIGF3YWl0IHRvXG4gICAgICAgIC8vIGF2b2lkIHJhY2UgY29uZGl0aW9uc1xuICAgICAgICBhd2FpdCB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XTtcbiAgICB9XG4gICAgd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1twZW5kaW5nUmV2YWxpZGF0ZUtleV0gPSBjYWNoZVNldFByb21pc2UuZmluYWxseSgoKT0+e1xuICAgICAgICB2YXIgX3dvcmtTdG9yZV9wZW5kaW5nUmV2YWxpZGF0ZXM7XG4gICAgICAgIC8vIElmIHRoZSBwZW5kaW5nIHJldmFsaWRhdGUgaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlLCB0aGVuIHdlIGhhdmVcbiAgICAgICAgLy8gbm90aGluZyB0byBkZWxldGUuXG4gICAgICAgIGlmICghKChfd29ya1N0b3JlX3BlbmRpbmdSZXZhbGlkYXRlcyA9IHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMpID09IG51bGwgPyB2b2lkIDAgOiBfd29ya1N0b3JlX3BlbmRpbmdSZXZhbGlkYXRlc1twZW5kaW5nUmV2YWxpZGF0ZUtleV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXNbcGVuZGluZ1JldmFsaWRhdGVLZXldO1xuICAgIH0pO1xuICAgIHJldHVybiBjbG9uZWQyO1xufVxuZnVuY3Rpb24gY3JlYXRlUGF0Y2hlZEZldGNoZXIob3JpZ2luRmV0Y2gsIHsgd29ya0FzeW5jU3RvcmFnZSwgd29ya1VuaXRBc3luY1N0b3JhZ2UgfSkge1xuICAgIC8vIENyZWF0ZSB0aGUgcGF0Y2hlZCBmZXRjaCBmdW5jdGlvbi5cbiAgICBjb25zdCBwYXRjaGVkID0gYXN5bmMgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgICAgICAgdmFyIF9pbml0X21ldGhvZCwgX2luaXRfbmV4dDtcbiAgICAgICAgbGV0IHVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaW5wdXQudXJsIDogaW5wdXQpO1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgICAgfSBjYXRjaCAge1xuICAgICAgICAgICAgLy8gRXJyb3IgY2F1c2VkIGJ5IG1hbGZvcm1lZCBVUkwgc2hvdWxkIGJlIGhhbmRsZWQgYnkgbmF0aXZlIGZldGNoXG4gICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSAodXJsID09IG51bGwgPyB2b2lkIDAgOiB1cmwuaHJlZikgPz8gJyc7XG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IChpbml0ID09IG51bGwgPyB2b2lkIDAgOiAoX2luaXRfbWV0aG9kID0gaW5pdC5tZXRob2QpID09IG51bGwgPyB2b2lkIDAgOiBfaW5pdF9tZXRob2QudG9VcHBlckNhc2UoKSkgfHwgJ0dFVCc7XG4gICAgICAgIC8vIERvIGNyZWF0ZSBhIG5ldyBzcGFuIHRyYWNlIGZvciBpbnRlcm5hbCBmZXRjaGVzIGluIHRoZVxuICAgICAgICAvLyBub24tdmVyYm9zZSBtb2RlLlxuICAgICAgICBjb25zdCBpc0ludGVybmFsID0gKGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IChfaW5pdF9uZXh0ID0gaW5pdC5uZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2luaXRfbmV4dC5pbnRlcm5hbCkgPT09IHRydWU7XG4gICAgICAgIGNvbnN0IGhpZGVTcGFuID0gcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX0ZFVENIX0RJU0FCTEVEID09PSAnMSc7XG4gICAgICAgIC8vIFdlIGRvbid0IHRyYWNrIGZldGNoIG1ldHJpY3MgZm9yIGludGVybmFsIGZldGNoZXNcbiAgICAgICAgLy8gc28gaXQncyBub3QgY3JpdGljYWwgdGhhdCB3ZSBoYXZlIGEgc3RhcnQgdGltZSwgYXMgaXQgd29uJ3QgYmUgcmVjb3JkZWQuXG4gICAgICAgIC8vIFRoaXMgaXMgdG8gd29ya2Fyb3VuZCBhIGZsYWt5IGlzc3VlIHdoZXJlIHBlcmZvcm1hbmNlIEFQSXMgbWlnaHRcbiAgICAgICAgLy8gbm90IGJlIGF2YWlsYWJsZSBhbmQgd2lsbCByZXF1aXJlIGZvbGxvdy11cCBpbnZlc3RpZ2F0aW9uLlxuICAgICAgICBjb25zdCBmZXRjaFN0YXJ0ID0gaXNJbnRlcm5hbCA/IHVuZGVmaW5lZCA6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgY29uc3Qgd29ya1N0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gd29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgLy8gRHVyaW5nIHN0YXRpYyBnZW5lcmF0aW9uIHdlIHRyYWNrIGNhY2hlIHJlYWRzIHNvIHdlIGNhbiByZWFzb24gYWJvdXQgd2hlbiB0aGV5IGZpbGxcbiAgICAgICAgbGV0IGNhY2hlU2lnbmFsID0gd29ya1VuaXRTdG9yZSA/ICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC5nZXRDYWNoZVNpZ25hbCkod29ya1VuaXRTdG9yZSkgOiBudWxsO1xuICAgICAgICBpZiAoY2FjaGVTaWduYWwpIHtcbiAgICAgICAgICAgIGNhY2hlU2lnbmFsLmJlZ2luUmVhZCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICgwLCBfdHJhY2VyLmdldFRyYWNlcikoKS50cmFjZShpc0ludGVybmFsID8gX2NvbnN0YW50cy5OZXh0Tm9kZVNlcnZlclNwYW4uaW50ZXJuYWxGZXRjaCA6IF9jb25zdGFudHMuQXBwUmVuZGVyU3Bhbi5mZXRjaCwge1xuICAgICAgICAgICAgaGlkZVNwYW4sXG4gICAgICAgICAgICBraW5kOiBfdHJhY2VyLlNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgICAgIHNwYW5OYW1lOiBbXG4gICAgICAgICAgICAgICAgJ2ZldGNoJyxcbiAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgZmV0Y2hVcmxcbiAgICAgICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAnaHR0cC51cmwnOiBmZXRjaFVybCxcbiAgICAgICAgICAgICAgICAnaHR0cC5tZXRob2QnOiBtZXRob2QsXG4gICAgICAgICAgICAgICAgJ25ldC5wZWVyLm5hbWUnOiB1cmwgPT0gbnVsbCA/IHZvaWQgMCA6IHVybC5ob3N0bmFtZSxcbiAgICAgICAgICAgICAgICAnbmV0LnBlZXIucG9ydCc6ICh1cmwgPT0gbnVsbCA/IHZvaWQgMCA6IHVybC5wb3J0KSB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgYXN5bmMgKCk9PntcbiAgICAgICAgICAgIHZhciBfZ2V0UmVxdWVzdE1ldGE7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGludGVybmFsIGZldGNoLCB3ZSBzaG91bGQgbm90IGRvIGFueSBzcGVjaWFsIHRyZWF0bWVudC5cbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkZldGNoKGlucHV0LCBpbml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZSB3b3JrU3RvcmUgaXMgbm90IGF2YWlsYWJsZSwgd2UgY2FuJ3QgZG8gYW55XG4gICAgICAgICAgICAvLyBzcGVjaWFsIHRyZWF0bWVudCBvZiBmZXRjaCwgdGhlcmVmb3JlIGZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAgICAgICAgICAgLy8gZmV0Y2ggaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5GZXRjaChpbnB1dCwgaW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgYWxzbyBmYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgZmV0Y2ggaW1wbGVtZW50YXRpb24gaWYgd2VcbiAgICAgICAgICAgIC8vIGFyZSBpbiBkcmFmdCBtb2RlLCBpdCBkb2VzIG5vdCBjb25zdGl0dXRlIGEgc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgICAgICBpZiAod29ya1N0b3JlLmlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkZldGNoKGlucHV0LCBpbml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzUmVxdWVzdElucHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgaW5wdXQubWV0aG9kID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgIGNvbnN0IGdldFJlcXVlc3RNZXRhID0gKGZpZWxkKT0+e1xuICAgICAgICAgICAgICAgIC8vIElmIHJlcXVlc3QgaW5wdXQgaXMgcHJlc2VudCBidXQgaW5pdCBpcyBub3QsIHJldHJpZXZlIGZyb20gaW5wdXQgZmlyc3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0W2ZpZWxkXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgfHwgKGlzUmVxdWVzdElucHV0ID8gaW5wdXRbZmllbGRdIDogbnVsbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGZpbmFsUmV2YWxpZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGdldE5leHRGaWVsZCA9IChmaWVsZCk9PntcbiAgICAgICAgICAgICAgICB2YXIgX2luaXRfbmV4dCwgX2luaXRfbmV4dDEsIF9pbnB1dF9uZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgKGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IChfaW5pdF9uZXh0ID0gaW5pdC5uZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX2luaXRfbmV4dFtmaWVsZF0pICE9PSAndW5kZWZpbmVkJyA/IGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IChfaW5pdF9uZXh0MSA9IGluaXQubmV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9pbml0X25leHQxW2ZpZWxkXSA6IGlzUmVxdWVzdElucHV0ID8gKF9pbnB1dF9uZXh0ID0gaW5wdXQubmV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9pbnB1dF9uZXh0W2ZpZWxkXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBSZXF1ZXN0SW5pdCBkb2Vzbid0IGtlZXAgZXh0cmEgZmllbGRzIGUuZy4gbmV4dCBzbyBpdCdzXG4gICAgICAgICAgICAvLyBvbmx5IGF2YWlsYWJsZSBpZiBpbml0IGlzIHVzZWQgc2VwYXJhdGVcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRmV0Y2hSZXZhbGlkYXRlID0gZ2V0TmV4dEZpZWxkKCdyZXZhbGlkYXRlJyk7XG4gICAgICAgICAgICBsZXQgY3VycmVudEZldGNoUmV2YWxpZGF0ZSA9IG9yaWdpbmFsRmV0Y2hSZXZhbGlkYXRlO1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHZhbGlkYXRlVGFncyhnZXROZXh0RmllbGQoJ3RhZ3MnKSB8fCBbXSwgYGZldGNoICR7aW5wdXQudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgIGxldCByZXZhbGlkYXRlU3RvcmU7XG4gICAgICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFN0b3AgYWNjdW11bGF0aW5nIHRhZ3MgaW4gY2xpZW50IHByZXJlbmRlci4gKGZhbGx0aHJvdWdoKVxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZVN0b3JlID0gd29ya1VuaXRTdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXZhbGlkYXRlU3RvcmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWdzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb2xsZWN0IHRhZ3Mgb250byBwYXJlbnQgY2FjaGVzIG9yIHBhcmVudCBwcmVyZW5kZXJzLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0ZWRUYWdzID0gcmV2YWxpZGF0ZVN0b3JlLnRhZ3MgPz8gKHJldmFsaWRhdGVTdG9yZS50YWdzID0gW10pO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbGVjdGVkVGFncy5pbmNsdWRlcyh0YWcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGVkVGFncy5wdXNoKHRhZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbXBsaWNpdFRhZ3MgPSB3b3JrVW5pdFN0b3JlID09IG51bGwgPyB2b2lkIDAgOiB3b3JrVW5pdFN0b3JlLmltcGxpY2l0VGFncztcbiAgICAgICAgICAgIGxldCBwYWdlRmV0Y2hDYWNoZU1vZGUgPSB3b3JrU3RvcmUuZmV0Y2hDYWNoZTtcbiAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc2lkZSB1bnN0YWJsZS1jYWNoZSB3ZSB0cmVhdCBpdCB0aGUgc2FtZSBhcyBmb3JjZS1uby1zdG9yZSBvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBhZ2UuXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlRmV0Y2hDYWNoZU1vZGUgPSAnZm9yY2Utbm8tc3RvcmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNVc2luZ05vU3RvcmUgPSAhIXdvcmtTdG9yZS5pc1Vuc3RhYmxlTm9TdG9yZTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9IGdldFJlcXVlc3RNZXRhKCdjYWNoZScpO1xuICAgICAgICAgICAgbGV0IGNhY2hlUmVhc29uID0gJyc7XG4gICAgICAgICAgICBsZXQgY2FjaGVXYXJuaW5nO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJldmFsaWRhdGUgdmFsdWUgY29uZmxpY3RzIHdpdGggdGhlIGNhY2hlIHZhbHVlLCB3ZSBzaG91bGQgd2FybiB0aGUgdXNlciBhbmQgdW5zZXQgdGhlIGNvbmZsaWN0aW5nIHZhbHVlcy5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0NvbmZsaWN0aW5nUmV2YWxpZGF0ZSA9IC8vIHJldmFsaWRhdGU6IDAgYW5kIGNhY2hlOiBmb3JjZS1jYWNoZVxuICAgICAgICAgICAgICAgIGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnZm9yY2UtY2FjaGUnICYmIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgPT09IDAgfHwgLy8gcmV2YWxpZGF0ZTogPjAgb3IgcmV2YWxpZGF0ZTogZmFsc2UgYW5kIGNhY2hlOiBuby1zdG9yZVxuICAgICAgICAgICAgICAgIGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnbm8tc3RvcmUnICYmIChjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID4gMCB8fCBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09PSBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ29uZmxpY3RpbmdSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlV2FybmluZyA9IGBTcGVjaWZpZWQgXCJjYWNoZTogJHtjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZ31cIiBhbmQgXCJyZXZhbGlkYXRlOiAke2N1cnJlbnRGZXRjaFJldmFsaWRhdGV9XCIsIG9ubHkgb25lIHNob3VsZCBiZSBzcGVjaWZpZWQuYDtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaGFzRXhwbGljaXRGZXRjaENhY2hlT3B0T3V0ID0gLy8gZmV0Y2ggY29uZmlnIGl0c2VsZiBzaWduYWxzIG5vdCB0byBjYWNoZVxuICAgICAgICAgICAgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICduby1jYWNoZScgfHwgY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICduby1zdG9yZScgfHwgLy8gdGhlIGZldGNoIGlzbid0IGV4cGxpY2l0bHkgY2FjaGluZyBhbmQgdGhlIHNlZ21lbnQgbGV2ZWwgY2FjaGUgY29uZmlnIHNpZ25hbHMgbm90IHRvIGNhY2hlXG4gICAgICAgICAgICAvLyBub3RlOiBgcGFnZUZldGNoQ2FjaGVNb2RlYCBpcyBhbHNvIHNldCBieSBiZWluZyBpbiBhbiB1bnN0YWJsZV9jYWNoZSBjb250ZXh0LlxuICAgICAgICAgICAgcGFnZUZldGNoQ2FjaGVNb2RlID09PSAnZm9yY2Utbm8tc3RvcmUnIHx8IHBhZ2VGZXRjaENhY2hlTW9kZSA9PT0gJ29ubHktbm8tc3RvcmUnO1xuICAgICAgICAgICAgLy8gSWYgbm8gZXhwbGljaXQgZmV0Y2ggY2FjaGUgbW9kZSBpcyBzZXQsIGJ1dCBkeW5hbWljID0gYGZvcmNlLWR5bmFtaWNgIGlzIHNldCxcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZG4ndCBjb25zaWRlciBjYWNoaW5nIHRoZSBmZXRjaC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBgZHluYW1pY2AgY2FjaGVcbiAgICAgICAgICAgIC8vIGlzIGNvbnNpZGVyZWQgYSBcInRvcC1sZXZlbFwiIGNhY2hlIG1vZGUsIHdoZXJlYXMgc29tZXRoaW5nIGxpa2UgYGZldGNoQ2FjaGVgIGlzIG1vcmVcbiAgICAgICAgICAgIC8vIGZpbmUtZ3JhaW5lZC4gVG9wLWxldmVsIG1vZGVzIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyByZWFzb25hYmxlIGRlZmF1bHRzIGZvciB0aGVcbiAgICAgICAgICAgIC8vIG90aGVyIGNvbmZpZ3VyYXRpb25zLlxuICAgICAgICAgICAgY29uc3Qgbm9GZXRjaENvbmZpZ0FuZEZvcmNlRHluYW1pYyA9ICFwYWdlRmV0Y2hDYWNoZU1vZGUgJiYgIWN1cnJlbnRGZXRjaENhY2hlQ29uZmlnICYmICFjdXJyZW50RmV0Y2hSZXZhbGlkYXRlICYmIHdvcmtTdG9yZS5mb3JjZUR5bmFtaWM7XG4gICAgICAgICAgICBpZiAoLy8gZm9yY2UtY2FjaGUgd2FzIHNwZWNpZmllZCB3aXRob3V0IGEgcmV2YWxpZGF0ZSB2YWx1ZS4gV2Ugc2V0IHRoZSByZXZhbGlkYXRlIHZhbHVlIHRvIGZhbHNlXG4gICAgICAgICAgICAvLyB3aGljaCB3aWxsIHNpZ25hbCB0aGUgY2FjaGUgdG8gbm90IHJldmFsaWRhdGVcbiAgICAgICAgICAgIGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnZm9yY2UtY2FjaGUnICYmIHR5cGVvZiBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRXhwbGljaXRGZXRjaENhY2hlT3B0T3V0IHx8IG5vRmV0Y2hDb25maWdBbmRGb3JjZUR5bmFtaWMpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ25vLWNhY2hlJyB8fCBjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PT0gJ25vLXN0b3JlJykge1xuICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gYGNhY2hlOiAke2N1cnJlbnRGZXRjaENhY2hlQ29uZmlnfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPSB2YWxpZGF0ZVJldmFsaWRhdGUoY3VycmVudEZldGNoUmV2YWxpZGF0ZSwgd29ya1N0b3JlLnJvdXRlKTtcbiAgICAgICAgICAgIGNvbnN0IF9oZWFkZXJzID0gZ2V0UmVxdWVzdE1ldGEoJ2hlYWRlcnMnKTtcbiAgICAgICAgICAgIGNvbnN0IGluaXRIZWFkZXJzID0gdHlwZW9mIChfaGVhZGVycyA9PSBudWxsID8gdm9pZCAwIDogX2hlYWRlcnMuZ2V0KSA9PT0gJ2Z1bmN0aW9uJyA/IF9oZWFkZXJzIDogbmV3IEhlYWRlcnMoX2hlYWRlcnMgfHwge30pO1xuICAgICAgICAgICAgY29uc3QgaGFzVW5DYWNoZWFibGVIZWFkZXIgPSBpbml0SGVhZGVycy5nZXQoJ2F1dGhvcml6YXRpb24nKSB8fCBpbml0SGVhZGVycy5nZXQoJ2Nvb2tpZScpO1xuICAgICAgICAgICAgY29uc3QgaXNVbkNhY2hlYWJsZU1ldGhvZCA9ICFbXG4gICAgICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICAgICAgJ2hlYWQnXG4gICAgICAgICAgICBdLmluY2x1ZGVzKCgoX2dldFJlcXVlc3RNZXRhID0gZ2V0UmVxdWVzdE1ldGEoJ21ldGhvZCcpKSA9PSBudWxsID8gdm9pZCAwIDogX2dldFJlcXVlc3RNZXRhLnRvTG93ZXJDYXNlKCkpIHx8ICdnZXQnKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBhdXRvbWF0aWNhbGx5IGRpc2FibGUgZmV0Y2ggY2FjaGluZyB1bmRlciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gICAgICAgICAqIC0gRmV0Y2ggY2FjaGUgY29uZmlncyBhcmUgbm90IHNldC4gU3BlY2lmaWNhbGx5OlxuICAgICAgICAgKiAgICAtIEEgcGFnZSBmZXRjaCBjYWNoZSBtb2RlIGlzIG5vdCBzZXQgKGV4cG9ydCBjb25zdCBmZXRjaENhY2hlPS4uLilcbiAgICAgICAgICogICAgLSBBIGZldGNoIGNhY2hlIG1vZGUgaXMgbm90IHNldCBpbiB0aGUgZmV0Y2ggY2FsbCAoZmV0Y2godXJsLCB7IGNhY2hlOiAuLi4gfSkpXG4gICAgICAgICAqICAgICAgb3IgdGhlIGZldGNoIGNhY2hlIG1vZGUgaXMgc2V0IHRvICdkZWZhdWx0J1xuICAgICAgICAgKiAgICAtIEEgZmV0Y2ggcmV2YWxpZGF0ZSB2YWx1ZSBpcyBub3Qgc2V0IGluIHRoZSBmZXRjaCBjYWxsIChmZXRjaCh1cmwsIHsgcmV2YWxpZGF0ZTogLi4uIH0pKVxuICAgICAgICAgKiAtIE9SIHRoZSBmZXRjaCBjb21lcyBhZnRlciBhIGNvbmZpZ3VyYXRpb24gdGhhdCB0cmlnZ2VyZWQgZHluYW1pYyByZW5kZXJpbmcgKGUuZy4sIHJlYWRpbmcgY29va2llcygpKVxuICAgICAgICAgKiAgIGFuZCB0aGUgZmV0Y2ggd2FzIGNvbnNpZGVyZWQgdW5jYWNoZWFibGUgKGUuZy4sIFBPU1QgbWV0aG9kIG9yIGhhcyBhdXRob3JpemF0aW9uIGhlYWRlcnMpXG4gICAgICAgICAqLyBjb25zdCBoYXNOb0V4cGxpY2l0Q2FjaGVDb25maWcgPSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICBwYWdlRmV0Y2hDYWNoZU1vZGUgPT0gdW5kZWZpbmVkICYmIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgICAgIChjdXJyZW50RmV0Y2hDYWNoZUNvbmZpZyA9PSB1bmRlZmluZWQgfHwgLy8gd2hlbiBjb25zaWRlcmluZyB3aGV0aGVyIHRvIG9wdCBpbnRvIHRoZSBkZWZhdWx0IFwibm8tY2FjaGVcIiBmZXRjaCBzZW1hbnRpY3MsXG4gICAgICAgICAgICAvLyBhIFwiZGVmYXVsdFwiIGNhY2hlIGNvbmZpZyBzaG91bGQgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBubyBjYWNoZSBjb25maWdcbiAgICAgICAgICAgIGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnZGVmYXVsdCcpICYmIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgICAgIGN1cnJlbnRGZXRjaFJldmFsaWRhdGUgPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGF1dG9Ob0NhY2hlID0gQm9vbGVhbigoaGFzVW5DYWNoZWFibGVIZWFkZXIgfHwgaXNVbkNhY2hlYWJsZU1ldGhvZCkgJiYgKHJldmFsaWRhdGVTdG9yZSA9PSBudWxsID8gdm9pZCAwIDogcmV2YWxpZGF0ZVN0b3JlLnJldmFsaWRhdGUpID09PSAwKTtcbiAgICAgICAgICAgIGxldCBpc0ltcGxpY2l0QnVpbGRUaW1lQ2FjaGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghYXV0b05vQ2FjaGUgJiYgaGFzTm9FeHBsaWNpdENhY2hlQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZW5hYmxlIGF1dG9tYXRpYyBuby1jYWNoZSBiZWhhdmlvciBkdXJpbmcgYnVpbGQtdGltZVxuICAgICAgICAgICAgICAgIC8vIHByZXJlbmRlcmluZyBzbyB0aGF0IHdlIGNhbiBzdGlsbCBsZXZlcmFnZSB0aGUgZmV0Y2ggY2FjaGUgYmV0d2VlblxuICAgICAgICAgICAgICAgIC8vIGV4cG9ydCB3b3JrZXJzLlxuICAgICAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJbXBsaWNpdEJ1aWxkVGltZUNhY2hlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdXRvTm9DYWNoZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBjYWNoZSBjb25maWcsIGFuZCB3ZSdyZSBpbiBEeW5hbWljIEkvTyBwcmVyZW5kZXJpbmcsXG4gICAgICAgICAgICAvLyBpdCdsbCBiZSBhIGR5bmFtaWMgY2FsbC4gV2UgZG9uJ3QgaGF2ZSB0byBpc3N1ZSB0aGF0IGR5bmFtaWMgY2FsbC5cbiAgICAgICAgICAgIGlmIChoYXNOb0V4cGxpY2l0Q2FjaGVDb25maWcgJiYgd29ya1VuaXRTdG9yZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgd2UgZG9uJ3Qgd2FudCB0byBkbyBjYWNoaW5nIGluIHRoZSBjbGllbnQgc2NvcGUgd2Uga25vdyB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gZmV0Y2ggd2lsbCBiZSBkeW5hbWljIGZvciBjYWNoZUNvbXBvbmVudHMgc28gd2UgbWF5IGFzIHdlbGwgYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbGwgaGVyZS4gKGZhbGx0aHJvdWdoKVxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsLmVuZFJlYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNpZ25hbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKSh3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnZmV0Y2goKScpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoKHBhZ2VGZXRjaENhY2hlTW9kZSl7XG4gICAgICAgICAgICAgICAgY2FzZSAnZm9yY2Utbm8tc3RvcmUnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9ICdmZXRjaENhY2hlID0gZm9yY2Utbm8tc3RvcmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdvbmx5LW5vLXN0b3JlJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGZXRjaENhY2hlQ29uZmlnID09PSAnZm9yY2UtY2FjaGUnIHx8IHR5cGVvZiBmaW5hbFJldmFsaWRhdGUgIT09ICd1bmRlZmluZWQnICYmIGZpbmFsUmV2YWxpZGF0ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBjYWNoZTogJ2ZvcmNlLWNhY2hlJyB1c2VkIG9uIGZldGNoIGZvciAke2ZldGNoVXJsfSB3aXRoICdleHBvcnQgY29uc3QgZmV0Y2hDYWNoZSA9ICdvbmx5LW5vLXN0b3JlJ2ApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTQ0OFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9ICdmZXRjaENhY2hlID0gb25seS1uby1zdG9yZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ29ubHktY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZldGNoQ2FjaGVDb25maWcgPT09ICduby1zdG9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBjYWNoZTogJ25vLXN0b3JlJyB1c2VkIG9uIGZldGNoIGZvciAke2ZldGNoVXJsfSB3aXRoICdleHBvcnQgY29uc3QgZmV0Y2hDYWNoZSA9ICdvbmx5LWNhY2hlJ2ApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTUyMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZvcmNlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09PSAndW5kZWZpbmVkJyB8fCBjdXJyZW50RmV0Y2hSZXZhbGlkYXRlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnZmV0Y2hDYWNoZSA9IGZvcmNlLWNhY2hlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPSBfY29uc3RhbnRzMS5JTkZJTklURV9DQUNIRTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnZGVmYXVsdC1jYWNoZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZGVmYXVsdC1uby1zdG9yZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYXV0byc6XG4gICAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VGZXRjaENhY2hlTW9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxSZXZhbGlkYXRlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGlmIChwYWdlRmV0Y2hDYWNoZU1vZGUgPT09ICdkZWZhdWx0LWNhY2hlJyAmJiAhaXNVc2luZ05vU3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxSZXZhbGlkYXRlID0gX2NvbnN0YW50czEuSU5GSU5JVEVfQ0FDSEU7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gJ2ZldGNoQ2FjaGUgPSBkZWZhdWx0LWNhY2hlJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhZ2VGZXRjaENhY2hlTW9kZSA9PT0gJ2RlZmF1bHQtbm8tc3RvcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gJ2ZldGNoQ2FjaGUgPSBkZWZhdWx0LW5vLXN0b3JlJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVXNpbmdOb1N0b3JlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gJ25vU3RvcmUgY2FsbCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvTm9DYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFJldmFsaWRhdGUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9ICdhdXRvIG5vIGNhY2hlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzaG91bGQgd2UgY29uc2lkZXIgdGhpcyBjYXNlIGFuIGludmFyaWFudD9cbiAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24gPSAnYXV0byBjYWNoZSc7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsUmV2YWxpZGF0ZSA9IHJldmFsaWRhdGVTdG9yZSA/IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlIDogX2NvbnN0YW50czEuSU5GSU5JVEVfQ0FDSEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FjaGVSZWFzb24pIHtcbiAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9IGByZXZhbGlkYXRlOiAke2ZpbmFsUmV2YWxpZGF0ZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKC8vIHdoZW4gZm9yY2Ugc3RhdGljIGlzIGNvbmZpZ3VyZWQgd2UgZG9uJ3QgYmFpbCBmcm9tXG4gICAgICAgICAgICAvLyBgcmV2YWxpZGF0ZTogMGAgdmFsdWVzXG4gICAgICAgICAgICAhKHdvcmtTdG9yZS5mb3JjZVN0YXRpYyAmJiBmaW5hbFJldmFsaWRhdGUgPT09IDApICYmIC8vIHdlIGRvbid0IGNvbnNpZGVyIGF1dG9Ob0NhY2hlIHRvIHN3aXRjaCB0byBkeW5hbWljIGZvciBJU1JcbiAgICAgICAgICAgICFhdXRvTm9DYWNoZSAmJiAvLyBJZiB0aGUgcmV2YWxpZGF0ZSB2YWx1ZSBpc24ndCBjdXJyZW50bHkgc2V0IG9yIHRoZSB2YWx1ZSBpcyBsZXNzXG4gICAgICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IHJldmFsaWRhdGUgdmFsdWUsIHdlIHNob3VsZCB1cGRhdGUgdGhlIHJldmFsaWRhdGVcbiAgICAgICAgICAgIC8vIHZhbHVlLlxuICAgICAgICAgICAgcmV2YWxpZGF0ZVN0b3JlICYmIGZpbmFsUmV2YWxpZGF0ZSA8IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBzZXR0aW5nIHRoZSByZXZhbGlkYXRlIHZhbHVlIHRvIDAsIHdlIHNob3VsZCB0cnkgdG9cbiAgICAgICAgICAgICAgICAvLyBwb3N0cG9uZSBpbnN0ZWFkIGZpcnN0LlxuICAgICAgICAgICAgICAgIGlmIChmaW5hbFJldmFsaWRhdGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsLmVuZFJlYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2lnbmFsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKSh3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnZmV0Y2goKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLm1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMpKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgYHJldmFsaWRhdGU6IDAgZmV0Y2ggJHtpbnB1dH0gJHt3b3JrU3RvcmUucm91dGV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBzZXQgdGhlIHJldmFsaWRhdGUgc3RvcmUncyByZXZhbGlkYXRlIHRpbWUgaWYgaXRcbiAgICAgICAgICAgICAgICAvLyB3YXMgZXhwbGljaXRseSBzZXQgZm9yIHRoZSBmZXRjaCBjYWxsLCBpLmUuXG4gICAgICAgICAgICAgICAgLy8gb3JpZ2luYWxGZXRjaFJldmFsaWRhdGUuXG4gICAgICAgICAgICAgICAgaWYgKHJldmFsaWRhdGVTdG9yZSAmJiBvcmlnaW5hbEZldGNoUmV2YWxpZGF0ZSA9PT0gZmluYWxSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlID0gZmluYWxSZXZhbGlkYXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzQ2FjaGVhYmxlUmV2YWxpZGF0ZSA9IHR5cGVvZiBmaW5hbFJldmFsaWRhdGUgPT09ICdudW1iZXInICYmIGZpbmFsUmV2YWxpZGF0ZSA+IDA7XG4gICAgICAgICAgICBsZXQgY2FjaGVLZXk7XG4gICAgICAgICAgICBjb25zdCB7IGluY3JlbWVudGFsQ2FjaGUgfSA9IHdvcmtTdG9yZTtcbiAgICAgICAgICAgIGxldCBpc0htclJlZnJlc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGU7XG4gICAgICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG1yUmVmcmVzaCA9IHdvcmtVbml0U3RvcmUuaXNIbXJSZWZyZXNoID8/IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyQ29tcG9uZW50c0htckNhY2hlID0gd29ya1VuaXRTdG9yZS5zZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluY3JlbWVudGFsQ2FjaGUgJiYgKGlzQ2FjaGVhYmxlUmV2YWxpZGF0ZSB8fCBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUpKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVLZXkgPSBhd2FpdCBpbmNyZW1lbnRhbENhY2hlLmdlbmVyYXRlQ2FjaGVLZXkoZmV0Y2hVcmwsIGlzUmVxdWVzdElucHV0ID8gaW5wdXQgOiBpbml0KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGNhY2hlIGtleSBmb3JgLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmV0Y2hJZHggPSB3b3JrU3RvcmUubmV4dEZldGNoSWQgPz8gMTtcbiAgICAgICAgICAgIHdvcmtTdG9yZS5uZXh0RmV0Y2hJZCA9IGZldGNoSWR4ICsgMTtcbiAgICAgICAgICAgIGxldCBoYW5kbGVVbmxvY2sgPSAoKT0+e307XG4gICAgICAgICAgICBjb25zdCBkb09yaWdpbmFsRmV0Y2ggPSBhc3luYyAoaXNTdGFsZSwgY2FjaGVSZWFzb25PdmVycmlkZSk9PntcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SW5wdXRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdjYWNoZScsXG4gICAgICAgICAgICAgICAgICAgICdjcmVkZW50aWFscycsXG4gICAgICAgICAgICAgICAgICAgICdoZWFkZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eScsXG4gICAgICAgICAgICAgICAgICAgICdrZWVwYWxpdmUnLFxuICAgICAgICAgICAgICAgICAgICAnbWV0aG9kJyxcbiAgICAgICAgICAgICAgICAgICAgJ21vZGUnLFxuICAgICAgICAgICAgICAgICAgICAncmVkaXJlY3QnLFxuICAgICAgICAgICAgICAgICAgICAncmVmZXJyZXInLFxuICAgICAgICAgICAgICAgICAgICAncmVmZXJyZXJQb2xpY3knLFxuICAgICAgICAgICAgICAgICAgICAnd2luZG93JyxcbiAgICAgICAgICAgICAgICAgICAgJ2R1cGxleCcsXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHBhc3MgdGhyb3VnaCBzaWduYWwgd2hlbiByZXZhbGlkYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgLi4uaXNTdGFsZSA/IFtdIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZ25hbCdcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVxdWVzdElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcUlucHV0ID0gaW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiByZXFJbnB1dC5fb2dCb2R5IHx8IHJlcUlucHV0LmJvZHlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiByZXF1ZXN0SW5wdXRGaWVsZHMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBjdXN0b20gZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXFPcHRpb25zW2ZpZWxkXSA9IHJlcUlucHV0W2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IG5ldyBSZXF1ZXN0KHJlcUlucHV0LnVybCwgcmVxT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgX29nQm9keSwgYm9keSwgc2lnbmFsLCAuLi5vdGhlcklucHV0IH0gPSBpbml0O1xuICAgICAgICAgICAgICAgICAgICBpbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ub3RoZXJJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IF9vZ0JvZHkgfHwgYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbDogaXNTdGFsZSA/IHVuZGVmaW5lZCA6IHNpZ25hbFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhZGQgbWV0YWRhdGEgdG8gaW5pdCB3aXRob3V0IGVkaXRpbmcgdGhlIG9yaWdpbmFsXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkSW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaW5pdCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5pdCA9PSBudWxsID8gdm9pZCAwIDogaW5pdC5uZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hUeXBlOiAnb3JpZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoSWR4XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5GZXRjaChpbnB1dCwgY2xvbmVkSW5pdCkudGhlbihhc3luYyAocmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzU3RhbGUgJiYgZmV0Y2hTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tGZXRjaE1ldHJpYyh3b3JrU3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogZmV0Y2hTdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGZldGNoVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uOiBjYWNoZVJlYXNvbk92ZXJyaWRlIHx8IGNhY2hlUmVhc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzOiBmaW5hbFJldmFsaWRhdGUgPT09IDAgfHwgY2FjaGVSZWFzb25PdmVycmlkZSA/ICdza2lwJyA6ICdtaXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVdhcm5pbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogY2xvbmVkSW5pdC5tZXRob2QgfHwgJ0dFVCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDAgJiYgaW5jcmVtZW50YWxDYWNoZSAmJiBjYWNoZUtleSAmJiAoaXNDYWNoZWFibGVSZXZhbGlkYXRlIHx8IHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gZmluYWxSZXZhbGlkYXRlID49IF9jb25zdGFudHMxLklORklOSVRFX0NBQ0hFID8gX2NvbnN0YW50czEuQ0FDSEVfT05FX1lFQVIgOiBmaW5hbFJldmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmNyZW1lbnRhbENhY2hlQ29uZmlnID0gaXNDYWNoZWFibGVSZXZhbGlkYXRlID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoQ2FjaGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hJZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ltcGxpY2l0QnVpbGRUaW1lQ2FjaGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZSA9PSBudWxsID8gdm9pZCAwIDogd29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhY2hlZFByZXJlbmRlclJlc3BvbnNlKHJlcywgY2FjaGVLZXksIGluY3JlbWVudGFsQ2FjaGVDb25maWcsIGluY3JlbWVudGFsQ2FjaGUsIG5vcm1hbGl6ZWRSZXZhbGlkYXRlLCBoYW5kbGVVbmxvY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDYWNoZWREeW5hbWljUmVzcG9uc2Uod29ya1N0b3JlLCByZXMsIGNhY2hlS2V5LCBpbmNyZW1lbnRhbENhY2hlQ29uZmlnLCBpbmNyZW1lbnRhbENhY2hlLCBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUsIG5vcm1hbGl6ZWRSZXZhbGlkYXRlLCBpbnB1dCwgaGFuZGxlVW5sb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGhhZCByZXNwb25zZSB0aGF0IHdlIGRldGVybWluZWQgc2hvdWxkbid0IGJlIGNhY2hlZCBzbyB3ZSByZXR1cm4gaXRcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGRvbid0IGNhY2hlIGl0LiBUaGlzIGFsc28gbmVlZHMgdG8gdW5sb2NrIHRoZSBjYWNoZSBsb2NrIHdlIGFjcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVVbmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpPT57XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVVubG9jaygpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgY2FjaGVSZWFzb25PdmVycmlkZTtcbiAgICAgICAgICAgIGxldCBpc0ZvcmVncm91bmRSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgaXNIbXJSZWZyZXNoQ2FjaGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChjYWNoZUtleSAmJiBpbmNyZW1lbnRhbENhY2hlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZEZldGNoRGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIbXJSZWZyZXNoICYmIHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZWRGZXRjaERhdGEgPSBzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaXNIbXJSZWZyZXNoQ2FjaGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNDYWNoZWFibGVSZXZhbGlkYXRlICYmICFjYWNoZWRGZXRjaERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlVW5sb2NrID0gYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5sb2NrKGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB3b3JrU3RvcmUuaXNPbkRlbWFuZFJldmFsaWRhdGUgPyBudWxsIDogYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5nZXQoY2FjaGVLZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IF9yZXNwb25zZWNhY2hlLkluY3JlbWVudGFsQ2FjaGVLaW5kLkZFVENILFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogZmluYWxSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmZXRjaElkeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBzb2Z0VGFnczogaW1wbGljaXRUYWdzID09IG51bGwgPyB2b2lkIDAgOiBpbXBsaWNpdFRhZ3MudGFnc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc05vRXhwbGljaXRDYWNoZUNvbmZpZyAmJiB3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc29tZXRpbWVzIHVzZSB0aGUgY2FjaGUgdG8gZGVkdXBlIGZldGNoZXMgdGhhdCBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmeSBhIGNhY2hlIGNvbmZpZ3VyYXRpb24uIEluIHRoZXNlIGNhc2VzIHdlIHdhbnQgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIHN0aWxsIGV4Y2x1ZGUgdGhlbSBmcm9tIHByZXJlbmRlcnMgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGVDb21wb25lbnRzIGlzIG9uIHNvIHdlIGludHJvZHVjZSBhbiBhcnRpZmljaWFsIHRhc2sgYm91bmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgKDAsIF9zY2hlZHVsZXIud2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2spKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVVbmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGRldiwgaW5jcmVtZW50YWwgY2FjaGUgcmVzcG9uc2Ugd2lsbCBiZSBudWxsIGluIGNhc2UgdGhlIGJyb3dzZXIgYWRkcyBgY2FjaGUtY29udHJvbDogbm8tY2FjaGVgIGluIHRoZSByZXF1ZXN0IGhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uT3ZlcnJpZGUgPSAnY2FjaGUtY29udHJvbDogbm8tY2FjaGUgKGhhcmQgcmVmcmVzaCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoZW50cnkgPT0gbnVsbCA/IHZvaWQgMCA6IGVudHJ5LnZhbHVlKSAmJiBlbnRyeS52YWx1ZS5raW5kID09PSBfcmVzcG9uc2VjYWNoZS5DYWNoZWRSb3V0ZUtpbmQuRkVUQ0gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gc3RhbGUgYW5kIGlzIHJldmFsaWRhdGluZyB3ZSB3YWl0IGZvciBmcmVzaCBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGUgcmV2YWxpZGF0ZWQgZW50cnkgaGFzIHRoZSB1cGRhdGVkIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuaXNSZXZhbGlkYXRlICYmIGVudHJ5LmlzU3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvcmVncm91bmRSZXZhbGlkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmlzU3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlcyA/Pz0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd29ya1N0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1tjYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlbmRpbmdSZXZhbGlkYXRlID0gZG9PcmlnaW5hbEZldGNoKHRydWUpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzW2NhY2hlS2V5IHx8ICcnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXR0YWNoIHRoZSBlbXB0eSBjYXRjaCBoZXJlIHNvIHdlIGRvbid0IGdldCBhIFwidW5oYW5kbGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9taXNlIHJlamVjdGlvblwiIHdhcm5pbmcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUmV2YWxpZGF0ZS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXNbY2FjaGVLZXldID0gcGVuZGluZ1JldmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkRmV0Y2hEYXRhID0gZW50cnkudmFsdWUuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVkRmV0Y2hEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja0ZldGNoTWV0cmljKHdvcmtTdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmZXRjaFN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXM6IGlzSG1yUmVmcmVzaENhY2hlID8gJ2htcicgOiAnaGl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVdhcm5pbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBjYWNoZWRGZXRjaERhdGEuc3RhdHVzIHx8IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IChpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0Lm1ldGhvZCkgfHwgJ0dFVCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKEJ1ZmZlci5mcm9tKGNhY2hlZEZldGNoRGF0YS5ib2R5LCAnYmFzZTY0JyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGNhY2hlZEZldGNoRGF0YS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBjYWNoZWRGZXRjaERhdGEuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzcG9uc2UsICd1cmwnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2FjaGVkRmV0Y2hEYXRhLnVybFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuaXNTdGF0aWNHZW5lcmF0aW9uICYmIGluaXQgJiYgdHlwZW9mIGluaXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjYWNoZSB9ID0gaW5pdDtcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgYGNhY2hlYCBwcm9wZXJ0eSBhcyBDbG91ZGZsYXJlIFdvcmtlcnMgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIGlmIChpc0VkZ2VSdW50aW1lKSBkZWxldGUgaW5pdC5jYWNoZTtcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGUgPT09ICduby1zdG9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZW5hYmxlZCwgd2Ugc2hvdWxkIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uLlxuICAgICAgICAgICAgICAgICAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTaWduYWwuZW5kUmVhZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTaWduYWwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLCB3b3JrU3RvcmUucm91dGUsICdmZXRjaCgpJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcubWFya0N1cnJlbnRTY29wZUFzRHluYW1pYykod29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlLCBgbm8tc3RvcmUgZmV0Y2ggJHtpbnB1dH0gJHt3b3JrU3RvcmUucm91dGV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc05leHRDb25maWcgPSAnbmV4dCcgaW4gaW5pdDtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG5leHQgPSB7fSB9ID0gaW5pdDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG5leHQucmV2YWxpZGF0ZSA9PT0gJ251bWJlcicgJiYgcmV2YWxpZGF0ZVN0b3JlICYmIG5leHQucmV2YWxpZGF0ZSA8IHJldmFsaWRhdGVTdG9yZS5yZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0LnJldmFsaWRhdGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGVuYWJsZWQsIHdlIHNob3VsZCBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKSh3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnZmV0Y2goKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLm1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMpKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSwgYHJldmFsaWRhdGU6IDAgZmV0Y2ggJHtpbnB1dH0gJHt3b3JrU3RvcmUucm91dGV9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3b3JrU3RvcmUuZm9yY2VTdGF0aWMgfHwgbmV4dC5yZXZhbGlkYXRlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlU3RvcmUucmV2YWxpZGF0ZSA9IG5leHQucmV2YWxpZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGFzTmV4dENvbmZpZykgZGVsZXRlIGluaXQubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIHdlIGFyZSByZXZhbGlkYXRpbmcgdGhlIHdob2xlIHBhZ2UgdmlhIHRpbWUgb3Igb24tZGVtYW5kIGFuZFxuICAgICAgICAgICAgLy8gdGhlIGZldGNoIGNhY2hlIGVudHJ5IGlzIHN0YWxlIHdlIHNob3VsZCBzdGlsbCBkZS1kdXBlIHRoZVxuICAgICAgICAgICAgLy8gb3JpZ2luIGhpdCBpZiBpdCdzIGEgY2FjaGUtYWJsZSBlbnRyeVxuICAgICAgICAgICAgaWYgKGNhY2hlS2V5ICYmIGlzRm9yZWdyb3VuZFJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwZW5kaW5nUmV2YWxpZGF0ZUtleSA9IGNhY2hlS2V5O1xuICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9O1xuICAgICAgICAgICAgICAgIGxldCBwZW5kaW5nUmV2YWxpZGF0ZSA9IHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXNbcGVuZGluZ1JldmFsaWRhdGVLZXldO1xuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nUmV2YWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZhbGlkYXRlZFJlc3VsdCA9IGF3YWl0IHBlbmRpbmdSZXZhbGlkYXRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJldmFsaWRhdGVkUmVzdWx0LmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJldmFsaWRhdGVkUmVzdWx0LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJldmFsaWRhdGVkUmVzdWx0LnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJldmFsaWRhdGVkUmVzdWx0LnN0YXR1c1RleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdlIHVzZWQgdG8ganVzdCByZXNvbHZlIHRoZSBSZXNwb25zZSBhbmQgY2xvbmUgaXQgaG93ZXZlciBmb3JcbiAgICAgICAgICAgICAgICAvLyBzdGF0aWMgZ2VuZXJhdGlvbiB3aXRoIGNhY2hlQ29tcG9uZW50cyB3ZSBuZWVkIHRoZSByZXNwb25zZSB0byBiZSBhYmxlIHRvXG4gICAgICAgICAgICAgICAgLy8gYmUgcmVzb2x2ZWQgaW4gYSBtaWNyb3Rhc2sgYW5kIGNsb25pbmcgdGhlIHJlc3BvbnNlIHdpbGwgbmV2ZXIgaGF2ZVxuICAgICAgICAgICAgICAgIC8vIGEgYm9keSB0aGF0IGNhbiByZXNvbHZlIGluIGEgbWljcm90YXNrIGluIG5vZGUgKGFzIG9ic2VydmVkIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBleHBlcmltZW50YXRpb24pIFNvIGluc3RlYWQgd2UgYXdhaXQgdGhlIGJvZHkgYW5kIHRoZW4gd2hlbiBpdCBpc1xuICAgICAgICAgICAgICAgIC8vIGF2YWlsYWJsZSB3ZSBjb25zdHJ1Y3QgbWFudWFsbHkgY2xvbmVkIFJlc3BvbnNlIG9iamVjdHMgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAvLyBib2R5IGFzIGFuIEFycmF5QnVmZmVyLiBUaGlzIHdpbGwgYmUgcmVzb2x2YWJsZSBpbiBhIG1pY3JvdGFza1xuICAgICAgICAgICAgICAgIC8vIG1ha2luZyBpdCBjb21wYXRpYmxlIHdpdGggY2FjaGVDb21wb25lbnRzLlxuICAgICAgICAgICAgICAgIGNvbnN0IHBlbmRpbmdSZXNwb25zZSA9IGRvT3JpZ2luYWxGZXRjaCh0cnVlLCBjYWNoZVJlYXNvbk92ZXJyaWRlKS8vIFdlJ3JlIGNsb25pbmcgdGhlIHJlc3BvbnNlIHVzaW5nIHRoaXMgdXRpbGl0eSBiZWNhdXNlIHRoZXJlXG4gICAgICAgICAgICAgICAgLy8gZXhpc3RzIGEgYnVnIGluIHRoZSB1bmRpY2kgbGlicmFyeSBhcm91bmQgcmVzcG9uc2UgY2xvbmluZy5cbiAgICAgICAgICAgICAgICAvLyBTZWUgdGhlIGZvbGxvd2luZyBwdWxsIHJlcXVlc3QgZm9yIG1vcmUgZGV0YWlsczpcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvcHVsbC83MzI3NFxuICAgICAgICAgICAgICAgIC50aGVuKF9jbG9uZXJlc3BvbnNlLmNsb25lUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdSZXZhbGlkYXRlID0gcGVuZGluZ1Jlc3BvbnNlLnRoZW4oYXN5bmMgKHJlc3BvbnNlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgdmFyIF93b3JrU3RvcmVfcGVuZGluZ1JldmFsaWRhdGVzO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGVuZGluZyByZXZhbGlkYXRlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdG9yZSwgdGhlblxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIG5vdGhpbmcgdG8gZGVsZXRlLlxuICAgICAgICAgICAgICAgICAgICBpZiAoISgoX3dvcmtTdG9yZV9wZW5kaW5nUmV2YWxpZGF0ZXMgPSB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzKSA9PSBudWxsID8gdm9pZCAwIDogX3dvcmtTdG9yZV9wZW5kaW5nUmV2YWxpZGF0ZXNbcGVuZGluZ1JldmFsaWRhdGVLZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3b3JrU3RvcmUucGVuZGluZ1JldmFsaWRhdGVzW3BlbmRpbmdSZXZhbGlkYXRlS2V5XTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBBdHRhY2ggdGhlIGVtcHR5IGNhdGNoIGhlcmUgc28gd2UgZG9uJ3QgZ2V0IGEgXCJ1bmhhbmRsZWQgcHJvbWlzZVxuICAgICAgICAgICAgICAgIC8vIHJlamVjdGlvblwiIHdhcm5pbmdcbiAgICAgICAgICAgICAgICBwZW5kaW5nUmV2YWxpZGF0ZS5jYXRjaCgoKT0+e30pO1xuICAgICAgICAgICAgICAgIHdvcmtTdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXNbcGVuZGluZ1JldmFsaWRhdGVLZXldID0gcGVuZGluZ1JldmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmdSZXNwb25zZS50aGVuKChyZXNwb25zZXMpPT5yZXNwb25zZXNbMV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9PcmlnaW5hbEZldGNoKGZhbHNlLCBjYWNoZVJlYXNvbk92ZXJyaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzdWx0O1xuICAgICAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZVNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVNpZ25hbC5lbmRSZWFkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvLyBBdHRhY2ggdGhlIG5lY2Vzc2FyeSBwcm9wZXJ0aWVzIHRvIHRoZSBwYXRjaGVkIGZldGNoIGZ1bmN0aW9uLlxuICAgIC8vIFdlIGRvbid0IHVzZSB0aGlzIHRvIGRldGVybWluZSBpZiB0aGUgZmV0Y2ggZnVuY3Rpb24gaGFzIGJlZW4gcGF0Y2hlZCxcbiAgICAvLyBidXQgZm9yIGV4dGVybmFsIGNvbnN1bWVycyB0byBkZXRlcm1pbmUgaWYgdGhlIGZldGNoIGZ1bmN0aW9uIGhhcyBiZWVuXG4gICAgLy8gcGF0Y2hlZC5cbiAgICBwYXRjaGVkLl9fbmV4dFBhdGNoZWQgPSB0cnVlO1xuICAgIHBhdGNoZWQuX19uZXh0R2V0U3RhdGljU3RvcmUgPSAoKT0+d29ya0FzeW5jU3RvcmFnZTtcbiAgICBwYXRjaGVkLl9uZXh0T3JpZ2luYWxGZXRjaCA9IG9yaWdpbkZldGNoO1xuICAgIGdsb2JhbFRoaXNbTkVYVF9QQVRDSF9TWU1CT0xdID0gdHJ1ZTtcbiAgICAvLyBBc3NpZ24gdGhlIGZ1bmN0aW9uIG5hbWUgYWxzbyBhcyBhIG5hbWUgcHJvcGVydHksIHNvIHRoYXQgaXQncyBwcmVzZXJ2ZWRcbiAgICAvLyBldmVuIHdoZW4gbWFuZ2xpbmcgaXMgZW5hYmxlZC5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocGF0Y2hlZCwgJ25hbWUnLCB7XG4gICAgICAgIHZhbHVlOiAnZmV0Y2gnLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gcGF0Y2hlZDtcbn1cbmZ1bmN0aW9uIHBhdGNoRmV0Y2gob3B0aW9ucykge1xuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgcGF0Y2hlZCBmZXRjaCwgd2Ugc2hvdWxkIG5vdCBwYXRjaCBpdCBhZ2Fpbi5cbiAgICBpZiAoaXNGZXRjaFBhdGNoZWQoKSkgcmV0dXJuO1xuICAgIC8vIEdyYWIgdGhlIG9yaWdpbmFsIGZldGNoIGZ1bmN0aW9uLiBXZSdsbCBhdHRhY2ggdGhpcyBzbyB3ZSBjYW4gdXNlIGl0IGluXG4gICAgLy8gdGhlIHBhdGNoZWQgZmV0Y2ggZnVuY3Rpb24uXG4gICAgY29uc3Qgb3JpZ2luYWwgPSAoMCwgX2RlZHVwZWZldGNoLmNyZWF0ZURlZHVwZUZldGNoKShnbG9iYWxUaGlzLmZldGNoKTtcbiAgICAvLyBTZXQgdGhlIGdsb2JhbCBmZXRjaCB0byB0aGUgcGF0Y2hlZCBmZXRjaC5cbiAgICBnbG9iYWxUaGlzLmZldGNoID0gY3JlYXRlUGF0Y2hlZEZldGNoZXIob3JpZ2luYWwsIG9wdGlvbnMpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRjaC1mZXRjaC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/server/lib/router-utils/is-postpone.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isPostpone\", ({\n enumerable: true,\n get: function() {\n return isPostpone;\n }\n}));\nconst REACT_POSTPONE_TYPE = Symbol.for('react.postpone');\nfunction isPostpone(error) {\n return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE;\n}\n\n//# sourceMappingURL=is-postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOENBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxyb3V0ZXItdXRpbHNcXGlzLXBvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNQb3N0cG9uZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNQb3N0cG9uZTtcbiAgICB9XG59KTtcbmNvbnN0IFJFQUNUX1BPU1RQT05FX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3N0cG9uZScpO1xuZnVuY3Rpb24gaXNQb3N0cG9uZShlcnJvcikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmIGVycm9yLiQkdHlwZW9mID09PSBSRUFDVF9QT1NUUE9ORV9UWVBFO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wb3N0cG9uZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/server/lib/server-action-request-meta.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getIsPossibleServerAction: function() {\n return getIsPossibleServerAction;\n },\n getServerActionRequestMetadata: function() {\n return getServerActionRequestMetadata;\n }\n});\nconst _approuterheaders = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getServerActionRequestMetadata(req) {\n let actionId;\n let contentType;\n if (req.headers instanceof Headers) {\n actionId = req.headers.get(_approuterheaders.ACTION_HEADER) ?? null;\n contentType = req.headers.get('content-type');\n } else {\n actionId = req.headers[_approuterheaders.ACTION_HEADER] ?? null;\n contentType = req.headers['content-type'] ?? null;\n }\n // We don't actually support URL encoded actions, and the action handler will bail out if it sees one.\n // But we still want it to flow through to the action handler, to prevent changes in behavior when a regular\n // page component tries to handle a POST.\n const isURLEncodedAction = Boolean(req.method === 'POST' && contentType === 'application/x-www-form-urlencoded');\n const isMultipartAction = Boolean(req.method === 'POST' && (contentType == null ? void 0 : contentType.startsWith('multipart/form-data')));\n const isFetchAction = Boolean(actionId !== undefined && typeof actionId === 'string' && req.method === 'POST');\n const isPossibleServerAction = Boolean(isFetchAction || isURLEncodedAction || isMultipartAction);\n return {\n actionId,\n isURLEncodedAction,\n isMultipartAction,\n isFetchAction,\n isPossibleServerAction\n };\n}\nfunction getIsPossibleServerAction(req) {\n return getServerActionRequestMetadata(req).isPossibleServerAction;\n}\n\n//# sourceMappingURL=server-action-request-meta.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc2VydmVyLWFjdGlvbi1yZXF1ZXN0LW1ldGEuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMEJBQTBCLG1CQUFPLENBQUMsMEhBQTRDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxzZXJ2ZXItYWN0aW9uLXJlcXVlc3QtbWV0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb246IG51bGwsXG4gICAgZ2V0U2VydmVyQWN0aW9uUmVxdWVzdE1ldGFkYXRhOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0SXNQb3NzaWJsZVNlcnZlckFjdGlvbjtcbiAgICB9LFxuICAgIGdldFNlcnZlckFjdGlvblJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRTZXJ2ZXJBY3Rpb25SZXF1ZXN0TWV0YWRhdGE7XG4gICAgfVxufSk7XG5jb25zdCBfYXBwcm91dGVyaGVhZGVycyA9IHJlcXVpcmUoXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIik7XG5mdW5jdGlvbiBnZXRTZXJ2ZXJBY3Rpb25SZXF1ZXN0TWV0YWRhdGEocmVxKSB7XG4gICAgbGV0IGFjdGlvbklkO1xuICAgIGxldCBjb250ZW50VHlwZTtcbiAgICBpZiAocmVxLmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgICAgIGFjdGlvbklkID0gcmVxLmhlYWRlcnMuZ2V0KF9hcHByb3V0ZXJoZWFkZXJzLkFDVElPTl9IRUFERVIpID8/IG51bGw7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVxLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpb25JZCA9IHJlcS5oZWFkZXJzW19hcHByb3V0ZXJoZWFkZXJzLkFDVElPTl9IRUFERVJdID8/IG51bGw7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID8/IG51bGw7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHN1cHBvcnQgVVJMIGVuY29kZWQgYWN0aW9ucywgYW5kIHRoZSBhY3Rpb24gaGFuZGxlciB3aWxsIGJhaWwgb3V0IGlmIGl0IHNlZXMgb25lLlxuICAgIC8vIEJ1dCB3ZSBzdGlsbCB3YW50IGl0IHRvIGZsb3cgdGhyb3VnaCB0byB0aGUgYWN0aW9uIGhhbmRsZXIsIHRvIHByZXZlbnQgY2hhbmdlcyBpbiBiZWhhdmlvciB3aGVuIGEgcmVndWxhclxuICAgIC8vIHBhZ2UgY29tcG9uZW50IHRyaWVzIHRvIGhhbmRsZSBhIFBPU1QuXG4gICAgY29uc3QgaXNVUkxFbmNvZGVkQWN0aW9uID0gQm9vbGVhbihyZXEubWV0aG9kID09PSAnUE9TVCcgJiYgY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcbiAgICBjb25zdCBpc011bHRpcGFydEFjdGlvbiA9IEJvb2xlYW4ocmVxLm1ldGhvZCA9PT0gJ1BPU1QnICYmIChjb250ZW50VHlwZSA9PSBudWxsID8gdm9pZCAwIDogY29udGVudFR5cGUuc3RhcnRzV2l0aCgnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKSk7XG4gICAgY29uc3QgaXNGZXRjaEFjdGlvbiA9IEJvb2xlYW4oYWN0aW9uSWQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYWN0aW9uSWQgPT09ICdzdHJpbmcnICYmIHJlcS5tZXRob2QgPT09ICdQT1NUJyk7XG4gICAgY29uc3QgaXNQb3NzaWJsZVNlcnZlckFjdGlvbiA9IEJvb2xlYW4oaXNGZXRjaEFjdGlvbiB8fCBpc1VSTEVuY29kZWRBY3Rpb24gfHwgaXNNdWx0aXBhcnRBY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbklkLFxuICAgICAgICBpc1VSTEVuY29kZWRBY3Rpb24sXG4gICAgICAgIGlzTXVsdGlwYXJ0QWN0aW9uLFxuICAgICAgICBpc0ZldGNoQWN0aW9uLFxuICAgICAgICBpc1Bvc3NpYmxlU2VydmVyQWN0aW9uXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb24ocmVxKSB7XG4gICAgcmV0dXJuIGdldFNlcnZlckFjdGlvblJlcXVlc3RNZXRhZGF0YShyZXEpLmlzUG9zc2libGVTZXJ2ZXJBY3Rpb247XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcnZlci1hY3Rpb24tcmVxdWVzdC1tZXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/source-maps.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/server/lib/source-maps.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n devirtualizeReactServerURL: function() {\n return devirtualizeReactServerURL;\n },\n filterStackFrameDEV: function() {\n return filterStackFrameDEV;\n },\n findApplicableSourceMapPayload: function() {\n return findApplicableSourceMapPayload;\n },\n findSourceMapURLDEV: function() {\n return findSourceMapURLDEV;\n },\n ignoreListAnonymousStackFramesIfSandwiched: function() {\n return ignoreListAnonymousStackFramesIfSandwiched;\n },\n sourceMapIgnoreListsEverything: function() {\n return sourceMapIgnoreListsEverything;\n }\n});\nconst _lrucache = __webpack_require__(/*! ./lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nvar _process_versions_node;\nfunction noSourceMap() {\n return undefined;\n}\n// Edge runtime does not implement `module`\nconst nativeFindSourceMap = false ? 0 : (__webpack_require__(/*! module */ \"module\").findSourceMap);\nfunction sourceMapIgnoreListsEverything(sourceMap) {\n return sourceMap.ignoreList !== undefined && sourceMap.sources.length === sourceMap.ignoreList.length;\n}\nfunction findApplicableSourceMapPayload(line0, column0, payload) {\n if ('sections' in payload) {\n if (payload.sections.length === 0) {\n return undefined;\n }\n // Sections must not overlap and must be sorted: https://tc39.es/source-map/#section-object\n // Therefore the last section that has an offset less than or equal to the frame is the applicable one.\n const sections = payload.sections;\n let left = 0;\n let right = sections.length - 1;\n let result = null;\n while(left <= right){\n // fast Math.floor\n const middle = ~~((left + right) / 2);\n const section = sections[middle];\n const offset = section.offset;\n if (offset.line < line0 || offset.line === line0 && offset.column <= column0) {\n result = section;\n left = middle + 1;\n } else {\n right = middle - 1;\n }\n }\n return result === null ? undefined : result.map;\n } else {\n return payload;\n }\n}\nconst didWarnAboutInvalidSourceMapDEV = new Set();\nconst findSourceMap = true && ((_process_versions_node = process.versions.node) == null ? void 0 : _process_versions_node.startsWith('18')) ? noSourceMap : nativeFindSourceMap;\nfunction filterStackFrameDEV(sourceURL, functionName, line1, column1) {\n if (sourceURL === '') {\n // The default implementation filters out stack frames\n // but we want to retain them because current Server Components and\n // built-in Components in parent stacks don't have source location.\n // Filter out frames that show up in Promises to get good names in React's\n // Server Request track until we come up with a better heuristic.\n return functionName !== 'new Promise';\n }\n if (sourceURL.startsWith('node:') || sourceURL.includes('node_modules')) {\n return false;\n }\n try {\n // Node.js loads source maps eagerly so this call is cheap.\n // TODO: ESM sourcemaps are O(1) but CommonJS sourcemaps are O(Number of CJS modules).\n // Make sure this doesn't adversely affect performance when CJS is used by Next.js.\n const sourceMap = findSourceMap(sourceURL);\n if (sourceMap === undefined) {\n // No source map assoicated.\n // TODO: Node.js types should reflect that `findSourceMap` can return `undefined`.\n return true;\n }\n const sourceMapPayload = findApplicableSourceMapPayload(line1 - 1, column1 - 1, sourceMap.payload);\n if (sourceMapPayload === undefined) {\n // No source map section applicable to the frame.\n return true;\n }\n return !sourceMapIgnoreListsEverything(sourceMapPayload);\n } catch (cause) {\n if (true) {\n // TODO: Share cache with patch-error-inspect\n if (!didWarnAboutInvalidSourceMapDEV.has(sourceURL)) {\n didWarnAboutInvalidSourceMapDEV.add(sourceURL);\n // We should not log an actual error instance here because that will re-enter\n // this codepath during error inspection and could lead to infinite recursion.\n console.error(`${sourceURL}: Invalid source map. Only conformant source maps can be used to filter stack frames. Cause: ${cause}`);\n }\n }\n return true;\n }\n}\nconst invalidSourceMap = Symbol('invalid-source-map');\nconst sourceMapURLs = new _lrucache.LRUCache(512 * 1024 * 1024, (url)=>url === invalidSourceMap ? // so that we don't create a huge cache with empty source maps.\n 8 * 1024 : url.length);\nfunction findSourceMapURLDEV(scriptNameOrSourceURL) {\n let sourceMapURL = sourceMapURLs.get(scriptNameOrSourceURL);\n if (sourceMapURL === undefined) {\n let sourceMapPayload;\n try {\n var _findSourceMap;\n sourceMapPayload = (_findSourceMap = findSourceMap(scriptNameOrSourceURL)) == null ? void 0 : _findSourceMap.payload;\n } catch (cause) {\n console.error(`${scriptNameOrSourceURL}: Invalid source map. Only conformant source maps can be used to find the original code. Cause: ${cause}`);\n }\n if (sourceMapPayload === undefined) {\n sourceMapURL = invalidSourceMap;\n } else {\n // TODO: Might be more efficient to extract the relevant section from Index Maps.\n // Unclear if that search is worth the smaller payload we have to stringify.\n const sourceMapJSON = JSON.stringify(sourceMapPayload);\n const sourceMapURLData = Buffer.from(sourceMapJSON, 'utf8').toString('base64');\n sourceMapURL = `data:application/json;base64,${sourceMapURLData}`;\n }\n sourceMapURLs.set(scriptNameOrSourceURL, sourceMapURL);\n }\n return sourceMapURL === invalidSourceMap ? null : sourceMapURL;\n}\nfunction devirtualizeReactServerURL(sourceURL) {\n if (sourceURL.startsWith('about://React/')) {\n // about://React/Server/file://?42 => file://\n const envIdx = sourceURL.indexOf('/', 'about://React/'.length);\n const suffixIdx = sourceURL.lastIndexOf('?');\n if (envIdx > -1 && suffixIdx > -1) {\n return decodeURI(sourceURL.slice(envIdx + 1, suffixIdx));\n }\n }\n return sourceURL;\n}\nfunction isAnonymousFrameLikelyJSNative(methodName) {\n // Anonymous frames can also be produced in React parent stacks either from\n // host components or Server Components. We don't want to ignore those.\n // This could hide user-space methods that are named like native JS methods but\n // should you really do that?\n return(// e.g. JSON.parse\n methodName.startsWith('JSON.') || // E.g. Promise.withResolves\n methodName.startsWith('Function.') || // various JS built-ins\n methodName.startsWith('Promise.') || methodName.startsWith('Array.') || methodName.startsWith('Set.') || methodName.startsWith('Map.'));\n}\nfunction ignoreListAnonymousStackFramesIfSandwiched(frames, isAnonymousFrame, isIgnoredFrame, getMethodName, /** only passes frames for which `isAnonymousFrame` and their method is a native JS method or `isIgnoredFrame` return true */ ignoreFrame) {\n for(let i = 1; i < frames.length; i++){\n const currentFrame = frames[i];\n if (!(isAnonymousFrame(currentFrame) && isAnonymousFrameLikelyJSNative(getMethodName(currentFrame)))) {\n continue;\n }\n const previousFrameIsIgnored = isIgnoredFrame(frames[i - 1]);\n if (previousFrameIsIgnored && i < frames.length - 1) {\n let ignoreSandwich = false;\n let j = i + 1;\n for(j; j < frames.length; j++){\n const nextFrame = frames[j];\n const nextFrameIsAnonymous = isAnonymousFrame(nextFrame) && isAnonymousFrameLikelyJSNative(getMethodName(nextFrame));\n if (nextFrameIsAnonymous) {\n continue;\n }\n const nextFrameIsIgnored = isIgnoredFrame(nextFrame);\n if (nextFrameIsIgnored) {\n ignoreSandwich = true;\n break;\n }\n }\n if (ignoreSandwich) {\n for(i; i < j; i++){\n ignoreFrame(frames[i]);\n }\n }\n }\n }\n}\n\n//# sourceMappingURL=source-maps.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc291cmNlLW1hcHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBT0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLE1BQW1DLEdBQUcsQ0FBVyxHQUFHLDJEQUErQjtBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFxQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsVUFBVSwrRkFBK0YsTUFBTTtBQUNoSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsNkJBQTZCLHNCQUFzQixrR0FBa0csTUFBTTtBQUMzSjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsU0FBUyxpQkFBaUI7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxzb3VyY2UtbWFwcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGRldmlydHVhbGl6ZVJlYWN0U2VydmVyVVJMOiBudWxsLFxuICAgIGZpbHRlclN0YWNrRnJhbWVERVY6IG51bGwsXG4gICAgZmluZEFwcGxpY2FibGVTb3VyY2VNYXBQYXlsb2FkOiBudWxsLFxuICAgIGZpbmRTb3VyY2VNYXBVUkxERVY6IG51bGwsXG4gICAgaWdub3JlTGlzdEFub255bW91c1N0YWNrRnJhbWVzSWZTYW5kd2ljaGVkOiBudWxsLFxuICAgIHNvdXJjZU1hcElnbm9yZUxpc3RzRXZlcnl0aGluZzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBkZXZpcnR1YWxpemVSZWFjdFNlcnZlclVSTDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZXZpcnR1YWxpemVSZWFjdFNlcnZlclVSTDtcbiAgICB9LFxuICAgIGZpbHRlclN0YWNrRnJhbWVERVY6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyU3RhY2tGcmFtZURFVjtcbiAgICB9LFxuICAgIGZpbmRBcHBsaWNhYmxlU291cmNlTWFwUGF5bG9hZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmaW5kQXBwbGljYWJsZVNvdXJjZU1hcFBheWxvYWQ7XG4gICAgfSxcbiAgICBmaW5kU291cmNlTWFwVVJMREVWOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRTb3VyY2VNYXBVUkxERVY7XG4gICAgfSxcbiAgICBpZ25vcmVMaXN0QW5vbnltb3VzU3RhY2tGcmFtZXNJZlNhbmR3aWNoZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaWdub3JlTGlzdEFub255bW91c1N0YWNrRnJhbWVzSWZTYW5kd2ljaGVkO1xuICAgIH0sXG4gICAgc291cmNlTWFwSWdub3JlTGlzdHNFdmVyeXRoaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZU1hcElnbm9yZUxpc3RzRXZlcnl0aGluZztcbiAgICB9XG59KTtcbmNvbnN0IF9scnVjYWNoZSA9IHJlcXVpcmUoXCIuL2xydS1jYWNoZVwiKTtcbnZhciBfcHJvY2Vzc192ZXJzaW9uc19ub2RlO1xuZnVuY3Rpb24gbm9Tb3VyY2VNYXAoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8vIEVkZ2UgcnVudGltZSBkb2VzIG5vdCBpbXBsZW1lbnQgYG1vZHVsZWBcbmNvbnN0IG5hdGl2ZUZpbmRTb3VyY2VNYXAgPSBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJyA/IG5vU291cmNlTWFwIDogcmVxdWlyZSgnbW9kdWxlJykuZmluZFNvdXJjZU1hcDtcbmZ1bmN0aW9uIHNvdXJjZU1hcElnbm9yZUxpc3RzRXZlcnl0aGluZyhzb3VyY2VNYXApIHtcbiAgICByZXR1cm4gc291cmNlTWFwLmlnbm9yZUxpc3QgIT09IHVuZGVmaW5lZCAmJiBzb3VyY2VNYXAuc291cmNlcy5sZW5ndGggPT09IHNvdXJjZU1hcC5pZ25vcmVMaXN0Lmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGZpbmRBcHBsaWNhYmxlU291cmNlTWFwUGF5bG9hZChsaW5lMCwgY29sdW1uMCwgcGF5bG9hZCkge1xuICAgIGlmICgnc2VjdGlvbnMnIGluIHBheWxvYWQpIHtcbiAgICAgICAgaWYgKHBheWxvYWQuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlY3Rpb25zIG11c3Qgbm90IG92ZXJsYXAgYW5kIG11c3QgYmUgc29ydGVkOiBodHRwczovL3RjMzkuZXMvc291cmNlLW1hcC8jc2VjdGlvbi1vYmplY3RcbiAgICAgICAgLy8gVGhlcmVmb3JlIHRoZSBsYXN0IHNlY3Rpb24gdGhhdCBoYXMgYW4gb2Zmc2V0IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgZnJhbWUgaXMgdGhlIGFwcGxpY2FibGUgb25lLlxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IHBheWxvYWQuc2VjdGlvbnM7XG4gICAgICAgIGxldCBsZWZ0ID0gMDtcbiAgICAgICAgbGV0IHJpZ2h0ID0gc2VjdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIHdoaWxlKGxlZnQgPD0gcmlnaHQpe1xuICAgICAgICAgICAgLy8gZmFzdCBNYXRoLmZsb29yXG4gICAgICAgICAgICBjb25zdCBtaWRkbGUgPSB+figobGVmdCArIHJpZ2h0KSAvIDIpO1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zW21pZGRsZV07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBzZWN0aW9uLm9mZnNldDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQubGluZSA8IGxpbmUwIHx8IG9mZnNldC5saW5lID09PSBsaW5lMCAmJiBvZmZzZXQuY29sdW1uIDw9IGNvbHVtbjApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWN0aW9uO1xuICAgICAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IG1pZGRsZSAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJlc3VsdC5tYXA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfVxufVxuY29uc3QgZGlkV2FybkFib3V0SW52YWxpZFNvdXJjZU1hcERFViA9IG5ldyBTZXQoKTtcbmNvbnN0IGZpbmRTb3VyY2VNYXAgPSBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdub2RlanMnICYmICgoX3Byb2Nlc3NfdmVyc2lvbnNfbm9kZSA9IHByb2Nlc3MudmVyc2lvbnMubm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wcm9jZXNzX3ZlcnNpb25zX25vZGUuc3RhcnRzV2l0aCgnMTgnKSkgPyBub1NvdXJjZU1hcCA6IG5hdGl2ZUZpbmRTb3VyY2VNYXA7XG5mdW5jdGlvbiBmaWx0ZXJTdGFja0ZyYW1lREVWKHNvdXJjZVVSTCwgZnVuY3Rpb25OYW1lLCBsaW5lMSwgY29sdW1uMSkge1xuICAgIGlmIChzb3VyY2VVUkwgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZpbHRlcnMgb3V0IDxhbm9ueW1vdXM+IHN0YWNrIGZyYW1lc1xuICAgICAgICAvLyBidXQgd2Ugd2FudCB0byByZXRhaW4gdGhlbSBiZWNhdXNlIGN1cnJlbnQgU2VydmVyIENvbXBvbmVudHMgYW5kXG4gICAgICAgIC8vIGJ1aWx0LWluIENvbXBvbmVudHMgaW4gcGFyZW50IHN0YWNrcyBkb24ndCBoYXZlIHNvdXJjZSBsb2NhdGlvbi5cbiAgICAgICAgLy8gRmlsdGVyIG91dCBmcmFtZXMgdGhhdCBzaG93IHVwIGluIFByb21pc2VzIHRvIGdldCBnb29kIG5hbWVzIGluIFJlYWN0J3NcbiAgICAgICAgLy8gU2VydmVyIFJlcXVlc3QgdHJhY2sgdW50aWwgd2UgY29tZSB1cCB3aXRoIGEgYmV0dGVyIGhldXJpc3RpYy5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJ25ldyBQcm9taXNlJztcbiAgICB9XG4gICAgaWYgKHNvdXJjZVVSTC5zdGFydHNXaXRoKCdub2RlOicpIHx8IHNvdXJjZVVSTC5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyBOb2RlLmpzIGxvYWRzIHNvdXJjZSBtYXBzIGVhZ2VybHkgc28gdGhpcyBjYWxsIGlzIGNoZWFwLlxuICAgICAgICAvLyBUT0RPOiBFU00gc291cmNlbWFwcyBhcmUgTygxKSBidXQgQ29tbW9uSlMgc291cmNlbWFwcyBhcmUgTyhOdW1iZXIgb2YgQ0pTIG1vZHVsZXMpLlxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGFkdmVyc2VseSBhZmZlY3QgcGVyZm9ybWFuY2Ugd2hlbiBDSlMgaXMgdXNlZCBieSBOZXh0LmpzLlxuICAgICAgICBjb25zdCBzb3VyY2VNYXAgPSBmaW5kU291cmNlTWFwKHNvdXJjZVVSTCk7XG4gICAgICAgIGlmIChzb3VyY2VNYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gTm8gc291cmNlIG1hcCBhc3NvaWNhdGVkLlxuICAgICAgICAgICAgLy8gVE9ETzogTm9kZS5qcyB0eXBlcyBzaG91bGQgcmVmbGVjdCB0aGF0IGBmaW5kU291cmNlTWFwYCBjYW4gcmV0dXJuIGB1bmRlZmluZWRgLlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc291cmNlTWFwUGF5bG9hZCA9IGZpbmRBcHBsaWNhYmxlU291cmNlTWFwUGF5bG9hZChsaW5lMSAtIDEsIGNvbHVtbjEgLSAxLCBzb3VyY2VNYXAucGF5bG9hZCk7XG4gICAgICAgIGlmIChzb3VyY2VNYXBQYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIE5vIHNvdXJjZSBtYXAgc2VjdGlvbiBhcHBsaWNhYmxlIHRvIHRoZSBmcmFtZS5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhc291cmNlTWFwSWdub3JlTGlzdHNFdmVyeXRoaW5nKHNvdXJjZU1hcFBheWxvYWQpO1xuICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBTaGFyZSBjYWNoZSB3aXRoIHBhdGNoLWVycm9yLWluc3BlY3RcbiAgICAgICAgICAgIGlmICghZGlkV2FybkFib3V0SW52YWxpZFNvdXJjZU1hcERFVi5oYXMoc291cmNlVVJMKSkge1xuICAgICAgICAgICAgICAgIGRpZFdhcm5BYm91dEludmFsaWRTb3VyY2VNYXBERVYuYWRkKHNvdXJjZVVSTCk7XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBsb2cgYW4gYWN0dWFsIGVycm9yIGluc3RhbmNlIGhlcmUgYmVjYXVzZSB0aGF0IHdpbGwgcmUtZW50ZXJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGNvZGVwYXRoIGR1cmluZyBlcnJvciBpbnNwZWN0aW9uIGFuZCBjb3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3NvdXJjZVVSTH06IEludmFsaWQgc291cmNlIG1hcC4gT25seSBjb25mb3JtYW50IHNvdXJjZSBtYXBzIGNhbiBiZSB1c2VkIHRvIGZpbHRlciBzdGFjayBmcmFtZXMuIENhdXNlOiAke2NhdXNlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbmNvbnN0IGludmFsaWRTb3VyY2VNYXAgPSBTeW1ib2woJ2ludmFsaWQtc291cmNlLW1hcCcpO1xuY29uc3Qgc291cmNlTWFwVVJMcyA9IG5ldyBfbHJ1Y2FjaGUuTFJVQ2FjaGUoNTEyICogMTAyNCAqIDEwMjQsICh1cmwpPT51cmwgPT09IGludmFsaWRTb3VyY2VNYXAgPyAvLyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBhIGh1Z2UgY2FjaGUgd2l0aCBlbXB0eSBzb3VyY2UgbWFwcy5cbiAgICA4ICogMTAyNCA6IHVybC5sZW5ndGgpO1xuZnVuY3Rpb24gZmluZFNvdXJjZU1hcFVSTERFVihzY3JpcHROYW1lT3JTb3VyY2VVUkwpIHtcbiAgICBsZXQgc291cmNlTWFwVVJMID0gc291cmNlTWFwVVJMcy5nZXQoc2NyaXB0TmFtZU9yU291cmNlVVJMKTtcbiAgICBpZiAoc291cmNlTWFwVVJMID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHNvdXJjZU1hcFBheWxvYWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgX2ZpbmRTb3VyY2VNYXA7XG4gICAgICAgICAgICBzb3VyY2VNYXBQYXlsb2FkID0gKF9maW5kU291cmNlTWFwID0gZmluZFNvdXJjZU1hcChzY3JpcHROYW1lT3JTb3VyY2VVUkwpKSA9PSBudWxsID8gdm9pZCAwIDogX2ZpbmRTb3VyY2VNYXAucGF5bG9hZDtcbiAgICAgICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7c2NyaXB0TmFtZU9yU291cmNlVVJMfTogSW52YWxpZCBzb3VyY2UgbWFwLiBPbmx5IGNvbmZvcm1hbnQgc291cmNlIG1hcHMgY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgb3JpZ2luYWwgY29kZS4gQ2F1c2U6ICR7Y2F1c2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZU1hcFBheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc291cmNlTWFwVVJMID0gaW52YWxpZFNvdXJjZU1hcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRPRE86IE1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IHRvIGV4dHJhY3QgdGhlIHJlbGV2YW50IHNlY3Rpb24gZnJvbSBJbmRleCBNYXBzLlxuICAgICAgICAgICAgLy8gVW5jbGVhciBpZiB0aGF0IHNlYXJjaCBpcyB3b3J0aCB0aGUgc21hbGxlciBwYXlsb2FkIHdlIGhhdmUgdG8gc3RyaW5naWZ5LlxuICAgICAgICAgICAgY29uc3Qgc291cmNlTWFwSlNPTiA9IEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcFBheWxvYWQpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTWFwVVJMRGF0YSA9IEJ1ZmZlci5mcm9tKHNvdXJjZU1hcEpTT04sICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgc291cmNlTWFwVVJMID0gYGRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJHtzb3VyY2VNYXBVUkxEYXRhfWA7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlTWFwVVJMcy5zZXQoc2NyaXB0TmFtZU9yU291cmNlVVJMLCBzb3VyY2VNYXBVUkwpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlTWFwVVJMID09PSBpbnZhbGlkU291cmNlTWFwID8gbnVsbCA6IHNvdXJjZU1hcFVSTDtcbn1cbmZ1bmN0aW9uIGRldmlydHVhbGl6ZVJlYWN0U2VydmVyVVJMKHNvdXJjZVVSTCkge1xuICAgIGlmIChzb3VyY2VVUkwuc3RhcnRzV2l0aCgnYWJvdXQ6Ly9SZWFjdC8nKSkge1xuICAgICAgICAvLyBhYm91dDovL1JlYWN0L1NlcnZlci9maWxlOi8vPGZpbGVuYW1lPj80MiA9PiBmaWxlOi8vPGZpbGVuYW1lPlxuICAgICAgICBjb25zdCBlbnZJZHggPSBzb3VyY2VVUkwuaW5kZXhPZignLycsICdhYm91dDovL1JlYWN0LycubGVuZ3RoKTtcbiAgICAgICAgY29uc3Qgc3VmZml4SWR4ID0gc291cmNlVVJMLmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgICAgIGlmIChlbnZJZHggPiAtMSAmJiBzdWZmaXhJZHggPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSShzb3VyY2VVUkwuc2xpY2UoZW52SWR4ICsgMSwgc3VmZml4SWR4KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZVVSTDtcbn1cbmZ1bmN0aW9uIGlzQW5vbnltb3VzRnJhbWVMaWtlbHlKU05hdGl2ZShtZXRob2ROYW1lKSB7XG4gICAgLy8gQW5vbnltb3VzIGZyYW1lcyBjYW4gYWxzbyBiZSBwcm9kdWNlZCBpbiBSZWFjdCBwYXJlbnQgc3RhY2tzIGVpdGhlciBmcm9tXG4gICAgLy8gaG9zdCBjb21wb25lbnRzIG9yIFNlcnZlciBDb21wb25lbnRzLiBXZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0aG9zZS5cbiAgICAvLyBUaGlzIGNvdWxkIGhpZGUgdXNlci1zcGFjZSBtZXRob2RzIHRoYXQgYXJlIG5hbWVkIGxpa2UgbmF0aXZlIEpTIG1ldGhvZHMgYnV0XG4gICAgLy8gc2hvdWxkIHlvdSByZWFsbHkgZG8gdGhhdD9cbiAgICByZXR1cm4oLy8gZS5nLiBKU09OLnBhcnNlXG4gICAgbWV0aG9kTmFtZS5zdGFydHNXaXRoKCdKU09OLicpIHx8IC8vIEUuZy4gUHJvbWlzZS53aXRoUmVzb2x2ZXNcbiAgICBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoJ0Z1bmN0aW9uLicpIHx8IC8vIHZhcmlvdXMgSlMgYnVpbHQtaW5zXG4gICAgbWV0aG9kTmFtZS5zdGFydHNXaXRoKCdQcm9taXNlLicpIHx8IG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgnQXJyYXkuJykgfHwgbWV0aG9kTmFtZS5zdGFydHNXaXRoKCdTZXQuJykgfHwgbWV0aG9kTmFtZS5zdGFydHNXaXRoKCdNYXAuJykpO1xufVxuZnVuY3Rpb24gaWdub3JlTGlzdEFub255bW91c1N0YWNrRnJhbWVzSWZTYW5kd2ljaGVkKGZyYW1lcywgaXNBbm9ueW1vdXNGcmFtZSwgaXNJZ25vcmVkRnJhbWUsIGdldE1ldGhvZE5hbWUsIC8qKiBvbmx5IHBhc3NlcyBmcmFtZXMgZm9yIHdoaWNoIGBpc0Fub255bW91c0ZyYW1lYCBhbmQgdGhlaXIgbWV0aG9kIGlzIGEgbmF0aXZlIEpTIG1ldGhvZCBvciBgaXNJZ25vcmVkRnJhbWVgIHJldHVybiB0cnVlICovIGlnbm9yZUZyYW1lKSB7XG4gICAgZm9yKGxldCBpID0gMTsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGcmFtZSA9IGZyYW1lc1tpXTtcbiAgICAgICAgaWYgKCEoaXNBbm9ueW1vdXNGcmFtZShjdXJyZW50RnJhbWUpICYmIGlzQW5vbnltb3VzRnJhbWVMaWtlbHlKU05hdGl2ZShnZXRNZXRob2ROYW1lKGN1cnJlbnRGcmFtZSkpKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldmlvdXNGcmFtZUlzSWdub3JlZCA9IGlzSWdub3JlZEZyYW1lKGZyYW1lc1tpIC0gMV0pO1xuICAgICAgICBpZiAocHJldmlvdXNGcmFtZUlzSWdub3JlZCAmJiBpIDwgZnJhbWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGxldCBpZ25vcmVTYW5kd2ljaCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGogPSBpICsgMTtcbiAgICAgICAgICAgIGZvcihqOyBqIDwgZnJhbWVzLmxlbmd0aDsgaisrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhbWUgPSBmcmFtZXNbal07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEZyYW1lSXNBbm9ueW1vdXMgPSBpc0Fub255bW91c0ZyYW1lKG5leHRGcmFtZSkgJiYgaXNBbm9ueW1vdXNGcmFtZUxpa2VseUpTTmF0aXZlKGdldE1ldGhvZE5hbWUobmV4dEZyYW1lKSk7XG4gICAgICAgICAgICAgICAgaWYgKG5leHRGcmFtZUlzQW5vbnltb3VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RnJhbWVJc0lnbm9yZWQgPSBpc0lnbm9yZWRGcmFtZShuZXh0RnJhbWUpO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0RnJhbWVJc0lnbm9yZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlU2FuZHdpY2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaWdub3JlU2FuZHdpY2gpIHtcbiAgICAgICAgICAgICAgICBmb3IoaTsgaSA8IGo7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUZyYW1lKGZyYW1lc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zb3VyY2UtbWFwcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/source-maps.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/server/lib/streaming-metadata.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isHtmlBotRequest: function() {\n return isHtmlBotRequest;\n },\n shouldServeStreamingMetadata: function() {\n return shouldServeStreamingMetadata;\n }\n});\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nfunction shouldServeStreamingMetadata(userAgent, htmlLimitedBots) {\n const blockingMetadataUARegex = new RegExp(htmlLimitedBots || _isbot.HTML_LIMITED_BOT_UA_RE_STRING, 'i');\n // Only block metadata for HTML-limited bots\n if (userAgent && blockingMetadataUARegex.test(userAgent)) {\n return false;\n }\n return true;\n}\nfunction isHtmlBotRequest(req) {\n const ua = req.headers['user-agent'] || '';\n const botType = (0, _isbot.getBotType)(ua);\n return botType === 'html';\n}\n\n//# sourceMappingURL=streaming-metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvc3RyZWFtaW5nLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGVBQWUsbUJBQU8sQ0FBQyw4R0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxzdHJlYW1pbmctbWV0YWRhdGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBpc0h0bWxCb3RSZXF1ZXN0OiBudWxsLFxuICAgIHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGE6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNIdG1sQm90UmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0h0bWxCb3RSZXF1ZXN0O1xuICAgIH0sXG4gICAgc2hvdWxkU2VydmVTdHJlYW1pbmdNZXRhZGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhO1xuICAgIH1cbn0pO1xuY29uc3QgX2lzYm90ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdFwiKTtcbmZ1bmN0aW9uIHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGEodXNlckFnZW50LCBodG1sTGltaXRlZEJvdHMpIHtcbiAgICBjb25zdCBibG9ja2luZ01ldGFkYXRhVUFSZWdleCA9IG5ldyBSZWdFeHAoaHRtbExpbWl0ZWRCb3RzIHx8IF9pc2JvdC5IVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORywgJ2knKTtcbiAgICAvLyBPbmx5IGJsb2NrIG1ldGFkYXRhIGZvciBIVE1MLWxpbWl0ZWQgYm90c1xuICAgIGlmICh1c2VyQWdlbnQgJiYgYmxvY2tpbmdNZXRhZGF0YVVBUmVnZXgudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBpc0h0bWxCb3RSZXF1ZXN0KHJlcSkge1xuICAgIGNvbnN0IHVhID0gcmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSB8fCAnJztcbiAgICBjb25zdCBib3RUeXBlID0gKDAsIF9pc2JvdC5nZXRCb3RUeXBlKSh1YSk7XG4gICAgcmV0dXJuIGJvdFR5cGUgPT09ICdodG1sJztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyZWFtaW5nLW1ldGFkYXRhLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/trace/constants.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/server/lib/trace/constants.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/ // eslint typescript has a bug with TS enums\n/* eslint-disable no-shadow */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n AppRenderSpan: function() {\n return AppRenderSpan;\n },\n AppRouteRouteHandlersSpan: function() {\n return AppRouteRouteHandlersSpan;\n },\n BaseServerSpan: function() {\n return BaseServerSpan;\n },\n LoadComponentsSpan: function() {\n return LoadComponentsSpan;\n },\n LogSpanAllowList: function() {\n return LogSpanAllowList;\n },\n MiddlewareSpan: function() {\n return MiddlewareSpan;\n },\n NextNodeServerSpan: function() {\n return NextNodeServerSpan;\n },\n NextServerSpan: function() {\n return NextServerSpan;\n },\n NextVanillaSpanAllowlist: function() {\n return NextVanillaSpanAllowlist;\n },\n NodeSpan: function() {\n return NodeSpan;\n },\n RenderSpan: function() {\n return RenderSpan;\n },\n ResolveMetadataSpan: function() {\n return ResolveMetadataSpan;\n },\n RouterSpan: function() {\n return RouterSpan;\n },\n StartServerSpan: function() {\n return StartServerSpan;\n }\n});\nvar BaseServerSpan = /*#__PURE__*/ function(BaseServerSpan) {\n BaseServerSpan[\"handleRequest\"] = \"BaseServer.handleRequest\";\n BaseServerSpan[\"run\"] = \"BaseServer.run\";\n BaseServerSpan[\"pipe\"] = \"BaseServer.pipe\";\n BaseServerSpan[\"getStaticHTML\"] = \"BaseServer.getStaticHTML\";\n BaseServerSpan[\"render\"] = \"BaseServer.render\";\n BaseServerSpan[\"renderToResponseWithComponents\"] = \"BaseServer.renderToResponseWithComponents\";\n BaseServerSpan[\"renderToResponse\"] = \"BaseServer.renderToResponse\";\n BaseServerSpan[\"renderToHTML\"] = \"BaseServer.renderToHTML\";\n BaseServerSpan[\"renderError\"] = \"BaseServer.renderError\";\n BaseServerSpan[\"renderErrorToResponse\"] = \"BaseServer.renderErrorToResponse\";\n BaseServerSpan[\"renderErrorToHTML\"] = \"BaseServer.renderErrorToHTML\";\n BaseServerSpan[\"render404\"] = \"BaseServer.render404\";\n return BaseServerSpan;\n}(BaseServerSpan || {});\nvar LoadComponentsSpan = /*#__PURE__*/ function(LoadComponentsSpan) {\n LoadComponentsSpan[\"loadDefaultErrorComponents\"] = \"LoadComponents.loadDefaultErrorComponents\";\n LoadComponentsSpan[\"loadComponents\"] = \"LoadComponents.loadComponents\";\n return LoadComponentsSpan;\n}(LoadComponentsSpan || {});\nvar NextServerSpan = /*#__PURE__*/ function(NextServerSpan) {\n NextServerSpan[\"getRequestHandler\"] = \"NextServer.getRequestHandler\";\n NextServerSpan[\"getServer\"] = \"NextServer.getServer\";\n NextServerSpan[\"getServerRequestHandler\"] = \"NextServer.getServerRequestHandler\";\n NextServerSpan[\"createServer\"] = \"createServer.createServer\";\n return NextServerSpan;\n}(NextServerSpan || {});\nvar NextNodeServerSpan = /*#__PURE__*/ function(NextNodeServerSpan) {\n NextNodeServerSpan[\"compression\"] = \"NextNodeServer.compression\";\n NextNodeServerSpan[\"getBuildId\"] = \"NextNodeServer.getBuildId\";\n NextNodeServerSpan[\"createComponentTree\"] = \"NextNodeServer.createComponentTree\";\n NextNodeServerSpan[\"clientComponentLoading\"] = \"NextNodeServer.clientComponentLoading\";\n NextNodeServerSpan[\"getLayoutOrPageModule\"] = \"NextNodeServer.getLayoutOrPageModule\";\n NextNodeServerSpan[\"generateStaticRoutes\"] = \"NextNodeServer.generateStaticRoutes\";\n NextNodeServerSpan[\"generateFsStaticRoutes\"] = \"NextNodeServer.generateFsStaticRoutes\";\n NextNodeServerSpan[\"generatePublicRoutes\"] = \"NextNodeServer.generatePublicRoutes\";\n NextNodeServerSpan[\"generateImageRoutes\"] = \"NextNodeServer.generateImageRoutes.route\";\n NextNodeServerSpan[\"sendRenderResult\"] = \"NextNodeServer.sendRenderResult\";\n NextNodeServerSpan[\"proxyRequest\"] = \"NextNodeServer.proxyRequest\";\n NextNodeServerSpan[\"runApi\"] = \"NextNodeServer.runApi\";\n NextNodeServerSpan[\"render\"] = \"NextNodeServer.render\";\n NextNodeServerSpan[\"renderHTML\"] = \"NextNodeServer.renderHTML\";\n NextNodeServerSpan[\"imageOptimizer\"] = \"NextNodeServer.imageOptimizer\";\n NextNodeServerSpan[\"getPagePath\"] = \"NextNodeServer.getPagePath\";\n NextNodeServerSpan[\"getRoutesManifest\"] = \"NextNodeServer.getRoutesManifest\";\n NextNodeServerSpan[\"findPageComponents\"] = \"NextNodeServer.findPageComponents\";\n NextNodeServerSpan[\"getFontManifest\"] = \"NextNodeServer.getFontManifest\";\n NextNodeServerSpan[\"getServerComponentManifest\"] = \"NextNodeServer.getServerComponentManifest\";\n NextNodeServerSpan[\"getRequestHandler\"] = \"NextNodeServer.getRequestHandler\";\n NextNodeServerSpan[\"renderToHTML\"] = \"NextNodeServer.renderToHTML\";\n NextNodeServerSpan[\"renderError\"] = \"NextNodeServer.renderError\";\n NextNodeServerSpan[\"renderErrorToHTML\"] = \"NextNodeServer.renderErrorToHTML\";\n NextNodeServerSpan[\"render404\"] = \"NextNodeServer.render404\";\n NextNodeServerSpan[\"startResponse\"] = \"NextNodeServer.startResponse\";\n // nested inner span, does not require parent scope name\n NextNodeServerSpan[\"route\"] = \"route\";\n NextNodeServerSpan[\"onProxyReq\"] = \"onProxyReq\";\n NextNodeServerSpan[\"apiResolver\"] = \"apiResolver\";\n NextNodeServerSpan[\"internalFetch\"] = \"internalFetch\";\n return NextNodeServerSpan;\n}(NextNodeServerSpan || {});\nvar StartServerSpan = /*#__PURE__*/ function(StartServerSpan) {\n StartServerSpan[\"startServer\"] = \"startServer.startServer\";\n return StartServerSpan;\n}(StartServerSpan || {});\nvar RenderSpan = /*#__PURE__*/ function(RenderSpan) {\n RenderSpan[\"getServerSideProps\"] = \"Render.getServerSideProps\";\n RenderSpan[\"getStaticProps\"] = \"Render.getStaticProps\";\n RenderSpan[\"renderToString\"] = \"Render.renderToString\";\n RenderSpan[\"renderDocument\"] = \"Render.renderDocument\";\n RenderSpan[\"createBodyResult\"] = \"Render.createBodyResult\";\n return RenderSpan;\n}(RenderSpan || {});\nvar AppRenderSpan = /*#__PURE__*/ function(AppRenderSpan) {\n AppRenderSpan[\"renderToString\"] = \"AppRender.renderToString\";\n AppRenderSpan[\"renderToReadableStream\"] = \"AppRender.renderToReadableStream\";\n AppRenderSpan[\"getBodyResult\"] = \"AppRender.getBodyResult\";\n AppRenderSpan[\"fetch\"] = \"AppRender.fetch\";\n return AppRenderSpan;\n}(AppRenderSpan || {});\nvar RouterSpan = /*#__PURE__*/ function(RouterSpan) {\n RouterSpan[\"executeRoute\"] = \"Router.executeRoute\";\n return RouterSpan;\n}(RouterSpan || {});\nvar NodeSpan = /*#__PURE__*/ function(NodeSpan) {\n NodeSpan[\"runHandler\"] = \"Node.runHandler\";\n return NodeSpan;\n}(NodeSpan || {});\nvar AppRouteRouteHandlersSpan = /*#__PURE__*/ function(AppRouteRouteHandlersSpan) {\n AppRouteRouteHandlersSpan[\"runHandler\"] = \"AppRouteRouteHandlers.runHandler\";\n return AppRouteRouteHandlersSpan;\n}(AppRouteRouteHandlersSpan || {});\nvar ResolveMetadataSpan = /*#__PURE__*/ function(ResolveMetadataSpan) {\n ResolveMetadataSpan[\"generateMetadata\"] = \"ResolveMetadata.generateMetadata\";\n ResolveMetadataSpan[\"generateViewport\"] = \"ResolveMetadata.generateViewport\";\n return ResolveMetadataSpan;\n}(ResolveMetadataSpan || {});\nvar MiddlewareSpan = /*#__PURE__*/ function(MiddlewareSpan) {\n MiddlewareSpan[\"execute\"] = \"Middleware.execute\";\n return MiddlewareSpan;\n}(MiddlewareSpan || {});\nconst NextVanillaSpanAllowlist = new Set([\n \"Middleware.execute\",\n \"BaseServer.handleRequest\",\n \"Render.getServerSideProps\",\n \"Render.getStaticProps\",\n \"AppRender.fetch\",\n \"AppRender.getBodyResult\",\n \"Render.renderDocument\",\n \"Node.runHandler\",\n \"AppRouteRouteHandlers.runHandler\",\n \"ResolveMetadata.generateMetadata\",\n \"ResolveMetadata.generateViewport\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.getLayoutOrPageModule\",\n \"NextNodeServer.startResponse\",\n \"NextNodeServer.clientComponentLoading\"\n]);\nconst LogSpanAllowList = new Set([\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.clientComponentLoading\"\n]);\n\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUE0QztBQUM1Qyw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBZUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMscUJBQXFCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyx5QkFBeUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxxQkFBcUI7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyx5QkFBeUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQkFBc0I7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9CQUFvQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLGVBQWU7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnQ0FBZ0M7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBCQUEwQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLHFCQUFxQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXGxpYlxcdHJhY2VcXGNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIHByZWRlZmluZWQgY29uc3RhbnRzIGZvciB0aGUgdHJhY2Ugc3BhbiBuYW1lIGluIG5leHQvc2VydmVyLlxuICpcbiAqIEN1cnJlbnRseSwgbmV4dC9zZXJ2ZXIvdHJhY2VyIGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9ubHkgZm9yIHRyYWNraW5nXG4gKiBuZXh0LmpzJ3MgaW1wbGVtZW50YXRpb24gb25seSB3aXRoIGtub3duIHNwYW4gbmFtZXMgZGVmaW5lZCBoZXJlLlxuICoqLyAvLyBlc2xpbnQgdHlwZXNjcmlwdCBoYXMgYSBidWcgd2l0aCBUUyBlbnVtc1xuLyogZXNsaW50LWRpc2FibGUgbm8tc2hhZG93ICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQXBwUmVuZGVyU3BhbjogbnVsbCxcbiAgICBBcHBSb3V0ZVJvdXRlSGFuZGxlcnNTcGFuOiBudWxsLFxuICAgIEJhc2VTZXJ2ZXJTcGFuOiBudWxsLFxuICAgIExvYWRDb21wb25lbnRzU3BhbjogbnVsbCxcbiAgICBMb2dTcGFuQWxsb3dMaXN0OiBudWxsLFxuICAgIE1pZGRsZXdhcmVTcGFuOiBudWxsLFxuICAgIE5leHROb2RlU2VydmVyU3BhbjogbnVsbCxcbiAgICBOZXh0U2VydmVyU3BhbjogbnVsbCxcbiAgICBOZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3Q6IG51bGwsXG4gICAgTm9kZVNwYW46IG51bGwsXG4gICAgUmVuZGVyU3BhbjogbnVsbCxcbiAgICBSZXNvbHZlTWV0YWRhdGFTcGFuOiBudWxsLFxuICAgIFJvdXRlclNwYW46IG51bGwsXG4gICAgU3RhcnRTZXJ2ZXJTcGFuOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIEFwcFJlbmRlclNwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQXBwUmVuZGVyU3BhbjtcbiAgICB9LFxuICAgIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW46IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbjtcbiAgICB9LFxuICAgIEJhc2VTZXJ2ZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEJhc2VTZXJ2ZXJTcGFuO1xuICAgIH0sXG4gICAgTG9hZENvbXBvbmVudHNTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIExvYWRDb21wb25lbnRzU3BhbjtcbiAgICB9LFxuICAgIExvZ1NwYW5BbGxvd0xpc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTG9nU3BhbkFsbG93TGlzdDtcbiAgICB9LFxuICAgIE1pZGRsZXdhcmVTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1pZGRsZXdhcmVTcGFuO1xuICAgIH0sXG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHROb2RlU2VydmVyU3BhbjtcbiAgICB9LFxuICAgIE5leHRTZXJ2ZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRTZXJ2ZXJTcGFuO1xuICAgIH0sXG4gICAgTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRWYW5pbGxhU3BhbkFsbG93bGlzdDtcbiAgICB9LFxuICAgIE5vZGVTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVTcGFuO1xuICAgIH0sXG4gICAgUmVuZGVyU3BhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW5kZXJTcGFuO1xuICAgIH0sXG4gICAgUmVzb2x2ZU1ldGFkYXRhU3BhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZXNvbHZlTWV0YWRhdGFTcGFuO1xuICAgIH0sXG4gICAgUm91dGVyU3BhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSb3V0ZXJTcGFuO1xuICAgIH0sXG4gICAgU3RhcnRTZXJ2ZXJTcGFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFN0YXJ0U2VydmVyU3BhbjtcbiAgICB9XG59KTtcbnZhciBCYXNlU2VydmVyU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oQmFzZVNlcnZlclNwYW4pIHtcbiAgICBCYXNlU2VydmVyU3BhbltcImhhbmRsZVJlcXVlc3RcIl0gPSBcIkJhc2VTZXJ2ZXIuaGFuZGxlUmVxdWVzdFwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicnVuXCJdID0gXCJCYXNlU2VydmVyLnJ1blwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicGlwZVwiXSA9IFwiQmFzZVNlcnZlci5waXBlXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJnZXRTdGF0aWNIVE1MXCJdID0gXCJCYXNlU2VydmVyLmdldFN0YXRpY0hUTUxcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlclwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlclRvUmVzcG9uc2VXaXRoQ29tcG9uZW50c1wiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJUb1Jlc3BvbnNlV2l0aENvbXBvbmVudHNcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlclRvUmVzcG9uc2VcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyVG9SZXNwb25zZVwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyVG9IVE1MXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlclRvSFRNTFwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyRXJyb3JcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyRXJyb3JcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlckVycm9yVG9SZXNwb25zZVwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJFcnJvclRvUmVzcG9uc2VcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlckVycm9yVG9IVE1MXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlckVycm9yVG9IVE1MXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJyZW5kZXI0MDRcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyNDA0XCI7XG4gICAgcmV0dXJuIEJhc2VTZXJ2ZXJTcGFuO1xufShCYXNlU2VydmVyU3BhbiB8fCB7fSk7XG52YXIgTG9hZENvbXBvbmVudHNTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihMb2FkQ29tcG9uZW50c1NwYW4pIHtcbiAgICBMb2FkQ29tcG9uZW50c1NwYW5bXCJsb2FkRGVmYXVsdEVycm9yQ29tcG9uZW50c1wiXSA9IFwiTG9hZENvbXBvbmVudHMubG9hZERlZmF1bHRFcnJvckNvbXBvbmVudHNcIjtcbiAgICBMb2FkQ29tcG9uZW50c1NwYW5bXCJsb2FkQ29tcG9uZW50c1wiXSA9IFwiTG9hZENvbXBvbmVudHMubG9hZENvbXBvbmVudHNcIjtcbiAgICByZXR1cm4gTG9hZENvbXBvbmVudHNTcGFuO1xufShMb2FkQ29tcG9uZW50c1NwYW4gfHwge30pO1xudmFyIE5leHRTZXJ2ZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihOZXh0U2VydmVyU3Bhbikge1xuICAgIE5leHRTZXJ2ZXJTcGFuW1wiZ2V0UmVxdWVzdEhhbmRsZXJcIl0gPSBcIk5leHRTZXJ2ZXIuZ2V0UmVxdWVzdEhhbmRsZXJcIjtcbiAgICBOZXh0U2VydmVyU3BhbltcImdldFNlcnZlclwiXSA9IFwiTmV4dFNlcnZlci5nZXRTZXJ2ZXJcIjtcbiAgICBOZXh0U2VydmVyU3BhbltcImdldFNlcnZlclJlcXVlc3RIYW5kbGVyXCJdID0gXCJOZXh0U2VydmVyLmdldFNlcnZlclJlcXVlc3RIYW5kbGVyXCI7XG4gICAgTmV4dFNlcnZlclNwYW5bXCJjcmVhdGVTZXJ2ZXJcIl0gPSBcImNyZWF0ZVNlcnZlci5jcmVhdGVTZXJ2ZXJcIjtcbiAgICByZXR1cm4gTmV4dFNlcnZlclNwYW47XG59KE5leHRTZXJ2ZXJTcGFuIHx8IHt9KTtcbnZhciBOZXh0Tm9kZVNlcnZlclNwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKE5leHROb2RlU2VydmVyU3Bhbikge1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImNvbXByZXNzaW9uXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5jb21wcmVzc2lvblwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldEJ1aWxkSWRcIl0gPSBcIk5leHROb2RlU2VydmVyLmdldEJ1aWxkSWRcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJjcmVhdGVDb21wb25lbnRUcmVlXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5jcmVhdGVDb21wb25lbnRUcmVlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiY2xpZW50Q29tcG9uZW50TG9hZGluZ1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuY2xpZW50Q29tcG9uZW50TG9hZGluZ1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldExheW91dE9yUGFnZU1vZHVsZVwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0TGF5b3V0T3JQYWdlTW9kdWxlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVTdGF0aWNSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlU3RhdGljUm91dGVzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlUHVibGljUm91dGVzXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZW5lcmF0ZVB1YmxpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlSW1hZ2VSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlSW1hZ2VSb3V0ZXMucm91dGVcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJzZW5kUmVuZGVyUmVzdWx0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5zZW5kUmVuZGVyUmVzdWx0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicHJveHlSZXF1ZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5wcm94eVJlcXVlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJydW5BcGlcIl0gPSBcIk5leHROb2RlU2VydmVyLnJ1bkFwaVwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicmVuZGVySFRNTFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVySFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImltYWdlT3B0aW1pemVyXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5pbWFnZU9wdGltaXplclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFBhZ2VQYXRoXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRQYWdlUGF0aFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFJvdXRlc01hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRSb3V0ZXNNYW5pZmVzdFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImZpbmRQYWdlQ29tcG9uZW50c1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZmluZFBhZ2VDb21wb25lbnRzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2V0Rm9udE1hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRGb250TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRTZXJ2ZXJDb21wb25lbnRNYW5pZmVzdFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0U2VydmVyQ29tcG9uZW50TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRSZXF1ZXN0SGFuZGxlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0UmVxdWVzdEhhbmRsZXJcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJyZW5kZXJUb0hUTUxcIl0gPSBcIk5leHROb2RlU2VydmVyLnJlbmRlclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yVG9IVE1MXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlcjQwNFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyNDA0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wic3RhcnRSZXNwb25zZVwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuc3RhcnRSZXNwb25zZVwiO1xuICAgIC8vIG5lc3RlZCBpbm5lciBzcGFuLCBkb2VzIG5vdCByZXF1aXJlIHBhcmVudCBzY29wZSBuYW1lXG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicm91dGVcIl0gPSBcInJvdXRlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wib25Qcm94eVJlcVwiXSA9IFwib25Qcm94eVJlcVwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImFwaVJlc29sdmVyXCJdID0gXCJhcGlSZXNvbHZlclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImludGVybmFsRmV0Y2hcIl0gPSBcImludGVybmFsRmV0Y2hcIjtcbiAgICByZXR1cm4gTmV4dE5vZGVTZXJ2ZXJTcGFuO1xufShOZXh0Tm9kZVNlcnZlclNwYW4gfHwge30pO1xudmFyIFN0YXJ0U2VydmVyU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oU3RhcnRTZXJ2ZXJTcGFuKSB7XG4gICAgU3RhcnRTZXJ2ZXJTcGFuW1wic3RhcnRTZXJ2ZXJcIl0gPSBcInN0YXJ0U2VydmVyLnN0YXJ0U2VydmVyXCI7XG4gICAgcmV0dXJuIFN0YXJ0U2VydmVyU3Bhbjtcbn0oU3RhcnRTZXJ2ZXJTcGFuIHx8IHt9KTtcbnZhciBSZW5kZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihSZW5kZXJTcGFuKSB7XG4gICAgUmVuZGVyU3BhbltcImdldFNlcnZlclNpZGVQcm9wc1wiXSA9IFwiUmVuZGVyLmdldFNlcnZlclNpZGVQcm9wc1wiO1xuICAgIFJlbmRlclNwYW5bXCJnZXRTdGF0aWNQcm9wc1wiXSA9IFwiUmVuZGVyLmdldFN0YXRpY1Byb3BzXCI7XG4gICAgUmVuZGVyU3BhbltcInJlbmRlclRvU3RyaW5nXCJdID0gXCJSZW5kZXIucmVuZGVyVG9TdHJpbmdcIjtcbiAgICBSZW5kZXJTcGFuW1wicmVuZGVyRG9jdW1lbnRcIl0gPSBcIlJlbmRlci5yZW5kZXJEb2N1bWVudFwiO1xuICAgIFJlbmRlclNwYW5bXCJjcmVhdGVCb2R5UmVzdWx0XCJdID0gXCJSZW5kZXIuY3JlYXRlQm9keVJlc3VsdFwiO1xuICAgIHJldHVybiBSZW5kZXJTcGFuO1xufShSZW5kZXJTcGFuIHx8IHt9KTtcbnZhciBBcHBSZW5kZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihBcHBSZW5kZXJTcGFuKSB7XG4gICAgQXBwUmVuZGVyU3BhbltcInJlbmRlclRvU3RyaW5nXCJdID0gXCJBcHBSZW5kZXIucmVuZGVyVG9TdHJpbmdcIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wicmVuZGVyVG9SZWFkYWJsZVN0cmVhbVwiXSA9IFwiQXBwUmVuZGVyLnJlbmRlclRvUmVhZGFibGVTdHJlYW1cIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wiZ2V0Qm9keVJlc3VsdFwiXSA9IFwiQXBwUmVuZGVyLmdldEJvZHlSZXN1bHRcIjtcbiAgICBBcHBSZW5kZXJTcGFuW1wiZmV0Y2hcIl0gPSBcIkFwcFJlbmRlci5mZXRjaFwiO1xuICAgIHJldHVybiBBcHBSZW5kZXJTcGFuO1xufShBcHBSZW5kZXJTcGFuIHx8IHt9KTtcbnZhciBSb3V0ZXJTcGFuID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihSb3V0ZXJTcGFuKSB7XG4gICAgUm91dGVyU3BhbltcImV4ZWN1dGVSb3V0ZVwiXSA9IFwiUm91dGVyLmV4ZWN1dGVSb3V0ZVwiO1xuICAgIHJldHVybiBSb3V0ZXJTcGFuO1xufShSb3V0ZXJTcGFuIHx8IHt9KTtcbnZhciBOb2RlU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oTm9kZVNwYW4pIHtcbiAgICBOb2RlU3BhbltcInJ1bkhhbmRsZXJcIl0gPSBcIk5vZGUucnVuSGFuZGxlclwiO1xuICAgIHJldHVybiBOb2RlU3Bhbjtcbn0oTm9kZVNwYW4gfHwge30pO1xudmFyIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4gPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4pIHtcbiAgICBBcHBSb3V0ZVJvdXRlSGFuZGxlcnNTcGFuW1wicnVuSGFuZGxlclwiXSA9IFwiQXBwUm91dGVSb3V0ZUhhbmRsZXJzLnJ1bkhhbmRsZXJcIjtcbiAgICByZXR1cm4gQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3Bhbjtcbn0oQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiB8fCB7fSk7XG52YXIgUmVzb2x2ZU1ldGFkYXRhU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oUmVzb2x2ZU1ldGFkYXRhU3Bhbikge1xuICAgIFJlc29sdmVNZXRhZGF0YVNwYW5bXCJnZW5lcmF0ZU1ldGFkYXRhXCJdID0gXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVNZXRhZGF0YVwiO1xuICAgIFJlc29sdmVNZXRhZGF0YVNwYW5bXCJnZW5lcmF0ZVZpZXdwb3J0XCJdID0gXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVWaWV3cG9ydFwiO1xuICAgIHJldHVybiBSZXNvbHZlTWV0YWRhdGFTcGFuO1xufShSZXNvbHZlTWV0YWRhdGFTcGFuIHx8IHt9KTtcbnZhciBNaWRkbGV3YXJlU3BhbiA9IC8qI19fUFVSRV9fKi8gZnVuY3Rpb24oTWlkZGxld2FyZVNwYW4pIHtcbiAgICBNaWRkbGV3YXJlU3BhbltcImV4ZWN1dGVcIl0gPSBcIk1pZGRsZXdhcmUuZXhlY3V0ZVwiO1xuICAgIHJldHVybiBNaWRkbGV3YXJlU3Bhbjtcbn0oTWlkZGxld2FyZVNwYW4gfHwge30pO1xuY29uc3QgTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0ID0gbmV3IFNldChbXG4gICAgXCJNaWRkbGV3YXJlLmV4ZWN1dGVcIixcbiAgICBcIkJhc2VTZXJ2ZXIuaGFuZGxlUmVxdWVzdFwiLFxuICAgIFwiUmVuZGVyLmdldFNlcnZlclNpZGVQcm9wc1wiLFxuICAgIFwiUmVuZGVyLmdldFN0YXRpY1Byb3BzXCIsXG4gICAgXCJBcHBSZW5kZXIuZmV0Y2hcIixcbiAgICBcIkFwcFJlbmRlci5nZXRCb2R5UmVzdWx0XCIsXG4gICAgXCJSZW5kZXIucmVuZGVyRG9jdW1lbnRcIixcbiAgICBcIk5vZGUucnVuSGFuZGxlclwiLFxuICAgIFwiQXBwUm91dGVSb3V0ZUhhbmRsZXJzLnJ1bkhhbmRsZXJcIixcbiAgICBcIlJlc29sdmVNZXRhZGF0YS5nZW5lcmF0ZU1ldGFkYXRhXCIsXG4gICAgXCJSZXNvbHZlTWV0YWRhdGEuZ2VuZXJhdGVWaWV3cG9ydFwiLFxuICAgIFwiTmV4dE5vZGVTZXJ2ZXIuY3JlYXRlQ29tcG9uZW50VHJlZVwiLFxuICAgIFwiTmV4dE5vZGVTZXJ2ZXIuZmluZFBhZ2VDb21wb25lbnRzXCIsXG4gICAgXCJOZXh0Tm9kZVNlcnZlci5nZXRMYXlvdXRPclBhZ2VNb2R1bGVcIixcbiAgICBcIk5leHROb2RlU2VydmVyLnN0YXJ0UmVzcG9uc2VcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNsaWVudENvbXBvbmVudExvYWRpbmdcIlxuXSk7XG5jb25zdCBMb2dTcGFuQWxsb3dMaXN0ID0gbmV3IFNldChbXG4gICAgXCJOZXh0Tm9kZVNlcnZlci5maW5kUGFnZUNvbXBvbmVudHNcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNyZWF0ZUNvbXBvbmVudFRyZWVcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmNsaWVudENvbXBvbmVudExvYWRpbmdcIlxuXSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/server/lib/trace/tracer.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BubbledError: function() {\n return BubbledError;\n },\n SpanKind: function() {\n return SpanKind;\n },\n SpanStatusCode: function() {\n return SpanStatusCode;\n },\n getTracer: function() {\n return getTracer;\n },\n isBubbledError: function() {\n return isBubbledError;\n }\n});\nconst _constants = __webpack_require__(/*! ./constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _isthenable = __webpack_require__(/*! ../../../shared/lib/is-thenable */ \"(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js\");\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX;\nlet api;\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (false) {} else {\n try {\n api = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\");\n } catch (err) {\n api = __webpack_require__(/*! next/dist/compiled/@opentelemetry/api */ \"(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\");\n }\n}\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api;\nclass BubbledError extends Error {\n constructor(bubble, result){\n super(), this.bubble = bubble, this.result = result;\n }\n}\nfunction isBubbledError(error) {\n if (typeof error !== 'object' || error === null) return false;\n return error instanceof BubbledError;\n}\nconst closeSpanWithError = (span, error)=>{\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true);\n } else {\n if (error) {\n span.recordException(error);\n span.setAttribute('error.type', error.name);\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error == null ? void 0 : error.message\n });\n }\n span.end();\n};\n/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map();\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId');\nlet lastSpanId = 0;\nconst getSpanId = ()=>lastSpanId++;\nconst clientTraceDataSetter = {\n set (carrier, key, value) {\n carrier.push({\n key,\n value\n });\n }\n};\nclass NextTracerImpl {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */ getTracerInstance() {\n return trace.getTracer('next.js', '0.0.1');\n }\n getContext() {\n return context;\n }\n getTracePropagationData() {\n const activeContext = context.active();\n const entries = [];\n propagation.inject(activeContext, entries, clientTraceDataSetter);\n return entries;\n }\n getActiveScopeSpan() {\n return trace.getSpan(context == null ? void 0 : context.active());\n }\n withPropagatedContext(carrier, fn, getter) {\n const activeContext = context.active();\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn();\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter);\n return context.with(remoteContext, fn);\n }\n trace(...args) {\n var _trace_getSpanContext;\n const [type, fnOrOptions, fnOrEmpty] = args;\n // coerce options form overload\n const { fn, options } = typeof fnOrOptions === 'function' ? {\n fn: fnOrOptions,\n options: {}\n } : {\n fn: fnOrEmpty,\n options: {\n ...fnOrOptions\n }\n };\n const spanName = options.spanName ?? type;\n if (!_constants.NextVanillaSpanAllowlist.has(type) && process.env.NEXT_OTEL_VERBOSE !== '1' || options.hideSpan) {\n return fn();\n }\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n let isRootSpan = false;\n if (!spanContext) {\n spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;\n isRootSpan = true;\n } else if ((_trace_getSpanContext = trace.getSpanContext(spanContext)) == null ? void 0 : _trace_getSpanContext.isRemote) {\n isRootSpan = true;\n }\n const spanId = getSpanId();\n options.attributes = {\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes\n };\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{\n let startTime;\n if (NEXT_OTEL_PERFORMANCE_PREFIX && type && _constants.LogSpanAllowList.has(type)) {\n startTime = 'performance' in globalThis && 'measure' in performance ? globalThis.performance.now() : undefined;\n }\n let cleanedUp = false;\n const onCleanup = ()=>{\n if (cleanedUp) return;\n cleanedUp = true;\n rootSpanAttributesStore.delete(spanId);\n if (startTime) {\n performance.measure(`${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split('.').pop() || '').replace(/[A-Z]/g, (match)=>'-' + match.toLowerCase())}`, {\n start: startTime,\n end: performance.now()\n });\n }\n };\n if (isRootSpan) {\n rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err)=>closeSpanWithError(span, err));\n } catch (err) {\n closeSpanWithError(span, err);\n throw err;\n } finally{\n onCleanup();\n }\n }\n try {\n const result = fn(span);\n if ((0, _isthenable.isThenable)(result)) {\n // If there's error make sure it throws\n return result.then((res)=>{\n span.end();\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res;\n }).catch((err)=>{\n closeSpanWithError(span, err);\n throw err;\n }).finally(onCleanup);\n } else {\n span.end();\n onCleanup();\n }\n return result;\n } catch (err) {\n closeSpanWithError(span, err);\n onCleanup();\n throw err;\n }\n }));\n }\n wrap(...args) {\n const tracer = this;\n const [name, options, fn] = args.length === 3 ? args : [\n args[0],\n {},\n args[1]\n ];\n if (!_constants.NextVanillaSpanAllowlist.has(name) && process.env.NEXT_OTEL_VERBOSE !== '1') {\n return fn;\n }\n return function() {\n let optionsObj = options;\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments);\n }\n const lastArgId = arguments.length - 1;\n const cb = arguments[lastArgId];\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb);\n return tracer.trace(name, optionsObj, (_span, done)=>{\n arguments[lastArgId] = function(err) {\n done == null ? void 0 : done(err);\n return scopeBoundCb.apply(this, arguments);\n };\n return fn.apply(this, arguments);\n });\n } else {\n return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments));\n }\n };\n }\n startSpan(...args) {\n const [type, options] = args;\n const spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());\n return this.getTracerInstance().startSpan(type, options, spanContext);\n }\n getSpanContext(parentSpan) {\n const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined;\n return spanContext;\n }\n getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey);\n return rootSpanAttributesStore.get(spanId);\n }\n setRootSpanAttribute(key, value) {\n const spanId = context.active().getValue(rootSpanIdKey);\n const attributes = rootSpanAttributesStore.get(spanId);\n if (attributes) {\n attributes.set(key, value);\n }\n }\n}\nconst getTracer = (()=>{\n const tracer = new NextTracerImpl();\n return ()=>tracer;\n})();\n\n//# sourceMappingURL=tracer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvdHJhY2UvdHJhY2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQU1MO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG1CQUFtQixtQkFBTyxDQUFDLGlGQUFhO0FBQ3hDLG9CQUFvQixtQkFBTyxDQUFDLGlHQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNGO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLCtGQUFvQjtBQUMxQyxNQUFNO0FBQ04sY0FBYyxtQkFBTyxDQUFDLGtIQUF1QztBQUM3RDtBQUNBO0FBQ0EsUUFBUSxzRUFBc0U7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsNkJBQTZCLFFBQVEsb0ZBQW9GO0FBQ3hLO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsdUdBQXVHO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RUFBOEU7QUFDOUU7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFx0cmFjZVxcdHJhY2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQnViYmxlZEVycm9yOiBudWxsLFxuICAgIFNwYW5LaW5kOiBudWxsLFxuICAgIFNwYW5TdGF0dXNDb2RlOiBudWxsLFxuICAgIGdldFRyYWNlcjogbnVsbCxcbiAgICBpc0J1YmJsZWRFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBCdWJibGVkRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gQnViYmxlZEVycm9yO1xuICAgIH0sXG4gICAgU3BhbktpbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gU3BhbktpbmQ7XG4gICAgfSxcbiAgICBTcGFuU3RhdHVzQ29kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTcGFuU3RhdHVzQ29kZTtcbiAgICB9LFxuICAgIGdldFRyYWNlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRUcmFjZXI7XG4gICAgfSxcbiAgICBpc0J1YmJsZWRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0J1YmJsZWRFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5jb25zdCBfaXN0aGVuYWJsZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL2lzLXRoZW5hYmxlXCIpO1xuY29uc3QgTkVYVF9PVEVMX1BFUkZPUk1BTkNFX1BSRUZJWCA9IHByb2Nlc3MuZW52Lk5FWFRfT1RFTF9QRVJGT1JNQU5DRV9QUkVGSVg7XG5sZXQgYXBpO1xuLy8gd2Ugd2FudCB0byBhbGxvdyB1c2VycyB0byB1c2UgdGhlaXIgb3duIHZlcnNpb24gb2YgQG9wZW50ZWxlbWV0cnkvYXBpIGlmIHRoZXlcbi8vIHdhbnQgdG8sIHNvIHdlIHRyeSB0byByZXF1aXJlIGl0IGZpcnN0LCBhbmQgaWYgaXQgZmFpbHMgd2UgZmFsbCBiYWNrIHRvIHRoZVxuLy8gdmVyc2lvbiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCBOZXh0LmpzXG4vLyB0aGlzIGlzIGJlY2F1c2UgQG9wZW50ZWxlbWV0cnkvYXBpIGhhcyB0byBiZSBzeW5jZWQgd2l0aCB0aGUgdmVyc2lvbiBvZlxuLy8gQG9wZW50ZWxlbWV0cnkvdHJhY2luZyB0aGF0IGlzIHVzZWQsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGZvcmNlIHVzZXJzIHRvIHVzZVxuLy8gdGhlIHZlcnNpb24gdGhhdCBpcyBidW5kbGVkIHdpdGggTmV4dC5qcy5cbi8vIHRoZSBBUEkgaXMgfnN0YWJsZSwgc28gdGhpcyBzaG91bGQgYmUgZmluZVxuaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgYXBpID0gcmVxdWlyZSgnQG9wZW50ZWxlbWV0cnkvYXBpJyk7XG59IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICAgIGFwaSA9IHJlcXVpcmUoJ0BvcGVudGVsZW1ldHJ5L2FwaScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBhcGkgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvQG9wZW50ZWxlbWV0cnkvYXBpJyk7XG4gICAgfVxufVxuY29uc3QgeyBjb250ZXh0LCBwcm9wYWdhdGlvbiwgdHJhY2UsIFNwYW5TdGF0dXNDb2RlLCBTcGFuS2luZCwgUk9PVF9DT05URVhUIH0gPSBhcGk7XG5jbGFzcyBCdWJibGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoYnViYmxlLCByZXN1bHQpe1xuICAgICAgICBzdXBlcigpLCB0aGlzLmJ1YmJsZSA9IGJ1YmJsZSwgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNCdWJibGVkRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAodHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyB8fCBlcnJvciA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEJ1YmJsZWRFcnJvcjtcbn1cbmNvbnN0IGNsb3NlU3BhbldpdGhFcnJvciA9IChzcGFuLCBlcnJvcik9PntcbiAgICBpZiAoaXNCdWJibGVkRXJyb3IoZXJyb3IpICYmIGVycm9yLmJ1YmJsZSkge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnbmV4dC5idWJibGUnLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdlcnJvci50eXBlJywgZXJyb3IubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvciA9PSBudWxsID8gdm9pZCAwIDogZXJyb3IubWVzc2FnZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3Bhbi5lbmQoKTtcbn07XG4vKiogd2UgdXNlIHRoaXMgbWFwIHRvIHByb3BhZ2F0ZSBhdHRyaWJ1dGVzIGZyb20gbmVzdGVkIHNwYW5zIHRvIHRoZSB0b3Agc3BhbiAqLyBjb25zdCByb290U3BhbkF0dHJpYnV0ZXNTdG9yZSA9IG5ldyBNYXAoKTtcbmNvbnN0IHJvb3RTcGFuSWRLZXkgPSBhcGkuY3JlYXRlQ29udGV4dEtleSgnbmV4dC5yb290U3BhbklkJyk7XG5sZXQgbGFzdFNwYW5JZCA9IDA7XG5jb25zdCBnZXRTcGFuSWQgPSAoKT0+bGFzdFNwYW5JZCsrO1xuY29uc3QgY2xpZW50VHJhY2VEYXRhU2V0dGVyID0ge1xuICAgIHNldCAoY2Fycmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICBjYXJyaWVyLnB1c2goe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmNsYXNzIE5leHRUcmFjZXJJbXBsIHtcbiAgICAvKipcbiAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB0byB0aGUgdHJhY2Ugd2l0aCBjb25maWd1cmVkIG5hbWUuXG4gICAqIFNpbmNlIHdyYXAgLyB0cmFjZSBjYW4gYmUgZGVmaW5lZCBpbiBhbnkgcGxhY2UgcHJpb3IgdG8gYWN0dWFsIHRyYWNlIHN1YnNjcmliZXIgaW5pdGlhbGl6YXRpb24sXG4gICAqIFRoaXMgc2hvdWxkIGJlIGxhemlseSBldmFsdWF0ZWQuXG4gICAqLyBnZXRUcmFjZXJJbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNlLmdldFRyYWNlcignbmV4dC5qcycsICcwLjAuMScpO1xuICAgIH1cbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9XG4gICAgZ2V0VHJhY2VQcm9wYWdhdGlvbkRhdGEoKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSBjb250ZXh0LmFjdGl2ZSgpO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIHByb3BhZ2F0aW9uLmluamVjdChhY3RpdmVDb250ZXh0LCBlbnRyaWVzLCBjbGllbnRUcmFjZURhdGFTZXR0ZXIpO1xuICAgICAgICByZXR1cm4gZW50cmllcztcbiAgICB9XG4gICAgZ2V0QWN0aXZlU2NvcGVTcGFuKCkge1xuICAgICAgICByZXR1cm4gdHJhY2UuZ2V0U3Bhbihjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LmFjdGl2ZSgpKTtcbiAgICB9XG4gICAgd2l0aFByb3BhZ2F0ZWRDb250ZXh0KGNhcnJpZXIsIGZuLCBnZXR0ZXIpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlQ29udGV4dCA9IGNvbnRleHQuYWN0aXZlKCk7XG4gICAgICAgIGlmICh0cmFjZS5nZXRTcGFuQ29udGV4dChhY3RpdmVDb250ZXh0KSkge1xuICAgICAgICAgICAgLy8gQWN0aXZlIHNwYW4gaXMgYWxyZWFkeSBzZXQsIHRvbyBsYXRlIHRvIHByb3BhZ2F0ZS5cbiAgICAgICAgICAgIHJldHVybiBmbigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlbW90ZUNvbnRleHQgPSBwcm9wYWdhdGlvbi5leHRyYWN0KGFjdGl2ZUNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHJldHVybiBjb250ZXh0LndpdGgocmVtb3RlQ29udGV4dCwgZm4pO1xuICAgIH1cbiAgICB0cmFjZSguLi5hcmdzKSB7XG4gICAgICAgIHZhciBfdHJhY2VfZ2V0U3BhbkNvbnRleHQ7XG4gICAgICAgIGNvbnN0IFt0eXBlLCBmbk9yT3B0aW9ucywgZm5PckVtcHR5XSA9IGFyZ3M7XG4gICAgICAgIC8vIGNvZXJjZSBvcHRpb25zIGZvcm0gb3ZlcmxvYWRcbiAgICAgICAgY29uc3QgeyBmbiwgb3B0aW9ucyB9ID0gdHlwZW9mIGZuT3JPcHRpb25zID09PSAnZnVuY3Rpb24nID8ge1xuICAgICAgICAgICAgZm46IGZuT3JPcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9uczoge31cbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIGZuOiBmbk9yRW1wdHksXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgLi4uZm5Pck9wdGlvbnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3Bhbk5hbWUgPSBvcHRpb25zLnNwYW5OYW1lID8/IHR5cGU7XG4gICAgICAgIGlmICghX2NvbnN0YW50cy5OZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3QuaGFzKHR5cGUpICYmIHByb2Nlc3MuZW52Lk5FWFRfT1RFTF9WRVJCT1NFICE9PSAnMScgfHwgb3B0aW9ucy5oaWRlU3Bhbikge1xuICAgICAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJ5aW5nIHRvIGdldCBhY3RpdmUgc2NvcGVkIHNwYW4gdG8gYXNzaWduIHBhcmVudC4gSWYgb3B0aW9uIHNwZWNpZmllcyBwYXJlbnQgc3BhbiBtYW51YWxseSwgd2lsbCB0cnkgdG8gdXNlIGl0LlxuICAgICAgICBsZXQgc3BhbkNvbnRleHQgPSB0aGlzLmdldFNwYW5Db250ZXh0KChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnBhcmVudFNwYW4pID8/IHRoaXMuZ2V0QWN0aXZlU2NvcGVTcGFuKCkpO1xuICAgICAgICBsZXQgaXNSb290U3BhbiA9IGZhbHNlO1xuICAgICAgICBpZiAoIXNwYW5Db250ZXh0KSB7XG4gICAgICAgICAgICBzcGFuQ29udGV4dCA9IChjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LmFjdGl2ZSgpKSA/PyBST09UX0NPTlRFWFQ7XG4gICAgICAgICAgICBpc1Jvb3RTcGFuID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICgoX3RyYWNlX2dldFNwYW5Db250ZXh0ID0gdHJhY2UuZ2V0U3BhbkNvbnRleHQoc3BhbkNvbnRleHQpKSA9PSBudWxsID8gdm9pZCAwIDogX3RyYWNlX2dldFNwYW5Db250ZXh0LmlzUmVtb3RlKSB7XG4gICAgICAgICAgICBpc1Jvb3RTcGFuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGFuSWQgPSBnZXRTcGFuSWQoKTtcbiAgICAgICAgb3B0aW9ucy5hdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgJ25leHQuc3Bhbl9uYW1lJzogc3Bhbk5hbWUsXG4gICAgICAgICAgICAnbmV4dC5zcGFuX3R5cGUnOiB0eXBlLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy5hdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBjb250ZXh0LndpdGgoc3BhbkNvbnRleHQuc2V0VmFsdWUocm9vdFNwYW5JZEtleSwgc3BhbklkKSwgKCk9PnRoaXMuZ2V0VHJhY2VySW5zdGFuY2UoKS5zdGFydEFjdGl2ZVNwYW4oc3Bhbk5hbWUsIG9wdGlvbnMsIChzcGFuKT0+e1xuICAgICAgICAgICAgICAgIGxldCBzdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKE5FWFRfT1RFTF9QRVJGT1JNQU5DRV9QUkVGSVggJiYgdHlwZSAmJiBfY29uc3RhbnRzLkxvZ1NwYW5BbGxvd0xpc3QuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9ICdwZXJmb3JtYW5jZScgaW4gZ2xvYmFsVGhpcyAmJiAnbWVhc3VyZScgaW4gcGVyZm9ybWFuY2UgPyBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdygpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgY2xlYW5lZFVwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25DbGVhbnVwID0gKCk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFuZWRVcCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjbGVhbmVkVXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByb290U3BhbkF0dHJpYnV0ZXNTdG9yZS5kZWxldGUoc3BhbklkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0VGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZShgJHtORVhUX09URUxfUEVSRk9STUFOQ0VfUFJFRklYfTpuZXh0LSR7KHR5cGUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJykucmVwbGFjZSgvW0EtWl0vZywgKG1hdGNoKT0+Jy0nICsgbWF0Y2gudG9Mb3dlckNhc2UoKSl9YCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChpc1Jvb3RTcGFuKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RTcGFuQXR0cmlidXRlc1N0b3JlLnNldChzcGFuSWQsIG5ldyBNYXAoT2JqZWN0LmVudHJpZXMob3B0aW9ucy5hdHRyaWJ1dGVzID8/IHt9KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZm4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKHNwYW4sIChlcnIpPT5jbG9zZVNwYW5XaXRoRXJyb3Ioc3BhbiwgZXJyKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHNwYW4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIF9pc3RoZW5hYmxlLmlzVGhlbmFibGUpKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgZXJyb3IgbWFrZSBzdXJlIGl0IHRocm93c1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIHBhc3MgZG93biB0aGUgcHJvbWlzZSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY291bGQgYmUgcmVhY3Qgc3RyZWFtIHJlc3BvbnNlIHdpdGggZXJyb3IgeyBlcnJvciwgc3RyZWFtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNwYW5XaXRoRXJyb3Ioc3BhbiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KG9uQ2xlYW51cCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycik7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cbiAgICB3cmFwKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgdHJhY2VyID0gdGhpcztcbiAgICAgICAgY29uc3QgW25hbWUsIG9wdGlvbnMsIGZuXSA9IGFyZ3MubGVuZ3RoID09PSAzID8gYXJncyA6IFtcbiAgICAgICAgICAgIGFyZ3NbMF0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGFyZ3NbMV1cbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCFfY29uc3RhbnRzLk5leHRWYW5pbGxhU3BhbkFsbG93bGlzdC5oYXMobmFtZSkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1ZFUkJPU0UgIT09ICcxJykge1xuICAgICAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zT2JqID0gb3B0aW9ucztcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc09iaiA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zT2JqID0gb3B0aW9uc09iai5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdEFyZ0lkID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBjYiA9IGFyZ3VtZW50c1tsYXN0QXJnSWRdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlQm91bmRDYiA9IHRyYWNlci5nZXRDb250ZXh0KCkuYmluZChjb250ZXh0LmFjdGl2ZSgpLCBjYik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNlci50cmFjZShuYW1lLCBvcHRpb25zT2JqLCAoX3NwYW4sIGRvbmUpPT57XG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tsYXN0QXJnSWRdID0gZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lID09IG51bGwgPyB2b2lkIDAgOiBkb25lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGVCb3VuZENiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2VyLnRyYWNlKG5hbWUsIG9wdGlvbnNPYmosICgpPT5mbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3RhcnRTcGFuKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgW3R5cGUsIG9wdGlvbnNdID0gYXJncztcbiAgICAgICAgY29uc3Qgc3BhbkNvbnRleHQgPSB0aGlzLmdldFNwYW5Db250ZXh0KChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnBhcmVudFNwYW4pID8/IHRoaXMuZ2V0QWN0aXZlU2NvcGVTcGFuKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFjZXJJbnN0YW5jZSgpLnN0YXJ0U3Bhbih0eXBlLCBvcHRpb25zLCBzcGFuQ29udGV4dCk7XG4gICAgfVxuICAgIGdldFNwYW5Db250ZXh0KHBhcmVudFNwYW4pIHtcbiAgICAgICAgY29uc3Qgc3BhbkNvbnRleHQgPSBwYXJlbnRTcGFuID8gdHJhY2Uuc2V0U3Bhbihjb250ZXh0LmFjdGl2ZSgpLCBwYXJlbnRTcGFuKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHNwYW5Db250ZXh0O1xuICAgIH1cbiAgICBnZXRSb290U3BhbkF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGNvbnN0IHNwYW5JZCA9IGNvbnRleHQuYWN0aXZlKCkuZ2V0VmFsdWUocm9vdFNwYW5JZEtleSk7XG4gICAgICAgIHJldHVybiByb290U3BhbkF0dHJpYnV0ZXNTdG9yZS5nZXQoc3BhbklkKTtcbiAgICB9XG4gICAgc2V0Um9vdFNwYW5BdHRyaWJ1dGUoa2V5LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBzcGFuSWQgPSBjb250ZXh0LmFjdGl2ZSgpLmdldFZhbHVlKHJvb3RTcGFuSWRLZXkpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gcm9vdFNwYW5BdHRyaWJ1dGVzU3RvcmUuZ2V0KHNwYW5JZCk7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNvbnN0IGdldFRyYWNlciA9ICgoKT0+e1xuICAgIGNvbnN0IHRyYWNlciA9IG5ldyBOZXh0VHJhY2VySW1wbCgpO1xuICAgIHJldHVybiAoKT0+dHJhY2VyO1xufSkoKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJhY2VyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/pipe-readable.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/server/pipe-readable.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isAbortError: function() {\n return isAbortError;\n },\n pipeToNodeResponse: function() {\n return pipeToNodeResponse;\n }\n});\nconst _nextrequest = __webpack_require__(/*! ./web/spec-extension/adapters/next-request */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js\");\nconst _detachedpromise = __webpack_require__(/*! ../lib/detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nconst _tracer = __webpack_require__(/*! ./lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ./lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _clientcomponentrendererlogger = __webpack_require__(/*! ./client-component-renderer-logger */ \"(rsc)/./node_modules/next/dist/server/client-component-renderer-logger.js\");\nfunction isAbortError(e) {\n return (e == null ? void 0 : e.name) === 'AbortError' || (e == null ? void 0 : e.name) === _nextrequest.ResponseAbortedName;\n}\nfunction createWriterFromResponse(res, waitUntilForEnd) {\n let started = false;\n // Create a promise that will resolve once the response has drained. See\n // https://nodejs.org/api/stream.html#stream_event_drain\n let drained = new _detachedpromise.DetachedPromise();\n function onDrain() {\n drained.resolve();\n }\n res.on('drain', onDrain);\n // If the finish event fires, it means we shouldn't block and wait for the\n // drain event.\n res.once('close', ()=>{\n res.off('drain', onDrain);\n drained.resolve();\n });\n // Create a promise that will resolve once the response has finished. See\n // https://nodejs.org/api/http.html#event-finish_1\n const finished = new _detachedpromise.DetachedPromise();\n res.once('finish', ()=>{\n finished.resolve();\n });\n // Create a writable stream that will write to the response.\n return new WritableStream({\n write: async (chunk)=>{\n // You'd think we'd want to use `start` instead of placing this in `write`\n // but this ensures that we don't actually flush the headers until we've\n // started writing chunks.\n if (!started) {\n started = true;\n if ('performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX) {\n const metrics = (0, _clientcomponentrendererlogger.getClientComponentLoaderMetrics)();\n if (metrics) {\n performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, {\n start: metrics.clientComponentLoadStart,\n end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes\n });\n }\n }\n res.flushHeaders();\n (0, _tracer.getTracer)().trace(_constants.NextNodeServerSpan.startResponse, {\n spanName: 'start response'\n }, ()=>undefined);\n }\n try {\n const ok = res.write(chunk);\n // Added by the `compression` middleware, this is a function that will\n // flush the partially-compressed response to the client.\n if ('flush' in res && typeof res.flush === 'function') {\n res.flush();\n }\n // If the write returns false, it means there's some backpressure, so\n // wait until it's streamed before continuing.\n if (!ok) {\n await drained.promise;\n // Reset the drained promise so that we can wait for the next drain event.\n drained = new _detachedpromise.DetachedPromise();\n }\n } catch (err) {\n res.end();\n throw Object.defineProperty(new Error('failed to write chunk to response', {\n cause: err\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E321\",\n enumerable: false,\n configurable: true\n });\n }\n },\n abort: (err)=>{\n if (res.writableFinished) return;\n res.destroy(err);\n },\n close: async ()=>{\n // if a waitUntil promise was passed, wait for it to resolve before\n // ending the response.\n if (waitUntilForEnd) {\n await waitUntilForEnd;\n }\n if (res.writableFinished) return;\n res.end();\n return finished.promise;\n }\n });\n}\nasync function pipeToNodeResponse(readable, res, waitUntilForEnd) {\n try {\n // If the response has already errored, then just return now.\n const { errored, destroyed } = res;\n if (errored || destroyed) return;\n // Create a new AbortController so that we can abort the readable if the\n // client disconnects.\n const controller = (0, _nextrequest.createAbortController)(res);\n const writer = createWriterFromResponse(res, waitUntilForEnd);\n await readable.pipeTo(writer, {\n signal: controller.signal\n });\n } catch (err) {\n // If this isn't related to an abort error, re-throw it.\n if (isAbortError(err)) return;\n throw Object.defineProperty(new Error('failed to pipe response', {\n cause: err\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E180\",\n enumerable: false,\n configurable: true\n });\n }\n}\n\n//# sourceMappingURL=pipe-readable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9waXBlLXJlYWRhYmxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUdMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHFCQUFxQixtQkFBTyxDQUFDLHFJQUE0QztBQUN6RSx5QkFBeUIsbUJBQU8sQ0FBQyx1RkFBeUI7QUFDMUQsZ0JBQWdCLG1CQUFPLENBQUMscUZBQW9CO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDJGQUF1QjtBQUNsRCx1Q0FBdUMsbUJBQU8sQ0FBQyxxSEFBb0M7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MseUNBQXlDO0FBQ3hGO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUJBQXFCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxwaXBlLXJlYWRhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNBYm9ydEVycm9yOiBudWxsLFxuICAgIHBpcGVUb05vZGVSZXNwb25zZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBpc0Fib3J0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNBYm9ydEVycm9yO1xuICAgIH0sXG4gICAgcGlwZVRvTm9kZVJlc3BvbnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBpcGVUb05vZGVSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IF9uZXh0cmVxdWVzdCA9IHJlcXVpcmUoXCIuL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9uZXh0LXJlcXVlc3RcIik7XG5jb25zdCBfZGV0YWNoZWRwcm9taXNlID0gcmVxdWlyZShcIi4uL2xpYi9kZXRhY2hlZC1wcm9taXNlXCIpO1xuY29uc3QgX3RyYWNlciA9IHJlcXVpcmUoXCIuL2xpYi90cmFjZS90cmFjZXJcIik7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4vbGliL3RyYWNlL2NvbnN0YW50c1wiKTtcbmNvbnN0IF9jbGllbnRjb21wb25lbnRyZW5kZXJlcmxvZ2dlciA9IHJlcXVpcmUoXCIuL2NsaWVudC1jb21wb25lbnQtcmVuZGVyZXItbG9nZ2VyXCIpO1xuZnVuY3Rpb24gaXNBYm9ydEVycm9yKGUpIHtcbiAgICByZXR1cm4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUubmFtZSkgPT09ICdBYm9ydEVycm9yJyB8fCAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5uYW1lKSA9PT0gX25leHRyZXF1ZXN0LlJlc3BvbnNlQWJvcnRlZE5hbWU7XG59XG5mdW5jdGlvbiBjcmVhdGVXcml0ZXJGcm9tUmVzcG9uc2UocmVzLCB3YWl0VW50aWxGb3JFbmQpIHtcbiAgICBsZXQgc3RhcnRlZCA9IGZhbHNlO1xuICAgIC8vIENyZWF0ZSBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgb25jZSB0aGUgcmVzcG9uc2UgaGFzIGRyYWluZWQuIFNlZVxuICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvc3RyZWFtLmh0bWwjc3RyZWFtX2V2ZW50X2RyYWluXG4gICAgbGV0IGRyYWluZWQgPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICBmdW5jdGlvbiBvbkRyYWluKCkge1xuICAgICAgICBkcmFpbmVkLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmVzLm9uKCdkcmFpbicsIG9uRHJhaW4pO1xuICAgIC8vIElmIHRoZSBmaW5pc2ggZXZlbnQgZmlyZXMsIGl0IG1lYW5zIHdlIHNob3VsZG4ndCBibG9jayBhbmQgd2FpdCBmb3IgdGhlXG4gICAgLy8gZHJhaW4gZXZlbnQuXG4gICAgcmVzLm9uY2UoJ2Nsb3NlJywgKCk9PntcbiAgICAgICAgcmVzLm9mZignZHJhaW4nLCBvbkRyYWluKTtcbiAgICAgICAgZHJhaW5lZC5yZXNvbHZlKCk7XG4gICAgfSk7XG4gICAgLy8gQ3JlYXRlIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSByZXNwb25zZSBoYXMgZmluaXNoZWQuIFNlZVxuICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2V2ZW50LWZpbmlzaF8xXG4gICAgY29uc3QgZmluaXNoZWQgPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICByZXMub25jZSgnZmluaXNoJywgKCk9PntcbiAgICAgICAgZmluaXNoZWQucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIC8vIENyZWF0ZSBhIHdyaXRhYmxlIHN0cmVhbSB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIHJlc3BvbnNlLlxuICAgIHJldHVybiBuZXcgV3JpdGFibGVTdHJlYW0oe1xuICAgICAgICB3cml0ZTogYXN5bmMgKGNodW5rKT0+e1xuICAgICAgICAgICAgLy8gWW91J2QgdGhpbmsgd2UnZCB3YW50IHRvIHVzZSBgc3RhcnRgIGluc3RlYWQgb2YgcGxhY2luZyB0aGlzIGluIGB3cml0ZWBcbiAgICAgICAgICAgIC8vIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBhY3R1YWxseSBmbHVzaCB0aGUgaGVhZGVycyB1bnRpbCB3ZSd2ZVxuICAgICAgICAgICAgLy8gc3RhcnRlZCB3cml0aW5nIGNodW5rcy5cbiAgICAgICAgICAgIGlmICghc3RhcnRlZCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICgncGVyZm9ybWFuY2UnIGluIGdsb2JhbFRoaXMgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1BFUkZPUk1BTkNFX1BSRUZJWCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRyaWNzID0gKDAsIF9jbGllbnRjb21wb25lbnRyZW5kZXJlcmxvZ2dlci5nZXRDbGllbnRDb21wb25lbnRMb2FkZXJNZXRyaWNzKSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0cmljcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZShgJHtwcm9jZXNzLmVudi5ORVhUX09URUxfUEVSRk9STUFOQ0VfUFJFRklYfTpuZXh0LWNsaWVudC1jb21wb25lbnQtbG9hZGluZ2AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbWV0cmljcy5jbGllbnRDb21wb25lbnRMb2FkU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBtZXRyaWNzLmNsaWVudENvbXBvbmVudExvYWRTdGFydCArIG1ldHJpY3MuY2xpZW50Q29tcG9uZW50TG9hZFRpbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXMuZmx1c2hIZWFkZXJzKCk7XG4gICAgICAgICAgICAgICAgKDAsIF90cmFjZXIuZ2V0VHJhY2VyKSgpLnRyYWNlKF9jb25zdGFudHMuTmV4dE5vZGVTZXJ2ZXJTcGFuLnN0YXJ0UmVzcG9uc2UsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbk5hbWU6ICdzdGFydCByZXNwb25zZSdcbiAgICAgICAgICAgICAgICB9LCAoKT0+dW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2sgPSByZXMud3JpdGUoY2h1bmspO1xuICAgICAgICAgICAgICAgIC8vIEFkZGVkIGJ5IHRoZSBgY29tcHJlc3Npb25gIG1pZGRsZXdhcmUsIHRoaXMgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAvLyBmbHVzaCB0aGUgcGFydGlhbGx5LWNvbXByZXNzZWQgcmVzcG9uc2UgdG8gdGhlIGNsaWVudC5cbiAgICAgICAgICAgICAgICBpZiAoJ2ZsdXNoJyBpbiByZXMgJiYgdHlwZW9mIHJlcy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZXMuZmx1c2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdyaXRlIHJldHVybnMgZmFsc2UsIGl0IG1lYW5zIHRoZXJlJ3Mgc29tZSBiYWNrcHJlc3N1cmUsIHNvXG4gICAgICAgICAgICAgICAgLy8gd2FpdCB1bnRpbCBpdCdzIHN0cmVhbWVkIGJlZm9yZSBjb250aW51aW5nLlxuICAgICAgICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZHJhaW5lZC5wcm9taXNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgZHJhaW5lZCBwcm9taXNlIHNvIHRoYXQgd2UgY2FuIHdhaXQgZm9yIHRoZSBuZXh0IGRyYWluIGV2ZW50LlxuICAgICAgICAgICAgICAgICAgICBkcmFpbmVkID0gbmV3IF9kZXRhY2hlZHByb21pc2UuRGV0YWNoZWRQcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ2ZhaWxlZCB0byB3cml0ZSBjaHVuayB0byByZXNwb25zZScsIHtcbiAgICAgICAgICAgICAgICAgICAgY2F1c2U6IGVyclxuICAgICAgICAgICAgICAgIH0pLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTMyMVwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0OiAoZXJyKT0+e1xuICAgICAgICAgICAgaWYgKHJlcy53cml0YWJsZUZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgICAgICByZXMuZGVzdHJveShlcnIpO1xuICAgICAgICB9LFxuICAgICAgICBjbG9zZTogYXN5bmMgKCk9PntcbiAgICAgICAgICAgIC8vIGlmIGEgd2FpdFVudGlsIHByb21pc2Ugd2FzIHBhc3NlZCwgd2FpdCBmb3IgaXQgdG8gcmVzb2x2ZSBiZWZvcmVcbiAgICAgICAgICAgIC8vIGVuZGluZyB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICBpZiAod2FpdFVudGlsRm9yRW5kKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd2FpdFVudGlsRm9yRW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlcy53cml0YWJsZUZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgICByZXR1cm4gZmluaXNoZWQucHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuYXN5bmMgZnVuY3Rpb24gcGlwZVRvTm9kZVJlc3BvbnNlKHJlYWRhYmxlLCByZXMsIHdhaXRVbnRpbEZvckVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIElmIHRoZSByZXNwb25zZSBoYXMgYWxyZWFkeSBlcnJvcmVkLCB0aGVuIGp1c3QgcmV0dXJuIG5vdy5cbiAgICAgICAgY29uc3QgeyBlcnJvcmVkLCBkZXN0cm95ZWQgfSA9IHJlcztcbiAgICAgICAgaWYgKGVycm9yZWQgfHwgZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBBYm9ydENvbnRyb2xsZXIgc28gdGhhdCB3ZSBjYW4gYWJvcnQgdGhlIHJlYWRhYmxlIGlmIHRoZVxuICAgICAgICAvLyBjbGllbnQgZGlzY29ubmVjdHMuXG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSAoMCwgX25leHRyZXF1ZXN0LmNyZWF0ZUFib3J0Q29udHJvbGxlcikocmVzKTtcbiAgICAgICAgY29uc3Qgd3JpdGVyID0gY3JlYXRlV3JpdGVyRnJvbVJlc3BvbnNlKHJlcywgd2FpdFVudGlsRm9yRW5kKTtcbiAgICAgICAgYXdhaXQgcmVhZGFibGUucGlwZVRvKHdyaXRlciwge1xuICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbFxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gSWYgdGhpcyBpc24ndCByZWxhdGVkIHRvIGFuIGFib3J0IGVycm9yLCByZS10aHJvdyBpdC5cbiAgICAgICAgaWYgKGlzQWJvcnRFcnJvcihlcnIpKSByZXR1cm47XG4gICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ2ZhaWxlZCB0byBwaXBlIHJlc3BvbnNlJywge1xuICAgICAgICAgICAgY2F1c2U6IGVyclxuICAgICAgICB9KSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMTgwXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpcGUtcmVhZGFibGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/pipe-readable.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/render-result.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/server/render-result.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RenderResult;\n }\n}));\nconst _nodewebstreamshelper = __webpack_require__(/*! ./stream-utils/node-web-streams-helper */ \"(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\");\nconst _pipereadable = __webpack_require__(/*! ./pipe-readable */ \"(rsc)/./node_modules/next/dist/server/pipe-readable.js\");\nconst _invarianterror = __webpack_require__(/*! ../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nclass RenderResult {\n static #_ = /**\n * A render result that represents an empty response. This is used to\n * represent a response that was not found or was already sent.\n */ this.EMPTY = new RenderResult(null, {\n metadata: {},\n contentType: null\n });\n /**\n * Creates a new RenderResult instance from a static response.\n *\n * @param value the static response value\n * @param contentType the content type of the response\n * @returns a new RenderResult instance\n */ static fromStatic(value, contentType) {\n return new RenderResult(value, {\n metadata: {},\n contentType\n });\n }\n constructor(response, { contentType, waitUntil, metadata }){\n this.response = response;\n this.contentType = contentType;\n this.metadata = metadata;\n this.waitUntil = waitUntil;\n }\n assignMetadata(metadata) {\n Object.assign(this.metadata, metadata);\n }\n /**\n * Returns true if the response is null. It can be null if the response was\n * not found or was already sent.\n */ get isNull() {\n return this.response === null;\n }\n /**\n * Returns false if the response is a string. It can be a string if the page\n * was prerendered. If it's not, then it was generated dynamically.\n */ get isDynamic() {\n return typeof this.response !== 'string';\n }\n toUnchunkedString(stream = false) {\n if (this.response === null) {\n // If the response is null, return an empty string. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return '';\n }\n if (typeof this.response !== 'string') {\n if (!stream) {\n throw Object.defineProperty(new _invarianterror.InvariantError('dynamic responses cannot be unchunked. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E732\",\n enumerable: false,\n configurable: true\n });\n }\n return (0, _nodewebstreamshelper.streamToString)(this.readable);\n }\n return this.response;\n }\n /**\n * Returns a readable stream of the response.\n */ get readable() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n if (typeof this.response === 'string') {\n return (0, _nodewebstreamshelper.streamFromString)(this.response);\n }\n if (Buffer.isBuffer(this.response)) {\n return (0, _nodewebstreamshelper.streamFromBuffer)(this.response);\n }\n // If the response is an array of streams, then chain them together.\n if (Array.isArray(this.response)) {\n return (0, _nodewebstreamshelper.chainStreams)(...this.response);\n }\n return this.response;\n }\n /**\n * Coerces the response to an array of streams. This will convert the response\n * to an array of streams if it is not already one.\n *\n * @returns An array of streams\n */ coerce() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return [];\n }\n if (typeof this.response === 'string') {\n return [\n (0, _nodewebstreamshelper.streamFromString)(this.response)\n ];\n } else if (Array.isArray(this.response)) {\n return this.response;\n } else if (Buffer.isBuffer(this.response)) {\n return [\n (0, _nodewebstreamshelper.streamFromBuffer)(this.response)\n ];\n } else {\n return [\n this.response\n ];\n }\n }\n /**\n * Unshifts a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the start of the array. When this response is piped, all of the streams\n * will be piped one after the other.\n *\n * @param readable The new stream to unshift\n */ unshift(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the start of the array.\n this.response.unshift(readable);\n }\n /**\n * Chains a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the end. When this response is piped, all of the streams will be piped\n * one after the other.\n *\n * @param readable The new stream to chain\n */ push(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the end of the array.\n this.response.push(readable);\n }\n /**\n * Pipes the response to a writable stream. This will close/cancel the\n * writable stream if an error is encountered. If this doesn't throw, then\n * the writable stream will be closed or aborted.\n *\n * @param writable Writable stream to pipe the response to\n */ async pipeTo(writable) {\n try {\n await this.readable.pipeTo(writable, {\n // We want to close the writable stream ourselves so that we can wait\n // for the waitUntil promise to resolve before closing it. If an error\n // is encountered, we'll abort the writable stream if we swallowed the\n // error.\n preventClose: true\n });\n // If there is a waitUntil promise, wait for it to resolve before\n // closing the writable stream.\n if (this.waitUntil) await this.waitUntil;\n // Close the writable stream.\n await writable.close();\n } catch (err) {\n // If this is an abort error, we should abort the writable stream (as we\n // took ownership of it when we started piping). We don't need to re-throw\n // because we handled the error.\n if ((0, _pipereadable.isAbortError)(err)) {\n // Abort the writable stream if an error is encountered.\n await writable.abort(err);\n return;\n }\n // We're not aborting the writer here as when this method throws it's not\n // clear as to how so the caller should assume it's their responsibility\n // to clean up the writer.\n throw err;\n }\n }\n /**\n * Pipes the response to a node response. This will close/cancel the node\n * response if an error is encountered.\n *\n * @param res\n */ async pipeToNodeResponse(res) {\n await (0, _pipereadable.pipeToNodeResponse)(this.readable, res, this.waitUntil);\n }\n}\n\n//# sourceMappingURL=render-result.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZW5kZXItcmVzdWx0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMkNBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOEJBQThCLG1CQUFPLENBQUMsNkhBQXdDO0FBQzlFLHNCQUFzQixtQkFBTyxDQUFDLCtFQUFpQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsNEJBQTRCLGtDQUFrQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZW5kZXItcmVzdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUmVuZGVyUmVzdWx0O1xuICAgIH1cbn0pO1xuY29uc3QgX25vZGV3ZWJzdHJlYW1zaGVscGVyID0gcmVxdWlyZShcIi4vc3RyZWFtLXV0aWxzL25vZGUtd2ViLXN0cmVhbXMtaGVscGVyXCIpO1xuY29uc3QgX3BpcGVyZWFkYWJsZSA9IHJlcXVpcmUoXCIuL3BpcGUtcmVhZGFibGVcIik7XG5jb25zdCBfaW52YXJpYW50ZXJyb3IgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3JcIik7XG5jbGFzcyBSZW5kZXJSZXN1bHQge1xuICAgIHN0YXRpYyAjXyA9IC8qKlxuICAgKiBBIHJlbmRlciByZXN1bHQgdGhhdCByZXByZXNlbnRzIGFuIGVtcHR5IHJlc3BvbnNlLiBUaGlzIGlzIHVzZWQgdG9cbiAgICogcmVwcmVzZW50IGEgcmVzcG9uc2UgdGhhdCB3YXMgbm90IGZvdW5kIG9yIHdhcyBhbHJlYWR5IHNlbnQuXG4gICAqLyB0aGlzLkVNUFRZID0gbmV3IFJlbmRlclJlc3VsdChudWxsLCB7XG4gICAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgICAgY29udGVudFR5cGU6IG51bGxcbiAgICB9KTtcbiAgICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZW5kZXJSZXN1bHQgaW5zdGFuY2UgZnJvbSBhIHN0YXRpYyByZXNwb25zZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHRoZSBzdGF0aWMgcmVzcG9uc2UgdmFsdWVcbiAgICogQHBhcmFtIGNvbnRlbnRUeXBlIHRoZSBjb250ZW50IHR5cGUgb2YgdGhlIHJlc3BvbnNlXG4gICAqIEByZXR1cm5zIGEgbmV3IFJlbmRlclJlc3VsdCBpbnN0YW5jZVxuICAgKi8gc3RhdGljIGZyb21TdGF0aWModmFsdWUsIGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVuZGVyUmVzdWx0KHZhbHVlLCB7XG4gICAgICAgICAgICBtZXRhZGF0YToge30sXG4gICAgICAgICAgICBjb250ZW50VHlwZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocmVzcG9uc2UsIHsgY29udGVudFR5cGUsIHdhaXRVbnRpbCwgbWV0YWRhdGEgfSl7XG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgICAgIHRoaXMud2FpdFVudGlsID0gd2FpdFVudGlsO1xuICAgIH1cbiAgICBhc3NpZ25NZXRhZGF0YShtZXRhZGF0YSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGFkYXRhKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVzcG9uc2UgaXMgbnVsbC4gSXQgY2FuIGJlIG51bGwgaWYgdGhlIHJlc3BvbnNlIHdhc1xuICAgKiBub3QgZm91bmQgb3Igd2FzIGFscmVhZHkgc2VudC5cbiAgICovIGdldCBpc051bGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlID09PSBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICogUmV0dXJucyBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgaXMgYSBzdHJpbmcuIEl0IGNhbiBiZSBhIHN0cmluZyBpZiB0aGUgcGFnZVxuICAgKiB3YXMgcHJlcmVuZGVyZWQuIElmIGl0J3Mgbm90LCB0aGVuIGl0IHdhcyBnZW5lcmF0ZWQgZHluYW1pY2FsbHkuXG4gICAqLyBnZXQgaXNEeW5hbWljKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMucmVzcG9uc2UgIT09ICdzdHJpbmcnO1xuICAgIH1cbiAgICB0b1VuY2h1bmtlZFN0cmluZyhzdHJlYW0gPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIG51bGwsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuIFRoaXMgYmVoYXZpb3IgaXNcbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGFzIHdlJ3JlIG5vdyBwcm92aWRpbmcgdGhlIGBSZW5kZXJSZXN1bHQuRU1QVFlgIHZhbHVlLlxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNwb25zZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2R5bmFtaWMgcmVzcG9uc2VzIGNhbm5vdCBiZSB1bmNodW5rZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcycpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTczMlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Ub1N0cmluZykodGhpcy5yZWFkYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gICAgfVxuICAgIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZGFibGUgc3RyZWFtIG9mIHRoZSByZXNwb25zZS5cbiAgICovIGdldCByZWFkYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSByZXNwb25zZSBpcyBudWxsLCByZXR1cm4gYW4gZW1wdHkgc3RyZWFtLiBUaGlzIGJlaGF2aW9yIGlzXG4gICAgICAgICAgICAvLyBpbnRlbnRpb25hbCBhcyB3ZSdyZSBub3cgcHJvdmlkaW5nIHRoZSBgUmVuZGVyUmVzdWx0LkVNUFRZYCB2YWx1ZS5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgICAgIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzcG9uc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tU3RyaW5nKSh0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMucmVzcG9uc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tQnVmZmVyKSh0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgYW4gYXJyYXkgb2Ygc3RyZWFtcywgdGhlbiBjaGFpbiB0aGVtIHRvZ2V0aGVyLlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnJlc3BvbnNlKSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfbm9kZXdlYnN0cmVhbXNoZWxwZXIuY2hhaW5TdHJlYW1zKSguLi50aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENvZXJjZXMgdGhlIHJlc3BvbnNlIHRvIGFuIGFycmF5IG9mIHN0cmVhbXMuIFRoaXMgd2lsbCBjb252ZXJ0IHRoZSByZXNwb25zZVxuICAgKiB0byBhbiBhcnJheSBvZiBzdHJlYW1zIGlmIGl0IGlzIG5vdCBhbHJlYWR5IG9uZS5cbiAgICpcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyZWFtc1xuICAgKi8gY29lcmNlKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIG51bGwsIHJldHVybiBhbiBlbXB0eSBzdHJlYW0uIFRoaXMgYmVoYXZpb3IgaXNcbiAgICAgICAgICAgIC8vIGludGVudGlvbmFsIGFzIHdlJ3JlIG5vdyBwcm92aWRpbmcgdGhlIGBSZW5kZXJSZXN1bHQuRU1QVFlgIHZhbHVlLlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNwb25zZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tU3RyaW5nKSh0aGlzLnJlc3BvbnNlKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMucmVzcG9uc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy5yZXNwb25zZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgKDAsIF9ub2Rld2Vic3RyZWFtc2hlbHBlci5zdHJlYW1Gcm9tQnVmZmVyKSh0aGlzLnJlc3BvbnNlKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogVW5zaGlmdHMgYSBuZXcgc3RyZWFtIHRvIHRoZSByZXNwb25zZS4gVGhpcyB3aWxsIGNvbnZlcnQgdGhlIHJlc3BvbnNlIHRvIGFuXG4gICAqIGFycmF5IG9mIHN0cmVhbXMgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lIGFuZCB3aWxsIGFkZCB0aGUgbmV3IHN0cmVhbSB0b1xuICAgKiB0aGUgc3RhcnQgb2YgdGhlIGFycmF5LiBXaGVuIHRoaXMgcmVzcG9uc2UgaXMgcGlwZWQsIGFsbCBvZiB0aGUgc3RyZWFtc1xuICAgKiB3aWxsIGJlIHBpcGVkIG9uZSBhZnRlciB0aGUgb3RoZXIuXG4gICAqXG4gICAqIEBwYXJhbSByZWFkYWJsZSBUaGUgbmV3IHN0cmVhbSB0byB1bnNoaWZ0XG4gICAqLyB1bnNoaWZ0KHJlYWRhYmxlKSB7XG4gICAgICAgIC8vIENvZXJjZSB0aGUgcmVzcG9uc2UgdG8gYW4gYXJyYXkgb2Ygc3RyZWFtcy5cbiAgICAgICAgdGhpcy5yZXNwb25zZSA9IHRoaXMuY29lcmNlKCk7XG4gICAgICAgIC8vIEFkZCB0aGUgbmV3IHN0cmVhbSB0byB0aGUgc3RhcnQgb2YgdGhlIGFycmF5LlxuICAgICAgICB0aGlzLnJlc3BvbnNlLnVuc2hpZnQocmVhZGFibGUpO1xuICAgIH1cbiAgICAvKipcbiAgICogQ2hhaW5zIGEgbmV3IHN0cmVhbSB0byB0aGUgcmVzcG9uc2UuIFRoaXMgd2lsbCBjb252ZXJ0IHRoZSByZXNwb25zZSB0byBhblxuICAgKiBhcnJheSBvZiBzdHJlYW1zIGlmIGl0IGlzIG5vdCBhbHJlYWR5IG9uZSBhbmQgd2lsbCBhZGQgdGhlIG5ldyBzdHJlYW0gdG9cbiAgICogdGhlIGVuZC4gV2hlbiB0aGlzIHJlc3BvbnNlIGlzIHBpcGVkLCBhbGwgb2YgdGhlIHN0cmVhbXMgd2lsbCBiZSBwaXBlZFxuICAgKiBvbmUgYWZ0ZXIgdGhlIG90aGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhZGFibGUgVGhlIG5ldyBzdHJlYW0gdG8gY2hhaW5cbiAgICovIHB1c2gocmVhZGFibGUpIHtcbiAgICAgICAgLy8gQ29lcmNlIHRoZSByZXNwb25zZSB0byBhbiBhcnJheSBvZiBzdHJlYW1zLlxuICAgICAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy5jb2VyY2UoKTtcbiAgICAgICAgLy8gQWRkIHRoZSBuZXcgc3RyZWFtIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LlxuICAgICAgICB0aGlzLnJlc3BvbnNlLnB1c2gocmVhZGFibGUpO1xuICAgIH1cbiAgICAvKipcbiAgICogUGlwZXMgdGhlIHJlc3BvbnNlIHRvIGEgd3JpdGFibGUgc3RyZWFtLiBUaGlzIHdpbGwgY2xvc2UvY2FuY2VsIHRoZVxuICAgKiB3cml0YWJsZSBzdHJlYW0gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuIElmIHRoaXMgZG9lc24ndCB0aHJvdywgdGhlblxuICAgKiB0aGUgd3JpdGFibGUgc3RyZWFtIHdpbGwgYmUgY2xvc2VkIG9yIGFib3J0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB3cml0YWJsZSBXcml0YWJsZSBzdHJlYW0gdG8gcGlwZSB0aGUgcmVzcG9uc2UgdG9cbiAgICovIGFzeW5jIHBpcGVUbyh3cml0YWJsZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWFkYWJsZS5waXBlVG8od3JpdGFibGUsIHtcbiAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGNsb3NlIHRoZSB3cml0YWJsZSBzdHJlYW0gb3Vyc2VsdmVzIHNvIHRoYXQgd2UgY2FuIHdhaXRcbiAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIHdhaXRVbnRpbCBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGNsb3NpbmcgaXQuIElmIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgLy8gaXMgZW5jb3VudGVyZWQsIHdlJ2xsIGFib3J0IHRoZSB3cml0YWJsZSBzdHJlYW0gaWYgd2Ugc3dhbGxvd2VkIHRoZVxuICAgICAgICAgICAgICAgIC8vIGVycm9yLlxuICAgICAgICAgICAgICAgIHByZXZlbnRDbG9zZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHdhaXRVbnRpbCBwcm9taXNlLCB3YWl0IGZvciBpdCB0byByZXNvbHZlIGJlZm9yZVxuICAgICAgICAgICAgLy8gY2xvc2luZyB0aGUgd3JpdGFibGUgc3RyZWFtLlxuICAgICAgICAgICAgaWYgKHRoaXMud2FpdFVudGlsKSBhd2FpdCB0aGlzLndhaXRVbnRpbDtcbiAgICAgICAgICAgIC8vIENsb3NlIHRoZSB3cml0YWJsZSBzdHJlYW0uXG4gICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gYWJvcnQgZXJyb3IsIHdlIHNob3VsZCBhYm9ydCB0aGUgd3JpdGFibGUgc3RyZWFtIChhcyB3ZVxuICAgICAgICAgICAgLy8gdG9vayBvd25lcnNoaXAgb2YgaXQgd2hlbiB3ZSBzdGFydGVkIHBpcGluZykuIFdlIGRvbid0IG5lZWQgdG8gcmUtdGhyb3dcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgaGFuZGxlZCB0aGUgZXJyb3IuXG4gICAgICAgICAgICBpZiAoKDAsIF9waXBlcmVhZGFibGUuaXNBYm9ydEVycm9yKShlcnIpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWJvcnQgdGhlIHdyaXRhYmxlIHN0cmVhbSBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5hYm9ydChlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlJ3JlIG5vdCBhYm9ydGluZyB0aGUgd3JpdGVyIGhlcmUgYXMgd2hlbiB0aGlzIG1ldGhvZCB0aHJvd3MgaXQncyBub3RcbiAgICAgICAgICAgIC8vIGNsZWFyIGFzIHRvIGhvdyBzbyB0aGUgY2FsbGVyIHNob3VsZCBhc3N1bWUgaXQncyB0aGVpciByZXNwb25zaWJpbGl0eVxuICAgICAgICAgICAgLy8gdG8gY2xlYW4gdXAgdGhlIHdyaXRlci5cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogUGlwZXMgdGhlIHJlc3BvbnNlIHRvIGEgbm9kZSByZXNwb25zZS4gVGhpcyB3aWxsIGNsb3NlL2NhbmNlbCB0aGUgbm9kZVxuICAgKiByZXNwb25zZSBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHJlc1xuICAgKi8gYXN5bmMgcGlwZVRvTm9kZVJlc3BvbnNlKHJlcykge1xuICAgICAgICBhd2FpdCAoMCwgX3BpcGVyZWFkYWJsZS5waXBlVG9Ob2RlUmVzcG9uc2UpKHRoaXMucmVhZGFibGUsIHJlcywgdGhpcy53YWl0VW50aWwpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVuZGVyLXJlc3VsdC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/render-result.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request-meta.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/server/request-meta.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/* eslint-disable no-redeclare */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NEXT_REQUEST_META: function() {\n return NEXT_REQUEST_META;\n },\n addRequestMeta: function() {\n return addRequestMeta;\n },\n getRequestMeta: function() {\n return getRequestMeta;\n },\n removeRequestMeta: function() {\n return removeRequestMeta;\n },\n setRequestMeta: function() {\n return setRequestMeta;\n }\n});\nconst NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta');\nfunction getRequestMeta(req, key) {\n const meta = req[NEXT_REQUEST_META] || {};\n return typeof key === 'string' ? meta[key] : meta;\n}\nfunction setRequestMeta(req, meta) {\n req[NEXT_REQUEST_META] = meta;\n return meta;\n}\nfunction addRequestMeta(request, key, value) {\n const meta = getRequestMeta(request);\n meta[key] = value;\n return setRequestMeta(request, meta);\n}\nfunction removeRequestMeta(request, key) {\n const meta = getRequestMeta(request);\n delete meta[key];\n return setRequestMeta(request, meta);\n}\n\n//# sourceMappingURL=request-meta.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0LW1ldGEuanMiLCJtYXBwaW5ncyI6IkFBQUEsa0NBQStDO0FBQy9DLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZXF1ZXN0LW1ldGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgTkVYVF9SRVFVRVNUX01FVEE6IG51bGwsXG4gICAgYWRkUmVxdWVzdE1ldGE6IG51bGwsXG4gICAgZ2V0UmVxdWVzdE1ldGE6IG51bGwsXG4gICAgcmVtb3ZlUmVxdWVzdE1ldGE6IG51bGwsXG4gICAgc2V0UmVxdWVzdE1ldGE6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgTkVYVF9SRVFVRVNUX01FVEE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9SRVFVRVNUX01FVEE7XG4gICAgfSxcbiAgICBhZGRSZXF1ZXN0TWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhZGRSZXF1ZXN0TWV0YTtcbiAgICB9LFxuICAgIGdldFJlcXVlc3RNZXRhOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFJlcXVlc3RNZXRhO1xuICAgIH0sXG4gICAgcmVtb3ZlUmVxdWVzdE1ldGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlUmVxdWVzdE1ldGE7XG4gICAgfSxcbiAgICBzZXRSZXF1ZXN0TWV0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZXRSZXF1ZXN0TWV0YTtcbiAgICB9XG59KTtcbmNvbnN0IE5FWFRfUkVRVUVTVF9NRVRBID0gU3ltYm9sLmZvcignTmV4dEludGVybmFsUmVxdWVzdE1ldGEnKTtcbmZ1bmN0aW9uIGdldFJlcXVlc3RNZXRhKHJlcSwga2V5KSB7XG4gICAgY29uc3QgbWV0YSA9IHJlcVtORVhUX1JFUVVFU1RfTUVUQV0gfHwge307XG4gICAgcmV0dXJuIHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnID8gbWV0YVtrZXldIDogbWV0YTtcbn1cbmZ1bmN0aW9uIHNldFJlcXVlc3RNZXRhKHJlcSwgbWV0YSkge1xuICAgIHJlcVtORVhUX1JFUVVFU1RfTUVUQV0gPSBtZXRhO1xuICAgIHJldHVybiBtZXRhO1xufVxuZnVuY3Rpb24gYWRkUmVxdWVzdE1ldGEocmVxdWVzdCwga2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRSZXF1ZXN0TWV0YShyZXF1ZXN0KTtcbiAgICBtZXRhW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gc2V0UmVxdWVzdE1ldGEocmVxdWVzdCwgbWV0YSk7XG59XG5mdW5jdGlvbiByZW1vdmVSZXF1ZXN0TWV0YShyZXF1ZXN0LCBrZXkpIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0UmVxdWVzdE1ldGEocmVxdWVzdCk7XG4gICAgZGVsZXRlIG1ldGFba2V5XTtcbiAgICByZXR1cm4gc2V0UmVxdWVzdE1ldGEocmVxdWVzdCwgbWV0YSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtbWV0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request-meta.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request/fallback-params.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/request/fallback-params.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getFallbackRouteParams\", ({\n enumerable: true,\n get: function() {\n return getFallbackRouteParams;\n }\n}));\nconst _routematcher = __webpack_require__(/*! ../../shared/lib/router/utils/route-matcher */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nconst _routeregex = __webpack_require__(/*! ../../shared/lib/router/utils/route-regex */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nfunction getParamKeys(page) {\n const pattern = (0, _routeregex.getRouteRegex)(page);\n const matcher = (0, _routematcher.getRouteMatcher)(pattern);\n // Get the default list of allowed params.\n return Object.keys(matcher(page));\n}\nfunction getFallbackRouteParams(pageOrKeys) {\n let keys;\n if (typeof pageOrKeys === 'string') {\n keys = getParamKeys(pageOrKeys);\n } else {\n keys = pageOrKeys;\n }\n // If there are no keys, we can return early.\n if (keys.length === 0) return null;\n const params = new Map();\n // As we're creating unique keys for each of the dynamic route params, we only\n // need to generate a unique ID once per request because each of the keys will\n // be also be unique.\n const uniqueID = Math.random().toString(16).slice(2);\n for (const key of keys){\n params.set(key, `%%drp:${key}:${uniqueID}%%`);\n }\n return params;\n}\n\n//# sourceMappingURL=fallback-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L2ZhbGxiYWNrLXBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDBEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLHNCQUFzQixtQkFBTyxDQUFDLDRIQUE2QztBQUMzRSxvQkFBb0IsbUJBQU8sQ0FBQyx3SEFBMkM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBSSxHQUFHLFNBQVM7QUFDakQ7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJlcXVlc3RcXGZhbGxiYWNrLXBhcmFtcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldEZhbGxiYWNrUm91dGVQYXJhbXNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldEZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgfVxufSk7XG5jb25zdCBfcm91dGVtYXRjaGVyID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLW1hdGNoZXJcIik7XG5jb25zdCBfcm91dGVyZWdleCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleFwiKTtcbmZ1bmN0aW9uIGdldFBhcmFtS2V5cyhwYWdlKSB7XG4gICAgY29uc3QgcGF0dGVybiA9ICgwLCBfcm91dGVyZWdleC5nZXRSb3V0ZVJlZ2V4KShwYWdlKTtcbiAgICBjb25zdCBtYXRjaGVyID0gKDAsIF9yb3V0ZW1hdGNoZXIuZ2V0Um91dGVNYXRjaGVyKShwYXR0ZXJuKTtcbiAgICAvLyBHZXQgdGhlIGRlZmF1bHQgbGlzdCBvZiBhbGxvd2VkIHBhcmFtcy5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobWF0Y2hlcihwYWdlKSk7XG59XG5mdW5jdGlvbiBnZXRGYWxsYmFja1JvdXRlUGFyYW1zKHBhZ2VPcktleXMpIHtcbiAgICBsZXQga2V5cztcbiAgICBpZiAodHlwZW9mIHBhZ2VPcktleXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleXMgPSBnZXRQYXJhbUtleXMocGFnZU9yS2V5cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IHBhZ2VPcktleXM7XG4gICAgfVxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBrZXlzLCB3ZSBjYW4gcmV0dXJuIGVhcmx5LlxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IE1hcCgpO1xuICAgIC8vIEFzIHdlJ3JlIGNyZWF0aW5nIHVuaXF1ZSBrZXlzIGZvciBlYWNoIG9mIHRoZSBkeW5hbWljIHJvdXRlIHBhcmFtcywgd2Ugb25seVxuICAgIC8vIG5lZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgSUQgb25jZSBwZXIgcmVxdWVzdCBiZWNhdXNlIGVhY2ggb2YgdGhlIGtleXMgd2lsbFxuICAgIC8vIGJlIGFsc28gYmUgdW5pcXVlLlxuICAgIGNvbnN0IHVuaXF1ZUlEID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc2xpY2UoMik7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cyl7XG4gICAgICAgIHBhcmFtcy5zZXQoa2V5LCBgJSVkcnA6JHtrZXl9OiR7dW5pcXVlSUR9JSVgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFsbGJhY2stcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/fallback-params.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request/params.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/server/request/params.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createParamsFromClient: function() {\n return createParamsFromClient;\n },\n createPrerenderParamsForClientSegment: function() {\n return createPrerenderParamsForClientSegment;\n },\n createServerParamsForMetadata: function() {\n return createServerParamsForMetadata;\n },\n createServerParamsForRoute: function() {\n return createServerParamsForRoute;\n },\n createServerParamsForServerSegment: function() {\n return createServerParamsForServerSegment;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _dynamicaccessasyncstorageexternal = __webpack_require__(/*! ../app-render/dynamic-access-async-storage.external */ \"../app-render/dynamic-access-async-storage.external\");\nfunction createParamsFromClient(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E736\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E770\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nconst createServerParamsForMetadata = createServerParamsForServerSegment;\nfunction createServerParamsForRoute(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E738\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForServerSegment(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E743\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderParamsForClientSegment(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), \"__NEXT_ERROR_CODE\", {\n value: \"E773\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`params`');\n }\n }\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E734\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // We're prerendering in a mode that does not abort. We resolve the promise without\n // any tracking because we're just transporting a value from server to client where the tracking\n // will be applied.\n return Promise.resolve(underlyingParams);\n}\nfunction createStaticPrerenderParams(underlyingParams, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingParams(underlyingParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n return makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n if (false) {} else {\n return makeUntrackedExoticParams(underlyingParams);\n }\n}\nfunction createRuntimePrerenderParams(underlyingParams, workUnitStore) {\n return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, false ? 0 : makeUntrackedExoticParams(underlyingParams));\n}\nfunction createRenderParamsInProd(underlyingParams) {\n if (false) {}\n return makeUntrackedExoticParams(underlyingParams);\n}\nfunction createRenderParamsInDev(underlyingParams, devFallbackParams, workStore) {\n let hasFallbackParams = false;\n if (devFallbackParams) {\n for(let key in underlyingParams){\n if (devFallbackParams.has(key)) {\n hasFallbackParams = true;\n break;\n }\n }\n }\n if (false) {}\n return makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore);\n}\nconst CachedParams = new WeakMap();\nconst fallbackParamsProxyHandler = {\n get: function get(target, prop, receiver) {\n if (prop === 'then' || prop === 'catch' || prop === 'finally') {\n const originalMethod = _reflect.ReflectAdapter.get(target, prop, receiver);\n return ({\n [prop]: (...args)=>{\n const store = _dynamicaccessasyncstorageexternal.dynamicAccessAsyncStorage.getStore();\n if (store) {\n store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \\`params\\` during prerendering.`), \"__NEXT_ERROR_CODE\", {\n value: \"E691\",\n enumerable: false,\n configurable: true\n }));\n }\n return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler);\n }\n })[prop];\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n};\nfunction makeHangingParams(underlyingParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = new Proxy((0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const augmentedUnderlying = {\n ...underlyingParams\n };\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(augmentedUnderlying);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n if (fallbackParams.has(prop)) {\n Object.defineProperty(augmentedUnderlying, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n enumerable: true\n });\n Object.defineProperty(promise, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n set (newValue) {\n Object.defineProperty(promise, prop, {\n value: newValue,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n } else {\n ;\n promise[prop] = underlyingParams[prop];\n }\n }\n });\n return promise;\n}\nfunction makeUntrackedExoticParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n ;\n promise[prop] = underlyingParams[prop];\n }\n });\n return promise;\n}\nfunction makeUntrackedParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams);\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n promise[prop] = underlyingParams[prop];\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n syncIODev(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n syncIODev(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\n// Similar to `makeDynamicallyTrackedExoticParamsWithDevWarnings`, but just\n// logging the sync access without actually defining the params on the promise.\nfunction makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams);\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n warnForIncompleteEnumeration(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction syncIODev(route, expression, missingProperties) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n if (workUnitStore.prerenderPhase === true) {\n // When we're rendering dynamically in dev, we need to advance out of\n // the Prerender environment when we read Request data synchronously.\n (0, _dynamicrendering.trackSynchronousRequestDataAccessInDev)(workUnitStore);\n }\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n // In all cases we warn normally\n if (missingProperties && missingProperties.length > 0) {\n warnForIncompleteEnumeration(route, expression, missingProperties);\n } else {\n warnForSyncAccess(route, expression);\n }\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createParamsAccessError);\nconst warnForIncompleteEnumeration = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createIncompleteEnumerationError);\nfunction createParamsAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` should be awaited before using its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E307\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createIncompleteEnumerationError(route, expression, missingProperties) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` should be awaited before using its properties. ` + `The following properties were not available through enumeration ` + `because they conflict with builtin property names: ` + `${describeListOfPropertyNames(missingProperties)}. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E482\",\n enumerable: false,\n configurable: true\n });\n}\nfunction describeListOfPropertyNames(properties) {\n switch(properties.length){\n case 0:\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected describeListOfPropertyNames to be called with a non-empty list of strings.'), \"__NEXT_ERROR_CODE\", {\n value: \"E531\",\n enumerable: false,\n configurable: true\n });\n case 1:\n return `\\`${properties[0]}\\``;\n case 2:\n return `\\`${properties[0]}\\` and \\`${properties[1]}\\``;\n default:\n {\n let description = '';\n for(let i = 0; i < properties.length - 1; i++){\n description += `\\`${properties[i]}\\`, `;\n }\n description += `, and \\`${properties[properties.length - 1]}\\``;\n return description;\n }\n }\n}\n\n//# sourceMappingURL=params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQ0FBa0MsbUJBQU8sQ0FBQyxnRkFBMkM7QUFDckYsaUJBQWlCLG1CQUFPLENBQUMsNEhBQXdDO0FBQ2pFLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxzQ0FBc0MsbUJBQU8sQ0FBQywwRkFBZ0Q7QUFDOUYsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLHNCQUFzQixtQkFBTyxDQUFDLDhHQUFzQztBQUNwRSwrQkFBK0IsbUJBQU8sQ0FBQyxvR0FBNEI7QUFDbkUsa0RBQWtELG1CQUFPLENBQUMsa0pBQW1EO0FBQzdHLDJDQUEyQyxtQkFBTyxDQUFDLGdIQUFxRDtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esb0JBQW9CLElBQXNDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsS0FBSyxFQUVOO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFD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YyxXQUFXLGNBQWM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDJCQUEyQjtBQUMxRCx3Q0FBd0MsY0FBYztBQUN0RDtBQUNBLDBDQUEwQyxrQ0FBa0M7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccmVxdWVzdFxccGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUGFyYW1zRnJvbUNsaWVudDogbnVsbCxcbiAgICBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZTtcbiAgICB9LFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLWFjY2Vzcy1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuZnVuY3Rpb24gY3JlYXRlUGFyYW1zRnJvbUNsaWVudCh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUGFyYW1zRnJvbUNsaWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBhIHJ1bnRpbWUgcHJlcmVuZGVyLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc3MFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VtYW50aWNhbGx5IHdlIG9ubHkgbmVlZCB0aGUgZGV2IHRyYWNraW5nIHdoZW4gcnVubmluZyBpbiBgbmV4dCBkZXZgXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBzaW5jZSB5b3Ugd291bGQgbmV2ZXIgdXNlIG5leHQgZGV2IHdpdGggcHJvZHVjdGlvbiBOT0RFX0VOViB3ZSB1c2UgdGhpc1xuICAgICAgICAgICAgICAgICAgICAvLyBhcyBhIHByb3h5IHNvIHdlIGNhbiBzdGF0aWNhbGx5IGV4Y2x1ZGUgdGhpcyBjb2RlIGZyb20gcHJvZHVjdGlvbiBidWlsZHMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldkZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5kZXZGYWxsYmFja1BhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGRldkZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJQYXJhbXNJblByb2QodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmNvbnN0IGNyZWF0ZVNlcnZlclBhcmFtc0Zvck1ldGFkYXRhID0gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDtcbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM4XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUnVudGltZVByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV2RmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmRldkZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzQzXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUnVudGltZVByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV2RmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmRldkZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ01pc3Npbmcgd29ya1N0b3JlIGluIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFNzczXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQga2V5IGluIHVuZGVybHlpbmdQYXJhbXMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwYXJhbXMgb2JqZWN0IGhhcyBvbmUgb3IgbW9yZSBmYWxsYmFjayBwYXJhbXMsIHNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBjb25zaWRlciB0aGUgYXdhaXRpbmcgb2YgdGhpcyBwYXJhbXMgb2JqZWN0IFwiZHluYW1pY1wiLiBTaW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBpbiBjYWNoZUNvbXBvbmVudHMgbW9kZSB3ZSBlbmNvZGUgdGhpcyBhcyBhIHByb21pc2UgdGhhdCBuZXZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLCB3b3JrU3RvcmUucm91dGUsICdgcGFyYW1zYCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM0XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBXZSdyZSBwcmVyZW5kZXJpbmcgaW4gYSBtb2RlIHRoYXQgZG9lcyBub3QgYWJvcnQuIFdlIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aG91dFxuICAgIC8vIGFueSB0cmFja2luZyBiZWNhdXNlIHdlJ3JlIGp1c3QgdHJhbnNwb3J0aW5nIGEgdmFsdWUgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50IHdoZXJlIHRoZSB0cmFja2luZ1xuICAgIC8vIHdpbGwgYmUgYXBwbGllZC5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdQYXJhbXMpO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBzd2l0Y2gocHJlcmVuZGVyU3RvcmUudHlwZSl7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcGFyYW1zIG9iamVjdCBoYXMgb25lIG9yIG1vcmUgZmFsbGJhY2sgcGFyYW1zLCBzbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gY29uc2lkZXIgdGhlIGF3YWl0aW5nIG9mIHRoaXMgcGFyYW1zIG9iamVjdCBcImR5bmFtaWNcIi4gU2luY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgaW4gY2FjaGVDb21wb25lbnRzIG1vZGUgd2UgZW5jb2RlIHRoaXMgYXMgYSBwcm9taXNlIHRoYXQgbmV2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtcywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcHJlcmVuZGVyU3RvcmU7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZEV4b3RpY1BhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtVbml0U3RvcmUpIHtcbiAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5nLmRlbGF5VW50aWxSdW50aW1lU3RhZ2UpKHdvcmtVbml0U3RvcmUsIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTID8gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSA6IG1ha2VVbnRyYWNrZWRFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcykpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRQYXJhbXModW5kZXJseWluZ1BhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBtYWtlVW50cmFja2VkRXhvdGljUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGxldCBoYXNGYWxsYmFja1BhcmFtcyA9IGZhbHNlO1xuICAgIGlmIChkZXZGYWxsYmFja1BhcmFtcykge1xuICAgICAgICBmb3IobGV0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgIGlmIChkZXZGYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGhhc0ZhbGxiYWNrUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgfVxuICAgIHJldHVybiBtYWtlRHluYW1pY2FsbHlUcmFja2VkRXhvdGljUGFyYW1zV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdQYXJhbXMsIGhhc0ZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUpO1xufVxuY29uc3QgQ2FjaGVkUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGZhbGxiYWNrUGFyYW1zUHJveHlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICd0aGVuJyB8fCBwcm9wID09PSAnY2F0Y2gnIHx8IHByb3AgPT09ICdmaW5hbGx5Jykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICBbcHJvcF06ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwuZHluYW1pY0FjY2Vzc0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmFib3J0Q29udHJvbGxlci5hYm9ydChPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBBY2Nlc3NlZCBmYWxsYmFjayBcXGBwYXJhbXNcXGAgZHVyaW5nIHByZXJlbmRlcmluZy5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkob3JpZ2luYWxNZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm94eSgoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHBhcmFtc2AnKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgYXVnbWVudGVkVW5kZXJseWluZyA9IHtcbiAgICAgICAgLi4udW5kZXJseWluZ1BhcmFtc1xuICAgIH07XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2UgcGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhdWdtZW50ZWRVbmRlcmx5aW5nKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXVnbWVudGVkVW5kZXJseWluZywgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgZHluYW1pYyBBUElzIHdlIGFsc28gdGhyb3cgaWYgYGR5bmFtaWMgPSBcImVycm9yXCJgIGhvd2V2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBwYXJhbXMgaXMgb25seSBkeW5hbWljIHdoZW4gd2UncmUgZ2VuZXJhdGluZyBhIGZhbGxiYWNrIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlbiB3aGVuIGBkeW5hbWljID0gXCJlcnJvclwiYCB3ZSBzdGlsbCBzdXBwb3J0IGdlbmVyYXRpbmcgZHluYW1pY1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgc2hlbGxzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBjYWNoZUNvbXBvbmVudHMgaXMgdGhlIGRlZmF1bHQgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgbm8gYGR5bmFtaWMgPSBcImVycm9yXCJgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKShleHByZXNzaW9uLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBwcm9wLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3BhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gbW9zdCBkeW5hbWljIEFQSXMgd2UgYWxzbyB0aHJvdyBpZiBgZHluYW1pYyA9IFwiZXJyb3JcImAgaG93ZXZlclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHBhcmFtcyBpcyBvbmx5IGR5bmFtaWMgd2hlbiB3ZSdyZSBnZW5lcmF0aW5nIGEgZmFsbGJhY2sgc2hlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBldmVuIHdoZW4gYGR5bmFtaWMgPSBcImVycm9yXCJgIHdlIHN0aWxsIHN1cHBvcnQgZ2VuZXJhdGluZyBkeW5hbWljXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWxsYmFjayBzaGVsbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgY29tbWVudCB3aGVuIGNhY2hlQ29tcG9uZW50cyBpcyB0aGUgZGVmYXVsdCBzaW5jZSB0aGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBubyBgZHluYW1pYyA9IFwiZXJyb3JcImBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQUFIgUHJlcmVuZGVyIChubyBjYWNoZUNvbXBvbmVudHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZ2FjeSBQcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzZXQgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZEV4b3RpY1BhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlKTtcbiAgICBPYmplY3Qua2V5cyh1bmRlcmx5aW5nUGFyYW1zKS5mb3JFYWNoKChwcm9wKT0+e1xuICAgICAgICBpZiAoX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBzaGFkb3dlZCBiZWNhdXNlIHRoZXkgbmVlZCB0byBiZSB0aGVcbiAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VEeW5hbWljYWxseVRyYWNrZWRFeG90aWNQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1BhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IHdhcyBwcm94aWVkIHRvIHRoZSBwcm9taXNlIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZVN0cmluZ1Byb3BlcnR5QWNjZXNzKSgncGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYC4uLnBhcmFtc2Agb3Igc2ltaWxhciBleHByZXNzaW9uJztcbiAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgdW5wcm94aWVkUHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG4vLyBTaW1pbGFyIHRvIGBtYWtlRHluYW1pY2FsbHlUcmFja2VkRXhvdGljUGFyYW1zV2l0aERldldhcm5pbmdzYCwgYnV0IGp1c3Rcbi8vIGxvZ2dpbmcgdGhlIHN5bmMgYWNjZXNzIHdpdGhvdXQgYWN0dWFsbHkgZGVmaW5pbmcgdGhlIHBhcmFtcyBvbiB0aGUgcHJvbWlzZS5cbmZ1bmN0aW9uIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1BhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICgvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCB3YXMgcHJveGllZCB0byB0aGUgcHJvbWlzZSBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3BhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2VzcyhzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYC4uLnBhcmFtc2Agb3Igc2ltaWxhciBleHByZXNzaW9uJztcbiAgICAgICAgICAgIHdhcm5Gb3JJbmNvbXBsZXRlRW51bWVyYXRpb24oc3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHVucHJveGllZFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gc3luY0lPRGV2KHJvdXRlLCBleHByZXNzaW9uLCBtaXNzaW5nUHJvcGVydGllcykge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUucHJlcmVuZGVyUGhhc2UgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgZHluYW1pY2FsbHkgaW4gZGV2LCB3ZSBuZWVkIHRvIGFkdmFuY2Ugb3V0IG9mXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBQcmVyZW5kZXIgZW52aXJvbm1lbnQgd2hlbiB3ZSByZWFkIFJlcXVlc3QgZGF0YSBzeW5jaHJvbm91c2x5LlxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudHJhY2tTeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzSW5EZXYpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBJbiBhbGwgY2FzZXMgd2Ugd2FybiBub3JtYWxseVxuICAgIGlmIChtaXNzaW5nUHJvcGVydGllcyAmJiBtaXNzaW5nUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHdhcm5Gb3JJbmNvbXBsZXRlRW51bWVyYXRpb24ocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuRm9yU3luY0FjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgfVxufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3IpO1xuY29uc3Qgd2FybkZvckluY29tcGxldGVFbnVtZXJhdGlvbiA9ICgwLCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlci5jcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2KShjcmVhdGVJbmNvbXBsZXRlRW51bWVyYXRpb25FcnJvcik7XG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNBY2Nlc3NFcnJvcihyb3V0ZSwgZXhwcmVzc2lvbikge1xuICAgIGNvbnN0IHByZWZpeCA9IHJvdXRlID8gYFJvdXRlIFwiJHtyb3V0ZX1cIiBgIDogJ1RoaXMgcm91dGUgJztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgJHtwcmVmaXh9dXNlZCAke2V4cHJlc3Npb259LiBgICsgYFxcYHBhcmFtc1xcYCBzaG91bGQgYmUgYXdhaXRlZCBiZWZvcmUgdXNpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkUzMDdcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSW5jb21wbGV0ZUVudW1lcmF0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgcHJlZml4ID0gcm91dGUgPyBgUm91dGUgXCIke3JvdXRlfVwiIGAgOiAnVGhpcyByb3V0ZSAnO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGAke3ByZWZpeH11c2VkICR7ZXhwcmVzc2lvbn0uIGAgKyBgXFxgcGFyYW1zXFxgIHNob3VsZCBiZSBhd2FpdGVkIGJlZm9yZSB1c2luZyBpdHMgcHJvcGVydGllcy4gYCArIGBUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgd2VyZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZW51bWVyYXRpb24gYCArIGBiZWNhdXNlIHRoZXkgY29uZmxpY3Qgd2l0aCBidWlsdGluIHByb3BlcnR5IG5hbWVzOiBgICsgYCR7ZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzKG1pc3NpbmdQcm9wZXJ0aWVzKX0uIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU0ODJcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzKHByb3BlcnRpZXMpIHtcbiAgICBzd2l0Y2gocHJvcGVydGllcy5sZW5ndGgpe1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzIHRvIGJlIGNhbGxlZCB3aXRoIGEgbm9uLWVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTUzMVwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBgXFxgJHtwcm9wZXJ0aWVzWzBdfVxcYGA7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBgXFxgJHtwcm9wZXJ0aWVzWzBdfVxcYCBhbmQgXFxgJHtwcm9wZXJ0aWVzWzFdfVxcYGA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYFxcYCR7cHJvcGVydGllc1tpXX1cXGAsIGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9IGAsIGFuZCBcXGAke3Byb3BlcnRpZXNbcHJvcGVydGllcy5sZW5ndGggLSAxXX1cXGBgO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcmFtcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/params.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request/pathname.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/server/request/pathname.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createServerPathnameForMetadata\", ({\n enumerable: true,\n get: function() {\n return createServerPathnameForMetadata;\n }\n}));\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction createServerPathnameForMetadata(underlyingPathname, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n {\n return createPrerenderPathname(underlyingPathname, workStore, workUnitStore);\n }\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerPathnameForMetadata should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E740\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, createRenderPathname(underlyingPathname));\n case 'request':\n return createRenderPathname(underlyingPathname);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderPathname(underlyingPathname, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender-client':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderPathname was called inside a client component scope.'), \"__NEXT_ERROR_CODE\", {\n value: \"E694\",\n enumerable: false,\n configurable: true\n });\n case 'prerender':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`pathname`');\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return makeErroringPathname(workStore, prerenderStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n // We don't have any fallback params so we have an entirely static safe params object\n return Promise.resolve(underlyingPathname);\n}\nfunction makeErroringPathname(workStore, dynamicTracking) {\n let reject = null;\n const promise = new Promise((_, re)=>{\n reject = re;\n });\n const originalThen = promise.then.bind(promise);\n // We instrument .then so that we can generate a tracking event only if you actually\n // await this promise, not just that it is created.\n promise.then = (onfulfilled, onrejected)=>{\n if (reject) {\n try {\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, 'metadata relative url resolving', dynamicTracking);\n } catch (error) {\n reject(error);\n reject = null;\n }\n }\n return originalThen(onfulfilled, onrejected);\n };\n // We wrap in a noop proxy to trick the runtime into thinking it\n // isn't a native promise (it's not really). This is so that awaiting\n // the promise will call the `then` property triggering the lazy postpone\n return new Proxy(promise, {});\n}\nfunction createRenderPathname(underlyingPathname) {\n return Promise.resolve(underlyingPathname);\n}\n\n//# sourceMappingURL=pathname.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhdGhuYW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsbUVBQWtFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsMEJBQTBCLG1CQUFPLENBQUMsOEdBQWlDO0FBQ25FLHNDQUFzQyxtQkFBTyxDQUFDLDBGQUFnRDtBQUM5RiwrQkFBK0IsbUJBQU8sQ0FBQyxvR0FBNEI7QUFDbkUsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZXF1ZXN0XFxwYXRobmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZVNlcnZlclBhdGhuYW1lRm9yTWV0YWRhdGFcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclBhdGhuYW1lRm9yTWV0YWRhdGE7XG4gICAgfVxufSk7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZyA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5ndXRpbHMgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmctdXRpbHNcIik7XG5jb25zdCBfaW52YXJpYW50ZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3JcIik7XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJQYXRobmFtZUZvck1ldGFkYXRhKHVuZGVybHlpbmdQYXRobmFtZSwgd29ya1N0b3JlKSB7XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXJlbmRlclBhdGhuYW1lKHVuZGVybHlpbmdQYXRobmFtZSwgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGF0aG5hbWVGb3JNZXRhZGF0YSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDBcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmcuZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZSkod29ya1VuaXRTdG9yZSwgY3JlYXRlUmVuZGVyUGF0aG5hbWUodW5kZXJseWluZ1BhdGhuYW1lKSk7XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGF0aG5hbWUodW5kZXJseWluZ1BhdGhuYW1lKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJQYXRobmFtZSh1bmRlcmx5aW5nUGF0aG5hbWUsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBzd2l0Y2gocHJlcmVuZGVyU3RvcmUudHlwZSl7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclBhdGhuYW1lIHdhcyBjYWxsZWQgaW5zaWRlIGEgY2xpZW50IGNvbXBvbmVudCBzY29wZS4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5NFwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSBwcmVyZW5kZXJTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zO1xuICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKShwcmVyZW5kZXJTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BwYXRobmFtZWAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VFcnJvcmluZ1BhdGhuYW1lKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwcmVyZW5kZXJTdG9yZTtcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgZmFsbGJhY2sgcGFyYW1zIHNvIHdlIGhhdmUgYW4gZW50aXJlbHkgc3RhdGljIHNhZmUgcGFyYW1zIG9iamVjdFxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhdGhuYW1lKTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1BhdGhuYW1lKHdvcmtTdG9yZSwgZHluYW1pY1RyYWNraW5nKSB7XG4gICAgbGV0IHJlamVjdCA9IG51bGw7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByZSk9PntcbiAgICAgICAgcmVqZWN0ID0gcmU7XG4gICAgfSk7XG4gICAgY29uc3Qgb3JpZ2luYWxUaGVuID0gcHJvbWlzZS50aGVuLmJpbmQocHJvbWlzZSk7XG4gICAgLy8gV2UgaW5zdHJ1bWVudCAudGhlbiBzbyB0aGF0IHdlIGNhbiBnZW5lcmF0ZSBhIHRyYWNraW5nIGV2ZW50IG9ubHkgaWYgeW91IGFjdHVhbGx5XG4gICAgLy8gYXdhaXQgdGhpcyBwcm9taXNlLCBub3QganVzdCB0aGF0IGl0IGlzIGNyZWF0ZWQuXG4gICAgcHJvbWlzZS50aGVuID0gKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKT0+e1xuICAgICAgICBpZiAocmVqZWN0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCAnbWV0YWRhdGEgcmVsYXRpdmUgdXJsIHJlc29sdmluZycsIGR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxUaGVuKG9uZnVsZmlsbGVkLCBvbnJlamVjdGVkKTtcbiAgICB9O1xuICAgIC8vIFdlIHdyYXAgaW4gYSBub29wIHByb3h5IHRvIHRyaWNrIHRoZSBydW50aW1lIGludG8gdGhpbmtpbmcgaXRcbiAgICAvLyBpc24ndCBhIG5hdGl2ZSBwcm9taXNlIChpdCdzIG5vdCByZWFsbHkpLiBUaGlzIGlzIHNvIHRoYXQgYXdhaXRpbmdcbiAgICAvLyB0aGUgcHJvbWlzZSB3aWxsIGNhbGwgdGhlIGB0aGVuYCBwcm9wZXJ0eSB0cmlnZ2VyaW5nIHRoZSBsYXp5IHBvc3Rwb25lXG4gICAgcmV0dXJuIG5ldyBQcm94eShwcm9taXNlLCB7fSk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZW5kZXJQYXRobmFtZSh1bmRlcmx5aW5nUGF0aG5hbWUpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdQYXRobmFtZSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGhuYW1lLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/pathname.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request/search-params.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/server/request/search-params.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createPrerenderSearchParamsForClientPage: function() {\n return createPrerenderSearchParamsForClientPage;\n },\n createSearchParamsFromClient: function() {\n return createSearchParamsFromClient;\n },\n createServerSearchParamsForMetadata: function() {\n return createServerSearchParamsForMetadata;\n },\n createServerSearchParamsForServerPage: function() {\n return createServerSearchParamsForServerPage;\n },\n makeErroringSearchParamsForUseCache: function() {\n return makeErroringSearchParamsForUseCache;\n }\n});\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(rsc)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/server/request/utils.js\");\nfunction createSearchParamsFromClient(underlyingSearchParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E769\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E739\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nconst createServerSearchParamsForMetadata = createServerSearchParamsForServerPage;\nfunction createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E747\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore);\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderSearchParamsForClientPage(workStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n // We're prerendering in a mode that aborts (cacheComponents) and should stall\n // the promise to ensure the RSC side is considered dynamic\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`searchParams`');\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E768\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E746\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n return Promise.resolve({});\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createStaticPrerenderSearchParams(workStore, prerenderStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n // We are in a cacheComponents (PPR or otherwise) prerender\n return makeHangingSearchParams(workStore, prerenderStore);\n case 'prerender-ppr':\n case 'prerender-legacy':\n // We are in a legacy static generation and need to interrupt the\n // prerender when search params are accessed.\n return makeErroringExoticSearchParams(workStore, prerenderStore);\n default:\n return prerenderStore;\n }\n}\nfunction createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore) {\n return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, false ? 0 : makeUntrackedExoticSearchParams(underlyingSearchParams));\n}\nfunction createRenderSearchParams(underlyingSearchParams, workStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n } else {\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n if (false) {}\n return makeDynamicallyTrackedExoticSearchParamsWithDevWarnings(underlyingSearchParams, workStore);\n } else {}\n }\n}\nconst CachedSearchParams = new WeakMap();\nconst CachedSearchParamsForUseCache = new WeakMap();\nfunction makeHangingSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(prerenderStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`searchParams`');\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n default:\n {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n }\n });\n CachedSearchParams.set(prerenderStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringExoticSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const underlyingSearchParams = {};\n // For search params we don't construct a ReactPromise because we want to interrupt\n // rendering on any property access that was not set from outside and so we only want\n // to have properties like value and status if React sets them.\n const promise = Promise.resolve(underlyingSearchParams);\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return;\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return;\n }\n default:\n {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n },\n has (target, prop) {\n // We don't expect key checking to be used except for testing the existence of\n // searchParams so we make all has tests trigger dynamic. this means that `promise.then`\n // can resolve to the then function on the Promise prototype but 'then' in promise will assume\n // you are testing whether the searchParams has a 'then' property.\n if (typeof prop === 'string') {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return false;\n }\n return _reflect.ReflectAdapter.has(target, prop);\n },\n ownKeys () {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n });\n CachedSearchParams.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParamsForUseCache(workStore) {\n const cachedSearchParams = CachedSearchParamsForUseCache.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve({});\n const proxiedPromise = new Proxy(promise, {\n get: function get(target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it. We know it\n // isn't a dynamic access because it can only be something that was\n // previously written to the promise and thus not an underlying\n // searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, get);\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has: function has(target, prop) {\n // We don't expect key checking to be used except for testing the existence of\n // searchParams so we make all has tests throw an error. this means that `promise.then`\n // can resolve to the then function on the Promise prototype but 'then' in promise will assume\n // you are testing whether the searchParams has a 'then' property.\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, has);\n }\n return _reflect.ReflectAdapter.has(target, prop);\n },\n ownKeys: function ownKeys() {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, ownKeys);\n }\n });\n CachedSearchParamsForUseCache.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeUntrackedExoticSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n // We don't use makeResolvedReactPromise here because searchParams\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (!_reflectutils.wellKnownProperties.has(prop)) {\n Object.defineProperty(promise, prop, {\n get () {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore);\n }\n return underlyingSearchParams[prop];\n },\n set (value) {\n Object.defineProperty(promise, prop, {\n value,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n }\n });\n return promise;\n}\nfunction makeUntrackedSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedExoticSearchParamsWithDevWarnings(underlyingSearchParams, store) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n // We have an unfortunate sequence of events that requires this initialization logic. We want to instrument the underlying\n // searchParams object to detect if you are accessing values in dev. This is used for warnings and for things like the static prerender\n // indicator. However when we pass this proxy to our Promise.resolve() below the VM checks if the resolved value is a promise by looking\n // at the `.then` property. To our dynamic tracking logic this is indistinguishable from a `then` searchParam and so we would normally trigger\n // dynamic tracking. However we know that this .then is not real dynamic access, it's just how thenables resolve in sequence. So we introduce\n // this initialization concept so we omit the dynamic check until after we've constructed our resolved promise.\n let promiseInitialized = false;\n const proxiedUnderlying = new Proxy(underlyingSearchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && promiseInitialized) {\n if (store.dynamicShouldError) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (store.dynamicShouldError) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n if (store.dynamicShouldError) {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n return Reflect.ownKeys(target);\n }\n });\n // We don't use makeResolvedReactPromise here because searchParams\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingSearchParams);\n promise.then(()=>{\n promiseInitialized = true;\n });\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n Object.defineProperty(promise, prop, {\n get () {\n return proxiedUnderlying[prop];\n },\n set (newValue) {\n Object.defineProperty(promise, prop, {\n value: newValue,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (prop === 'then' && store.dynamicShouldError) {\n const expression = '`searchParams.then`';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n syncIODev(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n syncIODev(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n syncIODev(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedSearchParams.set(underlyingSearchParams, proxiedPromise);\n return proxiedPromise;\n}\n// Similar to `makeDynamicallyTrackedExoticSearchParamsWithDevWarnings`, but\n// just logging the sync access without actually defining the search params on\n// the promise.\nfunction makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, store) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingSearchParams);\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n warnForIncompleteEnumeration(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedSearchParams.set(underlyingSearchParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction syncIODev(route, expression, missingProperties) {\n // In all cases we warn normally\n if (missingProperties && missingProperties.length > 0) {\n warnForIncompleteEnumeration(route, expression, missingProperties);\n } else {\n warnForSyncAccess(route, expression);\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n if (workUnitStore.prerenderPhase === true) {\n // When we're rendering dynamically in dev, we need to advance out of\n // the Prerender environment when we read Request data synchronously.\n (0, _dynamicrendering.trackSynchronousRequestDataAccessInDev)(workUnitStore);\n }\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createSearchAccessError);\nconst warnForIncompleteEnumeration = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createIncompleteEnumerationError);\nfunction createSearchAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` should be awaited before using its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E249\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createIncompleteEnumerationError(route, expression, missingProperties) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` should be awaited before using its properties. ` + `The following properties were not available through enumeration ` + `because they conflict with builtin or well-known property names: ` + `${describeListOfPropertyNames(missingProperties)}. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E2\",\n enumerable: false,\n configurable: true\n });\n}\nfunction describeListOfPropertyNames(properties) {\n switch(properties.length){\n case 0:\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected describeListOfPropertyNames to be called with a non-empty list of strings.'), \"__NEXT_ERROR_CODE\", {\n value: \"E531\",\n enumerable: false,\n configurable: true\n });\n case 1:\n return `\\`${properties[0]}\\``;\n case 2:\n return `\\`${properties[0]}\\` and \\`${properties[1]}\\``;\n default:\n {\n let description = '';\n for(let i = 0; i < properties.length - 1; i++){\n description += `\\`${properties[i]}\\`, `;\n }\n description += `, and \\`${properties[properties.length - 1]}\\``;\n return description;\n }\n }\n}\n\n//# sourceMappingURL=search-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsNEhBQXdDO0FBQ2pFLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxzQ0FBc0MsbUJBQU8sQ0FBQywwRkFBZ0Q7QUFDOUYsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLCtCQUErQixtQkFBTyxDQUFDLG9HQUE0QjtBQUNuRSxrREFBa0QsbUJBQU8sQ0FBQyxrSkFBbUQ7QUFDN0csc0JBQXNCLG1CQUFPLENBQUMsOEdBQXNDO0FBQ3BFLGVBQWUsbUJBQU8sQ0FBQyx1RUFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE1BQU07QUFDM0MsOENBQThDLE9BQU8sT0FBTyxXQUFXO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUNBQXFDLE1BQU07QUFDM0MsOENBQThDLE9BQU8sT0FBTyxXQUFXLHlOQUF5TiwrQ0FBK0M7QUFDL1U7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBLHdCQUF3QixjQUFjLFdBQVcsY0FBYztBQUMvRDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkJBQTJCO0FBQzFELHdDQUF3QyxjQUFjO0FBQ3REO0FBQ0EsMENBQTBDLGtDQUFrQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZXF1ZXN0XFxzZWFyY2gtcGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogbnVsbCxcbiAgICBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IG51bGwsXG4gICAgbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zRm9yVXNlQ2FjaGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG4gICAgfSxcbiAgICBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWZsZWN0ID0gcmVxdWlyZShcIi4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZWZsZWN0XCIpO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZ1wiKTtcbmNvbnN0IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfaW52YXJpYW50ZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3JcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9yZWZsZWN0dXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi91dGlscy9yZWZsZWN0LXV0aWxzXCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjlcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5jb25zdCBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JNZXRhZGF0YSA9IGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDdcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Uod29ya1N0b3JlKSB7XG4gICAgaWYgKHdvcmtTdG9yZS5mb3JjZVN0YXRpYykge1xuICAgICAgICAvLyBXaGVuIHVzaW5nIGZvcmNlU3RhdGljIHdlIG92ZXJyaWRlIGFsbCBvdGhlciBsb2dpYyBhbmQgYWx3YXlzIGp1c3QgcmV0dXJuIGFuIGVtcHR5XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgb2JqZWN0LlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgLy8gV2UncmUgcHJlcmVuZGVyaW5nIGluIGEgbW9kZSB0aGF0IGFib3J0cyAoY2FjaGVDb21wb25lbnRzKSBhbmQgc2hvdWxkIHN0YWxsXG4gICAgICAgICAgICAgICAgLy8gdGhlIHByb21pc2UgdG8gZW5zdXJlIHRoZSBSU0Mgc2lkZSBpcyBjb25zaWRlcmVkIGR5bmFtaWNcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKSh3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHNlYXJjaFBhcmFtc2AnKTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBhIHJ1bnRpbWUgcHJlcmVuZGVyLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc2OFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDZcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclNlYXJjaFBhcmFtcyh3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKSB7XG4gICAgaWYgKHdvcmtTdG9yZS5mb3JjZVN0YXRpYykge1xuICAgICAgICAvLyBXaGVuIHVzaW5nIGZvcmNlU3RhdGljIHdlIG92ZXJyaWRlIGFsbCBvdGhlciBsb2dpYyBhbmQgYWx3YXlzIGp1c3QgcmV0dXJuIGFuIGVtcHR5XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgb2JqZWN0LlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9XG4gICAgc3dpdGNoKHByZXJlbmRlclN0b3JlLnR5cGUpe1xuICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGNhY2hlQ29tcG9uZW50cyAoUFBSIG9yIG90aGVyd2lzZSkgcHJlcmVuZGVyXG4gICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGxlZ2FjeSBzdGF0aWMgZ2VuZXJhdGlvbiBhbmQgbmVlZCB0byBpbnRlcnJ1cHQgdGhlXG4gICAgICAgICAgICAvLyBwcmVyZW5kZXIgd2hlbiBzZWFyY2ggcGFyYW1zIGFyZSBhY2Nlc3NlZC5cbiAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdFeG90aWNTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcHJlcmVuZGVyU3RvcmU7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlUnVudGltZVByZXJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrVW5pdFN0b3JlKSB7XG4gICAgcmV0dXJuICgwLCBfZHluYW1pY3JlbmRlcmluZy5kZWxheVVudGlsUnVudGltZVN0YWdlKSh3b3JrVW5pdFN0b3JlLCBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUyA/IG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykgOiBtYWtlVW50cmFja2VkRXhvdGljU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIC8vIFdoZW4gdXNpbmcgZm9yY2VTdGF0aWMgd2Ugb3ZlcnJpZGUgYWxsIG90aGVyIGxvZ2ljIGFuZCBhbHdheXMganVzdCByZXR1cm4gYW4gZW1wdHlcbiAgICAgICAgLy8gZGljdGlvbmFyeSBvYmplY3QuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgLy8gU2VtYW50aWNhbGx5IHdlIG9ubHkgbmVlZCB0aGUgZGV2IHRyYWNraW5nIHdoZW4gcnVubmluZyBpbiBgbmV4dCBkZXZgXG4gICAgICAgICAgICAvLyBidXQgc2luY2UgeW91IHdvdWxkIG5ldmVyIHVzZSBuZXh0IGRldiB3aXRoIHByb2R1Y3Rpb24gTk9ERV9FTlYgd2UgdXNlIHRoaXNcbiAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNvbnN0IENhY2hlZFNlYXJjaFBhcmFtcyA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCBDYWNoZWRTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBtYWtlSGFuZ2luZ1NlYXJjaFBhcmFtcyh3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkU2VhcmNoUGFyYW1zID0gQ2FjaGVkU2VhcmNoUGFyYW1zLmdldChwcmVyZW5kZXJTdG9yZSk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCBwcm9taXNlID0gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKShwcmVyZW5kZXJTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BzZWFyY2hQYXJhbXNgJyk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKHByb21pc2UsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHByb21pc2UgaGFzIHRoaXMgcHJvcGVydHkgZGlyZWN0bHkuIHdlIG11c3QgcmV0dXJuIGl0LlxuICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgaXQgaXNuJ3QgYSBkeW5hbWljIGFjY2VzcyBiZWNhdXNlIGl0IGNhbiBvbmx5IGJlIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoYXQgd2FzIHByZXZpb3VzbHkgd3JpdHRlbiB0byB0aGUgcHJvbWlzZSBhbmQgdGh1cyBub3QgYW4gdW5kZXJseWluZyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICAgICAgY2FzZSAndGhlbic6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYGF3YWl0IHNlYXJjaFBhcmFtc2AsIGBzZWFyY2hQYXJhbXMudGhlbmAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLmFubm90YXRlRHluYW1pY0FjY2VzcykoZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHVzZShzZWFyY2hQYXJhbXMpYCwgYHNlYXJjaFBhcmFtcy5zdGF0dXNgLCBvciBzaW1pbGFyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5hbm5vdGF0ZUR5bmFtaWNBY2Nlc3MpKGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHByZXJlbmRlclN0b3JlLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUVycm9yaW5nRXhvdGljU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHdvcmtTdG9yZSk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zID0ge307XG4gICAgLy8gRm9yIHNlYXJjaCBwYXJhbXMgd2UgZG9uJ3QgY29uc3RydWN0IGEgUmVhY3RQcm9taXNlIGJlY2F1c2Ugd2Ugd2FudCB0byBpbnRlcnJ1cHRcbiAgICAvLyByZW5kZXJpbmcgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IHdhcyBub3Qgc2V0IGZyb20gb3V0c2lkZSBhbmQgc28gd2Ugb25seSB3YW50XG4gICAgLy8gdG8gaGF2ZSBwcm9wZXJ0aWVzIGxpa2UgdmFsdWUgYW5kIHN0YXR1cyBpZiBSZWFjdCBzZXRzIHRoZW0uXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvbWlzZSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgdGhpcyBwcm9wZXJ0eSBkaXJlY3RseS4gd2UgbXVzdCByZXR1cm4gaXQuXG4gICAgICAgICAgICAgICAgLy8gV2Uga25vdyBpdCBpc24ndCBhIGR5bmFtaWMgYWNjZXNzIGJlY2F1c2UgaXQgY2FuIG9ubHkgYmUgc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgLy8gdGhhdCB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBwcm9taXNlIGFuZCB0aHVzIG5vdCBhbiB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtIHZhbHVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGVuJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgYXdhaXQgc2VhcmNoUGFyYW1zYCwgYHNlYXJjaFBhcmFtcy50aGVuYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdzdGF0dXMnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2B1c2Uoc2VhcmNoUGFyYW1zKWAsIGBzZWFyY2hQYXJhbXMuc3RhdHVzYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBrZXkgY2hlY2tpbmcgdG8gYmUgdXNlZCBleGNlcHQgZm9yIHRlc3RpbmcgdGhlIGV4aXN0ZW5jZSBvZlxuICAgICAgICAgICAgLy8gc2VhcmNoUGFyYW1zIHNvIHdlIG1ha2UgYWxsIGhhcyB0ZXN0cyB0cmlnZ2VyIGR5bmFtaWMuIHRoaXMgbWVhbnMgdGhhdCBgcHJvbWlzZS50aGVuYFxuICAgICAgICAgICAgLy8gY2FuIHJlc29sdmUgdG8gdGhlIHRoZW4gZnVuY3Rpb24gb24gdGhlIFByb21pc2UgcHJvdG90eXBlIGJ1dCAndGhlbicgaW4gcHJvbWlzZSB3aWxsIGFzc3VtZVxuICAgICAgICAgICAgLy8geW91IGFyZSB0ZXN0aW5nIHdoZXRoZXIgdGhlIHNlYXJjaFBhcmFtcyBoYXMgYSAndGhlbicgcHJvcGVydHkuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyAoKSB7XG4gICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2B7Li4uc2VhcmNoUGFyYW1zfWAsIGBPYmplY3Qua2V5cyhzZWFyY2hQYXJhbXMpYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHdvcmtTdG9yZSwgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1NlYXJjaFBhcmFtc0ZvclVzZUNhY2hlKHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLmdldCh3b3JrU3RvcmUpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC4gV2Uga25vdyBpdFxuICAgICAgICAgICAgICAgIC8vIGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmcgdGhhdCB3YXNcbiAgICAgICAgICAgICAgICAvLyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmdcbiAgICAgICAgICAgICAgICAvLyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIChwcm9wID09PSAndGhlbicgfHwgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUpKHdvcmtTdG9yZSwgZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhczogZnVuY3Rpb24gaGFzKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IGtleSBjaGVja2luZyB0byBiZSB1c2VkIGV4Y2VwdCBmb3IgdGVzdGluZyB0aGUgZXhpc3RlbmNlIG9mXG4gICAgICAgICAgICAvLyBzZWFyY2hQYXJhbXMgc28gd2UgbWFrZSBhbGwgaGFzIHRlc3RzIHRocm93IGFuIGVycm9yLiB0aGlzIG1lYW5zIHRoYXQgYHByb21pc2UudGhlbmBcbiAgICAgICAgICAgIC8vIGNhbiByZXNvbHZlIHRvIHRoZSB0aGVuIGZ1bmN0aW9uIG9uIHRoZSBQcm9taXNlIHByb3RvdHlwZSBidXQgJ3RoZW4nIGluIHByb21pc2Ugd2lsbCBhc3N1bWVcbiAgICAgICAgICAgIC8vIHlvdSBhcmUgdGVzdGluZyB3aGV0aGVyIHRoZSBzZWFyY2hQYXJhbXMgaGFzIGEgJ3RoZW4nIHByb3BlcnR5LlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiAocHJvcCA9PT0gJ3RoZW4nIHx8ICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSkge1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dGb3JTZWFyY2hQYXJhbXNBY2Nlc3NJblVzZUNhY2hlKSh3b3JrU3RvcmUsIGhhcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXM6IGZ1bmN0aW9uIG93bktleXMoKSB7XG4gICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSkod29ya1N0b3JlLCBvd25LZXlzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLnNldCh3b3JrU3RvcmUsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkRXhvdGljU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2Ugc2VhcmNoUGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50cmFja0R5bmFtaWNEYXRhSW5EeW5hbWljUmVuZGVyKSh3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZXJseWluZ1NlYXJjaFBhcmFtc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UpO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBzdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtcy5nZXQodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgLy8gV2UgaGF2ZSBhbiB1bmZvcnR1bmF0ZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCByZXF1aXJlcyB0aGlzIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBXZSB3YW50IHRvIGluc3RydW1lbnQgdGhlIHVuZGVybHlpbmdcbiAgICAvLyBzZWFyY2hQYXJhbXMgb2JqZWN0IHRvIGRldGVjdCBpZiB5b3UgYXJlIGFjY2Vzc2luZyB2YWx1ZXMgaW4gZGV2LiBUaGlzIGlzIHVzZWQgZm9yIHdhcm5pbmdzIGFuZCBmb3IgdGhpbmdzIGxpa2UgdGhlIHN0YXRpYyBwcmVyZW5kZXJcbiAgICAvLyBpbmRpY2F0b3IuIEhvd2V2ZXIgd2hlbiB3ZSBwYXNzIHRoaXMgcHJveHkgdG8gb3VyIFByb21pc2UucmVzb2x2ZSgpIGJlbG93IHRoZSBWTSBjaGVja3MgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGEgcHJvbWlzZSBieSBsb29raW5nXG4gICAgLy8gYXQgdGhlIGAudGhlbmAgcHJvcGVydHkuIFRvIG91ciBkeW5hbWljIHRyYWNraW5nIGxvZ2ljIHRoaXMgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGB0aGVuYCBzZWFyY2hQYXJhbSBhbmQgc28gd2Ugd291bGQgbm9ybWFsbHkgdHJpZ2dlclxuICAgIC8vIGR5bmFtaWMgdHJhY2tpbmcuIEhvd2V2ZXIgd2Uga25vdyB0aGF0IHRoaXMgLnRoZW4gaXMgbm90IHJlYWwgZHluYW1pYyBhY2Nlc3MsIGl0J3MganVzdCBob3cgdGhlbmFibGVzIHJlc29sdmUgaW4gc2VxdWVuY2UuIFNvIHdlIGludHJvZHVjZVxuICAgIC8vIHRoaXMgaW5pdGlhbGl6YXRpb24gY29uY2VwdCBzbyB3ZSBvbWl0IHRoZSBkeW5hbWljIGNoZWNrIHVudGlsIGFmdGVyIHdlJ3ZlIGNvbnN0cnVjdGVkIG91ciByZXNvbHZlZCBwcm9taXNlLlxuICAgIGxldCBwcm9taXNlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBwcm94aWVkVW5kZXJseWluZyA9IG5ldyBQcm94eSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9taXNlSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZVN0cmluZ1Byb3BlcnR5QWNjZXNzKSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5KSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyAodGFyZ2V0KSB7XG4gICAgICAgICAgICBpZiAoc3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgey4uLnNlYXJjaFBhcmFtc31gLCBgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHNlYXJjaFBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSkodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgcHJvbWlzZS50aGVuKCgpPT57XG4gICAgICAgIHByb21pc2VJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94aWVkVW5kZXJseWluZ1twcm9wXTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RoZW4nICYmIHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHNlYXJjaFBhcmFtcy50aGVuYCc7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvcikoc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICBzeW5jSU9EZXYoc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCAodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5kZWxldGUocHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBoYXMgKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5KSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXMgKHRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICBzeW5jSU9EZXYoc3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHVucHJveGllZFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuLy8gU2ltaWxhciB0byBgbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5nc2AsIGJ1dFxuLy8ganVzdCBsb2dnaW5nIHRoZSBzeW5jIGFjY2VzcyB3aXRob3V0IGFjdHVhbGx5IGRlZmluaW5nIHRoZSBzZWFyY2ggcGFyYW1zIG9uXG4vLyB0aGUgcHJvbWlzZS5cbmZ1bmN0aW9uIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgc3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJveGllZFByb3BlcnRpZXMgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgdW5wcm94aWVkUHJvcGVydGllcyA9IFtdO1xuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSkodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2VzcyhzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApICYmIChwcm94aWVkUHJvcGVydGllcy5oYXMocHJvcCkgfHwgLy8gV2UgYXJlIGFjY2Vzc2luZyBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdCBvbiB0aGUgcHJvbWlzZSBub3JcbiAgICAgICAgICAgICAgICAvLyB0aGUgdW5kZXJseWluZyBzZWFyY2hQYXJhbXMuXG4gICAgICAgICAgICAgICAgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZUhhc0NoZWNraW5nU3RyaW5nUHJvcGVydHkpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Moc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYE9iamVjdC5rZXlzKHNlYXJjaFBhcmFtcylgIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgd2FybkZvckluY29tcGxldGVFbnVtZXJhdGlvbihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgdW5wcm94aWVkUHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBzeW5jSU9EZXYocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG4gICAgLy8gSW4gYWxsIGNhc2VzIHdlIHdhcm4gbm9ybWFsbHlcbiAgICBpZiAobWlzc2luZ1Byb3BlcnRpZXMgJiYgbWlzc2luZ1Byb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB3YXJuRm9ySW5jb21wbGV0ZUVudW1lcmF0aW9uKHJvdXRlLCBleHByZXNzaW9uLCBtaXNzaW5nUHJvcGVydGllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mocm91dGUsIGV4cHJlc3Npb24pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlLnByZXJlbmRlclBoYXNlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gd2UncmUgcmVuZGVyaW5nIGR5bmFtaWNhbGx5IGluIGRldiwgd2UgbmVlZCB0byBhZHZhbmNlIG91dCBvZlxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUHJlcmVuZGVyIGVudmlyb25tZW50IHdoZW4gd2UgcmVhZCBSZXF1ZXN0IGRhdGEgc3luY2hyb25vdXNseS5cbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRyYWNrU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2Vzc0luRGV2KSh3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCB3YXJuRm9yU3luY0FjY2VzcyA9ICgwLCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlci5jcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2KShjcmVhdGVTZWFyY2hBY2Nlc3NFcnJvcik7XG5jb25zdCB3YXJuRm9ySW5jb21wbGV0ZUVudW1lcmF0aW9uID0gKDAsIF9jcmVhdGVkZWR1cGVkYnljYWxsc2l0ZXNlcnZlcmVycm9ybG9nZ2VyLmNyZWF0ZURlZHVwZWRCeUNhbGxzaXRlU2VydmVyRXJyb3JMb2dnZXJEZXYpKGNyZWF0ZUluY29tcGxldGVFbnVtZXJhdGlvbkVycm9yKTtcbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaEFjY2Vzc0Vycm9yKHJvdXRlLCBleHByZXNzaW9uKSB7XG4gICAgY29uc3QgcHJlZml4ID0gcm91dGUgPyBgUm91dGUgXCIke3JvdXRlfVwiIGAgOiAnVGhpcyByb3V0ZSAnO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGAke3ByZWZpeH11c2VkICR7ZXhwcmVzc2lvbn0uIGAgKyBgXFxgc2VhcmNoUGFyYW1zXFxgIHNob3VsZCBiZSBhd2FpdGVkIGJlZm9yZSB1c2luZyBpdHMgcHJvcGVydGllcy4gYCArIGBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9zeW5jLWR5bmFtaWMtYXBpc2ApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiRTI0OVwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVJbmNvbXBsZXRlRW51bWVyYXRpb25FcnJvcihyb3V0ZSwgZXhwcmVzc2lvbiwgbWlzc2luZ1Byb3BlcnRpZXMpIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBzZWFyY2hQYXJhbXNcXGAgc2hvdWxkIGJlIGF3YWl0ZWQgYmVmb3JlIHVzaW5nIGl0cyBwcm9wZXJ0aWVzLiBgICsgYFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB3ZXJlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBlbnVtZXJhdGlvbiBgICsgYGJlY2F1c2UgdGhleSBjb25mbGljdCB3aXRoIGJ1aWx0aW4gb3Igd2VsbC1rbm93biBwcm9wZXJ0eSBuYW1lczogYCArIGAke2Rlc2NyaWJlTGlzdE9mUHJvcGVydHlOYW1lcyhtaXNzaW5nUHJvcGVydGllcyl9LiBgICsgYExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3N5bmMtZHluYW1pYy1hcGlzYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMlwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBkZXNjcmliZUxpc3RPZlByb3BlcnR5TmFtZXMocHJvcGVydGllcykge1xuICAgIHN3aXRjaChwcm9wZXJ0aWVzLmxlbmd0aCl7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCBkZXNjcmliZUxpc3RPZlByb3BlcnR5TmFtZXMgdG8gYmUgY2FsbGVkIHdpdGggYSBub24tZW1wdHkgbGlzdCBvZiBzdHJpbmdzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNTMxXCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIGBcXGAke3Byb3BlcnRpZXNbMF19XFxgYDtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIGBcXGAke3Byb3BlcnRpZXNbMF19XFxgIGFuZCBcXGAke3Byb3BlcnRpZXNbMV19XFxgYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSAnJztcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSBgXFxgJHtwcm9wZXJ0aWVzW2ldfVxcYCwgYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYCwgYW5kIFxcYCR7cHJvcGVydGllc1twcm9wZXJ0aWVzLmxlbmd0aCAtIDFdfVxcYGA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VhcmNoLXBhcmFtcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/search-params.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/request/utils.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/server/request/utils.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isRequestAPICallableInsideAfter: function() {\n return isRequestAPICallableInsideAfter;\n },\n throwForSearchParamsAccessInUseCache: function() {\n return throwForSearchParamsAccessInUseCache;\n },\n throwWithStaticGenerationBailoutError: function() {\n return throwWithStaticGenerationBailoutError;\n },\n throwWithStaticGenerationBailoutErrorWithDynamicError: function() {\n return throwWithStaticGenerationBailoutErrorWithDynamicError;\n }\n});\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _aftertaskasyncstorageexternal = __webpack_require__(/*! ../app-render/after-task-async-storage.external */ \"../app-render/after-task-async-storage.external\");\nfunction throwWithStaticGenerationBailoutError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E576\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E543\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwForSearchParamsAccessInUseCache(workStore, constructorOpt) {\n const error = Object.defineProperty(new Error(`Route ${workStore.route} used \"searchParams\" inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \"searchParams\" outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), \"__NEXT_ERROR_CODE\", {\n value: \"E779\",\n enumerable: false,\n configurable: true\n });\n Error.captureStackTrace(error, constructorOpt);\n workStore.invalidDynamicUsageError ??= error;\n throw error;\n}\nfunction isRequestAPICallableInsideAfter() {\n const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore();\n return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action';\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQW9DZ0JBLCtCQUErQjtlQUEvQkE7O0lBZEFDLG9DQUFvQztlQUFwQ0E7O0lBbEJBQyxxQ0FBcUM7ZUFBckNBOztJQVNBQyxxREFBcUQ7ZUFBckRBOzs7cURBYnNCOzJEQUNBO0FBRy9CLFNBQVNELHNDQUNkRSxLQUFhLEVBQ2JDLFVBQWtCO0lBRWxCLE1BQU0scUJBRUwsQ0FGSyxJQUFJQyx5QkFBQUEscUJBQXFCLENBQzdCLENBQUMsTUFBTSxFQUFFRixNQUFNLGlEQUFpRCxFQUFFQyxXQUFXLDBIQUEwSCxDQUFDLEdBRHBNO2VBQUE7b0JBQUE7c0JBQUE7SUFFTjtBQUNGO0FBRU8sU0FBU0Ysc0RBQ2RDLEtBQWEsRUFDYkMsVUFBa0I7SUFFbEIsTUFBTSxxQkFFTCxDQUZLLElBQUlDLHlCQUFBQSxxQkFBcUIsQ0FDN0IsQ0FBQyxNQUFNLEVBQUVGLE1BQU0sNEVBQTRFLEVBQUVDLFdBQVcsMEhBQTBILENBQUMsR0FEL047ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0Y7QUFFTyxTQUFTSixxQ0FDZE0sU0FBb0IsRUFDcEJDLGNBQXdCO0lBRXhCLE1BQU1DLFFBQVEscUJBRWIsQ0FGYSxJQUFJQyxNQUNoQixDQUFDLE1BQU0sRUFBRUgsVUFBVUgsS0FBSyxDQUFDLHVYQUF1WCxDQUFDLEdBRHJZO2VBQUE7b0JBQUE7c0JBQUE7SUFFZDtJQUVBTSxNQUFNQyxpQkFBaUIsQ0FBQ0YsT0FBT0Q7SUFDL0JELFVBQVVLLHdCQUF3QixLQUFLSDtJQUV2QyxNQUFNQTtBQUNSO0FBRU8sU0FBU1Q7SUFDZCxNQUFNYSxpQkFBaUJDLCtCQUFBQSxxQkFBcUIsQ0FBQ0MsUUFBUTtJQUNyRCxPQUFPRixDQUFBQSxrQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBZ0JHLGtCQUFBQSxNQUF1QjtBQUNoRCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNlcnZlclxccmVxdWVzdFxcdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGljR2VuQmFpbG91dEVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dCdcbmltcG9ydCB7IGFmdGVyVGFza0FzeW5jU3RvcmFnZSB9IGZyb20gJy4uL2FwcC1yZW5kZXIvYWZ0ZXItdGFzay1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuaW1wb3J0IHR5cGUgeyBXb3JrU3RvcmUgfSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCdcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3IoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSBjb3VsZG4ndCBiZSByZW5kZXJlZCBzdGF0aWNhbGx5IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zdGF0aWMtYW5kLWR5bmFtaWMjZHluYW1pYy1yZW5kZXJpbmdgXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmdcbik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcihcbiAgICBgUm91dGUgJHtyb3V0ZX0gd2l0aCBcXGBkeW5hbWljID0gXCJlcnJvclwiXFxgIGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1hbmQtZHluYW1pYyNkeW5hbWljLXJlbmRlcmluZ2BcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dGb3JTZWFyY2hQYXJhbXNBY2Nlc3NJblVzZUNhY2hlKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgY29uc3RydWN0b3JPcHQ6IEZ1bmN0aW9uXG4pOiBuZXZlciB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgIGBSb3V0ZSAke3dvcmtTdG9yZS5yb3V0ZX0gdXNlZCBcInNlYXJjaFBhcmFtc1wiIGluc2lkZSBcInVzZSBjYWNoZVwiLiBBY2Nlc3NpbmcgZHluYW1pYyByZXF1ZXN0IGRhdGEgaW5zaWRlIGEgY2FjaGUgc2NvcGUgaXMgbm90IHN1cHBvcnRlZC4gSWYgeW91IG5lZWQgc29tZSBzZWFyY2ggcGFyYW1zIGluc2lkZSBhIGNhY2hlZCBmdW5jdGlvbiBhd2FpdCBcInNlYXJjaFBhcmFtc1wiIG91dHNpZGUgb2YgdGhlIGNhY2hlZCBmdW5jdGlvbiBhbmQgcGFzcyBvbmx5IHRoZSByZXF1aXJlZCBzZWFyY2ggcGFyYW1zIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcmVxdWVzdC1pbi11c2UtY2FjaGVgXG4gIClcblxuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgY29uc3RydWN0b3JPcHQpXG4gIHdvcmtTdG9yZS5pbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IgPz89IGVycm9yXG5cbiAgdGhyb3cgZXJyb3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEFQSUNhbGxhYmxlSW5zaWRlQWZ0ZXIoKSB7XG4gIGNvbnN0IGFmdGVyVGFza1N0b3JlID0gYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgcmV0dXJuIGFmdGVyVGFza1N0b3JlPy5yb290VGFza1NwYXduUGhhc2UgPT09ICdhY3Rpb24nXG59XG4iXSwibmFtZXMiOlsiaXNSZXF1ZXN0QVBJQ2FsbGFibGVJbnNpZGVBZnRlciIsInRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSIsInRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3IiLCJ0aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvciIsInJvdXRlIiwiZXhwcmVzc2lvbiIsIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsIndvcmtTdG9yZSIsImNvbnN0cnVjdG9yT3B0IiwiZXJyb3IiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwiaW52YWxpZER5bmFtaWNVc2FnZUVycm9yIiwiYWZ0ZXJUYXNrU3RvcmUiLCJhZnRlclRhc2tBc3luY1N0b3JhZ2UiLCJnZXRTdG9yZSIsInJvb3RUYXNrU3Bhd25QaGFzZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/response-cache/index.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/server/response-cache/index.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return ResponseCache;\n }\n}));\n0 && 0;\nconst _batcher = __webpack_require__(/*! ../../lib/batcher */ \"(rsc)/./node_modules/next/dist/lib/batcher.js\");\nconst _lrucache = __webpack_require__(/*! ../lib/lru-cache */ \"(rsc)/./node_modules/next/dist/server/lib/lru-cache.js\");\nconst _log = __webpack_require__(/*! ../../build/output/log */ \"(rsc)/./node_modules/next/dist/build/output/log.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/server/response-cache/utils.js\");\n_export_star(__webpack_require__(/*! ./types */ \"(rsc)/./node_modules/next/dist/server/response-cache/types.js\"), exports);\nfunction _export_star(from, to) {\n Object.keys(from).forEach(function(k) {\n if (k !== \"default\" && !Object.prototype.hasOwnProperty.call(to, k)) {\n Object.defineProperty(to, k, {\n enumerable: true,\n get: function() {\n return from[k];\n }\n });\n }\n });\n return from;\n}\n/**\n * Parses an environment variable as a positive integer, returning the fallback\n * if the value is missing, not a number, or not positive.\n */ function parsePositiveInt(envValue, fallback) {\n if (!envValue) return fallback;\n const parsed = parseInt(envValue, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n/**\n * Default TTL (in milliseconds) for minimal mode response cache entries.\n * Used for cache hit validation as a fallback for providers that don't\n * send the x-invocation-id header yet.\n *\n * 10 seconds chosen because:\n * - Long enough to dedupe rapid successive requests (e.g., page + data)\n * - Short enough to not serve stale data across unrelated requests\n *\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable.\n */ const DEFAULT_TTL_MS = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL, 10000);\n/**\n * Default maximum number of entries in the response cache.\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable.\n */ const DEFAULT_MAX_SIZE = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE, 150);\n/**\n * Separator used in compound cache keys to join pathname and invocationID.\n * Using null byte (\\0) since it cannot appear in valid URL paths or UUIDs.\n */ const KEY_SEPARATOR = '\\0';\n/**\n * Sentinel value used for TTL-based cache entries (when invocationID is undefined).\n * Chosen to be a clearly reserved marker for internal cache keys.\n */ const TTL_SENTINEL = '__ttl_sentinel__';\n/**\n * Creates a compound cache key from pathname and invocationID.\n */ function createCacheKey(pathname, invocationID) {\n return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`;\n}\n/**\n * Extracts the invocationID from a compound cache key.\n * Returns undefined if the key used TTL_SENTINEL.\n */ function extractInvocationID(compoundKey) {\n const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR);\n if (separatorIndex === -1) return undefined;\n const invocationID = compoundKey.slice(separatorIndex + 1);\n return invocationID === TTL_SENTINEL ? undefined : invocationID;\n}\nclass ResponseCache {\n constructor(minimal_mode, maxSize = DEFAULT_MAX_SIZE, ttl = DEFAULT_TTL_MS){\n this.batcher = _batcher.Batcher.create({\n // Ensure on-demand revalidate doesn't block normal requests, it should be\n // safe to run an on-demand revalidate for the same key as a normal request.\n cacheKeyFn: ({ key, isOnDemandRevalidate })=>`${key}-${isOnDemandRevalidate ? '1' : '0'}`,\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: _scheduler.scheduleOnNextTick\n });\n this.revalidateBatcher = _batcher.Batcher.create({\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: _scheduler.scheduleOnNextTick\n });\n /**\n * Set of invocation IDs that have had cache entries evicted.\n * Used to detect when the cache size may be too small.\n * Bounded to prevent memory growth.\n */ this.evictedInvocationIDs = new Set();\n this.minimal_mode = minimal_mode;\n this.maxSize = maxSize;\n this.ttl = ttl;\n // Create the LRU cache with eviction tracking\n this.cache = new _lrucache.LRUCache(maxSize, undefined, (compoundKey)=>{\n const invocationID = extractInvocationID(compoundKey);\n if (invocationID) {\n // Bound to 100 entries to prevent unbounded memory growth.\n // FIFO eviction is acceptable here because:\n // 1. Invocations are short-lived (single request lifecycle), so older\n // invocations are unlikely to still be active after 100 newer ones\n // 2. This warning mechanism is best-effort for developer guidance—\n // missing occasional eviction warnings doesn't affect correctness\n // 3. If a long-running invocation is somehow evicted and then has\n // another cache entry evicted, it will simply be re-added\n if (this.evictedInvocationIDs.size >= 100) {\n const first = this.evictedInvocationIDs.values().next().value;\n if (first) this.evictedInvocationIDs.delete(first);\n }\n this.evictedInvocationIDs.add(invocationID);\n }\n });\n }\n async get(key, responseGenerator, context) {\n // If there is no key for the cache, we can't possibly look this up in the\n // cache so just return the result of the response generator.\n if (!key) {\n return responseGenerator({\n hasResolved: false,\n previousCacheEntry: null\n });\n }\n // Check minimal mode cache before doing any other work.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n const cachedItem = this.cache.get(cacheKey);\n if (cachedItem) {\n // With invocationID: exact match found - always a hit\n // With TTL mode: must check expiration\n if (context.invocationID !== undefined) {\n return (0, _utils.toResponseCacheEntry)(cachedItem.entry);\n }\n // TTL mode: check expiration\n const now = Date.now();\n if (cachedItem.expiresAt > now) {\n return (0, _utils.toResponseCacheEntry)(cachedItem.entry);\n }\n // TTL expired - clean up\n this.cache.remove(cacheKey);\n }\n // Warn if this invocation had entries evicted - indicates cache may be too small.\n if (context.invocationID && this.evictedInvocationIDs.has(context.invocationID)) {\n (0, _log.warnOnce)(`Response cache entry was evicted for invocation ${context.invocationID}. ` + `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`);\n }\n }\n const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, routeKind, invocationID } = context;\n const response = await this.batcher.batch({\n key,\n isOnDemandRevalidate\n }, (_cacheKey, resolve)=>{\n const promise = this.handleGet(key, responseGenerator, {\n incrementalCache,\n isOnDemandRevalidate,\n isFallback,\n isRoutePPREnabled,\n isPrefetch,\n routeKind,\n invocationID\n }, resolve);\n // we need to ensure background revalidates are\n // passed to waitUntil\n if (waitUntil) {\n waitUntil(promise);\n }\n return promise;\n });\n return (0, _utils.toResponseCacheEntry)(response);\n }\n /**\n * Handles the get request for the response cache.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @param resolve - The resolve function to use to resolve the response cache entry.\n * @returns The response cache entry.\n */ async handleGet(key, responseGenerator, context, resolve) {\n let previousIncrementalCacheEntry = null;\n let resolved = false;\n try {\n // Get the previous cache entry if not in minimal mode\n previousIncrementalCacheEntry = !this.minimal_mode ? await context.incrementalCache.get(key, {\n kind: (0, _utils.routeKindToIncrementalCacheKind)(context.routeKind),\n isRoutePPREnabled: context.isRoutePPREnabled,\n isFallback: context.isFallback\n }) : null;\n if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate) {\n resolve(previousIncrementalCacheEntry);\n resolved = true;\n if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) {\n // The cached value is still valid, so we don't need to update it yet.\n return previousIncrementalCacheEntry;\n }\n }\n // Revalidate the cache entry\n const incrementalResponseCacheEntry = await this.revalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, previousIncrementalCacheEntry !== null && !context.isOnDemandRevalidate, undefined, context.invocationID);\n // Handle null response\n if (!incrementalResponseCacheEntry) {\n // Remove the cache item if it was set so we don't use it again.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n this.cache.remove(cacheKey);\n }\n return null;\n }\n // Resolve for on-demand revalidation or if not already resolved\n if (context.isOnDemandRevalidate && !resolved) {\n return incrementalResponseCacheEntry;\n }\n return incrementalResponseCacheEntry;\n } catch (err) {\n // If we've already resolved the cache entry, we can't reject as we\n // already resolved the cache entry so log the error here.\n if (resolved) {\n console.error(err);\n return null;\n }\n throw err;\n }\n }\n /**\n * Revalidates the cache entry for the given key.\n *\n * @param key - The key to revalidate the cache entry for.\n * @param incrementalCache - The incremental cache to use to revalidate the cache entry.\n * @param isRoutePPREnabled - Whether the route is PPR enabled.\n * @param isFallback - Whether the route is a fallback.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry.\n * @param hasResolved - Whether the response has been resolved.\n * @param waitUntil - Optional function to register background work.\n * @param invocationID - The invocation ID for cache key scoping.\n * @returns The revalidated cache entry.\n */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil, invocationID) {\n return this.revalidateBatcher.batch(key, ()=>{\n const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID);\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise);\n return promise;\n });\n }\n async handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, invocationID) {\n try {\n // Generate the response cache entry using the response generator.\n const responseCacheEntry = await responseGenerator({\n hasResolved,\n previousCacheEntry: previousIncrementalCacheEntry,\n isRevalidating: true\n });\n if (!responseCacheEntry) {\n return null;\n }\n // Convert the response cache entry to an incremental response cache entry.\n const incrementalResponseCacheEntry = await (0, _utils.fromResponseCacheEntry)({\n ...responseCacheEntry,\n isMiss: !previousIncrementalCacheEntry\n });\n // We want to persist the result only if it has a cache control value\n // defined.\n if (incrementalResponseCacheEntry.cacheControl) {\n if (this.minimal_mode) {\n // Set TTL expiration for cache hit validation. Entries are validated\n // by invocationID when available, with TTL as a fallback for providers\n // that don't send x-invocation-id. Memory is managed by LRU eviction.\n const cacheKey = createCacheKey(key, invocationID);\n this.cache.set(cacheKey, {\n entry: incrementalResponseCacheEntry,\n expiresAt: Date.now() + this.ttl\n });\n } else {\n await incrementalCache.set(key, incrementalResponseCacheEntry.value, {\n cacheControl: incrementalResponseCacheEntry.cacheControl,\n isRoutePPREnabled,\n isFallback\n });\n }\n }\n return incrementalResponseCacheEntry;\n } catch (err) {\n // When a path is erroring we automatically re-set the existing cache\n // with new revalidate and expire times to prevent non-stop retrying.\n if (previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.cacheControl) {\n const revalidate = Math.min(Math.max(previousIncrementalCacheEntry.cacheControl.revalidate || 3, 3), 30);\n const expire = previousIncrementalCacheEntry.cacheControl.expire === undefined ? undefined : Math.max(revalidate + 3, previousIncrementalCacheEntry.cacheControl.expire);\n await incrementalCache.set(key, previousIncrementalCacheEntry.value, {\n cacheControl: {\n revalidate: revalidate,\n expire: expire\n },\n isRoutePPREnabled,\n isFallback\n });\n }\n // We haven't resolved yet, so let's throw to indicate an error.\n throw err;\n }\n }\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLDJDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLEtBQUssQ0FBNEI7QUFDakMsaUJBQWlCLG1CQUFPLENBQUMsd0VBQW1CO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLGdGQUFrQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsa0ZBQXdCO0FBQzdDLG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMsOEVBQVM7QUFDaEMsYUFBYSxtQkFBTyxDQUFDLDhFQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTLEVBQUUsY0FBYyxFQUFFLDZCQUE2QjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMkJBQTJCLE1BQU0sSUFBSSxHQUFHLGlDQUFpQztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRkFBc0YscUJBQXFCLDRFQUE0RSxhQUFhO0FBQ3BNO0FBQ0E7QUFDQSxnQkFBZ0Isd0pBQXdKO0FBQ3hLO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJlc3BvbnNlLWNhY2hlXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlQ2FjaGU7XG4gICAgfVxufSk7XG4wICYmIF9fZXhwb3J0KHJlcXVpcmUoXCIuL3R5cGVzXCIpKTtcbmNvbnN0IF9iYXRjaGVyID0gcmVxdWlyZShcIi4uLy4uL2xpYi9iYXRjaGVyXCIpO1xuY29uc3QgX2xydWNhY2hlID0gcmVxdWlyZShcIi4uL2xpYi9scnUtY2FjaGVcIik7XG5jb25zdCBfbG9nID0gcmVxdWlyZShcIi4uLy4uL2J1aWxkL291dHB1dC9sb2dcIik7XG5jb25zdCBfc2NoZWR1bGVyID0gcmVxdWlyZShcIi4uLy4uL2xpYi9zY2hlZHVsZXJcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbl9leHBvcnRfc3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG5mdW5jdGlvbiBfZXhwb3J0X3N0YXIoZnJvbSwgdG8pIHtcbiAgICBPYmplY3Qua2V5cyhmcm9tKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodG8sIGspKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodG8sIGssIHtcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tW2tdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZyb207XG59XG4vKipcbiAqIFBhcnNlcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyBhIHBvc2l0aXZlIGludGVnZXIsIHJldHVybmluZyB0aGUgZmFsbGJhY2tcbiAqIGlmIHRoZSB2YWx1ZSBpcyBtaXNzaW5nLCBub3QgYSBudW1iZXIsIG9yIG5vdCBwb3NpdGl2ZS5cbiAqLyBmdW5jdGlvbiBwYXJzZVBvc2l0aXZlSW50KGVudlZhbHVlLCBmYWxsYmFjaykge1xuICAgIGlmICghZW52VmFsdWUpIHJldHVybiBmYWxsYmFjaztcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChlbnZWYWx1ZSwgMTApO1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSAmJiBwYXJzZWQgPiAwID8gcGFyc2VkIDogZmFsbGJhY2s7XG59XG4vKipcbiAqIERlZmF1bHQgVFRMIChpbiBtaWxsaXNlY29uZHMpIGZvciBtaW5pbWFsIG1vZGUgcmVzcG9uc2UgY2FjaGUgZW50cmllcy5cbiAqIFVzZWQgZm9yIGNhY2hlIGhpdCB2YWxpZGF0aW9uIGFzIGEgZmFsbGJhY2sgZm9yIHByb3ZpZGVycyB0aGF0IGRvbid0XG4gKiBzZW5kIHRoZSB4LWludm9jYXRpb24taWQgaGVhZGVyIHlldC5cbiAqXG4gKiAxMCBzZWNvbmRzIGNob3NlbiBiZWNhdXNlOlxuICogLSBMb25nIGVub3VnaCB0byBkZWR1cGUgcmFwaWQgc3VjY2Vzc2l2ZSByZXF1ZXN0cyAoZS5nLiwgcGFnZSArIGRhdGEpXG4gKiAtIFNob3J0IGVub3VnaCB0byBub3Qgc2VydmUgc3RhbGUgZGF0YSBhY3Jvc3MgdW5yZWxhdGVkIHJlcXVlc3RzXG4gKlxuICogQ2FuIGJlIGNvbmZpZ3VyZWQgdmlhIGBORVhUX1BSSVZBVEVfUkVTUE9OU0VfQ0FDSEVfVFRMYCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqLyBjb25zdCBERUZBVUxUX1RUTF9NUyA9IHBhcnNlUG9zaXRpdmVJbnQocHJvY2Vzcy5lbnYuTkVYVF9QUklWQVRFX1JFU1BPTlNFX0NBQ0hFX1RUTCwgMTAwMDApO1xuLyoqXG4gKiBEZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHJlc3BvbnNlIGNhY2hlLlxuICogQ2FuIGJlIGNvbmZpZ3VyZWQgdmlhIGBORVhUX1BSSVZBVEVfUkVTUE9OU0VfQ0FDSEVfTUFYX1NJWkVgIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovIGNvbnN0IERFRkFVTFRfTUFYX1NJWkUgPSBwYXJzZVBvc2l0aXZlSW50KHByb2Nlc3MuZW52Lk5FWFRfUFJJVkFURV9SRVNQT05TRV9DQUNIRV9NQVhfU0laRSwgMTUwKTtcbi8qKlxuICogU2VwYXJhdG9yIHVzZWQgaW4gY29tcG91bmQgY2FjaGUga2V5cyB0byBqb2luIHBhdGhuYW1lIGFuZCBpbnZvY2F0aW9uSUQuXG4gKiBVc2luZyBudWxsIGJ5dGUgKFxcMCkgc2luY2UgaXQgY2Fubm90IGFwcGVhciBpbiB2YWxpZCBVUkwgcGF0aHMgb3IgVVVJRHMuXG4gKi8gY29uc3QgS0VZX1NFUEFSQVRPUiA9ICdcXDAnO1xuLyoqXG4gKiBTZW50aW5lbCB2YWx1ZSB1c2VkIGZvciBUVEwtYmFzZWQgY2FjaGUgZW50cmllcyAod2hlbiBpbnZvY2F0aW9uSUQgaXMgdW5kZWZpbmVkKS5cbiAqIENob3NlbiB0byBiZSBhIGNsZWFybHkgcmVzZXJ2ZWQgbWFya2VyIGZvciBpbnRlcm5hbCBjYWNoZSBrZXlzLlxuICovIGNvbnN0IFRUTF9TRU5USU5FTCA9ICdfX3R0bF9zZW50aW5lbF9fJztcbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBvdW5kIGNhY2hlIGtleSBmcm9tIHBhdGhuYW1lIGFuZCBpbnZvY2F0aW9uSUQuXG4gKi8gZnVuY3Rpb24gY3JlYXRlQ2FjaGVLZXkocGF0aG5hbWUsIGludm9jYXRpb25JRCkge1xuICAgIHJldHVybiBgJHtwYXRobmFtZX0ke0tFWV9TRVBBUkFUT1J9JHtpbnZvY2F0aW9uSUQgPz8gVFRMX1NFTlRJTkVMfWA7XG59XG4vKipcbiAqIEV4dHJhY3RzIHRoZSBpbnZvY2F0aW9uSUQgZnJvbSBhIGNvbXBvdW5kIGNhY2hlIGtleS5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBrZXkgdXNlZCBUVExfU0VOVElORUwuXG4gKi8gZnVuY3Rpb24gZXh0cmFjdEludm9jYXRpb25JRChjb21wb3VuZEtleSkge1xuICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gY29tcG91bmRLZXkubGFzdEluZGV4T2YoS0VZX1NFUEFSQVRPUik7XG4gICAgaWYgKHNlcGFyYXRvckluZGV4ID09PSAtMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpbnZvY2F0aW9uSUQgPSBjb21wb3VuZEtleS5zbGljZShzZXBhcmF0b3JJbmRleCArIDEpO1xuICAgIHJldHVybiBpbnZvY2F0aW9uSUQgPT09IFRUTF9TRU5USU5FTCA/IHVuZGVmaW5lZCA6IGludm9jYXRpb25JRDtcbn1cbmNsYXNzIFJlc3BvbnNlQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yKG1pbmltYWxfbW9kZSwgbWF4U2l6ZSA9IERFRkFVTFRfTUFYX1NJWkUsIHR0bCA9IERFRkFVTFRfVFRMX01TKXtcbiAgICAgICAgdGhpcy5iYXRjaGVyID0gX2JhdGNoZXIuQmF0Y2hlci5jcmVhdGUoe1xuICAgICAgICAgICAgLy8gRW5zdXJlIG9uLWRlbWFuZCByZXZhbGlkYXRlIGRvZXNuJ3QgYmxvY2sgbm9ybWFsIHJlcXVlc3RzLCBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgIC8vIHNhZmUgdG8gcnVuIGFuIG9uLWRlbWFuZCByZXZhbGlkYXRlIGZvciB0aGUgc2FtZSBrZXkgYXMgYSBub3JtYWwgcmVxdWVzdC5cbiAgICAgICAgICAgIGNhY2hlS2V5Rm46ICh7IGtleSwgaXNPbkRlbWFuZFJldmFsaWRhdGUgfSk9PmAke2tleX0tJHtpc09uRGVtYW5kUmV2YWxpZGF0ZSA/ICcxJyA6ICcwJ31gLFxuICAgICAgICAgICAgLy8gV2Ugd2FpdCB0byBkbyBhbnkgYXN5bmMgd29yayB1bnRpbCBhZnRlciB3ZSd2ZSBhZGRlZCBvdXIgcHJvbWlzZSB0b1xuICAgICAgICAgICAgLy8gYHBlbmRpbmdSZXNwb25zZXNgIHRvIGVuc3VyZSB0aGF0IGFueSBhbnkgb3RoZXIgY2FsbHMgd2lsbCByZXVzZSB0aGVcbiAgICAgICAgICAgIC8vIHNhbWUgcHJvbWlzZSB1bnRpbCB3ZSd2ZSBmdWxseSBmaW5pc2hlZCBvdXIgd29yay5cbiAgICAgICAgICAgIHNjaGVkdWxlckZuOiBfc2NoZWR1bGVyLnNjaGVkdWxlT25OZXh0VGlja1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXZhbGlkYXRlQmF0Y2hlciA9IF9iYXRjaGVyLkJhdGNoZXIuY3JlYXRlKHtcbiAgICAgICAgICAgIC8vIFdlIHdhaXQgdG8gZG8gYW55IGFzeW5jIHdvcmsgdW50aWwgYWZ0ZXIgd2UndmUgYWRkZWQgb3VyIHByb21pc2UgdG9cbiAgICAgICAgICAgIC8vIGBwZW5kaW5nUmVzcG9uc2VzYCB0byBlbnN1cmUgdGhhdCBhbnkgYW55IG90aGVyIGNhbGxzIHdpbGwgcmV1c2UgdGhlXG4gICAgICAgICAgICAvLyBzYW1lIHByb21pc2UgdW50aWwgd2UndmUgZnVsbHkgZmluaXNoZWQgb3VyIHdvcmsuXG4gICAgICAgICAgICBzY2hlZHVsZXJGbjogX3NjaGVkdWxlci5zY2hlZHVsZU9uTmV4dFRpY2tcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgKiBTZXQgb2YgaW52b2NhdGlvbiBJRHMgdGhhdCBoYXZlIGhhZCBjYWNoZSBlbnRyaWVzIGV2aWN0ZWQuXG4gICAqIFVzZWQgdG8gZGV0ZWN0IHdoZW4gdGhlIGNhY2hlIHNpemUgbWF5IGJlIHRvbyBzbWFsbC5cbiAgICogQm91bmRlZCB0byBwcmV2ZW50IG1lbW9yeSBncm93dGguXG4gICAqLyB0aGlzLmV2aWN0ZWRJbnZvY2F0aW9uSURzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLm1pbmltYWxfbW9kZSA9IG1pbmltYWxfbW9kZTtcbiAgICAgICAgdGhpcy5tYXhTaXplID0gbWF4U2l6ZTtcbiAgICAgICAgdGhpcy50dGwgPSB0dGw7XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgTFJVIGNhY2hlIHdpdGggZXZpY3Rpb24gdHJhY2tpbmdcbiAgICAgICAgdGhpcy5jYWNoZSA9IG5ldyBfbHJ1Y2FjaGUuTFJVQ2FjaGUobWF4U2l6ZSwgdW5kZWZpbmVkLCAoY29tcG91bmRLZXkpPT57XG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uSUQgPSBleHRyYWN0SW52b2NhdGlvbklEKGNvbXBvdW5kS2V5KTtcbiAgICAgICAgICAgIGlmIChpbnZvY2F0aW9uSUQpIHtcbiAgICAgICAgICAgICAgICAvLyBCb3VuZCB0byAxMDAgZW50cmllcyB0byBwcmV2ZW50IHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoLlxuICAgICAgICAgICAgICAgIC8vIEZJRk8gZXZpY3Rpb24gaXMgYWNjZXB0YWJsZSBoZXJlIGJlY2F1c2U6XG4gICAgICAgICAgICAgICAgLy8gMS4gSW52b2NhdGlvbnMgYXJlIHNob3J0LWxpdmVkIChzaW5nbGUgcmVxdWVzdCBsaWZlY3ljbGUpLCBzbyBvbGRlclxuICAgICAgICAgICAgICAgIC8vICAgIGludm9jYXRpb25zIGFyZSB1bmxpa2VseSB0byBzdGlsbCBiZSBhY3RpdmUgYWZ0ZXIgMTAwIG5ld2VyIG9uZXNcbiAgICAgICAgICAgICAgICAvLyAyLiBUaGlzIHdhcm5pbmcgbWVjaGFuaXNtIGlzIGJlc3QtZWZmb3J0IGZvciBkZXZlbG9wZXIgZ3VpZGFuY2XigJRcbiAgICAgICAgICAgICAgICAvLyAgICBtaXNzaW5nIG9jY2FzaW9uYWwgZXZpY3Rpb24gd2FybmluZ3MgZG9lc24ndCBhZmZlY3QgY29ycmVjdG5lc3NcbiAgICAgICAgICAgICAgICAvLyAzLiBJZiBhIGxvbmctcnVubmluZyBpbnZvY2F0aW9uIGlzIHNvbWVob3cgZXZpY3RlZCBhbmQgdGhlbiBoYXNcbiAgICAgICAgICAgICAgICAvLyAgICBhbm90aGVyIGNhY2hlIGVudHJ5IGV2aWN0ZWQsIGl0IHdpbGwgc2ltcGx5IGJlIHJlLWFkZGVkXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXZpY3RlZEludm9jYXRpb25JRHMuc2l6ZSA+PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmV2aWN0ZWRJbnZvY2F0aW9uSURzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0KSB0aGlzLmV2aWN0ZWRJbnZvY2F0aW9uSURzLmRlbGV0ZShmaXJzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZXZpY3RlZEludm9jYXRpb25JRHMuYWRkKGludm9jYXRpb25JRCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBnZXQoa2V5LCByZXNwb25zZUdlbmVyYXRvciwgY29udGV4dCkge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBrZXkgZm9yIHRoZSBjYWNoZSwgd2UgY2FuJ3QgcG9zc2libHkgbG9vayB0aGlzIHVwIGluIHRoZVxuICAgICAgICAvLyBjYWNoZSBzbyBqdXN0IHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSByZXNwb25zZSBnZW5lcmF0b3IuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIGhhc1Jlc29sdmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwcmV2aW91c0NhY2hlRW50cnk6IG51bGxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIG1pbmltYWwgbW9kZSBjYWNoZSBiZWZvcmUgZG9pbmcgYW55IG90aGVyIHdvcmsuXG4gICAgICAgIGlmICh0aGlzLm1pbmltYWxfbW9kZSkge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVDYWNoZUtleShrZXksIGNvbnRleHQuaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIC8vIFdpdGggaW52b2NhdGlvbklEOiBleGFjdCBtYXRjaCBmb3VuZCAtIGFsd2F5cyBhIGhpdFxuICAgICAgICAgICAgICAgIC8vIFdpdGggVFRMIG1vZGU6IG11c3QgY2hlY2sgZXhwaXJhdGlvblxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0Lmludm9jYXRpb25JRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX3V0aWxzLnRvUmVzcG9uc2VDYWNoZUVudHJ5KShjYWNoZWRJdGVtLmVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVFRMIG1vZGU6IGNoZWNrIGV4cGlyYXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZWRJdGVtLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF91dGlscy50b1Jlc3BvbnNlQ2FjaGVFbnRyeSkoY2FjaGVkSXRlbS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRUTCBleHBpcmVkIC0gY2xlYW4gdXBcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnJlbW92ZShjYWNoZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXYXJuIGlmIHRoaXMgaW52b2NhdGlvbiBoYWQgZW50cmllcyBldmljdGVkIC0gaW5kaWNhdGVzIGNhY2hlIG1heSBiZSB0b28gc21hbGwuXG4gICAgICAgICAgICBpZiAoY29udGV4dC5pbnZvY2F0aW9uSUQgJiYgdGhpcy5ldmljdGVkSW52b2NhdGlvbklEcy5oYXMoY29udGV4dC5pbnZvY2F0aW9uSUQpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF9sb2cud2Fybk9uY2UpKGBSZXNwb25zZSBjYWNoZSBlbnRyeSB3YXMgZXZpY3RlZCBmb3IgaW52b2NhdGlvbiAke2NvbnRleHQuaW52b2NhdGlvbklEfS4gYCArIGBDb25zaWRlciBpbmNyZWFzaW5nIE5FWFRfUFJJVkFURV9SRVNQT05TRV9DQUNIRV9NQVhfU0laRSAoY3VycmVudDogJHt0aGlzLm1heFNpemV9KS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGluY3JlbWVudGFsQ2FjaGUsIGlzT25EZW1hbmRSZXZhbGlkYXRlID0gZmFsc2UsIGlzRmFsbGJhY2sgPSBmYWxzZSwgaXNSb3V0ZVBQUkVuYWJsZWQgPSBmYWxzZSwgaXNQcmVmZXRjaCA9IGZhbHNlLCB3YWl0VW50aWwsIHJvdXRlS2luZCwgaW52b2NhdGlvbklEIH0gPSBjb250ZXh0O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYmF0Y2hlci5iYXRjaCh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZVxuICAgICAgICB9LCAoX2NhY2hlS2V5LCByZXNvbHZlKT0+e1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuaGFuZGxlR2V0KGtleSwgcmVzcG9uc2VHZW5lcmF0b3IsIHtcbiAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbENhY2hlLFxuICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgIGlzRmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNQcmVmZXRjaCxcbiAgICAgICAgICAgICAgICByb3V0ZUtpbmQsXG4gICAgICAgICAgICAgICAgaW52b2NhdGlvbklEXG4gICAgICAgICAgICB9LCByZXNvbHZlKTtcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZW5zdXJlIGJhY2tncm91bmQgcmV2YWxpZGF0ZXMgYXJlXG4gICAgICAgICAgICAvLyBwYXNzZWQgdG8gd2FpdFVudGlsXG4gICAgICAgICAgICBpZiAod2FpdFVudGlsKSB7XG4gICAgICAgICAgICAgICAgd2FpdFVudGlsKHByb21pc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKDAsIF91dGlscy50b1Jlc3BvbnNlQ2FjaGVFbnRyeSkocmVzcG9uc2UpO1xuICAgIH1cbiAgICAvKipcbiAgICogSGFuZGxlcyB0aGUgZ2V0IHJlcXVlc3QgZm9yIHRoZSByZXNwb25zZSBjYWNoZS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gZ2V0IHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeSBmb3IuXG4gICAqIEBwYXJhbSByZXNwb25zZUdlbmVyYXRvciAtIFRoZSByZXNwb25zZSBnZW5lcmF0b3IgdG8gdXNlIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeS5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIGdldCByZXF1ZXN0LlxuICAgKiBAcGFyYW0gcmVzb2x2ZSAtIFRoZSByZXNvbHZlIGZ1bmN0aW9uIHRvIHVzZSB0byByZXNvbHZlIHRoZSByZXNwb25zZSBjYWNoZSBlbnRyeS5cbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGNhY2hlIGVudHJ5LlxuICAgKi8gYXN5bmMgaGFuZGxlR2V0KGtleSwgcmVzcG9uc2VHZW5lcmF0b3IsIGNvbnRleHQsIHJlc29sdmUpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5ID0gbnVsbDtcbiAgICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGNhY2hlIGVudHJ5IGlmIG5vdCBpbiBtaW5pbWFsIG1vZGVcbiAgICAgICAgICAgIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5ID0gIXRoaXMubWluaW1hbF9tb2RlID8gYXdhaXQgY29udGV4dC5pbmNyZW1lbnRhbENhY2hlLmdldChrZXksIHtcbiAgICAgICAgICAgICAgICBraW5kOiAoMCwgX3V0aWxzLnJvdXRlS2luZFRvSW5jcmVtZW50YWxDYWNoZUtpbmQpKGNvbnRleHQucm91dGVLaW5kKSxcbiAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZDogY29udGV4dC5pc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBpc0ZhbGxiYWNrOiBjb250ZXh0LmlzRmFsbGJhY2tcbiAgICAgICAgICAgIH0pIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSAmJiAhY29udGV4dC5pc09uRGVtYW5kUmV2YWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LmlzU3RhbGUgfHwgY29udGV4dC5pc1ByZWZldGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWNoZWQgdmFsdWUgaXMgc3RpbGwgdmFsaWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlIGl0IHlldC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJldmFsaWRhdGUgdGhlIGNhY2hlIGVudHJ5XG4gICAgICAgICAgICBjb25zdCBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeSA9IGF3YWl0IHRoaXMucmV2YWxpZGF0ZShrZXksIGNvbnRleHQuaW5jcmVtZW50YWxDYWNoZSwgY29udGV4dC5pc1JvdXRlUFBSRW5hYmxlZCwgY29udGV4dC5pc0ZhbGxiYWNrLCByZXNwb25zZUdlbmVyYXRvciwgcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnksIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5ICE9PSBudWxsICYmICFjb250ZXh0LmlzT25EZW1hbmRSZXZhbGlkYXRlLCB1bmRlZmluZWQsIGNvbnRleHQuaW52b2NhdGlvbklEKTtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBudWxsIHJlc3BvbnNlXG4gICAgICAgICAgICBpZiAoIWluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWNoZSBpdGVtIGlmIGl0IHdhcyBzZXQgc28gd2UgZG9uJ3QgdXNlIGl0IGFnYWluLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbmltYWxfbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZUNhY2hlS2V5KGtleSwgY29udGV4dC5pbnZvY2F0aW9uSUQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnJlbW92ZShjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVzb2x2ZSBmb3Igb24tZGVtYW5kIHJldmFsaWRhdGlvbiBvciBpZiBub3QgYWxyZWFkeSByZXNvbHZlZFxuICAgICAgICAgICAgaWYgKGNvbnRleHQuaXNPbkRlbWFuZFJldmFsaWRhdGUgJiYgIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5O1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgcmVzb2x2ZWQgdGhlIGNhY2hlIGVudHJ5LCB3ZSBjYW4ndCByZWplY3QgYXMgd2VcbiAgICAgICAgICAgIC8vIGFscmVhZHkgcmVzb2x2ZWQgdGhlIGNhY2hlIGVudHJ5IHNvIGxvZyB0aGUgZXJyb3IgaGVyZS5cbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogUmV2YWxpZGF0ZXMgdGhlIGNhY2hlIGVudHJ5IGZvciB0aGUgZ2l2ZW4ga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byByZXZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IuXG4gICAqIEBwYXJhbSBpbmNyZW1lbnRhbENhY2hlIC0gVGhlIGluY3JlbWVudGFsIGNhY2hlIHRvIHVzZSB0byByZXZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeS5cbiAgICogQHBhcmFtIGlzUm91dGVQUFJFbmFibGVkIC0gV2hldGhlciB0aGUgcm91dGUgaXMgUFBSIGVuYWJsZWQuXG4gICAqIEBwYXJhbSBpc0ZhbGxiYWNrIC0gV2hldGhlciB0aGUgcm91dGUgaXMgYSBmYWxsYmFjay5cbiAgICogQHBhcmFtIHJlc3BvbnNlR2VuZXJhdG9yIC0gVGhlIHJlc3BvbnNlIGdlbmVyYXRvciB0byB1c2UgdG8gZ2VuZXJhdGUgdGhlIHJlc3BvbnNlIGNhY2hlIGVudHJ5LlxuICAgKiBAcGFyYW0gcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkgLSBUaGUgcHJldmlvdXMgY2FjaGUgZW50cnkgdG8gdXNlIHRvIHJldmFsaWRhdGUgdGhlIGNhY2hlIGVudHJ5LlxuICAgKiBAcGFyYW0gaGFzUmVzb2x2ZWQgLSBXaGV0aGVyIHRoZSByZXNwb25zZSBoYXMgYmVlbiByZXNvbHZlZC5cbiAgICogQHBhcmFtIHdhaXRVbnRpbCAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGJhY2tncm91bmQgd29yay5cbiAgICogQHBhcmFtIGludm9jYXRpb25JRCAtIFRoZSBpbnZvY2F0aW9uIElEIGZvciBjYWNoZSBrZXkgc2NvcGluZy5cbiAgICogQHJldHVybnMgVGhlIHJldmFsaWRhdGVkIGNhY2hlIGVudHJ5LlxuICAgKi8gYXN5bmMgcmV2YWxpZGF0ZShrZXksIGluY3JlbWVudGFsQ2FjaGUsIGlzUm91dGVQUFJFbmFibGVkLCBpc0ZhbGxiYWNrLCByZXNwb25zZUdlbmVyYXRvciwgcHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnksIGhhc1Jlc29sdmVkLCB3YWl0VW50aWwsIGludm9jYXRpb25JRCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZhbGlkYXRlQmF0Y2hlci5iYXRjaChrZXksICgpPT57XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5oYW5kbGVSZXZhbGlkYXRlKGtleSwgaW5jcmVtZW50YWxDYWNoZSwgaXNSb3V0ZVBQUkVuYWJsZWQsIGlzRmFsbGJhY2ssIHJlc3BvbnNlR2VuZXJhdG9yLCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSwgaGFzUmVzb2x2ZWQsIGludm9jYXRpb25JRCk7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSBiYWNrZ3JvdW5kIHJldmFsaWRhdGVzIGFyZSBwYXNzZWQgdG8gd2FpdFVudGlsLlxuICAgICAgICAgICAgaWYgKHdhaXRVbnRpbCkgd2FpdFVudGlsKHByb21pc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVSZXZhbGlkYXRlKGtleSwgaW5jcmVtZW50YWxDYWNoZSwgaXNSb3V0ZVBQUkVuYWJsZWQsIGlzRmFsbGJhY2ssIHJlc3BvbnNlR2VuZXJhdG9yLCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSwgaGFzUmVzb2x2ZWQsIGludm9jYXRpb25JRCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHJlc3BvbnNlIGNhY2hlIGVudHJ5IHVzaW5nIHRoZSByZXNwb25zZSBnZW5lcmF0b3IuXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZUNhY2hlRW50cnkgPSBhd2FpdCByZXNwb25zZUdlbmVyYXRvcih7XG4gICAgICAgICAgICAgICAgaGFzUmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNDYWNoZUVudHJ5OiBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeSxcbiAgICAgICAgICAgICAgICBpc1JldmFsaWRhdGluZzogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlQ2FjaGVFbnRyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgcmVzcG9uc2UgY2FjaGUgZW50cnkgdG8gYW4gaW5jcmVtZW50YWwgcmVzcG9uc2UgY2FjaGUgZW50cnkuXG4gICAgICAgICAgICBjb25zdCBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeSA9IGF3YWl0ICgwLCBfdXRpbHMuZnJvbVJlc3BvbnNlQ2FjaGVFbnRyeSkoe1xuICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlQ2FjaGVFbnRyeSxcbiAgICAgICAgICAgICAgICBpc01pc3M6ICFwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBXZSB3YW50IHRvIHBlcnNpc3QgdGhlIHJlc3VsdCBvbmx5IGlmIGl0IGhhcyBhIGNhY2hlIGNvbnRyb2wgdmFsdWVcbiAgICAgICAgICAgIC8vIGRlZmluZWQuXG4gICAgICAgICAgICBpZiAoaW5jcmVtZW50YWxSZXNwb25zZUNhY2hlRW50cnkuY2FjaGVDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluaW1hbF9tb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBUVEwgZXhwaXJhdGlvbiBmb3IgY2FjaGUgaGl0IHZhbGlkYXRpb24uIEVudHJpZXMgYXJlIHZhbGlkYXRlZFxuICAgICAgICAgICAgICAgICAgICAvLyBieSBpbnZvY2F0aW9uSUQgd2hlbiBhdmFpbGFibGUsIHdpdGggVFRMIGFzIGEgZmFsbGJhY2sgZm9yIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGRvbid0IHNlbmQgeC1pbnZvY2F0aW9uLWlkLiBNZW1vcnkgaXMgbWFuYWdlZCBieSBMUlUgZXZpY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkoa2V5LCBpbnZvY2F0aW9uSUQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnNldChjYWNoZUtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnk6IGluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdGhpcy50dGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgaW5jcmVtZW50YWxDYWNoZS5zZXQoa2V5LCBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeS52YWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBpbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluY3JlbWVudGFsUmVzcG9uc2VDYWNoZUVudHJ5O1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gYSBwYXRoIGlzIGVycm9yaW5nIHdlIGF1dG9tYXRpY2FsbHkgcmUtc2V0IHRoZSBleGlzdGluZyBjYWNoZVxuICAgICAgICAgICAgLy8gd2l0aCBuZXcgcmV2YWxpZGF0ZSBhbmQgZXhwaXJlIHRpbWVzIHRvIHByZXZlbnQgbm9uLXN0b3AgcmV0cnlpbmcuXG4gICAgICAgICAgICBpZiAocHJldmlvdXNJbmNyZW1lbnRhbENhY2hlRW50cnkgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LmNhY2hlQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldmFsaWRhdGUgPSBNYXRoLm1pbihNYXRoLm1heChwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSB8fCAzLCAzKSwgMzApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyZSA9IHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LmNhY2hlQ29udHJvbC5leHBpcmUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IE1hdGgubWF4KHJldmFsaWRhdGUgKyAzLCBwcmV2aW91c0luY3JlbWVudGFsQ2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wuZXhwaXJlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBpbmNyZW1lbnRhbENhY2hlLnNldChrZXksIHByZXZpb3VzSW5jcmVtZW50YWxDYWNoZUVudHJ5LnZhbHVlLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogcmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogZXhwaXJlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlzUm91dGVQUFJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICBpc0ZhbGxiYWNrXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBoYXZlbid0IHJlc29sdmVkIHlldCwgc28gbGV0J3MgdGhyb3cgdG8gaW5kaWNhdGUgYW4gZXJyb3IuXG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/index.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/response-cache/types.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/server/response-cache/types.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n CachedRouteKind: function() {\n return CachedRouteKind;\n },\n IncrementalCacheKind: function() {\n return IncrementalCacheKind;\n }\n});\nvar CachedRouteKind = /*#__PURE__*/ function(CachedRouteKind) {\n CachedRouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n CachedRouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n CachedRouteKind[\"PAGES\"] = \"PAGES\";\n CachedRouteKind[\"FETCH\"] = \"FETCH\";\n CachedRouteKind[\"REDIRECT\"] = \"REDIRECT\";\n CachedRouteKind[\"IMAGE\"] = \"IMAGE\";\n return CachedRouteKind;\n}({});\nvar IncrementalCacheKind = /*#__PURE__*/ function(IncrementalCacheKind) {\n IncrementalCacheKind[\"APP_PAGE\"] = \"APP_PAGE\";\n IncrementalCacheKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n IncrementalCacheKind[\"PAGES\"] = \"PAGES\";\n IncrementalCacheKind[\"FETCH\"] = \"FETCH\";\n IncrementalCacheKind[\"IMAGE\"] = \"IMAGE\";\n return IncrementalCacheKind;\n}({});\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS90eXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUoiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccmVzcG9uc2UtY2FjaGVcXHR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgQ2FjaGVkUm91dGVLaW5kOiBudWxsLFxuICAgIEluY3JlbWVudGFsQ2FjaGVLaW5kOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIENhY2hlZFJvdXRlS2luZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBDYWNoZWRSb3V0ZUtpbmQ7XG4gICAgfSxcbiAgICBJbmNyZW1lbnRhbENhY2hlS2luZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBJbmNyZW1lbnRhbENhY2hlS2luZDtcbiAgICB9XG59KTtcbnZhciBDYWNoZWRSb3V0ZUtpbmQgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKENhY2hlZFJvdXRlS2luZCkge1xuICAgIENhY2hlZFJvdXRlS2luZFtcIkFQUF9QQUdFXCJdID0gXCJBUFBfUEFHRVwiO1xuICAgIENhY2hlZFJvdXRlS2luZFtcIkFQUF9ST1VURVwiXSA9IFwiQVBQX1JPVVRFXCI7XG4gICAgQ2FjaGVkUm91dGVLaW5kW1wiUEFHRVNcIl0gPSBcIlBBR0VTXCI7XG4gICAgQ2FjaGVkUm91dGVLaW5kW1wiRkVUQ0hcIl0gPSBcIkZFVENIXCI7XG4gICAgQ2FjaGVkUm91dGVLaW5kW1wiUkVESVJFQ1RcIl0gPSBcIlJFRElSRUNUXCI7XG4gICAgQ2FjaGVkUm91dGVLaW5kW1wiSU1BR0VcIl0gPSBcIklNQUdFXCI7XG4gICAgcmV0dXJuIENhY2hlZFJvdXRlS2luZDtcbn0oe30pO1xudmFyIEluY3JlbWVudGFsQ2FjaGVLaW5kID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihJbmNyZW1lbnRhbENhY2hlS2luZCkge1xuICAgIEluY3JlbWVudGFsQ2FjaGVLaW5kW1wiQVBQX1BBR0VcIl0gPSBcIkFQUF9QQUdFXCI7XG4gICAgSW5jcmVtZW50YWxDYWNoZUtpbmRbXCJBUFBfUk9VVEVcIl0gPSBcIkFQUF9ST1VURVwiO1xuICAgIEluY3JlbWVudGFsQ2FjaGVLaW5kW1wiUEFHRVNcIl0gPSBcIlBBR0VTXCI7XG4gICAgSW5jcmVtZW50YWxDYWNoZUtpbmRbXCJGRVRDSFwiXSA9IFwiRkVUQ0hcIjtcbiAgICBJbmNyZW1lbnRhbENhY2hlS2luZFtcIklNQUdFXCJdID0gXCJJTUFHRVwiO1xuICAgIHJldHVybiBJbmNyZW1lbnRhbENhY2hlS2luZDtcbn0oe30pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/types.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/response-cache/utils.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/server/response-cache/utils.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fromResponseCacheEntry: function() {\n return fromResponseCacheEntry;\n },\n routeKindToIncrementalCacheKind: function() {\n return routeKindToIncrementalCacheKind;\n },\n toResponseCacheEntry: function() {\n return toResponseCacheEntry;\n }\n});\nconst _types = __webpack_require__(/*! ./types */ \"(rsc)/./node_modules/next/dist/server/response-cache/types.js\");\nconst _renderresult = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../render-result */ \"(rsc)/./node_modules/next/dist/server/render-result.js\"));\nconst _routekind = __webpack_require__(/*! ../route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nasync function fromResponseCacheEntry(cacheEntry) {\n var _cacheEntry_value, _cacheEntry_value1;\n return {\n ...cacheEntry,\n value: ((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) === _types.CachedRouteKind.PAGES ? {\n kind: _types.CachedRouteKind.PAGES,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n pageData: cacheEntry.value.pageData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status\n } : ((_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind) === _types.CachedRouteKind.APP_PAGE ? {\n kind: _types.CachedRouteKind.APP_PAGE,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n postponed: cacheEntry.value.postponed,\n rscData: cacheEntry.value.rscData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status,\n segmentData: cacheEntry.value.segmentData\n } : cacheEntry.value\n };\n}\nasync function toResponseCacheEntry(response) {\n var _response_value, _response_value1;\n if (!response) return null;\n return {\n isMiss: response.isMiss,\n isStale: response.isStale,\n cacheControl: response.cacheControl,\n value: ((_response_value = response.value) == null ? void 0 : _response_value.kind) === _types.CachedRouteKind.PAGES ? {\n kind: _types.CachedRouteKind.PAGES,\n html: _renderresult.default.fromStatic(response.value.html, _constants.HTML_CONTENT_TYPE_HEADER),\n pageData: response.value.pageData,\n headers: response.value.headers,\n status: response.value.status\n } : ((_response_value1 = response.value) == null ? void 0 : _response_value1.kind) === _types.CachedRouteKind.APP_PAGE ? {\n kind: _types.CachedRouteKind.APP_PAGE,\n html: _renderresult.default.fromStatic(response.value.html, _constants.HTML_CONTENT_TYPE_HEADER),\n rscData: response.value.rscData,\n headers: response.value.headers,\n status: response.value.status,\n postponed: response.value.postponed,\n segmentData: response.value.segmentData\n } : response.value\n };\n}\nfunction routeKindToIncrementalCacheKind(routeKind) {\n switch(routeKind){\n case _routekind.RouteKind.PAGES:\n return _types.IncrementalCacheKind.PAGES;\n case _routekind.RouteKind.APP_PAGE:\n return _types.IncrementalCacheKind.APP_PAGE;\n case _routekind.RouteKind.IMAGE:\n return _types.IncrementalCacheKind.IMAGE;\n case _routekind.RouteKind.APP_ROUTE:\n return _types.IncrementalCacheKind.APP_ROUTE;\n case _routekind.RouteKind.PAGES_API:\n // Pages Router API routes are not cached in the incremental cache.\n throw Object.defineProperty(new Error(`Unexpected route kind ${routeKind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E64\",\n enumerable: false,\n configurable: true\n });\n default:\n return routeKind;\n }\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZS91dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGVBQWUsbUJBQU8sQ0FBQyw4RUFBUztBQUNoQyw2REFBNkQsbUJBQU8sQ0FBQyxnRkFBa0I7QUFDdkYsbUJBQW1CLG1CQUFPLENBQUMsMEVBQWU7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsNEVBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJFQUEyRSxVQUFVO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZXNwb25zZS1jYWNoZVxcdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmcm9tUmVzcG9uc2VDYWNoZUVudHJ5OiBudWxsLFxuICAgIHJvdXRlS2luZFRvSW5jcmVtZW50YWxDYWNoZUtpbmQ6IG51bGwsXG4gICAgdG9SZXNwb25zZUNhY2hlRW50cnk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZnJvbVJlc3BvbnNlQ2FjaGVFbnRyeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmcm9tUmVzcG9uc2VDYWNoZUVudHJ5O1xuICAgIH0sXG4gICAgcm91dGVLaW5kVG9JbmNyZW1lbnRhbENhY2hlS2luZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByb3V0ZUtpbmRUb0luY3JlbWVudGFsQ2FjaGVLaW5kO1xuICAgIH0sXG4gICAgdG9SZXNwb25zZUNhY2hlRW50cnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdG9SZXNwb25zZUNhY2hlRW50cnk7XG4gICAgfVxufSk7XG5jb25zdCBfdHlwZXMgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbmNvbnN0IF9yZW5kZXJyZXN1bHQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwiLi4vcmVuZGVyLXJlc3VsdFwiKSk7XG5jb25zdCBfcm91dGVraW5kID0gcmVxdWlyZShcIi4uL3JvdXRlLWtpbmRcIik7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9jb25zdGFudHNcIik7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGZyb21SZXNwb25zZUNhY2hlRW50cnkoY2FjaGVFbnRyeSkge1xuICAgIHZhciBfY2FjaGVFbnRyeV92YWx1ZSwgX2NhY2hlRW50cnlfdmFsdWUxO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlRW50cnksXG4gICAgICAgIHZhbHVlOiAoKF9jYWNoZUVudHJ5X3ZhbHVlID0gY2FjaGVFbnRyeS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZUVudHJ5X3ZhbHVlLmtpbmQpID09PSBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLlBBR0VTID8ge1xuICAgICAgICAgICAga2luZDogX3R5cGVzLkNhY2hlZFJvdXRlS2luZC5QQUdFUyxcbiAgICAgICAgICAgIGh0bWw6IGF3YWl0IGNhY2hlRW50cnkudmFsdWUuaHRtbC50b1VuY2h1bmtlZFN0cmluZyh0cnVlKSxcbiAgICAgICAgICAgIHBhZ2VEYXRhOiBjYWNoZUVudHJ5LnZhbHVlLnBhZ2VEYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogY2FjaGVFbnRyeS52YWx1ZS5oZWFkZXJzLFxuICAgICAgICAgICAgc3RhdHVzOiBjYWNoZUVudHJ5LnZhbHVlLnN0YXR1c1xuICAgICAgICB9IDogKChfY2FjaGVFbnRyeV92YWx1ZTEgPSBjYWNoZUVudHJ5LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRW50cnlfdmFsdWUxLmtpbmQpID09PSBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFID8ge1xuICAgICAgICAgICAga2luZDogX3R5cGVzLkNhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgICAgIGh0bWw6IGF3YWl0IGNhY2hlRW50cnkudmFsdWUuaHRtbC50b1VuY2h1bmtlZFN0cmluZyh0cnVlKSxcbiAgICAgICAgICAgIHBvc3Rwb25lZDogY2FjaGVFbnRyeS52YWx1ZS5wb3N0cG9uZWQsXG4gICAgICAgICAgICByc2NEYXRhOiBjYWNoZUVudHJ5LnZhbHVlLnJzY0RhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiBjYWNoZUVudHJ5LnZhbHVlLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IGNhY2hlRW50cnkudmFsdWUuc3RhdHVzLFxuICAgICAgICAgICAgc2VnbWVudERhdGE6IGNhY2hlRW50cnkudmFsdWUuc2VnbWVudERhdGFcbiAgICAgICAgfSA6IGNhY2hlRW50cnkudmFsdWVcbiAgICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gdG9SZXNwb25zZUNhY2hlRW50cnkocmVzcG9uc2UpIHtcbiAgICB2YXIgX3Jlc3BvbnNlX3ZhbHVlLCBfcmVzcG9uc2VfdmFsdWUxO1xuICAgIGlmICghcmVzcG9uc2UpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzTWlzczogcmVzcG9uc2UuaXNNaXNzLFxuICAgICAgICBpc1N0YWxlOiByZXNwb25zZS5pc1N0YWxlLFxuICAgICAgICBjYWNoZUNvbnRyb2w6IHJlc3BvbnNlLmNhY2hlQ29udHJvbCxcbiAgICAgICAgdmFsdWU6ICgoX3Jlc3BvbnNlX3ZhbHVlID0gcmVzcG9uc2UudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzcG9uc2VfdmFsdWUua2luZCkgPT09IF90eXBlcy5DYWNoZWRSb3V0ZUtpbmQuUEFHRVMgPyB7XG4gICAgICAgICAgICBraW5kOiBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICAgICAgaHRtbDogX3JlbmRlcnJlc3VsdC5kZWZhdWx0LmZyb21TdGF0aWMocmVzcG9uc2UudmFsdWUuaHRtbCwgX2NvbnN0YW50cy5IVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgcGFnZURhdGE6IHJlc3BvbnNlLnZhbHVlLnBhZ2VEYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UudmFsdWUuaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UudmFsdWUuc3RhdHVzXG4gICAgICAgIH0gOiAoKF9yZXNwb25zZV92YWx1ZTEgPSByZXNwb25zZS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXNwb25zZV92YWx1ZTEua2luZCkgPT09IF90eXBlcy5DYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UgPyB7XG4gICAgICAgICAgICBraW5kOiBfdHlwZXMuQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICAgICAgaHRtbDogX3JlbmRlcnJlc3VsdC5kZWZhdWx0LmZyb21TdGF0aWMocmVzcG9uc2UudmFsdWUuaHRtbCwgX2NvbnN0YW50cy5IVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgcnNjRGF0YTogcmVzcG9uc2UudmFsdWUucnNjRGF0YSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLnZhbHVlLmhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnZhbHVlLnN0YXR1cyxcbiAgICAgICAgICAgIHBvc3Rwb25lZDogcmVzcG9uc2UudmFsdWUucG9zdHBvbmVkLFxuICAgICAgICAgICAgc2VnbWVudERhdGE6IHJlc3BvbnNlLnZhbHVlLnNlZ21lbnREYXRhXG4gICAgICAgIH0gOiByZXNwb25zZS52YWx1ZVxuICAgIH07XG59XG5mdW5jdGlvbiByb3V0ZUtpbmRUb0luY3JlbWVudGFsQ2FjaGVLaW5kKHJvdXRlS2luZCkge1xuICAgIHN3aXRjaChyb3V0ZUtpbmQpe1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLlBBR0VTOlxuICAgICAgICAgICAgcmV0dXJuIF90eXBlcy5JbmNyZW1lbnRhbENhY2hlS2luZC5QQUdFUztcbiAgICAgICAgY2FzZSBfcm91dGVraW5kLlJvdXRlS2luZC5BUFBfUEFHRTpcbiAgICAgICAgICAgIHJldHVybiBfdHlwZXMuSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1BBR0U7XG4gICAgICAgIGNhc2UgX3JvdXRla2luZC5Sb3V0ZUtpbmQuSU1BR0U6XG4gICAgICAgICAgICByZXR1cm4gX3R5cGVzLkluY3JlbWVudGFsQ2FjaGVLaW5kLklNQUdFO1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLkFQUF9ST1VURTpcbiAgICAgICAgICAgIHJldHVybiBfdHlwZXMuSW5jcmVtZW50YWxDYWNoZUtpbmQuQVBQX1JPVVRFO1xuICAgICAgICBjYXNlIF9yb3V0ZWtpbmQuUm91dGVLaW5kLlBBR0VTX0FQSTpcbiAgICAgICAgICAgIC8vIFBhZ2VzIFJvdXRlciBBUEkgcm91dGVzIGFyZSBub3QgY2FjaGVkIGluIHRoZSBpbmNyZW1lbnRhbCBjYWNoZS5cbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcm91dGUga2luZCAke3JvdXRlS2luZH1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY0XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiByb3V0ZUtpbmQ7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/response-cache/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-kind.js": /*!*****************************************************!*\ !*** ./node_modules/next/dist/server/route-kind.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RouteKind\", ({\n enumerable: true,\n get: function() {\n return RouteKind;\n }\n}));\nvar RouteKind = /*#__PURE__*/ function(RouteKind) {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */ RouteKind[\"PAGES\"] = \"PAGES\";\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */ RouteKind[\"PAGES_API\"] = \"PAGES_API\";\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */ RouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */ RouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n /**\n * `IMAGE` represents all the images that are generated by `next/image`.\n */ RouteKind[\"IMAGE\"] = \"IMAGE\";\n return RouteKind;\n}({});\n\n//# sourceMappingURL=route-kind.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1raW5kLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsNkNBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQUksRUFBRSxHQUFHO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFJLEVBQUUsR0FBRztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHOztBQUVKIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJvdXRlLWtpbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSb3V0ZUtpbmRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlS2luZDtcbiAgICB9XG59KTtcbnZhciBSb3V0ZUtpbmQgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKFJvdXRlS2luZCkge1xuICAgIC8qKlxuICAgKiBgUEFHRVNgIHJlcHJlc2VudHMgYWxsIHRoZSBSZWFjdCBwYWdlcyB0aGF0IGFyZSB1bmRlciBgcGFnZXMvYC5cbiAgICovIFJvdXRlS2luZFtcIlBBR0VTXCJdID0gXCJQQUdFU1wiO1xuICAgIC8qKlxuICAgKiBgUEFHRVNfQVBJYCByZXByZXNlbnRzIGFsbCB0aGUgQVBJIHJvdXRlcyB1bmRlciBgcGFnZXMvYXBpL2AuXG4gICAqLyBSb3V0ZUtpbmRbXCJQQUdFU19BUElcIl0gPSBcIlBBR0VTX0FQSVwiO1xuICAgIC8qKlxuICAgKiBgQVBQX1BBR0VgIHJlcHJlc2VudHMgYWxsIHRoZSBSZWFjdCBwYWdlcyB0aGF0IGFyZSB1bmRlciBgYXBwL2Agd2l0aCB0aGVcbiAgICogZmlsZW5hbWUgb2YgYHBhZ2Uue2osdH1zeyx4fWAuXG4gICAqLyBSb3V0ZUtpbmRbXCJBUFBfUEFHRVwiXSA9IFwiQVBQX1BBR0VcIjtcbiAgICAvKipcbiAgICogYEFQUF9ST1VURWAgcmVwcmVzZW50cyBhbGwgdGhlIEFQSSByb3V0ZXMgYW5kIG1ldGFkYXRhIHJvdXRlcyB0aGF0IGFyZSB1bmRlciBgYXBwL2Agd2l0aCB0aGVcbiAgICogZmlsZW5hbWUgb2YgYHJvdXRlLntqLHR9c3sseH1gLlxuICAgKi8gUm91dGVLaW5kW1wiQVBQX1JPVVRFXCJdID0gXCJBUFBfUk9VVEVcIjtcbiAgICAvKipcbiAgICogYElNQUdFYCByZXByZXNlbnRzIGFsbCB0aGUgaW1hZ2VzIHRoYXQgYXJlIGdlbmVyYXRlZCBieSBgbmV4dC9pbWFnZWAuXG4gICAqLyBSb3V0ZUtpbmRbXCJJTUFHRVwiXSA9IFwiSU1BR0VcIjtcbiAgICByZXR1cm4gUm91dGVLaW5kO1xufSh7fSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlLWtpbmQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-kind.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js": /*!****************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js ***! \****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].ReactDOM;\n\n//# sourceMappingURL=react-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1kb20uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix3TEFBZ0Y7O0FBRWhGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJvdXRlLW1vZHVsZXNcXGFwcC1wYWdlXFx2ZW5kb3JlZFxccnNjXFxyZWFjdC1kb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1yc2MnXS5SZWFjdERPTTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtZG9tLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js": /*!****************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].ReactJsxDevRuntime;\n\n//# sourceMappingURL=react-jsx-dev-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixrTUFBMEY7O0FBRTFGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJvdXRlLW1vZHVsZXNcXGFwcC1wYWdlXFx2ZW5kb3JlZFxccnNjXFxyZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1yc2MnXS5SZWFjdEpzeERldlJ1bnRpbWU7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWpzeC1kZXYtcnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js": /*!************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].ReactJsxRuntime;\n\n//# sourceMappingURL=react-jsx-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1qc3gtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLCtMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXHZlbmRvcmVkXFxyc2NcXHJlYWN0LWpzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3QtcnNjJ10uUmVhY3RKc3hSdW50aW1lO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC1qc3gtcnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].ReactServerDOMWebpackServer;\n\n//# sourceMappingURL=react-server-dom-webpack-server.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stc2VydmVyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyb3V0ZS1tb2R1bGVzXFxhcHAtcGFnZVxcdmVuZG9yZWRcXHJzY1xccmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXJzYyddLlJlYWN0U2VydmVyRE9NV2VicGFja1NlcnZlcjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].ReactServerDOMWebpackStatic;\n\n//# sourceMappingURL=react-server-dom-webpack-static.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stc3RhdGljLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyb3V0ZS1tb2R1bGVzXFxhcHAtcGFnZVxcdmVuZG9yZWRcXHJzY1xccmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXN0YXRpYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXJzYyddLlJlYWN0U2VydmVyRE9NV2VicGFja1N0YXRpYztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXN0YXRpYy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js": /*!************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js ***! \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\").vendored[\"react-rsc\"].React;\n\n//# sourceMappingURL=react.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3JzYy9yZWFjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLHFMQUE2RTs7QUFFN0UiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXHZlbmRvcmVkXFxyc2NcXHJlYWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3QtcnNjJ10uUmVhY3Q7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/send-payload.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/server/send-payload.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n sendEtagResponse: function() {\n return sendEtagResponse;\n },\n sendRenderResult: function() {\n return sendRenderResult;\n }\n});\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _etag = __webpack_require__(/*! ./lib/etag */ \"(rsc)/./node_modules/next/dist/server/lib/etag.js\");\nconst _fresh = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! next/dist/compiled/fresh */ \"(rsc)/./node_modules/next/dist/compiled/fresh/index.js\"));\nconst _cachecontrol = __webpack_require__(/*! ./lib/cache-control */ \"(rsc)/./node_modules/next/dist/server/lib/cache-control.js\");\nconst _constants = __webpack_require__(/*! ../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction sendEtagResponse(req, res, etag) {\n if (etag) {\n /**\n * The server generating a 304 response MUST generate any of the\n * following header fields that would have been sent in a 200 (OK)\n * response to the same request: Cache-Control, Content-Location, Date,\n * ETag, Expires, and Vary. https://tools.ietf.org/html/rfc7232#section-4.1\n */ res.setHeader('ETag', etag);\n }\n if ((0, _fresh.default)(req.headers, {\n etag\n })) {\n res.statusCode = 304;\n res.end();\n return true;\n }\n return false;\n}\nasync function sendRenderResult({ req, res, result, generateEtags, poweredByHeader, cacheControl }) {\n if ((0, _utils.isResSent)(res)) {\n return;\n }\n if (poweredByHeader && result.contentType === _constants.HTML_CONTENT_TYPE_HEADER) {\n res.setHeader('X-Powered-By', 'Next.js');\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheControl && !res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', (0, _cachecontrol.getCacheControlHeader)(cacheControl));\n }\n const payload = result.isDynamic ? null : result.toUnchunkedString();\n if (generateEtags && payload !== null) {\n const etag = (0, _etag.generateETag)(payload);\n if (sendEtagResponse(req, res, etag)) {\n return;\n }\n }\n if (!res.getHeader('Content-Type') && result.contentType) {\n res.setHeader('Content-Type', result.contentType);\n }\n if (payload) {\n res.setHeader('Content-Length', Buffer.byteLength(payload));\n }\n if (req.method === 'HEAD') {\n res.end(null);\n return;\n }\n if (payload !== null) {\n res.end(payload);\n return;\n }\n // Pipe the render result to the response after we get a writer for it.\n await result.pipeToNodeResponse(res);\n}\n\n//# sourceMappingURL=send-payload.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zZW5kLXBheWxvYWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZUFBZSxtQkFBTyxDQUFDLCtFQUFxQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsc0RBQXNELG1CQUFPLENBQUMsd0ZBQTBCO0FBQ3hGLHNCQUFzQixtQkFBTyxDQUFDLHVGQUFxQjtBQUNuRCxtQkFBbUIsbUJBQU8sQ0FBQyx5RUFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGdFQUFnRTtBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHNlbmQtcGF5bG9hZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNlbmRFdGFnUmVzcG9uc2U6IG51bGwsXG4gICAgc2VuZFJlbmRlclJlc3VsdDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBzZW5kRXRhZ1Jlc3BvbnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRFdGFnUmVzcG9uc2U7XG4gICAgfSxcbiAgICBzZW5kUmVuZGVyUmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQ7XG4gICAgfVxufSk7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbmNvbnN0IF9ldGFnID0gcmVxdWlyZShcIi4vbGliL2V0YWdcIik7XG5jb25zdCBfZnJlc2ggPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL2ZyZXNoXCIpKTtcbmNvbnN0IF9jYWNoZWNvbnRyb2wgPSByZXF1aXJlKFwiLi9saWIvY2FjaGUtY29udHJvbFwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vbGliL2NvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gc2VuZEV0YWdSZXNwb25zZShyZXEsIHJlcywgZXRhZykge1xuICAgIGlmIChldGFnKSB7XG4gICAgICAgIC8qKlxuICAgICAqIFRoZSBzZXJ2ZXIgZ2VuZXJhdGluZyBhIDMwNCByZXNwb25zZSBNVVNUIGdlbmVyYXRlIGFueSBvZiB0aGVcbiAgICAgKiBmb2xsb3dpbmcgaGVhZGVyIGZpZWxkcyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBzZW50IGluIGEgMjAwIChPSylcbiAgICAgKiByZXNwb25zZSB0byB0aGUgc2FtZSByZXF1ZXN0OiBDYWNoZS1Db250cm9sLCBDb250ZW50LUxvY2F0aW9uLCBEYXRlLFxuICAgICAqIEVUYWcsIEV4cGlyZXMsIGFuZCBWYXJ5LiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMiNzZWN0aW9uLTQuMVxuICAgICAqLyByZXMuc2V0SGVhZGVyKCdFVGFnJywgZXRhZyk7XG4gICAgfVxuICAgIGlmICgoMCwgX2ZyZXNoLmRlZmF1bHQpKHJlcS5oZWFkZXJzLCB7XG4gICAgICAgIGV0YWdcbiAgICB9KSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDMwNDtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuYXN5bmMgZnVuY3Rpb24gc2VuZFJlbmRlclJlc3VsdCh7IHJlcSwgcmVzLCByZXN1bHQsIGdlbmVyYXRlRXRhZ3MsIHBvd2VyZWRCeUhlYWRlciwgY2FjaGVDb250cm9sIH0pIHtcbiAgICBpZiAoKDAsIF91dGlscy5pc1Jlc1NlbnQpKHJlcykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG93ZXJlZEJ5SGVhZGVyICYmIHJlc3VsdC5jb250ZW50VHlwZSA9PT0gX2NvbnN0YW50cy5IVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIpIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignWC1Qb3dlcmVkLUJ5JywgJ05leHQuanMnKTtcbiAgICB9XG4gICAgLy8gSWYgY2FjaGUgY29udHJvbCBpcyBhbHJlYWR5IHNldCBvbiB0aGUgcmVzcG9uc2Ugd2UgZG9uJ3RcbiAgICAvLyBvdmVycmlkZSBpdCB0byBhbGxvdyB1c2VycyB0byBjdXN0b21pemUgaXQgdmlhIG5leHQuY29uZmlnXG4gICAgaWYgKGNhY2hlQ29udHJvbCAmJiAhcmVzLmdldEhlYWRlcignQ2FjaGUtQ29udHJvbCcpKSB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NhY2hlLUNvbnRyb2wnLCAoMCwgX2NhY2hlY29udHJvbC5nZXRDYWNoZUNvbnRyb2xIZWFkZXIpKGNhY2hlQ29udHJvbCkpO1xuICAgIH1cbiAgICBjb25zdCBwYXlsb2FkID0gcmVzdWx0LmlzRHluYW1pYyA/IG51bGwgOiByZXN1bHQudG9VbmNodW5rZWRTdHJpbmcoKTtcbiAgICBpZiAoZ2VuZXJhdGVFdGFncyAmJiBwYXlsb2FkICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGV0YWcgPSAoMCwgX2V0YWcuZ2VuZXJhdGVFVGFnKShwYXlsb2FkKTtcbiAgICAgICAgaWYgKHNlbmRFdGFnUmVzcG9uc2UocmVxLCByZXMsIGV0YWcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFyZXMuZ2V0SGVhZGVyKCdDb250ZW50LVR5cGUnKSAmJiByZXN1bHQuY29udGVudFR5cGUpIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgcmVzdWx0LmNvbnRlbnRUeXBlKTtcbiAgICB9XG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCBCdWZmZXIuYnl0ZUxlbmd0aChwYXlsb2FkKSk7XG4gICAgfVxuICAgIGlmIChyZXEubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICAgICAgcmVzLmVuZChudWxsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGF5bG9hZCAhPT0gbnVsbCkge1xuICAgICAgICByZXMuZW5kKHBheWxvYWQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFBpcGUgdGhlIHJlbmRlciByZXN1bHQgdG8gdGhlIHJlc3BvbnNlIGFmdGVyIHdlIGdldCBhIHdyaXRlciBmb3IgaXQuXG4gICAgYXdhaXQgcmVzdWx0LnBpcGVUb05vZGVSZXNwb25zZShyZXMpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZW5kLXBheWxvYWQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/send-payload.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/server/stream-utils/encoded-tags.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ENCODED_TAGS\", ({\n enumerable: true,\n get: function() {\n return ENCODED_TAGS;\n }\n}));\nconst ENCODED_TAGS = {\n // opening tags do not have the closing `>` since they can contain other attributes such as ``\n OPENING: {\n // \n HEAD: new Uint8Array([\n 60,\n 47,\n 104,\n 101,\n 97,\n 100,\n 62\n ]),\n // \n BODY: new Uint8Array([\n 60,\n 47,\n 98,\n 111,\n 100,\n 121,\n 62\n ]),\n // \n HTML: new Uint8Array([\n 60,\n 47,\n 104,\n 116,\n 109,\n 108,\n 62\n ]),\n // \n BODY_AND_HTML: new Uint8Array([\n 60,\n 47,\n 98,\n 111,\n 100,\n 121,\n 62,\n 60,\n 47,\n 104,\n 116,\n 109,\n 108,\n 62\n ])\n },\n META: {\n // Only the match the prefix cause the suffix can be different wether it's xml compatible or not \">\" or \"/>\"\n // { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n chainStreams: function() {\n return chainStreams;\n },\n continueDynamicHTMLResume: function() {\n return continueDynamicHTMLResume;\n },\n continueDynamicPrerender: function() {\n return continueDynamicPrerender;\n },\n continueFizzStream: function() {\n return continueFizzStream;\n },\n continueStaticPrerender: function() {\n return continueStaticPrerender;\n },\n createBufferedTransformStream: function() {\n return createBufferedTransformStream;\n },\n createDocumentClosingStream: function() {\n return createDocumentClosingStream;\n },\n createRootLayoutValidatorStream: function() {\n return createRootLayoutValidatorStream;\n },\n renderToInitialFizzStream: function() {\n return renderToInitialFizzStream;\n },\n streamFromBuffer: function() {\n return streamFromBuffer;\n },\n streamFromString: function() {\n return streamFromString;\n },\n streamToBuffer: function() {\n return streamToBuffer;\n },\n streamToString: function() {\n return streamToString;\n }\n});\nconst _tracer = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\nconst _constants = __webpack_require__(/*! ../lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\nconst _detachedpromise = __webpack_require__(/*! ../../lib/detached-promise */ \"(rsc)/./node_modules/next/dist/lib/detached-promise.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(rsc)/./node_modules/next/dist/lib/scheduler.js\");\nconst _encodedtags = __webpack_require__(/*! ./encoded-tags */ \"(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js\");\nconst _uint8arrayhelpers = __webpack_require__(/*! ./uint8array-helpers */ \"(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js\");\nconst _constants1 = __webpack_require__(/*! ../../shared/lib/errors/constants */ \"(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js\");\nconst _outputexportprefetchencoding = __webpack_require__(/*! ../../shared/lib/segment-cache/output-export-prefetch-encoding */ \"(rsc)/./node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js\");\nfunction voidCatch() {\n// this catcher is designed to be used with pipeTo where we expect the underlying\n// pipe implementation to forward errors but we don't want the pipeTo promise to reject\n// and be unhandled\n}\n// We can share the same encoder instance everywhere\n// Notably we cannot do the same for TextDecoder because it is stateful\n// when handling streaming data\nconst encoder = new TextEncoder();\nfunction chainStreams(...streams) {\n // If we have no streams, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n if (streams.length === 0) {\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n // If we only have 1 stream we fast path it by returning just this stream\n if (streams.length === 1) {\n return streams[0];\n }\n const { readable, writable } = new TransformStream();\n // We always initiate pipeTo immediately. We know we have at least 2 streams\n // so we need to avoid closing the writable when this one finishes.\n let promise = streams[0].pipeTo(writable, {\n preventClose: true\n });\n let i = 1;\n for(; i < streams.length - 1; i++){\n const nextStream = streams[i];\n promise = promise.then(()=>nextStream.pipeTo(writable, {\n preventClose: true\n }));\n }\n // We can omit the length check because we halted before the last stream and there\n // is at least two streams so the lastStream here will always be defined\n const lastStream = streams[i];\n promise = promise.then(()=>lastStream.pipeTo(writable));\n // Catch any errors from the streams and ignore them, they will be handled\n // by whatever is consuming the readable stream.\n promise.catch(voidCatch);\n return readable;\n}\nfunction streamFromString(str) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(encoder.encode(str));\n controller.close();\n }\n });\n}\nfunction streamFromBuffer(chunk) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(chunk);\n controller.close();\n }\n });\n}\nasync function streamToBuffer(stream) {\n const reader = stream.getReader();\n const chunks = [];\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n return Buffer.concat(chunks);\n}\nasync function streamToString(stream, signal) {\n const decoder = new TextDecoder('utf-8', {\n fatal: true\n });\n let string = '';\n for await (const chunk of stream){\n if (signal == null ? void 0 : signal.aborted) {\n return string;\n }\n string += decoder.decode(chunk, {\n stream: true\n });\n }\n string += decoder.decode();\n return string;\n}\nfunction createBufferedTransformStream() {\n let bufferedChunks = [];\n let bufferByteLength = 0;\n let pending;\n const flush = (controller)=>{\n // If we already have a pending flush, then return early.\n if (pending) return;\n const detached = new _detachedpromise.DetachedPromise();\n pending = detached;\n (0, _scheduler.scheduleImmediate)(()=>{\n try {\n const chunk = new Uint8Array(bufferByteLength);\n let copiedBytes = 0;\n for(let i = 0; i < bufferedChunks.length; i++){\n const bufferedChunk = bufferedChunks[i];\n chunk.set(bufferedChunk, copiedBytes);\n copiedBytes += bufferedChunk.byteLength;\n }\n // We just wrote all the buffered chunks so we need to reset the bufferedChunks array\n // and our bufferByteLength to prepare for the next round of buffered chunks\n bufferedChunks.length = 0;\n bufferByteLength = 0;\n controller.enqueue(chunk);\n } catch {\n // If an error occurs while enqueuing it can't be due to this\n // transformers fault. It's likely due to the controller being\n // errored due to the stream being cancelled.\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n // Combine the previous buffer with the new chunk.\n bufferedChunks.push(chunk);\n bufferByteLength += chunk.byteLength;\n // Flush the buffer to the controller.\n flush(controller);\n },\n flush () {\n if (!pending) return;\n return pending.promise;\n }\n });\n}\nfunction createPrefetchCommentStream(isBuildTimePrerendering, buildId) {\n // Insert an extra comment at the beginning of the HTML document. This must\n // come after the DOCTYPE, which is inserted by React.\n //\n // The first chunk sent by React will contain the doctype. After that, we can\n // pass through the rest of the chunks as-is.\n let didTransformFirstChunk = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (isBuildTimePrerendering && !didTransformFirstChunk) {\n didTransformFirstChunk = true;\n const decoder = new TextDecoder('utf-8', {\n fatal: true\n });\n const chunkStr = decoder.decode(chunk, {\n stream: true\n });\n const updatedChunkStr = (0, _outputexportprefetchencoding.insertBuildIdComment)(chunkStr, buildId);\n controller.enqueue(encoder.encode(updatedChunkStr));\n return;\n }\n controller.enqueue(chunk);\n }\n });\n}\nfunction renderToInitialFizzStream({ ReactDOMServer, element, streamOptions }) {\n return (0, _tracer.getTracer)().trace(_constants.AppRenderSpan.renderToReadableStream, async ()=>ReactDOMServer.renderToReadableStream(element, streamOptions));\n}\nfunction createMetadataTransformStream(insert) {\n let chunkIndex = -1;\n let isMarkRemoved = false;\n return new TransformStream({\n async transform (chunk, controller) {\n let iconMarkIndex = -1;\n let closedHeadIndex = -1;\n chunkIndex++;\n if (isMarkRemoved) {\n controller.enqueue(chunk);\n return;\n }\n let iconMarkLength = 0;\n // Only search for the closed head tag once\n if (iconMarkIndex === -1) {\n iconMarkIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.META.ICON_MARK);\n if (iconMarkIndex === -1) {\n controller.enqueue(chunk);\n return;\n } else {\n // When we found the `` or `>`, checking the next char to ensure we cover both cases.\n iconMarkLength = _encodedtags.ENCODED_TAGS.META.ICON_MARK.length;\n // Check if next char is /, this is for xml mode.\n if (chunk[iconMarkIndex + iconMarkLength] === 47) {\n iconMarkLength += 2;\n } else {\n // The last char is `>`\n iconMarkLength++;\n }\n }\n }\n // Check if icon mark is inside tag in the first chunk.\n if (chunkIndex === 0) {\n closedHeadIndex = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HEAD);\n if (iconMarkIndex !== -1) {\n // The mark icon is located in the 1st chunk before the head tag.\n // We do not need to insert the script tag in this case because it's in the head.\n // Just remove the icon mark from the chunk.\n if (iconMarkIndex < closedHeadIndex) {\n const replaced = new Uint8Array(chunk.length - iconMarkLength);\n // Remove the icon mark from the chunk.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex);\n chunk = replaced;\n } else {\n // The icon mark is after the head tag, replace and insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(encodedInsertion, iconMarkIndex);\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n }\n isMarkRemoved = true;\n }\n // If there's no icon mark located, it will be handled later when if present in the following chunks.\n } else {\n // When it's appeared in the following chunks, we'll need to\n // remove the mark and then insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n // Replace the icon mark with the hoist script or empty string.\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n // Set the first part of the chunk, before the icon mark.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n // Set the insertion after the icon mark.\n replaced.set(encodedInsertion, iconMarkIndex);\n // Set the rest of the chunk after the icon mark.\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n isMarkRemoved = true;\n }\n controller.enqueue(chunk);\n }\n });\n}\nfunction createHeadInsertionTransformStream(insert) {\n let inserted = false;\n // We need to track if this transform saw any bytes because if it didn't\n // we won't want to insert any server HTML at all\n let hasBytes = false;\n return new TransformStream({\n async transform (chunk, controller) {\n hasBytes = true;\n const insertion = await insert();\n if (inserted) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n controller.enqueue(encodedInsertion);\n }\n controller.enqueue(chunk);\n } else {\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const index = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HEAD);\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n if (index !== -1) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = \n // insertion = \n // output = [ ] \n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, index));\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, index);\n // Append the rest of the chunk\n insertedHeadContent.set(chunk.slice(index), index + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n } else {\n controller.enqueue(chunk);\n }\n inserted = true;\n } else {\n // This will happens in PPR rendering during next start, when the page is partially rendered.\n // When the page resumes, the head tag will be found in the middle of the chunk.\n // Where we just need to append the insertion and chunk to the current stream.\n // e.g.\n // PPR-static: ... [ resume content ] \n // PPR-resume: [ insertion ] [ rest content ]\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n controller.enqueue(chunk);\n inserted = true;\n }\n }\n },\n async flush (controller) {\n // Check before closing if there's anything remaining to insert.\n if (hasBytes) {\n const insertion = await insert();\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n }\n }\n });\n}\n// Suffix after main body content - scripts before ,\n// but wait for the major chunks to be enqueued.\nfunction createDeferredSuffixStream(suffix) {\n let flushed = false;\n let pending;\n const flush = (controller)=>{\n const detached = new _detachedpromise.DetachedPromise();\n pending = detached;\n (0, _scheduler.scheduleImmediate)(()=>{\n try {\n controller.enqueue(encoder.encode(suffix));\n } catch {\n // If an error occurs while enqueuing it can't be due to this\n // transformers fault. It's likely due to the controller being\n // errored due to the stream being cancelled.\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // If we've already flushed, we're done.\n if (flushed) return;\n // Schedule the flush to happen.\n flushed = true;\n flush(controller);\n },\n flush (controller) {\n if (pending) return pending.promise;\n if (flushed) return;\n // Flush now.\n controller.enqueue(encoder.encode(suffix));\n }\n });\n}\nfunction createFlightDataInjectionTransformStream(stream, delayDataUntilFirstHtmlChunk) {\n let htmlStreamFinished = false;\n let pull = null;\n let donePulling = false;\n function startOrContinuePulling(controller) {\n if (!pull) {\n pull = startPulling(controller);\n }\n return pull;\n }\n async function startPulling(controller) {\n const reader = stream.getReader();\n if (delayDataUntilFirstHtmlChunk) {\n // NOTE: streaming flush\n // We are buffering here for the inlined data stream because the\n // \"shell\" stream might be chunkenized again by the underlying stream\n // implementation, e.g. with a specific high-water mark. To ensure it's\n // the safe timing to pipe the data stream, this extra tick is\n // necessary.\n // We don't start reading until we've left the current Task to ensure\n // that it's inserted after flushing the shell. Note that this implementation\n // might get stale if impl details of Fizz change in the future.\n await (0, _scheduler.atLeastOneTask)();\n }\n try {\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n donePulling = true;\n return;\n }\n // We want to prioritize HTML over RSC data.\n // The SSR render is based on the same RSC stream, so when we get a new RSC chunk,\n // we're likely to produce an HTML chunk as well, so give it a chance to flush first.\n if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) {\n await (0, _scheduler.atLeastOneTask)();\n }\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n }\n return new TransformStream({\n start (controller) {\n if (!delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // Start the streaming if it hasn't already been started yet.\n if (delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n flush (controller) {\n htmlStreamFinished = true;\n if (donePulling) {\n return;\n }\n return startOrContinuePulling(controller);\n }\n });\n}\nconst CLOSE_TAG = '';\n/**\n * This transform stream moves the suffix to the end of the stream, so results\n * like `` will be transformed to\n * ``.\n */ function createMoveSuffixStream() {\n let foundSuffix = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (foundSuffix) {\n return controller.enqueue(chunk);\n }\n const index = (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n if (index > -1) {\n foundSuffix = true;\n // If the whole chunk is the suffix, then don't write anything, it will\n // be written in the flush.\n if (chunk.length === _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length) {\n return;\n }\n // Write out the part before the suffix.\n const before = chunk.slice(0, index);\n controller.enqueue(before);\n // In the case where the suffix is in the middle of the chunk, we need\n // to split the chunk into two parts.\n if (chunk.length > _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length + index) {\n // Write out the part after the suffix.\n const after = chunk.slice(index + _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length);\n controller.enqueue(after);\n }\n } else {\n controller.enqueue(chunk);\n }\n },\n flush (controller) {\n // Even if we didn't find the suffix, the HTML is not valid if we don't\n // add it, so insert it at the end.\n controller.enqueue(_encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n }\n });\n}\nfunction createStripDocumentClosingTagsTransform() {\n return new TransformStream({\n transform (chunk, controller) {\n // We rely on the assumption that chunks will never break across a code unit.\n // This is reasonable because we currently concat all of React's output from a single\n // flush into one chunk before streaming it forward which means the chunk will represent\n // a single coherent utf-8 string. This is not safe to use if we change our streaming to no\n // longer do this large buffered chunk\n if ((0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY_AND_HTML) || (0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY) || (0, _uint8arrayhelpers.isEquivalentUint8Arrays)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HTML)) {\n // the entire chunk is the closing tags; return without enqueueing anything.\n return;\n }\n // We assume these tags will go at together at the end of the document and that\n // they won't appear anywhere else in the document. This is not really a safe assumption\n // but until we revamp our streaming infra this is a performant way to string the tags\n chunk = (0, _uint8arrayhelpers.removeFromUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.BODY);\n chunk = (0, _uint8arrayhelpers.removeFromUint8Array)(chunk, _encodedtags.ENCODED_TAGS.CLOSED.HTML);\n controller.enqueue(chunk);\n }\n });\n}\nfunction createRootLayoutValidatorStream() {\n let foundHtml = false;\n let foundBody = false;\n return new TransformStream({\n async transform (chunk, controller) {\n // Peek into the streamed chunk to see if the tags are present.\n if (!foundHtml && (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.HTML) > -1) {\n foundHtml = true;\n }\n if (!foundBody && (0, _uint8arrayhelpers.indexOfUint8Array)(chunk, _encodedtags.ENCODED_TAGS.OPENING.BODY) > -1) {\n foundBody = true;\n }\n controller.enqueue(chunk);\n },\n flush (controller) {\n const missingTags = [];\n if (!foundHtml) missingTags.push('html');\n if (!foundBody) missingTags.push('body');\n if (!missingTags.length) return;\n controller.enqueue(encoder.encode(`\n `<${c}>`).join(missingTags.length > 1 ? ' and ' : '')} tags in the root layout.\\nRead more at https://nextjs.org/docs/messages/missing-root-layout-tags\"\n data-next-error-digest=\"${_constants1.MISSING_ROOT_TAGS_ERROR}\"\n data-next-error-stack=\"\"\n >\n `));\n }\n });\n}\nfunction chainTransformers(readable, transformers) {\n let stream = readable;\n for (const transformer of transformers){\n if (!transformer) continue;\n stream = stream.pipeThrough(transformer);\n }\n return stream;\n}\nasync function continueFizzStream(renderStream, { suffix, inlinedDataStream, isStaticGeneration, isBuildTimePrerendering, buildId, getServerInsertedHTML, getServerInsertedMetadata, validateRootLayout }) {\n // Suffix itself might contain close tags at the end, so we need to split it.\n const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null;\n // If we're generating static HTML we need to wait for it to resolve before continuing.\n if (isStaticGeneration) {\n await renderStream.allReady;\n }\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Add build id comment to start of the HTML document (in export mode)\n createPrefetchCommentStream(isBuildTimePrerendering, buildId),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert suffix content\n suffixUnclosed != null && suffixUnclosed.length > 0 ? createDeferredSuffixStream(suffixUnclosed) : null,\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n inlinedDataStream ? createFlightDataInjectionTransformStream(inlinedDataStream, true) : null,\n // Validate the root layout for missing html or body tags\n validateRootLayout ? createRootLayoutValidatorStream() : null,\n // Close tags should always be deferred to the end\n createMoveSuffixStream(),\n // Special head insertions\n // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid\n // hydration errors. Remove this once it's ready to be handled by react itself.\n createHeadInsertionTransformStream(getServerInsertedHTML)\n ]);\n}\nasync function continueDynamicPrerender(prerenderStream, { getServerInsertedHTML, getServerInsertedMetadata }) {\n return prerenderStream// Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream()).pipeThrough(createStripDocumentClosingTagsTransform())// Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))// Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata));\n}\nasync function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, isBuildTimePrerendering, buildId }) {\n return prerenderStream// Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())// Add build id comment to start of the HTML document (in export mode)\n .pipeThrough(createPrefetchCommentStream(isBuildTimePrerendering, buildId))// Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))// Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))// Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, true))// Close tags should always be deferred to the end\n .pipeThrough(createMoveSuffixStream());\n}\nasync function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata }) {\n return renderStream// Buffer everything to avoid flushing too frequently\n .pipeThrough(createBufferedTransformStream())// Insert generated tags to head\n .pipeThrough(createHeadInsertionTransformStream(getServerInsertedHTML))// Transform metadata\n .pipeThrough(createMetadataTransformStream(getServerInsertedMetadata))// Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n .pipeThrough(createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk))// Close tags should always be deferred to the end\n .pipeThrough(createMoveSuffixStream());\n}\nfunction createDocumentClosingStream() {\n return streamFromString(CLOSE_TAG);\n}\n\n//# sourceMappingURL=node-web-streams-helper.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvbm9kZS13ZWItc3RyZWFtcy1oZWxwZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBY0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGdCQUFnQixtQkFBTyxDQUFDLHNGQUFxQjtBQUM3QyxtQkFBbUIsbUJBQU8sQ0FBQyw0RkFBd0I7QUFDbkQseUJBQXlCLG1CQUFPLENBQUMsMEZBQTRCO0FBQzdELG1CQUFtQixtQkFBTyxDQUFDLDRFQUFxQjtBQUNoRCxxQkFBcUIsbUJBQU8sQ0FBQywwRkFBZ0I7QUFDN0MsMkJBQTJCLG1CQUFPLENBQUMsc0dBQXNCO0FBQ3pELG9CQUFvQixtQkFBTyxDQUFDLHdHQUFtQztBQUMvRCxzQ0FBc0MsbUJBQU8sQ0FBQyxrS0FBZ0U7QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxQkFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxVQUFVLHdCQUF3QjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixjQUFjO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkJBQTJCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHFDQUFxQyx3Q0FBd0M7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQseUJBQXlCLEVBQUUsaURBQWlEO0FBQzdILHdDQUF3QyxvQ0FBb0M7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELHVKQUF1SjtBQUN6TTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsa0RBQWtEO0FBQzdHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsdUdBQXVHO0FBQ2pLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsbUdBQW1HO0FBQzVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHN0cmVhbS11dGlsc1xcbm9kZS13ZWItc3RyZWFtcy1oZWxwZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjaGFpblN0cmVhbXM6IG51bGwsXG4gICAgY29udGludWVEeW5hbWljSFRNTFJlc3VtZTogbnVsbCxcbiAgICBjb250aW51ZUR5bmFtaWNQcmVyZW5kZXI6IG51bGwsXG4gICAgY29udGludWVGaXp6U3RyZWFtOiBudWxsLFxuICAgIGNvbnRpbnVlU3RhdGljUHJlcmVuZGVyOiBudWxsLFxuICAgIGNyZWF0ZUJ1ZmZlcmVkVHJhbnNmb3JtU3RyZWFtOiBudWxsLFxuICAgIGNyZWF0ZURvY3VtZW50Q2xvc2luZ1N0cmVhbTogbnVsbCxcbiAgICBjcmVhdGVSb290TGF5b3V0VmFsaWRhdG9yU3RyZWFtOiBudWxsLFxuICAgIHJlbmRlclRvSW5pdGlhbEZpenpTdHJlYW06IG51bGwsXG4gICAgc3RyZWFtRnJvbUJ1ZmZlcjogbnVsbCxcbiAgICBzdHJlYW1Gcm9tU3RyaW5nOiBudWxsLFxuICAgIHN0cmVhbVRvQnVmZmVyOiBudWxsLFxuICAgIHN0cmVhbVRvU3RyaW5nOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGNoYWluU3RyZWFtczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjaGFpblN0cmVhbXM7XG4gICAgfSxcbiAgICBjb250aW51ZUR5bmFtaWNIVE1MUmVzdW1lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlRHluYW1pY0hUTUxSZXN1bWU7XG4gICAgfSxcbiAgICBjb250aW51ZUR5bmFtaWNQcmVyZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29udGludWVEeW5hbWljUHJlcmVuZGVyO1xuICAgIH0sXG4gICAgY29udGludWVGaXp6U3RyZWFtOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlRml6elN0cmVhbTtcbiAgICB9LFxuICAgIGNvbnRpbnVlU3RhdGljUHJlcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlU3RhdGljUHJlcmVuZGVyO1xuICAgIH0sXG4gICAgY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW07XG4gICAgfSxcbiAgICBjcmVhdGVEb2N1bWVudENsb3NpbmdTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRG9jdW1lbnRDbG9zaW5nU3RyZWFtO1xuICAgIH0sXG4gICAgY3JlYXRlUm9vdExheW91dFZhbGlkYXRvclN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSb290TGF5b3V0VmFsaWRhdG9yU3RyZWFtO1xuICAgIH0sXG4gICAgcmVuZGVyVG9Jbml0aWFsRml6elN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZW5kZXJUb0luaXRpYWxGaXp6U3RyZWFtO1xuICAgIH0sXG4gICAgc3RyZWFtRnJvbUJ1ZmZlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1Gcm9tQnVmZmVyO1xuICAgIH0sXG4gICAgc3RyZWFtRnJvbVN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1Gcm9tU3RyaW5nO1xuICAgIH0sXG4gICAgc3RyZWFtVG9CdWZmZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3RyZWFtVG9CdWZmZXI7XG4gICAgfSxcbiAgICBzdHJlYW1Ub1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW1Ub1N0cmluZztcbiAgICB9XG59KTtcbmNvbnN0IF90cmFjZXIgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL3RyYWNlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vbGliL3RyYWNlL2NvbnN0YW50c1wiKTtcbmNvbnN0IF9kZXRhY2hlZHByb21pc2UgPSByZXF1aXJlKFwiLi4vLi4vbGliL2RldGFjaGVkLXByb21pc2VcIik7XG5jb25zdCBfc2NoZWR1bGVyID0gcmVxdWlyZShcIi4uLy4uL2xpYi9zY2hlZHVsZXJcIik7XG5jb25zdCBfZW5jb2RlZHRhZ3MgPSByZXF1aXJlKFwiLi9lbmNvZGVkLXRhZ3NcIik7XG5jb25zdCBfdWludDhhcnJheWhlbHBlcnMgPSByZXF1aXJlKFwiLi91aW50OGFycmF5LWhlbHBlcnNcIik7XG5jb25zdCBfY29uc3RhbnRzMSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2Vycm9ycy9jb25zdGFudHNcIik7XG5jb25zdCBfb3V0cHV0ZXhwb3J0cHJlZmV0Y2hlbmNvZGluZyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQtY2FjaGUvb3V0cHV0LWV4cG9ydC1wcmVmZXRjaC1lbmNvZGluZ1wiKTtcbmZ1bmN0aW9uIHZvaWRDYXRjaCgpIHtcbi8vIHRoaXMgY2F0Y2hlciBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggcGlwZVRvIHdoZXJlIHdlIGV4cGVjdCB0aGUgdW5kZXJseWluZ1xuLy8gcGlwZSBpbXBsZW1lbnRhdGlvbiB0byBmb3J3YXJkIGVycm9ycyBidXQgd2UgZG9uJ3Qgd2FudCB0aGUgcGlwZVRvIHByb21pc2UgdG8gcmVqZWN0XG4vLyBhbmQgYmUgdW5oYW5kbGVkXG59XG4vLyBXZSBjYW4gc2hhcmUgdGhlIHNhbWUgZW5jb2RlciBpbnN0YW5jZSBldmVyeXdoZXJlXG4vLyBOb3RhYmx5IHdlIGNhbm5vdCBkbyB0aGUgc2FtZSBmb3IgVGV4dERlY29kZXIgYmVjYXVzZSBpdCBpcyBzdGF0ZWZ1bFxuLy8gd2hlbiBoYW5kbGluZyBzdHJlYW1pbmcgZGF0YVxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuZnVuY3Rpb24gY2hhaW5TdHJlYW1zKC4uLnN0cmVhbXMpIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vIHN0cmVhbXMsIHJldHVybiBhbiBlbXB0eSBzdHJlYW0uIFRoaXMgYmVoYXZpb3IgaXNcbiAgICAvLyBpbnRlbnRpb25hbCBhcyB3ZSdyZSBub3cgcHJvdmlkaW5nIHRoZSBgUmVuZGVyUmVzdWx0LkVNUFRZYCB2YWx1ZS5cbiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIElmIHdlIG9ubHkgaGF2ZSAxIHN0cmVhbSB3ZSBmYXN0IHBhdGggaXQgYnkgcmV0dXJuaW5nIGp1c3QgdGhpcyBzdHJlYW1cbiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbXNbMF07XG4gICAgfVxuICAgIGNvbnN0IHsgcmVhZGFibGUsIHdyaXRhYmxlIH0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7XG4gICAgLy8gV2UgYWx3YXlzIGluaXRpYXRlIHBpcGVUbyBpbW1lZGlhdGVseS4gV2Uga25vdyB3ZSBoYXZlIGF0IGxlYXN0IDIgc3RyZWFtc1xuICAgIC8vIHNvIHdlIG5lZWQgdG8gYXZvaWQgY2xvc2luZyB0aGUgd3JpdGFibGUgd2hlbiB0aGlzIG9uZSBmaW5pc2hlcy5cbiAgICBsZXQgcHJvbWlzZSA9IHN0cmVhbXNbMF0ucGlwZVRvKHdyaXRhYmxlLCB7XG4gICAgICAgIHByZXZlbnRDbG9zZTogdHJ1ZVxuICAgIH0pO1xuICAgIGxldCBpID0gMTtcbiAgICBmb3IoOyBpIDwgc3RyZWFtcy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgICBjb25zdCBuZXh0U3RyZWFtID0gc3RyZWFtc1tpXTtcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbigoKT0+bmV4dFN0cmVhbS5waXBlVG8od3JpdGFibGUsIHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50Q2xvc2U6IHRydWVcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgLy8gV2UgY2FuIG9taXQgdGhlIGxlbmd0aCBjaGVjayBiZWNhdXNlIHdlIGhhbHRlZCBiZWZvcmUgdGhlIGxhc3Qgc3RyZWFtIGFuZCB0aGVyZVxuICAgIC8vIGlzIGF0IGxlYXN0IHR3byBzdHJlYW1zIHNvIHRoZSBsYXN0U3RyZWFtIGhlcmUgd2lsbCBhbHdheXMgYmUgZGVmaW5lZFxuICAgIGNvbnN0IGxhc3RTdHJlYW0gPSBzdHJlYW1zW2ldO1xuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oKCk9Pmxhc3RTdHJlYW0ucGlwZVRvKHdyaXRhYmxlKSk7XG4gICAgLy8gQ2F0Y2ggYW55IGVycm9ycyBmcm9tIHRoZSBzdHJlYW1zIGFuZCBpZ25vcmUgdGhlbSwgdGhleSB3aWxsIGJlIGhhbmRsZWRcbiAgICAvLyBieSB3aGF0ZXZlciBpcyBjb25zdW1pbmcgdGhlIHJlYWRhYmxlIHN0cmVhbS5cbiAgICBwcm9taXNlLmNhdGNoKHZvaWRDYXRjaCk7XG4gICAgcmV0dXJuIHJlYWRhYmxlO1xufVxuZnVuY3Rpb24gc3RyZWFtRnJvbVN0cmluZyhzdHIpIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShzdHIpKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gc3RyZWFtRnJvbUJ1ZmZlcihjaHVuaykge1xuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuYXN5bmMgZnVuY3Rpb24gc3RyZWFtVG9CdWZmZXIoc3RyZWFtKSB7XG4gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmtzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xufVxuYXN5bmMgZnVuY3Rpb24gc3RyZWFtVG9TdHJpbmcoc3RyZWFtLCBzaWduYWwpIHtcbiAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCd1dGYtOCcsIHtcbiAgICAgICAgZmF0YWw6IHRydWVcbiAgICB9KTtcbiAgICBsZXQgc3RyaW5nID0gJyc7XG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdHJlYW0pe1xuICAgICAgICBpZiAoc2lnbmFsID09IG51bGwgPyB2b2lkIDAgOiBzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBzdHJpbmcgKz0gZGVjb2Rlci5kZWNvZGUoY2h1bmssIHtcbiAgICAgICAgICAgIHN0cmVhbTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RyaW5nICs9IGRlY29kZXIuZGVjb2RlKCk7XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcmVkVHJhbnNmb3JtU3RyZWFtKCkge1xuICAgIGxldCBidWZmZXJlZENodW5rcyA9IFtdO1xuICAgIGxldCBidWZmZXJCeXRlTGVuZ3RoID0gMDtcbiAgICBsZXQgcGVuZGluZztcbiAgICBjb25zdCBmbHVzaCA9IChjb250cm9sbGVyKT0+e1xuICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBwZW5kaW5nIGZsdXNoLCB0aGVuIHJldHVybiBlYXJseS5cbiAgICAgICAgaWYgKHBlbmRpbmcpIHJldHVybjtcbiAgICAgICAgY29uc3QgZGV0YWNoZWQgPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICAgICAgcGVuZGluZyA9IGRldGFjaGVkO1xuICAgICAgICAoMCwgX3NjaGVkdWxlci5zY2hlZHVsZUltbWVkaWF0ZSkoKCk9PntcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSBuZXcgVWludDhBcnJheShidWZmZXJCeXRlTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgY29waWVkQnl0ZXMgPSAwO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBidWZmZXJlZENodW5rcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlcmVkQ2h1bmsgPSBidWZmZXJlZENodW5rc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmsuc2V0KGJ1ZmZlcmVkQ2h1bmssIGNvcGllZEJ5dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgY29waWVkQnl0ZXMgKz0gYnVmZmVyZWRDaHVuay5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IHdyb3RlIGFsbCB0aGUgYnVmZmVyZWQgY2h1bmtzIHNvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGJ1ZmZlcmVkQ2h1bmtzIGFycmF5XG4gICAgICAgICAgICAgICAgLy8gYW5kIG91ciBidWZmZXJCeXRlTGVuZ3RoIHRvIHByZXBhcmUgZm9yIHRoZSBuZXh0IHJvdW5kIG9mIGJ1ZmZlcmVkIGNodW5rc1xuICAgICAgICAgICAgICAgIGJ1ZmZlcmVkQ2h1bmtzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgYnVmZmVyQnl0ZUxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgIC8vIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBlbnF1ZXVpbmcgaXQgY2FuJ3QgYmUgZHVlIHRvIHRoaXNcbiAgICAgICAgICAgIC8vIHRyYW5zZm9ybWVycyBmYXVsdC4gSXQncyBsaWtlbHkgZHVlIHRvIHRoZSBjb250cm9sbGVyIGJlaW5nXG4gICAgICAgICAgICAvLyBlcnJvcmVkIGR1ZSB0byB0aGUgc3RyZWFtIGJlaW5nIGNhbmNlbGxlZC5cbiAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGRldGFjaGVkLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIENvbWJpbmUgdGhlIHByZXZpb3VzIGJ1ZmZlciB3aXRoIHRoZSBuZXcgY2h1bmsuXG4gICAgICAgICAgICBidWZmZXJlZENodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgICAgIGJ1ZmZlckJ5dGVMZW5ndGggKz0gY2h1bmsuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIC8vIEZsdXNoIHRoZSBidWZmZXIgdG8gdGhlIGNvbnRyb2xsZXIuXG4gICAgICAgICAgICBmbHVzaChjb250cm9sbGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2ggKCkge1xuICAgICAgICAgICAgaWYgKCFwZW5kaW5nKSByZXR1cm47XG4gICAgICAgICAgICByZXR1cm4gcGVuZGluZy5wcm9taXNlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVQcmVmZXRjaENvbW1lbnRTdHJlYW0oaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmcsIGJ1aWxkSWQpIHtcbiAgICAvLyBJbnNlcnQgYW4gZXh0cmEgY29tbWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBIVE1MIGRvY3VtZW50LiBUaGlzIG11c3RcbiAgICAvLyBjb21lIGFmdGVyIHRoZSBET0NUWVBFLCB3aGljaCBpcyBpbnNlcnRlZCBieSBSZWFjdC5cbiAgICAvL1xuICAgIC8vIFRoZSBmaXJzdCBjaHVuayBzZW50IGJ5IFJlYWN0IHdpbGwgY29udGFpbiB0aGUgZG9jdHlwZS4gQWZ0ZXIgdGhhdCwgd2UgY2FuXG4gICAgLy8gcGFzcyB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBjaHVua3MgYXMtaXMuXG4gICAgbGV0IGRpZFRyYW5zZm9ybUZpcnN0Q2h1bmsgPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChpc0J1aWxkVGltZVByZXJlbmRlcmluZyAmJiAhZGlkVHJhbnNmb3JtRmlyc3RDaHVuaykge1xuICAgICAgICAgICAgICAgIGRpZFRyYW5zZm9ybUZpcnN0Q2h1bmsgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04Jywge1xuICAgICAgICAgICAgICAgICAgICBmYXRhbDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU3RyID0gZGVjb2Rlci5kZWNvZGUoY2h1bmssIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENodW5rU3RyID0gKDAsIF9vdXRwdXRleHBvcnRwcmVmZXRjaGVuY29kaW5nLmluc2VydEJ1aWxkSWRDb21tZW50KShjaHVua1N0ciwgYnVpbGRJZCk7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHVwZGF0ZWRDaHVua1N0cikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlbmRlclRvSW5pdGlhbEZpenpTdHJlYW0oeyBSZWFjdERPTVNlcnZlciwgZWxlbWVudCwgc3RyZWFtT3B0aW9ucyB9KSB7XG4gICAgcmV0dXJuICgwLCBfdHJhY2VyLmdldFRyYWNlcikoKS50cmFjZShfY29uc3RhbnRzLkFwcFJlbmRlclNwYW4ucmVuZGVyVG9SZWFkYWJsZVN0cmVhbSwgYXN5bmMgKCk9PlJlYWN0RE9NU2VydmVyLnJlbmRlclRvUmVhZGFibGVTdHJlYW0oZWxlbWVudCwgc3RyZWFtT3B0aW9ucykpO1xufVxuZnVuY3Rpb24gY3JlYXRlTWV0YWRhdGFUcmFuc2Zvcm1TdHJlYW0oaW5zZXJ0KSB7XG4gICAgbGV0IGNodW5rSW5kZXggPSAtMTtcbiAgICBsZXQgaXNNYXJrUmVtb3ZlZCA9IGZhbHNlO1xuICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgYXN5bmMgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgbGV0IGljb25NYXJrSW5kZXggPSAtMTtcbiAgICAgICAgICAgIGxldCBjbG9zZWRIZWFkSW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNodW5rSW5kZXgrKztcbiAgICAgICAgICAgIGlmIChpc01hcmtSZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaWNvbk1hcmtMZW5ndGggPSAwO1xuICAgICAgICAgICAgLy8gT25seSBzZWFyY2ggZm9yIHRoZSBjbG9zZWQgaGVhZCB0YWcgb25jZVxuICAgICAgICAgICAgaWYgKGljb25NYXJrSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWNvbk1hcmtJbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk1FVEEuSUNPTl9NQVJLKTtcbiAgICAgICAgICAgICAgICBpZiAoaWNvbk1hcmtJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gd2UgZm91bmQgdGhlIGA8bWV0YSBuYW1lPVwiwqtueHQtaWNvbsK7XCJgIHRhZyBwcmVmaXgsIHdlIHdpbGwgcmVtb3ZlIGl0IGZyb20gdGhlIGNodW5rLlxuICAgICAgICAgICAgICAgICAgICAvLyBJdHMgY2xvc2UgdGFnIGNvdWxkIGVpdGhlciBiZSBgLz5gIG9yIGA+YCwgY2hlY2tpbmcgdGhlIG5leHQgY2hhciB0byBlbnN1cmUgd2UgY292ZXIgYm90aCBjYXNlcy5cbiAgICAgICAgICAgICAgICAgICAgaWNvbk1hcmtMZW5ndGggPSBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk1FVEEuSUNPTl9NQVJLLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgbmV4dCBjaGFyIGlzIC8sIHRoaXMgaXMgZm9yIHhtbCBtb2RlLlxuICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtbaWNvbk1hcmtJbmRleCArIGljb25NYXJrTGVuZ3RoXSA9PT0gNDcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25NYXJrTGVuZ3RoICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbGFzdCBjaGFyIGlzIGA+YFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk1hcmtMZW5ndGgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGljb24gbWFyayBpcyBpbnNpZGUgPGhlYWQ+IHRhZyBpbiB0aGUgZmlyc3QgY2h1bmsuXG4gICAgICAgICAgICBpZiAoY2h1bmtJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNsb3NlZEhlYWRJbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5IRUFEKTtcbiAgICAgICAgICAgICAgICBpZiAoaWNvbk1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG1hcmsgaWNvbiBpcyBsb2NhdGVkIGluIHRoZSAxc3QgY2h1bmsgYmVmb3JlIHRoZSBoZWFkIHRhZy5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gaW5zZXJ0IHRoZSBzY3JpcHQgdGFnIGluIHRoaXMgY2FzZSBiZWNhdXNlIGl0J3MgaW4gdGhlIGhlYWQuXG4gICAgICAgICAgICAgICAgICAgIC8vIEp1c3QgcmVtb3ZlIHRoZSBpY29uIG1hcmsgZnJvbSB0aGUgY2h1bmsuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpY29uTWFya0luZGV4IDwgY2xvc2VkSGVhZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlZCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmxlbmd0aCAtIGljb25NYXJrTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgaWNvbiBtYXJrIGZyb20gdGhlIGNodW5rLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQuc2V0KGNodW5rLnN1YmFycmF5KDAsIGljb25NYXJrSW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChjaHVuay5zdWJhcnJheShpY29uTWFya0luZGV4ICsgaWNvbk1hcmtMZW5ndGgpLCBpY29uTWFya0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gcmVwbGFjZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgaWNvbiBtYXJrIGlzIGFmdGVyIHRoZSBoZWFkIHRhZywgcmVwbGFjZSBhbmQgaW5zZXJ0IHRoZSBzY3JpcHQgdGFnIGF0IHRoYXQgcG9zaXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRpb24gPSBhd2FpdCBpbnNlcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRJbnNlcnRpb24gPSBlbmNvZGVyLmVuY29kZShpbnNlcnRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zZXJ0aW9uTGVuZ3RoID0gZW5jb2RlZEluc2VydGlvbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlZCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmxlbmd0aCAtIGljb25NYXJrTGVuZ3RoICsgaW5zZXJ0aW9uTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkLnNldChjaHVuay5zdWJhcnJheSgwLCBpY29uTWFya0luZGV4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoZW5jb2RlZEluc2VydGlvbiwgaWNvbk1hcmtJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoY2h1bmsuc3ViYXJyYXkoaWNvbk1hcmtJbmRleCArIGljb25NYXJrTGVuZ3RoKSwgaWNvbk1hcmtJbmRleCArIGluc2VydGlvbkxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHJlcGxhY2VkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlzTWFya1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gaWNvbiBtYXJrIGxvY2F0ZWQsIGl0IHdpbGwgYmUgaGFuZGxlZCBsYXRlciB3aGVuIGlmIHByZXNlbnQgaW4gdGhlIGZvbGxvd2luZyBjaHVua3MuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaXQncyBhcHBlYXJlZCBpbiB0aGUgZm9sbG93aW5nIGNodW5rcywgd2UnbGwgbmVlZCB0b1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgbWFyayBhbmQgdGhlbiBpbnNlcnQgdGhlIHNjcmlwdCB0YWcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRpb24gPSBhd2FpdCBpbnNlcnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkSW5zZXJ0aW9uID0gZW5jb2Rlci5lbmNvZGUoaW5zZXJ0aW9uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRpb25MZW5ndGggPSBlbmNvZGVkSW5zZXJ0aW9uLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBpY29uIG1hcmsgd2l0aCB0aGUgaG9pc3Qgc2NyaXB0IG9yIGVtcHR5IHN0cmluZy5cbiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlZCA9IG5ldyBVaW50OEFycmF5KGNodW5rLmxlbmd0aCAtIGljb25NYXJrTGVuZ3RoICsgaW5zZXJ0aW9uTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGNodW5rLCBiZWZvcmUgdGhlIGljb24gbWFyay5cbiAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoY2h1bmsuc3ViYXJyYXkoMCwgaWNvbk1hcmtJbmRleCkpO1xuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgaW5zZXJ0aW9uIGFmdGVyIHRoZSBpY29uIG1hcmsuXG4gICAgICAgICAgICAgICAgcmVwbGFjZWQuc2V0KGVuY29kZWRJbnNlcnRpb24sIGljb25NYXJrSW5kZXgpO1xuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgcmVzdCBvZiB0aGUgY2h1bmsgYWZ0ZXIgdGhlIGljb24gbWFyay5cbiAgICAgICAgICAgICAgICByZXBsYWNlZC5zZXQoY2h1bmsuc3ViYXJyYXkoaWNvbk1hcmtJbmRleCArIGljb25NYXJrTGVuZ3RoKSwgaWNvbk1hcmtJbmRleCArIGluc2VydGlvbkxlbmd0aCk7XG4gICAgICAgICAgICAgICAgY2h1bmsgPSByZXBsYWNlZDtcbiAgICAgICAgICAgICAgICBpc01hcmtSZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUhlYWRJbnNlcnRpb25UcmFuc2Zvcm1TdHJlYW0oaW5zZXJ0KSB7XG4gICAgbGV0IGluc2VydGVkID0gZmFsc2U7XG4gICAgLy8gV2UgbmVlZCB0byB0cmFjayBpZiB0aGlzIHRyYW5zZm9ybSBzYXcgYW55IGJ5dGVzIGJlY2F1c2UgaWYgaXQgZGlkbid0XG4gICAgLy8gd2Ugd29uJ3Qgd2FudCB0byBpbnNlcnQgYW55IHNlcnZlciBIVE1MIGF0IGFsbFxuICAgIGxldCBoYXNCeXRlcyA9IGZhbHNlO1xuICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgYXN5bmMgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgaGFzQnl0ZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0aW9uID0gYXdhaXQgaW5zZXJ0KCk7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRJbnNlcnRpb24gPSBlbmNvZGVyLmVuY29kZShpbnNlcnRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEluc2VydGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gKEBFdGhhbi1BcnJvd29vZCk6IFJlcGxhY2UgdGhlIGdlbmVyaWMgYGluZGV4T2ZVaW50OEFycmF5YCBtZXRob2Qgd2l0aCBzb21ldGhpbmcgZmluZWx5IHR1bmVkIGZvciB0aGUgc3Vic2V0IG9mIHRoaW5ncyBhY3R1YWxseSBiZWluZyBjaGVja2VkIGZvci5cbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5IRUFEKTtcbiAgICAgICAgICAgICAgICAvLyBJbiBmdWxseSBzdGF0aWMgcmVuZGVyaW5nIG9yIG5vbiBQUFIgcmVuZGVyaW5nIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vIGAvaGVhZD5gIHdpbGwgYWx3YXlzIGJlIGZvdW5kIGluIHRoZSBjaHVuayBpbiBmaXJzdCBjaHVuayByZW5kZXJpbmcuXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmNvZGVkSW5zZXJ0aW9uID0gZW5jb2Rlci5lbmNvZGUoaW5zZXJ0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgdG90YWwgY291bnQgb2YgdGhlIGJ5dGVzIGluIHRoZSBjaHVuayBhbmQgdGhlIGluc2VydGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZS5nLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2h1bmsgPSA8aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIj48L2hlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnRpb24gPSA8c2NyaXB0Pi4uLjwvc2NyaXB0PlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0ID0gPGhlYWQ+PG1ldGEgY2hhcnNldD1cInV0Zi04XCI+IFsgPHNjcmlwdD4uLi48L3NjcmlwdD4gXSA8L2hlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRlZEhlYWRDb250ZW50ID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsubGVuZ3RoICsgZW5jb2RlZEluc2VydGlvbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBjaHVuaywgYmVmb3JlIHRoZSBoZWFkIHRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWRIZWFkQ29udGVudC5zZXQoY2h1bmsuc2xpY2UoMCwgaW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgc2VydmVyIGluc2VydGVkIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkSGVhZENvbnRlbnQuc2V0KGVuY29kZWRJbnNlcnRpb24sIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgY2h1bmtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkSGVhZENvbnRlbnQuc2V0KGNodW5rLnNsaWNlKGluZGV4KSwgaW5kZXggKyBlbmNvZGVkSW5zZXJ0aW9uLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoaW5zZXJ0ZWRIZWFkQ29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGluc2VydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgaGFwcGVucyBpbiBQUFIgcmVuZGVyaW5nIGR1cmluZyBuZXh0IHN0YXJ0LCB3aGVuIHRoZSBwYWdlIGlzIHBhcnRpYWxseSByZW5kZXJlZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgcGFnZSByZXN1bWVzLCB0aGUgaGVhZCB0YWcgd2lsbCBiZSBmb3VuZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBjaHVuay5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlcmUgd2UganVzdCBuZWVkIHRvIGFwcGVuZCB0aGUgaW5zZXJ0aW9uIGFuZCBjaHVuayB0byB0aGUgY3VycmVudCBzdHJlYW0uXG4gICAgICAgICAgICAgICAgICAgIC8vIGUuZy5cbiAgICAgICAgICAgICAgICAgICAgLy8gUFBSLXN0YXRpYzogPGhlYWQ+Li4uPC9oZWFkPjxib2R5PiBbIHJlc3VtZSBjb250ZW50IF0gPC9ib2R5PlxuICAgICAgICAgICAgICAgICAgICAvLyBQUFItcmVzdW1lOiBbIGluc2VydGlvbiBdIFsgcmVzdCBjb250ZW50IF1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc2VydGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKGluc2VydGlvbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGZsdXNoIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBiZWZvcmUgY2xvc2luZyBpZiB0aGVyZSdzIGFueXRoaW5nIHJlbWFpbmluZyB0byBpbnNlcnQuXG4gICAgICAgICAgICBpZiAoaGFzQnl0ZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRpb24gPSBhd2FpdCBpbnNlcnQoKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShpbnNlcnRpb24pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8vIFN1ZmZpeCBhZnRlciBtYWluIGJvZHkgY29udGVudCAtIHNjcmlwdHMgYmVmb3JlIDwvYm9keT4sXG4vLyBidXQgd2FpdCBmb3IgdGhlIG1ham9yIGNodW5rcyB0byBiZSBlbnF1ZXVlZC5cbmZ1bmN0aW9uIGNyZWF0ZURlZmVycmVkU3VmZml4U3RyZWFtKHN1ZmZpeCkge1xuICAgIGxldCBmbHVzaGVkID0gZmFsc2U7XG4gICAgbGV0IHBlbmRpbmc7XG4gICAgY29uc3QgZmx1c2ggPSAoY29udHJvbGxlcik9PntcbiAgICAgICAgY29uc3QgZGV0YWNoZWQgPSBuZXcgX2RldGFjaGVkcHJvbWlzZS5EZXRhY2hlZFByb21pc2UoKTtcbiAgICAgICAgcGVuZGluZyA9IGRldGFjaGVkO1xuICAgICAgICAoMCwgX3NjaGVkdWxlci5zY2hlZHVsZUltbWVkaWF0ZSkoKCk9PntcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKHN1ZmZpeCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAge1xuICAgICAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGVucXVldWluZyBpdCBjYW4ndCBiZSBkdWUgdG8gdGhpc1xuICAgICAgICAgICAgLy8gdHJhbnNmb3JtZXJzIGZhdWx0LiBJdCdzIGxpa2VseSBkdWUgdG8gdGhlIGNvbnRyb2xsZXIgYmVpbmdcbiAgICAgICAgICAgIC8vIGVycm9yZWQgZHVlIHRvIHRoZSBzdHJlYW0gYmVpbmcgY2FuY2VsbGVkLlxuICAgICAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZGV0YWNoZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZmx1c2hlZCwgd2UncmUgZG9uZS5cbiAgICAgICAgICAgIGlmIChmbHVzaGVkKSByZXR1cm47XG4gICAgICAgICAgICAvLyBTY2hlZHVsZSB0aGUgZmx1c2ggdG8gaGFwcGVuLlxuICAgICAgICAgICAgZmx1c2hlZCA9IHRydWU7XG4gICAgICAgICAgICBmbHVzaChjb250cm9sbGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2ggKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChwZW5kaW5nKSByZXR1cm4gcGVuZGluZy5wcm9taXNlO1xuICAgICAgICAgICAgaWYgKGZsdXNoZWQpIHJldHVybjtcbiAgICAgICAgICAgIC8vIEZsdXNoIG5vdy5cbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShzdWZmaXgpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRmxpZ2h0RGF0YUluamVjdGlvblRyYW5zZm9ybVN0cmVhbShzdHJlYW0sIGRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmspIHtcbiAgICBsZXQgaHRtbFN0cmVhbUZpbmlzaGVkID0gZmFsc2U7XG4gICAgbGV0IHB1bGwgPSBudWxsO1xuICAgIGxldCBkb25lUHVsbGluZyA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIHN0YXJ0T3JDb250aW51ZVB1bGxpbmcoY29udHJvbGxlcikge1xuICAgICAgICBpZiAoIXB1bGwpIHtcbiAgICAgICAgICAgIHB1bGwgPSBzdGFydFB1bGxpbmcoY29udHJvbGxlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1bGw7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UHVsbGluZyhjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgaWYgKGRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmspIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IHN0cmVhbWluZyBmbHVzaFxuICAgICAgICAgICAgLy8gV2UgYXJlIGJ1ZmZlcmluZyBoZXJlIGZvciB0aGUgaW5saW5lZCBkYXRhIHN0cmVhbSBiZWNhdXNlIHRoZVxuICAgICAgICAgICAgLy8gXCJzaGVsbFwiIHN0cmVhbSBtaWdodCBiZSBjaHVua2VuaXplZCBhZ2FpbiBieSB0aGUgdW5kZXJseWluZyBzdHJlYW1cbiAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uLCBlLmcuIHdpdGggYSBzcGVjaWZpYyBoaWdoLXdhdGVyIG1hcmsuIFRvIGVuc3VyZSBpdCdzXG4gICAgICAgICAgICAvLyB0aGUgc2FmZSB0aW1pbmcgdG8gcGlwZSB0aGUgZGF0YSBzdHJlYW0sIHRoaXMgZXh0cmEgdGljayBpc1xuICAgICAgICAgICAgLy8gbmVjZXNzYXJ5LlxuICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgc3RhcnQgcmVhZGluZyB1bnRpbCB3ZSd2ZSBsZWZ0IHRoZSBjdXJyZW50IFRhc2sgdG8gZW5zdXJlXG4gICAgICAgICAgICAvLyB0aGF0IGl0J3MgaW5zZXJ0ZWQgYWZ0ZXIgZmx1c2hpbmcgdGhlIHNoZWxsLiBOb3RlIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgLy8gbWlnaHQgZ2V0IHN0YWxlIGlmIGltcGwgZGV0YWlscyBvZiBGaXp6IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAgYXdhaXQgKDAsIF9zY2hlZHVsZXIuYXRMZWFzdE9uZVRhc2spKCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdoaWxlKHRydWUpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZVB1bGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gcHJpb3JpdGl6ZSBIVE1MIG92ZXIgUlNDIGRhdGEuXG4gICAgICAgICAgICAgICAgLy8gVGhlIFNTUiByZW5kZXIgaXMgYmFzZWQgb24gdGhlIHNhbWUgUlNDIHN0cmVhbSwgc28gd2hlbiB3ZSBnZXQgYSBuZXcgUlNDIGNodW5rLFxuICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGxpa2VseSB0byBwcm9kdWNlIGFuIEhUTUwgY2h1bmsgYXMgd2VsbCwgc28gZ2l2ZSBpdCBhIGNoYW5jZSB0byBmbHVzaCBmaXJzdC5cbiAgICAgICAgICAgICAgICBpZiAoIWRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmsgJiYgIWh0bWxTdHJlYW1GaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCAoMCwgX3NjaGVkdWxlci5hdExlYXN0T25lVGFzaykoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgaWYgKCFkZWxheURhdGFVbnRpbEZpcnN0SHRtbENodW5rKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRPckNvbnRpbnVlUHVsbGluZyhjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNmb3JtIChjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBzdHJlYW1pbmcgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBzdGFydGVkIHlldC5cbiAgICAgICAgICAgIGlmIChkZWxheURhdGFVbnRpbEZpcnN0SHRtbENodW5rKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRPckNvbnRpbnVlUHVsbGluZyhjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2ggKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGh0bWxTdHJlYW1GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZG9uZVB1bGxpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRPckNvbnRpbnVlUHVsbGluZyhjb250cm9sbGVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuY29uc3QgQ0xPU0VfVEFHID0gJzwvYm9keT48L2h0bWw+Jztcbi8qKlxuICogVGhpcyB0cmFuc2Zvcm0gc3RyZWFtIG1vdmVzIHRoZSBzdWZmaXggdG8gdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBzbyByZXN1bHRzXG4gKiBsaWtlIGA8L2JvZHk+PC9odG1sPjxzY3JpcHQ+Li4uPC9zY3JpcHQ+YCB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvXG4gKiBgPHNjcmlwdD4uLi48L3NjcmlwdD48L2JvZHk+PC9odG1sPmAuXG4gKi8gZnVuY3Rpb24gY3JlYXRlTW92ZVN1ZmZpeFN0cmVhbSgpIHtcbiAgICBsZXQgZm91bmRTdWZmaXggPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGlmIChmb3VuZFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSAoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLmluZGV4T2ZVaW50OEFycmF5KShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGZvdW5kU3VmZml4ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2hvbGUgY2h1bmsgaXMgdGhlIHN1ZmZpeCwgdGhlbiBkb24ndCB3cml0ZSBhbnl0aGluZywgaXQgd2lsbFxuICAgICAgICAgICAgICAgIC8vIGJlIHdyaXR0ZW4gaW4gdGhlIGZsdXNoLlxuICAgICAgICAgICAgICAgIGlmIChjaHVuay5sZW5ndGggPT09IF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkJPRFlfQU5EX0hUTUwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBwYXJ0IGJlZm9yZSB0aGUgc3VmZml4LlxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IGNodW5rLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoYmVmb3JlKTtcbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgc3VmZml4IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNodW5rLCB3ZSBuZWVkXG4gICAgICAgICAgICAgICAgLy8gdG8gc3BsaXQgdGhlIGNodW5rIGludG8gdHdvIHBhcnRzLlxuICAgICAgICAgICAgICAgIGlmIChjaHVuay5sZW5ndGggPiBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5CT0RZX0FORF9IVE1MLmxlbmd0aCArIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgcGFydCBhZnRlciB0aGUgc3VmZml4LlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZnRlciA9IGNodW5rLnNsaWNlKGluZGV4ICsgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoYWZ0ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2ggKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIEV2ZW4gaWYgd2UgZGlkbid0IGZpbmQgdGhlIHN1ZmZpeCwgdGhlIEhUTUwgaXMgbm90IHZhbGlkIGlmIHdlIGRvbid0XG4gICAgICAgICAgICAvLyBhZGQgaXQsIHNvIGluc2VydCBpdCBhdCB0aGUgZW5kLlxuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkJPRFlfQU5EX0hUTUwpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTdHJpcERvY3VtZW50Q2xvc2luZ1RhZ3NUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICB0cmFuc2Zvcm0gKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAvLyBXZSByZWx5IG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2h1bmtzIHdpbGwgbmV2ZXIgYnJlYWsgYWNyb3NzIGEgY29kZSB1bml0LlxuICAgICAgICAgICAgLy8gVGhpcyBpcyByZWFzb25hYmxlIGJlY2F1c2Ugd2UgY3VycmVudGx5IGNvbmNhdCBhbGwgb2YgUmVhY3QncyBvdXRwdXQgZnJvbSBhIHNpbmdsZVxuICAgICAgICAgICAgLy8gZmx1c2ggaW50byBvbmUgY2h1bmsgYmVmb3JlIHN0cmVhbWluZyBpdCBmb3J3YXJkIHdoaWNoIG1lYW5zIHRoZSBjaHVuayB3aWxsIHJlcHJlc2VudFxuICAgICAgICAgICAgLy8gYSBzaW5nbGUgY29oZXJlbnQgdXRmLTggc3RyaW5nLiBUaGlzIGlzIG5vdCBzYWZlIHRvIHVzZSBpZiB3ZSBjaGFuZ2Ugb3VyIHN0cmVhbWluZyB0byBub1xuICAgICAgICAgICAgLy8gbG9uZ2VyIGRvIHRoaXMgbGFyZ2UgYnVmZmVyZWQgY2h1bmtcbiAgICAgICAgICAgIGlmICgoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLmlzRXF1aXZhbGVudFVpbnQ4QXJyYXlzKShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTCkgfHwgKDAsIF91aW50OGFycmF5aGVscGVycy5pc0VxdWl2YWxlbnRVaW50OEFycmF5cykoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuQ0xPU0VELkJPRFkpIHx8ICgwLCBfdWludDhhcnJheWhlbHBlcnMuaXNFcXVpdmFsZW50VWludDhBcnJheXMpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5IVE1MKSkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBlbnRpcmUgY2h1bmsgaXMgdGhlIGNsb3NpbmcgdGFnczsgcmV0dXJuIHdpdGhvdXQgZW5xdWV1ZWluZyBhbnl0aGluZy5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhlc2UgdGFncyB3aWxsIGdvIGF0IHRvZ2V0aGVyIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50IGFuZCB0aGF0XG4gICAgICAgICAgICAvLyB0aGV5IHdvbid0IGFwcGVhciBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC4gVGhpcyBpcyBub3QgcmVhbGx5IGEgc2FmZSBhc3N1bXB0aW9uXG4gICAgICAgICAgICAvLyBidXQgdW50aWwgd2UgcmV2YW1wIG91ciBzdHJlYW1pbmcgaW5mcmEgdGhpcyBpcyBhIHBlcmZvcm1hbnQgd2F5IHRvIHN0cmluZyB0aGUgdGFnc1xuICAgICAgICAgICAgY2h1bmsgPSAoMCwgX3VpbnQ4YXJyYXloZWxwZXJzLnJlbW92ZUZyb21VaW50OEFycmF5KShjaHVuaywgX2VuY29kZWR0YWdzLkVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWSk7XG4gICAgICAgICAgICBjaHVuayA9ICgwLCBfdWludDhhcnJheWhlbHBlcnMucmVtb3ZlRnJvbVVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLkNMT1NFRC5IVE1MKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvb3RMYXlvdXRWYWxpZGF0b3JTdHJlYW0oKSB7XG4gICAgbGV0IGZvdW5kSHRtbCA9IGZhbHNlO1xuICAgIGxldCBmb3VuZEJvZHkgPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIGFzeW5jIHRyYW5zZm9ybSAoY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIC8vIFBlZWsgaW50byB0aGUgc3RyZWFtZWQgY2h1bmsgdG8gc2VlIGlmIHRoZSB0YWdzIGFyZSBwcmVzZW50LlxuICAgICAgICAgICAgaWYgKCFmb3VuZEh0bWwgJiYgKDAsIF91aW50OGFycmF5aGVscGVycy5pbmRleE9mVWludDhBcnJheSkoY2h1bmssIF9lbmNvZGVkdGFncy5FTkNPREVEX1RBR1MuT1BFTklORy5IVE1MKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZm91bmRIdG1sID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZm91bmRCb2R5ICYmICgwLCBfdWludDhhcnJheWhlbHBlcnMuaW5kZXhPZlVpbnQ4QXJyYXkpKGNodW5rLCBfZW5jb2RlZHRhZ3MuRU5DT0RFRF9UQUdTLk9QRU5JTkcuQk9EWSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGZvdW5kQm9keSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICB9LFxuICAgICAgICBmbHVzaCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29uc3QgbWlzc2luZ1RhZ3MgPSBbXTtcbiAgICAgICAgICAgIGlmICghZm91bmRIdG1sKSBtaXNzaW5nVGFncy5wdXNoKCdodG1sJyk7XG4gICAgICAgICAgICBpZiAoIWZvdW5kQm9keSkgbWlzc2luZ1RhZ3MucHVzaCgnYm9keScpO1xuICAgICAgICAgICAgaWYgKCFtaXNzaW5nVGFncy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShgPGh0bWwgaWQ9XCJfX25leHRfZXJyb3JfX1wiPlxuICAgICAgICAgICAgPHRlbXBsYXRlXG4gICAgICAgICAgICAgIGRhdGEtbmV4dC1lcnJvci1tZXNzYWdlPVwiTWlzc2luZyAke21pc3NpbmdUYWdzLm1hcCgoYyk9PmA8JHtjfT5gKS5qb2luKG1pc3NpbmdUYWdzLmxlbmd0aCA+IDEgPyAnIGFuZCAnIDogJycpfSB0YWdzIGluIHRoZSByb290IGxheW91dC5cXG5SZWFkIG1vcmUgYXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlzc2luZy1yb290LWxheW91dC10YWdzXCJcbiAgICAgICAgICAgICAgZGF0YS1uZXh0LWVycm9yLWRpZ2VzdD1cIiR7X2NvbnN0YW50czEuTUlTU0lOR19ST09UX1RBR1NfRVJST1J9XCJcbiAgICAgICAgICAgICAgZGF0YS1uZXh0LWVycm9yLXN0YWNrPVwiXCJcbiAgICAgICAgICAgID48L3RlbXBsYXRlPlxuICAgICAgICAgIGApKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY2hhaW5UcmFuc2Zvcm1lcnMocmVhZGFibGUsIHRyYW5zZm9ybWVycykge1xuICAgIGxldCBzdHJlYW0gPSByZWFkYWJsZTtcbiAgICBmb3IgKGNvbnN0IHRyYW5zZm9ybWVyIG9mIHRyYW5zZm9ybWVycyl7XG4gICAgICAgIGlmICghdHJhbnNmb3JtZXIpIGNvbnRpbnVlO1xuICAgICAgICBzdHJlYW0gPSBzdHJlYW0ucGlwZVRocm91Z2godHJhbnNmb3JtZXIpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyZWFtO1xufVxuYXN5bmMgZnVuY3Rpb24gY29udGludWVGaXp6U3RyZWFtKHJlbmRlclN0cmVhbSwgeyBzdWZmaXgsIGlubGluZWREYXRhU3RyZWFtLCBpc1N0YXRpY0dlbmVyYXRpb24sIGlzQnVpbGRUaW1lUHJlcmVuZGVyaW5nLCBidWlsZElkLCBnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwsIGdldFNlcnZlckluc2VydGVkTWV0YWRhdGEsIHZhbGlkYXRlUm9vdExheW91dCB9KSB7XG4gICAgLy8gU3VmZml4IGl0c2VsZiBtaWdodCBjb250YWluIGNsb3NlIHRhZ3MgYXQgdGhlIGVuZCwgc28gd2UgbmVlZCB0byBzcGxpdCBpdC5cbiAgICBjb25zdCBzdWZmaXhVbmNsb3NlZCA9IHN1ZmZpeCA/IHN1ZmZpeC5zcGxpdChDTE9TRV9UQUcsIDEpWzBdIDogbnVsbDtcbiAgICAvLyBJZiB3ZSdyZSBnZW5lcmF0aW5nIHN0YXRpYyBIVE1MIHdlIG5lZWQgdG8gd2FpdCBmb3IgaXQgdG8gcmVzb2x2ZSBiZWZvcmUgY29udGludWluZy5cbiAgICBpZiAoaXNTdGF0aWNHZW5lcmF0aW9uKSB7XG4gICAgICAgIGF3YWl0IHJlbmRlclN0cmVhbS5hbGxSZWFkeTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYWluVHJhbnNmb3JtZXJzKHJlbmRlclN0cmVhbSwgW1xuICAgICAgICAvLyBCdWZmZXIgZXZlcnl0aGluZyB0byBhdm9pZCBmbHVzaGluZyB0b28gZnJlcXVlbnRseVxuICAgICAgICBjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbSgpLFxuICAgICAgICAvLyBBZGQgYnVpbGQgaWQgY29tbWVudCB0byBzdGFydCBvZiB0aGUgSFRNTCBkb2N1bWVudCAoaW4gZXhwb3J0IG1vZGUpXG4gICAgICAgIGNyZWF0ZVByZWZldGNoQ29tbWVudFN0cmVhbShpc0J1aWxkVGltZVByZXJlbmRlcmluZywgYnVpbGRJZCksXG4gICAgICAgIC8vIFRyYW5zZm9ybSBtZXRhZGF0YVxuICAgICAgICBjcmVhdGVNZXRhZGF0YVRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhKSxcbiAgICAgICAgLy8gSW5zZXJ0IHN1ZmZpeCBjb250ZW50XG4gICAgICAgIHN1ZmZpeFVuY2xvc2VkICE9IG51bGwgJiYgc3VmZml4VW5jbG9zZWQubGVuZ3RoID4gMCA/IGNyZWF0ZURlZmVycmVkU3VmZml4U3RyZWFtKHN1ZmZpeFVuY2xvc2VkKSA6IG51bGwsXG4gICAgICAgIC8vIEluc2VydCB0aGUgaW5saW5lZCBkYXRhIChGbGlnaHQgZGF0YSwgZm9ybSBzdGF0ZSwgZXRjLikgc3RyZWFtIGludG8gdGhlIEhUTUxcbiAgICAgICAgaW5saW5lZERhdGFTdHJlYW0gPyBjcmVhdGVGbGlnaHREYXRhSW5qZWN0aW9uVHJhbnNmb3JtU3RyZWFtKGlubGluZWREYXRhU3RyZWFtLCB0cnVlKSA6IG51bGwsXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSByb290IGxheW91dCBmb3IgbWlzc2luZyBodG1sIG9yIGJvZHkgdGFnc1xuICAgICAgICB2YWxpZGF0ZVJvb3RMYXlvdXQgPyBjcmVhdGVSb290TGF5b3V0VmFsaWRhdG9yU3RyZWFtKCkgOiBudWxsLFxuICAgICAgICAvLyBDbG9zZSB0YWdzIHNob3VsZCBhbHdheXMgYmUgZGVmZXJyZWQgdG8gdGhlIGVuZFxuICAgICAgICBjcmVhdGVNb3ZlU3VmZml4U3RyZWFtKCksXG4gICAgICAgIC8vIFNwZWNpYWwgaGVhZCBpbnNlcnRpb25zXG4gICAgICAgIC8vIFRPRE8tQVBQOiBJbnNlcnQgc2VydmVyIHNpZGUgaHRtbCB0byBlbmQgb2YgaGVhZCBpbiBhcHAgbGF5b3V0IHJlbmRlcmluZywgdG8gYXZvaWRcbiAgICAgICAgLy8gaHlkcmF0aW9uIGVycm9ycy4gUmVtb3ZlIHRoaXMgb25jZSBpdCdzIHJlYWR5IHRvIGJlIGhhbmRsZWQgYnkgcmVhY3QgaXRzZWxmLlxuICAgICAgICBjcmVhdGVIZWFkSW5zZXJ0aW9uVHJhbnNmb3JtU3RyZWFtKGdldFNlcnZlckluc2VydGVkSFRNTClcbiAgICBdKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnRpbnVlRHluYW1pY1ByZXJlbmRlcihwcmVyZW5kZXJTdHJlYW0sIHsgZ2V0U2VydmVySW5zZXJ0ZWRIVE1MLCBnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhIH0pIHtcbiAgICByZXR1cm4gcHJlcmVuZGVyU3RyZWFtLy8gQnVmZmVyIGV2ZXJ5dGhpbmcgdG8gYXZvaWQgZmx1c2hpbmcgdG9vIGZyZXF1ZW50bHlcbiAgICAucGlwZVRocm91Z2goY3JlYXRlQnVmZmVyZWRUcmFuc2Zvcm1TdHJlYW0oKSkucGlwZVRocm91Z2goY3JlYXRlU3RyaXBEb2N1bWVudENsb3NpbmdUYWdzVHJhbnNmb3JtKCkpLy8gSW5zZXJ0IGdlbmVyYXRlZCB0YWdzIHRvIGhlYWRcbiAgICAucGlwZVRocm91Z2goY3JlYXRlSGVhZEluc2VydGlvblRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwpKS8vIFRyYW5zZm9ybSBtZXRhZGF0YVxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVNZXRhZGF0YVRyYW5zZm9ybVN0cmVhbShnZXRTZXJ2ZXJJbnNlcnRlZE1ldGFkYXRhKSk7XG59XG5hc3luYyBmdW5jdGlvbiBjb250aW51ZVN0YXRpY1ByZXJlbmRlcihwcmVyZW5kZXJTdHJlYW0sIHsgaW5saW5lZERhdGFTdHJlYW0sIGdldFNlcnZlckluc2VydGVkSFRNTCwgZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSwgaXNCdWlsZFRpbWVQcmVyZW5kZXJpbmcsIGJ1aWxkSWQgfSkge1xuICAgIHJldHVybiBwcmVyZW5kZXJTdHJlYW0vLyBCdWZmZXIgZXZlcnl0aGluZyB0byBhdm9pZCBmbHVzaGluZyB0b28gZnJlcXVlbnRseVxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbSgpKS8vIEFkZCBidWlsZCBpZCBjb21tZW50IHRvIHN0YXJ0IG9mIHRoZSBIVE1MIGRvY3VtZW50IChpbiBleHBvcnQgbW9kZSlcbiAgICAucGlwZVRocm91Z2goY3JlYXRlUHJlZmV0Y2hDb21tZW50U3RyZWFtKGlzQnVpbGRUaW1lUHJlcmVuZGVyaW5nLCBidWlsZElkKSkvLyBJbnNlcnQgZ2VuZXJhdGVkIHRhZ3MgdG8gaGVhZFxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVIZWFkSW5zZXJ0aW9uVHJhbnNmb3JtU3RyZWFtKGdldFNlcnZlckluc2VydGVkSFRNTCkpLy8gVHJhbnNmb3JtIG1ldGFkYXRhXG4gICAgLnBpcGVUaHJvdWdoKGNyZWF0ZU1ldGFkYXRhVHJhbnNmb3JtU3RyZWFtKGdldFNlcnZlckluc2VydGVkTWV0YWRhdGEpKS8vIEluc2VydCB0aGUgaW5saW5lZCBkYXRhIChGbGlnaHQgZGF0YSwgZm9ybSBzdGF0ZSwgZXRjLikgc3RyZWFtIGludG8gdGhlIEhUTUxcbiAgICAucGlwZVRocm91Z2goY3JlYXRlRmxpZ2h0RGF0YUluamVjdGlvblRyYW5zZm9ybVN0cmVhbShpbmxpbmVkRGF0YVN0cmVhbSwgdHJ1ZSkpLy8gQ2xvc2UgdGFncyBzaG91bGQgYWx3YXlzIGJlIGRlZmVycmVkIHRvIHRoZSBlbmRcbiAgICAucGlwZVRocm91Z2goY3JlYXRlTW92ZVN1ZmZpeFN0cmVhbSgpKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvbnRpbnVlRHluYW1pY0hUTUxSZXN1bWUocmVuZGVyU3RyZWFtLCB7IGRlbGF5RGF0YVVudGlsRmlyc3RIdG1sQ2h1bmssIGlubGluZWREYXRhU3RyZWFtLCBnZXRTZXJ2ZXJJbnNlcnRlZEhUTUwsIGdldFNlcnZlckluc2VydGVkTWV0YWRhdGEgfSkge1xuICAgIHJldHVybiByZW5kZXJTdHJlYW0vLyBCdWZmZXIgZXZlcnl0aGluZyB0byBhdm9pZCBmbHVzaGluZyB0b28gZnJlcXVlbnRseVxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVCdWZmZXJlZFRyYW5zZm9ybVN0cmVhbSgpKS8vIEluc2VydCBnZW5lcmF0ZWQgdGFncyB0byBoZWFkXG4gICAgLnBpcGVUaHJvdWdoKGNyZWF0ZUhlYWRJbnNlcnRpb25UcmFuc2Zvcm1TdHJlYW0oZ2V0U2VydmVySW5zZXJ0ZWRIVE1MKSkvLyBUcmFuc2Zvcm0gbWV0YWRhdGFcbiAgICAucGlwZVRocm91Z2goY3JlYXRlTWV0YWRhdGFUcmFuc2Zvcm1TdHJlYW0oZ2V0U2VydmVySW5zZXJ0ZWRNZXRhZGF0YSkpLy8gSW5zZXJ0IHRoZSBpbmxpbmVkIGRhdGEgKEZsaWdodCBkYXRhLCBmb3JtIHN0YXRlLCBldGMuKSBzdHJlYW0gaW50byB0aGUgSFRNTFxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVGbGlnaHREYXRhSW5qZWN0aW9uVHJhbnNmb3JtU3RyZWFtKGlubGluZWREYXRhU3RyZWFtLCBkZWxheURhdGFVbnRpbEZpcnN0SHRtbENodW5rKSkvLyBDbG9zZSB0YWdzIHNob3VsZCBhbHdheXMgYmUgZGVmZXJyZWQgdG8gdGhlIGVuZFxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVNb3ZlU3VmZml4U3RyZWFtKCkpO1xufVxuZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRDbG9zaW5nU3RyZWFtKCkge1xuICAgIHJldHVybiBzdHJlYW1Gcm9tU3RyaW5nKENMT1NFX1RBRyk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vZGUtd2ViLXN0cmVhbXMtaGVscGVyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/stream-utils/node-web-streams-helper.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/server/stream-utils/uint8array-helpers.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Find the starting index of Uint8Array `b` within Uint8Array `a`.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n indexOfUint8Array: function() {\n return indexOfUint8Array;\n },\n isEquivalentUint8Arrays: function() {\n return isEquivalentUint8Arrays;\n },\n removeFromUint8Array: function() {\n return removeFromUint8Array;\n }\n});\nfunction indexOfUint8Array(a, b) {\n if (b.length === 0) return 0;\n if (a.length === 0 || b.length > a.length) return -1;\n // start iterating through `a`\n for(let i = 0; i <= a.length - b.length; i++){\n let completeMatch = true;\n // from index `i`, iterate through `b` and check for mismatch\n for(let j = 0; j < b.length; j++){\n // if the values do not match, then this isn't a complete match, exit `b` iteration early and iterate to next index of `a`.\n if (a[i + j] !== b[j]) {\n completeMatch = false;\n break;\n }\n }\n if (completeMatch) {\n return i;\n }\n }\n return -1;\n}\nfunction isEquivalentUint8Arrays(a, b) {\n if (a.length !== b.length) return false;\n for(let i = 0; i < a.length; i++){\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nfunction removeFromUint8Array(a, b) {\n const tagIndex = indexOfUint8Array(a, b);\n if (tagIndex === 0) return a.subarray(b.length);\n if (tagIndex > -1) {\n const removed = new Uint8Array(a.length - b.length);\n removed.set(a.slice(0, tagIndex));\n removed.set(a.slice(tagIndex + b.length), tagIndex);\n return removed;\n } else {\n return a;\n }\n}\n\n//# sourceMappingURL=uint8array-helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9zdHJlYW0tdXRpbHMvdWludDhhcnJheS1oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxJQUFpQjtBQUNqQiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQTtBQUNBLHVCQUF1QixjQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHN0cmVhbS11dGlsc1xcdWludDhhcnJheS1oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmluZCB0aGUgc3RhcnRpbmcgaW5kZXggb2YgVWludDhBcnJheSBgYmAgd2l0aGluIFVpbnQ4QXJyYXkgYGFgLlxuICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaW5kZXhPZlVpbnQ4QXJyYXk6IG51bGwsXG4gICAgaXNFcXVpdmFsZW50VWludDhBcnJheXM6IG51bGwsXG4gICAgcmVtb3ZlRnJvbVVpbnQ4QXJyYXk6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaW5kZXhPZlVpbnQ4QXJyYXk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5kZXhPZlVpbnQ4QXJyYXk7XG4gICAgfSxcbiAgICBpc0VxdWl2YWxlbnRVaW50OEFycmF5czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0VxdWl2YWxlbnRVaW50OEFycmF5cztcbiAgICB9LFxuICAgIHJlbW92ZUZyb21VaW50OEFycmF5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUZyb21VaW50OEFycmF5O1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gaW5kZXhPZlVpbnQ4QXJyYXkoYSwgYikge1xuICAgIGlmIChiLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgaWYgKGEubGVuZ3RoID09PSAwIHx8IGIubGVuZ3RoID4gYS5sZW5ndGgpIHJldHVybiAtMTtcbiAgICAvLyBzdGFydCBpdGVyYXRpbmcgdGhyb3VnaCBgYWBcbiAgICBmb3IobGV0IGkgPSAwOyBpIDw9IGEubGVuZ3RoIC0gYi5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGxldCBjb21wbGV0ZU1hdGNoID0gdHJ1ZTtcbiAgICAgICAgLy8gZnJvbSBpbmRleCBgaWAsIGl0ZXJhdGUgdGhyb3VnaCBgYmAgYW5kIGNoZWNrIGZvciBtaXNtYXRjaFxuICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgYi5sZW5ndGg7IGorKyl7XG4gICAgICAgICAgICAvLyBpZiB0aGUgdmFsdWVzIGRvIG5vdCBtYXRjaCwgdGhlbiB0aGlzIGlzbid0IGEgY29tcGxldGUgbWF0Y2gsIGV4aXQgYGJgIGl0ZXJhdGlvbiBlYXJseSBhbmQgaXRlcmF0ZSB0byBuZXh0IGluZGV4IG9mIGBhYC5cbiAgICAgICAgICAgIGlmIChhW2kgKyBqXSAhPT0gYltqXSkge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGxldGVNYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuZnVuY3Rpb24gaXNFcXVpdmFsZW50VWludDhBcnJheXMoYSwgYikge1xuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gcmVtb3ZlRnJvbVVpbnQ4QXJyYXkoYSwgYikge1xuICAgIGNvbnN0IHRhZ0luZGV4ID0gaW5kZXhPZlVpbnQ4QXJyYXkoYSwgYik7XG4gICAgaWYgKHRhZ0luZGV4ID09PSAwKSByZXR1cm4gYS5zdWJhcnJheShiLmxlbmd0aCk7XG4gICAgaWYgKHRhZ0luZGV4ID4gLTEpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IG5ldyBVaW50OEFycmF5KGEubGVuZ3RoIC0gYi5sZW5ndGgpO1xuICAgICAgICByZW1vdmVkLnNldChhLnNsaWNlKDAsIHRhZ0luZGV4KSk7XG4gICAgICAgIHJlbW92ZWQuc2V0KGEuc2xpY2UodGFnSW5kZXggKyBiLmxlbmd0aCksIHRhZ0luZGV4KTtcbiAgICAgICAgcmV0dXJuIHJlbW92ZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11aW50OGFycmF5LWhlbHBlcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/stream-utils/uint8array-helpers.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/error.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/server/web/error.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PageSignatureError: function() {\n return PageSignatureError;\n },\n RemovedPageError: function() {\n return RemovedPageError;\n },\n RemovedUAError: function() {\n return RemovedUAError;\n }\n});\nclass PageSignatureError extends Error {\n constructor({ page }){\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `);\n }\n}\nclass RemovedPageError extends Error {\n constructor(){\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `);\n }\n}\nclass RemovedUAError extends Error {\n constructor(){\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `);\n }\n}\n\n//# sourceMappingURL=error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBSUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLGtCQUFrQixNQUFNO0FBQ3hCLGlDQUFpQyxLQUFLO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcd2ViXFxlcnJvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFBhZ2VTaWduYXR1cmVFcnJvcjogbnVsbCxcbiAgICBSZW1vdmVkUGFnZUVycm9yOiBudWxsLFxuICAgIFJlbW92ZWRVQUVycm9yOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFBhZ2VTaWduYXR1cmVFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQYWdlU2lnbmF0dXJlRXJyb3I7XG4gICAgfSxcbiAgICBSZW1vdmVkUGFnZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlbW92ZWRQYWdlRXJyb3I7XG4gICAgfSxcbiAgICBSZW1vdmVkVUFFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW1vdmVkVUFFcnJvcjtcbiAgICB9XG59KTtcbmNsYXNzIFBhZ2VTaWduYXR1cmVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcih7IHBhZ2UgfSl7XG4gICAgICAgIHN1cGVyKGBUaGUgbWlkZGxld2FyZSBcIiR7cGFnZX1cIiBhY2NlcHRzIGFuIGFzeW5jIEFQSSBkaXJlY3RseSB3aXRoIHRoZSBmb3JtOlxuICBcbiAgZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmUocmVxdWVzdCwgZXZlbnQpIHtcbiAgICByZXR1cm4gTmV4dFJlc3BvbnNlLnJlZGlyZWN0KCcvbmV3LWxvY2F0aW9uJylcbiAgfVxuICBcbiAgUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLW5ldy1zaWduYXR1cmVcbiAgYCk7XG4gICAgfVxufVxuY2xhc3MgUmVtb3ZlZFBhZ2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcihgVGhlIHJlcXVlc3QucGFnZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBcXGBVUkxQYXR0ZXJuXFxgLlxuICBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL21pZGRsZXdhcmUtcmVxdWVzdC1wYWdlXG4gIGApO1xuICAgIH1cbn1cbmNsYXNzIFJlbW92ZWRVQUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKGBUaGUgcmVxdWVzdC51YSBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBcXGB1c2VyQWdlbnRcXGAgZnVuY3Rpb24uXG4gIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1wYXJzZS11c2VyLWFnZW50XG4gIGApO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/next-url.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/server/web/next-url.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"NextURL\", ({\n enumerable: true,\n get: function() {\n return NextURL;\n }\n}));\nconst _detectdomainlocale = __webpack_require__(/*! ../../shared/lib/i18n/detect-domain-locale */ \"(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js\");\nconst _formatnextpathnameinfo = __webpack_require__(/*! ../../shared/lib/router/utils/format-next-pathname-info */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nconst _gethostname = __webpack_require__(/*! ../../shared/lib/get-hostname */ \"(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js\");\nconst _getnextpathnameinfo = __webpack_require__(/*! ../../shared/lib/router/utils/get-next-pathname-info */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nconst REGEX_LOCALHOST_HOSTNAME = /(?!^https?:\\/\\/)(127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)/;\nfunction parseURL(url, base) {\n return new URL(String(url).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'), base && String(base).replace(REGEX_LOCALHOST_HOSTNAME, 'localhost'));\n}\nconst Internal = Symbol('NextURLInternal');\nclass NextURL {\n constructor(input, baseOrOpts, opts){\n let base;\n let options;\n if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') {\n base = baseOrOpts;\n options = opts || {};\n } else {\n options = opts || baseOrOpts || {};\n }\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: ''\n };\n this.analyze();\n }\n analyze() {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1;\n const info = (0, _getnextpathnameinfo.getNextPathnameInfo)(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !undefined,\n i18nProvider: this[Internal].options.i18nProvider\n });\n const hostname = (0, _gethostname.getHostname)(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0, _detectdomainlocale.detectDomainLocale)((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname);\n const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale);\n this[Internal].url.pathname = info.pathname;\n this[Internal].defaultLocale = defaultLocale;\n this[Internal].basePath = info.basePath ?? '';\n this[Internal].buildId = info.buildId;\n this[Internal].locale = info.locale ?? defaultLocale;\n this[Internal].trailingSlash = info.trailingSlash;\n }\n formatPathname() {\n return (0, _formatnextpathnameinfo.formatNextPathnameInfo)({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash\n });\n }\n formatSearch() {\n return this[Internal].url.search;\n }\n get buildId() {\n return this[Internal].buildId;\n }\n set buildId(buildId) {\n this[Internal].buildId = buildId;\n }\n get locale() {\n return this[Internal].locale ?? '';\n }\n set locale(locale) {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig;\n if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) {\n throw Object.defineProperty(new TypeError(`The NextURL configuration includes no locale \"${locale}\"`), \"__NEXT_ERROR_CODE\", {\n value: \"E597\",\n enumerable: false,\n configurable: true\n });\n }\n this[Internal].locale = locale;\n }\n get defaultLocale() {\n return this[Internal].defaultLocale;\n }\n get domainLocale() {\n return this[Internal].domainLocale;\n }\n get searchParams() {\n return this[Internal].url.searchParams;\n }\n get host() {\n return this[Internal].url.host;\n }\n set host(value) {\n this[Internal].url.host = value;\n }\n get hostname() {\n return this[Internal].url.hostname;\n }\n set hostname(value) {\n this[Internal].url.hostname = value;\n }\n get port() {\n return this[Internal].url.port;\n }\n set port(value) {\n this[Internal].url.port = value;\n }\n get protocol() {\n return this[Internal].url.protocol;\n }\n set protocol(value) {\n this[Internal].url.protocol = value;\n }\n get href() {\n const pathname = this.formatPathname();\n const search = this.formatSearch();\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`;\n }\n set href(url) {\n this[Internal].url = parseURL(url);\n this.analyze();\n }\n get origin() {\n return this[Internal].url.origin;\n }\n get pathname() {\n return this[Internal].url.pathname;\n }\n set pathname(value) {\n this[Internal].url.pathname = value;\n }\n get hash() {\n return this[Internal].url.hash;\n }\n set hash(value) {\n this[Internal].url.hash = value;\n }\n get search() {\n return this[Internal].url.search;\n }\n set search(value) {\n this[Internal].url.search = value;\n }\n get password() {\n return this[Internal].url.password;\n }\n set password(value) {\n this[Internal].url.password = value;\n }\n get username() {\n return this[Internal].url.username;\n }\n set username(value) {\n this[Internal].url.username = value;\n }\n get basePath() {\n return this[Internal].basePath;\n }\n set basePath(value) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`;\n }\n toString() {\n return this.href;\n }\n toJSON() {\n return this.href;\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n };\n }\n clone() {\n return new NextURL(String(this), this[Internal].options);\n }\n}\n\n//# sourceMappingURL=next-url.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvbmV4dC11cmwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiwyQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRiw0QkFBNEIsbUJBQU8sQ0FBQywwSEFBNEM7QUFDaEYsZ0NBQWdDLG1CQUFPLENBQUMsb0pBQXlEO0FBQ2pHLHFCQUFxQixtQkFBTyxDQUFDLGdHQUErQjtBQUM1RCw2QkFBNkIsbUJBQU8sQ0FBQyw4SUFBc0Q7QUFDM0YscUdBQXFHLEVBQUU7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixTQUE4QztBQUN0RTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1R0FBdUcsT0FBTztBQUM5RztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGNBQWMsSUFBSSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRSxNQUFNO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFx3ZWJcXG5leHQtdXJsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTmV4dFVSTFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTmV4dFVSTDtcbiAgICB9XG59KTtcbmNvbnN0IF9kZXRlY3Rkb21haW5sb2NhbGUgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xuY29uc3QgX2Zvcm1hdG5leHRwYXRobmFtZWluZm8gPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LW5leHQtcGF0aG5hbWUtaW5mb1wiKTtcbmNvbnN0IF9nZXRob3N0bmFtZSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2dldC1ob3N0bmFtZVwiKTtcbmNvbnN0IF9nZXRuZXh0cGF0aG5hbWVpbmZvID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIik7XG5jb25zdCBSRUdFWF9MT0NBTEhPU1RfSE9TVE5BTUUgPSAvKD8hXmh0dHBzPzpcXC9cXC8pKDEyNyg/OlxcLig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykpezN9fFxcWzo6MVxcXXxsb2NhbGhvc3QpLztcbmZ1bmN0aW9uIHBhcnNlVVJMKHVybCwgYmFzZSkge1xuICAgIHJldHVybiBuZXcgVVJMKFN0cmluZyh1cmwpLnJlcGxhY2UoUkVHRVhfTE9DQUxIT1NUX0hPU1ROQU1FLCAnbG9jYWxob3N0JyksIGJhc2UgJiYgU3RyaW5nKGJhc2UpLnJlcGxhY2UoUkVHRVhfTE9DQUxIT1NUX0hPU1ROQU1FLCAnbG9jYWxob3N0JykpO1xufVxuY29uc3QgSW50ZXJuYWwgPSBTeW1ib2woJ05leHRVUkxJbnRlcm5hbCcpO1xuY2xhc3MgTmV4dFVSTCB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGJhc2VPck9wdHMsIG9wdHMpe1xuICAgICAgICBsZXQgYmFzZTtcbiAgICAgICAgbGV0IG9wdGlvbnM7XG4gICAgICAgIGlmICh0eXBlb2YgYmFzZU9yT3B0cyA9PT0gJ29iamVjdCcgJiYgJ3BhdGhuYW1lJyBpbiBiYXNlT3JPcHRzIHx8IHR5cGVvZiBiYXNlT3JPcHRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYmFzZSA9IGJhc2VPck9wdHM7XG4gICAgICAgICAgICBvcHRpb25zID0gb3B0cyB8fCB7fTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRzIHx8IGJhc2VPck9wdHMgfHwge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tJbnRlcm5hbF0gPSB7XG4gICAgICAgICAgICB1cmw6IHBhcnNlVVJMKGlucHV0LCBiYXNlID8/IG9wdGlvbnMuYmFzZSksXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgYmFzZVBhdGg6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYW5hbHl6ZSgpO1xuICAgIH1cbiAgICBhbmFseXplKCkge1xuICAgICAgICB2YXIgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4sIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZywgX3RoaXNfSW50ZXJuYWxfZG9tYWluTG9jYWxlLCBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4bjEsIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZzE7XG4gICAgICAgIGNvbnN0IGluZm8gPSAoMCwgX2dldG5leHRwYXRobmFtZWluZm8uZ2V0TmV4dFBhdGhuYW1lSW5mbykodGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lLCB7XG4gICAgICAgICAgICBuZXh0Q29uZmlnOiB0aGlzW0ludGVybmFsXS5vcHRpb25zLm5leHRDb25maWcsXG4gICAgICAgICAgICBwYXJzZURhdGE6ICFwcm9jZXNzLmVudi5fX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFLFxuICAgICAgICAgICAgaTE4blByb3ZpZGVyOiB0aGlzW0ludGVybmFsXS5vcHRpb25zLmkxOG5Qcm92aWRlclxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaG9zdG5hbWUgPSAoMCwgX2dldGhvc3RuYW1lLmdldEhvc3RuYW1lKSh0aGlzW0ludGVybmFsXS51cmwsIHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuaGVhZGVycyk7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZSA9IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuaTE4blByb3ZpZGVyID8gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5pMThuUHJvdmlkZXIuZGV0ZWN0RG9tYWluTG9jYWxlKGhvc3RuYW1lKSA6ICgwLCBfZGV0ZWN0ZG9tYWlubG9jYWxlLmRldGVjdERvbWFpbkxvY2FsZSkoKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZyA9IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMubmV4dENvbmZpZykgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biA9IF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZy5pMThuKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4uZG9tYWlucywgaG9zdG5hbWUpO1xuICAgICAgICBjb25zdCBkZWZhdWx0TG9jYWxlID0gKChfdGhpc19JbnRlcm5hbF9kb21haW5Mb2NhbGUgPSB0aGlzW0ludGVybmFsXS5kb21haW5Mb2NhbGUpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19JbnRlcm5hbF9kb21haW5Mb2NhbGUuZGVmYXVsdExvY2FsZSkgfHwgKChfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWcxID0gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5uZXh0Q29uZmlnKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuMSA9IF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZzEuaTE4bikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuMS5kZWZhdWx0TG9jYWxlKTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lID0gaW5mby5wYXRobmFtZTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0uZGVmYXVsdExvY2FsZSA9IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJhc2VQYXRoID0gaW5mby5iYXNlUGF0aCA/PyAnJztcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0uYnVpbGRJZCA9IGluZm8uYnVpbGRJZDtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0ubG9jYWxlID0gaW5mby5sb2NhbGUgPz8gZGVmYXVsdExvY2FsZTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udHJhaWxpbmdTbGFzaCA9IGluZm8udHJhaWxpbmdTbGFzaDtcbiAgICB9XG4gICAgZm9ybWF0UGF0aG5hbWUoKSB7XG4gICAgICAgIHJldHVybiAoMCwgX2Zvcm1hdG5leHRwYXRobmFtZWluZm8uZm9ybWF0TmV4dFBhdGhuYW1lSW5mbykoe1xuICAgICAgICAgICAgYmFzZVBhdGg6IHRoaXNbSW50ZXJuYWxdLmJhc2VQYXRoLFxuICAgICAgICAgICAgYnVpbGRJZDogdGhpc1tJbnRlcm5hbF0uYnVpbGRJZCxcbiAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6ICF0aGlzW0ludGVybmFsXS5vcHRpb25zLmZvcmNlTG9jYWxlID8gdGhpc1tJbnRlcm5hbF0uZGVmYXVsdExvY2FsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxvY2FsZTogdGhpc1tJbnRlcm5hbF0ubG9jYWxlLFxuICAgICAgICAgICAgcGF0aG5hbWU6IHRoaXNbSW50ZXJuYWxdLnVybC5wYXRobmFtZSxcbiAgICAgICAgICAgIHRyYWlsaW5nU2xhc2g6IHRoaXNbSW50ZXJuYWxdLnRyYWlsaW5nU2xhc2hcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvcm1hdFNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5zZWFyY2g7XG4gICAgfVxuICAgIGdldCBidWlsZElkKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0uYnVpbGRJZDtcbiAgICB9XG4gICAgc2V0IGJ1aWxkSWQoYnVpbGRJZCkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS5idWlsZElkID0gYnVpbGRJZDtcbiAgICB9XG4gICAgZ2V0IGxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLmxvY2FsZSA/PyAnJztcbiAgICB9XG4gICAgc2V0IGxvY2FsZShsb2NhbGUpIHtcbiAgICAgICAgdmFyIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuLCBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWc7XG4gICAgICAgIGlmICghdGhpc1tJbnRlcm5hbF0ubG9jYWxlIHx8ICEoKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZyA9IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMubmV4dENvbmZpZykgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biA9IF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZy5pMThuKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4ubG9jYWxlcy5pbmNsdWRlcyhsb2NhbGUpKSkge1xuICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBUeXBlRXJyb3IoYFRoZSBOZXh0VVJMIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgbm8gbG9jYWxlIFwiJHtsb2NhbGV9XCJgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTU5N1wiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tJbnRlcm5hbF0ubG9jYWxlID0gbG9jYWxlO1xuICAgIH1cbiAgICBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLmRlZmF1bHRMb2NhbGU7XG4gICAgfVxuICAgIGdldCBkb21haW5Mb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS5kb21haW5Mb2NhbGU7XG4gICAgfVxuICAgIGdldCBzZWFyY2hQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwuc2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBnZXQgaG9zdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0O1xuICAgIH1cbiAgICBzZXQgaG9zdCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwuaG9zdCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgaG9zdG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwuaG9zdG5hbWU7XG4gICAgfVxuICAgIHNldCBob3N0bmFtZSh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwuaG9zdG5hbWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHBvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwucG9ydDtcbiAgICB9XG4gICAgc2V0IHBvcnQodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBvcnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHByb3RvY29sKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnByb3RvY29sO1xuICAgIH1cbiAgICBzZXQgcHJvdG9jb2wodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnByb3RvY29sID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBocmVmKCkge1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9IHRoaXMuZm9ybWF0UGF0aG5hbWUoKTtcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5mb3JtYXRTZWFyY2goKTtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMucHJvdG9jb2x9Ly8ke3RoaXMuaG9zdH0ke3BhdGhuYW1lfSR7c2VhcmNofSR7dGhpcy5oYXNofWA7XG4gICAgfVxuICAgIHNldCBocmVmKHVybCkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwgPSBwYXJzZVVSTCh1cmwpO1xuICAgICAgICB0aGlzLmFuYWx5emUoKTtcbiAgICB9XG4gICAgZ2V0IG9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5vcmlnaW47XG4gICAgfVxuICAgIGdldCBwYXRobmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5wYXRobmFtZTtcbiAgICB9XG4gICAgc2V0IHBhdGhuYW1lKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5wYXRobmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgaGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5oYXNoO1xuICAgIH1cbiAgICBzZXQgaGFzaCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwuaGFzaCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnNlYXJjaDtcbiAgICB9XG4gICAgc2V0IHNlYXJjaCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwuc2VhcmNoID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBwYXNzd29yZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5wYXNzd29yZDtcbiAgICB9XG4gICAgc2V0IHBhc3N3b3JkKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5wYXNzd29yZCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgdXNlcm5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwudXNlcm5hbWU7XG4gICAgfVxuICAgIHNldCB1c2VybmFtZSh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwudXNlcm5hbWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGJhc2VQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0uYmFzZVBhdGg7XG4gICAgfVxuICAgIHNldCBiYXNlUGF0aCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS5iYXNlUGF0aCA9IHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSA/IHZhbHVlIDogYC8ke3ZhbHVlfWA7XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ocmVmO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhyZWY7XG4gICAgfVxuICAgIFtTeW1ib2wuZm9yKCdlZGdlLXJ1bnRpbWUuaW5zcGVjdC5jdXN0b20nKV0oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBocmVmOiB0aGlzLmhyZWYsXG4gICAgICAgICAgICBvcmlnaW46IHRoaXMub3JpZ2luLFxuICAgICAgICAgICAgcHJvdG9jb2w6IHRoaXMucHJvdG9jb2wsXG4gICAgICAgICAgICB1c2VybmFtZTogdGhpcy51c2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxuICAgICAgICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgICAgICAgaG9zdG5hbWU6IHRoaXMuaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICAgICAgICBwYXRobmFtZTogdGhpcy5wYXRobmFtZSxcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VhcmNoUGFyYW1zLFxuICAgICAgICAgICAgaGFzaDogdGhpcy5oYXNoXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5leHRVUkwoU3RyaW5nKHRoaXMpLCB0aGlzW0ludGVybmFsXS5vcHRpb25zKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5leHQtdXJsLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/next-url.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js": /*!******************************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/adapters/headers.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HeadersAdapter: function() {\n return HeadersAdapter;\n },\n ReadonlyHeadersError: function() {\n return ReadonlyHeadersError;\n }\n});\nconst _reflect = __webpack_require__(/*! ./reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nclass ReadonlyHeadersError extends Error {\n constructor(){\n super('Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers');\n }\n static callable() {\n throw new ReadonlyHeadersError();\n }\n}\nclass HeadersAdapter extends Headers {\n constructor(headers){\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super();\n this.headers = new Proxy(headers, {\n get (target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return;\n // If the original casing exists, return the value.\n return _reflect.ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n }\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, use the prop as the key.\n return _reflect.ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.has(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false;\n // If the original casing exists, return true.\n return _reflect.ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === 'symbol') return _reflect.ReflectAdapter.deleteProperty(target, prop);\n const lowercased = prop.toLowerCase();\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find((o)=>o.toLowerCase() === lowercased);\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true;\n // If the original casing exists, delete the property.\n return _reflect.ReflectAdapter.deleteProperty(target, original);\n }\n });\n }\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */ static seal(headers) {\n return new Proxy(headers, {\n get (target, prop, receiver) {\n switch(prop){\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable;\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */ merge(value) {\n if (Array.isArray(value)) return value.join(', ');\n return value;\n }\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */ static from(headers) {\n if (headers instanceof Headers) return headers;\n return new HeadersAdapter(headers);\n }\n append(name, value) {\n const existing = this.headers[name];\n if (typeof existing === 'string') {\n this.headers[name] = [\n existing,\n value\n ];\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n this.headers[name] = value;\n }\n }\n delete(name) {\n delete this.headers[name];\n }\n get(name) {\n const value = this.headers[name];\n if (typeof value !== 'undefined') return this.merge(value);\n return null;\n }\n has(name) {\n return typeof this.headers[name] !== 'undefined';\n }\n set(name, value) {\n this.headers[name] = value;\n }\n forEach(callbackfn, thisArg) {\n for (const [name, value] of this.entries()){\n callbackfn.call(thisArg, value, name, this);\n }\n }\n *entries() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name);\n yield [\n name,\n value\n ];\n }\n }\n *keys() {\n for (const key of Object.keys(this.headers)){\n const name = key.toLowerCase();\n yield name;\n }\n }\n *values() {\n for (const key of Object.keys(this.headers)){\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key);\n yield value;\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n}\n\n//# sourceMappingURL=headers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsbUJBQU8sQ0FBQywrRkFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcd2ViXFxzcGVjLWV4dGVuc2lvblxcYWRhcHRlcnNcXGhlYWRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBIZWFkZXJzQWRhcHRlcjogbnVsbCxcbiAgICBSZWFkb25seUhlYWRlcnNFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBIZWFkZXJzQWRhcHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBIZWFkZXJzQWRhcHRlcjtcbiAgICB9LFxuICAgIFJlYWRvbmx5SGVhZGVyc0Vycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlYWRvbmx5SGVhZGVyc0Vycm9yO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlZmxlY3QgPSByZXF1aXJlKFwiLi9yZWZsZWN0XCIpO1xuY2xhc3MgUmVhZG9ubHlIZWFkZXJzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoJ0hlYWRlcnMgY2Fubm90IGJlIG1vZGlmaWVkLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9oZWFkZXJzJyk7XG4gICAgfVxuICAgIHN0YXRpYyBjYWxsYWJsZSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlYWRvbmx5SGVhZGVyc0Vycm9yKCk7XG4gICAgfVxufVxuY2xhc3MgSGVhZGVyc0FkYXB0ZXIgZXh0ZW5kcyBIZWFkZXJzIHtcbiAgICBjb25zdHJ1Y3RvcihoZWFkZXJzKXtcbiAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBvdmVycmlkZGVuIHRoZSBtZXRob2RzIHRoYXQgd291bGQgYmUgY2FsbGVkLCBzbyB3ZSdyZSBqdXN0XG4gICAgICAgIC8vIGNhbGxpbmcgdGhlIHN1cGVyIGNvbnN0cnVjdG9yIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIHdvcmtzLlxuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgUHJveHkoaGVhZGVycywge1xuICAgICAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGp1c3QgYW4gb2JqZWN0LCB3ZSBleHBlY3QgdGhhdCBhbGwgXCJnZXRcIiBvcGVyYXRpb25zXG4gICAgICAgICAgICAgICAgLy8gYXJlIGZvciBwcm9wZXJ0aWVzLiBJZiBpdCdzIGEgXCJnZXRcIiBmb3IgYSBzeW1ib2wsIHdlJ2xsIGp1c3QgcmV0dXJuXG4gICAgICAgICAgICAgICAgLy8gdGhlIHN5bWJvbC5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gdW5kZWZpbmVkLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBleGlzdHMsIHJldHVybiB0aGUgdmFsdWUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIG9yaWdpbmFsLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLnNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCB1c2UgdGhlIHByb3AgYXMgdGhlIGtleS5cbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuc2V0KHRhcmdldCwgb3JpZ2luYWwgPz8gcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXMgKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VkID0gcHJvcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIC8vIExldCdzIGZpbmQgdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUga2V5LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpc1xuICAgICAgICAgICAgICAgIC8vIG5vIG1peGVkIGNhc2Uga2V5cyAoZS5nLiBcIkNvbnRlbnQtVHlwZVwiIGFuZCBcImNvbnRlbnQtdHlwZVwiKSBpbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIG9iamVjdC5cbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IE9iamVjdC5rZXlzKGhlYWRlcnMpLmZpbmQoKG8pPT5vLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZWQpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBjYXNpbmcgZG9lc24ndCBleGlzdCwgcmV0dXJuIGZhbHNlLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBleGlzdHMsIHJldHVybiB0cnVlLlxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5oYXModGFyZ2V0LCBvcmlnaW5hbCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlUHJvcGVydHkgKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N5bWJvbCcpIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gdHJ1ZS5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBleGlzdHMsIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgb3JpZ2luYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFNlYWxzIGEgSGVhZGVycyBpbnN0YW5jZSB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBieSB0aHJvd2luZyBhbiBlcnJvciB3aGVuXG4gICAqIGFueSBtdXRhdGluZyBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi8gc3RhdGljIHNlYWwoaGVhZGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGhlYWRlcnMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXBwZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFkb25seUhlYWRlcnNFcnJvci5jYWxsYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAqIE1lcmdlcyBhIGhlYWRlciB2YWx1ZSBpbnRvIGEgc3RyaW5nLiBUaGlzIHN0b3JlcyBtdWx0aXBsZSB2YWx1ZXMgYXMgYW5cbiAgICogYXJyYXksIHNvIHdlIG5lZWQgdG8gbWVyZ2UgdGhlbSBpbnRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgYSBoZWFkZXIgdmFsdWVcbiAgICogQHJldHVybnMgYSBtZXJnZWQgaGVhZGVyIHZhbHVlIChhIHN0cmluZylcbiAgICovIG1lcmdlKHZhbHVlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmpvaW4oJywgJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgLyoqXG4gICAqIENyZWF0ZXMgYSBIZWFkZXJzIGluc3RhbmNlIGZyb20gYSBwbGFpbiBvYmplY3Qgb3IgYSBIZWFkZXJzIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gaGVhZGVycyBhIHBsYWluIG9iamVjdCBvciBhIEhlYWRlcnMgaW5zdGFuY2VcbiAgICogQHJldHVybnMgYSBoZWFkZXJzIGluc3RhbmNlXG4gICAqLyBzdGF0aWMgZnJvbShoZWFkZXJzKSB7XG4gICAgICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIHJldHVybiBuZXcgSGVhZGVyc0FkYXB0ZXIoaGVhZGVycyk7XG4gICAgfVxuICAgIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaGVhZGVyc1tuYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tuYW1lXSA9IFtcbiAgICAgICAgICAgICAgICBleGlzdGluZyxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkge1xuICAgICAgICAgICAgZXhpc3RpbmcucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZWxldGUobmFtZSkge1xuICAgICAgICBkZWxldGUgdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaGVhZGVyc1tuYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiB0aGlzLm1lcmdlKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5oZWFkZXJzW25hbWVdICE9PSAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgICBmb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIHRoaXMuZW50cmllcygpKXtcbiAgICAgICAgICAgIGNhbGxiYWNrZm4uY2FsbCh0aGlzQXJnLCB2YWx1ZSwgbmFtZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKmVudHJpZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykpe1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgLy8gV2UgYXNzZXJ0IGhlcmUgdGhhdCB0aGlzIGlzIGEgc3RyaW5nIGJlY2F1c2Ugd2UgZ290IGl0IGZyb20gdGhlXG4gICAgICAgICAgICAvLyBPYmplY3Qua2V5cygpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgeWllbGQgW1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgKmtleXMoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykpe1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgeWllbGQgbmFtZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqdmFsdWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcnMpKXtcbiAgICAgICAgICAgIC8vIFdlIGFzc2VydCBoZXJlIHRoYXQgdGhpcyBpcyBhIHN0cmluZyBiZWNhdXNlIHdlIGdvdCBpdCBmcm9tIHRoZVxuICAgICAgICAgICAgLy8gT2JqZWN0LmtleXMoKSBjYWxsIGFib3ZlLlxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChrZXkpO1xuICAgICAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlYWRlcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/headers.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n NextRequestAdapter: function() {\n return NextRequestAdapter;\n },\n ResponseAborted: function() {\n return ResponseAborted;\n },\n ResponseAbortedName: function() {\n return ResponseAbortedName;\n },\n createAbortController: function() {\n return createAbortController;\n },\n signalFromNodeResponse: function() {\n return signalFromNodeResponse;\n }\n});\nconst _requestmeta = __webpack_require__(/*! ../../../request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\nconst _utils = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/server/web/utils.js\");\nconst _request = __webpack_require__(/*! ../request */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js\");\nconst _helpers = __webpack_require__(/*! ../../../base-http/helpers */ \"(rsc)/./node_modules/next/dist/server/base-http/helpers.js\");\nconst ResponseAbortedName = 'ResponseAborted';\nclass ResponseAborted extends Error {\n constructor(...args){\n super(...args), this.name = ResponseAbortedName;\n }\n}\nfunction createAbortController(response) {\n const controller = new AbortController();\n // If `finish` fires first, then `res.end()` has been called and the close is\n // just us finishing the stream on our side. If `close` fires first, then we\n // know the client disconnected before we finished.\n response.once('close', ()=>{\n if (response.writableFinished) return;\n controller.abort(new ResponseAborted());\n });\n return controller;\n}\nfunction signalFromNodeResponse(response) {\n const { errored, destroyed } = response;\n if (errored || destroyed) {\n return AbortSignal.abort(errored ?? new ResponseAborted());\n }\n const { signal } = createAbortController(response);\n return signal;\n}\nclass NextRequestAdapter {\n static fromBaseNextRequest(request, signal) {\n if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n false) {} else if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n true && (0, _helpers.isNodeNextRequest)(request)) {\n return NextRequestAdapter.fromNodeNextRequest(request, signal);\n } else {\n throw Object.defineProperty(new Error('Invariant: Unsupported NextRequest type'), \"__NEXT_ERROR_CODE\", {\n value: \"E345\",\n enumerable: false,\n configurable: true\n });\n }\n }\n static fromNodeNextRequest(request, signal) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {\n // @ts-expect-error - this is handled by undici, when streams/web land use it instead\n body = request.body;\n }\n let url;\n if (request.url.startsWith('http')) {\n url = new URL(request.url);\n } else {\n // Grab the full URL from the request metadata.\n const base = (0, _requestmeta.getRequestMeta)(request, 'initURL');\n if (!base || !base.startsWith('http')) {\n // Because the URL construction relies on the fact that the URL provided\n // is absolute, we need to provide a base URL. We can't use the request\n // URL because it's relative, so we use a dummy URL instead.\n url = new URL(request.url, 'http://n');\n } else {\n url = new URL(request.url, base);\n }\n }\n return new _request.NextRequest(url, {\n method: request.method,\n headers: (0, _utils.fromNodeOutgoingHttpHeaders)(request.headers),\n duplex: 'half',\n signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...signal.aborted ? {} : {\n body\n }\n });\n }\n static fromWebNextRequest(request) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD') {\n body = request.body;\n }\n return new _request.NextRequest(request.url, {\n method: request.method,\n headers: (0, _utils.fromNodeOutgoingHttpHeaders)(request.headers),\n duplex: 'half',\n signal: request.request.signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...request.request.signal.aborted ? {} : {\n body\n }\n });\n }\n}\n\n//# sourceMappingURL=next-request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvbmV4dC1yZXF1ZXN0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQU1MO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHFCQUFxQixtQkFBTyxDQUFDLG9GQUF1QjtBQUNwRCxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsaUJBQWlCLG1CQUFPLENBQUMsdUZBQVk7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsOEZBQTRCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxQkFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBOEUsRUFBRSxFQUUvRSxDQUFDO0FBQ1Y7QUFDQSxRQUFRLEtBQW1DO0FBQzNDO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHdlYlxcc3BlYy1leHRlbnNpb25cXGFkYXB0ZXJzXFxuZXh0LXJlcXVlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBOZXh0UmVxdWVzdEFkYXB0ZXI6IG51bGwsXG4gICAgUmVzcG9uc2VBYm9ydGVkOiBudWxsLFxuICAgIFJlc3BvbnNlQWJvcnRlZE5hbWU6IG51bGwsXG4gICAgY3JlYXRlQWJvcnRDb250cm9sbGVyOiBudWxsLFxuICAgIHNpZ25hbEZyb21Ob2RlUmVzcG9uc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgTmV4dFJlcXVlc3RBZGFwdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXF1ZXN0QWRhcHRlcjtcbiAgICB9LFxuICAgIFJlc3BvbnNlQWJvcnRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZXNwb25zZUFib3J0ZWQ7XG4gICAgfSxcbiAgICBSZXNwb25zZUFib3J0ZWROYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlQWJvcnRlZE5hbWU7XG4gICAgfSxcbiAgICBjcmVhdGVBYm9ydENvbnRyb2xsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQWJvcnRDb250cm9sbGVyO1xuICAgIH0sXG4gICAgc2lnbmFsRnJvbU5vZGVSZXNwb25zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzaWduYWxGcm9tTm9kZVJlc3BvbnNlO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlcXVlc3RtZXRhID0gcmVxdWlyZShcIi4uLy4uLy4uL3JlcXVlc3QtbWV0YVwiKTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNvbnN0IF9yZXF1ZXN0ID0gcmVxdWlyZShcIi4uL3JlcXVlc3RcIik7XG5jb25zdCBfaGVscGVycyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9iYXNlLWh0dHAvaGVscGVyc1wiKTtcbmNvbnN0IFJlc3BvbnNlQWJvcnRlZE5hbWUgPSAnUmVzcG9uc2VBYm9ydGVkJztcbmNsYXNzIFJlc3BvbnNlQWJvcnRlZCBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyksIHRoaXMubmFtZSA9IFJlc3BvbnNlQWJvcnRlZE5hbWU7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlQWJvcnRDb250cm9sbGVyKHJlc3BvbnNlKSB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyBJZiBgZmluaXNoYCBmaXJlcyBmaXJzdCwgdGhlbiBgcmVzLmVuZCgpYCBoYXMgYmVlbiBjYWxsZWQgYW5kIHRoZSBjbG9zZSBpc1xuICAgIC8vIGp1c3QgdXMgZmluaXNoaW5nIHRoZSBzdHJlYW0gb24gb3VyIHNpZGUuIElmIGBjbG9zZWAgZmlyZXMgZmlyc3QsIHRoZW4gd2VcbiAgICAvLyBrbm93IHRoZSBjbGllbnQgZGlzY29ubmVjdGVkIGJlZm9yZSB3ZSBmaW5pc2hlZC5cbiAgICByZXNwb25zZS5vbmNlKCdjbG9zZScsICgpPT57XG4gICAgICAgIGlmIChyZXNwb25zZS53cml0YWJsZUZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgIGNvbnRyb2xsZXIuYWJvcnQobmV3IFJlc3BvbnNlQWJvcnRlZCgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29udHJvbGxlcjtcbn1cbmZ1bmN0aW9uIHNpZ25hbEZyb21Ob2RlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICBjb25zdCB7IGVycm9yZWQsIGRlc3Ryb3llZCB9ID0gcmVzcG9uc2U7XG4gICAgaWYgKGVycm9yZWQgfHwgZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBBYm9ydFNpZ25hbC5hYm9ydChlcnJvcmVkID8/IG5ldyBSZXNwb25zZUFib3J0ZWQoKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgc2lnbmFsIH0gPSBjcmVhdGVBYm9ydENvbnRyb2xsZXIocmVzcG9uc2UpO1xuICAgIHJldHVybiBzaWduYWw7XG59XG5jbGFzcyBOZXh0UmVxdWVzdEFkYXB0ZXIge1xuICAgIHN0YXRpYyBmcm9tQmFzZU5leHRSZXF1ZXN0KHJlcXVlc3QsIHNpZ25hbCkge1xuICAgICAgICBpZiAoLy8gVGhlIHR5cGUgY2hlY2sgaGVyZSBlbnN1cmVzIHRoYXQgYHJlcWAgaXMgY29ycmVjdGx5IHR5cGVkLCBhbmQgdGhlXG4gICAgICAgIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIGNoZWNrIHByb3ZpZGVzIGRlYWQgY29kZSBlbGltaW5hdGlvbi5cbiAgICAgICAgcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScgJiYgKDAsIF9oZWxwZXJzLmlzV2ViTmV4dFJlcXVlc3QpKHJlcXVlc3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmV4dFJlcXVlc3RBZGFwdGVyLmZyb21XZWJOZXh0UmVxdWVzdChyZXF1ZXN0KTtcbiAgICAgICAgfSBlbHNlIGlmICgvLyBUaGUgdHlwZSBjaGVjayBoZXJlIGVuc3VyZXMgdGhhdCBgcmVxYCBpcyBjb3JyZWN0bHkgdHlwZWQsIGFuZCB0aGVcbiAgICAgICAgLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgY2hlY2sgcHJvdmlkZXMgZGVhZCBjb2RlIGVsaW1pbmF0aW9uLlxuICAgICAgICBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgIT09ICdlZGdlJyAmJiAoMCwgX2hlbHBlcnMuaXNOb2RlTmV4dFJlcXVlc3QpKHJlcXVlc3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmV4dFJlcXVlc3RBZGFwdGVyLmZyb21Ob2RlTmV4dFJlcXVlc3QocmVxdWVzdCwgc2lnbmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0ludmFyaWFudDogVW5zdXBwb3J0ZWQgTmV4dFJlcXVlc3QgdHlwZScpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzQ1XCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgZnJvbU5vZGVOZXh0UmVxdWVzdChyZXF1ZXN0LCBzaWduYWwpIHtcbiAgICAgICAgLy8gSEVBRCBhbmQgR0VUIHJlcXVlc3RzIGNhbiBub3QgaGF2ZSBhIGJvZHkuXG4gICAgICAgIGxldCBib2R5ID0gbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QubWV0aG9kICE9PSAnR0VUJyAmJiByZXF1ZXN0Lm1ldGhvZCAhPT0gJ0hFQUQnICYmIHJlcXVlc3QuYm9keSkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIHRoaXMgaXMgaGFuZGxlZCBieSB1bmRpY2ksIHdoZW4gc3RyZWFtcy93ZWIgbGFuZCB1c2UgaXQgaW5zdGVhZFxuICAgICAgICAgICAgYm9keSA9IHJlcXVlc3QuYm9keTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdXJsO1xuICAgICAgICBpZiAocmVxdWVzdC51cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgICB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEdyYWIgdGhlIGZ1bGwgVVJMIGZyb20gdGhlIHJlcXVlc3QgbWV0YWRhdGEuXG4gICAgICAgICAgICBjb25zdCBiYXNlID0gKDAsIF9yZXF1ZXN0bWV0YS5nZXRSZXF1ZXN0TWV0YSkocmVxdWVzdCwgJ2luaXRVUkwnKTtcbiAgICAgICAgICAgIGlmICghYmFzZSB8fCAhYmFzZS5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBVUkwgY29uc3RydWN0aW9uIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBVUkwgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICAvLyBpcyBhYnNvbHV0ZSwgd2UgbmVlZCB0byBwcm92aWRlIGEgYmFzZSBVUkwuIFdlIGNhbid0IHVzZSB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgICAgIC8vIFVSTCBiZWNhdXNlIGl0J3MgcmVsYXRpdmUsIHNvIHdlIHVzZSBhIGR1bW15IFVSTCBpbnN0ZWFkLlxuICAgICAgICAgICAgICAgIHVybCA9IG5ldyBVUkwocmVxdWVzdC51cmwsICdodHRwOi8vbicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsLCBiYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IF9yZXF1ZXN0Lk5leHRSZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgIGhlYWRlcnM6ICgwLCBfdXRpbHMuZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKShyZXF1ZXN0LmhlYWRlcnMpLFxuICAgICAgICAgICAgZHVwbGV4OiAnaGFsZicsXG4gICAgICAgICAgICBzaWduYWwsXG4gICAgICAgICAgICAvLyBnZW9cbiAgICAgICAgICAgIC8vIGlwXG4gICAgICAgICAgICAvLyBuZXh0Q29uZmlnXG4gICAgICAgICAgICAvLyBib2R5IGNhbiBub3QgYmUgcGFzc2VkIGlmIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICAgICAgICAgIC8vIG9yIHdlIGdldCBhIFJlcXVlc3QgYm9keSB3YXMgZGlzdHVyYmVkIGVycm9yXG4gICAgICAgICAgICAuLi5zaWduYWwuYWJvcnRlZCA/IHt9IDoge1xuICAgICAgICAgICAgICAgIGJvZHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tV2ViTmV4dFJlcXVlc3QocmVxdWVzdCkge1xuICAgICAgICAvLyBIRUFEIGFuZCBHRVQgcmVxdWVzdHMgY2FuIG5vdCBoYXZlIGEgYm9keS5cbiAgICAgICAgbGV0IGJvZHkgPSBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdC5tZXRob2QgIT09ICdHRVQnICYmIHJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAgICAgICAgIGJvZHkgPSByZXF1ZXN0LmJvZHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBfcmVxdWVzdC5OZXh0UmVxdWVzdChyZXF1ZXN0LnVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgIGhlYWRlcnM6ICgwLCBfdXRpbHMuZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKShyZXF1ZXN0LmhlYWRlcnMpLFxuICAgICAgICAgICAgZHVwbGV4OiAnaGFsZicsXG4gICAgICAgICAgICBzaWduYWw6IHJlcXVlc3QucmVxdWVzdC5zaWduYWwsXG4gICAgICAgICAgICAvLyBnZW9cbiAgICAgICAgICAgIC8vIGlwXG4gICAgICAgICAgICAvLyBuZXh0Q29uZmlnXG4gICAgICAgICAgICAvLyBib2R5IGNhbiBub3QgYmUgcGFzc2VkIGlmIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICAgICAgICAgIC8vIG9yIHdlIGdldCBhIFJlcXVlc3QgYm9keSB3YXMgZGlzdHVyYmVkIGVycm9yXG4gICAgICAgICAgICAuLi5yZXF1ZXN0LnJlcXVlc3Quc2lnbmFsLmFib3J0ZWQgPyB7fSA6IHtcbiAgICAgICAgICAgICAgICBib2R5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmV4dC1yZXF1ZXN0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js": /*!******************************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReflectAdapter\", ({\n enumerable: true,\n get: function() {\n return ReflectAdapter;\n }\n}));\nclass ReflectAdapter {\n static get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') {\n return value.bind(target);\n }\n return value;\n }\n static set(target, prop, value, receiver) {\n return Reflect.set(target, prop, value, receiver);\n }\n static has(target, prop) {\n return Reflect.has(target, prop);\n }\n static deleteProperty(target, prop) {\n return Reflect.deleteProperty(target, prop);\n }\n}\n\n//# sourceMappingURL=reflect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFx3ZWJcXHNwZWMtZXh0ZW5zaW9uXFxhZGFwdGVyc1xccmVmbGVjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlZmxlY3RBZGFwdGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlcjtcbiAgICB9XG59KTtcbmNsYXNzIFJlZmxlY3RBZGFwdGVyIHtcbiAgICBzdGF0aWMgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBzZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgc3RhdGljIGhhcyh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgfVxuICAgIHN0YXRpYyBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZmxlY3QuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/cookies.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RequestCookies: function() {\n return _cookies.RequestCookies;\n },\n ResponseCookies: function() {\n return _cookies.ResponseCookies;\n },\n stringifyCookie: function() {\n return _cookies.stringifyCookie;\n }\n});\nconst _cookies = __webpack_require__(/*! next/dist/compiled/@edge-runtime/cookies */ \"(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\");\n\n//# sourceMappingURL=cookies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vY29va2llcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQixtQkFBTyxDQUFDLHdIQUEwQzs7QUFFbkUiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcd2ViXFxzcGVjLWV4dGVuc2lvblxcY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJlcXVlc3RDb29raWVzOiBudWxsLFxuICAgIFJlc3BvbnNlQ29va2llczogbnVsbCxcbiAgICBzdHJpbmdpZnlDb29raWU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUmVxdWVzdENvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVxdWVzdENvb2tpZXM7XG4gICAgfSxcbiAgICBSZXNwb25zZUNvb2tpZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2Nvb2tpZXMuUmVzcG9uc2VDb29raWVzO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5Q29va2llOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9jb29raWVzLnN0cmluZ2lmeUNvb2tpZTtcbiAgICB9XG59KTtcbmNvbnN0IF9jb29raWVzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9AZWRnZS1ydW50aW1lL2Nvb2tpZXNcIik7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/request.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERNALS: function() {\n return INTERNALS;\n },\n NextRequest: function() {\n return NextRequest;\n }\n});\nconst _nexturl = __webpack_require__(/*! ../next-url */ \"(rsc)/./node_modules/next/dist/server/web/next-url.js\");\nconst _utils = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/server/web/utils.js\");\nconst _error = __webpack_require__(/*! ../error */ \"(rsc)/./node_modules/next/dist/server/web/error.js\");\nconst _cookies = __webpack_require__(/*! ./cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst INTERNALS = Symbol('internal request');\nclass NextRequest extends Request {\n constructor(input, init = {}){\n const url = typeof input !== 'string' && 'url' in input ? input.url : String(input);\n (0, _utils.validateURL)(url);\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (true) {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half';\n }\n }\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new _nexturl.NextURL(url, {\n headers: (0, _utils.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new _cookies.RequestCookies(this.headers),\n nextUrl,\n url: false ? 0 : nextUrl.toString()\n };\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n get nextUrl() {\n return this[INTERNALS].nextUrl;\n }\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */ get page() {\n throw new _error.RemovedPageError();\n }\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */ get ua() {\n throw new _error.RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n}\n\n//# sourceMappingURL=request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vcmVxdWVzdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsbUJBQU8sQ0FBQywwRUFBYTtBQUN0QyxlQUFlLG1CQUFPLENBQUMsb0VBQVU7QUFDakMsZUFBZSxtQkFBTyxDQUFDLG9FQUFVO0FBQ2pDLGlCQUFpQixtQkFBTyxDQUFDLHNGQUFXO0FBQ3BDO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFtQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQThDLEdBQUcsQ0FBRztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHdlYlxcc3BlYy1leHRlbnNpb25cXHJlcXVlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBJTlRFUk5BTFM6IG51bGwsXG4gICAgTmV4dFJlcXVlc3Q6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgSU5URVJOQUxTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIElOVEVSTkFMUztcbiAgICB9LFxuICAgIE5leHRSZXF1ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXF1ZXN0O1xuICAgIH1cbn0pO1xuY29uc3QgX25leHR1cmwgPSByZXF1aXJlKFwiLi4vbmV4dC11cmxcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5jb25zdCBfZXJyb3IgPSByZXF1aXJlKFwiLi4vZXJyb3JcIik7XG5jb25zdCBfY29va2llcyA9IHJlcXVpcmUoXCIuL2Nvb2tpZXNcIik7XG5jb25zdCBJTlRFUk5BTFMgPSBTeW1ib2woJ2ludGVybmFsIHJlcXVlc3QnKTtcbmNsYXNzIE5leHRSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGluaXQgPSB7fSl7XG4gICAgICAgIGNvbnN0IHVybCA9IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgJ3VybCcgaW4gaW5wdXQgPyBpbnB1dC51cmwgOiBTdHJpbmcoaW5wdXQpO1xuICAgICAgICAoMCwgX3V0aWxzLnZhbGlkYXRlVVJMKSh1cmwpO1xuICAgICAgICAvLyBub2RlIFJlcXVlc3QgaW5zdGFuY2UgcmVxdWlyZXMgZHVwbGV4IG9wdGlvbiB3aGVuIGEgYm9keVxuICAgICAgICAvLyBpcyBwcmVzZW50IG9yIGl0IGVycm9ycywgd2UgZG9uJ3QgaGFuZGxlIHRoaXMgZm9yXG4gICAgICAgIC8vIFJlcXVlc3QgYmVpbmcgcGFzc2VkIGluIHNpbmNlIGl0IHdvdWxkIGhhdmUgYWxyZWFkeVxuICAgICAgICAvLyBlcnJvcmVkIGlmIHRoaXMgd2Fzbid0IGNvbmZpZ3VyZWRcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gJ2VkZ2UnKSB7XG4gICAgICAgICAgICBpZiAoaW5pdC5ib2R5ICYmIGluaXQuZHVwbGV4ICE9PSAnaGFsZicpIHtcbiAgICAgICAgICAgICAgICBpbml0LmR1cGxleCA9ICdoYWxmJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSBzdXBlcihpbnB1dCwgaW5pdCk7XG4gICAgICAgIGVsc2Ugc3VwZXIodXJsLCBpbml0KTtcbiAgICAgICAgY29uc3QgbmV4dFVybCA9IG5ldyBfbmV4dHVybC5OZXh0VVJMKHVybCwge1xuICAgICAgICAgICAgaGVhZGVyczogKDAsIF91dGlscy50b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKSh0aGlzLmhlYWRlcnMpLFxuICAgICAgICAgICAgbmV4dENvbmZpZzogaW5pdC5uZXh0Q29uZmlnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzW0lOVEVSTkFMU10gPSB7XG4gICAgICAgICAgICBjb29raWVzOiBuZXcgX2Nvb2tpZXMuUmVxdWVzdENvb2tpZXModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgIG5leHRVcmwsXG4gICAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52Ll9fTkVYVF9OT19NSURETEVXQVJFX1VSTF9OT1JNQUxJWkUgPyB1cmwgOiBuZXh0VXJsLnRvU3RyaW5nKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgW1N5bWJvbC5mb3IoJ2VkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbScpXSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuY29va2llcyxcbiAgICAgICAgICAgIG5leHRVcmw6IHRoaXMubmV4dFVybCxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAvLyByZXN0IG9mIHByb3BzIGNvbWUgZnJvbSBSZXF1ZXN0XG4gICAgICAgICAgICBib2R5VXNlZDogdGhpcy5ib2R5VXNlZCxcbiAgICAgICAgICAgIGNhY2hlOiB0aGlzLmNhY2hlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRoaXMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogdGhpcy5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmhlYWRlcnMpLFxuICAgICAgICAgICAgaW50ZWdyaXR5OiB0aGlzLmludGVncml0eSxcbiAgICAgICAgICAgIGtlZXBhbGl2ZTogdGhpcy5rZWVwYWxpdmUsXG4gICAgICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgcmVkaXJlY3Q6IHRoaXMucmVkaXJlY3QsXG4gICAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICAgIHJlZmVycmVyUG9saWN5OiB0aGlzLnJlZmVycmVyUG9saWN5LFxuICAgICAgICAgICAgc2lnbmFsOiB0aGlzLnNpZ25hbFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXQgY29va2llcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5jb29raWVzO1xuICAgIH1cbiAgICBnZXQgbmV4dFVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5uZXh0VXJsO1xuICAgIH1cbiAgICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogYHBhZ2VgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGBVUkxQYXR0ZXJuYC5cbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlcXVlc3QtcGFnZVxuICAgKi8gZ2V0IHBhZ2UoKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXJyb3IuUmVtb3ZlZFBhZ2VFcnJvcigpO1xuICAgIH1cbiAgICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogYHVhYCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBcXGB1c2VyQWdlbnRcXGAgZnVuY3Rpb24uXG4gICAqIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1wYXJzZS11c2VyLWFnZW50XG4gICAqLyBnZXQgdWEoKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXJyb3IuUmVtb3ZlZFVBRXJyb3IoKTtcbiAgICB9XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS51cmw7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/server/web/utils.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/server/web/utils.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n fromNodeOutgoingHttpHeaders: function() {\n return fromNodeOutgoingHttpHeaders;\n },\n normalizeNextQueryParam: function() {\n return normalizeNextQueryParam;\n },\n splitCookiesString: function() {\n return splitCookiesString;\n },\n toNodeOutgoingHttpHeaders: function() {\n return toNodeOutgoingHttpHeaders;\n },\n validateURL: function() {\n return validateURL;\n }\n});\nconst _constants = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nfunction fromNodeOutgoingHttpHeaders(nodeHeaders) {\n const headers = new Headers();\n for (let [key, value] of Object.entries(nodeHeaders)){\n const values = Array.isArray(value) ? value : [\n value\n ];\n for (let v of values){\n if (typeof v === 'undefined') continue;\n if (typeof v === 'number') {\n v = v.toString();\n }\n headers.append(key, v);\n }\n }\n return headers;\n}\nfunction splitCookiesString(cookiesString) {\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while(pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))){\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== '=' && ch !== ';' && ch !== ',';\n }\n while(pos < cookiesString.length){\n start = pos;\n cookiesSeparatorFound = false;\n while(skipWhitespace()){\n ch = cookiesString.charAt(pos);\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while(pos < cookiesString.length && notSpecialChar()){\n pos += 1;\n }\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\nfunction toNodeOutgoingHttpHeaders(headers) {\n const nodeHeaders = {};\n const cookies = [];\n if (headers) {\n for (const [key, value] of headers.entries()){\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value));\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;\n } else {\n nodeHeaders[key] = value;\n }\n }\n }\n return nodeHeaders;\n}\nfunction validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw Object.defineProperty(new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n }), \"__NEXT_ERROR_CODE\", {\n value: \"E61\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction normalizeNextQueryParam(key) {\n const prefixes = [\n _constants.NEXT_QUERY_PARAM_PREFIX,\n _constants.NEXT_INTERCEPTION_MARKER_PREFIX\n ];\n for (const prefix of prefixes){\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length);\n }\n }\n return null;\n}\n\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsbUJBQW1CLG1CQUFPLENBQUMsNEVBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0U7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sbUVBQW1FLFlBQVk7QUFDL0U7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcd2ViXFx1dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGZyb21Ob2RlT3V0Z29pbmdIdHRwSGVhZGVyczogbnVsbCxcbiAgICBub3JtYWxpemVOZXh0UXVlcnlQYXJhbTogbnVsbCxcbiAgICBzcGxpdENvb2tpZXNTdHJpbmc6IG51bGwsXG4gICAgdG9Ob2RlT3V0Z29pbmdIdHRwSGVhZGVyczogbnVsbCxcbiAgICB2YWxpZGF0ZVVSTDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBmcm9tTm9kZU91dGdvaW5nSHR0cEhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzO1xuICAgIH0sXG4gICAgbm9ybWFsaXplTmV4dFF1ZXJ5UGFyYW06IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplTmV4dFF1ZXJ5UGFyYW07XG4gICAgfSxcbiAgICBzcGxpdENvb2tpZXNTdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3BsaXRDb29raWVzU3RyaW5nO1xuICAgIH0sXG4gICAgdG9Ob2RlT3V0Z29pbmdIdHRwSGVhZGVyczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzO1xuICAgIH0sXG4gICAgdmFsaWRhdGVVUkw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVVUkw7XG4gICAgfVxufSk7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uL2xpYi9jb25zdGFudHNcIik7XG5mdW5jdGlvbiBmcm9tTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMobm9kZUhlYWRlcnMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobm9kZUhlYWRlcnMpKXtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgIF07XG4gICAgICAgIGZvciAobGV0IHYgb2YgdmFsdWVzKXtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHYgPSB2LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHYpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xufVxuZnVuY3Rpb24gc3BsaXRDb29raWVzU3RyaW5nKGNvb2tpZXNTdHJpbmcpIHtcbiAgICB2YXIgY29va2llc1N0cmluZ3MgPSBbXTtcbiAgICB2YXIgcG9zID0gMDtcbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIGNoO1xuICAgIHZhciBsYXN0Q29tbWE7XG4gICAgdmFyIG5leHRTdGFydDtcbiAgICB2YXIgY29va2llc1NlcGFyYXRvckZvdW5kO1xuICAgIGZ1bmN0aW9uIHNraXBXaGl0ZXNwYWNlKCkge1xuICAgICAgICB3aGlsZShwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiAvXFxzLy50ZXN0KGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcykpKXtcbiAgICAgICAgICAgIHBvcyArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbm90U3BlY2lhbENoYXIoKSB7XG4gICAgICAgIGNoID0gY29va2llc1N0cmluZy5jaGFyQXQocG9zKTtcbiAgICAgICAgcmV0dXJuIGNoICE9PSAnPScgJiYgY2ggIT09ICc7JyAmJiBjaCAhPT0gJywnO1xuICAgIH1cbiAgICB3aGlsZShwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCl7XG4gICAgICAgIHN0YXJ0ID0gcG9zO1xuICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUoc2tpcFdoaXRlc3BhY2UoKSl7XG4gICAgICAgICAgICBjaCA9IGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcsJykge1xuICAgICAgICAgICAgICAgIC8vICcsJyBpcyBhIGNvb2tpZSBzZXBhcmF0b3IgaWYgd2UgaGF2ZSBsYXRlciBmaXJzdCAnPScsIG5vdCAnOycgb3IgJywnXG4gICAgICAgICAgICAgICAgbGFzdENvbW1hID0gcG9zO1xuICAgICAgICAgICAgICAgIHBvcyArPSAxO1xuICAgICAgICAgICAgICAgIHNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgICAgICAgICAgbmV4dFN0YXJ0ID0gcG9zO1xuICAgICAgICAgICAgICAgIHdoaWxlKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIG5vdFNwZWNpYWxDaGFyKCkpe1xuICAgICAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHNwZWNpYWwgY2hhcmFjdGVyXG4gICAgICAgICAgICAgICAgaWYgKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcykgPT09ICc9Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBmb3VuZCBjb29raWVzIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBwb3MgaXMgaW5zaWRlIHRoZSBuZXh0IGNvb2tpZSwgc28gYmFjayB1cCBhbmQgcmV0dXJuIGl0LlxuICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXh0U3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGxhc3RDb21tYSkpO1xuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiBwYXJhbSAnLCcgb3IgcGFyYW0gc2VwYXJhdG9yICc7JyxcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgY29udGludWUgZnJvbSB0aGF0IGNvbW1hXG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IGxhc3RDb21tYSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvb2tpZXNTZXBhcmF0b3JGb3VuZCB8fCBwb3MgPj0gY29va2llc1N0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGNvb2tpZXNTdHJpbmcubGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvb2tpZXNTdHJpbmdzO1xufVxuZnVuY3Rpb24gdG9Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycyhoZWFkZXJzKSB7XG4gICAgY29uc3Qgbm9kZUhlYWRlcnMgPSB7fTtcbiAgICBjb25zdCBjb29raWVzID0gW107XG4gICAgaWYgKGhlYWRlcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgaGVhZGVycy5lbnRyaWVzKCkpe1xuICAgICAgICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSBnb3R0ZW4gYSBjb21tYSBqb2luZWQgc3RyaW5nIG9mIGNvb2tpZXMsIG9yIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgLy8gc2V0LWNvb2tpZSBoZWFkZXJzLiBXZSBuZWVkIHRvIG1lcmdlIHRoZW0gaW50byBvbmUgaGVhZGVyIGFycmF5XG4gICAgICAgICAgICAgICAgLy8gdG8gcmVwcmVzZW50IGFsbCB0aGUgY29va2llcy5cbiAgICAgICAgICAgICAgICBjb29raWVzLnB1c2goLi4uc3BsaXRDb29raWVzU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgbm9kZUhlYWRlcnNba2V5XSA9IGNvb2tpZXMubGVuZ3RoID09PSAxID8gY29va2llc1swXSA6IGNvb2tpZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVIZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZUhlYWRlcnM7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVVSTCh1cmwpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG5ldyBVUkwoU3RyaW5nKHVybCkpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBVUkwgaXMgbWFsZm9ybWVkIFwiJHtTdHJpbmcodXJsKX1cIi4gUGxlYXNlIHVzZSBvbmx5IGFic29sdXRlIFVSTHMgLSBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlbGF0aXZlLXVybHNgLCB7XG4gICAgICAgICAgICBjYXVzZTogZXJyb3JcbiAgICAgICAgfSksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IFwiRTYxXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBub3JtYWxpemVOZXh0UXVlcnlQYXJhbShrZXkpIHtcbiAgICBjb25zdCBwcmVmaXhlcyA9IFtcbiAgICAgICAgX2NvbnN0YW50cy5ORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCxcbiAgICAgICAgX2NvbnN0YW50cy5ORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IHByZWZpeCBvZiBwcmVmaXhlcyl7XG4gICAgICAgIGlmIChrZXkgIT09IHByZWZpeCAmJiBrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/shared/lib/deep-freeze.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"deepFreeze\", ({\n enumerable: true,\n get: function() {\n return deepFreeze;\n }\n}));\nfunction deepFreeze(obj) {\n // If the object is already frozen, there's no need to freeze it again.\n if (Object.isFrozen(obj)) return obj;\n // An array is an object, but we also want to freeze each element in the array\n // as well.\n if (Array.isArray(obj)) {\n for (const item of obj){\n if (!item || typeof item !== 'object') continue;\n deepFreeze(item);\n }\n return Object.freeze(obj);\n }\n for (const value of Object.values(obj)){\n if (!value || typeof value !== 'object') continue;\n deepFreeze(value);\n }\n return Object.freeze(obj);\n} //# sourceMappingURL=deep-freeze.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZGVlcC1mcmVlemUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4Q0FVZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQTZCQyxHQUFNO0lBQ2pELHVFQUF1RTtJQUN2RSxJQUFJQyxPQUFPQyxRQUFRLENBQUNGLE1BQU0sT0FBT0E7SUFFakMsOEVBQThFO0lBQzlFLFdBQVc7SUFDWCxJQUFJRyxNQUFNQyxPQUFPLENBQUNKLE1BQU07UUFDdEIsS0FBSyxNQUFNSyxRQUFRTCxJQUFLO1lBQ3RCLElBQUksQ0FBQ0ssUUFBUSxPQUFPQSxTQUFTLFVBQVU7WUFDdkNOLFdBQVdNO1FBQ2I7UUFFQSxPQUFPSixPQUFPSyxNQUFNLENBQUNOO0lBQ3ZCO0lBRUEsS0FBSyxNQUFNTyxTQUFTTixPQUFPTyxNQUFNLENBQUNSLEtBQU07UUFDdEMsSUFBSSxDQUFDTyxTQUFTLE9BQU9BLFVBQVUsVUFBVTtRQUN6Q1IsV0FBV1E7SUFDYjtJQUVBLE9BQU9OLE9BQU9LLE1BQU0sQ0FBQ047QUFDdkIiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxzaGFyZWRcXGxpYlxcZGVlcC1mcmVlemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHkgfSBmcm9tICcuL2RlZXAtcmVhZG9ubHknXG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZnJlZXplcyBhbiBvYmplY3QgYW5kIGFsbCBvZiBpdHMgcHJvcGVydGllcy4gVGhpcyBwcmV2ZW50cyB0aGVcbiAqIG9iamVjdCBmcm9tIGJlaW5nIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFdoZW4gdGhlIEpTIHJ1bnRpbWUgaXMgcnVubmluZyBpblxuICogc3RyaWN0IG1vZGUsIGFueSBhdHRlbXB0cyB0byBtb2RpZnkgYSBmcm96ZW4gb2JqZWN0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvZnJlZXplXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gZnJlZXplLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBEZWVwUmVhZG9ubHk8VD4ge1xuICAvLyBJZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkgZnJvemVuLCB0aGVyZSdzIG5vIG5lZWQgdG8gZnJlZXplIGl0IGFnYWluLlxuICBpZiAoT2JqZWN0LmlzRnJvemVuKG9iaikpIHJldHVybiBvYmogYXMgRGVlcFJlYWRvbmx5PFQ+XG5cbiAgLy8gQW4gYXJyYXkgaXMgYW4gb2JqZWN0LCBidXQgd2UgYWxzbyB3YW50IHRvIGZyZWV6ZSBlYWNoIGVsZW1lbnQgaW4gdGhlIGFycmF5XG4gIC8vIGFzIHdlbGwuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygb2JqKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgdHlwZW9mIGl0ZW0gIT09ICdvYmplY3QnKSBjb250aW51ZVxuICAgICAgZGVlcEZyZWV6ZShpdGVtKVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG9iaikgYXMgRGVlcFJlYWRvbmx5PFQ+XG4gIH1cblxuICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMob2JqKSkge1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgY29udGludWVcbiAgICBkZWVwRnJlZXplKHZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqKSBhcyBEZWVwUmVhZG9ubHk8VD5cbn1cbiJdLCJuYW1lcyI6WyJkZWVwRnJlZXplIiwib2JqIiwiT2JqZWN0IiwiaXNGcm96ZW4iLCJBcnJheSIsImlzQXJyYXkiLCJpdGVtIiwiZnJlZXplIiwidmFsdWUiLCJ2YWx1ZXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/deep-freeze.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/errors/constants.js ***! \***************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"MISSING_ROOT_TAGS_ERROR\", ({\n enumerable: true,\n get: function() {\n return MISSING_ROOT_TAGS_ERROR;\n }\n}));\nconst MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3JzL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OzJEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxlcnJvcnNcXGNvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTUlTU0lOR19ST09UX1RBR1NfRVJST1IgPSAnTkVYVF9NSVNTSU5HX1JPT1RfVEFHUydcbiJdLCJuYW1lcyI6WyJNSVNTSU5HX1JPT1RfVEFHU19FUlJPUiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/errors/constants.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/escape-regexp.js": /*!************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/escape-regexp.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// regexp is based on https://github.com/sindresorhus/escape-string-regexp\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"escapeStringRegexp\", ({\n enumerable: true,\n get: function() {\n return escapeStringRegexp;\n }\n}));\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/;\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g;\nfunction escapeStringRegexp(str) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&');\n }\n return str;\n} //# sourceMappingURL=escape-regexp.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXNjYXBlLXJlZ2V4cC5qcyIsIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7Ozs7O3NEQUkxREE7OztlQUFBQTs7O0FBSGhCLE1BQU1DLGNBQWM7QUFDcEIsTUFBTUMsa0JBQWtCO0FBRWpCLFNBQVNGLG1CQUFtQkcsR0FBVztJQUM1QywrR0FBK0c7SUFDL0csSUFBSUYsWUFBWUcsSUFBSSxDQUFDRCxNQUFNO1FBQ3pCLE9BQU9BLElBQUlFLE9BQU8sQ0FBQ0gsaUJBQWlCO0lBQ3RDO0lBQ0EsT0FBT0M7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNoYXJlZFxcbGliXFxlc2NhcGUtcmVnZXhwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlZ2V4cCBpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2VzY2FwZS1zdHJpbmctcmVnZXhwXG5jb25zdCByZUhhc1JlZ0V4cCA9IC9bfFxcXFx7fSgpW1xcXV4kKyo/Li1dL1xuY29uc3QgcmVSZXBsYWNlUmVnRXhwID0gL1t8XFxcXHt9KClbXFxdXiQrKj8uLV0vZ1xuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlU3RyaW5nUmVnZXhwKHN0cjogc3RyaW5nKSB7XG4gIC8vIHNlZSBhbHNvOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iLzJkYTAyNGMzYjRmOTk0N2E0ODUxNzYzOWRlNzU2MDQ1N2NkNGVjNmMvZXNjYXBlUmVnRXhwLmpzI0wyM1xuICBpZiAocmVIYXNSZWdFeHAudGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlUmVwbGFjZVJlZ0V4cCwgJ1xcXFwkJicpXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuIl0sIm5hbWVzIjpbImVzY2FwZVN0cmluZ1JlZ2V4cCIsInJlSGFzUmVnRXhwIiwicmVSZXBsYWNlUmVnRXhwIiwic3RyIiwidGVzdCIsInJlcGxhY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/escape-regexp.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/shared/lib/get-hostname.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getHostname\", ({\n enumerable: true,\n get: function() {\n return getHostname;\n }\n}));\nfunction getHostname(parsed, headers) {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname;\n if ((headers == null ? void 0 : headers.host) && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0];\n } else if (parsed.hostname) {\n hostname = parsed.hostname;\n } else return;\n return hostname.toLowerCase();\n} //# sourceMappingURL=get-hostname.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZ2V0LWhvc3RuYW1lLmpzIiwibWFwcGluZ3MiOiI7Ozs7K0NBUWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxZQUNkQyxNQUFvQyxFQUNwQ0MsT0FBNkI7SUFFN0IsMkVBQTJFO0lBQzNFLFlBQVk7SUFDWixJQUFJQztJQUNKLElBQUlELENBQUFBLFdBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFFBQVNFLElBQUFBLEtBQVEsQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDSixRQUFRRSxJQUFJLEdBQUc7UUFDakRELFdBQVdELFFBQVFFLElBQUksQ0FBQ0csUUFBUSxHQUFHQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUNyRCxPQUFPLElBQUlQLE9BQU9FLFFBQVEsRUFBRTtRQUMxQkEsV0FBV0YsT0FBT0UsUUFBUTtJQUM1QixPQUFPO0lBRVAsT0FBT0EsU0FBU00sV0FBVztBQUM3QiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNoYXJlZFxcbGliXFxnZXQtaG9zdG5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPdXRnb2luZ0h0dHBIZWFkZXJzIH0gZnJvbSAnaHR0cCdcblxuLyoqXG4gKiBUYWtlcyBhbiBvYmplY3Qgd2l0aCBhIGhvc3RuYW1lIHByb3BlcnR5IChsaWtlIGEgcGFyc2VkIFVSTCkgYW5kIHNvbWVcbiAqIGhlYWRlcnMgdGhhdCBtYXkgY29udGFpbiBIb3N0IGFuZCByZXR1cm5zIHRoZSBwcmVmZXJyZWQgaG9zdG5hbWUuXG4gKiBAcGFyYW0gcGFyc2VkIEFuIG9iamVjdCBjb250YWluaW5nIGEgaG9zdG5hbWUgcHJvcGVydHkuXG4gKiBAcGFyYW0gaGVhZGVycyBBIGRpY3Rpb25hcnkgd2l0aCBoZWFkZXJzIGNvbnRhaW5pbmcgYSBgaG9zdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3N0bmFtZShcbiAgcGFyc2VkOiB7IGhvc3RuYW1lPzogc3RyaW5nIHwgbnVsbCB9LFxuICBoZWFkZXJzPzogT3V0Z29pbmdIdHRwSGVhZGVyc1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gR2V0IHRoZSBob3N0bmFtZSBmcm9tIHRoZSBoZWFkZXJzIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVzZSB0aGUgcGFyc2VkXG4gIC8vIGhvc3RuYW1lLlxuICBsZXQgaG9zdG5hbWU6IHN0cmluZ1xuICBpZiAoaGVhZGVycz8uaG9zdCAmJiAhQXJyYXkuaXNBcnJheShoZWFkZXJzLmhvc3QpKSB7XG4gICAgaG9zdG5hbWUgPSBoZWFkZXJzLmhvc3QudG9TdHJpbmcoKS5zcGxpdCgnOicsIDEpWzBdXG4gIH0gZWxzZSBpZiAocGFyc2VkLmhvc3RuYW1lKSB7XG4gICAgaG9zdG5hbWUgPSBwYXJzZWQuaG9zdG5hbWVcbiAgfSBlbHNlIHJldHVyblxuXG4gIHJldHVybiBob3N0bmFtZS50b0xvd2VyQ2FzZSgpXG59XG4iXSwibmFtZXMiOlsiZ2V0SG9zdG5hbWUiLCJwYXJzZWQiLCJoZWFkZXJzIiwiaG9zdG5hbWUiLCJob3N0IiwiQXJyYXkiLCJpc0FycmF5IiwidG9TdHJpbmciLCJzcGxpdCIsInRvTG93ZXJDYXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/get-hostname.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nfunction detectDomainLocale(domainItems, hostname, detectedLocale) {\n if (!domainItems) return;\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase();\n }\n for (const item of domainItems){\n var _item_domain, _item_locales;\n // remove port if present\n const domainHostname = (_item_domain = item.domain) == null ? void 0 : _item_domain.split(':', 1)[0].toLowerCase();\n if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || ((_item_locales = item.locales) == null ? void 0 : _item_locales.some((locale)=>locale.toLowerCase() === detectedLocale))) {\n return item;\n }\n }\n} //# sourceMappingURL=detect-domain-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O3NEQUVnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQ2RDLFdBQXFDLEVBQ3JDQyxRQUFpQixFQUNqQkMsY0FBdUI7SUFFdkIsSUFBSSxDQUFDRixhQUFhO0lBRWxCLElBQUlFLGdCQUFnQjtRQUNsQkEsaUJBQWlCQSxlQUFlQyxXQUFXO0lBQzdDO0lBRUEsS0FBSyxNQUFNQyxRQUFRSixZQUFhO1lBRVBJLGNBSXJCQTtRQUxGLHlCQUF5QjtRQUN6QixNQUFNQyxpQkFBQUEsQ0FBaUJELGVBQUFBLEtBQUtFLE1BQUFBLEtBQU0sZ0JBQVhGLGFBQWFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUNKLFdBQVc7UUFDaEUsSUFDRUYsYUFBYUksa0JBQ2JILG1CQUFtQkUsS0FBS0ksYUFBYSxDQUFDTCxXQUFXLFFBQ2pEQyxnQkFBQUEsS0FBS0ssT0FBQUEsS0FBTyxnQkFBWkwsY0FBY00sSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9SLFdBQVcsT0FBT0QsZUFBQUEsR0FDeEQ7WUFDQSxPQUFPRTtRQUNUO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXGkxOG5cXGRldGVjdC1kb21haW4tbG9jYWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG9tYWluTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2NvbmZpZy1zaGFyZWQnXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3REb21haW5Mb2NhbGUoXG4gIGRvbWFpbkl0ZW1zPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW10sXG4gIGhvc3RuYW1lPzogc3RyaW5nLFxuICBkZXRlY3RlZExvY2FsZT86IHN0cmluZ1xuKSB7XG4gIGlmICghZG9tYWluSXRlbXMpIHJldHVyblxuXG4gIGlmIChkZXRlY3RlZExvY2FsZSkge1xuICAgIGRldGVjdGVkTG9jYWxlID0gZGV0ZWN0ZWRMb2NhbGUudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGRvbWFpbkl0ZW1zKSB7XG4gICAgLy8gcmVtb3ZlIHBvcnQgaWYgcHJlc2VudFxuICAgIGNvbnN0IGRvbWFpbkhvc3RuYW1lID0gaXRlbS5kb21haW4/LnNwbGl0KCc6JywgMSlbMF0udG9Mb3dlckNhc2UoKVxuICAgIGlmIChcbiAgICAgIGhvc3RuYW1lID09PSBkb21haW5Ib3N0bmFtZSB8fFxuICAgICAgZGV0ZWN0ZWRMb2NhbGUgPT09IGl0ZW0uZGVmYXVsdExvY2FsZS50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBpdGVtLmxvY2FsZXM/LnNvbWUoKGxvY2FsZSkgPT4gbG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09IGRldGVjdGVkTG9jYWxlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGl0ZW1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJkZXRlY3REb21haW5Mb2NhbGUiLCJkb21haW5JdGVtcyIsImhvc3RuYW1lIiwiZGV0ZWN0ZWRMb2NhbGUiLCJ0b0xvd2VyQ2FzZSIsIml0ZW0iLCJkb21haW5Ib3N0bmFtZSIsImRvbWFpbiIsInNwbGl0IiwiZGVmYXVsdExvY2FsZSIsImxvY2FsZXMiLCJzb21lIiwibG9jYWxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizeLocalePath\", ({\n enumerable: true,\n get: function() {\n return normalizeLocalePath;\n }\n}));\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */ const cache = new WeakMap();\nfunction normalizeLocalePath(pathname, locales) {\n // If locales is undefined, return the pathname as is.\n if (!locales) return {\n pathname\n };\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales);\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale)=>locale.toLowerCase());\n cache.set(locales, lowercasedLocales);\n }\n let detectedLocale;\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2);\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return {\n pathname\n };\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase();\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment);\n if (index < 0) return {\n pathname\n };\n // Return the case-sensitive locale.\n detectedLocale = locales[index];\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/';\n return {\n pathname,\n detectedLocale\n };\n} //# sourceMappingURL=normalize-locale-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFxQmdCQTs7O2VBQUFBOzs7QUFoQmhCOzs7O0NBSUMsR0FDRCxNQUFNQyxRQUFRLElBQUlDO0FBV1gsU0FBU0Ysb0JBQ2RHLFFBQWdCLEVBQ2hCQyxPQUEyQjtJQUUzQixzREFBc0Q7SUFDdEQsSUFBSSxDQUFDQSxTQUFTLE9BQU87UUFBRUQ7SUFBUztJQUVoQyxpRUFBaUU7SUFDakUsSUFBSUUsb0JBQW9CSixNQUFNSyxHQUFHLENBQUNGO0lBQ2xDLElBQUksQ0FBQ0MsbUJBQW1CO1FBQ3RCQSxvQkFBb0JELFFBQVFHLEdBQUcsQ0FBQyxDQUFDQyxTQUFXQSxPQUFPQyxXQUFXO1FBQzlEUixNQUFNUyxHQUFHLENBQUNOLFNBQVNDO0lBQ3JCO0lBRUEsSUFBSU07SUFFSixvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLE1BQU1DLFdBQVdULFNBQVNVLEtBQUssQ0FBQyxLQUFLO0lBRXJDLDBFQUEwRTtJQUMxRSxVQUFVO0lBQ1YsSUFBSSxDQUFDRCxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU87UUFBRVQ7SUFBUztJQUVwQywwREFBMEQ7SUFDMUQsTUFBTVcsVUFBVUYsUUFBUSxDQUFDLEVBQUUsQ0FBQ0gsV0FBVztJQUV2Qyx5RUFBeUU7SUFDekUsbUNBQW1DO0lBQ25DLE1BQU1NLFFBQVFWLGtCQUFrQlcsT0FBTyxDQUFDRjtJQUN4QyxJQUFJQyxRQUFRLEdBQUcsT0FBTztRQUFFWjtJQUFTO0lBRWpDLG9DQUFvQztJQUNwQ1EsaUJBQWlCUCxPQUFPLENBQUNXLE1BQU07SUFFL0IsZ0RBQWdEO0lBQ2hEWixXQUFXQSxTQUFTYyxLQUFLLENBQUNOLGVBQWVPLE1BQU0sR0FBRyxNQUFNO0lBRXhELE9BQU87UUFBRWY7UUFBVVE7SUFBZTtBQUNwQyIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXGkxOG5cXG5vcm1hbGl6ZS1sb2NhbGUtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBhdGhMb2NhbGUge1xuICBkZXRlY3RlZExvY2FsZT86IHN0cmluZ1xuICBwYXRobmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogQSBjYWNoZSBvZiBsb3dlcmNhc2VkIGxvY2FsZXMgZm9yIGVhY2ggbGlzdCBvZiBsb2NhbGVzLiBUaGlzIGlzIHN0b3JlZCBhcyBhXG4gKiBXZWFrTWFwIHNvIGlmIHRoZSBsb2NhbGVzIGFyZSBnYXJiYWdlIGNvbGxlY3RlZCwgdGhlIGNhY2hlIGVudHJ5IHdpbGwgYmVcbiAqIHJlbW92ZWQgYXMgd2VsbC5cbiAqL1xuY29uc3QgY2FjaGUgPSBuZXcgV2Vha01hcDxyZWFkb25seSBzdHJpbmdbXSwgcmVhZG9ubHkgc3RyaW5nW10+KClcblxuLyoqXG4gKiBGb3IgYSBwYXRobmFtZSB0aGF0IG1heSBpbmNsdWRlIGEgbG9jYWxlIGZyb20gYSBsaXN0IG9mIGxvY2FsZXMsIGl0XG4gKiByZW1vdmVzIHRoZSBsb2NhbGUgZnJvbSB0aGUgcGF0aG5hbWUgcmV0dXJuaW5nIGl0IGFsb25nc2lkZSB3aXRoIHRoZVxuICogZGV0ZWN0ZWQgbG9jYWxlLlxuICpcbiAqIEBwYXJhbSBwYXRobmFtZSBBIHBhdGhuYW1lIHRoYXQgbWF5IGluY2x1ZGUgYSBsb2NhbGUuXG4gKiBAcGFyYW0gbG9jYWxlcyBBIGxpc3Qgb2YgbG9jYWxlcy5cbiAqIEByZXR1cm5zIFRoZSBkZXRlY3RlZCBsb2NhbGUgYW5kIHBhdGhuYW1lIHdpdGhvdXQgbG9jYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVMb2NhbGVQYXRoKFxuICBwYXRobmFtZTogc3RyaW5nLFxuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbik6IFBhdGhMb2NhbGUge1xuICAvLyBJZiBsb2NhbGVzIGlzIHVuZGVmaW5lZCwgcmV0dXJuIHRoZSBwYXRobmFtZSBhcyBpcy5cbiAgaWYgKCFsb2NhbGVzKSByZXR1cm4geyBwYXRobmFtZSB9XG5cbiAgLy8gR2V0IHRoZSBjYWNoZWQgbG93ZXJjYXNlZCBsb2NhbGVzIG9yIGNyZWF0ZSBhIG5ldyBjYWNoZSBlbnRyeS5cbiAgbGV0IGxvd2VyY2FzZWRMb2NhbGVzID0gY2FjaGUuZ2V0KGxvY2FsZXMpXG4gIGlmICghbG93ZXJjYXNlZExvY2FsZXMpIHtcbiAgICBsb3dlcmNhc2VkTG9jYWxlcyA9IGxvY2FsZXMubWFwKChsb2NhbGUpID0+IGxvY2FsZS50b0xvd2VyQ2FzZSgpKVxuICAgIGNhY2hlLnNldChsb2NhbGVzLCBsb3dlcmNhc2VkTG9jYWxlcylcbiAgfVxuXG4gIGxldCBkZXRlY3RlZExvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgLy8gVGhlIGZpcnN0IHNlZ21lbnQgd2lsbCBiZSBlbXB0eSwgYmVjYXVzZSBpdCBoYXMgYSBsZWFkaW5nIGAvYC4gSWZcbiAgLy8gdGhlcmUgaXMgbm8gZnVydGhlciBzZWdtZW50LCB0aGVyZSBpcyBubyBsb2NhbGUgKG9yIGl0J3MgdGhlIGRlZmF1bHQpLlxuICBjb25zdCBzZWdtZW50cyA9IHBhdGhuYW1lLnNwbGl0KCcvJywgMilcblxuICAvLyBJZiB0aGVyZSdzIG5vIHNlY29uZCBzZWdtZW50IChpZSwgdGhlIHBhdGhuYW1lIGlzIGp1c3QgYC9gKSwgdGhlcmUncyBub1xuICAvLyBsb2NhbGUuXG4gIGlmICghc2VnbWVudHNbMV0pIHJldHVybiB7IHBhdGhuYW1lIH1cblxuICAvLyBUaGUgc2Vjb25kIHNlZ21lbnQgd2lsbCBjb250YWluIHRoZSBsb2NhbGUgcGFydCBpZiBhbnkuXG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1sxXS50b0xvd2VyQ2FzZSgpXG5cbiAgLy8gU2VlIGlmIHRoZSBzZWdtZW50IG1hdGNoZXMgb25lIG9mIHRoZSBsb2NhbGVzLiBJZiBpdCBkb2Vzbid0LCB0aGVyZSBpc1xuICAvLyBubyBsb2NhbGUgKG9yIGl0J3MgdGhlIGRlZmF1bHQpLlxuICBjb25zdCBpbmRleCA9IGxvd2VyY2FzZWRMb2NhbGVzLmluZGV4T2Yoc2VnbWVudClcbiAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIHsgcGF0aG5hbWUgfVxuXG4gIC8vIFJldHVybiB0aGUgY2FzZS1zZW5zaXRpdmUgbG9jYWxlLlxuICBkZXRlY3RlZExvY2FsZSA9IGxvY2FsZXNbaW5kZXhdXG5cbiAgLy8gUmVtb3ZlIHRoZSBgLyR7bG9jYWxlfWAgcGFydCBvZiB0aGUgcGF0aG5hbWUuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUuc2xpY2UoZGV0ZWN0ZWRMb2NhbGUubGVuZ3RoICsgMSkgfHwgJy8nXG5cbiAgcmV0dXJuIHsgcGF0aG5hbWUsIGRldGVjdGVkTG9jYWxlIH1cbn1cbiJdLCJuYW1lcyI6WyJub3JtYWxpemVMb2NhbGVQYXRoIiwiY2FjaGUiLCJXZWFrTWFwIiwicGF0aG5hbWUiLCJsb2NhbGVzIiwibG93ZXJjYXNlZExvY2FsZXMiLCJnZXQiLCJtYXAiLCJsb2NhbGUiLCJ0b0xvd2VyQ2FzZSIsInNldCIsImRldGVjdGVkTG9jYWxlIiwic2VnbWVudHMiLCJzcGxpdCIsInNlZ21lbnQiLCJpbmRleCIsImluZGV4T2YiLCJzbGljZSIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/invariant-error.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"InvariantError\", ({\n enumerable: true,\n get: function() {\n return InvariantError;\n }\n}));\nclass InvariantError extends Error {\n constructor(message, options){\n super(\"Invariant: \" + (message.endsWith('.') ? message : message + '.') + \" This is a bug in Next.js.\", options);\n this.name = 'InvariantError';\n }\n} //# sourceMappingURL=invariant-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF1QkM7SUFDbENDLFlBQVlDLE9BQWUsRUFBRUMsT0FBc0IsQ0FBRTtRQUNuRCxLQUFLLENBQ0YsZ0JBQWFELENBQUFBLFFBQVFFLFFBQVEsQ0FBQyxPQUFPRixVQUFVQSxVQUFVLElBQUUsR0FBRSw4QkFDOURDO1FBRUYsSUFBSSxDQUFDRSxJQUFJLEdBQUc7SUFDZDtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXGludmFyaWFudC1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW52YXJpYW50RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IEVycm9yT3B0aW9ucykge1xuICAgIHN1cGVyKFxuICAgICAgYEludmFyaWFudDogJHttZXNzYWdlLmVuZHNXaXRoKCcuJykgPyBtZXNzYWdlIDogbWVzc2FnZSArICcuJ30gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLmAsXG4gICAgICBvcHRpb25zXG4gICAgKVxuICAgIHRoaXMubmFtZSA9ICdJbnZhcmlhbnRFcnJvcidcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkludmFyaWFudEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIm1lc3NhZ2UiLCJvcHRpb25zIiwiZW5kc1dpdGgiLCJuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/invariant-error.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/is-plain-object.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getObjectClassLabel: function() {\n return getObjectClassLabel;\n },\n isPlainObject: function() {\n return isPlainObject;\n }\n});\nfunction getObjectClassLabel(value) {\n return Object.prototype.toString.call(value);\n}\nfunction isPlainObject(value) {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');\n} //# sourceMappingURL=is-plain-object.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFnQkEsbUJBQW1CO2VBQW5CQTs7SUFJQUMsYUFBYTtlQUFiQTs7O0FBSlQsU0FBU0Qsb0JBQW9CRSxLQUFVO0lBQzVDLE9BQU9DLE9BQU9DLFNBQVMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUNKO0FBQ3hDO0FBRU8sU0FBU0QsY0FBY0MsS0FBVTtJQUN0QyxJQUFJRixvQkFBb0JFLFdBQVcsbUJBQW1CO1FBQ3BELE9BQU87SUFDVDtJQUVBLE1BQU1FLFlBQVlELE9BQU9JLGNBQWMsQ0FBQ0w7SUFFeEM7Ozs7Ozs7O0dBUUMsR0FDRCxPQUFPRSxjQUFjLFFBQVFBLFVBQVVJLGNBQWMsQ0FBQztBQUN4RCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNoYXJlZFxcbGliXFxpcy1wbGFpbi1vYmplY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdENsYXNzTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKGdldE9iamVjdENsYXNzTGFiZWwodmFsdWUpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuXG4gIC8qKlxuICAgKiB0aGlzIHVzZWQgdG8gYmUgcHJldmlvdXNseTpcbiAgICpcbiAgICogYHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlYFxuICAgKlxuICAgKiBidXQgRWRnZSBSdW50aW1lIGV4cG9zZSBPYmplY3QgZnJvbSB2bSwgYmVpbmcgdGhhdCBraW5kIG9mIHR5cGUtY2hlY2tpbmcgd3JvbmdseSBmYWlsLlxuICAgKlxuICAgKiBJdCB3YXMgY2hhbmdlZCB0byB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzaW5jZSBpdCdzIHJlc2lsaWVudCB0byBzZXJpYWxpemF0aW9uLlxuICAgKi9cbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2lzUHJvdG90eXBlT2YnKVxufVxuIl0sIm5hbWVzIjpbImdldE9iamVjdENsYXNzTGFiZWwiLCJpc1BsYWluT2JqZWN0IiwidmFsdWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJnZXRQcm90b3R5cGVPZiIsImhhc093blByb3BlcnR5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/is-plain-object.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/shared/lib/is-thenable.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isThenable\", ({\n enumerable: true,\n get: function() {\n return isThenable;\n }\n}));\nfunction isThenable(promise) {\n return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function';\n} //# sourceMappingURL=is-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7OENBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQ2RDLE9BQXVCO0lBRXZCLE9BQ0VBLFlBQVksUUFDWixPQUFPQSxZQUFZLFlBQ25CLFVBQVVBLFdBQ1YsT0FBT0EsUUFBUUMsSUFBSSxLQUFLO0FBRTVCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXGlzLXRoZW5hYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGEgdmFsdWUgaXMgVGhlbmFibGUuXG4gKlxuICogQHBhcmFtIHByb21pc2UgdGhlIG1heWJlLXRoZW5hYmxlIHZhbHVlXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGVuYWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUaGVuYWJsZTxUID0gdW5rbm93bj4oXG4gIHByb21pc2U6IFByb21pc2U8VD4gfCBUXG4pOiBwcm9taXNlIGlzIFByb21pc2U8VD4ge1xuICByZXR1cm4gKFxuICAgIHByb21pc2UgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgcHJvbWlzZSA9PT0gJ29iamVjdCcgJiZcbiAgICAndGhlbicgaW4gcHJvbWlzZSAmJlxuICAgIHR5cGVvZiBwcm9taXNlLnRoZW4gPT09ICdmdW5jdGlvbidcbiAgKVxufVxuIl0sIm5hbWVzIjpbImlzVGhlbmFibGUiLCJwcm9taXNlIiwidGhlbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/is-thenable.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/isomorphic/path.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("/**\n * This module is for next.js server internal usage of path module.\n * It will use native path module for nodejs runtime.\n * It will use path-browserify polyfill for edge runtime.\n */ \nlet path;\nif (false) {} else {\n path = __webpack_require__(/*! path */ \"path\");\n}\nmodule.exports = path; //# sourceMappingURL=path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7O0NBSUM7QUFDRCxJQUFJQTtBQUVKLElBQUlDLEtBQW1DLEVBQUUsRUFFeEMsTUFBTTtJQUNMRCxPQUFPSSxtQkFBT0EsQ0FBQyxrQkFBTTtBQUN2QjtBQUVBQyxPQUFPQyxPQUFPLEdBQUdOIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxcaXNvbW9ycGhpY1xccGF0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbW9kdWxlIGlzIGZvciBuZXh0LmpzIHNlcnZlciBpbnRlcm5hbCB1c2FnZSBvZiBwYXRoIG1vZHVsZS5cbiAqIEl0IHdpbGwgdXNlIG5hdGl2ZSBwYXRoIG1vZHVsZSBmb3Igbm9kZWpzIHJ1bnRpbWUuXG4gKiBJdCB3aWxsIHVzZSBwYXRoLWJyb3dzZXJpZnkgcG9seWZpbGwgZm9yIGVkZ2UgcnVudGltZS5cbiAqL1xubGV0IHBhdGhcblxuaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gIHBhdGggPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvcGF0aC1icm93c2VyaWZ5Jylcbn0gZWxzZSB7XG4gIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoXG4iXSwibmFtZXMiOlsicGF0aCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1JVTlRJTUUiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/isomorphic/path.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This has to be a shared module which is shared between client component error boundary and dynamic component\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BailoutToCSRError: function() {\n return BailoutToCSRError;\n },\n isBailoutToCSRError: function() {\n return isBailoutToCSRError;\n }\n});\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING';\nclass BailoutToCSRError extends Error {\n constructor(reason){\n super(\"Bail out to client-side rendering: \" + reason), this.reason = reason, this.digest = BAILOUT_TO_CSR;\n }\n}\nfunction isBailoutToCSRError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === BAILOUT_TO_CSR;\n} //# sourceMappingURL=bailout-to-csr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtHQUErRzs7Ozs7Ozs7Ozs7OztJQUlsR0EsaUJBQWlCO2VBQWpCQTs7SUFTR0MsbUJBQW1CO2VBQW5CQTs7O0FBWmhCLE1BQU1DLGlCQUFpQjtBQUdoQixNQUFNRiwwQkFBMEJHO0lBR3JDQyxZQUE0QkMsTUFBYyxDQUFFO1FBQzFDLEtBQUssQ0FBRSx3Q0FBcUNBLFNBQUFBLElBQUFBLENBRGxCQSxNQUFBQSxHQUFBQSxRQUFBQSxJQUFBQSxDQUZaQyxNQUFBQSxHQUFTSjtJQUl6QjtBQUNGO0FBR08sU0FBU0Qsb0JBQW9CTSxHQUFZO0lBQzlDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLFFBQVEsQ0FBRSxhQUFZQSxHQUFBQSxDQUFFLEVBQUk7UUFDakUsT0FBTztJQUNUO0lBRUEsT0FBT0EsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXGxhenktZHluYW1pY1xcYmFpbG91dC10by1jc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBoYXMgdG8gYmUgYSBzaGFyZWQgbW9kdWxlIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuIGNsaWVudCBjb21wb25lbnQgZXJyb3IgYm91bmRhcnkgYW5kIGR5bmFtaWMgY29tcG9uZW50XG5jb25zdCBCQUlMT1VUX1RPX0NTUiA9ICdCQUlMT1VUX1RPX0NMSUVOVF9TSURFX1JFTkRFUklORydcblxuLyoqIEFuIGVycm9yIHRoYXQgc2hvdWxkIGJlIHRocm93biB3aGVuIHdlIHdhbnQgdG8gYmFpbCBvdXQgdG8gY2xpZW50LXNpZGUgcmVuZGVyaW5nLiAqL1xuZXhwb3J0IGNsYXNzIEJhaWxvdXRUb0NTUkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgZGlnZXN0ID0gQkFJTE9VVF9UT19DU1JcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQmFpbCBvdXQgdG8gY2xpZW50LXNpZGUgcmVuZGVyaW5nOiAke3JlYXNvbn1gKVxuICB9XG59XG5cbi8qKiBDaGVja3MgaWYgYSBwYXNzZWQgYXJndW1lbnQgaXMgYW4gZXJyb3IgdGhhdCBpcyB0aHJvd24gaWYgd2Ugd2FudCB0byBiYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCYWlsb3V0VG9DU1JFcnJvcihlcnI6IHVua25vd24pOiBlcnIgaXMgQmFpbG91dFRvQ1NSRXJyb3Ige1xuICBpZiAodHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHwgZXJyID09PSBudWxsIHx8ICEoJ2RpZ2VzdCcgaW4gZXJyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGVyci5kaWdlc3QgPT09IEJBSUxPVVRfVE9fQ1NSXG59XG4iXSwibmFtZXMiOlsiQmFpbG91dFRvQ1NSRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiQkFJTE9VVF9UT19DU1IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwicmVhc29uIiwiZGlnZXN0IiwiZXJyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ensureLeadingSlash\", ({\n enumerable: true,\n get: function() {\n return ensureLeadingSlash;\n }\n}));\nfunction ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : \"/\" + path;\n} //# sourceMappingURL=ensure-leading-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OztzREFDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQW1CQyxJQUFZO0lBQzdDLE9BQU9BLEtBQUtDLFVBQVUsQ0FBQyxPQUFPRCxPQUFRLE1BQUdBO0FBQzNDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccGFnZS1wYXRoXFxlbnN1cmUtbGVhZGluZy1zbGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvciBhIGdpdmVuIHBhZ2UgcGF0aCwgdGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBsZWFkaW5nIHNsYXNoLlxuICogSWYgdGhlcmUgaXMgbm90IGEgbGVhZGluZyBzbGFzaCwgb25lIGlzIGFkZGVkLCBvdGhlcndpc2UgaXQgaXMgbm9vcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWBcbn1cbiJdLCJuYW1lcyI6WyJlbnN1cmVMZWFkaW5nU2xhc2giLCJwYXRoIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/add-locale.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction addLocale(path, locale, defaultLocale, ignorePrefix) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path;\n const lower = path.toLowerCase();\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if ((0, _pathhasprefix.pathHasPrefix)(lower, '/api')) return path;\n if ((0, _pathhasprefix.pathHasPrefix)(lower, \"/\" + locale.toLowerCase())) return path;\n }\n // Add the locale prefix to the path.\n return (0, _addpathprefix.addPathPrefix)(path, \"/\" + locale);\n} //# sourceMappingURL=add-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1sb2NhbGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs2Q0FRZ0JBOzs7ZUFBQUE7OzsyQ0FSYzsyQ0FDQTtBQU92QixTQUFTQSxVQUNkQyxJQUFZLEVBQ1pDLE1BQXVCLEVBQ3ZCQyxhQUFzQixFQUN0QkMsWUFBc0I7SUFFdEIsNEVBQTRFO0lBQzVFLHNCQUFzQjtJQUN0QixJQUFJLENBQUNGLFVBQVVBLFdBQVdDLGVBQWUsT0FBT0Y7SUFFaEQsTUFBTUksUUFBUUosS0FBS0ssV0FBVztJQUU5QiwyRUFBMkU7SUFDM0UsaUNBQWlDO0lBQ2pDLElBQUksQ0FBQ0YsY0FBYztRQUNqQixJQUFJRyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFhLEVBQUNGLE9BQU8sU0FBUyxPQUFPSjtRQUN6QyxJQUFJTSxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjRixPQUFRLE1BQUdILE9BQU9JLFdBQVcsS0FBTyxPQUFPTDtJQUMvRDtJQUVBLHFDQUFxQztJQUNyQyxPQUFPTyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjUCxNQUFPLE1BQUdDO0FBQ2pDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xcYWRkLWxvY2FsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRQYXRoUHJlZml4IH0gZnJvbSAnLi9hZGQtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyBwYXRoSGFzUHJlZml4IH0gZnJvbSAnLi9wYXRoLWhhcy1wcmVmaXgnXG5cbi8qKlxuICogRm9yIGEgZ2l2ZW4gcGF0aCBhbmQgYSBsb2NhbGUsIGlmIHRoZSBsb2NhbGUgaXMgZ2l2ZW4sIGl0IHdpbGwgcHJlZml4IHRoZVxuICogbG9jYWxlLiBUaGUgcGF0aCBzaG91bGRuJ3QgYmUgYW4gQVBJIHBhdGguIElmIGEgZGVmYXVsdCBsb2NhbGUgaXMgZ2l2ZW4gdGhlXG4gKiBwcmVmaXggd2lsbCBiZSBvbWl0dGVkIGlmIHRoZSBsb2NhbGUgaXMgYWxyZWFkeSB0aGUgZGVmYXVsdCBsb2NhbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRMb2NhbGUoXG4gIHBhdGg6IHN0cmluZyxcbiAgbG9jYWxlPzogc3RyaW5nIHwgZmFsc2UsXG4gIGRlZmF1bHRMb2NhbGU/OiBzdHJpbmcsXG4gIGlnbm9yZVByZWZpeD86IGJvb2xlYW5cbikge1xuICAvLyBJZiBubyBsb2NhbGUgd2FzIGdpdmVuIG9yIHRoZSBsb2NhbGUgaXMgdGhlIGRlZmF1bHQgbG9jYWxlLCB3ZSBkb24ndCBuZWVkXG4gIC8vIHRvIHByZWZpeCB0aGUgcGF0aC5cbiAgaWYgKCFsb2NhbGUgfHwgbG9jYWxlID09PSBkZWZhdWx0TG9jYWxlKSByZXR1cm4gcGF0aFxuXG4gIGNvbnN0IGxvd2VyID0gcGF0aC50b0xvd2VyQ2FzZSgpXG5cbiAgLy8gSWYgdGhlIHBhdGggaXMgYW4gQVBJIHBhdGggb3IgdGhlIHBhdGggYWxyZWFkeSBoYXMgdGhlIGxvY2FsZSBwcmVmaXgsIHdlXG4gIC8vIGRvbid0IG5lZWQgdG8gcHJlZml4IHRoZSBwYXRoLlxuICBpZiAoIWlnbm9yZVByZWZpeCkge1xuICAgIGlmIChwYXRoSGFzUHJlZml4KGxvd2VyLCAnL2FwaScpKSByZXR1cm4gcGF0aFxuICAgIGlmIChwYXRoSGFzUHJlZml4KGxvd2VyLCBgLyR7bG9jYWxlLnRvTG93ZXJDYXNlKCl9YCkpIHJldHVybiBwYXRoXG4gIH1cblxuICAvLyBBZGQgdGhlIGxvY2FsZSBwcmVmaXggdG8gdGhlIHBhdGguXG4gIHJldHVybiBhZGRQYXRoUHJlZml4KHBhdGgsIGAvJHtsb2NhbGV9YClcbn1cbiJdLCJuYW1lcyI6WyJhZGRMb2NhbGUiLCJwYXRoIiwibG9jYWxlIiwiZGVmYXVsdExvY2FsZSIsImlnbm9yZVByZWZpeCIsImxvd2VyIiwidG9Mb3dlckNhc2UiLCJwYXRoSGFzUHJlZml4IiwiYWRkUGF0aFByZWZpeCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addPathPrefix\", ({\n enumerable: true,\n get: function() {\n return addPathPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction addPathPrefix(path, prefix) {\n if (!path.startsWith('/') || !prefix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return \"\" + prefix + pathname + query + hash;\n} //# sourceMappingURL=add-path-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQU1nQkE7OztlQUFBQTs7O3VDQU5VO0FBTW5CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBZTtJQUN6RCxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDcEMsT0FBT0Q7SUFDVDtJQUVBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVTjtJQUM1QyxPQUFRLEtBQUVDLFNBQVNFLFdBQVdDLFFBQVFDO0FBQ3hDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xcYWRkLXBhdGgtcHJlZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBBZGRzIHRoZSBwcm92aWRlZCBwcmVmaXggdG8gdGhlIGdpdmVuIHBhdGguIEl0IGZpcnN0IGVuc3VyZXMgdGhhdCB0aGUgcGF0aFxuICogaXMgaW5kZWVkIHN0YXJ0aW5nIHdpdGggYSBzbGFzaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGhQcmVmaXgocGF0aDogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpIHtcbiAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSB8fCAhcHJlZml4KSB7XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aClcbiAgcmV0dXJuIGAke3ByZWZpeH0ke3BhdGhuYW1lfSR7cXVlcnl9JHtoYXNofWBcbn1cbiJdLCJuYW1lcyI6WyJhZGRQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCIsInBhcnNlUGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addPathSuffix\", ({\n enumerable: true,\n get: function() {\n return addPathSuffix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction addPathSuffix(path, suffix) {\n if (!path.startsWith('/') || !suffix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return \"\" + pathname + suffix + query + hash;\n} //# sourceMappingURL=add-path-suffix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXN1ZmZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQU9nQkE7OztlQUFBQTs7O3VDQVBVO0FBT25CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBZTtJQUN6RCxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDcEMsT0FBT0Q7SUFDVDtJQUVBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVTjtJQUM1QyxPQUFRLEtBQUVHLFdBQVdGLFNBQVNHLFFBQVFDO0FBQ3hDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xcYWRkLXBhdGgtc3VmZml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4vcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBTaW1pbGFybHkgdG8gYGFkZFBhdGhQcmVmaXhgLCB0aGlzIGZ1bmN0aW9uIGFkZHMgYSBzdWZmaXggYXQgdGhlIGVuZCBvbiB0aGVcbiAqIHByb3ZpZGVkIHBhdGguIEl0IGFsc28gd29ya3Mgb25seSBmb3IgcGF0aHMgZW5zdXJpbmcgdGhlIGFyZ3VtZW50IHN0YXJ0c1xuICogd2l0aCBhIHNsYXNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUGF0aFN1ZmZpeChwYXRoOiBzdHJpbmcsIHN1ZmZpeD86IHN0cmluZykge1xuICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpIHx8ICFzdWZmaXgpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgY29uc3QgeyBwYXRobmFtZSwgcXVlcnksIGhhc2ggfSA9IHBhcnNlUGF0aChwYXRoKVxuICByZXR1cm4gYCR7cGF0aG5hbWV9JHtzdWZmaXh9JHtxdWVyeX0ke2hhc2h9YFxufVxuIl0sIm5hbWVzIjpbImFkZFBhdGhTdWZmaXgiLCJwYXRoIiwic3VmZml4Iiwic3RhcnRzV2l0aCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/app-paths.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalizeAppPath: function() {\n return normalizeAppPath;\n },\n normalizeRscURL: function() {\n return normalizeRscURL;\n }\n});\nconst _ensureleadingslash = __webpack_require__(/*! ../../page-path/ensure-leading-slash */ \"(rsc)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\");\nconst _segment = __webpack_require__(/*! ../../segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction normalizeAppPath(route) {\n return (0, _ensureleadingslash.ensureLeadingSlash)(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if ((0, _segment.isGroupSegment)(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return pathname + \"/\" + segment;\n }, ''));\n}\nfunction normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, '$1');\n} //# sourceMappingURL=app-paths.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFzQmdCQSxnQkFBZ0I7ZUFBaEJBOztJQW1DQUMsZUFBZTtlQUFmQTs7O2dEQXpEbUI7cUNBQ0o7QUFxQnhCLFNBQVNELGlCQUFpQkUsS0FBYTtJQUM1QyxPQUFPQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQ0xELE1BQU1FLEtBQUssQ0FBQyxLQUFLQyxNQUFNLENBQUMsQ0FBQ0MsVUFBVUMsU0FBU0MsT0FBT0M7UUFDakQsOEJBQThCO1FBQzlCLElBQUksQ0FBQ0YsU0FBUztZQUNaLE9BQU9EO1FBQ1Q7UUFFQSxzQkFBc0I7UUFDdEIsSUFBSUksQ0FBQUEsR0FBQUEsU0FBQUEsY0FBQUEsRUFBZUgsVUFBVTtZQUMzQixPQUFPRDtRQUNUO1FBRUEsaUNBQWlDO1FBQ2pDLElBQUlDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSztZQUN0QixPQUFPRDtRQUNUO1FBRUEsdURBQXVEO1FBQ3ZELElBQ0dDLENBQUFBLFlBQVksVUFBVUEsWUFBWSxRQUFNLElBQ3pDQyxVQUFVQyxTQUFTRSxNQUFNLEdBQUcsR0FDNUI7WUFDQSxPQUFPTDtRQUNUO1FBRUEsT0FBVUEsV0FBUyxNQUFHQztJQUN4QixHQUFHO0FBRVA7QUFNTyxTQUFTTixnQkFBZ0JXLEdBQVc7SUFDekMsT0FBT0EsSUFBSUMsT0FBTyxDQUNoQixlQUNBO0FBR0oiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxhcHAtcGF0aHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5zdXJlTGVhZGluZ1NsYXNoIH0gZnJvbSAnLi4vLi4vcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoJ1xuaW1wb3J0IHsgaXNHcm91cFNlZ21lbnQgfSBmcm9tICcuLi8uLi9zZWdtZW50J1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gYXBwIHJvdXRlIHNvIGl0IHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXF1ZXN0IHBhdGguIEVzc2VudGlhbGx5XG4gKiBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zOlxuICpcbiAqIC0gYC8oZGFzaGJvYXJkKS91c2VyL1tpZF0vcGFnZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9wYWdlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvdXNlci9baWRdL3BhZ2VgIHRvIGAvdXNlci9baWRdYFxuICogLSBgL2FjY291bnQvcGFnZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3BhZ2VgIHRvIGAvYFxuICogLSBgLyhkYXNoYm9hcmQpL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3JvdXRlYCB0byBgL2BcbiAqIC0gYC9gIHRvIGAvYFxuICpcbiAqIEBwYXJhbSByb3V0ZSB0aGUgYXBwIHJvdXRlIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcGF0aG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFwcFBhdGgocm91dGU6IHN0cmluZykge1xuICByZXR1cm4gZW5zdXJlTGVhZGluZ1NsYXNoKFxuICAgIHJvdXRlLnNwbGl0KCcvJykucmVkdWNlKChwYXRobmFtZSwgc2VnbWVudCwgaW5kZXgsIHNlZ21lbnRzKSA9PiB7XG4gICAgICAvLyBFbXB0eSBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmICghc2VnbWVudCkge1xuICAgICAgICByZXR1cm4gcGF0aG5hbWVcbiAgICAgIH1cblxuICAgICAgLy8gR3JvdXBzIGFyZSBpZ25vcmVkLlxuICAgICAgaWYgKGlzR3JvdXBTZWdtZW50KHNlZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICAvLyBQYXJhbGxlbCBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmIChzZWdtZW50WzBdID09PSAnQCcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsYXN0IHNlZ21lbnQgKGlmIGl0J3MgYSBsZWFmKSBzaG91bGQgYmUgaWdub3JlZC5cbiAgICAgIGlmIChcbiAgICAgICAgKHNlZ21lbnQgPT09ICdwYWdlJyB8fCBzZWdtZW50ID09PSAncm91dGUnKSAmJlxuICAgICAgICBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9LyR7c2VnbWVudH1gXG4gICAgfSwgJycpXG4gIClcbn1cblxuLyoqXG4gKiBTdHJpcHMgdGhlIGAucnNjYCBleHRlbnNpb24gaWYgaXQncyBpbiB0aGUgcGF0aG5hbWUuXG4gKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb24gZnVsbCB1cmxzIGl0IGNoZWNrcyBgP2AgZm9yIHNlYXJjaFBhcmFtcyBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJzY1VSTCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gdXJsLnJlcGxhY2UoXG4gICAgL1xcLnJzYygkfFxcPykvLFxuICAgIC8vICQxIGVuc3VyZXMgYD9gIGlzIHByZXNlcnZlZFxuICAgICckMSdcbiAgKVxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZUFwcFBhdGgiLCJub3JtYWxpemVSc2NVUkwiLCJyb3V0ZSIsImVuc3VyZUxlYWRpbmdTbGFzaCIsInNwbGl0IiwicmVkdWNlIiwicGF0aG5hbWUiLCJzZWdtZW50IiwiaW5kZXgiLCJzZWdtZW50cyIsImlzR3JvdXBTZWdtZW50IiwibGVuZ3RoIiwidXJsIiwicmVwbGFjZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js": /*!*************************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"formatNextPathnameInfo\", ({\n enumerable: true,\n get: function() {\n return formatNextPathnameInfo;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ./remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _addpathprefix = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _addpathsuffix = __webpack_require__(/*! ./add-path-suffix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js\");\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/add-locale.js\");\nfunction formatNextPathnameInfo(info) {\n let pathname = (0, _addlocale.addLocale)(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix);\n if (info.buildId || !info.trailingSlash) {\n pathname = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n }\n if (info.buildId) {\n pathname = (0, _addpathsuffix.addPathSuffix)((0, _addpathprefix.addPathPrefix)(pathname, \"/_next/data/\" + info.buildId), info.pathname === '/' ? 'index.json' : '.json');\n }\n pathname = (0, _addpathprefix.addPathPrefix)(pathname, info.basePath);\n return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? (0, _addpathsuffix.addPathSuffix)(pathname, '/') : pathname : (0, _removetrailingslash.removeTrailingSlash)(pathname);\n} //# sourceMappingURL=format-next-pathname-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC1uZXh0LXBhdGhuYW1lLWluZm8uanMiLCJtYXBwaW5ncyI6Ijs7OzswREFXZ0JBOzs7ZUFBQUE7OztpREFWb0I7MkNBQ047MkNBQ0E7dUNBQ0o7QUFPbkIsU0FBU0EsdUJBQXVCQyxJQUFrQjtJQUN2RCxJQUFJQyxXQUFXQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUNiRixLQUFLQyxRQUFRLEVBQ2JELEtBQUtHLE1BQU0sRUFDWEgsS0FBS0ksT0FBTyxHQUFHQyxZQUFZTCxLQUFLTSxhQUFhLEVBQzdDTixLQUFLTyxZQUFZO0lBR25CLElBQUlQLEtBQUtJLE9BQU8sSUFBSSxDQUFDSixLQUFLUSxhQUFhLEVBQUU7UUFDdkNQLFdBQVdRLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JSO0lBQ2pDO0lBRUEsSUFBSUQsS0FBS0ksT0FBTyxFQUFFO1FBQ2hCSCxXQUFXUyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUNUQyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjVixVQUFXLGlCQUFjRCxLQUFLSSxPQUFPLEdBQ25ESixLQUFLQyxRQUFRLEtBQUssTUFBTSxlQUFlO0lBRTNDO0lBRUFBLFdBQVdVLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNWLFVBQVVELEtBQUtZLFFBQVE7SUFDaEQsT0FBTyxDQUFDWixLQUFLSSxPQUFPLElBQUlKLEtBQUtRLGFBQWEsR0FDdEMsQ0FBQ1AsU0FBU1ksUUFBUSxDQUFDLE9BQ2pCSCxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjVCxVQUFVLE9BQ3hCQSxXQUNGUSxDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CUjtBQUMxQiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHJvdXRlclxcdXRpbHNcXGZvcm1hdC1uZXh0LXBhdGhuYW1lLWluZm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOZXh0UGF0aG5hbWVJbmZvIH0gZnJvbSAnLi9nZXQtbmV4dC1wYXRobmFtZS1pbmZvJ1xuaW1wb3J0IHsgcmVtb3ZlVHJhaWxpbmdTbGFzaCB9IGZyb20gJy4vcmVtb3ZlLXRyYWlsaW5nLXNsYXNoJ1xuaW1wb3J0IHsgYWRkUGF0aFByZWZpeCB9IGZyb20gJy4vYWRkLXBhdGgtcHJlZml4J1xuaW1wb3J0IHsgYWRkUGF0aFN1ZmZpeCB9IGZyb20gJy4vYWRkLXBhdGgtc3VmZml4J1xuaW1wb3J0IHsgYWRkTG9jYWxlIH0gZnJvbSAnLi9hZGQtbG9jYWxlJ1xuXG5pbnRlcmZhY2UgRXh0ZW5kZWRJbmZvIGV4dGVuZHMgTmV4dFBhdGhuYW1lSW5mbyB7XG4gIGRlZmF1bHRMb2NhbGU/OiBzdHJpbmdcbiAgaWdub3JlUHJlZml4PzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyhpbmZvOiBFeHRlbmRlZEluZm8pIHtcbiAgbGV0IHBhdGhuYW1lID0gYWRkTG9jYWxlKFxuICAgIGluZm8ucGF0aG5hbWUsXG4gICAgaW5mby5sb2NhbGUsXG4gICAgaW5mby5idWlsZElkID8gdW5kZWZpbmVkIDogaW5mby5kZWZhdWx0TG9jYWxlLFxuICAgIGluZm8uaWdub3JlUHJlZml4XG4gIClcblxuICBpZiAoaW5mby5idWlsZElkIHx8ICFpbmZvLnRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRobmFtZSA9IHJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpXG4gIH1cblxuICBpZiAoaW5mby5idWlsZElkKSB7XG4gICAgcGF0aG5hbWUgPSBhZGRQYXRoU3VmZml4KFxuICAgICAgYWRkUGF0aFByZWZpeChwYXRobmFtZSwgYC9fbmV4dC9kYXRhLyR7aW5mby5idWlsZElkfWApLFxuICAgICAgaW5mby5wYXRobmFtZSA9PT0gJy8nID8gJ2luZGV4Lmpzb24nIDogJy5qc29uJ1xuICAgIClcbiAgfVxuXG4gIHBhdGhuYW1lID0gYWRkUGF0aFByZWZpeChwYXRobmFtZSwgaW5mby5iYXNlUGF0aClcbiAgcmV0dXJuICFpbmZvLmJ1aWxkSWQgJiYgaW5mby50cmFpbGluZ1NsYXNoXG4gICAgPyAhcGF0aG5hbWUuZW5kc1dpdGgoJy8nKVxuICAgICAgPyBhZGRQYXRoU3VmZml4KHBhdGhuYW1lLCAnLycpXG4gICAgICA6IHBhdGhuYW1lXG4gICAgOiByZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKVxufVxuIl0sIm5hbWVzIjpbImZvcm1hdE5leHRQYXRobmFtZUluZm8iLCJpbmZvIiwicGF0aG5hbWUiLCJhZGRMb2NhbGUiLCJsb2NhbGUiLCJidWlsZElkIiwidW5kZWZpbmVkIiwiZGVmYXVsdExvY2FsZSIsImlnbm9yZVByZWZpeCIsInRyYWlsaW5nU2xhc2giLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiYWRkUGF0aFN1ZmZpeCIsImFkZFBhdGhQcmVmaXgiLCJiYXNlUGF0aCIsImVuZHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PARAMETER_PATTERN: function() {\n return PARAMETER_PATTERN;\n },\n getDynamicParam: function() {\n return getDynamicParam;\n },\n parseMatchedParameter: function() {\n return parseMatchedParameter;\n },\n parseParameter: function() {\n return parseParameter;\n }\n});\nfunction getDynamicParam(params, segmentKey, dynamicParamType, pagePath, fallbackRouteParams) {\n let value = params[segmentKey];\n if (fallbackRouteParams && fallbackRouteParams.has(segmentKey)) {\n value = fallbackRouteParams.get(segmentKey);\n } else if (Array.isArray(value)) {\n value = value.map((i)=>encodeURIComponent(i));\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value);\n }\n if (!value) {\n const isCatchall = dynamicParamType === 'c';\n const isOptionalCatchall = dynamicParamType === 'oc';\n if (isCatchall || isOptionalCatchall) {\n // handle the case where an optional catchall does not have a value,\n // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`\n if (isOptionalCatchall) {\n return {\n param: segmentKey,\n value: null,\n type: dynamicParamType,\n treeSegment: [\n segmentKey,\n '',\n dynamicParamType\n ]\n };\n }\n // handle the case where a catchall or optional catchall does not have a value,\n // e.g. `/foo/bar/hello` and `@slot/[...catchall]` or `@slot/[[...catchall]]` is matched\n value = pagePath.split('/') // remove the first empty string\n .slice(1) // replace any dynamic params with the actual values\n .flatMap((pathSegment)=>{\n const param = parseParameter(pathSegment);\n var _params_param_key;\n // if the segment matches a param, return the param value\n // otherwise, it's a static segment, so just return that\n return (_params_param_key = params[param.key]) != null ? _params_param_key : param.key;\n });\n return {\n param: segmentKey,\n value,\n type: dynamicParamType,\n // This value always has to be a string.\n treeSegment: [\n segmentKey,\n value.join('/'),\n dynamicParamType\n ]\n };\n }\n }\n return {\n param: segmentKey,\n // The value that is passed to user code.\n value: value,\n // The value that is rendered in the router tree.\n treeSegment: [\n segmentKey,\n Array.isArray(value) ? value.join('/') : value,\n dynamicParamType\n ],\n type: dynamicParamType\n };\n}\nconst PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/;\nfunction parseParameter(param) {\n const match = param.match(PARAMETER_PATTERN);\n if (!match) {\n return parseMatchedParameter(param);\n }\n return parseMatchedParameter(match[2]);\n}\nfunction parseMatchedParameter(param) {\n const optional = param.startsWith('[') && param.endsWith(']');\n if (optional) {\n param = param.slice(1, -1);\n }\n const repeat = param.startsWith('...');\n if (repeat) {\n param = param.slice(3);\n }\n return {\n key: param,\n repeat,\n optional\n };\n} //# sourceMappingURL=get-dynamic-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1keW5hbWljLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQStGYUEsaUJBQWlCO2VBQWpCQTs7SUFoRkdDLGVBQWU7ZUFBZkE7O0lBbUhBQyxxQkFBcUI7ZUFBckJBOztJQXJCQUMsY0FBYztlQUFkQTs7O0FBOUZULFNBQVNGLGdCQUNkRyxNQUE4QixFQUM5QkMsVUFBa0IsRUFDbEJDLGdCQUF3QyxFQUN4Q0MsUUFBZ0IsRUFDaEJDLG1CQUErQztJQUUvQyxJQUFJQyxRQUFRTCxNQUFNLENBQUNDLFdBQVc7SUFFOUIsSUFBSUcsdUJBQXVCQSxvQkFBb0JFLEdBQUcsQ0FBQ0wsYUFBYTtRQUM5REksUUFBUUQsb0JBQW9CRyxHQUFHLENBQUNOO0lBQ2xDLE9BQU8sSUFBSU8sTUFBTUMsT0FBTyxDQUFDSixRQUFRO1FBQy9CQSxRQUFRQSxNQUFNSyxHQUFHLENBQUMsQ0FBQ0MsSUFBTUMsbUJBQW1CRDtJQUM5QyxPQUFPLElBQUksT0FBT04sVUFBVSxVQUFVO1FBQ3BDQSxRQUFRTyxtQkFBbUJQO0lBQzdCO0lBRUEsSUFBSSxDQUFDQSxPQUFPO1FBQ1YsTUFBTVEsYUFBYVgscUJBQXFCO1FBQ3hDLE1BQU1ZLHFCQUFxQloscUJBQXFCO1FBRWhELElBQUlXLGNBQWNDLG9CQUFvQjtZQUNwQyxvRUFBb0U7WUFDcEUsNkRBQTZEO1lBQzdELElBQUlBLG9CQUFvQjtnQkFDdEIsT0FBTztvQkFDTEMsT0FBT2Q7b0JBQ1BJLE9BQU87b0JBQ1BXLE1BQU1kO29CQUNOZSxhQUFhO3dCQUFDaEI7d0JBQVk7d0JBQUlDO3FCQUFpQjtnQkFDakQ7WUFDRjtZQUVBLCtFQUErRTtZQUMvRSx3RkFBd0Y7WUFDeEZHLFFBQVFGLFNBQ0xlLEtBQUssQ0FBQyxLQUNQLGdDQUFnQzthQUMvQkMsS0FBSyxDQUFDLEdBQ1Asb0RBQW9EO2FBQ25EQyxPQUFPLENBQUMsQ0FBQ0M7Z0JBQ1IsTUFBTU4sUUFBUWhCLGVBQWVzQjtvQkFHdEJyQjtnQkFGUCx5REFBeUQ7Z0JBQ3pELHdEQUF3RDtnQkFDeEQsT0FBT0EsQ0FBQUEsb0JBQUFBLE1BQU0sQ0FBQ2UsTUFBTU8sSUFBRyxLQUFDLE9BQWpCdEIsb0JBQXFCZSxNQUFNTyxHQUFHO1lBQ3ZDO1lBRUYsT0FBTztnQkFDTFAsT0FBT2Q7Z0JBQ1BJO2dCQUNBVyxNQUFNZDtnQkFDTix3Q0FBd0M7Z0JBQ3hDZSxhQUFhO29CQUFDaEI7b0JBQVlJLE1BQU1rQixJQUFJLENBQUM7b0JBQU1yQjtpQkFBaUI7WUFDOUQ7UUFDRjtJQUNGO0lBRUEsT0FBTztRQUNMYSxPQUFPZDtRQUNQLHlDQUF5QztRQUN6Q0ksT0FBT0E7UUFDUCxpREFBaUQ7UUFDakRZLGFBQWE7WUFDWGhCO1lBQ0FPLE1BQU1DLE9BQU8sQ0FBQ0osU0FBU0EsTUFBTWtCLElBQUksQ0FBQyxPQUFPbEI7WUFDekNIO1NBQ0Q7UUFDRGMsTUFBTWQ7SUFDUjtBQUNGO0FBV08sTUFBTU4sb0JBQW9CO0FBYzFCLFNBQVNHLGVBQWVnQixLQUFhO0lBQzFDLE1BQU1TLFFBQVFULE1BQU1TLEtBQUssQ0FBQzVCO0lBRTFCLElBQUksQ0FBQzRCLE9BQU87UUFDVixPQUFPMUIsc0JBQXNCaUI7SUFDL0I7SUFFQSxPQUFPakIsc0JBQXNCMEIsS0FBSyxDQUFDLEVBQUU7QUFDdkM7QUFhTyxTQUFTMUIsc0JBQXNCaUIsS0FBYTtJQUNqRCxNQUFNVSxXQUFXVixNQUFNVyxVQUFVLENBQUMsUUFBUVgsTUFBTVksUUFBUSxDQUFDO0lBQ3pELElBQUlGLFVBQVU7UUFDWlYsUUFBUUEsTUFBTUksS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMxQjtJQUNBLE1BQU1TLFNBQVNiLE1BQU1XLFVBQVUsQ0FBQztJQUNoQyxJQUFJRSxRQUFRO1FBQ1ZiLFFBQVFBLE1BQU1JLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU87UUFBRUcsS0FBS1A7UUFBT2E7UUFBUUg7SUFBUztBQUN4QyIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHJvdXRlclxcdXRpbHNcXGdldC1keW5hbWljLXBhcmFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvYXBwLXJlbmRlcidcbmltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtVHlwZXNTaG9ydCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGYWxsYmFja1JvdXRlUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL3JlcXVlc3QvZmFsbGJhY2stcGFyYW1zJ1xuXG4vKipcbiAqXG4gKiBTaGFyZWQgbG9naWMgb24gY2xpZW50IGFuZCBzZXJ2ZXIgZm9yIGNyZWF0aW5nIGEgZHluYW1pYyBwYXJhbSB2YWx1ZS5cbiAqXG4gKiBUaGlzIGNvZGUgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggdGhlIGNsaWVudCBzbyBpdCBjYW4gZXh0cmFjdCBkeW5hbWljIHJvdXRlXG4gKiBwYXJhbXMgZnJvbSB0aGUgVVJMIHdpdGhvdXQgYSBzZXJ2ZXIgcmVxdWVzdC5cbiAqXG4gKiBCZWNhdXNlIGV2ZXJ5dGhpbmcgaW4gdGhpcyBtb2R1bGUgaXMgc2VudCB0byB0aGUgY2xpZW50LCB3ZSBzaG91bGQgYWltIHRvXG4gKiBrZWVwIHRoaXMgY29kZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIFRoZSBzcGVjaWFsIGNhc2UgaGFuZGxpbmcgZm9yIGNhdGNoYWxsXG4gKiBhbmQgb3B0aW9uYWwgaXMsIGFsYXMsIHVuZm9ydHVuYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHluYW1pY1BhcmFtKFxuICBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIHNlZ21lbnRLZXk6IHN0cmluZyxcbiAgZHluYW1pY1BhcmFtVHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydCxcbiAgcGFnZVBhdGg6IHN0cmluZyxcbiAgZmFsbGJhY2tSb3V0ZVBhcmFtczogRmFsbGJhY2tSb3V0ZVBhcmFtcyB8IG51bGxcbik6IER5bmFtaWNQYXJhbSB7XG4gIGxldCB2YWx1ZSA9IHBhcmFtc1tzZWdtZW50S2V5XVxuXG4gIGlmIChmYWxsYmFja1JvdXRlUGFyYW1zICYmIGZhbGxiYWNrUm91dGVQYXJhbXMuaGFzKHNlZ21lbnRLZXkpKSB7XG4gICAgdmFsdWUgPSBmYWxsYmFja1JvdXRlUGFyYW1zLmdldChzZWdtZW50S2V5KVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5tYXAoKGkpID0+IGVuY29kZVVSSUNvbXBvbmVudChpKSlcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpXG4gIH1cblxuICBpZiAoIXZhbHVlKSB7XG4gICAgY29uc3QgaXNDYXRjaGFsbCA9IGR5bmFtaWNQYXJhbVR5cGUgPT09ICdjJ1xuICAgIGNvbnN0IGlzT3B0aW9uYWxDYXRjaGFsbCA9IGR5bmFtaWNQYXJhbVR5cGUgPT09ICdvYydcblxuICAgIGlmIChpc0NhdGNoYWxsIHx8IGlzT3B0aW9uYWxDYXRjaGFsbCkge1xuICAgICAgLy8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFuIG9wdGlvbmFsIGNhdGNoYWxsIGRvZXMgbm90IGhhdmUgYSB2YWx1ZSxcbiAgICAgIC8vIGUuZy4gYC9kYXNoYm9hcmQvW1suLi5zbHVnXV1gIHdoZW4gcmVxdWVzdGluZyBgL2Rhc2hib2FyZGBcbiAgICAgIGlmIChpc09wdGlvbmFsQ2F0Y2hhbGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXJhbTogc2VnbWVudEtleSxcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICB0eXBlOiBkeW5hbWljUGFyYW1UeXBlLFxuICAgICAgICAgIHRyZWVTZWdtZW50OiBbc2VnbWVudEtleSwgJycsIGR5bmFtaWNQYXJhbVR5cGVdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGNhdGNoYWxsIG9yIG9wdGlvbmFsIGNhdGNoYWxsIGRvZXMgbm90IGhhdmUgYSB2YWx1ZSxcbiAgICAgIC8vIGUuZy4gYC9mb28vYmFyL2hlbGxvYCBhbmQgYEBzbG90L1suLi5jYXRjaGFsbF1gIG9yIGBAc2xvdC9bWy4uLmNhdGNoYWxsXV1gIGlzIG1hdGNoZWRcbiAgICAgIHZhbHVlID0gcGFnZVBhdGhcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBmaXJzdCBlbXB0eSBzdHJpbmdcbiAgICAgICAgLnNsaWNlKDEpXG4gICAgICAgIC8vIHJlcGxhY2UgYW55IGR5bmFtaWMgcGFyYW1zIHdpdGggdGhlIGFjdHVhbCB2YWx1ZXNcbiAgICAgICAgLmZsYXRNYXAoKHBhdGhTZWdtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW0gPSBwYXJzZVBhcmFtZXRlcihwYXRoU2VnbWVudClcbiAgICAgICAgICAvLyBpZiB0aGUgc2VnbWVudCBtYXRjaGVzIGEgcGFyYW0sIHJldHVybiB0aGUgcGFyYW0gdmFsdWVcbiAgICAgICAgICAvLyBvdGhlcndpc2UsIGl0J3MgYSBzdGF0aWMgc2VnbWVudCwgc28ganVzdCByZXR1cm4gdGhhdFxuICAgICAgICAgIHJldHVybiBwYXJhbXNbcGFyYW0ua2V5XSA/PyBwYXJhbS5rZXlcbiAgICAgICAgfSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW06IHNlZ21lbnRLZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0eXBlOiBkeW5hbWljUGFyYW1UeXBlLFxuICAgICAgICAvLyBUaGlzIHZhbHVlIGFsd2F5cyBoYXMgdG8gYmUgYSBzdHJpbmcuXG4gICAgICAgIHRyZWVTZWdtZW50OiBbc2VnbWVudEtleSwgdmFsdWUuam9pbignLycpLCBkeW5hbWljUGFyYW1UeXBlXSxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhcmFtOiBzZWdtZW50S2V5LFxuICAgIC8vIFRoZSB2YWx1ZSB0aGF0IGlzIHBhc3NlZCB0byB1c2VyIGNvZGUuXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIC8vIFRoZSB2YWx1ZSB0aGF0IGlzIHJlbmRlcmVkIGluIHRoZSByb3V0ZXIgdHJlZS5cbiAgICB0cmVlU2VnbWVudDogW1xuICAgICAgc2VnbWVudEtleSxcbiAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignLycpIDogdmFsdWUsXG4gICAgICBkeW5hbWljUGFyYW1UeXBlLFxuICAgIF0sXG4gICAgdHlwZTogZHluYW1pY1BhcmFtVHlwZSxcbiAgfVxufVxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHVzZWQgdG8gbWF0Y2ggcm91dGUgcGFyYW1ldGVycy5cbiAqIE1hdGNoZXMgYm90aCBzaW5nbGUgcGFyYW1ldGVycyBhbmQgcGFyYW1ldGVyIGdyb3Vwcy5cbiAqIEV4YW1wbGVzOlxuICogICAtIGBbWy4uLnNsdWddXWAgbWF0Y2hlcyBwYXJhbWV0ZXIgZ3JvdXAgd2l0aCBrZXkgJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlXG4gKiAgIC0gYFsuLi5zbHVnXWAgbWF0Y2hlcyBwYXJhbWV0ZXIgZ3JvdXAgd2l0aCBrZXkgJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZVxuICogICAtIGBbW2Zvb11dYCBtYXRjaGVzIHBhcmFtZXRlciB3aXRoIGtleSAnZm9vJywgcmVwZWF0OiBmYWxzZSwgb3B0aW9uYWw6IHRydWVcbiAqICAgLSBgW2Jhcl1gIG1hdGNoZXMgcGFyYW1ldGVyIHdpdGgga2V5ICdiYXInLCByZXBlYXQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2VcbiAqL1xuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUl9QQVRURVJOID0gL14oW15bXSopXFxbKCg/OlxcW1teXFxdXSpcXF0pfFteXFxdXSspXFxdKC4qKSQvXG5cbi8qKlxuICogUGFyc2VzIGEgZ2l2ZW4gcGFyYW1ldGVyIGZyb20gYSByb3V0ZSB0byBhIGRhdGEgc3RydWN0dXJlIHRoYXQgY2FuIGJlIHVzZWRcbiAqIHRvIGdlbmVyYXRlIHRoZSBwYXJhbWV0cml6ZWQgcm91dGUuXG4gKiBFeGFtcGxlczpcbiAqICAgLSBgW1suLi5zbHVnXV1gIC0+IGB7IGtleTogJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH1gXG4gKiAgIC0gYFsuLi5zbHVnXWAgLT4gYHsga2V5OiAnc2x1ZycsIHJlcGVhdDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlIH1gXG4gKiAgIC0gYFtbZm9vXV1gIC0+IGB7IGtleTogJ2ZvbycsIHJlcGVhdDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlIH1gXG4gKiAgIC0gYFtiYXJdYCAtPiBgeyBrZXk6ICdiYXInLCByZXBlYXQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UgfWBcbiAqICAgLSBgZml6emAgLT4gYHsga2V5OiAnZml6eicsIHJlcGVhdDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSB9YFxuICogQHBhcmFtIHBhcmFtIC0gVGhlIHBhcmFtZXRlciB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGFyYW1ldGVyIGFzIGEgZGF0YSBzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhcmFtZXRlcihwYXJhbTogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoID0gcGFyYW0ubWF0Y2goUEFSQU1FVEVSX1BBVFRFUk4pXG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBwYXJzZU1hdGNoZWRQYXJhbWV0ZXIocGFyYW0pXG4gIH1cblxuICByZXR1cm4gcGFyc2VNYXRjaGVkUGFyYW1ldGVyKG1hdGNoWzJdKVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIG1hdGNoZWQgcGFyYW1ldGVyIGZyb20gdGhlIFBBUkFNRVRFUl9QQVRURVJOIHJlZ2V4IHRvIGEgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBjYW4gYmUgdXNlZFxuICogdG8gZ2VuZXJhdGUgdGhlIHBhcmFtZXRyaXplZCByb3V0ZS5cbiAqIEV4YW1wbGVzOlxuICogICAtIGBbLi4uc2x1Z11gIC0+IGB7IGtleTogJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH1gXG4gKiAgIC0gYC4uLnNsdWdgIC0+IGB7IGtleTogJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSB9YFxuICogICAtIGBbZm9vXWAgLT4gYHsga2V5OiAnZm9vJywgcmVwZWF0OiBmYWxzZSwgb3B0aW9uYWw6IHRydWUgfWBcbiAqICAgLSBgYmFyYCAtPiBgeyBrZXk6ICdiYXInLCByZXBlYXQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UgfWBcbiAqIEBwYXJhbSBwYXJhbSAtIFRoZSBtYXRjaGVkIHBhcmFtZXRlciB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGFyYW1ldGVyIGFzIGEgZGF0YSBzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1hdGNoZWRQYXJhbWV0ZXIocGFyYW06IHN0cmluZykge1xuICBjb25zdCBvcHRpb25hbCA9IHBhcmFtLnN0YXJ0c1dpdGgoJ1snKSAmJiBwYXJhbS5lbmRzV2l0aCgnXScpXG4gIGlmIChvcHRpb25hbCkge1xuICAgIHBhcmFtID0gcGFyYW0uc2xpY2UoMSwgLTEpXG4gIH1cbiAgY29uc3QgcmVwZWF0ID0gcGFyYW0uc3RhcnRzV2l0aCgnLi4uJylcbiAgaWYgKHJlcGVhdCkge1xuICAgIHBhcmFtID0gcGFyYW0uc2xpY2UoMylcbiAgfVxuICByZXR1cm4geyBrZXk6IHBhcmFtLCByZXBlYXQsIG9wdGlvbmFsIH1cbn1cbiJdLCJuYW1lcyI6WyJQQVJBTUVURVJfUEFUVEVSTiIsImdldER5bmFtaWNQYXJhbSIsInBhcnNlTWF0Y2hlZFBhcmFtZXRlciIsInBhcnNlUGFyYW1ldGVyIiwicGFyYW1zIiwic2VnbWVudEtleSIsImR5bmFtaWNQYXJhbVR5cGUiLCJwYWdlUGF0aCIsImZhbGxiYWNrUm91dGVQYXJhbXMiLCJ2YWx1ZSIsImhhcyIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJpc0NhdGNoYWxsIiwiaXNPcHRpb25hbENhdGNoYWxsIiwicGFyYW0iLCJ0eXBlIiwidHJlZVNlZ21lbnQiLCJzcGxpdCIsInNsaWNlIiwiZmxhdE1hcCIsInBhdGhTZWdtZW50Iiwia2V5Iiwiam9pbiIsIm1hdGNoIiwib3B0aW9uYWwiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJyZXBlYXQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js": /*!**********************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getNextPathnameInfo\", ({\n enumerable: true,\n get: function() {\n return getNextPathnameInfo;\n }\n}));\nconst _normalizelocalepath = __webpack_require__(/*! ../../i18n/normalize-locale-path */ \"(rsc)/./node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nconst _removepathprefix = __webpack_require__(/*! ./remove-path-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\");\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction getNextPathnameInfo(pathname, options) {\n var _options_nextConfig;\n const { basePath, i18n, trailingSlash } = (_options_nextConfig = options.nextConfig) != null ? _options_nextConfig : {};\n const info = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash\n };\n if (basePath && (0, _pathhasprefix.pathHasPrefix)(info.pathname, basePath)) {\n info.pathname = (0, _removepathprefix.removePathPrefix)(info.pathname, basePath);\n info.basePath = basePath;\n }\n let pathnameNoDataPrefix = info.pathname;\n if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) {\n const paths = info.pathname.replace(/^\\/_next\\/data\\//, '').replace(/\\.json$/, '').split('/');\n const buildId = paths[0];\n info.buildId = buildId;\n pathnameNoDataPrefix = paths[1] !== 'index' ? \"/\" + paths.slice(1).join('/') : '/';\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix;\n }\n }\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : (0, _normalizelocalepath.normalizeLocalePath)(info.pathname, i18n.locales);\n info.locale = result.detectedLocale;\n var _result_pathname;\n info.pathname = (_result_pathname = result.pathname) != null ? _result_pathname : info.pathname;\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : (0, _normalizelocalepath.normalizeLocalePath)(pathnameNoDataPrefix, i18n.locales);\n if (result.detectedLocale) {\n info.locale = result.detectedLocale;\n }\n }\n }\n return info;\n} //# sourceMappingURL=get-next-pathname-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm8uanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFvRGdCQTs7O2VBQUFBOzs7aURBcERvQjs4Q0FDSDsyQ0FDSDtBQWtEdkIsU0FBU0Esb0JBQ2RDLFFBQWdCLEVBQ2hCQyxPQUFnQjtRQUUwQkE7SUFBMUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsYUFBYSxFQUFFLEdBQUdILENBQUFBLHNCQUFBQSxRQUFRSSxVQUFBQSxLQUFVLE9BQWxCSixzQkFBc0IsQ0FBQztJQUNqRSxNQUFNSyxPQUF5QjtRQUM3Qk47UUFDQUksZUFBZUosYUFBYSxNQUFNQSxTQUFTTyxRQUFRLENBQUMsT0FBT0g7SUFDN0Q7SUFFQSxJQUFJRixZQUFZTSxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjRixLQUFLTixRQUFRLEVBQUVFLFdBQVc7UUFDdERJLEtBQUtOLFFBQVEsR0FBR1MsQ0FBQUEsR0FBQUEsa0JBQUFBLGdCQUFBQSxFQUFpQkgsS0FBS04sUUFBUSxFQUFFRTtRQUNoREksS0FBS0osUUFBUSxHQUFHQTtJQUNsQjtJQUNBLElBQUlRLHVCQUF1QkosS0FBS04sUUFBUTtJQUV4QyxJQUNFTSxLQUFLTixRQUFRLENBQUNXLFVBQVUsQ0FBQyxtQkFDekJMLEtBQUtOLFFBQVEsQ0FBQ08sUUFBUSxDQUFDLFVBQ3ZCO1FBQ0EsTUFBTUssUUFBUU4sS0FBS04sUUFBUSxDQUN4QmEsT0FBTyxDQUFDLG9CQUFvQixJQUM1QkEsT0FBTyxDQUFDLFdBQVcsSUFDbkJDLEtBQUssQ0FBQztRQUVULE1BQU1DLFVBQVVILEtBQUssQ0FBQyxFQUFFO1FBQ3hCTixLQUFLUyxPQUFPLEdBQUdBO1FBQ2ZMLHVCQUNFRSxLQUFLLENBQUMsRUFBRSxLQUFLLFVBQVcsTUFBR0EsTUFBTUksS0FBSyxDQUFDLEdBQUdDLElBQUksQ0FBQyxPQUFTO1FBRTFELHNEQUFzRDtRQUN0RCxrREFBa0Q7UUFDbEQsSUFBSWhCLFFBQVFpQixTQUFTLEtBQUssTUFBTTtZQUM5QlosS0FBS04sUUFBUSxHQUFHVTtRQUNsQjtJQUNGO0lBRUEsNEVBQTRFO0lBQzVFLHlCQUF5QjtJQUN6QixJQUFJUCxNQUFNO1FBQ1IsSUFBSWdCLFNBQVNsQixRQUFRbUIsWUFBWSxHQUM3Qm5CLFFBQVFtQixZQUFZLENBQUNDLE9BQU8sQ0FBQ2YsS0FBS04sUUFBUSxJQUMxQ3NCLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JoQixLQUFLTixRQUFRLEVBQUVHLEtBQUtvQixPQUFPO1FBRW5EakIsS0FBS2tCLE1BQU0sR0FBR0wsT0FBT00sY0FBYztZQUNuQk47UUFBaEJiLEtBQUtOLFFBQVEsR0FBR21CLENBQUFBLG1CQUFBQSxPQUFPbkIsUUFBQUEsS0FBUSxPQUFmbUIsbUJBQW1CYixLQUFLTixRQUFRO1FBRWhELElBQUksQ0FBQ21CLE9BQU9NLGNBQWMsSUFBSW5CLEtBQUtTLE9BQU8sRUFBRTtZQUMxQ0ksU0FBU2xCLFFBQVFtQixZQUFZLEdBQ3pCbkIsUUFBUW1CLFlBQVksQ0FBQ0MsT0FBTyxDQUFDWCx3QkFDN0JZLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0JaLHNCQUFzQlAsS0FBS29CLE9BQU87WUFFMUQsSUFBSUosT0FBT00sY0FBYyxFQUFFO2dCQUN6Qm5CLEtBQUtrQixNQUFNLEdBQUdMLE9BQU9NLGNBQWM7WUFDckM7UUFDRjtJQUNGO0lBQ0EsT0FBT25CO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxnZXQtbmV4dC1wYXRobmFtZS1pbmZvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZUxvY2FsZVBhdGggfSBmcm9tICcuLi8uLi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aCdcbmltcG9ydCB7IHJlbW92ZVBhdGhQcmVmaXggfSBmcm9tICcuL3JlbW92ZS1wYXRoLXByZWZpeCdcbmltcG9ydCB7IHBhdGhIYXNQcmVmaXggfSBmcm9tICcuL3BhdGgtaGFzLXByZWZpeCdcbmltcG9ydCB0eXBlIHsgSTE4TlByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2xpYi9pMThuLXByb3ZpZGVyJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRQYXRobmFtZUluZm8ge1xuICAvKipcbiAgICogVGhlIGJhc2UgcGF0aCBpbiBjYXNlIHRoZSBwYXRobmFtZSBpbmNsdWRlZCBpdC5cbiAgICovXG4gIGJhc2VQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgYnVpbGRJZCBmb3Igd2hlbiB0aGUgcGFyc2VkIFVSTCBpcyBhIGRhdGEgVVJMLiBQYXJzaW5nIGl0IGNhbiBiZVxuICAgKiBkaXNhYmxlZCB3aXRoIHRoZSBgcGFyc2VEYXRhYCBvcHRpb24uXG4gICAqL1xuICBidWlsZElkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiB0aGVyZSB3YXMgYSBsb2NhbGUgaW4gdGhlIHBhdGhuYW1lLCB0aGlzIHdpbGwgaG9sZCBpdHMgdmFsdWUuXG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBwcm9jZXNzZWQgcGF0aG5hbWUgd2l0aG91dCBhIGJhc2UgcGF0aCwgbG9jYWxlLCBvciBkYXRhIFVSTCBlbGVtZW50c1xuICAgKiB3aGVuIHBhcnNpbmcgaXQgaXMgZW5hYmxlZC5cbiAgICovXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB0ZWxsaW5nIGlmIHRoZSBwYXRobmFtZSBoYWQgYSB0cmFpbGluZ1NsYXNoLiBUaGlzIGNhbiBiZSBvbmx5XG4gICAqIHRydWUgaWYgdHJhaWxpbmdTbGFzaCBpcyBlbmFibGVkLlxuICAgKi9cbiAgdHJhaWxpbmdTbGFzaD86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKipcbiAgICogV2hlbiBwYXNzZWQgdG8gdHJ1ZSwgdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gcGFyc2UgTmV4dGpzIGRhdGEgVVJMcy5cbiAgICovXG4gIHBhcnNlRGF0YT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgcGFydGlhbCBvZiB0aGUgTmV4dC5qcyBjb25maWd1cmF0aW9uIHRvIHBhcnNlIHRoZSBVUkwuXG4gICAqL1xuICBuZXh0Q29uZmlnPzoge1xuICAgIGJhc2VQYXRoPzogc3RyaW5nXG4gICAgaTE4bj86IHsgbG9jYWxlcz86IHJlYWRvbmx5IHN0cmluZ1tdIH0gfCBudWxsXG4gICAgdHJhaWxpbmdTbGFzaD86IGJvb2xlYW5cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdGhpcyBub3JtYWxpemVyIHdpbGwgYmUgdXNlZCB0byBkZXRlY3QgdGhlIGxvY2FsZSBpbnN0ZWFkIG9mXG4gICAqIHRoZSBkZWZhdWx0IGxvY2FsZSBkZXRlY3Rpb24uXG4gICAqL1xuICBpMThuUHJvdmlkZXI/OiBJMThOUHJvdmlkZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRQYXRobmFtZUluZm8oXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9wdGlvbnNcbik6IE5leHRQYXRobmFtZUluZm8ge1xuICBjb25zdCB7IGJhc2VQYXRoLCBpMThuLCB0cmFpbGluZ1NsYXNoIH0gPSBvcHRpb25zLm5leHRDb25maWcgPz8ge31cbiAgY29uc3QgaW5mbzogTmV4dFBhdGhuYW1lSW5mbyA9IHtcbiAgICBwYXRobmFtZSxcbiAgICB0cmFpbGluZ1NsYXNoOiBwYXRobmFtZSAhPT0gJy8nID8gcGF0aG5hbWUuZW5kc1dpdGgoJy8nKSA6IHRyYWlsaW5nU2xhc2gsXG4gIH1cblxuICBpZiAoYmFzZVBhdGggJiYgcGF0aEhhc1ByZWZpeChpbmZvLnBhdGhuYW1lLCBiYXNlUGF0aCkpIHtcbiAgICBpbmZvLnBhdGhuYW1lID0gcmVtb3ZlUGF0aFByZWZpeChpbmZvLnBhdGhuYW1lLCBiYXNlUGF0aClcbiAgICBpbmZvLmJhc2VQYXRoID0gYmFzZVBhdGhcbiAgfVxuICBsZXQgcGF0aG5hbWVOb0RhdGFQcmVmaXggPSBpbmZvLnBhdGhuYW1lXG5cbiAgaWYgKFxuICAgIGluZm8ucGF0aG5hbWUuc3RhcnRzV2l0aCgnL19uZXh0L2RhdGEvJykgJiZcbiAgICBpbmZvLnBhdGhuYW1lLmVuZHNXaXRoKCcuanNvbicpXG4gICkge1xuICAgIGNvbnN0IHBhdGhzID0gaW5mby5wYXRobmFtZVxuICAgICAgLnJlcGxhY2UoL15cXC9fbmV4dFxcL2RhdGFcXC8vLCAnJylcbiAgICAgIC5yZXBsYWNlKC9cXC5qc29uJC8sICcnKVxuICAgICAgLnNwbGl0KCcvJylcblxuICAgIGNvbnN0IGJ1aWxkSWQgPSBwYXRoc1swXVxuICAgIGluZm8uYnVpbGRJZCA9IGJ1aWxkSWRcbiAgICBwYXRobmFtZU5vRGF0YVByZWZpeCA9XG4gICAgICBwYXRoc1sxXSAhPT0gJ2luZGV4JyA/IGAvJHtwYXRocy5zbGljZSgxKS5qb2luKCcvJyl9YCA6ICcvJ1xuXG4gICAgLy8gdXBkYXRlIHBhdGhuYW1lIHdpdGggbm9ybWFsaXplZCBpZiBlbmFibGVkIGFsdGhvdWdoXG4gICAgLy8gd2UgdXNlIG5vcm1hbGl6ZWQgdG8gcG9wdWxhdGUgbG9jYWxlIGluZm8gc3RpbGxcbiAgICBpZiAob3B0aW9ucy5wYXJzZURhdGEgPT09IHRydWUpIHtcbiAgICAgIGluZm8ucGF0aG5hbWUgPSBwYXRobmFtZU5vRGF0YVByZWZpeFxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHByb3ZpZGVkLCB1c2UgdGhlIGxvY2FsZSByb3V0ZSBub3JtYWxpemVyIHRvIGRldGVjdCB0aGUgbG9jYWxlIGluc3RlYWRcbiAgLy8gb2YgdGhlIGZ1bmN0aW9uIGJlbG93LlxuICBpZiAoaTE4bikge1xuICAgIGxldCByZXN1bHQgPSBvcHRpb25zLmkxOG5Qcm92aWRlclxuICAgICAgPyBvcHRpb25zLmkxOG5Qcm92aWRlci5hbmFseXplKGluZm8ucGF0aG5hbWUpXG4gICAgICA6IG5vcm1hbGl6ZUxvY2FsZVBhdGgoaW5mby5wYXRobmFtZSwgaTE4bi5sb2NhbGVzKVxuXG4gICAgaW5mby5sb2NhbGUgPSByZXN1bHQuZGV0ZWN0ZWRMb2NhbGVcbiAgICBpbmZvLnBhdGhuYW1lID0gcmVzdWx0LnBhdGhuYW1lID8/IGluZm8ucGF0aG5hbWVcblxuICAgIGlmICghcmVzdWx0LmRldGVjdGVkTG9jYWxlICYmIGluZm8uYnVpbGRJZCkge1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5pMThuUHJvdmlkZXJcbiAgICAgICAgPyBvcHRpb25zLmkxOG5Qcm92aWRlci5hbmFseXplKHBhdGhuYW1lTm9EYXRhUHJlZml4KVxuICAgICAgICA6IG5vcm1hbGl6ZUxvY2FsZVBhdGgocGF0aG5hbWVOb0RhdGFQcmVmaXgsIGkxOG4ubG9jYWxlcylcblxuICAgICAgaWYgKHJlc3VsdC5kZXRlY3RlZExvY2FsZSkge1xuICAgICAgICBpbmZvLmxvY2FsZSA9IHJlc3VsdC5kZXRlY3RlZExvY2FsZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW5mb1xufVxuIl0sIm5hbWVzIjpbImdldE5leHRQYXRobmFtZUluZm8iLCJwYXRobmFtZSIsIm9wdGlvbnMiLCJiYXNlUGF0aCIsImkxOG4iLCJ0cmFpbGluZ1NsYXNoIiwibmV4dENvbmZpZyIsImluZm8iLCJlbmRzV2l0aCIsInBhdGhIYXNQcmVmaXgiLCJyZW1vdmVQYXRoUHJlZml4IiwicGF0aG5hbWVOb0RhdGFQcmVmaXgiLCJzdGFydHNXaXRoIiwicGF0aHMiLCJyZXBsYWNlIiwic3BsaXQiLCJidWlsZElkIiwic2xpY2UiLCJqb2luIiwicGFyc2VEYXRhIiwicmVzdWx0IiwiaTE4blByb3ZpZGVyIiwiYW5hbHl6ZSIsIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJsb2NhbGVzIiwibG9jYWxlIiwiZGV0ZWN0ZWRMb2NhbGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/html-bots.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This regex contains the bots that we need to do a blocking render for and can't safely stream the response\n// due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent.\n// Note: The pattern [\\w-]+-Google captures all Google crawlers with \"-Google\" suffix (e.g., Mediapartners-Google, AdsBot-Google, Storebot-Google)\n// as well as crawlers starting with \"Google-\" (e.g., Google-PageRenderer, Google-InspectionTool)\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTML_LIMITED_BOT_UA_RE\", ({\n enumerable: true,\n get: function() {\n return HTML_LIMITED_BOT_UA_RE;\n }\n}));\nconst HTML_LIMITED_BOT_UA_RE = /[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i; //# sourceMappingURL=html-bots.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2h0bWwtYm90cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2R0FBNkc7QUFDN0csc0tBQXNLO0FBQ3RLLGtKQUFrSjtBQUNsSixpR0FBaUc7Ozs7OzBEQUNwRkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQ1giLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxodG1sLWJvdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCBjb250YWlucyB0aGUgYm90cyB0aGF0IHdlIG5lZWQgdG8gZG8gYSBibG9ja2luZyByZW5kZXIgZm9yIGFuZCBjYW4ndCBzYWZlbHkgc3RyZWFtIHRoZSByZXNwb25zZVxuLy8gZHVlIHRvIGhvdyB0aGV5IHBhcnNlIHRoZSBET00uIEZvciBleGFtcGxlLCB0aGV5IG1pZ2h0IGV4cGxpY2l0bHkgY2hlY2sgZm9yIG1ldGFkYXRhIGluIHRoZSBgaGVhZGAgdGFnLCBzbyB3ZSBjYW4ndCBzdHJlYW0gbWV0YWRhdGEgdGFncyBhZnRlciB0aGUgYGhlYWRgIHdhcyBzZW50LlxuLy8gTm90ZTogVGhlIHBhdHRlcm4gW1xcdy1dKy1Hb29nbGUgY2FwdHVyZXMgYWxsIEdvb2dsZSBjcmF3bGVycyB3aXRoIFwiLUdvb2dsZVwiIHN1ZmZpeCAoZS5nLiwgTWVkaWFwYXJ0bmVycy1Hb29nbGUsIEFkc0JvdC1Hb29nbGUsIFN0b3JlYm90LUdvb2dsZSlcbi8vIGFzIHdlbGwgYXMgY3Jhd2xlcnMgc3RhcnRpbmcgd2l0aCBcIkdvb2dsZS1cIiAoZS5nLiwgR29vZ2xlLVBhZ2VSZW5kZXJlciwgR29vZ2xlLUluc3BlY3Rpb25Ub29sKVxuZXhwb3J0IGNvbnN0IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUgPVxuICAvW1xcdy1dKy1Hb29nbGV8R29vZ2xlLVtcXHctXSt8Q2hyb21lLUxpZ2h0aG91c2V8U2x1cnB8RHVja0R1Y2tCb3R8YmFpZHVzcGlkZXJ8eWFuZGV4fHNvZ291fGJpdGx5Ym90fHR1bWJscnx2a1NoYXJlfHF1b3JhIGxpbmsgcHJldmlld3xyZWRkaXRib3R8aWFfYXJjaGl2ZXJ8QmluZ2JvdHxCaW5nUHJldmlld3xhcHBsZWJvdHxmYWNlYm9va2V4dGVybmFsaGl0fGZhY2Vib29rY2F0YWxvZ3xUd2l0dGVyYm90fExpbmtlZEluQm90fFNsYWNrYm90fERpc2NvcmRib3R8V2hhdHNBcHB8U2t5cGVVcmlQcmV2aWV3fFlldGl8Z29vZ2xld2VibGlnaHQvaVxuIl0sIm5hbWVzIjpbIkhUTUxfTElNSVRFRF9CT1RfVUFfUkUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/interception-routes.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERCEPTION_ROUTE_MARKERS: function() {\n return INTERCEPTION_ROUTE_MARKERS;\n },\n extractInterceptionRouteInformation: function() {\n return extractInterceptionRouteInformation;\n },\n isInterceptionRouteAppPath: function() {\n return isInterceptionRouteAppPath;\n }\n});\nconst _apppaths = __webpack_require__(/*! ./app-paths */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)'\n];\nfunction isInterceptionRouteAppPath(path) {\n // TODO-APP: add more serious validation\n return path.split('/').find((segment)=>INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m))) !== undefined;\n}\nfunction extractInterceptionRouteInformation(path) {\n let interceptingRoute, marker, interceptedRoute;\n for (const segment of path.split('/')){\n marker = INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n ;\n [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Must be in the format //(..|...|..)(..)/\"), \"__NEXT_ERROR_CODE\", {\n value: \"E269\",\n enumerable: false,\n configurable: true\n });\n }\n interceptingRoute = (0, _apppaths.normalizeAppPath)(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n ;\n switch(marker){\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = \"/\" + interceptedRoute;\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute;\n }\n break;\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Cannot use (..) marker at the root level, use (.) instead.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E207\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = interceptingRoute.split('/').slice(0, -1).concat(interceptedRoute).join('/');\n break;\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute;\n break;\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n const splitInterceptingRoute = interceptingRoute.split('/');\n if (splitInterceptingRoute.length <= 2) {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Cannot use (..)(..) marker at the root level or one level up.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E486\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join('/');\n break;\n default:\n throw Object.defineProperty(new Error('Invariant: unexpected marker'), \"__NEXT_ERROR_CODE\", {\n value: \"E112\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n interceptingRoute,\n interceptedRoute\n };\n} //# sourceMappingURL=interception-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2FBLDBCQUEwQjtlQUExQkE7O0lBa0JHQyxtQ0FBbUM7ZUFBbkNBOztJQVhBQywwQkFBMEI7ZUFBMUJBOzs7c0NBVmlCO0FBRzFCLE1BQU1GLDZCQUE2QjtJQUN4QztJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRU0sU0FBU0UsMkJBQTJCQyxJQUFZO0lBQ3JELHdDQUF3QztJQUN4QyxPQUNFQSxLQUNHQyxLQUFLLENBQUMsS0FDTkMsSUFBSSxDQUFDLENBQUNDLFVBQ0xOLDJCQUEyQkssSUFBSSxDQUFDLENBQUNFLElBQU1ELFFBQVFFLFVBQVUsQ0FBQ0QsU0FDdERFO0FBRVo7QUFFTyxTQUFTUixvQ0FBb0NFLElBQVk7SUFDOUQsSUFBSU8sbUJBQ0ZDLFFBQ0FDO0lBRUYsS0FBSyxNQUFNTixXQUFXSCxLQUFLQyxLQUFLLENBQUMsS0FBTTtRQUNyQ08sU0FBU1gsMkJBQTJCSyxJQUFJLENBQUMsQ0FBQ0UsSUFBTUQsUUFBUUUsVUFBVSxDQUFDRDtRQUNuRSxJQUFJSSxRQUFROztZQUNULENBQUNELG1CQUFtQkUsaUJBQWlCLEdBQUdULEtBQUtDLEtBQUssQ0FBQ08sUUFBUTtZQUM1RDtRQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUNELHFCQUFxQixDQUFDQyxVQUFVLENBQUNDLGtCQUFrQjtRQUN0RCxNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUCxpQ0FBOEJWLE9BQUssc0ZBRGhDO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBTyxvQkFBb0JJLENBQUFBLEdBQUFBLFVBQUFBLGdCQUFBQSxFQUFpQkosbUJBQW1CLGlEQUFpRDs7SUFFekcsT0FBUUM7UUFDTixLQUFLO1lBQ0gsb0lBQW9JO1lBQ3BJLElBQUlELHNCQUFzQixLQUFLO2dCQUM3QkUsbUJBQW9CLE1BQUdBO1lBQ3pCLE9BQU87Z0JBQ0xBLG1CQUFtQkYsb0JBQW9CLE1BQU1FO1lBQy9DO1lBQ0E7UUFDRixLQUFLO1lBQ0gsdUhBQXVIO1lBQ3ZILElBQUlGLHNCQUFzQixLQUFLO2dCQUM3QixNQUFNLHFCQUVMLENBRkssSUFBSUcsTUFDUCxpQ0FBOEJWLE9BQUssaUVBRGhDOzJCQUFBO2dDQUFBO2tDQUFBO2dCQUVOO1lBQ0Y7WUFDQVMsbUJBQW1CRixrQkFDaEJOLEtBQUssQ0FBQyxLQUNOVyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQ1ZDLE1BQU0sQ0FBQ0osa0JBQ1BLLElBQUksQ0FBQztZQUNSO1FBQ0YsS0FBSztZQUNILGtJQUFrSTtZQUNsSUwsbUJBQW1CLE1BQU1BO1lBQ3pCO1FBQ0YsS0FBSztZQUNILGlJQUFpSTtZQUVqSSxNQUFNTSx5QkFBeUJSLGtCQUFrQk4sS0FBSyxDQUFDO1lBQ3ZELElBQUljLHVCQUF1QkMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3RDLE1BQU0scUJBRUwsQ0FGSyxJQUFJTixNQUNQLGlDQUE4QlYsT0FBSyxvRUFEaEM7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRU47WUFDRjtZQUVBUyxtQkFBbUJNLHVCQUNoQkgsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUNWQyxNQUFNLENBQUNKLGtCQUNQSyxJQUFJLENBQUM7WUFDUjtRQUNGO1lBQ0UsTUFBTSxxQkFBeUMsQ0FBekMsSUFBSUosTUFBTSxpQ0FBVjt1QkFBQTs0QkFBQTs4QkFBQTtZQUF3QztJQUNsRDtJQUVBLE9BQU87UUFBRUg7UUFBbUJFO0lBQWlCO0FBQy9DIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xcaW50ZXJjZXB0aW9uLXJvdXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi9hcHAtcGF0aHMnXG5cbi8vIG9yZGVyIG1hdHRlcnMgaGVyZSwgdGhlIGZpcnN0IG1hdGNoIHdpbGwgYmUgdXNlZFxuZXhwb3J0IGNvbnN0IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTID0gW1xuICAnKC4uKSguLiknLFxuICAnKC4pJyxcbiAgJyguLiknLFxuICAnKC4uLiknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRPRE8tQVBQOiBhZGQgbW9yZSBzZXJpb3VzIHZhbGlkYXRpb25cbiAgcmV0dXJuIChcbiAgICBwYXRoXG4gICAgICAuc3BsaXQoJy8nKVxuICAgICAgLmZpbmQoKHNlZ21lbnQpID0+XG4gICAgICAgIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLmZpbmQoKG0pID0+IHNlZ21lbnQuc3RhcnRzV2l0aChtKSlcbiAgICAgICkgIT09IHVuZGVmaW5lZFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0SW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbihwYXRoOiBzdHJpbmcpIHtcbiAgbGV0IGludGVyY2VwdGluZ1JvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbWFya2VyOiAodHlwZW9mIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTKVtudW1iZXJdIHwgdW5kZWZpbmVkLFxuICAgIGludGVyY2VwdGVkUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoLnNwbGl0KCcvJykpIHtcbiAgICBtYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtKSA9PiBzZWdtZW50LnN0YXJ0c1dpdGgobSkpXG4gICAgaWYgKG1hcmtlcikge1xuICAgICAgO1tpbnRlcmNlcHRpbmdSb3V0ZSwgaW50ZXJjZXB0ZWRSb3V0ZV0gPSBwYXRoLnNwbGl0KG1hcmtlciwgMilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpbnRlcmNlcHRpbmdSb3V0ZSB8fCAhbWFya2VyIHx8ICFpbnRlcmNlcHRlZFJvdXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgaW50ZXJjZXB0aW9uIHJvdXRlOiAke3BhdGh9LiBNdXN0IGJlIGluIHRoZSBmb3JtYXQgLzxpbnRlcmNlcHRpbmcgcm91dGU+LyguLnwuLi58Li4pKC4uKS88aW50ZXJjZXB0ZWQgcm91dGU+YFxuICAgIClcbiAgfVxuXG4gIGludGVyY2VwdGluZ1JvdXRlID0gbm9ybWFsaXplQXBwUGF0aChpbnRlcmNlcHRpbmdSb3V0ZSkgLy8gbm9ybWFsaXplIHRoZSBwYXRoLCBlLmcuIC8oYmxvZykvZmVlZCAtPiAvZmVlZFxuXG4gIHN3aXRjaCAobWFya2VyKSB7XG4gICAgY2FzZSAnKC4pJzpcbiAgICAgIC8vICguKSBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBzaWJsaW5nIHJvdXRlcywgc28gd2UganVzdCBuZWVkIHRvIGFwcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGUgdG8gdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGAvJHtpbnRlcmNlcHRlZFJvdXRlfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZSArICcvJyArIGludGVyY2VwdGVkUm91dGVcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnKC4uKSc6XG4gICAgICAvLyAoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCBvbmUgbGV2ZWwgdXAsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pIG1hcmtlciBhdCB0aGUgcm9vdCBsZXZlbCwgdXNlICguKSBpbnN0ZWFkLmBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGludGVyY2VwdGluZ1JvdXRlXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgLmNvbmNhdChpbnRlcmNlcHRlZFJvdXRlKVxuICAgICAgICAuam9pbignLycpXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLi4pJzpcbiAgICAgIC8vICguLi4pIHdpbGwgbWF0Y2ggdGhlIHJvdXRlIHNlZ21lbnQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGVcbiAgICAgIGludGVyY2VwdGVkUm91dGUgPSAnLycgKyBpbnRlcmNlcHRlZFJvdXRlXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLikoLi4pJzpcbiAgICAgIC8vICguLikoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCB0d28gbGV2ZWxzIHVwLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgbGFzdCB0d28gc2VnbWVudHMgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuXG4gICAgICBjb25zdCBzcGxpdEludGVyY2VwdGluZ1JvdXRlID0gaW50ZXJjZXB0aW5nUm91dGUuc3BsaXQoJy8nKVxuICAgICAgaWYgKHNwbGl0SW50ZXJjZXB0aW5nUm91dGUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwgb3Igb25lIGxldmVsIHVwLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpbnRlcmNlcHRlZFJvdXRlID0gc3BsaXRJbnRlcmNlcHRpbmdSb3V0ZVxuICAgICAgICAuc2xpY2UoMCwgLTIpXG4gICAgICAgIC5jb25jYXQoaW50ZXJjZXB0ZWRSb3V0ZSlcbiAgICAgICAgLmpvaW4oJy8nKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhcmlhbnQ6IHVuZXhwZWN0ZWQgbWFya2VyJylcbiAgfVxuXG4gIHJldHVybiB7IGludGVyY2VwdGluZ1JvdXRlLCBpbnRlcmNlcHRlZFJvdXRlIH1cbn1cbiJdLCJuYW1lcyI6WyJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImV4dHJhY3RJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJwYXRoIiwic3BsaXQiLCJmaW5kIiwic2VnbWVudCIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiaW50ZXJjZXB0aW5nUm91dGUiLCJtYXJrZXIiLCJpbnRlcmNlcHRlZFJvdXRlIiwiRXJyb3IiLCJub3JtYWxpemVBcHBQYXRoIiwic2xpY2UiLCJjb25jYXQiLCJqb2luIiwic3BsaXRJbnRlcmNlcHRpbmdSb3V0ZSIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/is-bot.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTML_LIMITED_BOT_UA_RE: function() {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE;\n },\n HTML_LIMITED_BOT_UA_RE_STRING: function() {\n return HTML_LIMITED_BOT_UA_RE_STRING;\n },\n getBotType: function() {\n return getBotType;\n },\n isBot: function() {\n return isBot;\n }\n});\nconst _htmlbots = __webpack_require__(/*! ./html-bots */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\");\n// Bot crawler that will spin up a headless browser and execute JS.\n// Only the main Googlebot search crawler executes JavaScript, not other Google crawlers.\n// x-ref: https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers\n// This regex specifically matches \"Googlebot\" but NOT \"Mediapartners-Google\", \"AdsBot-Google\", etc.\nconst HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i;\nconst HTML_LIMITED_BOT_UA_RE_STRING = _htmlbots.HTML_LIMITED_BOT_UA_RE.source;\nfunction isDomBotUA(userAgent) {\n return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent);\n}\nfunction isHtmlLimitedBotUA(userAgent) {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE.test(userAgent);\n}\nfunction isBot(userAgent) {\n return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent);\n}\nfunction getBotType(userAgent) {\n if (isDomBotUA(userAgent)) {\n return 'dom';\n }\n if (isHtmlLimitedBotUA(userAgent)) {\n return 'html';\n }\n return undefined;\n} //# sourceMappingURL=is-bot.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVU0Esc0JBQXNCO2VBQXRCQSxVQUFBQSxzQkFBc0I7O0lBRmxCQyw2QkFBNkI7ZUFBN0JBOztJQWdCR0MsVUFBVTtlQUFWQTs7SUFKQUMsS0FBSztlQUFMQTs7O3NDQXBCdUI7QUFFdkMsbUVBQW1FO0FBQ25FLHlGQUF5RjtBQUN6Riw0RkFBNEY7QUFDNUYsb0dBQW9HO0FBQ3BHLE1BQU1DLDZCQUE2QjtBQUU1QixNQUFNSCxnQ0FBZ0NELFVBQUFBLHNCQUFzQixDQUFDSyxNQUFNO0FBSTFFLFNBQVNDLFdBQVdDLFNBQWlCO0lBQ25DLE9BQU9ILDJCQUEyQkksSUFBSSxDQUFDRDtBQUN6QztBQUVBLFNBQVNFLG1CQUFtQkYsU0FBaUI7SUFDM0MsT0FBT1AsVUFBQUEsc0JBQXNCLENBQUNRLElBQUksQ0FBQ0Q7QUFDckM7QUFFTyxTQUFTSixNQUFNSSxTQUFpQjtJQUNyQyxPQUFPRCxXQUFXQyxjQUFjRSxtQkFBbUJGO0FBQ3JEO0FBRU8sU0FBU0wsV0FBV0ssU0FBaUI7SUFDMUMsSUFBSUQsV0FBV0MsWUFBWTtRQUN6QixPQUFPO0lBQ1Q7SUFDQSxJQUFJRSxtQkFBbUJGLFlBQVk7UUFDakMsT0FBTztJQUNUO0lBQ0EsT0FBT0c7QUFDVCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHJvdXRlclxcdXRpbHNcXGlzLWJvdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVE1MX0xJTUlURURfQk9UX1VBX1JFIH0gZnJvbSAnLi9odG1sLWJvdHMnXG5cbi8vIEJvdCBjcmF3bGVyIHRoYXQgd2lsbCBzcGluIHVwIGEgaGVhZGxlc3MgYnJvd3NlciBhbmQgZXhlY3V0ZSBKUy5cbi8vIE9ubHkgdGhlIG1haW4gR29vZ2xlYm90IHNlYXJjaCBjcmF3bGVyIGV4ZWN1dGVzIEphdmFTY3JpcHQsIG5vdCBvdGhlciBHb29nbGUgY3Jhd2xlcnMuXG4vLyB4LXJlZjogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc2VhcmNoL2RvY3MvY3Jhd2xpbmctaW5kZXhpbmcvZ29vZ2xlLWNvbW1vbi1jcmF3bGVyc1xuLy8gVGhpcyByZWdleCBzcGVjaWZpY2FsbHkgbWF0Y2hlcyBcIkdvb2dsZWJvdFwiIGJ1dCBOT1QgXCJNZWRpYXBhcnRuZXJzLUdvb2dsZVwiLCBcIkFkc0JvdC1Hb29nbGVcIiwgZXRjLlxuY29uc3QgSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUgPSAvR29vZ2xlYm90KD8hLSl8R29vZ2xlYm90JC9pXG5cbmV4cG9ydCBjb25zdCBIVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORyA9IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUuc291cmNlXG5cbmV4cG9ydCB7IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUgfVxuXG5mdW5jdGlvbiBpc0RvbUJvdFVBKHVzZXJBZ2VudDogc3RyaW5nKSB7XG4gIHJldHVybiBIRUFETEVTU19CUk9XU0VSX0JPVF9VQV9SRS50ZXN0KHVzZXJBZ2VudClcbn1cblxuZnVuY3Rpb24gaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudDogc3RyaW5nKSB7XG4gIHJldHVybiBIVE1MX0xJTUlURURfQk9UX1VBX1JFLnRlc3QodXNlckFnZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb3QodXNlckFnZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzRG9tQm90VUEodXNlckFnZW50KSB8fCBpc0h0bWxMaW1pdGVkQm90VUEodXNlckFnZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm90VHlwZSh1c2VyQWdlbnQ6IHN0cmluZyk6ICdkb20nIHwgJ2h0bWwnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzRG9tQm90VUEodXNlckFnZW50KSkge1xuICAgIHJldHVybiAnZG9tJ1xuICB9XG4gIGlmIChpc0h0bWxMaW1pdGVkQm90VUEodXNlckFnZW50KSkge1xuICAgIHJldHVybiAnaHRtbCdcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG4iXSwibmFtZXMiOlsiSFRNTF9MSU1JVEVEX0JPVF9VQV9SRSIsIkhUTUxfTElNSVRFRF9CT1RfVUFfUkVfU1RSSU5HIiwiZ2V0Qm90VHlwZSIsImlzQm90IiwiSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUiLCJzb3VyY2UiLCJpc0RvbUJvdFVBIiwidXNlckFnZW50IiwidGVzdCIsImlzSHRtbExpbWl0ZWRCb3RVQSIsInVuZGVmaW5lZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/parse-path.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"parsePath\", ({\n enumerable: true,\n get: function() {\n return parsePath;\n }\n}));\nfunction parsePath(path) {\n const hashIndex = path.indexOf('#');\n const queryIndex = path.indexOf('?');\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex);\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : ''\n };\n }\n return {\n pathname: path,\n query: '',\n hash: ''\n };\n} //# sourceMappingURL=parse-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGguanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Q0FJQzs7Ozs2Q0FDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsVUFBVUMsSUFBWTtJQUNwQyxNQUFNQyxZQUFZRCxLQUFLRSxPQUFPLENBQUM7SUFDL0IsTUFBTUMsYUFBYUgsS0FBS0UsT0FBTyxDQUFDO0lBQ2hDLE1BQU1FLFdBQVdELGFBQWEsQ0FBQyxLQUFNRixDQUFBQSxZQUFZLEtBQUtFLGFBQWFGLFNBQUFBLENBQVE7SUFFM0UsSUFBSUcsWUFBWUgsWUFBWSxDQUFDLEdBQUc7UUFDOUIsT0FBTztZQUNMSSxVQUFVTCxLQUFLTSxTQUFTLENBQUMsR0FBR0YsV0FBV0QsYUFBYUY7WUFDcERNLE9BQU9ILFdBQ0hKLEtBQUtNLFNBQVMsQ0FBQ0gsWUFBWUYsWUFBWSxDQUFDLElBQUlBLFlBQVlPLGFBQ3hEO1lBQ0pDLE1BQU1SLFlBQVksQ0FBQyxJQUFJRCxLQUFLVSxLQUFLLENBQUNULGFBQWE7UUFDakQ7SUFDRjtJQUVBLE9BQU87UUFBRUksVUFBVUw7UUFBTU8sT0FBTztRQUFJRSxNQUFNO0lBQUc7QUFDL0MiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxwYXJzZS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2l2ZW4gYSBwYXRoIHRoaXMgZnVuY3Rpb24gd2lsbCBmaW5kIHRoZSBwYXRobmFtZSwgcXVlcnkgYW5kIGhhc2ggYW5kIHJldHVyblxuICogdGhlbS4gVGhpcyBpcyB1c2VmdWwgdG8gcGFyc2UgZnVsbCBwYXRocyBvbiB0aGUgY2xpZW50IHNpZGUuXG4gKiBAcGFyYW0gcGF0aCBBIHBhdGggdG8gcGFyc2UgZS5nLiAvZm9vL2Jhcj9pZD0xI2hhc2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJylcbiAgY29uc3QgcXVlcnlJbmRleCA9IHBhdGguaW5kZXhPZignPycpXG4gIGNvbnN0IGhhc1F1ZXJ5ID0gcXVlcnlJbmRleCA+IC0xICYmIChoYXNoSW5kZXggPCAwIHx8IHF1ZXJ5SW5kZXggPCBoYXNoSW5kZXgpXG5cbiAgaWYgKGhhc1F1ZXJ5IHx8IGhhc2hJbmRleCA+IC0xKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhuYW1lOiBwYXRoLnN1YnN0cmluZygwLCBoYXNRdWVyeSA/IHF1ZXJ5SW5kZXggOiBoYXNoSW5kZXgpLFxuICAgICAgcXVlcnk6IGhhc1F1ZXJ5XG4gICAgICAgID8gcGF0aC5zdWJzdHJpbmcocXVlcnlJbmRleCwgaGFzaEluZGV4ID4gLTEgPyBoYXNoSW5kZXggOiB1bmRlZmluZWQpXG4gICAgICAgIDogJycsXG4gICAgICBoYXNoOiBoYXNoSW5kZXggPiAtMSA/IHBhdGguc2xpY2UoaGFzaEluZGV4KSA6ICcnLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHBhdGhuYW1lOiBwYXRoLCBxdWVyeTogJycsIGhhc2g6ICcnIH1cbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhdGgiLCJwYXRoIiwiaGFzaEluZGV4IiwiaW5kZXhPZiIsInF1ZXJ5SW5kZXgiLCJoYXNRdWVyeSIsInBhdGhuYW1lIiwic3Vic3RyaW5nIiwicXVlcnkiLCJ1bmRlZmluZWQiLCJoYXNoIiwic2xpY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"pathHasPrefix\", ({\n enumerable: true,\n get: function() {\n return pathHasPrefix;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction pathHasPrefix(path, prefix) {\n if (typeof path !== 'string') {\n return false;\n }\n const { pathname } = (0, _parsepath.parsePath)(path);\n return pathname === prefix || pathname.startsWith(prefix + '/');\n} //# sourceMappingURL=path-has-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQVNnQkE7OztlQUFBQTs7O3VDQVRVO0FBU25CLFNBQVNBLGNBQWNDLElBQVksRUFBRUMsTUFBYztJQUN4RCxJQUFJLE9BQU9ELFNBQVMsVUFBVTtRQUM1QixPQUFPO0lBQ1Q7SUFFQSxNQUFNLEVBQUVFLFFBQVEsRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFBQSxFQUFVSDtJQUMvQixPQUFPRSxhQUFhRCxVQUFVQyxTQUFTRSxVQUFVLENBQUNILFNBQVM7QUFDN0QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxwYXRoLWhhcy1wcmVmaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VQYXRoIH0gZnJvbSAnLi9wYXJzZS1wYXRoJ1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIHBhdGggc3RhcnRzIHdpdGggYSBnaXZlbiBwcmVmaXguIEl0IGVuc3VyZXMgaXQgbWF0Y2hlc1xuICogZXhhY3RseSB3aXRob3V0IGNvbnRhaW5pbmcgZXh0cmEgY2hhcnMuIGUuZy4gcHJlZml4IC9kb2NzIHNob3VsZCByZXBsYWNlXG4gKiBmb3IgL2RvY3MsIC9kb2NzLywgL2RvY3MvYSBidXQgbm90IC9kb2Nzc3NcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHByZWZpeCBUaGUgcHJlZml4IHRvIGNoZWNrIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRoSGFzUHJlZml4KHBhdGg6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgeyBwYXRobmFtZSB9ID0gcGFyc2VQYXRoKHBhdGgpXG4gIHJldHVybiBwYXRobmFtZSA9PT0gcHJlZml4IHx8IHBhdGhuYW1lLnN0YXJ0c1dpdGgocHJlZml4ICsgJy8nKVxufVxuIl0sIm5hbWVzIjpbInBhdGhIYXNQcmVmaXgiLCJwYXRoIiwicHJlZml4IiwicGF0aG5hbWUiLCJwYXJzZVBhdGgiLCJzdGFydHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js": /*!******************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removePathPrefix\", ({\n enumerable: true,\n get: function() {\n return removePathPrefix;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nfunction removePathPrefix(path, prefix) {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!(0, _pathhasprefix.pathHasPrefix)(path, prefix)) {\n return path;\n }\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length);\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix;\n }\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return \"/\" + withoutPrefix;\n} //# sourceMappingURL=remove-path-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS1wYXRoLXByZWZpeC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQVVnQkE7OztlQUFBQTs7OzJDQVZjO0FBVXZCLFNBQVNBLGlCQUFpQkMsSUFBWSxFQUFFQyxNQUFjO0lBQzNELHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRixvQkFBb0I7SUFDcEIsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLElBQUksQ0FBQ0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0YsTUFBTUMsU0FBUztRQUNoQyxPQUFPRDtJQUNUO0lBRUEsK0NBQStDO0lBQy9DLE1BQU1HLGdCQUFnQkgsS0FBS0ksS0FBSyxDQUFDSCxPQUFPSSxNQUFNO0lBRTlDLDJFQUEyRTtJQUMzRSxJQUFJRixjQUFjRyxVQUFVLENBQUMsTUFBTTtRQUNqQyxPQUFPSDtJQUNUO0lBRUEsNEVBQTRFO0lBQzVFLG1EQUFtRDtJQUNuRCxPQUFRLE1BQUdBO0FBQ2IiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxyZW1vdmUtcGF0aC1wcmVmaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGF0aEhhc1ByZWZpeCB9IGZyb20gJy4vcGF0aC1oYXMtcHJlZml4J1xuXG4vKipcbiAqIEdpdmVuIGEgcGF0aCBhbmQgYSBwcmVmaXggaXQgd2lsbCByZW1vdmUgdGhlIHByZWZpeCB3aGVuIGl0IGV4aXN0cyBpbiB0aGVcbiAqIGdpdmVuIHBhdGguIEl0IGVuc3VyZXMgaXQgbWF0Y2hlcyBleGFjdGx5IHdpdGhvdXQgY29udGFpbmluZyBleHRyYSBjaGFyc1xuICogYW5kIGlmIHRoZSBwcmVmaXggaXMgbm90IHRoZXJlIGl0IHdpbGwgYmUgbm9vcC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byByZW1vdmUgdGhlIHByZWZpeCBmcm9tLlxuICogQHBhcmFtIHByZWZpeCBUaGUgcHJlZml4IHRvIGJlIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQYXRoUHJlZml4KHBhdGg6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBJZiB0aGUgcGF0aCBkb2Vzbid0IHN0YXJ0IHdpdGggdGhlIHByZWZpeCB3ZSBjYW4gcmV0dXJuIGl0IGFzIGlzLiBUaGlzXG4gIC8vIHByb3RlY3RzIHVzIGZyb20gc2l0dWF0aW9ucyB3aGVyZSB0aGUgcHJlZml4IGlzIGEgc3Vic3RyaW5nIG9mIHRoZSBwYXRoXG4gIC8vIHByZWZpeCBzdWNoIGFzOlxuICAvL1xuICAvLyBGb3IgcHJlZml4OiAvYmxvZ1xuICAvL1xuICAvLyAgIC9ibG9nIC0+IHRydWVcbiAgLy8gICAvYmxvZy8gLT4gdHJ1ZVxuICAvLyAgIC9ibG9nLzEgLT4gdHJ1ZVxuICAvLyAgIC9ibG9nZ2luZyAtPiBmYWxzZVxuICAvLyAgIC9ibG9nZ2luZy8gLT4gZmFsc2VcbiAgLy8gICAvYmxvZ2dpbmcvMSAtPiBmYWxzZVxuICBpZiAoIXBhdGhIYXNQcmVmaXgocGF0aCwgcHJlZml4KSkge1xuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIHByZWZpeCBmcm9tIHRoZSBwYXRoIHZpYSBzbGljaW5nLlxuICBjb25zdCB3aXRob3V0UHJlZml4ID0gcGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKVxuXG4gIC8vIElmIHRoZSBwYXRoIHdpdGhvdXQgdGhlIHByZWZpeCBzdGFydHMgd2l0aCBhIGAvYCB3ZSBjYW4gcmV0dXJuIGl0IGFzIGlzLlxuICBpZiAod2l0aG91dFByZWZpeC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gd2l0aG91dFByZWZpeFxuICB9XG5cbiAgLy8gSWYgdGhlIHBhdGggd2l0aG91dCB0aGUgcHJlZml4IGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIGAvYCB3ZSBuZWVkIHRvIGFkZCBpdFxuICAvLyBiYWNrIHRvIHRoZSBwYXRoIHRvIG1ha2Ugc3VyZSBpdCdzIGEgdmFsaWQgcGF0aC5cbiAgcmV0dXJuIGAvJHt3aXRob3V0UHJlZml4fWBcbn1cbiJdLCJuYW1lcyI6WyJyZW1vdmVQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsInBhdGhIYXNQcmVmaXgiLCJ3aXRob3V0UHJlZml4Iiwic2xpY2UiLCJsZW5ndGgiLCJzdGFydHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return removeTrailingSlash;\n }\n}));\nfunction removeTrailingSlash(route) {\n return route.replace(/\\/$/, '') || '/';\n} //# sourceMappingURL=remove-trailing-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUM7Ozs7dURBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLG9CQUFvQkMsS0FBYTtJQUMvQyxPQUFPQSxNQUFNQyxPQUFPLENBQUMsT0FBTyxPQUFPO0FBQ3JDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xccmVtb3ZlLXRyYWlsaW5nLXNsYXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyB0aGUgdHJhaWxpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcm91dGUgb3IgcGFnZSBwYXRoLiBQcmVzZXJ2ZXMgdGhlXG4gKiByb290IHBhZ2UuIEV4YW1wbGVzOlxuICogICAtIGAvZm9vL2Jhci9gIC0+IGAvZm9vL2JhcmBcbiAqICAgLSBgL2Zvby9iYXJgIC0+IGAvZm9vL2JhcmBcbiAqICAgLSBgL2AgLT4gYC9gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUcmFpbGluZ1NsYXNoKHJvdXRlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHJvdXRlLnJlcGxhY2UoL1xcLyQvLCAnJykgfHwgJy8nXG59XG4iXSwibmFtZXMiOlsicmVtb3ZlVHJhaWxpbmdTbGFzaCIsInJvdXRlIiwicmVwbGFjZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-match-utils.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/route-match-utils.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\n * Client-safe utilities for route matching that don't import server-side\n * utilities to avoid bundling issues with Turbopack\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n safeCompile: function() {\n return safeCompile;\n },\n safePathToRegexp: function() {\n return safePathToRegexp;\n },\n safeRegexpToFunction: function() {\n return safeRegexpToFunction;\n },\n safeRouteMatcher: function() {\n return safeRouteMatcher;\n }\n});\nconst _pathtoregexp = __webpack_require__(/*! next/dist/compiled/path-to-regexp */ \"(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js\");\nconst _routepatternnormalizer = __webpack_require__(/*! ../../../../lib/route-pattern-normalizer */ \"(rsc)/./node_modules/next/dist/lib/route-pattern-normalizer.js\");\nfunction safePathToRegexp(route, keys, options) {\n if (typeof route !== 'string') {\n return (0, _pathtoregexp.pathToRegexp)(route, keys, options);\n }\n // Check if normalization is needed and cache the result\n const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);\n const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;\n try {\n return (0, _pathtoregexp.pathToRegexp)(routeToUse, keys, options);\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);\n return (0, _pathtoregexp.pathToRegexp)(normalizedRoute, keys, options);\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error;\n }\n }\n throw error;\n }\n}\nfunction safeCompile(route, options) {\n // Check if normalization is needed and cache the result\n const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);\n const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;\n try {\n return (0, _pathtoregexp.compile)(routeToUse, options);\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);\n return (0, _pathtoregexp.compile)(normalizedRoute, options);\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error;\n }\n }\n throw error;\n }\n}\nfunction safeRegexpToFunction(regexp, keys) {\n const originalMatcher = (0, _pathtoregexp.regexpToFunction)(regexp, keys || []);\n return (pathname)=>{\n const result = originalMatcher(pathname);\n if (!result) return false;\n // Clean parameters before returning\n return {\n ...result,\n params: (0, _routepatternnormalizer.stripParameterSeparators)(result.params)\n };\n };\n}\nfunction safeRouteMatcher(matcherFn) {\n return (pathname)=>{\n const result = matcherFn(pathname);\n if (!result) return false;\n // Clean parameters before returning\n return (0, _routepatternnormalizer.stripParameterSeparators)(result);\n };\n} //# sourceMappingURL=route-match-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLW1hdGNoLXV0aWxzLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7Ozs7Ozs7Ozs7O0lBMkRlQSxXQUFXO2VBQVhBOztJQXBDQUMsZ0JBQWdCO2VBQWhCQTs7SUFrRUFDLG9CQUFvQjtlQUFwQkE7O0lBcUJBQyxnQkFBZ0I7ZUFBaEJBOzs7MENBbEdUO29EQUtBO0FBTUEsU0FBU0YsaUJBQ2RHLEtBQStDLEVBQy9DQyxJQUFZLEVBQ1pDLE9BQThDO0lBRTlDLElBQUksT0FBT0YsVUFBVSxVQUFVO1FBQzdCLE9BQU9HLENBQUFBLEdBQUFBLGNBQUFBLFlBQUFBLEVBQWFILE9BQU9DLE1BQU1DO0lBQ25DO0lBRUEsd0RBQXdEO0lBQ3hELE1BQU1FLHFCQUFxQkMsQ0FBQUEsR0FBQUEsd0JBQUFBLDBCQUFBQSxFQUEyQkw7SUFDdEQsTUFBTU0sYUFBYUYscUJBQ2ZHLENBQUFBLEdBQUFBLHdCQUFBQSwyQkFBQUEsRUFBNEJQLFNBQzVCQTtJQUVKLElBQUk7UUFDRixPQUFPRyxDQUFBQSxHQUFBQSxjQUFBQSxZQUFBQSxFQUFhRyxZQUFZTCxNQUFNQztJQUN4QyxFQUFFLE9BQU9NLE9BQU87UUFDZCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDSixvQkFBb0I7WUFDdkIsSUFBSTtnQkFDRixNQUFNSyxrQkFBa0JGLENBQUFBLEdBQUFBLHdCQUFBQSwyQkFBQUEsRUFBNEJQO2dCQUNwRCxPQUFPRyxDQUFBQSxHQUFBQSxjQUFBQSxZQUFZLEVBQUNNLGlCQUFpQlIsTUFBTUM7WUFDN0MsRUFBRSxPQUFPUSxZQUFZO2dCQUNuQixvREFBb0Q7Z0JBQ3BELE1BQU1GO1lBQ1I7UUFDRjtRQUNBLE1BQU1BO0lBQ1I7QUFDRjtBQU1PLFNBQVNaLFlBQ2RJLEtBQWEsRUFDYkUsT0FBZ0Q7SUFFaEQsd0RBQXdEO0lBQ3hELE1BQU1FLHFCQUFxQkMsQ0FBQUEsR0FBQUEsd0JBQUFBLDBCQUFBQSxFQUEyQkw7SUFDdEQsTUFBTU0sYUFBYUYscUJBQ2ZHLENBQUFBLEdBQUFBLHdCQUFBQSwyQkFBQUEsRUFBNEJQLFNBQzVCQTtJQUVKLElBQUk7UUFDRixPQUFPVyxDQUFBQSxHQUFBQSxjQUFBQSxPQUFBQSxFQUFRTCxZQUFZSjtJQUM3QixFQUFFLE9BQU9NLE9BQU87UUFDZCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDSixvQkFBb0I7WUFDdkIsSUFBSTtnQkFDRixNQUFNSyxrQkFBa0JGLENBQUFBLEdBQUFBLHdCQUFBQSwyQkFBQUEsRUFBNEJQO2dCQUNwRCxPQUFPVyxDQUFBQSxHQUFBQSxjQUFBQSxPQUFBQSxFQUFRRixpQkFBaUJQO1lBQ2xDLEVBQUUsT0FBT1EsWUFBWTtnQkFDbkIsb0RBQW9EO2dCQUNwRCxNQUFNRjtZQUNSO1FBQ0Y7UUFDQSxNQUFNQTtJQUNSO0FBQ0Y7QUFLTyxTQUFTVixxQkFFZGMsTUFBYyxFQUFFWCxJQUFZO0lBQzVCLE1BQU1ZLGtCQUFrQkMsQ0FBQUEsR0FBQUEsY0FBQUEsZ0JBQUFBLEVBQW9CRixRQUFRWCxRQUFRLEVBQUU7SUFFOUQsT0FBTyxDQUFDYztRQUNOLE1BQU1DLFNBQVNILGdCQUFnQkU7UUFDL0IsSUFBSSxDQUFDQyxRQUFRLE9BQU87UUFFcEIsb0NBQW9DO1FBQ3BDLE9BQU87WUFDTCxHQUFHQSxNQUFNO1lBQ1RDLFFBQVFDLENBQUFBLEdBQUFBLHdCQUFBQSx3QkFBQUEsRUFBeUJGLE9BQU9DLE1BQU07UUFDaEQ7SUFDRjtBQUNGO0FBTU8sU0FBU2xCLGlCQUNkb0IsU0FBMEM7SUFFMUMsT0FBTyxDQUFDSjtRQUNOLE1BQU1DLFNBQVNHLFVBQVVKO1FBQ3pCLElBQUksQ0FBQ0MsUUFBUSxPQUFPO1FBRXBCLG9DQUFvQztRQUNwQyxPQUFPRSxDQUFBQSxHQUFBQSx3QkFBQUEsd0JBQUFBLEVBQXlCRjtJQUNsQztBQUNGIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xccm91dGUtbWF0Y2gtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGllbnQtc2FmZSB1dGlsaXRpZXMgZm9yIHJvdXRlIG1hdGNoaW5nIHRoYXQgZG9uJ3QgaW1wb3J0IHNlcnZlci1zaWRlXG4gKiB1dGlsaXRpZXMgdG8gYXZvaWQgYnVuZGxpbmcgaXNzdWVzIHdpdGggVHVyYm9wYWNrXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBLZXksXG4gIFRva2Vuc1RvUmVnZXhwT3B0aW9ucyxcbiAgUGFyc2VPcHRpb25zLFxuICBUb2tlbnNUb0Z1bmN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtdG8tcmVnZXhwJ1xuaW1wb3J0IHtcbiAgcGF0aFRvUmVnZXhwLFxuICBjb21waWxlLFxuICByZWdleHBUb0Z1bmN0aW9uLFxufSBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvcGF0aC10by1yZWdleHAnXG5pbXBvcnQge1xuICBoYXNBZGphY2VudFBhcmFtZXRlcklzc3VlcyxcbiAgbm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzLFxuICBzdHJpcFBhcmFtZXRlclNlcGFyYXRvcnMsXG59IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9yb3V0ZS1wYXR0ZXJuLW5vcm1hbGl6ZXInXG5cbi8qKlxuICogQ2xpZW50LXNhZmUgd3JhcHBlciBhcm91bmQgcGF0aFRvUmVnZXhwIHRoYXQgaGFuZGxlcyBwYXRoLXRvLXJlZ2V4cCA2LjMuMCsgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKiBUaGlzIGluY2x1ZGVzIGJvdGggXCJDYW4gbm90IHJlcGVhdCB3aXRob3V0IHByZWZpeC9zdWZmaXhcIiBhbmQgXCJNdXN0IGhhdmUgdGV4dCBiZXR3ZWVuIHBhcmFtZXRlcnNcIiBlcnJvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUGF0aFRvUmVnZXhwKFxuICByb3V0ZTogc3RyaW5nIHwgUmVnRXhwIHwgQXJyYXk8c3RyaW5nIHwgUmVnRXhwPixcbiAga2V5cz86IEtleVtdLFxuICBvcHRpb25zPzogVG9rZW5zVG9SZWdleHBPcHRpb25zICYgUGFyc2VPcHRpb25zXG4pOiBSZWdFeHAge1xuICBpZiAodHlwZW9mIHJvdXRlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXRoVG9SZWdleHAocm91dGUsIGtleXMsIG9wdGlvbnMpXG4gIH1cblxuICAvLyBDaGVjayBpZiBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCBhbmQgY2FjaGUgdGhlIHJlc3VsdFxuICBjb25zdCBuZWVkc05vcm1hbGl6YXRpb24gPSBoYXNBZGphY2VudFBhcmFtZXRlcklzc3Vlcyhyb3V0ZSlcbiAgY29uc3Qgcm91dGVUb1VzZSA9IG5lZWRzTm9ybWFsaXphdGlvblxuICAgID8gbm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzKHJvdXRlKVxuICAgIDogcm91dGVcblxuICB0cnkge1xuICAgIHJldHVybiBwYXRoVG9SZWdleHAocm91dGVUb1VzZSwga2V5cywgb3B0aW9ucylcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBPbmx5IHRyeSBub3JtYWxpemF0aW9uIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBub3JtYWxpemVkXG4gICAgaWYgKCFuZWVkc05vcm1hbGl6YXRpb24pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSb3V0ZSA9IG5vcm1hbGl6ZUFkamFjZW50UGFyYW1ldGVycyhyb3V0ZSlcbiAgICAgICAgcmV0dXJuIHBhdGhUb1JlZ2V4cChub3JtYWxpemVkUm91dGUsIGtleXMsIG9wdGlvbnMpXG4gICAgICB9IGNhdGNoIChyZXRyeUVycm9yKSB7XG4gICAgICAgIC8vIElmIHRoYXQgZG9lc24ndCB3b3JrLCBmYWxsIGJhY2sgdG8gb3JpZ2luYWwgZXJyb3JcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuXG4vKipcbiAqIENsaWVudC1zYWZlIHdyYXBwZXIgYXJvdW5kIGNvbXBpbGUgdGhhdCBoYW5kbGVzIHBhdGgtdG8tcmVnZXhwIDYuMy4wKyB2YWxpZGF0aW9uIGVycm9ycy5cbiAqIE5vIHNlcnZlci1zaWRlIGVycm9yIHJlcG9ydGluZyB0byBhdm9pZCBidW5kbGluZyBpc3N1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYWZlQ29tcGlsZShcbiAgcm91dGU6IHN0cmluZyxcbiAgb3B0aW9ucz86IFRva2Vuc1RvRnVuY3Rpb25PcHRpb25zICYgUGFyc2VPcHRpb25zXG4pIHtcbiAgLy8gQ2hlY2sgaWYgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQgYW5kIGNhY2hlIHRoZSByZXN1bHRcbiAgY29uc3QgbmVlZHNOb3JtYWxpemF0aW9uID0gaGFzQWRqYWNlbnRQYXJhbWV0ZXJJc3N1ZXMocm91dGUpXG4gIGNvbnN0IHJvdXRlVG9Vc2UgPSBuZWVkc05vcm1hbGl6YXRpb25cbiAgICA/IG5vcm1hbGl6ZUFkamFjZW50UGFyYW1ldGVycyhyb3V0ZSlcbiAgICA6IHJvdXRlXG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gY29tcGlsZShyb3V0ZVRvVXNlLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIE9ubHkgdHJ5IG5vcm1hbGl6YXRpb24gaWYgd2UgaGF2ZW4ndCBhbHJlYWR5IG5vcm1hbGl6ZWRcbiAgICBpZiAoIW5lZWRzTm9ybWFsaXphdGlvbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFJvdXRlID0gbm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzKHJvdXRlKVxuICAgICAgICByZXR1cm4gY29tcGlsZShub3JtYWxpemVkUm91dGUsIG9wdGlvbnMpXG4gICAgICB9IGNhdGNoIChyZXRyeUVycm9yKSB7XG4gICAgICAgIC8vIElmIHRoYXQgZG9lc24ndCB3b3JrLCBmYWxsIGJhY2sgdG8gb3JpZ2luYWwgZXJyb3JcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuXG4vKipcbiAqIENsaWVudC1zYWZlIHdyYXBwZXIgYXJvdW5kIHJlZ2V4cFRvRnVuY3Rpb24gdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFucyBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FmZVJlZ2V4cFRvRnVuY3Rpb248XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pixcbj4ocmVnZXhwOiBSZWdFeHAsIGtleXM/OiBLZXlbXSk6IChwYXRobmFtZTogc3RyaW5nKSA9PiB7IHBhcmFtczogVCB9IHwgZmFsc2Uge1xuICBjb25zdCBvcmlnaW5hbE1hdGNoZXIgPSByZWdleHBUb0Z1bmN0aW9uPFQ+KHJlZ2V4cCwga2V5cyB8fCBbXSlcblxuICByZXR1cm4gKHBhdGhuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbE1hdGNoZXIocGF0aG5hbWUpXG4gICAgaWYgKCFyZXN1bHQpIHJldHVybiBmYWxzZVxuXG4gICAgLy8gQ2xlYW4gcGFyYW1ldGVycyBiZWZvcmUgcmV0dXJuaW5nXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIHBhcmFtczogc3RyaXBQYXJhbWV0ZXJTZXBhcmF0b3JzKHJlc3VsdC5wYXJhbXMgYXMgYW55KSBhcyBULFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNhZmUgd3JhcHBlciBmb3Igcm91dGUgbWF0Y2hlciBmdW5jdGlvbnMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFucyBwYXJhbWV0ZXJzLlxuICogVGhpcyBpcyBjbGllbnQtc2FmZSBhbmQgZG9lc24ndCBpbXBvcnQgcGF0aC10by1yZWdleHAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYWZlUm91dGVNYXRjaGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgbWF0Y2hlckZuOiAocGF0aG5hbWU6IHN0cmluZykgPT4gZmFsc2UgfCBUXG4pOiAocGF0aG5hbWU6IHN0cmluZykgPT4gZmFsc2UgfCBUIHtcbiAgcmV0dXJuIChwYXRobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbWF0Y2hlckZuKHBhdGhuYW1lKVxuICAgIGlmICghcmVzdWx0KSByZXR1cm4gZmFsc2VcblxuICAgIC8vIENsZWFuIHBhcmFtZXRlcnMgYmVmb3JlIHJldHVybmluZ1xuICAgIHJldHVybiBzdHJpcFBhcmFtZXRlclNlcGFyYXRvcnMocmVzdWx0KSBhcyBUXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJzYWZlQ29tcGlsZSIsInNhZmVQYXRoVG9SZWdleHAiLCJzYWZlUmVnZXhwVG9GdW5jdGlvbiIsInNhZmVSb3V0ZU1hdGNoZXIiLCJyb3V0ZSIsImtleXMiLCJvcHRpb25zIiwicGF0aFRvUmVnZXhwIiwibmVlZHNOb3JtYWxpemF0aW9uIiwiaGFzQWRqYWNlbnRQYXJhbWV0ZXJJc3N1ZXMiLCJyb3V0ZVRvVXNlIiwibm9ybWFsaXplQWRqYWNlbnRQYXJhbWV0ZXJzIiwiZXJyb3IiLCJub3JtYWxpemVkUm91dGUiLCJyZXRyeUVycm9yIiwiY29tcGlsZSIsInJlZ2V4cCIsIm9yaWdpbmFsTWF0Y2hlciIsInJlZ2V4cFRvRnVuY3Rpb24iLCJwYXRobmFtZSIsInJlc3VsdCIsInBhcmFtcyIsInN0cmlwUGFyYW1ldGVyU2VwYXJhdG9ycyIsIm1hdGNoZXJGbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-match-utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/route-matcher.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getRouteMatcher\", ({\n enumerable: true,\n get: function() {\n return getRouteMatcher;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _routematchutils = __webpack_require__(/*! ./route-match-utils */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-match-utils.js\");\nfunction getRouteMatcher(param) {\n let { re, groups } = param;\n const rawMatcher = (pathname)=>{\n const routeMatch = re.exec(pathname);\n if (!routeMatch) return false;\n const decode = (param)=>{\n try {\n return decodeURIComponent(param);\n } catch (e) {\n throw Object.defineProperty(new _utils.DecodeError('failed to decode param'), \"__NEXT_ERROR_CODE\", {\n value: \"E528\",\n enumerable: false,\n configurable: true\n });\n }\n };\n const params = {};\n for (const [key, group] of Object.entries(groups)){\n const match = routeMatch[group.pos];\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry)=>decode(entry));\n } else {\n params[key] = decode(match);\n }\n }\n }\n return params;\n };\n // Wrap with safe matcher to handle parameter cleaning\n return (0, _routematchutils.safeRouteMatcher)(rawMatcher);\n} //# sourceMappingURL=route-matcher.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLW1hdGNoZXIuanMiLCJtYXBwaW5ncyI6Ijs7OzttREFnQmdCQTs7O2VBQUFBOzs7bUNBZlk7NkNBRUs7QUFhMUIsU0FBU0EsZ0JBQWdCLEtBR1Y7SUFIVSxNQUM5QkMsRUFBRSxFQUNGQyxNQUFNLEVBQ2MsR0FIVTtJQUk5QixNQUFNQyxhQUFhLENBQUNDO1FBQ2xCLE1BQU1DLGFBQWFKLEdBQUdLLElBQUksQ0FBQ0Y7UUFDM0IsSUFBSSxDQUFDQyxZQUFZLE9BQU87UUFFeEIsTUFBTUUsU0FBUyxDQUFDQztZQUNkLElBQUk7Z0JBQ0YsT0FBT0MsbUJBQW1CRDtZQUM1QixFQUFFLFVBQU07Z0JBQ04sTUFBTSxxQkFBeUMsQ0FBekMsSUFBSUUsT0FBQUEsV0FBVyxDQUFDLDJCQUFoQjsyQkFBQTtnQ0FBQTtrQ0FBQTtnQkFBd0M7WUFDaEQ7UUFDRjtRQUVBLE1BQU1DLFNBQWlCLENBQUM7UUFDeEIsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDYixRQUFTO1lBQ2pELE1BQU1jLFFBQVFYLFVBQVUsQ0FBQ1EsTUFBTUksR0FBRyxDQUFDO1lBQ25DLElBQUlELFVBQVVFLFdBQVc7Z0JBQ3ZCLElBQUlMLE1BQU1NLE1BQU0sRUFBRTtvQkFDaEJSLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHSSxNQUFNSSxLQUFLLENBQUMsS0FBS0MsR0FBRyxDQUFDLENBQUNDLFFBQVVmLE9BQU9lO2dCQUN2RCxPQUFPO29CQUNMWCxNQUFNLENBQUNDLElBQUksR0FBR0wsT0FBT1M7Z0JBQ3ZCO1lBQ0Y7UUFDRjtRQUVBLE9BQU9MO0lBQ1Q7SUFFQSxzREFBc0Q7SUFDdEQsT0FBT1ksQ0FBQUEsR0FBQUEsaUJBQUFBLGdCQUFBQSxFQUFpQnBCO0FBQzFCIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xccm91dGUtbWF0Y2hlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdyb3VwIH0gZnJvbSAnLi9yb3V0ZS1yZWdleCdcbmltcG9ydCB7IERlY29kZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcbmltcG9ydCB7IHNhZmVSb3V0ZU1hdGNoZXIgfSBmcm9tICcuL3JvdXRlLW1hdGNoLXV0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlTWF0Y2hGbiB7XG4gIChwYXRobmFtZTogc3RyaW5nKTogZmFsc2UgfCBQYXJhbXNcbn1cblxudHlwZSBSb3V0ZU1hdGNoZXJPcHRpb25zID0ge1xuICAvLyBXZSBvbmx5IHVzZSB0aGUgZXhlYyBtZXRob2Qgb2YgdGhlIFJlZ0V4cCBvYmplY3QuIFRoaXMgaGVscHMgdXMgYXZvaWQgdXNpbmdcbiAgLy8gdHlwZSBhc3NlcnRpb25zIHRoYXQgdGhlIHBhc3NlZCBpbiBwcm9wZXJ0aWVzIGFyZSBvZiB0aGUgY29ycmVjdCB0eXBlLlxuICByZTogUGljazxSZWdFeHAsICdleGVjJz5cbiAgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBHcm91cD5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlTWF0Y2hlcih7XG4gIHJlLFxuICBncm91cHMsXG59OiBSb3V0ZU1hdGNoZXJPcHRpb25zKTogUm91dGVNYXRjaEZuIHtcbiAgY29uc3QgcmF3TWF0Y2hlciA9IChwYXRobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgcm91dGVNYXRjaCA9IHJlLmV4ZWMocGF0aG5hbWUpXG4gICAgaWYgKCFyb3V0ZU1hdGNoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGRlY29kZSA9IChwYXJhbTogc3RyaW5nKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IG5ldyBEZWNvZGVFcnJvcignZmFpbGVkIHRvIGRlY29kZSBwYXJhbScpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zOiBQYXJhbXMgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgZ3JvdXBdIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwcykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcm91dGVNYXRjaFtncm91cC5wb3NdXG4gICAgICBpZiAobWF0Y2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZ3JvdXAucmVwZWF0KSB7XG4gICAgICAgICAgcGFyYW1zW2tleV0gPSBtYXRjaC5zcGxpdCgnLycpLm1hcCgoZW50cnkpID0+IGRlY29kZShlbnRyeSkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyYW1zW2tleV0gPSBkZWNvZGUobWF0Y2gpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zXG4gIH1cblxuICAvLyBXcmFwIHdpdGggc2FmZSBtYXRjaGVyIHRvIGhhbmRsZSBwYXJhbWV0ZXIgY2xlYW5pbmdcbiAgcmV0dXJuIHNhZmVSb3V0ZU1hdGNoZXIocmF3TWF0Y2hlcilcbn1cbiJdLCJuYW1lcyI6WyJnZXRSb3V0ZU1hdGNoZXIiLCJyZSIsImdyb3VwcyIsInJhd01hdGNoZXIiLCJwYXRobmFtZSIsInJvdXRlTWF0Y2giLCJleGVjIiwiZGVjb2RlIiwicGFyYW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJEZWNvZGVFcnJvciIsInBhcmFtcyIsImtleSIsImdyb3VwIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hdGNoIiwicG9zIiwidW5kZWZpbmVkIiwicmVwZWF0Iiwic3BsaXQiLCJtYXAiLCJlbnRyeSIsInNhZmVSb3V0ZU1hdGNoZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/route-regex.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getNamedMiddlewareRegex: function() {\n return getNamedMiddlewareRegex;\n },\n getNamedRouteRegex: function() {\n return getNamedRouteRegex;\n },\n getRouteRegex: function() {\n return getRouteRegex;\n }\n});\nconst _constants = __webpack_require__(/*! ../../../../lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\nconst _interceptionroutes = __webpack_require__(/*! ./interception-routes */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nconst _escaperegexp = __webpack_require__(/*! ../../escape-regexp */ \"(rsc)/./node_modules/next/dist/shared/lib/escape-regexp.js\");\nconst _removetrailingslash = __webpack_require__(/*! ./remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _getdynamicparam = __webpack_require__(/*! ./get-dynamic-param */ \"(rsc)/./node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js\");\nfunction getParametrizedRoute(route, includeSuffix, includePrefix) {\n const groups = {};\n let groupIndex = 1;\n const segments = [];\n for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')){\n const markerMatch = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters\n ;\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n segments.push(\"/\" + (0, _escaperegexp.escapeStringRegexp)(markerMatch) + \"([^/]+?)\");\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n if (includePrefix && paramMatches[1]) {\n segments.push(\"/\" + (0, _escaperegexp.escapeStringRegexp)(paramMatches[1]));\n }\n let s = repeat ? optional ? '(?:/(.+?))?' : '/(.+?)' : '/([^/]+?)';\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1);\n }\n segments.push(s);\n } else {\n segments.push(\"/\" + (0, _escaperegexp.escapeStringRegexp)(segment));\n }\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push((0, _escaperegexp.escapeStringRegexp)(paramMatches[3]));\n }\n }\n return {\n parameterizedRoute: segments.join(''),\n groups\n };\n}\nfunction getRouteRegex(normalizedRoute, param) {\n let { includeSuffix = false, includePrefix = false, excludeOptionalTrailingSlash = false } = param === void 0 ? {} : param;\n const { parameterizedRoute, groups } = getParametrizedRoute(normalizedRoute, includeSuffix, includePrefix);\n let re = parameterizedRoute;\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?';\n }\n return {\n re: new RegExp(\"^\" + re + \"$\"),\n groups: groups\n };\n}\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */ function buildGetSafeRouteKey() {\n let i = 0;\n return ()=>{\n let routeKey = '';\n let j = ++i;\n while(j > 0){\n routeKey += String.fromCharCode(97 + (j - 1) % 26);\n j = Math.floor((j - 1) / 26);\n }\n return routeKey;\n };\n}\nfunction getSafeKeyFromSegment(param) {\n let { interceptionMarker, getSafeRouteKey, segment, routeKeys, keyPrefix, backreferenceDuplicateKeys } = param;\n const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(segment);\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '');\n if (keyPrefix) {\n cleanedKey = \"\" + keyPrefix + cleanedKey;\n }\n let invalidKey = false;\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true;\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true;\n }\n if (invalidKey) {\n cleanedKey = getSafeRouteKey();\n }\n const duplicateKey = cleanedKey in routeKeys;\n if (keyPrefix) {\n routeKeys[cleanedKey] = \"\" + keyPrefix + key;\n } else {\n routeKeys[cleanedKey] = key;\n }\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker ? (0, _escaperegexp.escapeStringRegexp)(interceptionMarker) : '';\n let pattern;\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = \"\\\\k<\" + cleanedKey + \">\";\n } else if (repeat) {\n pattern = \"(?<\" + cleanedKey + \">.+?)\";\n } else {\n pattern = \"(?<\" + cleanedKey + \">[^/]+?)\";\n }\n return optional ? \"(?:/\" + interceptionPrefix + pattern + \")?\" : \"/\" + interceptionPrefix + pattern;\n}\nfunction getNamedParametrizedRoute(route, prefixRouteKeys, includeSuffix, includePrefix, backreferenceDuplicateKeys) {\n const getSafeRouteKey = buildGetSafeRouteKey();\n const routeKeys = {};\n const segments = [];\n for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')){\n const hasInterceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m));\n const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters\n ;\n if (hasInterceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n segments.push(getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: paramMatches[1],\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys ? _constants.NEXT_INTERCEPTION_MARKER_PREFIX : undefined,\n backreferenceDuplicateKeys\n }));\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(\"/\" + (0, _escaperegexp.escapeStringRegexp)(paramMatches[1]));\n }\n let s = getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys ? _constants.NEXT_QUERY_PARAM_PREFIX : undefined,\n backreferenceDuplicateKeys\n });\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1);\n }\n segments.push(s);\n } else {\n segments.push(\"/\" + (0, _escaperegexp.escapeStringRegexp)(segment));\n }\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push((0, _escaperegexp.escapeStringRegexp)(paramMatches[3]));\n }\n }\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys\n };\n}\nfunction getNamedRouteRegex(normalizedRoute, options) {\n var _options_includeSuffix, _options_includePrefix, _options_backreferenceDuplicateKeys;\n const result = getNamedParametrizedRoute(normalizedRoute, options.prefixRouteKeys, (_options_includeSuffix = options.includeSuffix) != null ? _options_includeSuffix : false, (_options_includePrefix = options.includePrefix) != null ? _options_includePrefix : false, (_options_backreferenceDuplicateKeys = options.backreferenceDuplicateKeys) != null ? _options_backreferenceDuplicateKeys : false);\n let namedRegex = result.namedParameterizedRoute;\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?';\n }\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: \"^\" + namedRegex + \"$\",\n routeKeys: result.routeKeys\n };\n}\nfunction getNamedMiddlewareRegex(normalizedRoute, options) {\n const { parameterizedRoute } = getParametrizedRoute(normalizedRoute, false, false);\n const { catchAll = true } = options;\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : '';\n return {\n namedRegex: \"^/\" + catchAllRegex + \"$\"\n };\n }\n const { namedParameterizedRoute } = getNamedParametrizedRoute(normalizedRoute, false, false, false, false);\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : '';\n return {\n namedRegex: \"^\" + namedParameterizedRoute + catchAllGroupedRegex + \"$\"\n };\n} //# sourceMappingURL=route-regex.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLXJlZ2V4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWlXZ0JBLHVCQUF1QjtlQUF2QkE7O0lBNUJBQyxrQkFBa0I7ZUFBbEJBOztJQTdMQUMsYUFBYTtlQUFiQTs7O3VDQXJJVDtnREFDb0M7MENBQ1I7aURBQ0M7NkNBQ3FCO0FBeUV6RCxTQUFTQyxxQkFDUEMsS0FBYSxFQUNiQyxhQUFzQixFQUN0QkMsYUFBc0I7SUFFdEIsTUFBTUMsU0FBeUMsQ0FBQztJQUNoRCxJQUFJQyxhQUFhO0lBRWpCLE1BQU1DLFdBQXFCLEVBQUU7SUFDN0IsS0FBSyxNQUFNQyxXQUFXQyxDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CUCxPQUFPUSxLQUFLLENBQUMsR0FBR0MsS0FBSyxDQUFDLEtBQU07UUFDcEUsTUFBTUMsY0FBY0Msb0JBQUFBLDBCQUEwQixDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsSUFDbkRQLFFBQVFRLFVBQVUsQ0FBQ0Q7UUFFckIsTUFBTUUsZUFBZVQsUUFBUVUsS0FBSyxDQUFDQyxpQkFBQUEsaUJBQWlCLEVBQUUsdUJBQXVCOztRQUU3RSxJQUFJUCxlQUFlSyxnQkFBZ0JBLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDbEQsTUFBTSxFQUFFRyxHQUFHLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLENBQUFBLEdBQUFBLGlCQUFBQSxxQkFBQUEsRUFBc0JOLFlBQVksQ0FBQyxFQUFFO1lBQ3ZFWixNQUFNLENBQUNlLElBQUksR0FBRztnQkFBRUksS0FBS2xCO2dCQUFjZ0I7Z0JBQVFEO1lBQVM7WUFDcERkLFNBQVNrQixJQUFJLENBQUUsTUFBR0MsQ0FBQUEsR0FBQUEsY0FBQUEsa0JBQUFBLEVBQW1CZCxlQUFhO1FBQ3BELE9BQU8sSUFBSUssZ0JBQWdCQSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzFDLE1BQU0sRUFBRUcs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QUF1QixFQUN2Qm1DLE9BQWtDO1FBS2hDQSx3QkFDQUEsd0JBQ0FBO0lBTEYsTUFBTUMsU0FBU1QsMEJBQ2IzQixpQkFDQW1DLFFBQVFQLGVBQWUsRUFDdkJPLENBQUFBLHlCQUFBQSxRQUFRL0QsYUFBQUEsS0FBYSxPQUFyQitELHlCQUF5QixPQUN6QkEsQ0FBQUEseUJBQUFBLFFBQVE5RCxhQUFBQSxLQUFhLE9BQXJCOEQseUJBQXlCLE9BQ3pCQSxDQUFBQSxzQ0FBQUEsUUFBUWxCLDBCQUFBQSxLQUEwQixPQUFsQ2tCLHNDQUFzQztJQUd4QyxJQUFJRSxhQUFhRCxPQUFPRix1QkFBdUI7SUFDL0MsSUFBSSxDQUFDQyxRQUFRbEMsNEJBQTRCLEVBQUU7UUFDekNvQyxjQUFjO0lBQ2hCO0lBRUEsT0FBTztRQUNMLEdBQUdwRSxjQUFjK0IsaUJBQWlCbUMsUUFBUTtRQUMxQ0UsWUFBYSxNQUFHQSxhQUFXO1FBQzNCdEIsV0FBV3FCLE9BQU9yQixTQUFTO0lBQzdCO0FBQ0Y7QUFNTyxTQUFTaEQsd0JBQ2RpQyxlQUF1QixFQUN2Qm1DLE9BRUM7SUFFRCxNQUFNLEVBQUVyQyxrQkFBa0IsRUFBRSxHQUFHNUIscUJBQzdCOEIsaUJBQ0EsT0FDQTtJQUVGLE1BQU0sRUFBRXNDLFdBQVcsSUFBSSxFQUFFLEdBQUdIO0lBQzVCLElBQUlyQyx1QkFBdUIsS0FBSztRQUM5QixJQUFJeUMsZ0JBQWdCRCxXQUFXLE9BQU87UUFDdEMsT0FBTztZQUNMRCxZQUFhLE9BQUlFLGdCQUFjO1FBQ2pDO0lBQ0Y7SUFFQSxNQUFNLEVBQUVMLHVCQUF1QixFQUFFLEdBQUdQLDBCQUNsQzNCLGlCQUNBLE9BQ0EsT0FDQSxPQUNBO0lBRUYsSUFBSXdDLHVCQUF1QkYsV0FBVyxlQUFlO0lBQ3JELE9BQU87UUFDTEQsWUFBYSxNQUFHSCwwQkFBMEJNLHVCQUFxQjtJQUNqRTtBQUNGIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xccm91dGUtcmVnZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCxcbiAgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVgsXG59IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9jb25zdGFudHMnXG5pbXBvcnQgeyBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyB9IGZyb20gJy4vaW50ZXJjZXB0aW9uLXJvdXRlcydcbmltcG9ydCB7IGVzY2FwZVN0cmluZ1JlZ2V4cCB9IGZyb20gJy4uLy4uL2VzY2FwZS1yZWdleHAnXG5pbXBvcnQgeyByZW1vdmVUcmFpbGluZ1NsYXNoIH0gZnJvbSAnLi9yZW1vdmUtdHJhaWxpbmctc2xhc2gnXG5pbXBvcnQgeyBQQVJBTUVURVJfUEFUVEVSTiwgcGFyc2VNYXRjaGVkUGFyYW1ldGVyIH0gZnJvbSAnLi9nZXQtZHluYW1pYy1wYXJhbSdcblxuZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gIHBvczogbnVtYmVyXG4gIHJlcGVhdDogYm9vbGVhblxuICBvcHRpb25hbDogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUmVnZXgge1xuICBncm91cHM6IHsgW2dyb3VwTmFtZTogc3RyaW5nXTogR3JvdXAgfVxuICByZTogUmVnRXhwXG59XG5cbnR5cGUgR2V0TmFtZWRSb3V0ZVJlZ2V4T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlZml4IHRoZSByb3V0ZSBrZXlzIHdpdGggdGhlIE5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVhcbiAgICogb3IgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVguIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIGNyZWF0aW5nIHRoZVxuICAgKiByb3V0ZXMtbWFuaWZlc3QgZHVyaW5nIHRoZSBidWlsZC5cbiAgICovXG4gIHByZWZpeFJvdXRlS2V5czogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIHN1ZmZpeCBpbiB0aGUgcm91dGUgcmVnZXguIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHlvdVxuICAgKiBoYXZlIHNvbWV0aGluZyBsaWtlIGAvWy4uLnNsdWddLmpzb25gIHRoZSBgLmpzb25gIHBhcnQgd2lsbCBiZSBpbmNsdWRlZFxuICAgKiBpbiB0aGUgcmVnZXgsIHlpZWxkaW5nIGAvKC4qKS5qc29uYCBhcyB0aGUgcmVnZXguXG4gICAqL1xuICBpbmNsdWRlU3VmZml4PzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIHByZWZpeCBpbiB0aGUgcm91dGUgcmVnZXguIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHlvdVxuICAgKiBoYXZlIHNvbWV0aGluZyBsaWtlIGAvWy4uLnNsdWddLmpzb25gIHRoZSBgL2AgcGFydCB3aWxsIGJlIGluY2x1ZGVkXG4gICAqIGluIHRoZSByZWdleCwgeWllbGRpbmcgYF4vKC4qKS5qc29uJGAgYXMgdGhlIHJlZ2V4LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaW50ZXJjZXB0aW9uIG1hcmtlcnMgd2lsbCBhbHJlYWR5IGJlIGluY2x1ZGVkIHdpdGhvdXQgdGhlIG5lZWRcbiAgICovXG4gIGluY2x1ZGVQcmVmaXg/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZXhjbHVkZSB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgcm91dGUgcmVnZXguXG4gICAqL1xuICBleGNsdWRlT3B0aW9uYWxUcmFpbGluZ1NsYXNoPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJhY2t0cmFjayBkdXBsaWNhdGUga2V5cy4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gY3JlYXRpbmdcbiAgICogdGhlIHJvdXRlcy1tYW5pZmVzdCBkdXJpbmcgdGhlIGJ1aWxkLlxuICAgKi9cbiAgYmFja3JlZmVyZW5jZUR1cGxpY2F0ZUtleXM/OiBib29sZWFuXG59XG5cbnR5cGUgR2V0Um91dGVSZWdleE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgZXh0cmEgcGFydHMgaW4gdGhlIHJvdXRlIHJlZ2V4LiBUaGlzIG1lYW5zIHRoYXQgd2hlbiB5b3VcbiAgICogaGF2ZSBzb21ldGhpbmcgbGlrZSBgL1suLi5zbHVnXS5qc29uYCB0aGUgYC5qc29uYCBwYXJ0IHdpbGwgYmUgaW5jbHVkZWRcbiAgICogaW4gdGhlIHJlZ2V4LCB5aWVsZGluZyBgLyguKikuanNvbmAgYXMgdGhlIHJlZ2V4LlxuICAgKi9cbiAgaW5jbHVkZVN1ZmZpeD86IGJvb2xlYW5cblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBwcmVmaXggaW4gdGhlIHJvdXRlIHJlZ2V4LiBUaGlzIG1lYW5zIHRoYXQgd2hlbiB5b3VcbiAgICogaGF2ZSBzb21ldGhpbmcgbGlrZSBgL1suLi5zbHVnXS5qc29uYCB0aGUgYC9gIHBhcnQgd2lsbCBiZSBpbmNsdWRlZFxuICAgKiBpbiB0aGUgcmVnZXgsIHlpZWxkaW5nIGBeLyguKikuanNvbiRgIGFzIHRoZSByZWdleC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGludGVyY2VwdGlvbiBtYXJrZXJzIHdpbGwgYWxyZWFkeSBiZSBpbmNsdWRlZCB3aXRob3V0IHRoZSBuZWVkXG4gICAqIG9mIGFkZGluZyB0aGlzIG9wdGlvbi5cbiAgICovXG4gIGluY2x1ZGVQcmVmaXg/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZXhjbHVkZSB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgcm91dGUgcmVnZXguXG4gICAqL1xuICBleGNsdWRlT3B0aW9uYWxUcmFpbGluZ1NsYXNoPzogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBnZXRQYXJhbWV0cml6ZWRSb3V0ZShcbiAgcm91dGU6IHN0cmluZyxcbiAgaW5jbHVkZVN1ZmZpeDogYm9vbGVhbixcbiAgaW5jbHVkZVByZWZpeDogYm9vbGVhblxuKSB7XG4gIGNvbnN0IGdyb3VwczogeyBbZ3JvdXBOYW1lOiBzdHJpbmddOiBHcm91cCB9ID0ge31cbiAgbGV0IGdyb3VwSW5kZXggPSAxXG5cbiAgY29uc3Qgc2VnbWVudHM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHJlbW92ZVRyYWlsaW5nU2xhc2gocm91dGUpLnNsaWNlKDEpLnNwbGl0KCcvJykpIHtcbiAgICBjb25zdCBtYXJrZXJNYXRjaCA9IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLmZpbmQoKG0pID0+XG4gICAgICBzZWdtZW50LnN0YXJ0c1dpdGgobSlcbiAgICApXG4gICAgY29uc3QgcGFyYW1NYXRjaGVzID0gc2VnbWVudC5tYXRjaChQQVJBTUVURVJfUEFUVEVSTikgLy8gQ2hlY2sgZm9yIHBhcmFtZXRlcnNcblxuICAgIGlmIChtYXJrZXJNYXRjaCAmJiBwYXJhbU1hdGNoZXMgJiYgcGFyYW1NYXRjaGVzWzJdKSB7XG4gICAgICBjb25zdCB7IGtleSwgb3B0aW9uYWwsIHJlcGVhdCB9ID0gcGFyc2VNYXRjaGVkUGFyYW1ldGVyKHBhcmFtTWF0Y2hlc1syXSlcbiAgICAgIGdyb3Vwc1trZXldID0geyBwb3M6IGdyb3VwSW5kZXgrKywgcmVwZWF0LCBvcHRpb25hbCB9XG4gICAgICBzZWdtZW50cy5wdXNoKGAvJHtlc2NhcGVTdHJpbmdSZWdleHAobWFya2VyTWF0Y2gpfShbXi9dKz8pYClcbiAgICB9IGVsc2UgaWYgKHBhcmFtTWF0Y2hlcyAmJiBwYXJhbU1hdGNoZXNbMl0pIHtcbiAgICAgIGNvbnN0IHsga2V5LCByZXBlYXQsIG9wdGlvbmFsIH0gPSBwYXJzZU1hdGNoZWRQYXJhbWV0ZXIocGFyYW1NYXRjaGVzWzJdKVxuICAgICAgZ3JvdXBzW2tleV0gPSB7IHBvczogZ3JvdXBJbmRleCsrLCByZXBlYXQsIG9wdGlvbmFsIH1cblxuICAgICAgaWYgKGluY2x1ZGVQcmVmaXggJiYgcGFyYW1NYXRjaGVzWzFdKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goYC8ke2VzY2FwZVN0cmluZ1JlZ2V4cChwYXJhbU1hdGNoZXNbMV0pfWApXG4gICAgICB9XG5cbiAgICAgIGxldCBzID0gcmVwZWF0ID8gKG9wdGlvbmFsID8gJyg/Oi8oLis/KSk/JyA6ICcvKC4rPyknKSA6ICcvKFteL10rPyknXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgbGVhZGluZyBzbGFzaCBpZiBpbmNsdWRlUHJlZml4IGFscmVhZHkgYWRkZWQgaXQuXG4gICAgICBpZiAoaW5jbHVkZVByZWZpeCAmJiBwYXJhbU1hdGNoZXNbMV0pIHtcbiAgICAgICAgcyA9IHMuc3Vic3RyaW5nKDEpXG4gICAgICB9XG5cbiAgICAgIHNlZ21lbnRzLnB1c2gocylcbiAgICB9IGVsc2Uge1xuICAgICAgc2VnbWVudHMucHVzaChgLyR7ZXNjYXBlU3RyaW5nUmVnZXhwKHNlZ21lbnQpfWApXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUncyBhIHN1ZmZpeCwgYWRkIGl0IHRvIHRoZSBzZWdtZW50cyBpZiBpdCdzIGVuYWJsZWQuXG4gICAgaWYgKGluY2x1ZGVTdWZmaXggJiYgcGFyYW1NYXRjaGVzICYmIHBhcmFtTWF0Y2hlc1szXSkge1xuICAgICAgc2VnbWVudHMucHVzaChlc2NhcGVTdHJpbmdSZWdleHAocGFyYW1NYXRjaGVzWzNdKSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcml6ZWRSb3V0ZTogc2VnbWVudHMuam9pbignJyksXG4gICAgZ3JvdXBzLFxuICB9XG59XG5cbi8qKlxuICogRnJvbSBhIG5vcm1hbGl6ZWQgcm91dGUgdGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kXG4gKiBhIGNvcnJlc3BvbmRpbmcgZ3JvdXBzIG9iamVjdCBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHN0b3JlIG1hdGNoaW5nIGdyb3Vwc1xuICogZnJvbSB0aGUgcmVndWxhciBleHByZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVSZWdleChcbiAgbm9ybWFsaXplZFJvdXRlOiBzdHJpbmcsXG4gIHtcbiAgICBpbmNsdWRlU3VmZml4ID0gZmFsc2UsXG4gICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLFxuICAgIGV4Y2x1ZGVPcHRpb25hbFRyYWlsaW5nU2xhc2ggPSBmYWxzZSxcbiAgfTogR2V0Um91dGVSZWdleE9wdGlvbnMgPSB7fVxuKTogUm91dGVSZWdleCB7XG4gIGNvbnN0IHsgcGFyYW1ldGVyaXplZFJvdXRlLCBncm91cHMgfSA9IGdldFBhcmFtZXRyaXplZFJvdXRlKFxuICAgIG5vcm1hbGl6ZWRSb3V0ZSxcbiAgICBpbmNsdWRlU3VmZml4LFxuICAgIGluY2x1ZGVQcmVmaXhcbiAgKVxuXG4gIGxldCByZSA9IHBhcmFtZXRlcml6ZWRSb3V0ZVxuICBpZiAoIWV4Y2x1ZGVPcHRpb25hbFRyYWlsaW5nU2xhc2gpIHtcbiAgICByZSArPSAnKD86Lyk/J1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZTogbmV3IFJlZ0V4cChgXiR7cmV9JGApLFxuICAgIGdyb3VwczogZ3JvdXBzLFxuICB9XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBtaW5pbWFsIHJvdXRlS2V5IHVzaW5nIG9ubHkgYS16IGFuZCBtaW5pbWFsXG4gKiBudW1iZXIgb2YgY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRHZXRTYWZlUm91dGVLZXkoKSB7XG4gIGxldCBpID0gMFxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgbGV0IHJvdXRlS2V5ID0gJydcbiAgICBsZXQgaiA9ICsraVxuICAgIHdoaWxlIChqID4gMCkge1xuICAgICAgcm91dGVLZXkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg5NyArICgoaiAtIDEpICUgMjYpKVxuICAgICAgaiA9IE1hdGguZmxvb3IoKGogLSAxKSAvIDI2KVxuICAgIH1cbiAgICByZXR1cm4gcm91dGVLZXlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTYWZlS2V5RnJvbVNlZ21lbnQoe1xuICBpbnRlcmNlcHRpb25NYXJrZXIsXG4gIGdldFNhZmVSb3V0ZUtleSxcbiAgc2VnbWVudCxcbiAgcm91dGVLZXlzLFxuICBrZXlQcmVmaXgsXG4gIGJhY2tyZWZlcmVuY2VEdXBsaWNhdGVLZXlzLFxufToge1xuICBpbnRlcmNlcHRpb25NYXJrZXI/OiBzdHJpbmdcbiAgZ2V0U2FmZVJvdXRlS2V5OiAoKSA9PiBzdHJpbmdcbiAgc2VnbWVudDogc3RyaW5nXG4gIHJvdXRlS2V5czogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBrZXlQcmVmaXg/OiBzdHJpbmdcbiAgYmFja3JlZmVyZW5jZUR1cGxpY2F0ZUtleXM6IGJvb2xlYW5cbn0pIHtcbiAgY29uc3QgeyBrZXksIG9wdGlvbmFsLCByZXBlYXQgfSA9IHBhcnNlTWF0Y2hlZFBhcmFtZXRlcihzZWdtZW50KVxuXG4gIC8vIHJlcGxhY2UgYW55IG5vbi13b3JkIGNoYXJhY3RlcnMgc2luY2UgdGhleSBjYW4gYnJlYWtcbiAgLy8gdGhlIG5hbWVkIHJlZ2V4XG4gIGxldCBjbGVhbmVkS2V5ID0ga2V5LnJlcGxhY2UoL1xcVy9nLCAnJylcblxuICBpZiAoa2V5UHJlZml4KSB7XG4gICAgY2xlYW5lZEtleSA9IGAke2tleVByZWZpeH0ke2NsZWFuZWRLZXl9YFxuICB9XG4gIGxldCBpbnZhbGlkS2V5ID0gZmFsc2VcblxuICAvLyBjaGVjayBpZiB0aGUga2V5IGlzIHN0aWxsIGludmFsaWQgYW5kIGZhbGxiYWNrIHRvIHVzaW5nIGEga25vd25cbiAgLy8gc2FmZSBrZXlcbiAgaWYgKGNsZWFuZWRLZXkubGVuZ3RoID09PSAwIHx8IGNsZWFuZWRLZXkubGVuZ3RoID4gMzApIHtcbiAgICBpbnZhbGlkS2V5ID0gdHJ1ZVxuICB9XG4gIGlmICghaXNOYU4ocGFyc2VJbnQoY2xlYW5lZEtleS5zbGljZSgwLCAxKSkpKSB7XG4gICAgaW52YWxpZEtleSA9IHRydWVcbiAgfVxuXG4gIGlmIChpbnZhbGlkS2V5KSB7XG4gICAgY2xlYW5lZEtleSA9IGdldFNhZmVSb3V0ZUtleSgpXG4gIH1cblxuICBjb25zdCBkdXBsaWNhdGVLZXkgPSBjbGVhbmVkS2V5IGluIHJvdXRlS2V5c1xuXG4gIGlmIChrZXlQcmVmaXgpIHtcbiAgICByb3V0ZUtleXNbY2xlYW5lZEtleV0gPSBgJHtrZXlQcmVmaXh9JHtrZXl9YFxuICB9IGVsc2Uge1xuICAgIHJvdXRlS2V5c1tjbGVhbmVkS2V5XSA9IGtleVxuICB9XG5cbiAgLy8gaWYgdGhlIHNlZ21lbnQgaGFzIGFuIGludGVyY2VwdGlvbiBtYXJrZXIsIG1ha2Ugc3VyZSB0aGF0J3MgcGFydCBvZiB0aGUgcmVnZXggcGF0dGVyblxuICAvLyB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSByb3V0ZSB3aXRoIHRoZSBpbnRlcmNlcHRpb24gbWFya2VyIGRvZXNuJ3QgaW5jb3JyZWN0bHkgbWF0Y2hcbiAgLy8gdGhlIG5vbi1pbnRlcmNlcHRlZCByb3V0ZSAoaWUgL2FwcC8oLilbdXNlcm5hbWVdIHNob3VsZCBub3QgbWF0Y2ggL2FwcC9bdXNlcm5hbWVdKVxuICBjb25zdCBpbnRlcmNlcHRpb25QcmVmaXggPSBpbnRlcmNlcHRpb25NYXJrZXJcbiAgICA/IGVzY2FwZVN0cmluZ1JlZ2V4cChpbnRlcmNlcHRpb25NYXJrZXIpXG4gICAgOiAnJ1xuXG4gIGxldCBwYXR0ZXJuOiBzdHJpbmdcbiAgaWYgKGR1cGxpY2F0ZUtleSAmJiBiYWNrcmVmZXJlbmNlRHVwbGljYXRlS2V5cykge1xuICAgIC8vIFVzZSBhIGJhY2tyZWZlcmVuY2UgdG8gdGhlIGtleSB0byBlbnN1cmUgdGhhdCB0aGUga2V5IGlzIHRoZSBzYW1lIHZhbHVlXG4gICAgLy8gaW4gZWFjaCBvZiB0aGUgcGxhY2Vob2xkZXJzLlxuICAgIHBhdHRlcm4gPSBgXFxcXGs8JHtjbGVhbmVkS2V5fT5gXG4gIH0gZWxzZSBpZiAocmVwZWF0KSB7XG4gICAgcGF0dGVybiA9IGAoPzwke2NsZWFuZWRLZXl9Pi4rPylgXG4gIH0gZWxzZSB7XG4gICAgcGF0dGVybiA9IGAoPzwke2NsZWFuZWRLZXl9PlteL10rPylgXG4gIH1cblxuICByZXR1cm4gb3B0aW9uYWxcbiAgICA/IGAoPzovJHtpbnRlcmNlcHRpb25QcmVmaXh9JHtwYXR0ZXJufSk/YFxuICAgIDogYC8ke2ludGVyY2VwdGlvblByZWZpeH0ke3BhdHRlcm59YFxufVxuXG5mdW5jdGlvbiBnZXROYW1lZFBhcmFtZXRyaXplZFJvdXRlKFxuICByb3V0ZTogc3RyaW5nLFxuICBwcmVmaXhSb3V0ZUtleXM6IGJvb2xlYW4sXG4gIGluY2x1ZGVTdWZmaXg6IGJvb2xlYW4sXG4gIGluY2x1ZGVQcmVmaXg6IGJvb2xlYW4sXG4gIGJhY2tyZWZlcmVuY2VEdXBsaWNhdGVLZXlzOiBib29sZWFuXG4pIHtcbiAgY29uc3QgZ2V0U2FmZVJvdXRlS2V5ID0gYnVpbGRHZXRTYWZlUm91dGVLZXkoKVxuICBjb25zdCByb3V0ZUtleXM6IHsgW25hbWVkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9XG5cbiAgY29uc3Qgc2VnbWVudHM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIHJlbW92ZVRyYWlsaW5nU2xhc2gocm91dGUpLnNsaWNlKDEpLnNwbGl0KCcvJykpIHtcbiAgICBjb25zdCBoYXNJbnRlcmNlcHRpb25NYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5zb21lKChtKSA9PlxuICAgICAgc2VnbWVudC5zdGFydHNXaXRoKG0pXG4gICAgKVxuXG4gICAgY29uc3QgcGFyYW1NYXRjaGVzID0gc2VnbWVudC5tYXRjaChQQVJBTUVURVJfUEFUVEVSTikgLy8gQ2hlY2sgZm9yIHBhcmFtZXRlcnNcblxuICAgIGlmIChoYXNJbnRlcmNlcHRpb25NYXJrZXIgJiYgcGFyYW1NYXRjaGVzICYmIHBhcmFtTWF0Y2hlc1syXSkge1xuICAgICAgLy8gSWYgdGhlcmUncyBhbiBpbnRlcmNlcHRpb24gbWFya2VyLCBhZGQgaXQgdG8gdGhlIHNlZ21lbnRzLlxuICAgICAgc2VnbWVudHMucHVzaChcbiAgICAgICAgZ2V0U2FmZUtleUZyb21TZWdtZW50KHtcbiAgICAgICAgICBnZXRTYWZlUm91dGVLZXksXG4gICAgICAgICAgaW50ZXJjZXB0aW9uTWFya2VyOiBwYXJhbU1hdGNoZXNbMV0sXG4gICAgICAgICAgc2VnbWVudDogcGFyYW1NYXRjaGVzWzJdLFxuICAgICAgICAgIHJvdXRlS2V5cyxcbiAgICAgICAgICBrZXlQcmVmaXg6IHByZWZpeFJvdXRlS2V5c1xuICAgICAgICAgICAgPyBORVhUX0lOVEVSQ0VQVElPTl9NQVJLRVJfUFJFRklYXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBiYWNrcmVmZXJlbmNlRHVwbGljYXRlS2V5cyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKHBhcmFtTWF0Y2hlcyAmJiBwYXJhbU1hdGNoZXNbMl0pIHtcbiAgICAgIC8vIElmIHRoZXJlJ3MgYSBwcmVmaXgsIGFkZCBpdCB0byB0aGUgc2VnbWVudHMgaWYgaXQncyBlbmFibGVkLlxuICAgICAgaWYgKGluY2x1ZGVQcmVmaXggJiYgcGFyYW1NYXRjaGVzWzFdKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goYC8ke2VzY2FwZVN0cmluZ1JlZ2V4cChwYXJhbU1hdGNoZXNbMV0pfWApXG4gICAgICB9XG5cbiAgICAgIGxldCBzID0gZ2V0U2FmZUtleUZyb21TZWdtZW50KHtcbiAgICAgICAgZ2V0U2FmZVJvdXRlS2V5LFxuICAgICAgICBzZWdtZW50OiBwYXJhbU1hdGNoZXNbMl0sXG4gICAgICAgIHJvdXRlS2V5cyxcbiAgICAgICAga2V5UHJlZml4OiBwcmVmaXhSb3V0ZUtleXMgPyBORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCA6IHVuZGVmaW5lZCxcbiAgICAgICAgYmFja3JlZmVyZW5jZUR1cGxpY2F0ZUtleXMsXG4gICAgICB9KVxuXG4gICAgICAvLyBSZW1vdmUgdGhlIGxlYWRpbmcgc2xhc2ggaWYgaW5jbHVkZVByZWZpeCBhbHJlYWR5IGFkZGVkIGl0LlxuICAgICAgaWYgKGluY2x1ZGVQcmVmaXggJiYgcGFyYW1NYXRjaGVzWzFdKSB7XG4gICAgICAgIHMgPSBzLnN1YnN0cmluZygxKVxuICAgICAgfVxuXG4gICAgICBzZWdtZW50cy5wdXNoKHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goYC8ke2VzY2FwZVN0cmluZ1JlZ2V4cChzZWdtZW50KX1gKVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlJ3MgYSBzdWZmaXgsIGFkZCBpdCB0byB0aGUgc2VnbWVudHMgaWYgaXQncyBlbmFibGVkLlxuICAgIGlmIChpbmNsdWRlU3VmZml4ICYmIHBhcmFtTWF0Y2hlcyAmJiBwYXJhbU1hdGNoZXNbM10pIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goZXNjYXBlU3RyaW5nUmVnZXhwKHBhcmFtTWF0Y2hlc1szXSkpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lZFBhcmFtZXRlcml6ZWRSb3V0ZTogc2VnbWVudHMuam9pbignJyksXG4gICAgcm91dGVLZXlzLFxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBleHRlbmRzIGBnZXRSb3V0ZVJlZ2V4YCBnZW5lcmF0aW5nIGFsc28gYSBuYW1lZCByZWdleHAgd2hlcmVcbiAqIGVhY2ggZ3JvdXAgaXMgbmFtZWQgYWxvbmcgd2l0aCBhIHJvdXRlS2V5cyBvYmplY3QgdGhhdCBpbmRleGVzIHRoZSBhc3NpZ25lZFxuICogbmFtZWQgZ3JvdXAgd2l0aCBpdHMgY29ycmVzcG9uZGluZyBrZXkuIFdoZW4gdGhlIHJvdXRlS2V5cyBuZWVkIHRvIGJlXG4gKiBwcmVmaXhlZCB0byB1bmlxdWVseSBpZGVudGlmeSBpbnRlcm5hbGx5IHRoZSBcInByZWZpeFJvdXRlS2V5XCIgYXJnIHNob3VsZFxuICogYmUgXCJ0cnVlXCIgY3VycmVudGx5IHRoaXMgaXMgb25seSB0aGUgY2FzZSB3aGVuIGNyZWF0aW5nIHRoZSByb3V0ZXMtbWFuaWZlc3RcbiAqIGR1cmluZyB0aGUgYnVpbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVkUm91dGVSZWdleChcbiAgbm9ybWFsaXplZFJvdXRlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEdldE5hbWVkUm91dGVSZWdleE9wdGlvbnNcbikge1xuICBjb25zdCByZXN1bHQgPSBnZXROYW1lZFBhcmFtZXRyaXplZFJvdXRlKFxuICAgIG5vcm1hbGl6ZWRSb3V0ZSxcbiAgICBvcHRpb25zLnByZWZpeFJvdXRlS2V5cyxcbiAgICBvcHRpb25zLmluY2x1ZGVTdWZmaXggPz8gZmFsc2UsXG4gICAgb3B0aW9ucy5pbmNsdWRlUHJlZml4ID8/IGZhbHNlLFxuICAgIG9wdGlvbnMuYmFja3JlZmVyZW5jZUR1cGxpY2F0ZUtleXMgPz8gZmFsc2VcbiAgKVxuXG4gIGxldCBuYW1lZFJlZ2V4ID0gcmVzdWx0Lm5hbWVkUGFyYW1ldGVyaXplZFJvdXRlXG4gIGlmICghb3B0aW9ucy5leGNsdWRlT3B0aW9uYWxUcmFpbGluZ1NsYXNoKSB7XG4gICAgbmFtZWRSZWdleCArPSAnKD86Lyk/J1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRSb3V0ZVJlZ2V4KG5vcm1hbGl6ZWRSb3V0ZSwgb3B0aW9ucyksXG4gICAgbmFtZWRSZWdleDogYF4ke25hbWVkUmVnZXh9JGAsXG4gICAgcm91dGVLZXlzOiByZXN1bHQucm91dGVLZXlzLFxuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbmFtZWQgcmVnZXhwLlxuICogVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2luZyBmb3IgYnVpbGQgdGltZSBvbmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZWRNaWRkbGV3YXJlUmVnZXgoXG4gIG5vcm1hbGl6ZWRSb3V0ZTogc3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgY2F0Y2hBbGw/OiBib29sZWFuXG4gIH1cbikge1xuICBjb25zdCB7IHBhcmFtZXRlcml6ZWRSb3V0ZSB9ID0gZ2V0UGFyYW1ldHJpemVkUm91dGUoXG4gICAgbm9ybWFsaXplZFJvdXRlLFxuICAgIGZhbHNlLFxuICAgIGZhbHNlXG4gIClcbiAgY29uc3QgeyBjYXRjaEFsbCA9IHRydWUgfSA9IG9wdGlvbnNcbiAgaWYgKHBhcmFtZXRlcml6ZWRSb3V0ZSA9PT0gJy8nKSB7XG4gICAgbGV0IGNhdGNoQWxsUmVnZXggPSBjYXRjaEFsbCA/ICcuKicgOiAnJ1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lZFJlZ2V4OiBgXi8ke2NhdGNoQWxsUmVnZXh9JGAsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgeyBuYW1lZFBhcmFtZXRlcml6ZWRSb3V0ZSB9ID0gZ2V0TmFtZWRQYXJhbWV0cml6ZWRSb3V0ZShcbiAgICBub3JtYWxpemVkUm91dGUsXG4gICAgZmFsc2UsXG4gICAgZmFsc2UsXG4gICAgZmFsc2UsXG4gICAgZmFsc2VcbiAgKVxuICBsZXQgY2F0Y2hBbGxHcm91cGVkUmVnZXggPSBjYXRjaEFsbCA/ICcoPzooLy4qKT8pJyA6ICcnXG4gIHJldHVybiB7XG4gICAgbmFtZWRSZWdleDogYF4ke25hbWVkUGFyYW1ldGVyaXplZFJvdXRlfSR7Y2F0Y2hBbGxHcm91cGVkUmVnZXh9JGAsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJnZXROYW1lZE1pZGRsZXdhcmVSZWdleCIsImdldE5hbWVkUm91dGVSZWdleCIsImdldFJvdXRlUmVnZXgiLCJnZXRQYXJhbWV0cml6ZWRSb3V0ZSIsInJvdXRlIiwiaW5jbHVkZVN1ZmZpeCIsImluY2x1ZGVQcmVmaXgiLCJncm91cHMiLCJncm91cEluZGV4Iiwic2VnbWVudHMiLCJzZWdtZW50IiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsInNsaWNlIiwic3BsaXQiLCJtYXJrZXJNYXRjaCIsIklOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIiwiZmluZCIsIm0iLCJzdGFydHNXaXRoIiwicGFyYW1NYXRjaGVzIiwibWF0Y2giLCJQQVJBTUVURVJfUEFUVEVSTiIsImtleSIsIm9wdGlvbmFsIiwicmVwZWF0IiwicGFyc2VNYXRjaGVkUGFyYW1ldGVyIiwicG9zIiwicHVzaCIsImVzY2FwZVN0cmluZ1JlZ2V4cCIsInMiLCJzdWJzdHJpbmciLCJwYXJhbWV0ZXJpemVkUm91dGUiLCJqb2luIiwibm9ybWFsaXplZFJvdXRlIiwiZXhjbHVkZU9wdGlvbmFsVHJhaWxpbmdTbGFzaCIsInJlIiwiUmVnRXhwIiwiYnVpbGRHZXRTYWZlUm91dGVLZXkiLCJpIiwicm91dGVLZXkiLCJqIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiTWF0aCIsImZsb29yIiwiZ2V0U2FmZUtleUZyb21TZWdtZW50IiwiaW50ZXJjZXB0aW9uTWFya2VyIiwiZ2V0U2FmZVJvdXRlS2V5Iiwicm91dGVLZXlzIiwia2V5UHJlZml4IiwiYmFja3JlZmVyZW5jZUR1cGxpY2F0ZUtleXMiLCJjbGVhbmVkS2V5IiwicmVwbGFjZSIsImludmFsaWRLZXkiLCJsZW5ndGgiLCJpc05hTiIsInBhcnNlSW50IiwiZHVwbGljYXRlS2V5IiwiaW50ZXJjZXB0aW9uUHJlZml4IiwicGF0dGVybiIsImdldE5hbWVkUGFyYW1ldHJpemVkUm91dGUiLCJwcmVmaXhSb3V0ZUtleXMiLCJoYXNJbnRlcmNlcHRpb25NYXJrZXIiLCJzb21lIiwiTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCIsInVuZGVmaW5lZCIsIk5FWFRfUVVFUllfUEFSQU1fUFJFRklYIiwibmFtZWRQYXJhbWV0ZXJpemVkUm91dGUiLCJvcHRpb25zIiwicmVzdWx0IiwibmFtZWRSZWdleCIsImNhdGNoQWxsIiwiY2F0Y2hBbGxSZWdleCIsImNhdGNoQWxsR3JvdXBlZFJlZ2V4Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js ***! \********************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// In output: export mode, the build id is added to the start of the HTML\n// document, directly after the doctype declaration. During a prefetch, the\n// client performs a range request to get the build id, so it can check whether\n// the target page belongs to the same build.\n//\n// The first 64 bytes of the document are requested. The exact number isn't\n// too important; it must be larger than the build id + doctype + closing and\n// ending comment markers, but it doesn't need to match the end of the\n// comment exactly.\n//\n// Build ids are 21 bytes long in the default implementation, though this\n// can be overridden in the Next.js config. For the purposes of this check,\n// it's OK to only match the start of the id, so we'll truncate it if exceeds\n// a certain length.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DOC_PREFETCH_RANGE_HEADER_VALUE: function() {\n return DOC_PREFETCH_RANGE_HEADER_VALUE;\n },\n doesExportedHtmlMatchBuildId: function() {\n return doesExportedHtmlMatchBuildId;\n },\n insertBuildIdComment: function() {\n return insertBuildIdComment;\n }\n});\nconst DOCTYPE_PREFIX = '' // 15 bytes\n;\nconst MAX_BUILD_ID_LENGTH = 24;\nconst DOC_PREFETCH_RANGE_HEADER_VALUE = 'bytes=0-63';\nfunction escapeBuildId(buildId) {\n // If the build id is longer than the given limit, it's OK for our purposes\n // to only match the beginning.\n const truncated = buildId.slice(0, MAX_BUILD_ID_LENGTH);\n // Replace hyphens with underscores so it doesn't break the HTML comment.\n // (Unlikely, but if this did happen it would break the whole document.)\n return truncated.replace(/-/g, '_');\n}\nfunction insertBuildIdComment(originalHtml, buildId) {\n if (buildId.includes('-->') || // React always inserts a doctype at the start of the document. Skip if it\n // isn't present. Shouldn't happen; suggests an issue elsewhere.\n !originalHtml.startsWith(DOCTYPE_PREFIX)) {\n // Return the original HTML unchanged. This means the document will not\n // be prefetched.\n // TODO: The build id comment is currently only used during prefetches, but\n // if we eventually use this mechanism for regular navigations, we may need\n // to error during build if we fail to insert it for some reason.\n return originalHtml;\n }\n // The comment must be inserted after the doctype.\n return originalHtml.replace(DOCTYPE_PREFIX, DOCTYPE_PREFIX + '');\n}\nfunction doesExportedHtmlMatchBuildId(partialHtmlDocument, buildId) {\n // Check whether the document starts with the expected buildId.\n return partialHtmlDocument.startsWith(DOCTYPE_PREFIX + '');\n} //# sourceMappingURL=output-export-prefetch-encoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9vdXRwdXQtZXhwb3J0LXByZWZldGNoLWVuY29kaW5nLmpzIiwibWFwcGluZ3MiOiJBQUFBLHlFQUF5RTtBQUN6RSwyRUFBMkU7QUFDM0UsK0VBQStFO0FBQy9FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSxzRUFBc0U7QUFDdEUsbUJBQW1CO0FBQ25CLEVBQUU7QUFDRix5RUFBeUU7QUFDekUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSxvQkFBb0I7Ozs7Ozs7Ozs7Ozs7SUFNUEEsK0JBQStCO2VBQS9CQTs7SUFpQ0dDLDRCQUE0QjtlQUE1QkE7O0lBdEJBQyxvQkFBb0I7ZUFBcEJBOzs7QUFmaEIsTUFBTUMsaUJBQWlCLGtCQUFrQixXQUFXOztBQUNwRCxNQUFNQyxzQkFBc0I7QUFHckIsTUFBTUosa0NBQWtDO0FBRS9DLFNBQVNLLGNBQWNDLE9BQWU7SUFDcEMsMkVBQTJFO0lBQzNFLCtCQUErQjtJQUMvQixNQUFNQyxZQUFZRCxRQUFRRSxLQUFLLENBQUMsR0FBR0o7SUFDbkMseUVBQXlFO0lBQ3pFLHdFQUF3RTtJQUN4RSxPQUFPRyxVQUFVRSxPQUFPLENBQUMsTUFBTTtBQUNqQztBQUVPLFNBQVNQLHFCQUFxQlEsWUFBb0IsRUFBRUosT0FBZTtJQUN4RSxJQUNFLFFBQ1FLLFFBQVEsQ0FBQyxVQUNqQiwrQkFGMEQsMkNBRWdCO0lBQzFFLGdFQUFnRTtJQUNoRSxDQUFDRCxhQUFhRSxVQUFVLENBQUNULGlCQUN6QjtRQUNBLHVFQUF1RTtRQUN2RSxpQkFBaUI7UUFDakIsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSxpRUFBaUU7UUFDakUsT0FBT087SUFDVDtJQUNBLGtEQUFrRDtJQUNsRCxPQUFPQSxhQUFhRCxPQUFPLENBQ3pCTixnQkFDQUEsaUJBQWlCLFNBQVNFLGNBQWNDLFdBQVc7QUFFdkQ7QUFFTyxTQUFTTCw2QkFDZFksbUJBQTJCLEVBQzNCUCxPQUFlO0lBRWYsK0RBQStEO0lBQy9ELE9BQU9PLG9CQUFvQkQsVUFBVSxDQUNuQ1QsaUJBQWlCLFNBQVNFLGNBQWNDLFdBQVc7QUFFdkQiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxzZWdtZW50LWNhY2hlXFxvdXRwdXQtZXhwb3J0LXByZWZldGNoLWVuY29kaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG91dHB1dDogZXhwb3J0IG1vZGUsIHRoZSBidWlsZCBpZCBpcyBhZGRlZCB0byB0aGUgc3RhcnQgb2YgdGhlIEhUTUxcbi8vIGRvY3VtZW50LCBkaXJlY3RseSBhZnRlciB0aGUgZG9jdHlwZSBkZWNsYXJhdGlvbi4gRHVyaW5nIGEgcHJlZmV0Y2gsIHRoZVxuLy8gY2xpZW50IHBlcmZvcm1zIGEgcmFuZ2UgcmVxdWVzdCB0byBnZXQgdGhlIGJ1aWxkIGlkLCBzbyBpdCBjYW4gY2hlY2sgd2hldGhlclxuLy8gdGhlIHRhcmdldCBwYWdlIGJlbG9uZ3MgdG8gdGhlIHNhbWUgYnVpbGQuXG4vL1xuLy8gVGhlIGZpcnN0IDY0IGJ5dGVzIG9mIHRoZSBkb2N1bWVudCBhcmUgcmVxdWVzdGVkLiBUaGUgZXhhY3QgbnVtYmVyIGlzbid0XG4vLyB0b28gaW1wb3J0YW50OyBpdCBtdXN0IGJlIGxhcmdlciB0aGFuIHRoZSBidWlsZCBpZCArIGRvY3R5cGUgKyBjbG9zaW5nIGFuZFxuLy8gZW5kaW5nIGNvbW1lbnQgbWFya2VycywgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBtYXRjaCB0aGUgZW5kIG9mIHRoZVxuLy8gY29tbWVudCBleGFjdGx5LlxuLy9cbi8vIEJ1aWxkIGlkcyBhcmUgMjEgYnl0ZXMgbG9uZyBpbiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgdGhvdWdoIHRoaXNcbi8vIGNhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBOZXh0LmpzIGNvbmZpZy4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGNoZWNrLFxuLy8gaXQncyBPSyB0byBvbmx5IG1hdGNoIHRoZSBzdGFydCBvZiB0aGUgaWQsIHNvIHdlJ2xsIHRydW5jYXRlIGl0IGlmIGV4Y2VlZHNcbi8vIGEgY2VydGFpbiBsZW5ndGguXG5cbmNvbnN0IERPQ1RZUEVfUFJFRklYID0gJzwhRE9DVFlQRSBodG1sPicgLy8gMTUgYnl0ZXNcbmNvbnN0IE1BWF9CVUlMRF9JRF9MRU5HVEggPSAyNFxuXG4vLyBSZXF1ZXN0IHRoZSBmaXJzdCA2NCBieXRlcy4gVGhlIFJhbmdlIGhlYWRlciBpcyBpbmNsdXNpdmUgb2YgdGhlIGVuZCB2YWx1ZS5cbmV4cG9ydCBjb25zdCBET0NfUFJFRkVUQ0hfUkFOR0VfSEVBREVSX1ZBTFVFID0gJ2J5dGVzPTAtNjMnXG5cbmZ1bmN0aW9uIGVzY2FwZUJ1aWxkSWQoYnVpbGRJZDogc3RyaW5nKSB7XG4gIC8vIElmIHRoZSBidWlsZCBpZCBpcyBsb25nZXIgdGhhbiB0aGUgZ2l2ZW4gbGltaXQsIGl0J3MgT0sgZm9yIG91ciBwdXJwb3Nlc1xuICAvLyB0byBvbmx5IG1hdGNoIHRoZSBiZWdpbm5pbmcuXG4gIGNvbnN0IHRydW5jYXRlZCA9IGJ1aWxkSWQuc2xpY2UoMCwgTUFYX0JVSUxEX0lEX0xFTkdUSClcbiAgLy8gUmVwbGFjZSBoeXBoZW5zIHdpdGggdW5kZXJzY29yZXMgc28gaXQgZG9lc24ndCBicmVhayB0aGUgSFRNTCBjb21tZW50LlxuICAvLyAoVW5saWtlbHksIGJ1dCBpZiB0aGlzIGRpZCBoYXBwZW4gaXQgd291bGQgYnJlYWsgdGhlIHdob2xlIGRvY3VtZW50LilcbiAgcmV0dXJuIHRydW5jYXRlZC5yZXBsYWNlKC8tL2csICdfJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEJ1aWxkSWRDb21tZW50KG9yaWdpbmFsSHRtbDogc3RyaW5nLCBidWlsZElkOiBzdHJpbmcpIHtcbiAgaWYgKFxuICAgIC8vIFNraXAgaWYgdGhlIGJ1aWxkIGlkIGNvbnRhaW5zIGEgY2xvc2luZyBjb21tZW50IG1hcmtlci5cbiAgICBidWlsZElkLmluY2x1ZGVzKCctLT4nKSB8fFxuICAgIC8vIFJlYWN0IGFsd2F5cyBpbnNlcnRzIGEgZG9jdHlwZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGRvY3VtZW50LiBTa2lwIGlmIGl0XG4gICAgLy8gaXNuJ3QgcHJlc2VudC4gU2hvdWxkbid0IGhhcHBlbjsgc3VnZ2VzdHMgYW4gaXNzdWUgZWxzZXdoZXJlLlxuICAgICFvcmlnaW5hbEh0bWwuc3RhcnRzV2l0aChET0NUWVBFX1BSRUZJWClcbiAgKSB7XG4gICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBIVE1MIHVuY2hhbmdlZC4gVGhpcyBtZWFucyB0aGUgZG9jdW1lbnQgd2lsbCBub3RcbiAgICAvLyBiZSBwcmVmZXRjaGVkLlxuICAgIC8vIFRPRE86IFRoZSBidWlsZCBpZCBjb21tZW50IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZHVyaW5nIHByZWZldGNoZXMsIGJ1dFxuICAgIC8vIGlmIHdlIGV2ZW50dWFsbHkgdXNlIHRoaXMgbWVjaGFuaXNtIGZvciByZWd1bGFyIG5hdmlnYXRpb25zLCB3ZSBtYXkgbmVlZFxuICAgIC8vIHRvIGVycm9yIGR1cmluZyBidWlsZCBpZiB3ZSBmYWlsIHRvIGluc2VydCBpdCBmb3Igc29tZSByZWFzb24uXG4gICAgcmV0dXJuIG9yaWdpbmFsSHRtbFxuICB9XG4gIC8vIFRoZSBjb21tZW50IG11c3QgYmUgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIGRvY3R5cGUuXG4gIHJldHVybiBvcmlnaW5hbEh0bWwucmVwbGFjZShcbiAgICBET0NUWVBFX1BSRUZJWCxcbiAgICBET0NUWVBFX1BSRUZJWCArICc8IS0tJyArIGVzY2FwZUJ1aWxkSWQoYnVpbGRJZCkgKyAnLS0+J1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2VzRXhwb3J0ZWRIdG1sTWF0Y2hCdWlsZElkKFxuICBwYXJ0aWFsSHRtbERvY3VtZW50OiBzdHJpbmcsXG4gIGJ1aWxkSWQ6IHN0cmluZ1xuKSB7XG4gIC8vIENoZWNrIHdoZXRoZXIgdGhlIGRvY3VtZW50IHN0YXJ0cyB3aXRoIHRoZSBleHBlY3RlZCBidWlsZElkLlxuICByZXR1cm4gcGFydGlhbEh0bWxEb2N1bWVudC5zdGFydHNXaXRoKFxuICAgIERPQ1RZUEVfUFJFRklYICsgJzwhLS0nICsgZXNjYXBlQnVpbGRJZChidWlsZElkKSArICctLT4nXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJET0NfUFJFRkVUQ0hfUkFOR0VfSEVBREVSX1ZBTFVFIiwiZG9lc0V4cG9ydGVkSHRtbE1hdGNoQnVpbGRJZCIsImluc2VydEJ1aWxkSWRDb21tZW50IiwiRE9DVFlQRV9QUkVGSVgiLCJNQVhfQlVJTERfSURfTEVOR1RIIiwiZXNjYXBlQnVpbGRJZCIsImJ1aWxkSWQiLCJ0cnVuY2F0ZWQiLCJzbGljZSIsInJlcGxhY2UiLCJvcmlnaW5hbEh0bWwiLCJpbmNsdWRlcyIsInN0YXJ0c1dpdGgiLCJwYXJ0aWFsSHRtbERvY3VtZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ROOT_SEGMENT_CACHE_KEY: function() {\n return ROOT_SEGMENT_CACHE_KEY;\n },\n ROOT_SEGMENT_REQUEST_KEY: function() {\n return ROOT_SEGMENT_REQUEST_KEY;\n },\n appendSegmentCacheKeyPart: function() {\n return appendSegmentCacheKeyPart;\n },\n appendSegmentRequestKeyPart: function() {\n return appendSegmentRequestKeyPart;\n },\n convertSegmentPathToStaticExportFilename: function() {\n return convertSegmentPathToStaticExportFilename;\n },\n createSegmentCacheKeyPart: function() {\n return createSegmentCacheKeyPart;\n },\n createSegmentRequestKeyPart: function() {\n return createSegmentRequestKeyPart;\n }\n});\nconst _segment = __webpack_require__(/*! ../segment */ \"(rsc)/./node_modules/next/dist/shared/lib/segment.js\");\nconst ROOT_SEGMENT_REQUEST_KEY = '';\nconst ROOT_SEGMENT_CACHE_KEY = '';\nfunction createSegmentRequestKeyPart(segment) {\n if (typeof segment === 'string') {\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n // The Flight Router State type sometimes includes the search params in\n // the page segment. However, the Segment Cache tracks this as a separate\n // key. So, we strip the search params here, and then add them back when\n // the cache entry is turned back into a FlightRouterState. This is an\n // unfortunate consequence of the FlightRouteState being used both as a\n // transport type and as a cache key; we'll address this once more of the\n // Segment Cache implementation has settled.\n // TODO: We should hoist the search params out of the FlightRouterState\n // type entirely, This is our plan for dynamic route params, too.\n return _segment.PAGE_SEGMENT_KEY;\n }\n const safeName = // But params typically don't include the leading slash. We should use\n // a different encoding to avoid this special case.\n segment === '/_not-found' ? '_not-found' : encodeToFilesystemAndURLSafeString(segment);\n // Since this is not a dynamic segment, it's fully encoded. It does not\n // need to be \"hydrated\" with a param value.\n return safeName;\n }\n const name = segment[0];\n const paramType = segment[2];\n const safeName = encodeToFilesystemAndURLSafeString(name);\n const encodedName = '$' + paramType + '$' + safeName;\n return encodedName;\n}\nfunction appendSegmentRequestKeyPart(parentRequestKey, parallelRouteKey, childRequestKeyPart) {\n // Aside from being filesystem safe, segment keys are also designed so that\n // each segment and parallel route creates its own subdirectory. Roughly in\n // the same shape as the source app directory. This is mostly just for easier\n // debugging (you can open up the build folder and navigate the output); if\n // we wanted to do we could just use a flat structure.\n // Omit the parallel route key for children, since this is the most\n // common case. Saves some bytes (and it's what the app directory does).\n const slotKey = parallelRouteKey === 'children' ? childRequestKeyPart : \"@\" + encodeToFilesystemAndURLSafeString(parallelRouteKey) + \"/\" + childRequestKeyPart;\n return parentRequestKey + '/' + slotKey;\n}\nfunction createSegmentCacheKeyPart(requestKeyPart, segment) {\n if (typeof segment === 'string') {\n return requestKeyPart;\n }\n const paramValue = segment[1];\n const safeValue = encodeToFilesystemAndURLSafeString(paramValue);\n return requestKeyPart + '$' + safeValue;\n}\nfunction appendSegmentCacheKeyPart(parentSegmentKey, parallelRouteKey, childCacheKeyPart) {\n const slotKey = parallelRouteKey === 'children' ? childCacheKeyPart : \"@\" + encodeToFilesystemAndURLSafeString(parallelRouteKey) + \"/\" + childCacheKeyPart;\n return parentSegmentKey + '/' + slotKey;\n}\n// Define a regex pattern to match the most common characters found in a route\n// param. It excludes anything that might not be cross-platform filesystem\n// compatible, like |. It does not need to be precise because the fallback is to\n// just base64url-encode the whole parameter, which is fine; we just don't do it\n// by default for compactness, and for easier debugging.\nconst simpleParamValueRegex = /^[a-zA-Z0-9\\-_@]+$/;\nfunction encodeToFilesystemAndURLSafeString(value) {\n if (simpleParamValueRegex.test(value)) {\n return value;\n }\n // If there are any unsafe characters, base64url-encode the entire value.\n // We also add a ! prefix so it doesn't collide with the simple case.\n const base64url = btoa(value).replace(/\\+/g, '-') // Replace '+' with '-'\n .replace(/\\//g, '_') // Replace '/' with '_'\n .replace(/=+$/, '') // Remove trailing '='\n ;\n return '!' + base64url;\n}\nfunction convertSegmentPathToStaticExportFilename(segmentPath) {\n return \"__next\" + segmentPath.replace(/\\//g, '.') + \".txt\";\n} //# sourceMappingURL=segment-value-encoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVlhQSxzQkFBc0I7ZUFBdEJBOztJQURBQyx3QkFBd0I7ZUFBeEJBOztJQXVFR0MseUJBQXlCO2VBQXpCQTs7SUFoQ0FDLDJCQUEyQjtlQUEzQkE7O0lBZ0VBQyx3Q0FBd0M7ZUFBeENBOztJQTVDQUMseUJBQXlCO2VBQXpCQTs7SUF4REFDLDJCQUEyQjtlQUEzQkE7OztxQ0FkaUI7QUFXMUIsTUFBTUwsMkJBQTJCO0FBQ2pDLE1BQU1ELHlCQUF5QjtBQUUvQixTQUFTTSw0QkFDZEMsT0FBaUM7SUFFakMsSUFBSSxPQUFPQSxZQUFZLFVBQVU7UUFDL0IsSUFBSUEsUUFBUUMsVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRztZQUN4Qyx1RUFBdUU7WUFDdkUseUVBQXlFO1lBQ3pFLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSw0Q0FBNEM7WUFDNUMsdUVBQXVFO1lBQ3ZFLGlFQUFpRTtZQUNqRSxPQUFPQSxTQUFBQSxnQkFBZ0I7UUFDekI7UUFDQSxNQUFNQyxXQUNKLHFFQUFxRSxDQUNDO1FBQ3RFLG1EQUFtRDtRQUNuREgsWUFBWSxnQkFDUixlQUNBSSxtQ0FBbUNKO1FBQ3pDLHVFQUF1RTtRQUN2RSw0Q0FBNEM7UUFDNUMsT0FBT0c7SUFDVDtJQUVBLE1BQU1FLE9BQU9MLE9BQU8sQ0FBQyxFQUFFO0lBQ3ZCLE1BQU1NLFlBQVlOLE9BQU8sQ0FBQyxFQUFFO0lBQzVCLE1BQU1HLFdBQVdDLG1DQUFtQ0M7SUFFcEQsTUFBTUUsY0FBYyxNQUFNRCxZQUFZLE1BQU1IO0lBQzVDLE9BQU9JO0FBQ1Q7QUFFTyxTQUFTWCw0QkFDZFksZ0JBQW1DLEVBQ25DQyxnQkFBd0IsRUFDeEJDLG1CQUEwQztJQUUxQywyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSwyRUFBMkU7SUFDM0Usc0RBQXNEO0lBRXRELG1FQUFtRTtJQUNuRSx3RUFBd0U7SUFDeEUsTUFBTUMsVUFDSkYscUJBQXFCLGFBQ2pCQyxzQkFDQyxNQUFHTixtQ0FBbUNLLG9CQUFrQixNQUFHQztJQUNsRSxPQUFRRixtQkFBbUIsTUFBTUc7QUFDbkM7QUFFTyxTQUFTYiwwQkFDZGMsY0FBcUMsRUFDckNaLE9BQWlDO0lBRWpDLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLE9BQU9ZO0lBQ1Q7SUFDQSxNQUFNQyxhQUFhYixPQUFPLENBQUMsRUFBRTtJQUM3QixNQUFNYyxZQUFZVixtQ0FBbUNTO0lBQ3JELE9BQVFELGlCQUFpQixNQUFNRTtBQUNqQztBQUVPLFNBQVNuQiwwQkFDZG9CLGdCQUFpQyxFQUNqQ04sZ0JBQXdCLEVBQ3hCTyxpQkFBc0M7SUFFdEMsTUFBTUwsVUFDSkYscUJBQXFCLGFBQ2pCTyxvQkFDQyxNQUFHWixtQ0FBbUNLLG9CQUFrQixNQUFHTztJQUNsRSxPQUFRRCxtQkFBbUIsTUFBTUo7QUFDbkM7QUFFQSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBQzFFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsd0RBQXdEO0FBQ3hELE1BQU1NLHdCQUF3QjtBQUU5QixTQUFTYixtQ0FBbUNjLEtBQWE7SUFDdkQsSUFBSUQsc0JBQXNCRSxJQUFJLENBQUNELFFBQVE7UUFDckMsT0FBT0E7SUFDVDtJQUNBLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsTUFBTUUsWUFBWUMsS0FBS0gsT0FDcEJJLE9BQU8sQ0FBQyxPQUFPLEtBQUssdUJBQXVCO0tBQzNDQSxPQUFPLENBQUMsT0FBTyxLQUFLLHVCQUF1QjtLQUMzQ0EsT0FBTyxDQUFDLE9BQU8sSUFBSSxzQkFBc0I7O0lBQzVDLE9BQU8sTUFBTUY7QUFDZjtBQUVPLFNBQVN2Qix5Q0FDZDBCLFdBQW1CO0lBRW5CLE9BQVEsV0FBUUEsWUFBWUQsT0FBTyxDQUFDLE9BQU8sT0FBSztBQUNsRCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHNlZ21lbnQtY2FjaGVcXHNlZ21lbnQtdmFsdWUtZW5jb2RpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uL3NlZ21lbnQnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQgYXMgRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5cbi8vIFR5cGVTY3JpcHQgdHJpY2sgdG8gc2ltdWxhdGUgb3BhcXVlIHR5cGVzLCBsaWtlIGluIEZsb3cuXG50eXBlIE9wYXF1ZTxLLCBUPiA9IFQgJiB7IF9fYnJhbmQ6IEsgfVxuXG5leHBvcnQgdHlwZSBTZWdtZW50UmVxdWVzdEtleVBhcnQgPSBPcGFxdWU8J1NlZ21lbnRSZXF1ZXN0S2V5UGFydCcsIHN0cmluZz5cbmV4cG9ydCB0eXBlIFNlZ21lbnRSZXF1ZXN0S2V5ID0gT3BhcXVlPCdTZWdtZW50UmVxdWVzdEtleScsIHN0cmluZz5cbmV4cG9ydCB0eXBlIFNlZ21lbnRDYWNoZUtleVBhcnQgPSBPcGFxdWU8J1NlZ21lbnRDYWNoZUtleVBhcnQnLCBzdHJpbmc+XG5leHBvcnQgdHlwZSBTZWdtZW50Q2FjaGVLZXkgPSBPcGFxdWU8J1NlZ21lbnRDYWNoZUtleScsIHN0cmluZz5cblxuZXhwb3J0IGNvbnN0IFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSA9ICcnIGFzIFNlZ21lbnRSZXF1ZXN0S2V5XG5leHBvcnQgY29uc3QgUk9PVF9TRUdNRU5UX0NBQ0hFX0tFWSA9ICcnIGFzIFNlZ21lbnRDYWNoZUtleVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KFxuICBzZWdtZW50OiBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnRcbik6IFNlZ21lbnRSZXF1ZXN0S2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgICAvLyBUaGUgRmxpZ2h0IFJvdXRlciBTdGF0ZSB0eXBlIHNvbWV0aW1lcyBpbmNsdWRlcyB0aGUgc2VhcmNoIHBhcmFtcyBpblxuICAgICAgLy8gdGhlIHBhZ2Ugc2VnbWVudC4gSG93ZXZlciwgdGhlIFNlZ21lbnQgQ2FjaGUgdHJhY2tzIHRoaXMgYXMgYSBzZXBhcmF0ZVxuICAgICAgLy8ga2V5LiBTbywgd2Ugc3RyaXAgdGhlIHNlYXJjaCBwYXJhbXMgaGVyZSwgYW5kIHRoZW4gYWRkIHRoZW0gYmFjayB3aGVuXG4gICAgICAvLyB0aGUgY2FjaGUgZW50cnkgaXMgdHVybmVkIGJhY2sgaW50byBhIEZsaWdodFJvdXRlclN0YXRlLiBUaGlzIGlzIGFuXG4gICAgICAvLyB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZSBvZiB0aGUgRmxpZ2h0Um91dGVTdGF0ZSBiZWluZyB1c2VkIGJvdGggYXMgYVxuICAgICAgLy8gdHJhbnNwb3J0IHR5cGUgYW5kIGFzIGEgY2FjaGUga2V5OyB3ZSdsbCBhZGRyZXNzIHRoaXMgb25jZSBtb3JlIG9mIHRoZVxuICAgICAgLy8gU2VnbWVudCBDYWNoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc2V0dGxlZC5cbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBob2lzdCB0aGUgc2VhcmNoIHBhcmFtcyBvdXQgb2YgdGhlIEZsaWdodFJvdXRlclN0YXRlXG4gICAgICAvLyB0eXBlIGVudGlyZWx5LCBUaGlzIGlzIG91ciBwbGFuIGZvciBkeW5hbWljIHJvdXRlIHBhcmFtcywgdG9vLlxuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVkgYXMgU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4gICAgfVxuICAgIGNvbnN0IHNhZmVOYW1lID1cbiAgICAgIC8vIFRPRE86IEZsaWdodFJvdXRlclN0YXRlIGVuY29kZXMgTm90IEZvdW5kIHJvdXRlcyBhcyBcIi9fbm90LWZvdW5kXCIuXG4gICAgICAvLyBCdXQgcGFyYW1zIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIHRoZSBsZWFkaW5nIHNsYXNoLiBXZSBzaG91bGQgdXNlXG4gICAgICAvLyBhIGRpZmZlcmVudCBlbmNvZGluZyB0byBhdm9pZCB0aGlzIHNwZWNpYWwgY2FzZS5cbiAgICAgIHNlZ21lbnQgPT09ICcvX25vdC1mb3VuZCdcbiAgICAgICAgPyAnX25vdC1mb3VuZCdcbiAgICAgICAgOiBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHNlZ21lbnQpXG4gICAgLy8gU2luY2UgdGhpcyBpcyBub3QgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgZnVsbHkgZW5jb2RlZC4gSXQgZG9lcyBub3RcbiAgICAvLyBuZWVkIHRvIGJlIFwiaHlkcmF0ZWRcIiB3aXRoIGEgcGFyYW0gdmFsdWUuXG4gICAgcmV0dXJuIHNhZmVOYW1lIGFzIFNlZ21lbnRSZXF1ZXN0S2V5UGFydFxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHNlZ21lbnRbMF1cbiAgY29uc3QgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICBjb25zdCBzYWZlTmFtZSA9IGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcobmFtZSlcblxuICBjb25zdCBlbmNvZGVkTmFtZSA9ICckJyArIHBhcmFtVHlwZSArICckJyArIHNhZmVOYW1lXG4gIHJldHVybiBlbmNvZGVkTmFtZSBhcyBTZWdtZW50UmVxdWVzdEtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgcGFyZW50UmVxdWVzdEtleTogU2VnbWVudFJlcXVlc3RLZXksXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyxcbiAgY2hpbGRSZXF1ZXN0S2V5UGFydDogU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4pOiBTZWdtZW50UmVxdWVzdEtleSB7XG4gIC8vIEFzaWRlIGZyb20gYmVpbmcgZmlsZXN5c3RlbSBzYWZlLCBzZWdtZW50IGtleXMgYXJlIGFsc28gZGVzaWduZWQgc28gdGhhdFxuICAvLyBlYWNoIHNlZ21lbnQgYW5kIHBhcmFsbGVsIHJvdXRlIGNyZWF0ZXMgaXRzIG93biBzdWJkaXJlY3RvcnkuIFJvdWdobHkgaW5cbiAgLy8gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHNvdXJjZSBhcHAgZGlyZWN0b3J5LiBUaGlzIGlzIG1vc3RseSBqdXN0IGZvciBlYXNpZXJcbiAgLy8gZGVidWdnaW5nICh5b3UgY2FuIG9wZW4gdXAgdGhlIGJ1aWxkIGZvbGRlciBhbmQgbmF2aWdhdGUgdGhlIG91dHB1dCk7IGlmXG4gIC8vIHdlIHdhbnRlZCB0byBkbyB3ZSBjb3VsZCBqdXN0IHVzZSBhIGZsYXQgc3RydWN0dXJlLlxuXG4gIC8vIE9taXQgdGhlIHBhcmFsbGVsIHJvdXRlIGtleSBmb3IgY2hpbGRyZW4sIHNpbmNlIHRoaXMgaXMgdGhlIG1vc3RcbiAgLy8gY29tbW9uIGNhc2UuIFNhdmVzIHNvbWUgYnl0ZXMgKGFuZCBpdCdzIHdoYXQgdGhlIGFwcCBkaXJlY3RvcnkgZG9lcykuXG4gIGNvbnN0IHNsb3RLZXkgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZFJlcXVlc3RLZXlQYXJ0fWBcbiAgcmV0dXJuIChwYXJlbnRSZXF1ZXN0S2V5ICsgJy8nICsgc2xvdEtleSkgYXMgU2VnbWVudFJlcXVlc3RLZXlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlZ21lbnRDYWNoZUtleVBhcnQoXG4gIHJlcXVlc3RLZXlQYXJ0OiBTZWdtZW50UmVxdWVzdEtleVBhcnQsXG4gIHNlZ21lbnQ6IEZsaWdodFJvdXRlclN0YXRlU2VnbWVudFxuKTogU2VnbWVudENhY2hlS2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVxdWVzdEtleVBhcnQgYXMgYW55IGFzIFNlZ21lbnRDYWNoZUtleVBhcnRcbiAgfVxuICBjb25zdCBwYXJhbVZhbHVlID0gc2VnbWVudFsxXVxuICBjb25zdCBzYWZlVmFsdWUgPSBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHBhcmFtVmFsdWUpXG4gIHJldHVybiAocmVxdWVzdEtleVBhcnQgKyAnJCcgKyBzYWZlVmFsdWUpIGFzIFNlZ21lbnRDYWNoZUtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRDYWNoZUtleVBhcnQoXG4gIHBhcmVudFNlZ21lbnRLZXk6IFNlZ21lbnRDYWNoZUtleSxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nLFxuICBjaGlsZENhY2hlS2V5UGFydDogU2VnbWVudENhY2hlS2V5UGFydFxuKTogU2VnbWVudENhY2hlS2V5IHtcbiAgY29uc3Qgc2xvdEtleSA9XG4gICAgcGFyYWxsZWxSb3V0ZUtleSA9PT0gJ2NoaWxkcmVuJ1xuICAgICAgPyBjaGlsZENhY2hlS2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZENhY2hlS2V5UGFydH1gXG4gIHJldHVybiAocGFyZW50U2VnbWVudEtleSArICcvJyArIHNsb3RLZXkpIGFzIFNlZ21lbnRDYWNoZUtleVxufVxuXG4vLyBEZWZpbmUgYSByZWdleCBwYXR0ZXJuIHRvIG1hdGNoIHRoZSBtb3N0IGNvbW1vbiBjaGFyYWN0ZXJzIGZvdW5kIGluIGEgcm91dGVcbi8vIHBhcmFtLiBJdCBleGNsdWRlcyBhbnl0aGluZyB0aGF0IG1pZ2h0IG5vdCBiZSBjcm9zcy1wbGF0Zm9ybSBmaWxlc3lzdGVtXG4vLyBjb21wYXRpYmxlLCBsaWtlIHwuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmUgcHJlY2lzZSBiZWNhdXNlIHRoZSBmYWxsYmFjayBpcyB0b1xuLy8ganVzdCBiYXNlNjR1cmwtZW5jb2RlIHRoZSB3aG9sZSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGZpbmU7IHdlIGp1c3QgZG9uJ3QgZG8gaXRcbi8vIGJ5IGRlZmF1bHQgZm9yIGNvbXBhY3RuZXNzLCBhbmQgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG5jb25zdCBzaW1wbGVQYXJhbVZhbHVlUmVnZXggPSAvXlthLXpBLVowLTlcXC1fQF0rJC9cblxuZnVuY3Rpb24gZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyh2YWx1ZTogc3RyaW5nKSB7XG4gIGlmIChzaW1wbGVQYXJhbVZhbHVlUmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuICAvLyBJZiB0aGVyZSBhcmUgYW55IHVuc2FmZSBjaGFyYWN0ZXJzLCBiYXNlNjR1cmwtZW5jb2RlIHRoZSBlbnRpcmUgdmFsdWUuXG4gIC8vIFdlIGFsc28gYWRkIGEgISBwcmVmaXggc28gaXQgZG9lc24ndCBjb2xsaWRlIHdpdGggdGhlIHNpbXBsZSBjYXNlLlxuICBjb25zdCBiYXNlNjR1cmwgPSBidG9hKHZhbHVlKVxuICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKSAvLyBSZXBsYWNlICcrJyB3aXRoICctJ1xuICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKSAvLyBSZXBsYWNlICcvJyB3aXRoICdfJ1xuICAgIC5yZXBsYWNlKC89KyQvLCAnJykgLy8gUmVtb3ZlIHRyYWlsaW5nICc9J1xuICByZXR1cm4gJyEnICsgYmFzZTY0dXJsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U2VnbWVudFBhdGhUb1N0YXRpY0V4cG9ydEZpbGVuYW1lKFxuICBzZWdtZW50UGF0aDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYF9fbmV4dCR7c2VnbWVudFBhdGgucmVwbGFjZSgvXFwvL2csICcuJyl9LnR4dGBcbn1cbiJdLCJuYW1lcyI6WyJST09UX1NFR01FTlRfQ0FDSEVfS0VZIiwiUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIiwiYXBwZW5kU2VnbWVudENhY2hlS2V5UGFydCIsImFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCIsImNvbnZlcnRTZWdtZW50UGF0aFRvU3RhdGljRXhwb3J0RmlsZW5hbWUiLCJjcmVhdGVTZWdtZW50Q2FjaGVLZXlQYXJ0IiwiY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0Iiwic2VnbWVudCIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwic2FmZU5hbWUiLCJlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nIiwibmFtZSIsInBhcmFtVHlwZSIsImVuY29kZWROYW1lIiwicGFyZW50UmVxdWVzdEtleSIsInBhcmFsbGVsUm91dGVLZXkiLCJjaGlsZFJlcXVlc3RLZXlQYXJ0Iiwic2xvdEtleSIsInJlcXVlc3RLZXlQYXJ0IiwicGFyYW1WYWx1ZSIsInNhZmVWYWx1ZSIsInBhcmVudFNlZ21lbnRLZXkiLCJjaGlsZENhY2hlS2V5UGFydCIsInNpbXBsZVBhcmFtVmFsdWVSZWdleCIsInZhbHVlIiwidGVzdCIsImJhc2U2NHVybCIsImJ0b2EiLCJyZXBsYWNlIiwic2VnbWVudFBhdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/segment.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/shared/lib/segment.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_SEGMENT_KEY: function() {\n return DEFAULT_SEGMENT_KEY;\n },\n PAGE_SEGMENT_KEY: function() {\n return PAGE_SEGMENT_KEY;\n },\n addSearchParamsIfPageSegment: function() {\n return addSearchParamsIfPageSegment;\n },\n isGroupSegment: function() {\n return isGroupSegment;\n },\n isParallelRouteSegment: function() {\n return isParallelRouteSegment;\n }\n});\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nfunction isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nfunction addSearchParamsIfPageSegment(segment, searchParams) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY);\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams);\n return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nconst PAGE_SEGMENT_KEY = '__PAGE__';\nconst DEFAULT_SEGMENT_KEY = '__DEFAULT__'; //# sourceMappingURL=segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE0QmFBLG1CQUFtQjtlQUFuQkE7O0lBREFDLGdCQUFnQjtlQUFoQkE7O0lBaEJHQyw0QkFBNEI7ZUFBNUJBOztJQVRBQyxjQUFjO2VBQWRBOztJQUtBQyxzQkFBc0I7ZUFBdEJBOzs7QUFMVCxTQUFTRCxlQUFlRSxPQUFlO0lBQzVDLHNDQUFzQztJQUN0QyxPQUFPQSxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU9BLFFBQVFDLFFBQVEsQ0FBQztBQUNoRDtBQUVPLFNBQVNGLHVCQUF1QkMsT0FBZTtJQUNwRCxPQUFPQSxRQUFRRSxVQUFVLENBQUMsUUFBUUYsWUFBWTtBQUNoRDtBQUVPLFNBQVNILDZCQUNkRyxPQUFnQixFQUNoQkcsWUFBMkQ7SUFFM0QsTUFBTUMsZ0JBQWdCSixRQUFRSyxRQUFRLENBQUNUO0lBRXZDLElBQUlRLGVBQWU7UUFDakIsTUFBTUUsbUJBQW1CQyxLQUFLQyxTQUFTLENBQUNMO1FBQ3hDLE9BQU9HLHFCQUFxQixPQUN4QlYsbUJBQW1CLE1BQU1VLG1CQUN6QlY7SUFDTjtJQUVBLE9BQU9JO0FBQ1Q7QUFFTyxNQUFNSixtQkFBbUI7QUFDekIsTUFBTUQsc0JBQXNCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXHNlZ21lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWdtZW50IH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwU2VnbWVudChzZWdtZW50OiBzdHJpbmcpIHtcbiAgLy8gVXNlIGFycmF5WzBdIGZvciBwZXJmb3JtYW50IHB1cnBvc2VcbiAgcmV0dXJuIHNlZ21lbnRbMF0gPT09ICcoJyAmJiBzZWdtZW50LmVuZHNXaXRoKCcpJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYWxsZWxSb3V0ZVNlZ21lbnQoc2VnbWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBzZWdtZW50LnN0YXJ0c1dpdGgoJ0AnKSAmJiBzZWdtZW50ICE9PSAnQGNoaWxkcmVuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudChcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5cbikge1xuICBjb25zdCBpc1BhZ2VTZWdtZW50ID0gc2VnbWVudC5pbmNsdWRlcyhQQUdFX1NFR01FTlRfS0VZKVxuXG4gIGlmIChpc1BhZ2VTZWdtZW50KSB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWRRdWVyeSA9IEpTT04uc3RyaW5naWZ5KHNlYXJjaFBhcmFtcylcbiAgICByZXR1cm4gc3RyaW5naWZpZWRRdWVyeSAhPT0gJ3t9J1xuICAgICAgPyBQQUdFX1NFR01FTlRfS0VZICsgJz8nICsgc3RyaW5naWZpZWRRdWVyeVxuICAgICAgOiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuXG5leHBvcnQgY29uc3QgUEFHRV9TRUdNRU5UX0tFWSA9ICdfX1BBR0VfXydcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFR01FTlRfS0VZID0gJ19fREVGQVVMVF9fJ1xuIl0sIm5hbWVzIjpbIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJQQUdFX1NFR01FTlRfS0VZIiwiYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCIsImlzR3JvdXBTZWdtZW50IiwiaXNQYXJhbGxlbFJvdXRlU2VnbWVudCIsInNlZ21lbnQiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzZWFyY2hQYXJhbXMiLCJpc1BhZ2VTZWdtZW50IiwiaW5jbHVkZXMiLCJzdHJpbmdpZmllZFF1ZXJ5IiwiSlNPTiIsInN0cmluZ2lmeSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/segment.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/utils.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/shared/lib/utils.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n 'CLS',\n 'FCP',\n 'FID',\n 'INP',\n 'LCP',\n 'TTFB'\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url);\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? ':' + port : '');\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split('?');\n const urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/').replace(/\\/\\/+/g, '/') + (urlParts[1] ? \"?\" + urlParts.slice(1).join('?') : '');\n}\nasync function loadGetInitialProps(App, ctx) {\n if (true) {\n var _App_prototype;\n if ((_App_prototype = App.prototype) == null ? void 0 : _App_prototype.getInitialProps) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" should resolve to an object. But found \"' + props + '\" instead.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\" + getDisplayName(App) + \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\");\n }\n }\n return props;\n}\nconst SP = typeof performance !== 'undefined';\nconst ST = SP && [\n 'mark',\n 'measure',\n 'getEntriesByName'\n].every((method)=>typeof performance[method] === 'function');\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = 'ENOENT';\n this.name = 'PageNotFoundError';\n this.message = \"Cannot find module for page: \" + page;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = \"Failed to load static file for page: \" + page + \" \" + message;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = 'ENOENT';\n this.message = \"Cannot find the middleware module\";\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBb2FhQSxXQUFXO2VBQVhBOztJQW9CQUMsdUJBQXVCO2VBQXZCQTs7SUFQQUMsaUJBQWlCO2VBQWpCQTs7SUFaQUMsY0FBYztlQUFkQTs7SUFDQUMsaUJBQWlCO2VBQWpCQTs7SUFUQUMsRUFBRTtlQUFGQTs7SUFDQUMsRUFBRTtlQUFGQTs7SUFsWEFDLFVBQVU7ZUFBVkE7O0lBc1FHQyxRQUFRO2VBQVJBOztJQStCQUMsY0FBYztlQUFkQTs7SUFYQUMsaUJBQWlCO2VBQWpCQTs7SUFLQUMsTUFBTTtlQUFOQTs7SUFQSEMsYUFBYTtlQUFiQTs7SUFtQkdDLFNBQVM7ZUFBVEE7O0lBa0JNQyxtQkFBbUI7ZUFBbkJBOztJQWROQyx3QkFBd0I7ZUFBeEJBOztJQStHQUMsY0FBYztlQUFkQTs7O0FBOVpULE1BQU1ULGFBQWE7SUFBQztJQUFPO0lBQU87SUFBTztJQUFPO0lBQU87Q0FBTztBQXNROUQsU0FBU0MsU0FDZFMsRUFBSztJQUVMLElBQUlDLE9BQU87SUFDWCxJQUFJQztJQUVKLE9BQVE7eUNBQUlDLE9BQUFBLElBQUFBLE1BQUFBLE9BQUFBLE9BQUFBLEdBQUFBLE9BQUFBLE1BQUFBLE9BQUFBO1lBQUFBLElBQUFBLENBQUFBLEtBQUFBLEdBQUFBLFNBQUFBLENBQUFBLEtBQUFBOztRQUNWLElBQUksQ0FBQ0YsTUFBTTtZQUNUQSxPQUFPO1lBQ1BDLFNBQVNGLE1BQU1HO1FBQ2pCO1FBQ0EsT0FBT0Q7SUFDVDtBQUNGO0FBRUEsMERBQTBEO0FBQzFELGdFQUFnRTtBQUNoRSxNQUFNRSxxQkFBcUI7QUFDcEIsTUFBTVQsZ0JBQWdCLENBQUNVLE1BQWdCRCxtQkFBbUJFLElBQUksQ0FBQ0Q7QUFFL0QsU0FBU1o7SUFDZCxNQUFNLEVBQUVjLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsT0FBT0MsUUFB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QUFJLENBQUM5QixJQUFJLEdBQUc7UUFDWixJQUFJLENBQUNpQixPQUFPLEdBQUksa0NBQStCWTtJQUNqRDtBQUNGO0FBRU8sTUFBTTlELDBCQUEwQm1EO0lBQ3JDVSxZQUFZQyxJQUFZLEVBQUVaLE9BQWUsQ0FBRTtRQUN6QyxLQUFLO1FBQ0wsSUFBSSxDQUFDQSxPQUFPLEdBQUksMENBQXVDWSxPQUFLLE1BQUdaO0lBQ2pFO0FBQ0Y7QUFFTyxNQUFNbkQsZ0NBQWdDb0Q7SUFFM0NVLGFBQWM7UUFDWixLQUFLO1FBQ0wsSUFBSSxDQUFDRSxJQUFJLEdBQUc7UUFDWixJQUFJLENBQUNiLE9BQU8sR0FBSTtJQUNsQjtBQUNGO0FBV08sU0FBU3BDLGVBQWVrRCxLQUFZO0lBQ3pDLE9BQU9DLEtBQUtDLFNBQVMsQ0FBQztRQUFFaEIsU0FBU2MsTUFBTWQsT0FBTztRQUFFaUIsT0FBT0gsTUFBTUcsS0FBSztJQUFDO0FBQ3JFIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXHV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSHRtbFByb3BzIH0gZnJvbSAnLi9odG1sLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEb21haW5Mb2NhbGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBFbnYgfSBmcm9tICdAbmV4dC9lbnYnXG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHR5cGUgeyBOZXh0Um91dGVyIH0gZnJvbSAnLi9yb3V0ZXIvcm91dGVyJ1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRVcmxRdWVyeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJ1xuaW1wb3J0IHR5cGUgeyBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDT01QSUxFUl9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgZnMgZnJvbSAnZnMnXG5cbmV4cG9ydCB0eXBlIE5leHRDb21wb25lbnRUeXBlPFxuICBDb250ZXh0IGV4dGVuZHMgQmFzZUNvbnRleHQgPSBOZXh0UGFnZUNvbnRleHQsXG4gIEluaXRpYWxQcm9wcyA9IHt9LFxuICBQcm9wcyA9IHt9LFxuPiA9IENvbXBvbmVudFR5cGU8UHJvcHM+ICYge1xuICAvKipcbiAgICogVXNlZCBmb3IgaW5pdGlhbCBwYWdlIGxvYWQgZGF0YSBwb3B1bGF0aW9uLiBEYXRhIHJldHVybmVkIGZyb20gYGdldEluaXRpYWxQcm9wc2AgaXMgc2VyaWFsaXplZCB3aGVuIHNlcnZlciByZW5kZXJlZC5cbiAgICogTWFrZSBzdXJlIHRvIHJldHVybiBwbGFpbiBgT2JqZWN0YCB3aXRob3V0IHVzaW5nIGBEYXRlYCwgYE1hcGAsIGBTZXRgLlxuICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IG9mIGBwYWdlYFxuICAgKi9cbiAgZ2V0SW5pdGlhbFByb3BzPyhjb250ZXh0OiBDb250ZXh0KTogSW5pdGlhbFByb3BzIHwgUHJvbWlzZTxJbml0aWFsUHJvcHM+XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50VHlwZSA9IE5leHRDb21wb25lbnRUeXBlPFxuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBEb2N1bWVudFByb3BzXG4+XG5cbmV4cG9ydCB0eXBlIEFwcFR5cGU8UCA9IHt9PiA9IE5leHRDb21wb25lbnRUeXBlPFxuICBBcHBDb250ZXh0VHlwZSxcbiAgUCxcbiAgQXBwUHJvcHNUeXBlPGFueSwgUD5cbj5cblxuZXhwb3J0IHR5cGUgQXBwVHJlZVR5cGUgPSBDb21wb25lbnRUeXBlPFxuICBBcHBJbml0aWFsUHJvcHMgJiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVxuPlxuXG4vKipcbiAqIFdlYiB2aXRhbHMgcHJvdmlkZWQgdG8gX2FwcC5yZXBvcnRXZWJWaXRhbHMgYnkgQ29yZSBXZWIgVml0YWxzIHBsdWdpbiBkZXZlbG9wZWQgYnkgR29vZ2xlIENocm9tZSB0ZWFtLlxuICogaHR0cHM6Ly9uZXh0anMub3JnL2Jsb2cvbmV4dC05LTQjaW50ZWdyYXRlZC13ZWItdml0YWxzLXJlcG9ydGluZ1xuICovXG5leHBvcnQgY29uc3QgV0VCX1ZJVEFMUyA9IFsnQ0xTJywgJ0ZDUCcsICdGSUQnLCAnSU5QJywgJ0xDUCcsICdUVEZCJ10gYXMgY29uc3RcbmV4cG9ydCB0eXBlIE5leHRXZWJWaXRhbHNNZXRyaWMgPSB7XG4gIGlkOiBzdHJpbmdcbiAgc3RhcnRUaW1lOiBudW1iZXJcbiAgdmFsdWU6IG51bWJlclxuICBhdHRyaWJ1dGlvbj86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG59ICYgKFxuICB8IHtcbiAgICAgIGxhYmVsOiAnd2ViLXZpdGFsJ1xuICAgICAgbmFtZTogKHR5cGVvZiBXRUJfVklUQUxTKVtudW1iZXJdXG4gICAgfVxuICB8IHtcbiAgICAgIGxhYmVsOiAnY3VzdG9tJ1xuICAgICAgbmFtZTpcbiAgICAgICAgfCAnTmV4dC5qcy1oeWRyYXRpb24nXG4gICAgICAgIHwgJ05leHQuanMtcm91dGUtY2hhbmdlLXRvLXJlbmRlcidcbiAgICAgICAgfCAnTmV4dC5qcy1yZW5kZXInXG4gICAgfVxuKVxuXG5leHBvcnQgdHlwZSBFbmhhbmNlcjxDPiA9IChDb21wb25lbnQ6IEMpID0+IENcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50c0VuaGFuY2VyID1cbiAgfCB7XG4gICAgICBlbmhhbmNlQXBwPzogRW5oYW5jZXI8QXBwVHlwZT5cbiAgICAgIGVuaGFuY2VDb21wb25lbnQ/OiBFbmhhbmNlcjxOZXh0Q29tcG9uZW50VHlwZT5cbiAgICB9XG4gIHwgRW5oYW5jZXI8TmV4dENvbXBvbmVudFR5cGU+XG5cbmV4cG9ydCB0eXBlIFJlbmRlclBhZ2VSZXN1bHQgPSB7XG4gIGh0bWw6IHN0cmluZ1xuICBoZWFkPzogQXJyYXk8SlNYLkVsZW1lbnQgfCBudWxsPlxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJQYWdlID0gKFxuICBvcHRpb25zPzogQ29tcG9uZW50c0VuaGFuY2VyXG4pID0+IERvY3VtZW50SW5pdGlhbFByb3BzIHwgUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz5cblxuZXhwb3J0IHR5cGUgQmFzZUNvbnRleHQgPSB7XG4gIHJlcz86IFNlcnZlclJlc3BvbnNlXG4gIFtrOiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgTkVYVF9EQVRBID0ge1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuICBwYWdlOiBzdHJpbmdcbiAgcXVlcnk6IFBhcnNlZFVybFF1ZXJ5XG4gIGJ1aWxkSWQ6IHN0cmluZ1xuICBhc3NldFByZWZpeD86IHN0cmluZ1xuICBydW50aW1lQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICBuZXh0RXhwb3J0PzogYm9vbGVhblxuICBhdXRvRXhwb3J0PzogYm9vbGVhblxuICBpc0ZhbGxiYWNrPzogYm9vbGVhblxuICBpc0V4cGVyaW1lbnRhbENvbXBpbGU/OiBib29sZWFuXG4gIGR5bmFtaWNJZHM/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gIGVycj86IEVycm9yICYge1xuICAgIHN0YXR1c0NvZGU/OiBudW1iZXJcbiAgICBzb3VyY2U/OiB0eXBlb2YgQ09NUElMRVJfTkFNRVMuc2VydmVyIHwgdHlwZW9mIENPTVBJTEVSX05BTUVTLmVkZ2VTZXJ2ZXJcbiAgfVxuICBnc3A/OiBib29sZWFuXG4gIGdzc3A/OiBib29sZWFuXG4gIGN1c3RvbVNlcnZlcj86IGJvb2xlYW5cbiAgZ2lwPzogYm9vbGVhblxuICBhcHBHaXA/OiBib29sZWFuXG4gIGxvY2FsZT86IHN0cmluZ1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgZGVmYXVsdExvY2FsZT86IHN0cmluZ1xuICBkb21haW5Mb2NhbGVzPzogcmVhZG9ubHkgRG9tYWluTG9jYWxlW11cbiAgc2NyaXB0TG9hZGVyPzogYW55W11cbiAgaXNQcmV2aWV3PzogYm9vbGVhblxuICBub3RGb3VuZFNyY1BhZ2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBgTmV4dGAgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRQYWdlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBFcnJvciBvYmplY3QgaWYgZW5jb3VudGVyZWQgZHVyaW5nIHJlbmRlcmluZ1xuICAgKi9cbiAgZXJyPzogKEVycm9yICYgeyBzdGF0dXNDb2RlPzogbnVtYmVyIH0pIHwgbnVsbFxuICAvKipcbiAgICogYEhUVFBgIHJlcXVlc3Qgb2JqZWN0LlxuICAgKi9cbiAgcmVxPzogSW5jb21pbmdNZXNzYWdlXG4gIC8qKlxuICAgKiBgSFRUUGAgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgcmVzPzogU2VydmVyUmVzcG9uc2VcbiAgLyoqXG4gICAqIFBhdGggc2VjdGlvbiBvZiBgVVJMYC5cbiAgICovXG4gIHBhdGhuYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFF1ZXJ5IHN0cmluZyBzZWN0aW9uIG9mIGBVUkxgIHBhcnNlZCBhcyBhbiBvYmplY3QuXG4gICAqL1xuICBxdWVyeTogUGFyc2VkVXJsUXVlcnlcbiAgLyoqXG4gICAqIGBTdHJpbmdgIG9mIHRoZSBhY3R1YWwgcGF0aCBpbmNsdWRpbmcgcXVlcnkuXG4gICAqL1xuICBhc1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGxvY2FsZVxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgY29uZmlndXJlZCBsb2NhbGVzXG4gICAqL1xuICBsb2NhbGVzPzogcmVhZG9ubHkgc3RyaW5nW11cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIGRlZmF1bHQgbG9jYWxlXG4gICAqL1xuICBkZWZhdWx0TG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBgQ29tcG9uZW50YCB0aGUgdHJlZSBvZiB0aGUgQXBwIHRvIHVzZSBpZiBuZWVkaW5nIHRvIHJlbmRlciBzZXBhcmF0ZWx5XG4gICAqL1xuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxufVxuXG5leHBvcnQgdHlwZSBBcHBDb250ZXh0VHlwZTxSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcj4gPSB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0PlxuICBBcHBUcmVlOiBBcHBUcmVlVHlwZVxuICBjdHg6IE5leHRQYWdlQ29udGV4dFxuICByb3V0ZXI6IFJvdXRlclxufVxuXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsUHJvcHM8UGFnZVByb3BzID0gYW55PiA9IHtcbiAgcGFnZVByb3BzOiBQYWdlUHJvcHNcbn1cblxuZXhwb3J0IHR5cGUgQXBwUHJvcHNUeXBlPFxuICBSb3V0ZXIgZXh0ZW5kcyBOZXh0Um91dGVyID0gTmV4dFJvdXRlcixcbiAgUGFnZVByb3BzID0ge30sXG4+ID0gQXBwSW5pdGlhbFByb3BzPFBhZ2VQcm9wcz4gJiB7XG4gIENvbXBvbmVudDogTmV4dENvbXBvbmVudFR5cGU8TmV4dFBhZ2VDb250ZXh0LCBhbnksIGFueT5cbiAgcm91dGVyOiBSb3V0ZXJcbiAgX19OX1NTRz86IGJvb2xlYW5cbiAgX19OX1NTUD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jdW1lbnRDb250ZXh0ID0gTmV4dFBhZ2VDb250ZXh0ICYge1xuICByZW5kZXJQYWdlOiBSZW5kZXJQYWdlXG4gIGRlZmF1bHRHZXRJbml0aWFsUHJvcHMoXG4gICAgY3R4OiBEb2N1bWVudENvbnRleHQsXG4gICAgb3B0aW9ucz86IHsgbm9uY2U/OiBzdHJpbmcgfVxuICApOiBQcm9taXNlPERvY3VtZW50SW5pdGlhbFByb3BzPlxufVxuXG5leHBvcnQgdHlwZSBEb2N1bWVudEluaXRpYWxQcm9wcyA9IFJlbmRlclBhZ2VSZXN1bHQgJiB7XG4gIHN0eWxlcz86IFJlYWN0LlJlYWN0RWxlbWVudFtdIHwgSXRlcmFibGU8UmVhY3QuUmVhY3ROb2RlPiB8IEpTWC5FbGVtZW50XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50UHJvcHMgPSBEb2N1bWVudEluaXRpYWxQcm9wcyAmIEh0bWxQcm9wc1xuXG4vKipcbiAqIE5leHQgYEFQSWAgcm91dGUgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRBcGlSZXF1ZXN0IGV4dGVuZHMgSW5jb21pbmdNZXNzYWdlIHtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiBgcXVlcnlgIHZhbHVlcyBmcm9tIHVybFxuICAgKi9cbiAgcXVlcnk6IFBhcnRpYWw8e1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdXG4gIH0+XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgYGNvb2tpZXNgIGZyb20gaGVhZGVyXG4gICAqL1xuICBjb29raWVzOiBQYXJ0aWFsPHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgfT5cblxuICBib2R5OiBhbnlcblxuICBlbnY6IEVudlxuXG4gIGRyYWZ0TW9kZT86IGJvb2xlYW5cblxuICBwcmV2aWV3PzogYm9vbGVhblxuICAvKipcbiAgICogUHJldmlldyBkYXRhIHNldCBvbiB0aGUgcmVxdWVzdCwgaWYgYW55XG4gICAqICovXG4gIHByZXZpZXdEYXRhPzogUHJldmlld0RhdGFcbn1cblxuLyoqXG4gKiBTZW5kIGJvZHkgb2YgcmVzcG9uc2VcbiAqL1xudHlwZSBTZW5kPFQ+ID0gKGJvZHk6IFQpID0+IHZvaWRcblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCB0eXBlIE5leHRBcGlSZXNwb25zZTxEYXRhID0gYW55PiA9IFNlcnZlclJlc3BvbnNlICYge1xuICAvKipcbiAgICogU2VuZCBkYXRhIGBhbnlgIGRhdGEgaW4gcmVzcG9uc2VcbiAgICovXG4gIHNlbmQ6IFNlbmQ8RGF0YT5cbiAgLyoqXG4gICAqIFNlbmQgZGF0YSBganNvbmAgZGF0YSBpbiByZXNwb25zZVxuICAgKi9cbiAganNvbjogU2VuZDxEYXRhPlxuICBzdGF0dXM6IChzdGF0dXNDb2RlOiBudW1iZXIpID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdCh1cmw6IHN0cmluZyk6IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuICByZWRpcmVjdChzdGF0dXM6IG51bWJlciwgdXJsOiBzdHJpbmcpOiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogU2V0IGRyYWZ0IG1vZGVcbiAgICovXG4gIHNldERyYWZ0TW9kZTogKG9wdGlvbnM6IHsgZW5hYmxlOiBib29sZWFuIH0pID0+IE5leHRBcGlSZXNwb25zZTxEYXRhPlxuXG4gIC8qKlxuICAgKiBTZXQgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgc2V0UHJldmlld0RhdGE6IChcbiAgICBkYXRhOiBvYmplY3QgfCBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKlxuICAgICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgKGluIHNlY29uZHMpIGZvciB0aGUgcHJldmlldyBzZXNzaW9uIHRvIGxhc3QgZm9yLlxuICAgICAgICogVGhlIGdpdmVuIG51bWJlciB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIGJ5IHJvdW5kaW5nIGRvd24uXG4gICAgICAgKiBCeSBkZWZhdWx0LCBubyBtYXhpbXVtIGFnZSBpcyBzZXQgYW5kIHRoZSBwcmV2aWV3IHNlc3Npb24gZmluaXNoZXNcbiAgICAgICAqIHdoZW4gdGhlIGNsaWVudCBzaHV0cyBkb3duIChicm93c2VyIGlzIGNsb3NlZCkuXG4gICAgICAgKi9cbiAgICAgIG1heEFnZT86IG51bWJlclxuICAgICAgLyoqXG4gICAgICAgKiBTcGVjaWZpZXMgdGhlIHBhdGggZm9yIHRoZSBwcmV2aWV3IHNlc3Npb24gdG8gd29yayB1bmRlci4gQnkgZGVmYXVsdCxcbiAgICAgICAqIHRoZSBwYXRoIGlzIGNvbnNpZGVyZWQgdGhlIFwiZGVmYXVsdCBwYXRoXCIsIGkuZS4sIGFueSBwYWdlcyB1bmRlciBcIi9cIi5cbiAgICAgICAqL1xuICAgICAgcGF0aD86IHN0cmluZ1xuICAgIH1cbiAgKSA9PiBOZXh0QXBpUmVzcG9uc2U8RGF0YT5cblxuICAvKipcbiAgICogQ2xlYXIgcHJldmlldyBkYXRhIGZvciBOZXh0LmpzJyBwcmVyZW5kZXIgbW9kZVxuICAgKi9cbiAgY2xlYXJQcmV2aWV3RGF0YTogKG9wdGlvbnM/OiB7IHBhdGg/OiBzdHJpbmcgfSkgPT4gTmV4dEFwaVJlc3BvbnNlPERhdGE+XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgYSBzcGVjaWZpYyBwYWdlIGFuZCByZWdlbmVyYXRlIGl0IHVzaW5nIE9uLURlbWFuZCBJbmNyZW1lbnRhbFxuICAgKiBTdGF0aWMgUmVnZW5lcmF0aW9uLlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgYW4gYWN0dWFsIHBhdGgsIG5vdCBhIHJld3JpdHRlbiBwYXRoLiBFLmcuIGZvclxuICAgKiBcIi9ibG9nL1tzbHVnXVwiIHRoaXMgc2hvdWxkIGJlIFwiL2Jsb2cvcG9zdC0xXCIuXG4gICAqIEBsaW5rIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvbiNvbi1kZW1hbmQtcmV2YWxpZGF0aW9uLXdpdGgtcmV2YWxpZGF0ZXBhdGhcbiAgICovXG4gIHJldmFsaWRhdGU6IChcbiAgICB1cmxQYXRoOiBzdHJpbmcsXG4gICAgb3B0cz86IHtcbiAgICAgIHVuc3RhYmxlX29ubHlHZW5lcmF0ZWQ/OiBib29sZWFuXG4gICAgfVxuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuLyoqXG4gKiBOZXh0IGBBUElgIHJvdXRlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTmV4dEFwaUhhbmRsZXI8VCA9IGFueT4gPSAoXG4gIHJlcTogTmV4dEFwaVJlcXVlc3QsXG4gIHJlczogTmV4dEFwaVJlc3BvbnNlPFQ+XG4pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbi8qKlxuICogVXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNPbmNlPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldHVyblR5cGU8VD4+KFxuICBmbjogVFxuKTogVCB7XG4gIGxldCB1c2VkID0gZmFsc2VcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTxUPlxuXG4gIHJldHVybiAoKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgaWYgKCF1c2VkKSB7XG4gICAgICB1c2VkID0gdHJ1ZVxuICAgICAgcmVzdWx0ID0gZm4oLi4uYXJncylcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KSBhcyBUXG59XG5cbi8vIFNjaGVtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjFcbi8vIEFic29sdXRlIFVSTDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjNcbmNvbnN0IEFCU09MVVRFX1VSTF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKj86L1xuZXhwb3J0IGNvbnN0IGlzQWJzb2x1dGVVcmwgPSAodXJsOiBzdHJpbmcpID0+IEFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KHVybClcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uT3JpZ2luKCkge1xuICBjb25zdCB7IHByb3RvY29sLCBob3N0bmFtZSwgcG9ydCB9ID0gd2luZG93LmxvY2F0aW9uXG4gIHJldHVybiBgJHtwcm90b2NvbH0vLyR7aG9zdG5hbWV9JHtwb3J0ID8gJzonICsgcG9ydCA6ICcnfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTCgpIHtcbiAgY29uc3QgeyBocmVmIH0gPSB3aW5kb3cubG9jYXRpb25cbiAgY29uc3Qgb3JpZ2luID0gZ2V0TG9jYXRpb25PcmlnaW4oKVxuICByZXR1cm4gaHJlZi5zdWJzdHJpbmcob3JpZ2luLmxlbmd0aClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lPFA+KENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxQPikge1xuICByZXR1cm4gdHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgICA/IENvbXBvbmVudFxuICAgIDogQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdVbmtub3duJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNTZW50KHJlczogU2VydmVyUmVzcG9uc2UpIHtcbiAgcmV0dXJuIHJlcy5maW5pc2hlZCB8fCByZXMuaGVhZGVyc1NlbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyh1cmw6IHN0cmluZykge1xuICBjb25zdCB1cmxQYXJ0cyA9IHVybC5zcGxpdCgnPycpXG4gIGNvbnN0IHVybE5vUXVlcnkgPSB1cmxQYXJ0c1swXVxuXG4gIHJldHVybiAoXG4gICAgdXJsTm9RdWVyeVxuICAgICAgLy8gZmlyc3Qgd2UgcmVwbGFjZSBhbnkgbm9uLWVuY29kZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkXG4gICAgICAvLyB0aGVuIG5vcm1hbGl6ZSByZXBlYXRlZCBmb3J3YXJkIHNsYXNoZXNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgICAgIC5yZXBsYWNlKC9cXC9cXC8rL2csICcvJykgK1xuICAgICh1cmxQYXJ0c1sxXSA/IGA/JHt1cmxQYXJ0cy5zbGljZSgxKS5qb2luKCc/Jyl9YCA6ICcnKVxuICApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzPFxuICBDIGV4dGVuZHMgQmFzZUNvbnRleHQsXG4gIElQID0ge30sXG4gIFAgPSB7fSxcbj4oQXBwOiBOZXh0Q29tcG9uZW50VHlwZTxDLCBJUCwgUD4sIGN0eDogQyk6IFByb21pc2U8SVA+IHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoQXBwLnByb3RvdHlwZT8uZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFwiJHtnZXREaXNwbGF5TmFtZShcbiAgICAgICAgQXBwXG4gICAgICApfS5nZXRJbml0aWFsUHJvcHMoKVwiIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIC0gdmlzaXQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ2V0LWluaXRpYWwtcHJvcHMtYXMtYW4taW5zdGFuY2UtbWV0aG9kIGZvciBtb3JlIGluZm9ybWF0aW9uLmBcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgIH1cbiAgfVxuICAvLyB3aGVuIGNhbGxlZCBmcm9tIF9hcHAgYGN0eGAgaXMgbmVzdGVkIGluIGBjdHhgXG4gIGNvbnN0IHJlcyA9IGN0eC5yZXMgfHwgKGN0eC5jdHggJiYgY3R4LmN0eC5yZXMpXG5cbiAgaWYgKCFBcHAuZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgaWYgKGN0eC5jdHggJiYgY3R4LkNvbXBvbmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBwYWdlUHJvcHMgZGVmYXVsdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZVByb3BzOiBhd2FpdCBsb2FkR2V0SW5pdGlhbFByb3BzKGN0eC5Db21wb25lbnQsIGN0eC5jdHgpLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge30gYXMgSVBcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gYXdhaXQgQXBwLmdldEluaXRpYWxQcm9wcyhjdHgpXG5cbiAgaWYgKHJlcyAmJiBpc1Jlc1NlbnQocmVzKSkge1xuICAgIHJldHVybiBwcm9wc1xuICB9XG5cbiAgaWYgKCFwcm9wcykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgXCIke2dldERpc3BsYXlOYW1lKFxuICAgICAgQXBwXG4gICAgKX0uZ2V0SW5pdGlhbFByb3BzKClcIiBzaG91bGQgcmVzb2x2ZSB0byBhbiBvYmplY3QuIEJ1dCBmb3VuZCBcIiR7cHJvcHN9XCIgaW5zdGVhZC5gXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoID09PSAwICYmICFjdHguY3R4KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGAke2dldERpc3BsYXlOYW1lKFxuICAgICAgICAgIEFwcFxuICAgICAgICApfSByZXR1cm5lZCBhbiBlbXB0eSBvYmplY3QgZnJvbSBcXGBnZXRJbml0aWFsUHJvcHNcXGAuIFRoaXMgZGUtb3B0aW1pemVzIGFuZCBwcmV2ZW50cyBhdXRvbWF0aWMgc3RhdGljIG9wdGltaXphdGlvbi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZW1wdHktb2JqZWN0LWdldEluaXRpYWxQcm9wc2BcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvcHNcbn1cblxuZXhwb3J0IGNvbnN0IFNQID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJ1xuZXhwb3J0IGNvbnN0IFNUID1cbiAgU1AgJiZcbiAgKFsnbWFyaycsICdtZWFzdXJlJywgJ2dldEVudHJpZXNCeU5hbWUnXSBhcyBjb25zdCkuZXZlcnkoXG4gICAgKG1ldGhvZCkgPT4gdHlwZW9mIHBlcmZvcm1hbmNlW21ldGhvZF0gPT09ICdmdW5jdGlvbidcbiAgKVxuXG5leHBvcnQgY2xhc3MgRGVjb2RlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmV4cG9ydCBjbGFzcyBQYWdlTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocGFnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuY29kZSA9ICdFTk9FTlQnXG4gICAgdGhpcy5uYW1lID0gJ1BhZ2VOb3RGb3VuZEVycm9yJ1xuICAgIHRoaXMubWVzc2FnZSA9IGBDYW5ub3QgZmluZCBtb2R1bGUgZm9yIHBhZ2U6ICR7cGFnZX1gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwYWdlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGxvYWQgc3RhdGljIGZpbGUgZm9yIHBhZ2U6ICR7cGFnZX0gJHttZXNzYWdlfWBcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IHN0cmluZ1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2RlID0gJ0VOT0VOVCdcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQ2Fubm90IGZpbmQgdGhlIG1pZGRsZXdhcmUgbW9kdWxlYFxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVGcyB7XG4gIGV4aXN0c1N5bmM6IHR5cGVvZiBmcy5leGlzdHNTeW5jXG4gIHJlYWRGaWxlOiB0eXBlb2YgZnMucHJvbWlzZXMucmVhZEZpbGVcbiAgcmVhZEZpbGVTeW5jOiB0eXBlb2YgZnMucmVhZEZpbGVTeW5jXG4gIHdyaXRlRmlsZShmOiBzdHJpbmcsIGQ6IGFueSk6IFByb21pc2U8dm9pZD5cbiAgbWtkaXIoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQgfCBzdHJpbmc+XG4gIHN0YXQoZjogc3RyaW5nKTogUHJvbWlzZTx7IG10aW1lOiBEYXRlIH0+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrIH0pXG59XG4iXSwibmFtZXMiOlsiRGVjb2RlRXJyb3IiLCJNaWRkbGV3YXJlTm90Rm91bmRFcnJvciIsIk1pc3NpbmdTdGF0aWNQYWdlIiwiTm9ybWFsaXplRXJyb3IiLCJQYWdlTm90Rm91bmRFcnJvciIsIlNQIiwiU1QiLCJXRUJfVklUQUxTIiwiZXhlY09uY2UiLCJnZXREaXNwbGF5TmFtZSIsImdldExvY2F0aW9uT3JpZ2luIiwiZ2V0VVJMIiwiaXNBYnNvbHV0ZVVybCIsImlzUmVzU2VudCIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJzdHJpbmdpZnlFcnJvciIsImZuIiwidXNlZCIsInJlc3VsdCIsImFyZ3MiLCJBQlNPTFVURV9VUkxfUkVHRVgiLCJ1cmwiLCJ0ZXN0IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJvcmlnaW4iLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJDb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJyZXMiLCJmaW5pc2hlZCIsImhlYWRlcnNTZW50IiwidXJsUGFydHMiLCJzcGxpdCIsInVybE5vUXVlcnkiLCJyZXBsYWNlIiwic2xpY2UiLCJqb2luIiwiQXBwIiwiY3R4IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvdG90eXBlIiwiZ2V0SW5pdGlhbFByb3BzIiwibWVzc2FnZSIsIkVycm9yIiwicGFnZVByb3BzIiwicHJvcHMiLCJPYmplY3QiLCJrZXlzIiwiY29uc29sZSIsIndhcm4iLCJwZXJmb3JtYW5jZSIsImV2ZXJ5IiwibWV0aG9kIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiY29kZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/utils.js\n"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/utils/reflect-utils.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n describeHasCheckingStringProperty: function() {\n return describeHasCheckingStringProperty;\n },\n describeStringPropertyAccess: function() {\n return describeStringPropertyAccess;\n },\n wellKnownProperties: function() {\n return wellKnownProperties;\n }\n});\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nfunction describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return \"`\" + target + \".\" + prop + \"`\";\n }\n return \"`\" + target + \"[\" + JSON.stringify(prop) + \"]`\";\n}\nfunction describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return \"`Reflect.has(\" + target + \", \" + stringifiedProp + \")`, `\" + stringifiedProp + \" in \" + target + \"`, or similar\";\n}\nconst wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n // fallthrough\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n // fallthrough\n 'status',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n // fallthrough\n 'toJSON',\n '$$typeof',\n '__esModule'\n]); //# sourceMappingURL=reflect-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsaUZBQWlGO0FBQ2pGLDBGQUEwRjtBQUMxRix1RkFBdUY7QUFDdkYsMkRBQTJEOzs7Ozs7Ozs7Ozs7O0lBVTNDQSxpQ0FBaUM7ZUFBakNBOztJQVBBQyw0QkFBNEI7ZUFBNUJBOztJQWVIQyxtQkFBbUI7ZUFBbkJBOzs7QUFqQmIsTUFBTUMsK0JBQStCO0FBRTlCLFNBQVNGLDZCQUE2QkcsTUFBYyxFQUFFQyxJQUFZO0lBQ3ZFLElBQUlGLDZCQUE2QkcsSUFBSSxDQUFDRCxPQUFPO1FBQzNDLE9BQVEsTUFBSUQsU0FBTyxNQUFHQyxPQUFLO0lBQzdCO0lBQ0EsT0FBUSxNQUFJRCxTQUFPLE1BQUdHLEtBQUtDLFNBQVMsQ0FBQ0gsUUFBTTtBQUM3QztBQUVPLFNBQVNMLGtDQUNkSSxNQUFjLEVBQ2RDLElBQVk7SUFFWixNQUFNSSxrQkFBa0JGLEtBQUtDLFNBQVMsQ0FBQ0g7SUFDdkMsT0FBUSxrQkFBZ0JELFNBQU8sT0FBSUssa0JBQWdCLFVBQVNBLGtCQUFnQixTQUFNTCxTQUFPO0FBQzNGO0FBRU8sTUFBTUYsc0JBQXNCLElBQUlRLElBQUk7SUFDekM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBRUEsb0JBQW9CO0lBQ3BCLGNBQWM7SUFDZDtJQUNBO0lBQ0E7SUFFQSwwQkFBMEI7SUFDMUIsY0FBYztJQUNkO0lBRUEsc0JBQXNCO0lBQ3RCO0lBQ0E7SUFFQSwyQkFBMkI7SUFDM0IsY0FBYztJQUNkO0lBQ0E7SUFDQTtDQUNEIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxcdXRpbHNcXHJlZmxlY3QtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCB3aWxsIGhhdmUgZmFzdCBuZWdhdGl2ZXMgbWVhbmluZyB2YWxpZCBpZGVudGlmaWVycyBtYXkgbm90IHBhc3Ncbi8vIHRoaXMgdGVzdC4gSG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgc3RhdGljIGdlbmVyYXRpb24gdG8gcHJvdmlkZSBoaW50c1xuLy8gYWJvdXQgd2h5IGEgcGFnZSBiYWlsZWQgb3V0IG9mIHNvbWUgb3IgYWxsIHByZXJlbmRlcmluZyBhbmQgd2UgY2FuIHVzZSBicmFja2V0IG5vdGF0aW9uXG4vLyBmb3IgZXhhbXBsZSB3aGlsZSBg4LKgX+CyoGAgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGl0J3Mgb2sgdG8gcHJpbnQgYHNlYXJjaFBhcmFtc1sn4LKgX+CyoCddYFxuLy8gZXZlbiBpZiB0aGlzIHdvdWxkIGhhdmUgYmVlbiBmaW5lIHRvbyBgc2VhcmNoUGFyYW1zLuCyoF/gsqBgXG5jb25zdCBpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyID0gL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IHN0cmluZywgcHJvcDogc3RyaW5nKSB7XG4gIGlmIChpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyLnRlc3QocHJvcCkpIHtcbiAgICByZXR1cm4gYFxcYCR7dGFyZ2V0fS4ke3Byb3B9XFxgYFxuICB9XG4gIHJldHVybiBgXFxgJHt0YXJnZXR9WyR7SlNPTi5zdHJpbmdpZnkocHJvcCl9XVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eShcbiAgdGFyZ2V0OiBzdHJpbmcsXG4gIHByb3A6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0cmluZ2lmaWVkUHJvcCA9IEpTT04uc3RyaW5naWZ5KHByb3ApXG4gIHJldHVybiBgXFxgUmVmbGVjdC5oYXMoJHt0YXJnZXR9LCAke3N0cmluZ2lmaWVkUHJvcH0pXFxgLCBcXGAke3N0cmluZ2lmaWVkUHJvcH0gaW4gJHt0YXJnZXR9XFxgLCBvciBzaW1pbGFyYFxufVxuXG5leHBvcnQgY29uc3Qgd2VsbEtub3duUHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcblxuICAvLyBQcm9taXNlIHByb3RvdHlwZVxuICAvLyBmYWxsdGhyb3VnaFxuICAndGhlbicsXG4gICdjYXRjaCcsXG4gICdmaW5hbGx5JyxcblxuICAvLyBSZWFjdCBQcm9taXNlIGV4dGVuc2lvblxuICAvLyBmYWxsdGhyb3VnaFxuICAnc3RhdHVzJyxcblxuICAvLyBSZWFjdCBpbnRyb3NwZWN0aW9uXG4gICdkaXNwbGF5TmFtZScsXG4gICdfZGVidWdJbmZvJyxcblxuICAvLyBDb21tb24gdGVzdGVkIHByb3BlcnRpZXNcbiAgLy8gZmFsbHRocm91Z2hcbiAgJ3RvSlNPTicsXG4gICckJHR5cGVvZicsXG4gICdfX2VzTW9kdWxlJyxcbl0pXG4iXSwibmFtZXMiOlsiZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5IiwiZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcyIsIndlbGxLbm93blByb3BlcnRpZXMiLCJpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyIiwidGFyZ2V0IiwicHJvcCIsInRlc3QiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RyaW5naWZpZWRQcm9wIiwiU2V0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/app-build-id.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/app-build-id.js ***! \*******************************************************/ /***/ ((module, exports) => { "use strict"; eval("// This gets assigned as a side-effect during app initialization. Because it\n// represents the build used to create the JS bundle, it should never change\n// after being set, so we store it in a global variable.\n//\n// When performing RSC requests, if the incoming data has a different build ID,\n// we perform an MPA navigation/refresh to load the updated build and ensure\n// that the client and server in sync.\n// Starts as an empty string. In practice, because setAppBuildId is called\n// during initialization before hydration starts, this will always get\n// reassigned to the actual build ID before it's ever needed by a navigation.\n// If for some reasons it didn't, due to a bug or race condition, then on\n// navigation the build comparision would fail and trigger an MPA navigation.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getAppBuildId: function() {\n return getAppBuildId;\n },\n setAppBuildId: function() {\n return setAppBuildId;\n }\n});\nlet globalBuildId = '';\nfunction setAppBuildId(buildId) {\n globalBuildId = buildId;\n}\nfunction getAppBuildId() {\n return globalBuildId;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-build-id.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtYnVpbGQtaWQuanMiLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSx3REFBd0Q7QUFDeEQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsc0NBQXNDO0FBRXRDLDBFQUEwRTtBQUMxRSxzRUFBc0U7QUFDdEUsNkVBQTZFO0FBQzdFLHlFQUF5RTtBQUN6RSw2RUFBNkU7Ozs7Ozs7Ozs7Ozs7SUFPN0RBLGFBQWE7ZUFBYkE7O0lBSkFDLGFBQWE7ZUFBYkE7OztBQUZoQixJQUFJQyxnQkFBd0I7QUFFckIsU0FBU0QsY0FBY0UsT0FBZTtJQUMzQ0QsZ0JBQWdCQztBQUNsQjtBQUVPLFNBQVNIO0lBQ2QsT0FBT0U7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXHNyY1xcY2xpZW50XFxhcHAtYnVpbGQtaWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBnZXRzIGFzc2lnbmVkIGFzIGEgc2lkZS1lZmZlY3QgZHVyaW5nIGFwcCBpbml0aWFsaXphdGlvbi4gQmVjYXVzZSBpdFxuLy8gcmVwcmVzZW50cyB0aGUgYnVpbGQgdXNlZCB0byBjcmVhdGUgdGhlIEpTIGJ1bmRsZSwgaXQgc2hvdWxkIG5ldmVyIGNoYW5nZVxuLy8gYWZ0ZXIgYmVpbmcgc2V0LCBzbyB3ZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZS5cbi8vXG4vLyBXaGVuIHBlcmZvcm1pbmcgUlNDIHJlcXVlc3RzLCBpZiB0aGUgaW5jb21pbmcgZGF0YSBoYXMgYSBkaWZmZXJlbnQgYnVpbGQgSUQsXG4vLyB3ZSBwZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uL3JlZnJlc2ggdG8gbG9hZCB0aGUgdXBkYXRlZCBidWlsZCBhbmQgZW5zdXJlXG4vLyB0aGF0IHRoZSBjbGllbnQgYW5kIHNlcnZlciBpbiBzeW5jLlxuXG4vLyBTdGFydHMgYXMgYW4gZW1wdHkgc3RyaW5nLiBJbiBwcmFjdGljZSwgYmVjYXVzZSBzZXRBcHBCdWlsZElkIGlzIGNhbGxlZFxuLy8gZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlZm9yZSBoeWRyYXRpb24gc3RhcnRzLCB0aGlzIHdpbGwgYWx3YXlzIGdldFxuLy8gcmVhc3NpZ25lZCB0byB0aGUgYWN0dWFsIGJ1aWxkIElEIGJlZm9yZSBpdCdzIGV2ZXIgbmVlZGVkIGJ5IGEgbmF2aWdhdGlvbi5cbi8vIElmIGZvciBzb21lIHJlYXNvbnMgaXQgZGlkbid0LCBkdWUgdG8gYSBidWcgb3IgcmFjZSBjb25kaXRpb24sIHRoZW4gb25cbi8vIG5hdmlnYXRpb24gdGhlIGJ1aWxkIGNvbXBhcmlzaW9uIHdvdWxkIGZhaWwgYW5kIHRyaWdnZXIgYW4gTVBBIG5hdmlnYXRpb24uXG5sZXQgZ2xvYmFsQnVpbGRJZDogc3RyaW5nID0gJydcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFwcEJ1aWxkSWQoYnVpbGRJZDogc3RyaW5nKSB7XG4gIGdsb2JhbEJ1aWxkSWQgPSBidWlsZElkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBCdWlsZElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBnbG9iYWxCdWlsZElkXG59XG4iXSwibmFtZXMiOlsiZ2V0QXBwQnVpbGRJZCIsInNldEFwcEJ1aWxkSWQiLCJnbG9iYWxCdWlsZElkIiwiYnVpbGRJZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-build-id.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/app-call-server.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/client/app-call-server.js ***! \**********************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"callServer\", ({\n enumerable: true,\n get: function() {\n return callServer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./components/router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _useactionqueue = __webpack_require__(/*! ./components/use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nasync function callServer(actionId, actionArgs) {\n return new Promise((resolve, reject)=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_SERVER_ACTION,\n actionId,\n actionArgs,\n resolve,\n reject\n });\n });\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-call-server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtY2FsbC1zZXJ2ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4Q0FJc0JBOzs7ZUFBQUE7OzttQ0FKVTtnREFDSzs0Q0FDRztBQUVqQyxlQUFlQSxXQUFXQyxRQUFnQixFQUFFQyxVQUFpQjtJQUNsRSxPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDM0JDLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1lBQ2RDLENBQUFBLEdBQUFBLGdCQUFBQSx1QkFBQUEsRUFBd0I7Z0JBQ3RCQyxNQUFNQyxvQkFBQUEsb0JBQW9CO2dCQUMxQlI7Z0JBQ0FDO2dCQUNBRTtnQkFDQUM7WUFDRjtRQUNGO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXHNyY1xcY2xpZW50XFxhcHAtY2FsbC1zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhcnRUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBQ1RJT05fU0VSVkVSX0FDVElPTiB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsU2VydmVyKGFjdGlvbklkOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IGFueVtdKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogQUNUSU9OX1NFUlZFUl9BQ1RJT04sXG4gICAgICAgIGFjdGlvbklkLFxuICAgICAgICBhY3Rpb25BcmdzLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY2FsbFNlcnZlciIsImFjdGlvbklkIiwiYWN0aW9uQXJncyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic3RhcnRUcmFuc2l0aW9uIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-call-server.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/app-find-source-map-url.js ***! \******************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findSourceMapURL\", ({\n enumerable: true,\n get: function() {\n return findSourceMapURL;\n }\n}));\nconst basePath = false || '';\nconst pathname = \"\" + basePath + \"/__nextjs_source-map\";\nconst findSourceMapURL = true ? function findSourceMapURL(filename) {\n if (filename === '') {\n return null;\n }\n if (filename.startsWith(document.location.origin) && filename.includes('/_next/static')) {\n // This is a request for a client chunk. This can only happen when\n // using Turbopack. In this case, since we control how those source\n // maps are generated, we can safely assume that the sourceMappingURL\n // is relative to the filename, with an added `.map` extension. The\n // browser can just request this file, and it gets served through the\n // normal dev server, without the need to route this through\n // the `/__nextjs_source-map` dev middleware.\n return \"\" + filename + \".map\";\n }\n const url = new URL(pathname, document.location.origin);\n url.searchParams.set('filename', filename);\n return url.href;\n} : 0;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-find-source-map-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hcHAtZmluZC1zb3VyY2UtbWFwLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7O29EQUdhQTs7O2VBQUFBOzs7QUFIYixNQUFNQyxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELE1BQU1HLFdBQVksS0FBRUosV0FBUztBQUV0QixNQUFNRCxtQkFDWEUsS0FBb0IsR0FDaEIsU0FBU0YsaUJBQWlCTyxRQUFnQjtJQUN4QyxJQUFJQSxhQUFhLElBQUk7UUFDbkIsT0FBTztJQUNUO0lBRUEsSUFDRUEsU0FBU0MsVUFBVSxDQUFDQyxTQUFTQyxRQUFRLENBQUNDLE1BQU0sS0FDNUNKLFNBQVNLLFFBQVEsQ0FBQyxrQkFDbEI7UUFDQSxrRUFBa0U7UUFDbEUsbUVBQW1FO1FBQ25FLHFFQUFxRTtRQUNyRSxtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLDREQUE0RDtRQUM1RCw2Q0FBNkM7UUFDN0MsT0FBUSxLQUFFTCxXQUFTO0lBQ3JCO0lBRUEsTUFBTU0sTUFBTSxJQUFJQyxJQUFJVCxVQUFVSSxTQUFTQyxRQUFRLENBQUNDLE1BQU07SUFDdERFLElBQUlFLFlBQVksQ0FBQ0MsR0FBRyxDQUFDLFlBQVlUO0lBRWpDLE9BQU9NLElBQUlJLElBQUk7QUFDakIsSUFDQUMsQ0FBU0EiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxzcmNcXGNsaWVudFxcYXBwLWZpbmQtc291cmNlLW1hcC11cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnXG5jb25zdCBwYXRobmFtZSA9IGAke2Jhc2VQYXRofS9fX25leHRqc19zb3VyY2UtbWFwYFxuXG5leHBvcnQgY29uc3QgZmluZFNvdXJjZU1hcFVSTCA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiBmaW5kU291cmNlTWFwVVJMKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZmlsZW5hbWUuc3RhcnRzV2l0aChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pICYmXG4gICAgICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJy9fbmV4dC9zdGF0aWMnKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVxdWVzdCBmb3IgYSBjbGllbnQgY2h1bmsuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW5cbiAgICAgICAgICAvLyB1c2luZyBUdXJib3BhY2suIEluIHRoaXMgY2FzZSwgc2luY2Ugd2UgY29udHJvbCBob3cgdGhvc2Ugc291cmNlXG4gICAgICAgICAgLy8gbWFwcyBhcmUgZ2VuZXJhdGVkLCB3ZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGF0IHRoZSBzb3VyY2VNYXBwaW5nVVJMXG4gICAgICAgICAgLy8gaXMgcmVsYXRpdmUgdG8gdGhlIGZpbGVuYW1lLCB3aXRoIGFuIGFkZGVkIGAubWFwYCBleHRlbnNpb24uIFRoZVxuICAgICAgICAgIC8vIGJyb3dzZXIgY2FuIGp1c3QgcmVxdWVzdCB0aGlzIGZpbGUsIGFuZCBpdCBnZXRzIHNlcnZlZCB0aHJvdWdoIHRoZVxuICAgICAgICAgIC8vIG5vcm1hbCBkZXYgc2VydmVyLCB3aXRob3V0IHRoZSBuZWVkIHRvIHJvdXRlIHRoaXMgdGhyb3VnaFxuICAgICAgICAgIC8vIHRoZSBgL19fbmV4dGpzX3NvdXJjZS1tYXBgIGRldiBtaWRkbGV3YXJlLlxuICAgICAgICAgIHJldHVybiBgJHtmaWxlbmFtZX0ubWFwYFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChwYXRobmFtZSwgZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKVxuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZmlsZW5hbWUnLCBmaWxlbmFtZSlcblxuICAgICAgICByZXR1cm4gdXJsLmhyZWZcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZFxuIl0sIm5hbWVzIjpbImZpbmRTb3VyY2VNYXBVUkwiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aG5hbWUiLCJOT0RFX0VOViIsImZpbGVuYW1lIiwic3RhcnRzV2l0aCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJvcmlnaW4iLCJpbmNsdWRlcyIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsImhyZWYiLCJ1bmRlZmluZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/app-router-headers.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-headers.js ***! \************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDYUEsYUFBYTtlQUFiQTs7SUFpQkFDLGNBQWM7ZUFBZEE7O0lBZUFDLDRCQUE0QjtlQUE1QkE7O0lBSkFDLHdCQUF3QjtlQUF4QkE7O0lBZkFDLDRCQUE0QjtlQUE1QkE7O0lBREFDLHVCQUF1QjtlQUF2QkE7O0lBbUJBQyx3QkFBd0I7ZUFBeEJBOztJQUZBQywwQkFBMEI7ZUFBMUJBOztJQUNBQywyQkFBMkI7ZUFBM0JBOztJQXpCQUMsMkJBQTJCO2VBQTNCQTs7SUFLQUMsbUNBQW1DO2VBQW5DQTs7SUFpQkFDLDZCQUE2QjtlQUE3QkE7O0lBdkJBQyw2QkFBNkI7ZUFBN0JBOztJQXFCQUMsb0JBQW9CO2VBQXBCQTs7SUFYQUMsUUFBUTtlQUFSQTs7SUFDQUMsdUJBQXVCO2VBQXZCQTs7SUFoQkFDLFVBQVU7ZUFBVkE7OztBQUFOLE1BQU1BLGFBQWE7QUFDbkIsTUFBTWhCLGdCQUFnQjtBQUl0QixNQUFNWSxnQ0FBZ0M7QUFDdEMsTUFBTUgsOEJBQThCO0FBS3BDLE1BQU1DLHNDQUNYO0FBQ0ssTUFBTUwsMEJBQTBCO0FBQ2hDLE1BQU1ELCtCQUErQjtBQUNyQyxNQUFNVSxXQUFXO0FBQ2pCLE1BQU1DLDBCQUEwQjtBQUVoQyxNQUFNZCxpQkFBaUI7SUFDNUJlO0lBQ0FKO0lBQ0FIO0lBQ0FKO0lBQ0FLO0NBQ0Q7QUFFTSxNQUFNRyx1QkFBdUI7QUFFN0IsTUFBTUYsZ0NBQWdDO0FBQ3RDLE1BQU1SLDJCQUEyQjtBQUNqQyxNQUFNSSw2QkFBNkI7QUFDbkMsTUFBTUMsOEJBQThCO0FBQ3BDLE1BQU1GLDJCQUEyQjtBQUNqQyxNQUFNSiwrQkFBK0IiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXGFwcC1yb3V0ZXItaGVhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9ICdyc2MnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgQUNUSU9OX0hFQURFUiA9ICduZXh0LWFjdGlvbicgYXMgY29uc3Rcbi8vIFRPRE86IEluc3RlYWQgb2Ygc2VuZGluZyB0aGUgZnVsbCByb3V0ZXIgc3RhdGUsIHdlIG9ubHkgbmVlZCB0byBzZW5kIHRoZVxuLy8gc2VnbWVudCBwYXRoLiBTYXZlcyBieXRlcy4gVGhlbiB3ZSBjb3VsZCBhbHNvIHVzZSB0aGlzIGZpZWxkIGZvciBzZWdtZW50XG4vLyBwcmVmZXRjaGVzLCB3aGljaCBhbHNvIG5lZWQgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgc2VnbWVudC5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiA9ICduZXh0LXJvdXRlci1zdGF0ZS10cmVlJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiA9ICduZXh0LXJvdXRlci1wcmVmZXRjaCcgYXMgY29uc3Rcbi8vIFRoaXMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHNlZ21lbnQgYmVpbmcgcHJlZmV0Y2hlZC5cbi8vIFRPRE86IElmIHdlIGNoYW5nZSBuZXh0LXJvdXRlci1zdGF0ZS10cmVlIHRvIGJlIGEgc2VnbWVudCBwYXRoLCB3ZSBjYW4gdXNlXG4vLyB0aGF0IGluc3RlYWQuIFRoZW4gbmV4dC1yb3V0ZXItcHJlZmV0Y2ggYW5kIG5leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2ggY2FuXG4vLyBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBlbnVtLlxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSID1cbiAgJ25leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIgPSAnbmV4dC1obXItcmVmcmVzaCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFID0gJ19fbmV4dF9obXJfcmVmcmVzaF9oYXNoX18nIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSAnbmV4dC11cmwnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC94LWNvbXBvbmVudCcgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IEZMSUdIVF9IRUFERVJTID0gW1xuICBSU0NfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX0hNUl9SRUZSRVNIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBORVhUX1JTQ19VTklPTl9RVUVSWSA9ICdfcnNjJyBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIgPSAneC1uZXh0anMtc3RhbGUtdGltZScgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIgPSAneC1uZXh0anMtcG9zdHBvbmVkJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSID0gJ3gtbmV4dGpzLXJld3JpdHRlbi1wYXRoJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcXVlcnknIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSID0gJ3gtbmV4dGpzLXByZXJlbmRlcicgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSID0gJ3gtbmV4dGpzLWFjdGlvbi1ub3QtZm91bmQnIGFzIGNvbnN0XG4iXSwibmFtZXMiOlsiQUNUSU9OX0hFQURFUiIsIkZMSUdIVF9IRUFERVJTIiwiTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsIk5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUiLCJORVhUX0hNUl9SRUZSRVNIX0hFQURFUiIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSIiwiTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJORVhUX1VSTCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiUlNDX0hFQURFUiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/bailout-to-client-rendering.js": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/bailout-to-client-rendering.js ***! \*********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"bailoutToClientRendering\", ({\n enumerable: true,\n get: function() {\n return bailoutToClientRendering;\n }\n}));\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../../server/app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nfunction bailoutToClientRendering(reason) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (workStore == null ? void 0 : workStore.forceStatic) return;\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n throw Object.defineProperty(new _bailouttocsr.BailoutToCSRError(reason), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=bailout-to-client-rendering.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2JhaWxvdXQtdG8tY2xpZW50LXJlbmRlcmluZy5qcyIsIm1hcHBpbmdzIjoiOzs7OzREQUlnQkE7OztlQUFBQTs7OzBDQUprQjtzREFDRDswREFDSTtBQUU5QixTQUFTQSx5QkFBeUJDLE1BQWM7SUFDckQsTUFBTUMsWUFBWUMsMEJBQUFBLGdCQUFnQixDQUFDQyxRQUFRO0lBRTNDLElBQUlGLGFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFVBQVdHLFdBQVcsRUFBRTtJQUU1QixNQUFNQyxnQkFBZ0JDLDhCQUFBQSxvQkFBb0IsQ0FBQ0gsUUFBUTtJQUVuRCxJQUFJRSxlQUFlO1FBQ2pCLE9BQVFBLGNBQWNFLElBQUk7WUFDeEIsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7Z0JBQ0gsTUFBTSxxQkFBNkIsQ0FBN0IsSUFBSUMsY0FBQUEsaUJBQWlCLENBQUNSLFNBQXRCOzJCQUFBO2dDQUFBO2tDQUFBO2dCQUE0QjtZQUNwQyxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUNIO1lBQ0Y7Z0JBQ0VLO1FBQ0o7SUFDRjtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxiYWlsb3V0LXRvLWNsaWVudC1yZW5kZXJpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFpbG91dFRvQ1NSRXJyb3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2xhenktZHluYW1pYy9iYWlsb3V0LXRvLWNzcidcbmltcG9ydCB7IHdvcmtBc3luY1N0b3JhZ2UgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyB3b3JrVW5pdEFzeW5jU3RvcmFnZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuXG5leHBvcnQgZnVuY3Rpb24gYmFpbG91dFRvQ2xpZW50UmVuZGVyaW5nKHJlYXNvbjogc3RyaW5nKTogdm9pZCB8IG5ldmVyIHtcbiAgY29uc3Qgd29ya1N0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG5cbiAgaWYgKHdvcmtTdG9yZT8uZm9yY2VTdGF0aWMpIHJldHVyblxuXG4gIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG5cbiAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgdGhyb3cgbmV3IEJhaWxvdXRUb0NTUkVycm9yKHJlYXNvbilcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImJhaWxvdXRUb0NsaWVudFJlbmRlcmluZyIsInJlYXNvbiIsIndvcmtTdG9yZSIsIndvcmtBc3luY1N0b3JhZ2UiLCJnZXRTdG9yZSIsImZvcmNlU3RhdGljIiwid29ya1VuaXRTdG9yZSIsIndvcmtVbml0QXN5bmNTdG9yYWdlIiwidHlwZSIsIkJhaWxvdXRUb0NTUkVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/bailout-to-client-rendering.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/bfcache.js": /*!*************************************************************!*\ !*** ./node_modules/next/dist/client/components/bfcache.js ***! \*************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useRouterBFCache\", ({\n enumerable: true,\n get: function() {\n return useRouterBFCache;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n// When the flag is disabled, only track the currently active tree\nconst MAX_BF_CACHE_ENTRIES = false ? 0 : 1;\nfunction useRouterBFCache(activeTree, activeStateKey) {\n // The currently active entry. The entries form a linked list, sorted in\n // order of most recently active. This allows us to reuse parts of the list\n // without cloning, unless there's a reordering or removal.\n // TODO: Once we start tracking back/forward history at each route level,\n // we should use the history order instead. In other words, when traversing\n // to an existing entry as a result of a popstate event, we should maintain\n // the existing order instead of moving it to the front of the list. I think\n // an initial implementation of this could be to pass an incrementing id\n // to history.pushState/replaceState, then use that here for ordering.\n const [prevActiveEntry, setPrevActiveEntry] = (0, _react.useState)(()=>{\n const initialEntry = {\n tree: activeTree,\n stateKey: activeStateKey,\n next: null\n };\n return initialEntry;\n });\n if (prevActiveEntry.tree === activeTree) {\n // Fast path. The active tree hasn't changed, so we can reuse the\n // existing state.\n return prevActiveEntry;\n }\n // The route tree changed. Note that this doesn't mean that the tree changed\n // *at this level* — the change may be due to a child route. Either way, we\n // need to either add or update the router tree in the bfcache.\n //\n // The rest of the code looks more complicated than it actually is because we\n // can't mutate the state in place; we have to copy-on-write.\n // Create a new entry for the active cache key. This is the head of the new\n // linked list.\n const newActiveEntry = {\n tree: activeTree,\n stateKey: activeStateKey,\n next: null\n };\n // We need to append the old list onto the new list. If the head of the new\n // list was already present in the cache, then we'll need to clone everything\n // that came before it. Then we can reuse the rest.\n let n = 1;\n let oldEntry = prevActiveEntry;\n let clonedEntry = newActiveEntry;\n while(oldEntry !== null && n < MAX_BF_CACHE_ENTRIES){\n if (oldEntry.stateKey === activeStateKey) {\n // Fast path. This entry in the old list that corresponds to the key that\n // is now active. We've already placed a clone of this entry at the front\n // of the new list. We can reuse the rest of the old list without cloning.\n // NOTE: We don't need to worry about eviction in this case because we\n // haven't increased the size of the cache, and we assume the max size\n // is constant across renders. If we were to change it to a dynamic limit,\n // then the implementation would need to account for that.\n clonedEntry.next = oldEntry.next;\n break;\n } else {\n // Clone the entry and append it to the list.\n n++;\n const entry = {\n tree: oldEntry.tree,\n stateKey: oldEntry.stateKey,\n next: null\n };\n clonedEntry.next = entry;\n clonedEntry = entry;\n }\n oldEntry = oldEntry.next;\n }\n setPrevActiveEntry(newActiveEntry);\n return newActiveEntry;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=bfcache.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2JmY2FjaGUuanMiLCJtYXBwaW5ncyI6Ijs7OztvREFpQ2dCQTs7O2VBQUFBOzs7bUNBaENTO0FBRXpCLGtFQUFrRTtBQUNsRSxNQUFNQyx1QkFBdUJDLE1BQWtDLEdBQUcsQ0FBQyxHQUFHO0FBNkIvRCxTQUFTRixpQkFDZEssVUFBNkIsRUFDN0JDLGNBQXNCO0lBRXRCLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsMkRBQTJEO0lBQzNELHlFQUF5RTtJQUN6RSwyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsc0VBQXNFO0lBQ3RFLE1BQU0sQ0FBQ0MsaUJBQWlCQyxtQkFBbUIsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsUUFBQUEsRUFDNUM7UUFDRSxNQUFNQyxlQUFtQztZQUN2Q0MsTUFBTU47WUFDTk8sVUFBVU47WUFDVk8sTUFBTTtRQUNSO1FBQ0EsT0FBT0g7SUFDVDtJQUdGLElBQUlILGdCQUFnQkksSUFBSSxLQUFLTixZQUFZO1FBQ3ZDLGlFQUFpRTtRQUNqRSxrQkFBa0I7UUFDbEIsT0FBT0U7SUFDVDtJQUVBLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsK0RBQStEO0lBQy9ELEVBQUU7SUFDRiw2RUFBNkU7SUFDN0UsNkRBQTZEO0lBRTdELDJFQUEyRTtJQUMzRSxlQUFlO0lBQ2YsTUFBTU8saUJBQXFDO1FBQ3pDSCxNQUFNTjtRQUNOTyxVQUFVTjtRQUNWTyxNQUFNO0lBQ1I7SUFFQSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLG1EQUFtRDtJQUNuRCxJQUFJRSxJQUFJO0lBQ1IsSUFBSUMsV0FBc0NUO0lBQzFDLElBQUlVLGNBQWtDSDtJQUN0QyxNQUFPRSxhQUFhLFFBQVFELElBQUlkLHFCQUFzQjtRQUNwRCxJQUFJZSxTQUFTSixRQUFRLEtBQUtOLGdCQUFnQjtZQUN4Qyx5RUFBeUU7WUFDekUseUVBQXlFO1lBQ3pFLDBFQUEwRTtZQUMxRSxzRUFBc0U7WUFDdEUsc0VBQXNFO1lBQ3RFLDBFQUEwRTtZQUMxRSwwREFBMEQ7WUFDMURXLFlBQVlKLElBQUksR0FBR0csU0FBU0gsSUFBSTtZQUNoQztRQUNGLE9BQU87WUFDTCw2Q0FBNkM7WUFDN0NFO1lBQ0EsTUFBTUcsUUFBNEI7Z0JBQ2hDUCxNQUFNSyxTQUFTTCxJQUFJO2dCQUNuQkMsVUFBVUksU0FBU0osUUFBUTtnQkFDM0JDLE1BQU07WUFDUjtZQUNBSSxZQUFZSixJQUFJLEdBQUdLO1lBQ25CRCxjQUFjQztRQUNoQjtRQUNBRixXQUFXQSxTQUFTSCxJQUFJO0lBQzFCO0lBRUFMLG1CQUFtQk07SUFDbkIsT0FBT0E7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcYmZjYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG4vLyBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBvbmx5IHRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyZWVcbmNvbnN0IE1BWF9CRl9DQUNIRV9FTlRSSUVTID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CRl9DQUNIRSA/IDMgOiAxXG5cbmV4cG9ydCB0eXBlIFJvdXRlckJGQ2FjaGVFbnRyeSA9IHtcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgc3RhdGVLZXk6IHN0cmluZ1xuICAvLyBUaGUgZW50cmllcyBmb3JtIGEgbGlua2VkIGxpc3QsIHNvcnRlZCBpbiBvcmRlciBvZiBtb3N0IHJlY2VudGx5IGFjdGl2ZS5cbiAgbmV4dDogUm91dGVyQkZDYWNoZUVudHJ5IHwgbnVsbFxufVxuXG4vKipcbiAqIEtlZXBzIHRyYWNrIG9mIHRoZSBtb3N0IHJlY2VudCBOIHRyZWVzIChGbGlnaHRSb3V0ZXJTdGF0ZXMpIHRoYXQgd2VyZSBhY3RpdmVcbiAqIGF0IGEgY2VydGFpbiBzZWdtZW50IGxldmVsLiBFLmcuIGZvciBhIHNlZ21lbnQgXCIvYS9iL1twYXJhbV1cIiwgdGhpcyBob29rXG4gKiB0cmFja3MgdGhlIGxhc3QgTiBwYXJhbSB2YWx1ZXMgdGhhdCB0aGUgcm91dGVyIHJlbmRlcmVkIGZvciBOLlxuICpcbiAqIFRoZSByZXN1bHQgb2YgdGhpcyBob29rIHByZWNpc2VseSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgYW5kIG9yZGVyIG9mXG4gKiB0cmVlcyB0aGF0IGFyZSByZW5kZXJlZCBpbiBwYXJhbGxlbCBhdCB0aGVpciBzZWdtZW50IGxldmVsLlxuICpcbiAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2FjaGUgaXMgdG8gd2UgY2FuIHByZXNlcnZlIHRoZSBSZWFjdCBhbmQgRE9NIHN0YXRlIG9mXG4gKiBzb21lIG51bWJlciBvZiBpbmFjdGl2ZSB0cmVlcywgYnkgcmVuZGVyaW5nIHRoZW0gaW4gYW4gPEFjdGl2aXR5PiBib3VuZGFyeS5cbiAqIFRoYXQgbWVhbnMgaXQgd291bGQgbm90IG1ha2Ugc2Vuc2UgZm9yIHRoZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGNhY2hlIHRvIGJlXG4gKiBhbnkgbG9uZ2VyIHRoYW4gdGhlIGxpZmV0aW1lIG9mIHRoZSBSZWFjdCB0cmVlOyBlLmcuIGlmIHRoZSBob29rIHdlcmVcbiAqIHVubW91bnRlZCwgdGhlbiB0aGUgUmVhY3QgdHJlZSB3b3VsZCBiZSwgdG9vLiBTbywgd2UgdXNlIFJlYWN0IHN0YXRlIHRvXG4gKiBtYW5hZ2UgaXQuXG4gKlxuICogTm90ZSB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBSU0MgZGF0YSBmb3IgdGhlIGNhY2hlIGVudHJpZXMgaW4gdGhpcyBob29rIOKAlFxuICogdGhlIGRhdGEgZm9yIGluYWN0aXZlIHNlZ21lbnRzIGlzIHN0b3JlZCBpbiB0aGUgcGFyZW50IENhY2hlTm9kZSwgd2hpY2hcbiAqICpkb2VzKiBoYXZlIGEgbG9uZ2VyIGxpZmV0aW1lIHRoYW4gdGhlIFJlYWN0IHRyZWUuIFRoaXMgaG9vayBvbmx5IGRldGVybWluZXNcbiAqIHdoaWNoIG9mIHRob3NlIHRyZWVzIHNob3VsZCBoYXZlIHRoZWlyICpzdGF0ZSogcHJlc2VydmVkLCBieSA8QWN0aXZpdHk+LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUm91dGVyQkZDYWNoZShcbiAgYWN0aXZlVHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGFjdGl2ZVN0YXRlS2V5OiBzdHJpbmdcbik6IFJvdXRlckJGQ2FjaGVFbnRyeSB7XG4gIC8vIFRoZSBjdXJyZW50bHkgYWN0aXZlIGVudHJ5LiBUaGUgZW50cmllcyBmb3JtIGEgbGlua2VkIGxpc3QsIHNvcnRlZCBpblxuICAvLyBvcmRlciBvZiBtb3N0IHJlY2VudGx5IGFjdGl2ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcmV1c2UgcGFydHMgb2YgdGhlIGxpc3RcbiAgLy8gd2l0aG91dCBjbG9uaW5nLCB1bmxlc3MgdGhlcmUncyBhIHJlb3JkZXJpbmcgb3IgcmVtb3ZhbC5cbiAgLy8gVE9ETzogT25jZSB3ZSBzdGFydCB0cmFja2luZyBiYWNrL2ZvcndhcmQgaGlzdG9yeSBhdCBlYWNoIHJvdXRlIGxldmVsLFxuICAvLyB3ZSBzaG91bGQgdXNlIHRoZSBoaXN0b3J5IG9yZGVyIGluc3RlYWQuIEluIG90aGVyIHdvcmRzLCB3aGVuIHRyYXZlcnNpbmdcbiAgLy8gdG8gYW4gZXhpc3RpbmcgZW50cnkgYXMgYSByZXN1bHQgb2YgYSBwb3BzdGF0ZSBldmVudCwgd2Ugc2hvdWxkIG1haW50YWluXG4gIC8vIHRoZSBleGlzdGluZyBvcmRlciBpbnN0ZWFkIG9mIG1vdmluZyBpdCB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuIEkgdGhpbmtcbiAgLy8gYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNvdWxkIGJlIHRvIHBhc3MgYW4gaW5jcmVtZW50aW5nIGlkXG4gIC8vIHRvIGhpc3RvcnkucHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSwgdGhlbiB1c2UgdGhhdCBoZXJlIGZvciBvcmRlcmluZy5cbiAgY29uc3QgW3ByZXZBY3RpdmVFbnRyeSwgc2V0UHJldkFjdGl2ZUVudHJ5XSA9IHVzZVN0YXRlPFJvdXRlckJGQ2FjaGVFbnRyeT4oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbEVudHJ5OiBSb3V0ZXJCRkNhY2hlRW50cnkgPSB7XG4gICAgICAgIHRyZWU6IGFjdGl2ZVRyZWUsXG4gICAgICAgIHN0YXRlS2V5OiBhY3RpdmVTdGF0ZUtleSxcbiAgICAgICAgbmV4dDogbnVsbCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbml0aWFsRW50cnlcbiAgICB9XG4gIClcblxuICBpZiAocHJldkFjdGl2ZUVudHJ5LnRyZWUgPT09IGFjdGl2ZVRyZWUpIHtcbiAgICAvLyBGYXN0IHBhdGguIFRoZSBhY3RpdmUgdHJlZSBoYXNuJ3QgY2hhbmdlZCwgc28gd2UgY2FuIHJldXNlIHRoZVxuICAgIC8vIGV4aXN0aW5nIHN0YXRlLlxuICAgIHJldHVybiBwcmV2QWN0aXZlRW50cnlcbiAgfVxuXG4gIC8vIFRoZSByb3V0ZSB0cmVlIGNoYW5nZWQuIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSB0cmVlIGNoYW5nZWRcbiAgLy8gKmF0IHRoaXMgbGV2ZWwqIOKAlCB0aGUgY2hhbmdlIG1heSBiZSBkdWUgdG8gYSBjaGlsZCByb3V0ZS4gRWl0aGVyIHdheSwgd2VcbiAgLy8gbmVlZCB0byBlaXRoZXIgYWRkIG9yIHVwZGF0ZSB0aGUgcm91dGVyIHRyZWUgaW4gdGhlIGJmY2FjaGUuXG4gIC8vXG4gIC8vIFRoZSByZXN0IG9mIHRoZSBjb2RlIGxvb2tzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBpdCBhY3R1YWxseSBpcyBiZWNhdXNlIHdlXG4gIC8vIGNhbid0IG11dGF0ZSB0aGUgc3RhdGUgaW4gcGxhY2U7IHdlIGhhdmUgdG8gY29weS1vbi13cml0ZS5cblxuICAvLyBDcmVhdGUgYSBuZXcgZW50cnkgZm9yIHRoZSBhY3RpdmUgY2FjaGUga2V5LiBUaGlzIGlzIHRoZSBoZWFkIG9mIHRoZSBuZXdcbiAgLy8gbGlua2VkIGxpc3QuXG4gIGNvbnN0IG5ld0FjdGl2ZUVudHJ5OiBSb3V0ZXJCRkNhY2hlRW50cnkgPSB7XG4gICAgdHJlZTogYWN0aXZlVHJlZSxcbiAgICBzdGF0ZUtleTogYWN0aXZlU3RhdGVLZXksXG4gICAgbmV4dDogbnVsbCxcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gYXBwZW5kIHRoZSBvbGQgbGlzdCBvbnRvIHRoZSBuZXcgbGlzdC4gSWYgdGhlIGhlYWQgb2YgdGhlIG5ld1xuICAvLyBsaXN0IHdhcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNhY2hlLCB0aGVuIHdlJ2xsIG5lZWQgdG8gY2xvbmUgZXZlcnl0aGluZ1xuICAvLyB0aGF0IGNhbWUgYmVmb3JlIGl0LiBUaGVuIHdlIGNhbiByZXVzZSB0aGUgcmVzdC5cbiAgbGV0IG4gPSAxXG4gIGxldCBvbGRFbnRyeTogUm91dGVyQkZDYWNoZUVudHJ5IHwgbnVsbCA9IHByZXZBY3RpdmVFbnRyeVxuICBsZXQgY2xvbmVkRW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSA9IG5ld0FjdGl2ZUVudHJ5XG4gIHdoaWxlIChvbGRFbnRyeSAhPT0gbnVsbCAmJiBuIDwgTUFYX0JGX0NBQ0hFX0VOVFJJRVMpIHtcbiAgICBpZiAob2xkRW50cnkuc3RhdGVLZXkgPT09IGFjdGl2ZVN0YXRlS2V5KSB7XG4gICAgICAvLyBGYXN0IHBhdGguIFRoaXMgZW50cnkgaW4gdGhlIG9sZCBsaXN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGtleSB0aGF0XG4gICAgICAvLyBpcyBub3cgYWN0aXZlLiBXZSd2ZSBhbHJlYWR5IHBsYWNlZCBhIGNsb25lIG9mIHRoaXMgZW50cnkgYXQgdGhlIGZyb250XG4gICAgICAvLyBvZiB0aGUgbmV3IGxpc3QuIFdlIGNhbiByZXVzZSB0aGUgcmVzdCBvZiB0aGUgb2xkIGxpc3Qgd2l0aG91dCBjbG9uaW5nLlxuICAgICAgLy8gTk9URTogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBldmljdGlvbiBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZVxuICAgICAgLy8gaGF2ZW4ndCBpbmNyZWFzZWQgdGhlIHNpemUgb2YgdGhlIGNhY2hlLCBhbmQgd2UgYXNzdW1lIHRoZSBtYXggc2l6ZVxuICAgICAgLy8gaXMgY29uc3RhbnQgYWNyb3NzIHJlbmRlcnMuIElmIHdlIHdlcmUgdG8gY2hhbmdlIGl0IHRvIGEgZHluYW1pYyBsaW1pdCxcbiAgICAgIC8vIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdvdWxkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhhdC5cbiAgICAgIGNsb25lZEVudHJ5Lm5leHQgPSBvbGRFbnRyeS5uZXh0XG4gICAgICBicmVha1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDbG9uZSB0aGUgZW50cnkgYW5kIGFwcGVuZCBpdCB0byB0aGUgbGlzdC5cbiAgICAgIG4rK1xuICAgICAgY29uc3QgZW50cnk6IFJvdXRlckJGQ2FjaGVFbnRyeSA9IHtcbiAgICAgICAgdHJlZTogb2xkRW50cnkudHJlZSxcbiAgICAgICAgc3RhdGVLZXk6IG9sZEVudHJ5LnN0YXRlS2V5LFxuICAgICAgICBuZXh0OiBudWxsLFxuICAgICAgfVxuICAgICAgY2xvbmVkRW50cnkubmV4dCA9IGVudHJ5XG4gICAgICBjbG9uZWRFbnRyeSA9IGVudHJ5XG4gICAgfVxuICAgIG9sZEVudHJ5ID0gb2xkRW50cnkubmV4dFxuICB9XG5cbiAgc2V0UHJldkFjdGl2ZUVudHJ5KG5ld0FjdGl2ZUVudHJ5KVxuICByZXR1cm4gbmV3QWN0aXZlRW50cnlcbn1cbiJdLCJuYW1lcyI6WyJ1c2VSb3V0ZXJCRkNhY2hlIiwiTUFYX0JGX0NBQ0hFX0VOVFJJRVMiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CRl9DQUNIRSIsImFjdGl2ZVRyZWUiLCJhY3RpdmVTdGF0ZUtleSIsInByZXZBY3RpdmVFbnRyeSIsInNldFByZXZBY3RpdmVFbnRyeSIsInVzZVN0YXRlIiwiaW5pdGlhbEVudHJ5IiwidHJlZSIsInN0YXRlS2V5IiwibmV4dCIsIm5ld0FjdGl2ZUVudHJ5IiwibiIsIm9sZEVudHJ5IiwiY2xvbmVkRW50cnkiLCJlbnRyeSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/bfcache.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/global-error.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _handleisrerror = __webpack_require__(/*! ../handle-isr-error */ \"(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n text: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '28px',\n margin: '0 8px'\n }\n};\nfunction DefaultGlobalError(param) {\n let { error } = param;\n const digest = error == null ? void 0 : error.digest;\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n id: \"__next_error__\",\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {}),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"body\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: error\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"h2\", {\n style: styles.text,\n children: [\n \"Application error: a \",\n digest ? 'server' : 'client',\n \"-side exception has occurred while loading \",\n window.location.hostname,\n \" (see the\",\n ' ',\n digest ? 'server logs' : 'browser console',\n \" for more information).\"\n ]\n }),\n digest ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"p\", {\n style: styles.text,\n children: \"Digest: \" + digest\n }) : null\n ]\n })\n })\n ]\n })\n ]\n });\n}\nconst _default = DefaultGlobalError;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=global-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBb0RBOzs7ZUFBQTs7Ozs0Q0FsRCtCO0FBRS9CLE1BQU1BLFNBQVM7SUFDYkMsT0FBTztRQUNMLDBGQUEwRjtRQUMxRkMsWUFDRTtRQUNGQyxRQUFRO1FBQ1JDLFdBQVc7UUFDWEMsU0FBUztRQUNUQyxlQUFlO1FBQ2ZDLFlBQVk7UUFDWkMsZ0JBQWdCO0lBQ2xCO0lBQ0FDLE1BQU07UUFDSkMsVUFBVTtRQUNWQyxZQUFZO1FBQ1pDLFlBQVk7UUFDWkMsUUFBUTtJQUNWO0FBQ0Y7QUFLQSxTQUFTQyxtQkFBbUIsS0FBeUI7SUFBekIsTUFBRWIsS0FBSyxFQUFrQixHQUF6QjtJQUMxQixNQUFNYyxTQUE2QmQsU0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsTUFBT2MsTUFBTTtJQUNoRCxxQkFDRSxzQkFBQ0MsUUFBQUE7UUFBS0MsSUFBRzs7MEJBQ1AscUJBQUNDLFFBQUFBLENBQUFBOzBCQUNELHNCQUFDQyxRQUFBQTs7a0NBQ0MscUJBQUNDLGdCQUFBQSxjQUFjO3dCQUFDbkIsT0FBT0E7O2tDQUN2QixxQkFBQ29CLE9BQUFBO3dCQUFJQyxPQUFPdEIsT0FBT0MsS0FBSztrQ0FDdEIsb0NBQUNvQixPQUFBQTs7OENBQ0Msc0JBQUNFLE1BQUFBO29DQUFHRCxPQUFPdEIsT0FBT1MsSUFBSTs7d0NBQUU7d0NBQ0FNLFNBQVMsV0FBVzt3Q0FBUzt3Q0FDdkJTLE9BQU9DLFFBQVEsQ0FBQ0MsUUFBUTt3Q0FBQzt3Q0FBVTt3Q0FDOURYLFNBQVMsZ0JBQWdCO3dDQUFrQjs7O2dDQUc3Q0EsU0FBQUEsV0FBQUEsR0FBUyxxQkFBQ1ksS0FBQUE7b0NBQUVMLE9BQU90QixPQUFPUyxJQUFJOzhDQUFJLGFBQVVNO3FDQUFnQjs7Ozs7Ozs7QUFNekU7TUFJQSxXQUFlRCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxidWlsdGluXFxnbG9iYWwtZXJyb3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBIYW5kbGVJU1JFcnJvciB9IGZyb20gJy4uL2hhbmRsZS1pc3ItZXJyb3InXG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgZXJyb3I6IHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUvYmxvYi9tYWluL21vZGVybi1ub3JtYWxpemUuY3NzI0wzOC1MNTJcbiAgICBmb250RmFtaWx5OlxuICAgICAgJ3N5c3RlbS11aSxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLFwiQXBwbGUgQ29sb3IgRW1vamlcIixcIlNlZ29lIFVJIEVtb2ppXCInLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICBsaW5lSGVpZ2h0OiAnMjhweCcsXG4gICAgbWFyZ2luOiAnMCA4cHgnLFxuICB9LFxufSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBHbG9iYWxFcnJvckNvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8e1xuICBlcnJvcjogYW55XG59PlxuZnVuY3Rpb24gRGVmYXVsdEdsb2JhbEVycm9yKHsgZXJyb3IgfTogeyBlcnJvcjogYW55IH0pIHtcbiAgY29uc3QgZGlnZXN0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSBlcnJvcj8uZGlnZXN0XG4gIHJldHVybiAoXG4gICAgPGh0bWwgaWQ9XCJfX25leHRfZXJyb3JfX1wiPlxuICAgICAgPGhlYWQ+PC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxIYW5kbGVJU1JFcnJvciBlcnJvcj17ZXJyb3J9IC8+XG4gICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5lcnJvcn0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMiBzdHlsZT17c3R5bGVzLnRleHR9PlxuICAgICAgICAgICAgICBBcHBsaWNhdGlvbiBlcnJvcjogYSB7ZGlnZXN0ID8gJ3NlcnZlcicgOiAnY2xpZW50J30tc2lkZSBleGNlcHRpb25cbiAgICAgICAgICAgICAgaGFzIG9jY3VycmVkIHdoaWxlIGxvYWRpbmcge3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gKHNlZSB0aGV7JyAnfVxuICAgICAgICAgICAgICB7ZGlnZXN0ID8gJ3NlcnZlciBsb2dzJyA6ICdicm93c2VyIGNvbnNvbGUnfSBmb3IgbW9yZVxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbikuXG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAge2RpZ2VzdCA/IDxwIHN0eWxlPXtzdHlsZXMudGV4dH0+e2BEaWdlc3Q6ICR7ZGlnZXN0fWB9PC9wPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKVxufVxuXG4vLyBFeHBvcnRlZCBzbyB0aGF0IHRoZSBpbXBvcnQgc2lnbmF0dXJlIGluIHRoZSBsb2FkZXJzIGNhbiBiZSBpZGVudGljYWwgdG8gdXNlclxuLy8gc3VwcGxpZWQgY3VzdG9tIGdsb2JhbCBlcnJvciBzaWduYXR1cmVzLlxuZXhwb3J0IGRlZmF1bHQgRGVmYXVsdEdsb2JhbEVycm9yXG4iXSwibmFtZXMiOlsic3R5bGVzIiwiZXJyb3IiLCJmb250RmFtaWx5IiwiaGVpZ2h0IiwidGV4dEFsaWduIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ0ZXh0IiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsIm1hcmdpbiIsIkRlZmF1bHRHbG9iYWxFcnJvciIsImRpZ2VzdCIsImh0bWwiLCJpZCIsImhlYWQiLCJib2R5IiwiSGFuZGxlSVNSRXJyb3IiLCJkaXYiLCJzdHlsZSIsImgyIiwid2luZG93IiwibG9jYXRpb24iLCJob3N0bmFtZSIsInAiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/client-page.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/components/client-page.js ***! \*****************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ClientPageRoot\", ({\n enumerable: true,\n get: function() {\n return ClientPageRoot;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction ClientPageRoot(param) {\n let { Component, searchParams, params, promises } = param;\n if (true) {\n const { workAsyncStorage } = __webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"./work-async-storage.external\");\n let clientSearchParams;\n let clientParams;\n // We are going to instrument the searchParams prop with tracking for the\n // appropriate context. We wrap differently in prerendering vs rendering\n const store = workAsyncStorage.getStore();\n if (!store) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to exist when handling searchParams in a client Page.'), \"__NEXT_ERROR_CODE\", {\n value: \"E564\",\n enumerable: false,\n configurable: true\n });\n }\n const { createSearchParamsFromClient } = __webpack_require__(/*! ../../server/request/search-params */ \"(ssr)/./node_modules/next/dist/server/request/search-params.js\");\n clientSearchParams = createSearchParamsFromClient(searchParams, store);\n const { createParamsFromClient } = __webpack_require__(/*! ../../server/request/params */ \"(ssr)/./node_modules/next/dist/server/request/params.js\");\n clientParams = createParamsFromClient(params, store);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n params: clientParams,\n searchParams: clientSearchParams\n });\n } else {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=client-page.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBZWdCQTs7O2VBQUFBOzs7OzRDQVplO0FBWXhCLFNBQVNBLGVBQWUsS0FXOUI7SUFYOEIsTUFDN0JDLFNBQVMsRUFDVEMsWUFBWSxFQUNaQyxNQUFNLEVBQ04sUUFDUSxFQU1ULEdBWDhCO0lBWTdCLElBQUksSUFBNkIsRUFBRTtRQUNqQyxNQUFNLEVBQUVHLGdCQUFnQixFQUFFLEdBQ3hCQyxtQkFBT0EsQ0FBQywwRkFBcUQ7UUFFL0QsSUFBSUM7UUFDSixJQUFJQztRQUNKLHlFQUF5RTtRQUN6RSx3RUFBd0U7UUFDeEUsTUFBTUMsUUFBUUosaUJBQWlCSyxRQUFRO1FBQ3ZDLElBQUksQ0FBQ0QsT0FBTztZQUNWLE1BQU0scUJBRUwsQ0FGSyxJQUFJRSxnQkFBQUEsY0FBYyxDQUN0Qiw2RUFESTt1QkFBQTs0QkFBQTs4QkFBQTtZQUVOO1FBQ0Y7UUFFQSxNQUFNLEVBQUVDLDRCQUE0QixFQUFFLEdBQ3BDTixtQkFBT0EsQ0FBQywwR0FBb0M7UUFDOUNDLHFCQUFxQkssNkJBQTZCWCxjQUFjUTtRQUVoRSxNQUFNLEVBQUVJLHNCQUFzQixFQUFFLEdBQzlCUCxtQkFBT0EsQ0FBQyw0RkFBNkI7UUFDdkNFLGVBQWVLLHVCQUF1QlgsUUFBUU87UUFFOUMscUJBQU8scUJBQUNULFdBQUFBO1lBQVVFLFFBQVFNO1lBQWNQLGNBQWNNOztJQUN4RCxPQUFPLEVBU047QUFDSCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcY2xpZW50LXBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7IFBhcnNlZFVybFF1ZXJ5IH0gZnJvbSAncXVlcnlzdHJpbmcnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcblxuLyoqXG4gKiBXaGVuIHRoZSBQYWdlIGlzIGEgY2xpZW50IGNvbXBvbmVudCB3ZSBzZW5kIHRoZSBwYXJhbXMgYW5kIHNlYXJjaFBhcmFtcyB0byB0aGlzIGNsaWVudCB3cmFwcGVyXG4gKiB3aGVyZSB0aGV5IGFyZSB0dXJuZWQgaW50byBkeW5hbWljYWxseSB0cmFja2VkIHZhbHVlcyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBhY3R1YWwgUGFnZSBjb21wb25lbnQuXG4gKlxuICogYWRkaXRpb25hbGx5IHdlIG1heSBzZW5kIHByb21pc2VzIHJlcHJlc2VudGluZyB0aGUgcGFyYW1zIGFuZCBzZWFyY2hQYXJhbXMuIFdlIGRvbid0IGV2ZXIgdXNlIHRoZXNlIHBhc3NlZFxuICogdmFsdWVzIGJ1dCBpdCBjYW4gYmUgbmVjZXNzYXJ5IGZvciB0aGUgc2VuZGVyIHRvIHNlbmQgYSBQcm9taXNlIHRoYXQgZG9lc24ndCByZXNvbHZlIGluIGNlcnRhaW4gc2l0dWF0aW9ucy5cbiAqIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZGVjaWRlIGlmIHRoZSBwcm9taXNlcyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xpZW50UGFnZVJvb3Qoe1xuICBDb21wb25lbnQsXG4gIHNlYXJjaFBhcmFtcyxcbiAgcGFyYW1zLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByb21pc2VzLFxufToge1xuICBDb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICBzZWFyY2hQYXJhbXM6IFBhcnNlZFVybFF1ZXJ5XG4gIHBhcmFtczogUGFyYW1zXG4gIHByb21pc2VzPzogQXJyYXk8UHJvbWlzZTxhbnk+PlxufSkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCB7IHdvcmtBc3luY1N0b3JhZ2UgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKVxuXG4gICAgbGV0IGNsaWVudFNlYXJjaFBhcmFtczogUHJvbWlzZTxQYXJzZWRVcmxRdWVyeT5cbiAgICBsZXQgY2xpZW50UGFyYW1zOiBQcm9taXNlPFBhcmFtcz5cbiAgICAvLyBXZSBhcmUgZ29pbmcgdG8gaW5zdHJ1bWVudCB0aGUgc2VhcmNoUGFyYW1zIHByb3Agd2l0aCB0cmFja2luZyBmb3IgdGhlXG4gICAgLy8gYXBwcm9wcmlhdGUgY29udGV4dC4gV2Ugd3JhcCBkaWZmZXJlbnRseSBpbiBwcmVyZW5kZXJpbmcgdnMgcmVuZGVyaW5nXG4gICAgY29uc3Qgc3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICdFeHBlY3RlZCB3b3JrU3RvcmUgdG8gZXhpc3Qgd2hlbiBoYW5kbGluZyBzZWFyY2hQYXJhbXMgaW4gYSBjbGllbnQgUGFnZS4nXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgeyBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL3JlcXVlc3Qvc2VhcmNoLXBhcmFtcycpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMnKVxuICAgIGNsaWVudFNlYXJjaFBhcmFtcyA9IGNyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQoc2VhcmNoUGFyYW1zLCBzdG9yZSlcblxuICAgIGNvbnN0IHsgY3JlYXRlUGFyYW1zRnJvbUNsaWVudCB9ID1cbiAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcycpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcycpXG4gICAgY2xpZW50UGFyYW1zID0gY3JlYXRlUGFyYW1zRnJvbUNsaWVudChwYXJhbXMsIHN0b3JlKVxuXG4gICAgcmV0dXJuIDxDb21wb25lbnQgcGFyYW1zPXtjbGllbnRQYXJhbXN9IHNlYXJjaFBhcmFtcz17Y2xpZW50U2VhcmNoUGFyYW1zfSAvPlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgY3JlYXRlUmVuZGVyU2VhcmNoUGFyYW1zRnJvbUNsaWVudCB9ID1cbiAgICAgIHJlcXVpcmUoJy4uL3JlcXVlc3Qvc2VhcmNoLXBhcmFtcy5icm93c2VyJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vcmVxdWVzdC9zZWFyY2gtcGFyYW1zLmJyb3dzZXInKVxuICAgIGNvbnN0IGNsaWVudFNlYXJjaFBhcmFtcyA9IGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtc0Zyb21DbGllbnQoc2VhcmNoUGFyYW1zKVxuICAgIGNvbnN0IHsgY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudCB9ID1cbiAgICAgIHJlcXVpcmUoJy4uL3JlcXVlc3QvcGFyYW1zLmJyb3dzZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9yZXF1ZXN0L3BhcmFtcy5icm93c2VyJylcbiAgICBjb25zdCBjbGllbnRQYXJhbXMgPSBjcmVhdGVSZW5kZXJQYXJhbXNGcm9tQ2xpZW50KHBhcmFtcylcblxuICAgIHJldHVybiA8Q29tcG9uZW50IHBhcmFtcz17Y2xpZW50UGFyYW1zfSBzZWFyY2hQYXJhbXM9e2NsaWVudFNlYXJjaFBhcmFtc30gLz5cbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsaWVudFBhZ2VSb290IiwiQ29tcG9uZW50Iiwic2VhcmNoUGFyYW1zIiwicGFyYW1zIiwicHJvbWlzZXMiLCJ3aW5kb3ciLCJ3b3JrQXN5bmNTdG9yYWdlIiwicmVxdWlyZSIsImNsaWVudFNlYXJjaFBhcmFtcyIsImNsaWVudFBhcmFtcyIsInN0b3JlIiwiZ2V0U3RvcmUiLCJJbnZhcmlhbnRFcnJvciIsImNyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQiLCJjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IiwiY3JlYXRlUmVuZGVyU2VhcmNoUGFyYW1zRnJvbUNsaWVudCIsImNyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/client-page.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/client-segment.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/client-segment.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ClientSegmentRoot\", ({\n enumerable: true,\n get: function() {\n return ClientSegmentRoot;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction ClientSegmentRoot(param) {\n let { Component, slots, params, promise } = param;\n if (true) {\n const { workAsyncStorage } = __webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"./work-async-storage.external\");\n let clientParams;\n // We are going to instrument the searchParams prop with tracking for the\n // appropriate context. We wrap differently in prerendering vs rendering\n const store = workAsyncStorage.getStore();\n if (!store) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected workStore to exist when handling params in a client segment such as a Layout or Template.'), \"__NEXT_ERROR_CODE\", {\n value: \"E600\",\n enumerable: false,\n configurable: true\n });\n }\n const { createParamsFromClient } = __webpack_require__(/*! ../../server/request/params */ \"(ssr)/./node_modules/next/dist/server/request/params.js\");\n clientParams = createParamsFromClient(params, store);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n ...slots,\n params: clientParams\n });\n } else {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=client-segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBY2dCQTs7O2VBQUFBOzs7OzRDQVplO0FBWXhCLFNBQVNBLGtCQUFrQixLQVdqQztJQVhpQyxNQUNoQ0MsU0FBUyxFQUNUQyxLQUFLLEVBQ0xDLE1BQU0sRUFFTkMsT0FBTyxFQU1SLEdBWGlDO0lBWWhDLElBQUksSUFBNkIsRUFBRTtRQUNqQyxNQUFNLEVBQUVFLGdCQUFnQixFQUFFLEdBQ3hCQyxtQkFBT0EsQ0FBQywwRkFBcUQ7UUFFL0QsSUFBSUM7UUFDSix5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU1DLFFBQVFILGlCQUFpQkksUUFBUTtRQUN2QyxJQUFJLENBQUNELE9BQU87WUFDVixNQUFNLHFCQUVMLENBRkssSUFBSUUsZ0JBQUFBLGNBQWMsQ0FDdEIsdUdBREk7dUJBQUE7NEJBQUE7OEJBQUE7WUFFTjtRQUNGO1FBRUEsTUFBTSxFQUFFQyxzQkFBc0IsRUFBRSxHQUM5QkwsbUJBQU9BLENBQUMsNEZBQTZCO1FBQ3ZDQyxlQUFlSSx1QkFBdUJULFFBQVFNO1FBRTlDLHFCQUFPLHFCQUFDUixXQUFBQTtZQUFXLEdBQUdDLEtBQUs7WUFBRUMsUUFBUUs7O0lBQ3ZDLE9BQU8sRUFLTjtBQUNIIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxjbGllbnQtc2VnbWVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IEludmFyaWFudEVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3InXG5cbmltcG9ydCB0eXBlIHsgUGFyYW1zIH0gZnJvbSAnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJ1xuXG4vKipcbiAqIFdoZW4gdGhlIFBhZ2UgaXMgYSBjbGllbnQgY29tcG9uZW50IHdlIHNlbmQgdGhlIHBhcmFtcyB0byB0aGlzIGNsaWVudCB3cmFwcGVyXG4gKiB3aGVyZSB0aGV5IGFyZSB0dXJuZWQgaW50byBkeW5hbWljYWxseSB0cmFja2VkIHZhbHVlcyBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBhY3R1YWwgU2VnbWVudCBjb21wb25lbnQuXG4gKlxuICogYWRkaXRpb25hbGx5IHdlIG1heSBzZW5kIGEgcHJvbWlzZSByZXByZXNlbnRpbmcgcGFyYW1zLiBXZSBkb24ndCBldmVyIHVzZSB0aGlzIHBhc3NlZFxuICogdmFsdWUgYnV0IGl0IGNhbiBiZSBuZWNlc3NhcnkgZm9yIHRoZSBzZW5kZXIgdG8gc2VuZCBhIFByb21pc2UgdGhhdCBkb2Vzbid0IHJlc29sdmUgaW4gY2VydGFpbiBzaXR1YXRpb25zXG4gKiBzdWNoIGFzIHdoZW4gY2FjaGVDb21wb25lbnRzIGlzIGVuYWJsZWQuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZGVjaWRlIGlmIHRoZSBwcm9taXNlcyBhcmUgbmVlZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xpZW50U2VnbWVudFJvb3Qoe1xuICBDb21wb25lbnQsXG4gIHNsb3RzLFxuICBwYXJhbXMsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvbWlzZSxcbn06IHtcbiAgQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgc2xvdHM6IHsgW2tleTogc3RyaW5nXTogUmVhY3QuUmVhY3ROb2RlIH1cbiAgcGFyYW1zOiBQYXJhbXNcbiAgcHJvbWlzZT86IFByb21pc2U8YW55PlxufSkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCB7IHdvcmtBc3luY1N0b3JhZ2UgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKVxuXG4gICAgbGV0IGNsaWVudFBhcmFtczogUHJvbWlzZTxQYXJhbXM+XG4gICAgLy8gV2UgYXJlIGdvaW5nIHRvIGluc3RydW1lbnQgdGhlIHNlYXJjaFBhcmFtcyBwcm9wIHdpdGggdHJhY2tpbmcgZm9yIHRoZVxuICAgIC8vIGFwcHJvcHJpYXRlIGNvbnRleHQuIFdlIHdyYXAgZGlmZmVyZW50bHkgaW4gcHJlcmVuZGVyaW5nIHZzIHJlbmRlcmluZ1xuICAgIGNvbnN0IHN0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFyaWFudEVycm9yKFxuICAgICAgICAnRXhwZWN0ZWQgd29ya1N0b3JlIHRvIGV4aXN0IHdoZW4gaGFuZGxpbmcgcGFyYW1zIGluIGEgY2xpZW50IHNlZ21lbnQgc3VjaCBhcyBhIExheW91dCBvciBUZW1wbGF0ZS4nXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgeyBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJylcbiAgICBjbGllbnRQYXJhbXMgPSBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50KHBhcmFtcywgc3RvcmUpXG5cbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4uc2xvdHN9IHBhcmFtcz17Y2xpZW50UGFyYW1zfSAvPlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudCB9ID1cbiAgICAgIHJlcXVpcmUoJy4uL3JlcXVlc3QvcGFyYW1zLmJyb3dzZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9yZXF1ZXN0L3BhcmFtcy5icm93c2VyJylcbiAgICBjb25zdCBjbGllbnRQYXJhbXMgPSBjcmVhdGVSZW5kZXJQYXJhbXNGcm9tQ2xpZW50KHBhcmFtcylcbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4uc2xvdHN9IHBhcmFtcz17Y2xpZW50UGFyYW1zfSAvPlxuICB9XG59XG4iXSwibmFtZXMiOlsiQ2xpZW50U2VnbWVudFJvb3QiLCJDb21wb25lbnQiLCJzbG90cyIsInBhcmFtcyIsInByb21pc2UiLCJ3aW5kb3ciLCJ3b3JrQXN5bmNTdG9yYWdlIiwicmVxdWlyZSIsImNsaWVudFBhcmFtcyIsInN0b3JlIiwiZ2V0U3RvcmUiLCJJbnZhcmlhbnRFcnJvciIsImNyZWF0ZVBhcmFtc0Zyb21DbGllbnQiLCJjcmVhdGVSZW5kZXJQYXJhbXNGcm9tQ2xpZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/client-segment.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/error-boundary.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/error-boundary.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ErrorBoundary: function() {\n return ErrorBoundary;\n },\n ErrorBoundaryHandler: function() {\n return ErrorBoundaryHandler;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ./navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _handleisrerror = __webpack_require__(/*! ./handle-isr-error */ \"(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst isBotUserAgent = false && 0;\nclass ErrorBoundaryHandler extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n // Re-throw if an expected internal Next.js router error occurs\n // this means it should be handled by a different boundary (such as a NotFound boundary in a parent segment)\n throw error;\n }\n return {\n error\n };\n }\n static getDerivedStateFromProps(props, state) {\n const { error } = state;\n // if we encounter an error while\n // a navigation is pending we shouldn't render\n // the error boundary and instead should fallback\n // to a hard navigation to attempt recovering\n if (false) {}\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.error) {\n return {\n error: null,\n previousPathname: props.pathname\n };\n }\n return {\n error: state.error,\n previousPathname: props.pathname\n };\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n //When it's bot request, segment level error boundary will keep rendering the children,\n // the final error will be caught by the root error boundary and determine wether need to apply graceful degrade.\n if (this.state.error && !isBotUserAgent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: this.state.error\n }),\n this.props.errorStyles,\n this.props.errorScripts,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(this.props.errorComponent, {\n error: this.state.error,\n reset: this.reset\n })\n ]\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props), this.reset = ()=>{\n this.setState({\n error: null\n });\n };\n this.state = {\n error: null,\n previousPathname: this.props.pathname\n };\n }\n}\nfunction ErrorBoundary(param) {\n let { errorComponent, errorStyles, errorScripts, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these errors can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n if (errorComponent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorBoundaryHandler, {\n pathname: pathname,\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdJZ0JBLGFBQWE7ZUFBYkE7O0lBNUZIQyxvQkFBb0I7ZUFBcEJBOzs7Ozs0RUFsQ21CO2lEQUNLOytDQUNIOytDQUNDOzRDQUNKO21DQUNUO0FBRXRCLE1BQU1DLGlCQUNKLE1BQTZCLElBQUlFLENBQWlDO0FBMEI3RCxNQUFNSCw2QkFBNkJNLE9BQUFBLE9BQUssQ0FBQ0MsU0FBUztJQVN2RCxPQUFPQyx5QkFBeUJDLEtBQVksRUFBRTtRQUM1QyxJQUFJQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxRQUFRO1lBQzVCLCtEQUErRDtZQUMvRCw0R0FBNEc7WUFDNUcsTUFBTUE7UUFDUjtRQUVBLE9BQU87WUFBRUE7UUFBTTtJQUNqQjtJQUVBLE9BQU9FLHlCQUNMQyxLQUFnQyxFQUNoQ0MsS0FBZ0MsRUFDRTtRQUNsQyxNQUFNLEVBQUVKLEtBQUssRUFBRSxHQUFHSTtRQUVsQixpQ0FBaUM7UUFDakMsOENBQThDO1FBQzlDLGlEQUFpRDtRQUNqRCw2Q0FBNkM7UUFDN0MsSUFBSUMsS0FBd0MsRUFBRSxFQVE3QztRQUVEOzs7OztLQUtDLEdBQ0QsSUFBSUYsTUFBTU8sUUFBUSxLQUFLTixNQUFNSyxnQkFBZ0IsSUFBSUwsTUFBTUosS0FBSyxFQUFFO1lBQzVELE9BQU87Z0JBQ0xBLE9BQU87Z0JBQ1BTLGtCQUFrQk4sTUFBTU8sUUFBUTtZQUNsQztRQUNGO1FBQ0EsT0FBTztZQUNMVixPQUFPSSxNQUFNSixLQUFLO1lBQ2xCUyxrQkFBa0JOLE1BQU1PLFFBQVE7UUFDbEM7SUFDRjtJQU1BLHlJQUF5STtJQUN6SUMsU0FBMEI7UUFDeEIsdUZBQXVGO1FBQ3ZGLGlIQUFpSDtRQUNqSCxJQUFJLElBQUksQ0FBQ1AsS0FBSyxDQUFDSixLQUFLLElBQUksQ0FBQ1IsZ0JBQWdCO1lBQ3ZDLHFCQUNFOztrQ0FDRSxxQkFBQ29CLGdCQUFBQSxjQUFjO3dCQUFDWixPQUFPLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixLQUFLOztvQkFDdEMsSUFBSSxDQUFDRyxLQUFLLENBQUNVLFdBQVc7b0JBQ3RCLElBQUksQ0FBQ1YsS0FBSyxDQUFDVyxZQUFZO2tDQUN4QixxQkFBQ0MsSUFBSSxDQUFDWixLQUFLLENBQUNhLGNBQWM7d0JBQ3hCaEIsT0FBTyxJQUFJLENBQUNJLEtBQUssQ0FBQ0osS0FBSzt3QkFDdkJpQixPQUFPLElBQUksQ0FBQ0EsS0FBSzs7OztRQUl6QjtRQUVBLE9BQU8sSUFBSSxDQUFDZCxLQUFLLENBQUNlLFFBQVE7SUFDNUI7SUE1RUFDLFlBQVloQixLQUFnQyxDQUFFO1FBQzVDLEtBQUssQ0FBQ0EsUUFBQUEsSUFBQUEsQ0FvRFJjLEtBQUFBLEdBQVE7WUFDTixJQUFJLENBQUNHLFFBQVEsQ0FBQztnQkFBRXBCLE9BQU87WUFBSztRQUM5QjtRQXJERSxJQUFJLENBQUNJLEtBQUssR0FBRztZQUFFSixPQUFPO1lBQU1TLGtCQUFrQixJQUFJLENBQUNOLEtBQUssQ0FBQ08sUUFBUTtRQUFDO0lBQ3BFO0FBMEVGO0FBV08sU0FBU3BCLGNBQWMsS0FPN0I7SUFQNkIsTUFDNUIwQixjQUFjLEVBQ2RILFdBQVcsRUFDWEMsWUFBWSxFQUNaSSxRQUFRLEVBR1QsR0FQNkI7SUFRNUIsNkVBQTZFO0lBQzdFLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsb0VBQW9FO0lBQ3BFLE1BQU1SLFdBQVdXLENBQUFBLEdBQUFBLHFCQUFBQSxvQkFBQUE7SUFDakIsSUFBSUwsZ0JBQWdCO1FBQ2xCLE9BQ0UsV0FERixHQUNFLHFCQUFDekIsc0JBQUFBO1lBQ0NtQixVQUFVQTtZQUNWTSxnQkFBZ0JBO1lBQ2hCSCxhQUFhQTtZQUNiQyxjQUFjQTtzQkFFYkk7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1oiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXGVycm9yLWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IFJlYWN0LCB7IHR5cGUgSlNYIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VVbnRyYWNrZWRQYXRobmFtZSB9IGZyb20gJy4vbmF2aWdhdGlvbi11bnRyYWNrZWQnXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4vaXMtbmV4dC1yb3V0ZXItZXJyb3InXG5pbXBvcnQgeyBoYW5kbGVIYXJkTmF2RXJyb3IgfSBmcm9tICcuL25hdi1mYWlsdXJlLWhhbmRsZXInXG5pbXBvcnQgeyBIYW5kbGVJU1JFcnJvciB9IGZyb20gJy4vaGFuZGxlLWlzci1lcnJvcidcbmltcG9ydCB7IGlzQm90IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtYm90J1xuXG5jb25zdCBpc0JvdFVzZXJBZ2VudCA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIGlzQm90KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuXG5leHBvcnQgdHlwZSBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8e1xuICBlcnJvcjogRXJyb3JcbiAgLy8gZ2xvYmFsLWVycm9yLCB0aGVyZSdzIG5vIGByZXNldGAgZnVuY3Rpb247XG4gIC8vIHJlZ3VsYXIgZXJyb3IgYm91bmRhcnksIHRoZXJlJ3MgYSBgcmVzZXRgIGZ1bmN0aW9uLlxuICByZXNldD86ICgpID0+IHZvaWRcbn0+XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JCb3VuZGFyeVByb3BzIHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgZXJyb3JDb21wb25lbnQ6IEVycm9yQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIGVycm9yU3R5bGVzPzogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIGVycm9yU2NyaXB0cz86IFJlYWN0LlJlYWN0Tm9kZSB8IHVuZGVmaW5lZFxufVxuXG5pbnRlcmZhY2UgRXJyb3JCb3VuZGFyeUhhbmRsZXJQcm9wcyBleHRlbmRzIEVycm9yQm91bmRhcnlQcm9wcyB7XG4gIHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGVycm9yQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudFxufVxuXG5pbnRlcmZhY2UgRXJyb3JCb3VuZGFyeUhhbmRsZXJTdGF0ZSB7XG4gIGVycm9yOiBFcnJvciB8IG51bGxcbiAgcHJldmlvdXNQYXRobmFtZTogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JCb3VuZGFyeUhhbmRsZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMsXG4gIEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGVcbj4ge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRXJyb3JCb3VuZGFyeUhhbmRsZXJQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIHRoaXMuc3RhdGUgPSB7IGVycm9yOiBudWxsLCBwcmV2aW91c1BhdGhuYW1lOiB0aGlzLnByb3BzLnBhdGhuYW1lIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgaWYgKGlzTmV4dFJvdXRlckVycm9yKGVycm9yKSkge1xuICAgICAgLy8gUmUtdGhyb3cgaWYgYW4gZXhwZWN0ZWQgaW50ZXJuYWwgTmV4dC5qcyByb3V0ZXIgZXJyb3Igb2NjdXJzXG4gICAgICAvLyB0aGlzIG1lYW5zIGl0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IGEgZGlmZmVyZW50IGJvdW5kYXJ5IChzdWNoIGFzIGEgTm90Rm91bmQgYm91bmRhcnkgaW4gYSBwYXJlbnQgc2VnbWVudClcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZXJyb3IgfVxuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhcbiAgICBwcm9wczogRXJyb3JCb3VuZGFyeUhhbmRsZXJQcm9wcyxcbiAgICBzdGF0ZTogRXJyb3JCb3VuZGFyeUhhbmRsZXJTdGF0ZVxuICApOiBFcnJvckJvdW5kYXJ5SGFuZGxlclN0YXRlIHwgbnVsbCB7XG4gICAgY29uc3QgeyBlcnJvciB9ID0gc3RhdGVcblxuICAgIC8vIGlmIHdlIGVuY291bnRlciBhbiBlcnJvciB3aGlsZVxuICAgIC8vIGEgbmF2aWdhdGlvbiBpcyBwZW5kaW5nIHdlIHNob3VsZG4ndCByZW5kZXJcbiAgICAvLyB0aGUgZXJyb3IgYm91bmRhcnkgYW5kIGluc3RlYWQgc2hvdWxkIGZhbGxiYWNrXG4gICAgLy8gdG8gYSBoYXJkIG5hdmlnYXRpb24gdG8gYXR0ZW1wdCByZWNvdmVyaW5nXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9BUFBfTkFWX0ZBSUxfSEFORExJTkcpIHtcbiAgICAgIGlmIChlcnJvciAmJiBoYW5kbGVIYXJkTmF2RXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIC8vIGNsZWFyIGVycm9yIHNvIHdlIGRvbid0IHJlbmRlciBhbnl0aGluZ1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIHByZXZpb3VzUGF0aG5hbWU6IHByb3BzLnBhdGhuYW1lLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyByZXNldCBvZiB0aGUgZXJyb3IgYm91bmRhcnkgd2hlbiBhIG5hdmlnYXRpb24gaGFwcGVucy5cbiAgICAgKiBFbnN1cmVzIHRoZSBlcnJvciBib3VuZGFyeSBkb2VzIG5vdCBzdGF5IGVuYWJsZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuXG4gICAgICogQXBwcm9hY2ggb2Ygc2V0U3RhdGUgaW4gcmVuZGVyIGlzIHNhZmUgYXMgaXQgY2hlY2tzIHRoZSBwcmV2aW91cyBwYXRobmFtZSBhbmQgdGhlbiBvdmVycmlkZXNcbiAgICAgKiBpdCBhcyBvdXRsaW5lZCBpbiBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlU3RhdGUjc3RvcmluZy1pbmZvcm1hdGlvbi1mcm9tLXByZXZpb3VzLXJlbmRlcnNcbiAgICAgKi9cbiAgICBpZiAocHJvcHMucGF0aG5hbWUgIT09IHN0YXRlLnByZXZpb3VzUGF0aG5hbWUgJiYgc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiBzdGF0ZS5lcnJvcixcbiAgICAgIHByZXZpb3VzUGF0aG5hbWU6IHByb3BzLnBhdGhuYW1lLFxuICAgIH1cbiAgfVxuXG4gIHJlc2V0ID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gRXhwbGljaXQgdHlwZSBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIGdlbmVyYXRlZCBgLmQudHNgIGhhdmluZyBhIHdpZGUgcmV0dXJuIHR5cGUgdGhhdCBjb3VsZCBiZSBzcGVjaWZpYyB0byB0aGUgYEB0eXBlcy9yZWFjdGAgdmVyc2lvbi5cbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgLy9XaGVuIGl0J3MgYm90IHJlcXVlc3QsIHNlZ21lbnQgbGV2ZWwgZXJyb3IgYm91bmRhcnkgd2lsbCBrZWVwIHJlbmRlcmluZyB0aGUgY2hpbGRyZW4sXG4gICAgLy8gdGhlIGZpbmFsIGVycm9yIHdpbGwgYmUgY2F1Z2h0IGJ5IHRoZSByb290IGVycm9yIGJvdW5kYXJ5IGFuZCBkZXRlcm1pbmUgd2V0aGVyIG5lZWQgdG8gYXBwbHkgZ3JhY2VmdWwgZGVncmFkZS5cbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvciAmJiAhaXNCb3RVc2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEhhbmRsZUlTUkVycm9yIGVycm9yPXt0aGlzLnN0YXRlLmVycm9yfSAvPlxuICAgICAgICAgIHt0aGlzLnByb3BzLmVycm9yU3R5bGVzfVxuICAgICAgICAgIHt0aGlzLnByb3BzLmVycm9yU2NyaXB0c31cbiAgICAgICAgICA8dGhpcy5wcm9wcy5lcnJvckNvbXBvbmVudFxuICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZXJyb3J9XG4gICAgICAgICAgICByZXNldD17dGhpcy5yZXNldH1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlblxuICB9XG59XG5cbi8qKlxuICogSGFuZGxlcyBlcnJvcnMgdGhyb3VnaCBgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yYC5cbiAqIFJlbmRlcnMgdGhlIHByb3ZpZGVkIGVycm9yIGNvbXBvbmVudCBhbmQgcHJvdmlkZXMgYSB3YXkgdG8gYHJlc2V0YCB0aGUgZXJyb3IgYm91bmRhcnkgc3RhdGUuXG4gKi9cblxuLyoqXG4gKiBSZW5kZXJzIGVycm9yIGJvdW5kYXJ5IHdpdGggdGhlIHByb3ZpZGVkIFwiZXJyb3JDb21wb25lbnRcIiBwcm9wZXJ0eSBhcyB0aGUgZmFsbGJhY2suXG4gKiBJZiBubyBcImVycm9yQ29tcG9uZW50XCIgcHJvcGVydHkgaXMgcHJvdmlkZWQgaXQgcmVuZGVycyB0aGUgY2hpbGRyZW4gd2l0aG91dCBhbiBlcnJvciBib3VuZGFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVycm9yQm91bmRhcnkoe1xuICBlcnJvckNvbXBvbmVudCxcbiAgZXJyb3JTdHlsZXMsXG4gIGVycm9yU2NyaXB0cyxcbiAgY2hpbGRyZW4sXG59OiBFcnJvckJvdW5kYXJ5UHJvcHMgJiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pOiBKU1guRWxlbWVudCB7XG4gIC8vIFdoZW4gd2UncmUgcmVuZGVyaW5nIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbCwgdGhpcyB3aWxsIHJldHVybiBudWxsLiBUaGlzXG4gIC8vIGlzIGJlY2F1c2Ugd2Ugd29uJ3QgYmUgcmVuZGVyaW5nIGFueSBub3QgZm91bmQgYm91bmRhcmllcyBvciBlcnJvclxuICAvLyBib3VuZGFyaWVzIGZvciB0aGUgbWlzc2luZyBwYXJhbXMgc2hlbGwuIFdoZW4gdGhpcyBydW5zIG9uIHRoZSBjbGllbnRcbiAgLy8gKHdoZXJlIHRoZXNlIGVycm9ycyBjYW4gb2NjdXIpLCB3ZSB3aWxsIGdldCB0aGUgY29ycmVjdCBwYXRobmFtZS5cbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VVbnRyYWNrZWRQYXRobmFtZSgpXG4gIGlmIChlcnJvckNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICA8RXJyb3JCb3VuZGFyeUhhbmRsZXJcbiAgICAgICAgcGF0aG5hbWU9e3BhdGhuYW1lfVxuICAgICAgICBlcnJvckNvbXBvbmVudD17ZXJyb3JDb21wb25lbnR9XG4gICAgICAgIGVycm9yU3R5bGVzPXtlcnJvclN0eWxlc31cbiAgICAgICAgZXJyb3JTY3JpcHRzPXtlcnJvclNjcmlwdHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRXJyb3JCb3VuZGFyeUhhbmRsZXI+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxufVxuIl0sIm5hbWVzIjpbIkVycm9yQm91bmRhcnkiLCJFcnJvckJvdW5kYXJ5SGFuZGxlciIsImlzQm90VXNlckFnZW50Iiwid2luZG93IiwiaXNCb3QiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJwcm9wcyIsInN0YXRlIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9BUFBfTkFWX0ZBSUxfSEFORExJTkciLCJoYW5kbGVIYXJkTmF2RXJyb3IiLCJwcmV2aW91c1BhdGhuYW1lIiwicGF0aG5hbWUiLCJyZW5kZXIiLCJIYW5kbGVJU1JFcnJvciIsImVycm9yU3R5bGVzIiwiZXJyb3JTY3JpcHRzIiwidGhpcyIsImVycm9yQ29tcG9uZW50IiwicmVzZXQiLCJjaGlsZHJlbiIsImNvbnN0cnVjdG9yIiwic2V0U3RhdGUiLCJ1c2VVbnRyYWNrZWRQYXRobmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/error-boundary.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/forbidden.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/components/forbidden.js ***! \***************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"forbidden\", ({\n enumerable: true,\n get: function() {\n return forbidden;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";403\";\nfunction forbidden() {\n if (true) {\n throw Object.defineProperty(new Error(\"`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E488\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=forbidden.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2ZvcmJpZGRlbi5qcyIsIm1hcHBpbmdzIjoiOzs7OzZDQXFCZ0JBOzs7ZUFBQUE7OztnREFsQlQ7QUFFUCw2QkFBNkI7QUFDN0I7Ozs7Ozs7Ozs7O0NBV0MsR0FFRCxNQUFNQyxTQUFVLEtBQUVDLG9CQUFBQSw4QkFBOEIsR0FBQztBQUUxQyxTQUFTRjtJQUNkLElBQUksSUFBZ0QsRUFBRTtRQUNwRCxNQUFNLHFCQUVMLENBRkssSUFBSU0sTUFDUCxnSEFERzttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSw0Q0FBNEM7SUFDNUMsTUFBTUMsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUQsTUFBTUwsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCTSxNQUFrQ0MsTUFBTSxHQUFHUDtJQUM3QyxNQUFNTTtBQUNSIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxmb3JiaWRkZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuXG4vLyBUT0RPOiBBZGQgYGZvcmJpZGRlbmAgZG9jc1xuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gcmVuZGVyIHRoZSBbZm9yYmlkZGVuLmpzIGZpbGVdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2ZpbGUtY29udmVudGlvbnMvZm9yYmlkZGVuKVxuICogd2l0aGluIGEgcm91dGUgc2VnbWVudCBhcyB3ZWxsIGFzIGluamVjdCBhIHRhZy5cbiAqXG4gKiBgZm9yYmlkZGVuKClgIGNhbiBiZSB1c2VkIGluXG4gKiBbU2VydmVyIENvbXBvbmVudHNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyksXG4gKiBbUm91dGUgSGFuZGxlcnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvcm91dGUtaGFuZGxlcnMpLCBhbmRcbiAqIFtTZXJ2ZXIgQWN0aW9uc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9zZXJ2ZXItYWN0aW9ucy1hbmQtbXV0YXRpb25zKS5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGBmb3JiaWRkZW5gXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZm9yYmlkZGVuKVxuICovXG5cbmNvbnN0IERJR0VTVCA9IGAke0hUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07NDAzYFxuXG5leHBvcnQgZnVuY3Rpb24gZm9yYmlkZGVuKCk6IG5ldmVyIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBcXGBmb3JiaWRkZW4oKVxcYCBpcyBleHBlcmltZW50YWwgYW5kIG9ubHkgYWxsb3dlZCB0byBiZSBlbmFibGVkIHdoZW4gXFxgZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzXFxgIGlzIGVuYWJsZWQuYFxuICAgIClcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG4gIHRocm93IGVycm9yXG59XG4iXSwibmFtZXMiOlsiZm9yYmlkZGVuIiwiRElHRVNUIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTIiwiRXJyb3IiLCJlcnJvciIsImRpZ2VzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/forbidden.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/handle-isr-error.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HandleISRError\", ({\n enumerable: true,\n get: function() {\n return HandleISRError;\n }\n}));\nconst workAsyncStorage = true ? (__webpack_require__(/*! ../../server/app-render/work-async-storage.external */ \"./work-async-storage.external\").workAsyncStorage) : 0;\nfunction HandleISRError(param) {\n let { error } = param;\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore();\n if ((store == null ? void 0 : store.isRevalidate) || (store == null ? void 0 : store.isStaticGeneration)) {\n console.error(error);\n throw error;\n }\n }\n return null;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=handle-isr-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hhbmRsZS1pc3ItZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OztrREFVZ0JBOzs7ZUFBQUE7OztBQVZoQixNQUFNQyxtQkFDSixLQUE2QixHQUV2QkUsa0lBQ2dCLEdBQ2xCQyxDQUFTQTtBQUtSLFNBQVNKLGVBQWUsS0FBeUI7SUFBekIsTUFBRUssS0FBSyxFQUFrQixHQUF6QjtJQUM3QixJQUFJSixrQkFBa0I7UUFDcEIsTUFBTUssUUFBUUwsaUJBQWlCTSxRQUFRO1FBQ3ZDLElBQUlELENBQUFBLFNBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE1BQU9FLFlBQUFBLE1BQWdCRixTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPRyxrQkFBQUEsR0FBb0I7WUFDcERDLFFBQVFMLEtBQUssQ0FBQ0E7WUFDZCxNQUFNQTtRQUNSO0lBQ0Y7SUFFQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXGhhbmRsZS1pc3ItZXJyb3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHdvcmtBc3luY1N0b3JhZ2UgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKVxuICAgICAgKS53b3JrQXN5bmNTdG9yYWdlXG4gICAgOiB1bmRlZmluZWRcblxuLy8gaWYgd2UgYXJlIHJldmFsaWRhdGluZyB3ZSB3YW50IHRvIHJlLXRocm93IHRoZSBlcnJvciBzbyB0aGVcbi8vIGZ1bmN0aW9uIGNyYXNoZXMgc28gd2UgY2FuIG1haW50YWluIG91ciBwcmV2aW91cyBjYWNoZVxuLy8gaW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBlcnJvciBwYWdlXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlSVNSRXJyb3IoeyBlcnJvciB9OiB7IGVycm9yOiBhbnkgfSkge1xuICBpZiAod29ya0FzeW5jU3RvcmFnZSkge1xuICAgIGNvbnN0IHN0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gICAgaWYgKHN0b3JlPy5pc1JldmFsaWRhdGUgfHwgc3RvcmU/LmlzU3RhdGljR2VuZXJhdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJIYW5kbGVJU1JFcnJvciIsIndvcmtBc3luY1N0b3JhZ2UiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwiZXJyb3IiLCJzdG9yZSIsImdldFN0b3JlIiwiaXNSZXZhbGlkYXRlIiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwiY29uc29sZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/handle-isr-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/hooks-server-context.js ***! \**************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DynamicServerError: function() {\n return DynamicServerError;\n },\n isDynamicServerError: function() {\n return isDynamicServerError;\n }\n});\nconst DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nclass DynamicServerError extends Error {\n constructor(description){\n super(\"Dynamic server usage: \" + description), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nfunction isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hooks-server-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2hvb2tzLXNlcnZlci1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxrQkFBa0I7ZUFBbEJBOztJQVFHQyxvQkFBb0I7ZUFBcEJBOzs7QUFWaEIsTUFBTUMscUJBQXFCO0FBRXBCLE1BQU1GLDJCQUEyQkc7SUFHdENDLFlBQTRCQyxXQUFtQixDQUFFO1FBQy9DLEtBQUssQ0FBRSwyQkFBd0JBLGNBQUFBLElBQUFBLENBRExBLFdBQUFBLEdBQUFBLGFBQUFBLElBQUFBLENBRjVCQyxNQUFBQSxHQUFvQ0o7SUFJcEM7QUFDRjtBQUVPLFNBQVNELHFCQUFxQk0sR0FBWTtJQUMvQyxJQUNFLE9BQU9BLFFBQVEsWUFDZkEsUUFBUSxRQUNSLENBQUUsYUFBWUEsR0FBQUEsQ0FBRSxJQUNoQixPQUFPQSxJQUFJRCxNQUFNLEtBQUssVUFDdEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQyxJQUFJRCxNQUFNLEtBQUtKO0FBQ3hCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxob29rcy1zZXJ2ZXItY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBEWU5BTUlDX0VSUk9SX0NPREUgPSAnRFlOQU1JQ19TRVJWRVJfVVNBR0UnXG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRpZ2VzdDogdHlwZW9mIERZTkFNSUNfRVJST1JfQ09ERSA9IERZTkFNSUNfRVJST1JfQ09ERVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYER5bmFtaWMgc2VydmVyIHVzYWdlOiAke2Rlc2NyaXB0aW9ufWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHluYW1pY1NlcnZlckVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBEeW5hbWljU2VydmVyRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnIgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycikgfHxcbiAgICB0eXBlb2YgZXJyLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXJyLmRpZ2VzdCA9PT0gRFlOQU1JQ19FUlJPUl9DT0RFXG59XG4iXSwibmFtZXMiOlsiRHluYW1pY1NlcnZlckVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJEWU5BTUlDX0VSUk9SX0NPREUiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiZGVzY3JpcHRpb24iLCJkaWdlc3QiLCJlcnIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTTPAccessFallbackBoundary\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessFallbackBoundary;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ../navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _warnonce = __webpack_require__(/*! ../../../shared/lib/utils/warn-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nclass HTTPAccessFallbackErrorBoundary extends _react.default.Component {\n componentDidCatch() {\n if ( true && this.props.missingSlots && this.props.missingSlots.size > 0 && // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')) {\n let warningMessage = 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n';\n const formattedSlots = Array.from(this.props.missingSlots).sort((a, b)=>a.localeCompare(b)).map((slot)=>\"@\" + slot).join(', ');\n warningMessage += 'Missing slots: ' + formattedSlots;\n (0, _warnonce.warnOnce)(warningMessage);\n }\n }\n static getDerivedStateFromError(error) {\n if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\n const httpStatus = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(error);\n return {\n triggeredStatus: httpStatus\n };\n }\n // Re-throw if error is not for 404\n throw error;\n }\n static getDerivedStateFromProps(props, state) {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname\n };\n }\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props;\n const { triggeredStatus } = this.state;\n const errorComponents = {\n [_httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [_httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [_httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized\n };\n if (triggeredStatus) {\n const isNotFound = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND && notFound;\n const isForbidden = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN && forbidden;\n const isUnauthorized = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized;\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"robots\",\n content: \"noindex\"\n }),\n true && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"boundary-next-error\",\n content: (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(triggeredStatus)\n }),\n errorComponents[triggeredStatus]\n ]\n });\n }\n return children;\n }\n constructor(props){\n super(props);\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n}\nfunction HTTPAccessFallbackBoundary(param) {\n let { notFound, forbidden, unauthorized, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const missingSlots = (0, _react.useContext)(_approutercontextsharedruntime.MissingSlotContext);\n const hasErrorFallback = !!(notFound || forbidden || unauthorized);\n if (hasErrorFallback) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HTTPAccessFallbackErrorBoundary, {\n pathname: pathname,\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n missingSlots: missingSlots,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=error-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7OERBdUpnQkE7OztlQUFBQTs7Ozs7NkVBMUlrQjtpREFDRztnREFNOUI7c0NBQ2tCOzJEQUNVO0FBcUJuQyxNQUFNQyx3Q0FBd0NDLE9BQUFBLE9BQUssQ0FBQ0MsU0FBUztJQVkzREMsb0JBQTBCO1FBQ3hCLElBQ0VDLEtBQW9CLElBQ3BCLElBQUksQ0FBQ0csS0FBSyxDQUFDQyxZQUFZLElBQ3ZCLElBQUksQ0FBQ0QsS0FBSyxDQUFDQyxZQUFZLENBQUNDLElBQUksR0FBRyxLQUMvQiw0RUFBNEU7UUFDNUUsQ0FBQyxJQUFJLENBQUNGLEtBQUssQ0FBQ0MsWUFBWSxDQUFDRSxHQUFHLENBQUMsYUFDN0I7WUFDQSxJQUFJQyxpQkFDRiw0SEFDQTtZQUVGLE1BQU1DLGlCQUFpQkMsTUFBTUMsSUFBSSxDQUFDLElBQUksQ0FBQ1AsS0FBSyxDQUFDQyxZQUFZLEVBQ3RETyxJQUFJLENBQUMsQ0FBQ0MsR0FBR0MsSUFBTUQsRUFBRUUsYUFBYSxDQUFDRCxJQUMvQkUsR0FBRyxDQUFDLENBQUNDLE9BQVUsTUFBR0EsTUFDbEJDLElBQUksQ0FBQztZQUVSVixrQkFBa0Isb0JBQW9CQztZQUV0Q1UsQ0FBQUEsR0FBQUEsVUFBQUEsUUFBQUEsRUFBU1g7UUFDWDtJQUNGO0lBRUEsT0FBT1kseUJBQXlCQyxLQUFVLEVBQUU7UUFDMUMsSUFBSUMsQ0FBQUEsR0FBQUEsb0JBQUFBLHlCQUF5QixFQUFDRCxRQUFRO1lBQ3BDLE1BQU1FLGFBQWFDLENBQUFBLEdBQUFBLG9CQUFBQSwyQkFBQUEsRUFBNEJIO1lBQy9DLE9BQU87Z0JBQ0xJLGlCQUFpQkY7WUFDbkI7UUFDRjtRQUNBLG1DQUFtQztRQUNuQyxNQUFNRjtJQUNSO0lBRUEsT0FBT0sseUJBQ0x0QixLQUEyQyxFQUMzQ3VCLEtBQThCLEVBQ0U7UUFDaEM7Ozs7O0tBS0MsR0FDRCxJQUFJdkIsTUFBTXdCLFFBQVEsS0FBS0QsTUFBTUUsZ0JBQWdCLElBQUlGLE1BQU1GLGVBQWUsRUFBRTtZQUN0RSxPQUFPO2dCQUNMQSxpQkFBaUJLO2dCQUNqQkQsa0JBQWtCekIsTUFBTXdCLFFBQVE7WUFDbEM7UUFDRjtRQUNBLE9BQU87WUFDTEgsaUJBQWlCRSxNQUFNRixlQUFlO1lBQ3RDSSxrQkFBa0J6QixNQUFNd0IsUUFBUTtRQUNsQztJQUNGO0lBRUFHLFNBQVM7UUFDUCxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsU0FBUyxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQy9CLEtBQUs7UUFDbEUsTUFBTSxFQUFFcUIsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDRSxLQUFLO1FBQ3RDLE1BQU1TLGtCQUFrQjtZQUN0QixDQUFDQyxvQkFBQUEscUJBQXFCLENBQUNDLFNBQVMsQ0FBQyxFQUFFTjtZQUNuQyxDQUFDSyxvQkFBQUEscUJBQXFCLENBQUNFLFNBQVMsQ0FBQyxFQUFFTjtZQUNuQyxDQUFDSSxvQkFBQUEscUJBQXFCLENBQUNHLFlBQVksQ0FBQyxFQUFFTjtRQUN4QztRQUVBLElBQUlULGlCQUFpQjtZQUNuQixNQUFNZ0IsYUFDSmhCLG9CQUFvQlksb0JBQUFBLHFCQUFxQixDQUFDQyxTQUFTLElBQUlOO1lBQ3pELE1BQU1VLGNBQ0pqQixvQkFBb0JZLG9CQUFBQSxxQkFBcUIsQ0FBQ0UsU0FBUyxJQUFJTjtZQUN6RCxNQUFNVSxpQkFDSmxCLG9CQUFvQlksb0JBQUFBLHFCQUFxQixDQUFDRyxZQUFZLElBQUlOO1lBRTVELGtHQUFrRztZQUNsRyxJQUFJLENBQUVPLENBQUFBLGNBQWNDLGVBQWVDLGNBQUFBLENBQWEsRUFBSTtnQkFDbEQsT0FBT1I7WUFDVDtZQUVBLHFCQUNFOztrQ0FDRSxxQkFBQ1MsUUFBQUE7d0JBQUtDLE1BQUs7d0JBQVNDLFNBQVE7O3lCQUNXLElBQWIsY0FDeEIscUJBQUNGLFFBQUFBO3dCQUNDQyxNQUFLO3dCQUNMQyxTQUFTQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0NBQUFBLEVBQW1DdEI7O29CQUcvQ1csZUFBZSxDQUFDWCxnQkFBZ0I7OztRQUd2QztRQUVBLE9BQU9VO0lBQ1Q7SUFyR0FhLFlBQVk1QyxLQUEyQyxDQUFFO1FBQ3ZELEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUN1QixLQUFLLEdBQUc7WUFDWEYsaUJBQWlCSztZQUNqQkQsa0JBQWtCekIsTUFBTXdCLFFBQVE7UUFDbEM7SUFDRjtBQWdHRjtBQUVPLFNBQVNoQywyQkFBMkIsS0FLVDtJQUxTLE1BQ3pDb0MsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsUUFBUSxFQUN3QixHQUxTO0lBTXpDLDZFQUE2RTtJQUM3RSxxRUFBcUU7SUFDckUsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxNQUFNUCxXQUFXcUIsQ0FBQUEsR0FBQUEscUJBQUFBLG9CQUFBQTtJQUNqQixNQUFNNUMsZUFBZTZDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSxrQkFBa0I7SUFDbEQsTUFBTUMsbUJBQW1CLENBQUMsQ0FBRXBCLENBQUFBLFlBQVlDLGFBQWFDLFlBQUFBLENBQVc7SUFFaEUsSUFBSWtCLGtCQUFrQjtRQUNwQixPQUNFLFdBREYsR0FDRSxxQkFBQ3ZELGlDQUFBQTtZQUNDK0IsVUFBVUE7WUFDVkksVUFBVUE7WUFDVkMsV0FBV0E7WUFDWEMsY0FBY0E7WUFDZDdCLGNBQWNBO3NCQUViOEI7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1oiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcaHR0cC1hY2Nlc3MtZmFsbGJhY2tcXGVycm9yLWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLyoqXG4gKiBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSBpcyBhIGJvdW5kYXJ5IHRoYXQgY2F0Y2hlcyBlcnJvcnMgYW5kIHJlbmRlcnMgYVxuICogZmFsbGJhY2sgY29tcG9uZW50IGZvciBIVFRQIGVycm9ycy5cbiAqXG4gKiBJdCByZWNlaXZlcyB0aGUgc3RhdHVzIGNvZGUsIGFuZCBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHJlbmRlciBmYWxsYmFja3MgZm9yIGZldyBIVFRQIDR4eCBlcnJvcnMuXG4gKlxuICogZS5nLiA0MDRcbiAqIDQwNCByZXByZXNlbnRzIG5vdCBmb3VuZCwgYW5kIHRoZSBmYWxsYmFjayBjb21wb25lbnQgcGFpciBjb250YWlucyB0aGUgY29tcG9uZW50IGFuZCBpdHMgc3R5bGVzLlxuICpcbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVW50cmFja2VkUGF0aG5hbWUgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLXVudHJhY2tlZCdcbmltcG9ydCB7XG4gIEhUVFBBY2Nlc3NFcnJvclN0YXR1cyxcbiAgZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzLFxuICBnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzLFxuICBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuaW1wb3J0IHsgd2Fybk9uY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3V0aWxzL3dhcm4tb25jZSdcbmltcG9ydCB7IE1pc3NpbmdTbG90Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlQcm9wcyB7XG4gIG5vdEZvdW5kPzogUmVhY3QuUmVhY3ROb2RlXG4gIGZvcmJpZGRlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICB1bmF1dGhvcml6ZWQ/OiBSZWFjdC5SZWFjdE5vZGVcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBtaXNzaW5nU2xvdHM/OiBTZXQ8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzXG4gIGV4dGVuZHMgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlQcm9wcyB7XG4gIHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG4gIG1pc3NpbmdTbG90cz86IFNldDxzdHJpbmc+XG59XG5cbmludGVyZmFjZSBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZSB7XG4gIHRyaWdnZXJlZFN0YXR1czogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIHByZXZpb3VzUGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbn1cblxuY2xhc3MgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzLFxuICBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdHJpZ2dlcmVkU3RhdHVzOiB1bmRlZmluZWQsXG4gICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRDYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMgJiZcbiAgICAgIHRoaXMucHJvcHMubWlzc2luZ1Nsb3RzLnNpemUgPiAwICYmXG4gICAgICAvLyBBIG1pc3NpbmcgY2hpbGRyZW4gc2xvdCBpcyB0aGUgdHlwaWNhbCBub3QtZm91bmQgY2FzZSwgc28gbm8gbmVlZCB0byB3YXJuXG4gICAgICAhdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMuaGFzKCdjaGlsZHJlbicpXG4gICAgKSB7XG4gICAgICBsZXQgd2FybmluZ01lc3NhZ2UgPVxuICAgICAgICAnTm8gZGVmYXVsdCBjb21wb25lbnQgd2FzIGZvdW5kIGZvciBhIHBhcmFsbGVsIHJvdXRlIHJlbmRlcmVkIG9uIHRoaXMgcGFnZS4gRmFsbGluZyBiYWNrIHRvIG5lYXJlc3QgTm90Rm91bmQgYm91bmRhcnkuXFxuJyArXG4gICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3BhcmFsbGVsLXJvdXRlcyNkZWZhdWx0anNcXG5cXG4nXG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZFNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLnByb3BzLm1pc3NpbmdTbG90cylcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgLm1hcCgoc2xvdCkgPT4gYEAke3Nsb3R9YClcbiAgICAgICAgLmpvaW4oJywgJylcblxuICAgICAgd2FybmluZ01lc3NhZ2UgKz0gJ01pc3Npbmcgc2xvdHM6ICcgKyBmb3JtYXR0ZWRTbG90c1xuXG4gICAgICB3YXJuT25jZSh3YXJuaW5nTWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcihlcnJvcikpIHtcbiAgICAgIGNvbnN0IGh0dHBTdGF0dXMgPSBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMoZXJyb3IpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlnZ2VyZWRTdGF0dXM6IGh0dHBTdGF0dXMsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlLXRocm93IGlmIGVycm9yIGlzIG5vdCBmb3IgNDA0XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgcHJvcHM6IEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlQcm9wcyxcbiAgICBzdGF0ZTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGVcbiAgKTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGUgfCBudWxsIHtcbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHJlc2V0IG9mIHRoZSBlcnJvciBib3VuZGFyeSB3aGVuIGEgbmF2aWdhdGlvbiBoYXBwZW5zLlxuICAgICAqIEVuc3VyZXMgdGhlIGVycm9yIGJvdW5kYXJ5IGRvZXMgbm90IHN0YXkgZW5hYmxlZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS5cbiAgICAgKiBBcHByb2FjaCBvZiBzZXRTdGF0ZSBpbiByZW5kZXIgaXMgc2FmZSBhcyBpdCBjaGVja3MgdGhlIHByZXZpb3VzIHBhdGhuYW1lIGFuZCB0aGVuIG92ZXJyaWRlc1xuICAgICAqIGl0IGFzIG91dGxpbmVkIGluIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZSNzdG9yaW5nLWluZm9ybWF0aW9uLWZyb20tcHJldmlvdXMtcmVuZGVyc1xuICAgICAqL1xuICAgIGlmIChwcm9wcy5wYXRobmFtZSAhPT0gc3RhdGUucHJldmlvdXNQYXRobmFtZSAmJiBzdGF0ZS50cmlnZ2VyZWRTdGF0dXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXJlZFN0YXR1czogc3RhdGUudHJpZ2dlcmVkU3RhdHVzLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgbm90Rm91bmQsIGZvcmJpZGRlbiwgdW5hdXRob3JpemVkLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgdHJpZ2dlcmVkU3RhdHVzIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgZXJyb3JDb21wb25lbnRzID0ge1xuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5OT1RfRk9VTkRdOiBub3RGb3VuZCxcbiAgICAgIFtIVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOXTogZm9yYmlkZGVuLFxuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5VTkFVVEhPUklaRURdOiB1bmF1dGhvcml6ZWQsXG4gICAgfVxuXG4gICAgaWYgKHRyaWdnZXJlZFN0YXR1cykge1xuICAgICAgY29uc3QgaXNOb3RGb3VuZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLk5PVF9GT1VORCAmJiBub3RGb3VuZFxuICAgICAgY29uc3QgaXNGb3JiaWRkZW4gPVxuICAgICAgICB0cmlnZ2VyZWRTdGF0dXMgPT09IEhUVFBBY2Nlc3NFcnJvclN0YXR1cy5GT1JCSURERU4gJiYgZm9yYmlkZGVuXG4gICAgICBjb25zdCBpc1VuYXV0aG9yaXplZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLlVOQVVUSE9SSVpFRCAmJiB1bmF1dGhvcml6ZWRcblxuICAgICAgLy8gSWYgdGhlcmUncyBubyBtYXRjaGVkIGJvdW5kYXJ5IGluIHRoaXMgbGF5ZXIsIGtlZXAgdGhyb3dpbmcgdGhlIGVycm9yIGJ5IHJlbmRlcmluZyB0aGUgY2hpbGRyZW5cbiAgICAgIGlmICghKGlzTm90Rm91bmQgfHwgaXNGb3JiaWRkZW4gfHwgaXNVbmF1dGhvcml6ZWQpKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwibm9pbmRleFwiIC8+XG4gICAgICAgICAge3Byb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIChcbiAgICAgICAgICAgIDxtZXRhXG4gICAgICAgICAgICAgIG5hbWU9XCJib3VuZGFyeS1uZXh0LWVycm9yXCJcbiAgICAgICAgICAgICAgY29udGVudD17Z2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyh0cmlnZ2VyZWRTdGF0dXMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvckNvbXBvbmVudHNbdHJpZ2dlcmVkU3RhdHVzXX1cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5KHtcbiAgbm90Rm91bmQsXG4gIGZvcmJpZGRlbixcbiAgdW5hdXRob3JpemVkLFxuICBjaGlsZHJlbixcbn06IEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5UHJvcHMpIHtcbiAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLCB0aGlzIHdpbGwgcmV0dXJuIG51bGwuIFRoaXNcbiAgLy8gaXMgYmVjYXVzZSB3ZSB3b24ndCBiZSByZW5kZXJpbmcgYW55IG5vdCBmb3VuZCBib3VuZGFyaWVzIG9yIGVycm9yXG4gIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbC4gV2hlbiB0aGlzIHJ1bnMgb24gdGhlIGNsaWVudFxuICAvLyAod2hlcmUgdGhlc2UgZXJyb3IgY2FuIG9jY3VyKSwgd2Ugd2lsbCBnZXQgdGhlIGNvcnJlY3QgcGF0aG5hbWUuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuICBjb25zdCBtaXNzaW5nU2xvdHMgPSB1c2VDb250ZXh0KE1pc3NpbmdTbG90Q29udGV4dClcbiAgY29uc3QgaGFzRXJyb3JGYWxsYmFjayA9ICEhKG5vdEZvdW5kIHx8IGZvcmJpZGRlbiB8fCB1bmF1dGhvcml6ZWQpXG5cbiAgaWYgKGhhc0Vycm9yRmFsbGJhY2spIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlcbiAgICAgICAgcGF0aG5hbWU9e3BhdGhuYW1lfVxuICAgICAgICBub3RGb3VuZD17bm90Rm91bmR9XG4gICAgICAgIGZvcmJpZGRlbj17Zm9yYmlkZGVufVxuICAgICAgICB1bmF1dGhvcml6ZWQ9e3VuYXV0aG9yaXplZH1cbiAgICAgICAgbWlzc2luZ1Nsb3RzPXttaXNzaW5nU2xvdHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb21wb25lbnREaWRDYXRjaCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BzIiwibWlzc2luZ1Nsb3RzIiwic2l6ZSIsImhhcyIsIndhcm5pbmdNZXNzYWdlIiwiZm9ybWF0dGVkU2xvdHMiLCJBcnJheSIsImZyb20iLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFwIiwic2xvdCIsImpvaW4iLCJ3YXJuT25jZSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImVycm9yIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciIsImh0dHBTdGF0dXMiLCJnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMiLCJ0cmlnZ2VyZWRTdGF0dXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJzdGF0ZSIsInBhdGhuYW1lIiwicHJldmlvdXNQYXRobmFtZSIsInVuZGVmaW5lZCIsInJlbmRlciIsIm5vdEZvdW5kIiwiZm9yYmlkZGVuIiwidW5hdXRob3JpemVkIiwiY2hpbGRyZW4iLCJlcnJvckNvbXBvbmVudHMiLCJIVFRQQWNjZXNzRXJyb3JTdGF0dXMiLCJOT1RfRk9VTkQiLCJGT1JCSURERU4iLCJVTkFVVEhPUklaRUQiLCJpc05vdEZvdW5kIiwiaXNGb3JiaWRkZW4iLCJpc1VuYXV0aG9yaXplZCIsIm1ldGEiLCJuYW1lIiwiY29udGVudCIsImdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMiLCJjb25zdHJ1Y3RvciIsInVzZVVudHJhY2tlZFBhdGhuYW1lIiwidXNlQ29udGV4dCIsIk1pc3NpbmdTbG90Q29udGV4dCIsImhhc0Vycm9yRmFsbGJhY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js": /*!***********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***! \***********************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=http-access-fallback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFhQSxxQkFBcUI7ZUFBckJBOztJQVFBQyw4QkFBOEI7ZUFBOUJBOztJQXVDR0Msa0NBQWtDO2VBQWxDQTs7SUFQQUMsMkJBQTJCO2VBQTNCQTs7SUFuQkFDLHlCQUF5QjtlQUF6QkE7OztBQXJCVCxNQUFNSix3QkFBd0I7SUFDbkNLLFdBQVc7SUFDWEMsV0FBVztJQUNYQyxjQUFjO0FBQ2hCO0FBRUEsTUFBTUMsZ0JBQWdCLElBQUlDLElBQUlDLE9BQU9DLE1BQU0sQ0FBQ1g7QUFFckMsTUFBTUMsaUNBQWlDO0FBYXZDLFNBQVNHLDBCQUNkUSxLQUFjO0lBRWQsSUFDRSxPQUFPQSxVQUFVLFlBQ2pCQSxVQUFVLFFBQ1YsQ0FBRSxhQUFZQSxLQUFBQSxDQUFJLElBQ2xCLE9BQU9BLE1BQU1DLE1BQU0sS0FBSyxVQUN4QjtRQUNBLE9BQU87SUFDVDtJQUNBLE1BQU0sQ0FBQ0MsUUFBUUMsV0FBVyxHQUFHSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQztJQUVoRCxPQUNFRixXQUFXYixrQ0FDWE8sY0FBY1MsR0FBRyxDQUFDQyxPQUFPSDtBQUU3QjtBQUVPLFNBQVNaLDRCQUNkUyxLQUE4QjtJQUU5QixNQUFNRyxhQUFhSCxNQUFNQyxNQUFNLENBQUNHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM3QyxPQUFPRSxPQUFPSDtBQUNoQjtBQUVPLFNBQVNiLG1DQUNkaUIsTUFBYztJQUVkLE9BQVFBO1FBQ04sS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1Q7WUFDRTtJQUNKO0FBQ0YiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcaHR0cC1hY2Nlc3MtZmFsbGJhY2tcXGh0dHAtYWNjZXNzLWZhbGxiYWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIVFRQQWNjZXNzRXJyb3JTdGF0dXMgPSB7XG4gIE5PVF9GT1VORDogNDA0LFxuICBGT1JCSURERU46IDQwMyxcbiAgVU5BVVRIT1JJWkVEOiA0MDEsXG59XG5cbmNvbnN0IEFMTE9XRURfQ09ERVMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoSFRUUEFjY2Vzc0Vycm9yU3RhdHVzKSlcblxuZXhwb3J0IGNvbnN0IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSA9ICdORVhUX0hUVFBfRVJST1JfRkFMTEJBQ0snXG5cbmV4cG9ydCB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogYCR7dHlwZW9mIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07JHtzdHJpbmd9YFxufVxuXG4vKipcbiAqIENoZWNrcyBhbiBlcnJvciB0byBkZXRlcm1pbmUgaWYgaXQncyBhbiBlcnJvciBnZW5lcmF0ZWQgYnlcbiAqIHRoZSBIVFRQIG5hdmlnYXRpb24gQVBJcyBgbm90Rm91bmQoKWAsIGBmb3JiaWRkZW4oKWAgb3IgYHVuYXV0aG9yaXplZCgpYC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyB8fFxuICAgIGVycm9yID09PSBudWxsIHx8XG4gICAgISgnZGlnZXN0JyBpbiBlcnJvcikgfHxcbiAgICB0eXBlb2YgZXJyb3IuZGlnZXN0ICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBbcHJlZml4LCBodHRwU3RhdHVzXSA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpXG5cbiAgcmV0dXJuIChcbiAgICBwcmVmaXggPT09IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSAmJlxuICAgIEFMTE9XRURfQ09ERVMuaGFzKE51bWJlcihodHRwU3RhdHVzKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzKFxuICBlcnJvcjogSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Jcbik6IG51bWJlciB7XG4gIGNvbnN0IGh0dHBTdGF0dXMgPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVsxXVxuICByZXR1cm4gTnVtYmVyKGh0dHBTdGF0dXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzKFxuICBzdGF0dXM6IG51bWJlclxuKTogJ25vdC1mb3VuZCcgfCAnZm9yYmlkZGVuJyB8ICd1bmF1dGhvcml6ZWQnIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIDQwMTpcbiAgICAgIHJldHVybiAndW5hdXRob3JpemVkJ1xuICAgIGNhc2UgNDAzOlxuICAgICAgcmV0dXJuICdmb3JiaWRkZW4nXG4gICAgY2FzZSA0MDQ6XG4gICAgICByZXR1cm4gJ25vdC1mb3VuZCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJIVFRQQWNjZXNzRXJyb3JTdGF0dXMiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzIiwiZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciIsIk5PVF9GT1VORCIsIkZPUkJJRERFTiIsIlVOQVVUSE9SSVpFRCIsIkFMTE9XRURfQ09ERVMiLCJTZXQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJlcnJvciIsImRpZ2VzdCIsInByZWZpeCIsImh0dHBTdGF0dXMiLCJzcGxpdCIsImhhcyIsIk51bWJlciIsInN0YXR1cyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/is-next-router-error.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=is-next-router-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2lzLW5leHQtcm91dGVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBV2dCQTs7O2VBQUFBOzs7Z0RBUlQ7MkNBQzZDO0FBTzdDLFNBQVNBLGtCQUNkQyxLQUFjO0lBRWQsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JELFVBQVVFLENBQUFBLEdBQUFBLG9CQUFBQSx5QkFBQUEsRUFBMEJGO0FBQzdEIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxpcy1uZXh0LXJvdXRlci1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuaW1wb3J0IHsgaXNSZWRpcmVjdEVycm9yLCB0eXBlIFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSBuYXZpZ2F0aW9uIHNpZ25hbCBlcnJvci4gVGhlc2UgZXJyb3JzIGFyZVxuICogdGhyb3duIGJ5IHVzZXIgY29kZSB0byBwZXJmb3JtIG5hdmlnYXRpb24gb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0IHRoZSBSZWFjdFxuICogcmVuZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOZXh0Um91dGVyRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBSZWRpcmVjdEVycm9yIHwgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICByZXR1cm4gaXNSZWRpcmVjdEVycm9yKGVycm9yKSB8fCBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKGVycm9yKVxufVxuIl0sIm5hbWVzIjpbImlzTmV4dFJvdXRlckVycm9yIiwiZXJyb3IiLCJpc1JlZGlyZWN0RXJyb3IiLCJpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/layout-router.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/components/layout-router.js ***! \*******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return OuterLayoutRouter;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./router-reducer/fetch-server-response */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _unresolvedthenable = __webpack_require__(/*! ./unresolved-thenable */ \"(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js\");\nconst _errorboundary = __webpack_require__(/*! ./error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _matchsegments = __webpack_require__(/*! ./match-segments */ \"(ssr)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _disablesmoothscroll = __webpack_require__(/*! ../../shared/lib/router/utils/disable-smooth-scroll */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _errorboundary1 = __webpack_require__(/*! ./http-access-fallback/error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./router-reducer/create-router-cache-key */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./router-reducer/reducers/has-interception-route-in-current-tree */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\");\nconst _bfcache = __webpack_require__(/*! ./bfcache */ \"(ssr)/./node_modules/next/dist/client/components/bfcache.js\");\nconst _apppaths = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst Activity = false ? 0 : null;\n/**\n * Add refetch marker to router state at the point of the current layout segment.\n * This ensures the response returned is not further down than the current layout segment.\n */ function walkAddRefetch(segmentPathToWalk, treeToRecreate) {\n if (segmentPathToWalk) {\n const [segment, parallelRouteKey] = segmentPathToWalk;\n const isLast = segmentPathToWalk.length === 2;\n if ((0, _matchsegments.matchSegment)(treeToRecreate[0], segment)) {\n if (treeToRecreate[1].hasOwnProperty(parallelRouteKey)) {\n if (isLast) {\n const subTree = walkAddRefetch(undefined, treeToRecreate[1][parallelRouteKey]);\n return [\n treeToRecreate[0],\n {\n ...treeToRecreate[1],\n [parallelRouteKey]: [\n subTree[0],\n subTree[1],\n subTree[2],\n 'refetch'\n ]\n }\n ];\n }\n return [\n treeToRecreate[0],\n {\n ...treeToRecreate[1],\n [parallelRouteKey]: walkAddRefetch(segmentPathToWalk.slice(2), treeToRecreate[1][parallelRouteKey])\n }\n ];\n }\n }\n }\n return treeToRecreate;\n}\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = _reactdom.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */ function findDOMNode(instance) {\n // Tree-shake for server bundle\n if (true) return null;\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode = __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode;\n return internal_reactDOMfindDOMNode(instance);\n}\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y'\n];\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */ function shouldSkipElement(element) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if ([\n 'sticky',\n 'fixed'\n ].includes(getComputedStyle(element).position)) {\n if (true) {\n console.warn('Skipping auto-scroll behavior due to `position: sticky` or `position: fixed` on element:', element);\n }\n return true;\n }\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect();\n return rectProperties.every((item)=>rect[item] === 0);\n}\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */ function topOfElementInViewport(element, viewportHeight) {\n const rect = element.getBoundingClientRect();\n return rect.top >= 0 && rect.top <= viewportHeight;\n}\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */ function getHashFragmentDomNode(hashFragment) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body;\n }\n var _document_getElementById;\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (_document_getElementById = document.getElementById(hashFragment)) != null ? _document_getElementById : document.getElementsByName(hashFragment)[0];\n}\nclass InnerScrollAndFocusHandler extends _react.default.Component {\n componentDidMount() {\n this.handlePotentialScroll();\n }\n componentDidUpdate() {\n // Because this property is overwritten in handlePotentialScroll it's fine to always run it when true as it'll be set to false for subsequent renders.\n if (this.props.focusAndScrollRef.apply) {\n this.handlePotentialScroll();\n }\n }\n render() {\n return this.props.children;\n }\n constructor(...args){\n super(...args), this.handlePotentialScroll = ()=>{\n // Handle scroll and focus, it's only applied once in the first useEffect that triggers that changed.\n const { focusAndScrollRef, segmentPath } = this.props;\n if (focusAndScrollRef.apply) {\n // segmentPaths is an array of segment paths that should be scrolled to\n // if the current segment path is not in the array, the scroll is not applied\n // unless the array is empty, in which case the scroll is always applied\n if (focusAndScrollRef.segmentPaths.length !== 0 && !focusAndScrollRef.segmentPaths.some((scrollRefSegmentPath)=>segmentPath.every((segment, index)=>(0, _matchsegments.matchSegment)(segment, scrollRefSegmentPath[index])))) {\n return;\n }\n let domNode = null;\n const hashFragment = focusAndScrollRef.hashFragment;\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment);\n }\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a in head.\n if (!domNode) {\n domNode = findDOMNode(this);\n }\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return;\n }\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while(!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)){\n if (true) {\n var _domNode_parentElement;\n if (((_domNode_parentElement = domNode.parentElement) == null ? void 0 : _domNode_parentElement.localName) === 'head') {\n // TODO: We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // We need to replace `findDOMNode` in favor of Fragment Refs (when available) so that we can skip over metadata.\n }\n }\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return;\n }\n domNode = domNode.nextElementSibling;\n }\n // State is mutated to ensure that the focus and scroll is applied only once.\n focusAndScrollRef.apply = false;\n focusAndScrollRef.hashFragment = null;\n focusAndScrollRef.segmentPaths = [];\n (0, _disablesmoothscroll.disableSmoothScrollDuringRouteTransition)(()=>{\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n ;\n domNode.scrollIntoView();\n return;\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement;\n const viewportHeight = htmlElement.clientHeight;\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return;\n }\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0;\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n ;\n domNode.scrollIntoView();\n }\n }, {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange\n });\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false;\n // Set focus on the element\n domNode.focus();\n }\n };\n }\n}\nfunction ScrollAndFocusHandler(param) {\n let { segmentPath, children } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant global layout router not mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E473\",\n enumerable: false,\n configurable: true\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(InnerScrollAndFocusHandler, {\n segmentPath: segmentPath,\n focusAndScrollRef: context.focusAndScrollRef,\n children: children\n });\n}\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */ function InnerLayoutRouter(param) {\n let { tree, segmentPath, cacheNode, url } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant global layout router not mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E473\",\n enumerable: false,\n configurable: true\n });\n }\n const { tree: fullTree } = context;\n // `rsc` represents the renderable node for this segment.\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc = cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc;\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc = (0, _react.useDeferredValue)(cacheNode.rsc, resolvedPrefetchRsc);\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n const resolvedRsc = typeof rsc === 'object' && rsc !== null && typeof rsc.then === 'function' ? (0, _react.use)(rsc) : rsc;\n if (!resolvedRsc) {\n // The data for this segment is not available, and there's no pending\n // navigation that will be able to fulfill it. We need to fetch more from\n // the server and patch the cache.\n // Check if there's already a pending request.\n let lazyData = cacheNode.lazyData;\n if (lazyData === null) {\n /**\n * Router state with refetch marker added\n */ // TODO-APP: remove ''\n const refetchTree = walkAddRefetch([\n '',\n ...segmentPath\n ], fullTree);\n const includeNextUrl = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(fullTree);\n const navigatedAt = Date.now();\n cacheNode.lazyData = lazyData = (0, _fetchserverresponse.fetchServerResponse)(new URL(url, location.origin), {\n flightRouterState: refetchTree,\n nextUrl: includeNextUrl ? context.nextUrl : null\n }).then((serverResponse)=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_SERVER_PATCH,\n previousTree: fullTree,\n serverResponse,\n navigatedAt\n });\n });\n return serverResponse;\n });\n // Suspend while waiting for lazyData to resolve\n (0, _react.use)(lazyData);\n }\n // Suspend infinitely as `changeByServerResponse` will cause a different part of the tree to be rendered.\n // A falsey `resolvedRsc` indicates missing data -- we should not commit that branch, and we need to wait for the data to arrive.\n (0, _react.use)(_unresolvedthenable.unresolvedThenable);\n }\n // If we get to this point, then we know we have something we can render.\n const subtree = /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: {\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n // TODO-APP: overriding of url for parallel routes\n url: url\n },\n children: resolvedRsc\n });\n // Ensure root layout is not wrapped in a div as the root layout renders ``\n return subtree;\n}\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */ function LoadingBoundary(param) {\n let { loading, children } = param;\n // If loading is a promise, unwrap it. This happens in cases where we haven't\n // yet received the loading data from the server — which includes whether or\n // not this layout has a loading component at all.\n //\n // It's OK to suspend here instead of inside the fallback because this\n // promise will resolve simultaneously with the data for the segment itself.\n // So it will never suspend for longer than it would have if we didn't use\n // a Suspense fallback at all.\n let loadingModuleData;\n if (typeof loading === 'object' && loading !== null && typeof loading.then === 'function') {\n const promiseForLoading = loading;\n loadingModuleData = (0, _react.use)(promiseForLoading);\n } else {\n loadingModuleData = loading;\n }\n if (loadingModuleData) {\n const loadingRsc = loadingModuleData[0];\n const loadingStyles = loadingModuleData[1];\n const loadingScripts = loadingModuleData[2];\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n fallback: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n loadingStyles,\n loadingScripts,\n loadingRsc\n ]\n }),\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nfunction OuterLayoutRouter(param) {\n let { parallelRouterKey, error, errorStyles, errorScripts, templateStyles, templateScripts, template, notFound, forbidden, unauthorized, segmentViewBoundaries } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n if (!context) {\n throw Object.defineProperty(new Error('invariant expected layout router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E56\",\n enumerable: false,\n configurable: true\n });\n }\n const { parentTree, parentCacheNode, parentSegmentPath, url } = context;\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentParallelRoutes = parentCacheNode.parallelRoutes;\n let segmentMap = parentParallelRoutes.get(parallelRouterKey);\n // If the parallel router cache node does not exist yet, create it.\n // This writes to the cache when there is no item in the cache yet. It never *overwrites* existing cache items which is why it's safe in concurrent mode.\n if (!segmentMap) {\n segmentMap = new Map();\n parentParallelRoutes.set(parallelRouterKey, segmentMap);\n }\n const parentTreeSegment = parentTree[0];\n const segmentPath = parentSegmentPath === null ? // the code. We should clean this up.\n [\n parallelRouterKey\n ] : parentSegmentPath.concat([\n parentTreeSegment,\n parallelRouterKey\n ]);\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey];\n const activeSegment = activeTree[0];\n const activeStateKey = (0, _createroutercachekey.createRouterCacheKey)(activeSegment, true) // no search params\n ;\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry = (0, _bfcache.useRouterBFCache)(activeTree, activeStateKey);\n let children = [];\n do {\n const tree = bfcacheEntry.tree;\n const stateKey = bfcacheEntry.stateKey;\n const segment = tree[0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n // Read segment path from the parallel router cache node.\n let cacheNode = segmentMap.get(cacheKey);\n if (cacheNode === undefined) {\n // When data is not available during rendering client-side we need to fetch\n // it from the server.\n const newLazyCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n };\n // Flight data fetch kicked off during render and put into the cache.\n cacheNode = newLazyCacheNode;\n segmentMap.set(cacheKey, newLazyCacheNode);\n }\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */ let segmentBoundaryTriggerNode = null;\n let segmentViewStateNode = null;\n if (true) {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n const pagePrefix = (0, _apppaths.normalizeAppPath)(url);\n segmentViewStateNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentViewStateNode, {\n page: pagePrefix\n }, pagePrefix);\n segmentBoundaryTriggerNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentBoundaryTriggerNode, {})\n });\n }\n // TODO: The loading module data for a segment is stored on the parent, then\n // applied to each of that parent segment's parallel route slots. In the\n // simple case where there's only one parallel route (the `children` slot),\n // this is no different from if the loading module data where stored on the\n // child directly. But I'm not sure this actually makes sense when there are\n // multiple parallel routes. It's not a huge issue because you always have\n // the option to define a narrower loading boundary for a particular slot. But\n // this sort of smells like an implementation accident to me.\n const loadingModuleData = parentCacheNode.loading;\n let child = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_approutercontextsharedruntime.TemplateContext.Provider, {\n value: /*#__PURE__*/ (0, _jsxruntime.jsxs)(ScrollAndFocusHandler, {\n segmentPath: segmentPath,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.ErrorBoundary, {\n errorComponent: error,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(LoadingBoundary, {\n loading: loadingModuleData,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary1.HTTPAccessFallbackBoundary, {\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_redirectboundary.RedirectBoundary, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(InnerLayoutRouter, {\n url: url,\n tree: tree,\n cacheNode: cacheNode,\n segmentPath: segmentPath\n }),\n segmentBoundaryTriggerNode\n ]\n })\n })\n })\n }),\n segmentViewStateNode\n ]\n }),\n children: [\n templateStyles,\n templateScripts,\n template\n ]\n }, stateKey);\n if (true) {\n const { SegmentStateProvider } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n child = /*#__PURE__*/ (0, _jsxruntime.jsxs)(SegmentStateProvider, {\n children: [\n child,\n segmentViewBoundaries\n ]\n }, stateKey);\n }\n if (false) {}\n children.push(child);\n bfcacheEntry = bfcacheEntry.next;\n }while (bfcacheEntry !== null);\n return children;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=layout-router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0E4ZUE7OztlQUF3QkE7Ozs7OztnREEvZGpCOzZFQVNBOytFQUNjOzJEQUtkO2lEQUM2QjtnREFDRDsyQ0FDTDsyQ0FDRDtpREFDNEI7OENBQ3hCOzRDQUNVO2tEQUNOOytEQUNhOzRDQUNWO3FDQUNrQjtzQ0FDekI7QUFFakMsTUFBTUMsV0FBV0MsTUFBa0MsR0FDOUNHLENBQTZELEdBQzlEO0FBRUo7OztDQUdDLEdBQ0QsU0FBU0UsZUFDUEMsaUJBQWdELEVBQ2hEQyxjQUFpQztJQUVqQyxJQUFJRCxtQkFBbUI7UUFDckIsTUFBTSxDQUFDRSxTQUFTQyxpQkFBaUIsR0FBR0g7UUFDcEMsTUFBTUksU0FBU0osa0JBQWtCSyxNQUFNLEtBQUs7UUFFNUMsSUFBSUMsQ0FBQUEsR0FBQUEsZUFBQUEsWUFBWSxFQUFDTCxjQUFjLENBQUMsRUFBRSxFQUFFQyxVQUFVO1lBQzVDLElBQUlELGNBQWMsQ0FBQyxFQUFFLENBQUNNLGNBQWMsQ0FBQ0osbUJBQW1CO2dCQUN0RCxJQUFJQyxRQUFRO29CQUNWLE1BQU1JLFVBQVVULGVBQ2RVLFdBQ0FSLGNBQWMsQ0FBQyxFQUFFLENBQUNFLGlCQUFpQjtvQkFFckMsT0FBTzt3QkFDTEYsY0FBYyxDQUFDLEVBQUU7d0JBQ2pCOzRCQUNFLEdBQUdBLGNBQWMsQ0FBQyxFQUFFOzRCQUNwQixDQUFDRSxpQkFBaUIsRUFBRTtnQ0FDbEJLLE9BQU8sQ0FBQyxFQUFFO2dDQUNWQSxPQUFPLENBQUMsRUFBRTtnQ0FDVkEsT0FBTyxDQUFDLEVBQUU7Z0NBQ1Y7NkJBQ0Q7d0JBQ0g7cUJBQ0Q7Z0JBQ0g7Z0JBRUEsT0FBTztvQkFDTFAsY0FBYyxDQUFDLEVBQUU7b0JBQ2pCO3dCQUNFLEdBQUdBLGNBQWMsQ0FBQyxFQUFFO3dCQUNwQixDQUFDRSxpQkFBaUIsRUFBRUosZUFDbEJDLGtCQUFr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O29CQUtSQzs7OztnQkFJSjNCO2dCQUNBQztnQkFDQUM7O1dBaENJbUI7UUFvQ1QsSUFBSTFKLElBQW9CLEVBQW1CO1lBQ3pDLE1BQU0sRUFBRTZLLG9CQUFvQixFQUFFLEdBQzVCMUssbUJBQU9BLENBQUMsb0pBQXlEO1lBRW5Fb0ssUUFBQUEsV0FBQUEsR0FDRSxzQkFBQ00sc0JBQUFBOztvQkFDRU47b0JBQ0E1Qjs7ZUFGd0JlO1FBSy9CO1FBRUEsSUFBSTFKLEtBQWtDLEVBQUUsRUFTdkM7UUFFRHVELFNBQVN3SCxJQUFJLENBQUNSO1FBRWRmLGVBQWVBLGFBQWF3QixJQUFJO0lBQ2xDLFFBQVN4QixpQkFBaUIsTUFBSztJQUUvQixPQUFPakc7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcbGF5b3V0LXJvdXRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB0eXBlIHtcbiAgQ2FjaGVOb2RlLFxuICBMYXp5Q2FjaGVOb2RlLFxuICBMb2FkaW5nTW9kdWxlRGF0YSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9lcnJvci1ib3VuZGFyeSdcbmltcG9ydCB7XG4gIEFDVElPTl9TRVJWRVJfUEFUQ0gsXG4gIHR5cGUgRm9jdXNBbmRTY3JvbGxSZWYsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbmltcG9ydCBSZWFjdCwge1xuICB1c2VDb250ZXh0LFxuICB1c2UsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgU3VzcGVuc2UsXG4gIHVzZURlZmVycmVkVmFsdWUsXG4gIHR5cGUgSlNYLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQge1xuICBMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBUZW1wbGF0ZUNvbnRleHQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZmV0Y2hTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgdW5yZXNvbHZlZFRoZW5hYmxlIH0gZnJvbSAnLi91bnJlc29sdmVkLXRoZW5hYmxlJ1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4vZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgeyBtYXRjaFNlZ21lbnQgfSBmcm9tICcuL21hdGNoLXNlZ21lbnRzJ1xuaW1wb3J0IHsgZGlzYWJsZVNtb290aFNjcm9sbER1cmluZ1JvdXRlVHJhbnNpdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Rpc2FibGUtc21vb3RoLXNjcm9sbCdcbmltcG9ydCB7IFJlZGlyZWN0Qm91bmRhcnkgfSBmcm9tICcuL3JlZGlyZWN0LWJvdW5kYXJ5J1xuaW1wb3J0IHsgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkgfSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5J1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuaW1wb3J0IHsgaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9oYXMtaW50ZXJjZXB0aW9uLXJvdXRlLWluLWN1cnJlbnQtdHJlZSdcbmltcG9ydCB7IGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIH0gZnJvbSAnLi91c2UtYWN0aW9uLXF1ZXVlJ1xuaW1wb3J0IHsgdXNlUm91dGVyQkZDYWNoZSwgdHlwZSBSb3V0ZXJCRkNhY2hlRW50cnkgfSBmcm9tICcuL2JmY2FjaGUnXG5pbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYXBwLXBhdGhzJ1xuXG5jb25zdCBBY3Rpdml0eSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkZfQ0FDSEVcbiAgPyAocmVxdWlyZSgncmVhY3QnKSBhcyB0eXBlb2YgaW1wb3J0KCdyZWFjdCcpKS51bnN0YWJsZV9BY3Rpdml0eVxuICA6IG51bGwhXG5cbi8qKlxuICogQWRkIHJlZmV0Y2ggbWFya2VyIHRvIHJvdXRlciBzdGF0ZSBhdCB0aGUgcG9pbnQgb2YgdGhlIGN1cnJlbnQgbGF5b3V0IHNlZ21lbnQuXG4gKiBUaGlzIGVuc3VyZXMgdGhlIHJlc3BvbnNlIHJldHVybmVkIGlzIG5vdCBmdXJ0aGVyIGRvd24gdGhhbiB0aGUgY3VycmVudCBsYXlvdXQgc2VnbWVudC5cbiAqL1xuZnVuY3Rpb24gd2Fsa0FkZFJlZmV0Y2goXG4gIHNlZ21lbnRQYXRoVG9XYWxrOiBGbGlnaHRTZWdtZW50UGF0aCB8IHVuZGVmaW5lZCxcbiAgdHJlZVRvUmVjcmVhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGlmIChzZWdtZW50UGF0aFRvV2Fsaykge1xuICAgIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlS2V5XSA9IHNlZ21lbnRQYXRoVG9XYWxrXG4gICAgY29uc3QgaXNMYXN0ID0gc2VnbWVudFBhdGhUb1dhbGsubGVuZ3RoID09PSAyXG5cbiAgICBpZiAobWF0Y2hTZWdtZW50KHRyZWVUb1JlY3JlYXRlWzBdLCBzZWdtZW50KSkge1xuICAgICAgaWYgKHRyZWVUb1JlY3JlYXRlWzFdLmhhc093blByb3BlcnR5KHBhcmFsbGVsUm91dGVLZXkpKSB7XG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICBjb25zdCBzdWJUcmVlID0gd2Fsa0FkZFJlZmV0Y2goXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB0cmVlVG9SZWNyZWF0ZVsxXVtwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdHJlZVRvUmVjcmVhdGVbMF0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnRyZWVUb1JlY3JlYXRlWzFdLFxuICAgICAgICAgICAgICBbcGFyYWxsZWxSb3V0ZUtleV06IFtcbiAgICAgICAgICAgICAgICBzdWJUcmVlWzBdLFxuICAgICAgICAgICAgICAgIHN1YlRyZWVbMV0sXG4gICAgICAgICAgICAgICAgc3ViVHJlZVsyXSxcbiAgICAgICAgICAgICAgICAncmVmZXRjaCcsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgdHJlZVRvUmVjcmVhdGVbMF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4udHJlZVRvUmVjcmVhdGVbMV0sXG4gICAgICAgICAgICBbcGFyYWxsZWxSb3V0ZUtleV06IHdhbGtBZGRSZWZldGNoKFxuICAgICAgICAgICAgICBzZWdtZW50UGF0aFRvV2Fsay5zbGljZSgyKSxcbiAgICAgICAgICAgICAgdHJlZVRvUmVjcmVhdGVbMV1bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cmVlVG9SZWNyZWF0ZVxufVxuXG5jb25zdCBfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPSAoXG4gIFJlYWN0RE9NIGFzIGFueVxuKS5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREVcblxuLy8gVE9ETy1BUFA6IFJlcGxhY2Ugd2l0aCBuZXcgUmVhY3QgQVBJIGZvciBmaW5kaW5nIGRvbSBub2RlcyB3aXRob3V0IGEgYHJlZmAgd2hlbiBhdmFpbGFibGVcbi8qKlxuICogV3JhcHMgUmVhY3RET00uZmluZERPTU5vZGUgd2l0aCBhZGRpdGlvbmFsIGxvZ2ljIHRvIGhpZGUgUmVhY3QgU3RyaWN0IE1vZGUgd2FybmluZ1xuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShcbiAgaW5zdGFuY2U6IFJlYWN0LlJlYWN0SW5zdGFuY2UgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFbGVtZW50IHwgVGV4dCB8IG51bGwge1xuICAvLyBUcmVlLXNoYWtlIGZvciBzZXJ2ZXIgYnVuZGxlXG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuIG51bGxcblxuICAvLyBfX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUuZmluZERPTU5vZGUgaXMgbnVsbCBkdXJpbmcgbW9kdWxlIGluaXQuXG4gIC8vIFdlIG5lZWQgdG8gbGF6aWx5IHJlZmVyZW5jZSBpdC5cbiAgY29uc3QgaW50ZXJuYWxfcmVhY3RET01maW5kRE9NTm9kZSA9XG4gICAgX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLmZpbmRET01Ob2RlXG4gIHJldHVybiBpbnRlcm5hbF9yZWFjdERPTWZpbmRET01Ob2RlKGluc3RhbmNlKVxufVxuXG5jb25zdCByZWN0UHJvcGVydGllcyA9IFtcbiAgJ2JvdHRvbScsXG4gICdoZWlnaHQnLFxuICAnbGVmdCcsXG4gICdyaWdodCcsXG4gICd0b3AnLFxuICAnd2lkdGgnLFxuICAneCcsXG4gICd5Jyxcbl0gYXMgY29uc3Rcbi8qKlxuICogQ2hlY2sgaWYgYSBIVE1MRWxlbWVudCBpcyBoaWRkZW4gb3IgZml4ZWQvc3RpY2t5IHBvc2l0aW9uXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFNraXBFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gIC8vIHdlIGlnbm9yZSBmaXhlZCBvciBzdGlja3kgcG9zaXRpb25lZCBlbGVtZW50cyBzaW5jZSB0aGV5J2xsIGxpa2VseSBwYXNzIHRoZSBcImluLXZpZXdwb3J0XCIgY2hlY2tcbiAgLy8gYW5kIHdpbGwgcmVzdWx0IGluIGEgc2l0dWF0aW9uIHdlIGJhaWwgb24gc2Nyb2xsIGJlY2F1c2Ugb2Ygc29tZXRoaW5nIGxpa2UgYSBmaXhlZCBuYXYsXG4gIC8vIGV2ZW4gdGhvdWdoIHRoZSBhY3R1YWwgcGFnZSBjb250ZW50IGlzIG9mZnNjcmVlblxuICBpZiAoWydzdGlja3knLCAnZml4ZWQnXS5pbmNsdWRlcyhnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2tpcHBpbmcgYXV0by1zY3JvbGwgYmVoYXZpb3IgZHVlIHRvIGBwb3NpdGlvbjogc3RpY2t5YCBvciBgcG9zaXRpb246IGZpeGVkYCBvbiBlbGVtZW50OicsXG4gICAgICAgIGVsZW1lbnRcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIFVzZXMgYGdldEJvdW5kaW5nQ2xpZW50UmVjdGAgdG8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgaGlkZGVuIGluc3RlYWQgb2YgYG9mZnNldFBhcmVudGBcbiAgLy8gYmVjYXVzZSBgb2Zmc2V0UGFyZW50YCBkb2Vzbid0IGNvbnNpZGVyIGRvY3VtZW50L2JvZHlcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHJlY3RQcm9wZXJ0aWVzLmV2ZXJ5KChpdGVtKSA9PiByZWN0W2l0ZW1dID09PSAwKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB0b3AgY29ybmVyIG9mIHRoZSBIVE1MRWxlbWVudCBpcyBpbiB0aGUgdmlld3BvcnQuXG4gKi9cbmZ1bmN0aW9uIHRvcE9mRWxlbWVudEluVmlld3BvcnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXIpIHtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHJlY3QudG9wID49IDAgJiYgcmVjdC50b3AgPD0gdmlld3BvcnRIZWlnaHRcbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBET00gbm9kZSBmb3IgYSBoYXNoIGZyYWdtZW50LlxuICogSWYgYHRvcGAgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlLiBUaGlzIG1pcnJvcnMgdGhlIGJyb3dzZXIncyBiZWhhdmlvci5cbiAqIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGFuIGlkLCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSBlbGVtZW50IHdpdGggdGhhdCBpZC5cbiAqIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGEgbmFtZSwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIHRoYXQgbmFtZS5cbiAqL1xuZnVuY3Rpb24gZ2V0SGFzaEZyYWdtZW50RG9tTm9kZShoYXNoRnJhZ21lbnQ6IHN0cmluZykge1xuICAvLyBJZiB0aGUgaGFzaCBmcmFnbWVudCBpcyBgdG9wYCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UuXG4gIGlmIChoYXNoRnJhZ21lbnQgPT09ICd0b3AnKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgfVxuXG4gIC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGFuIGlkLCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSBlbGVtZW50IHdpdGggdGhhdCBpZC5cbiAgcmV0dXJuIChcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoYXNoRnJhZ21lbnQpID8/XG4gICAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYSBuYW1lLCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSBmaXJzdCBlbGVtZW50IHdpdGggdGhhdCBuYW1lLlxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGhhc2hGcmFnbWVudClbMF1cbiAgKVxufVxuaW50ZXJmYWNlIFNjcm9sbEFuZEZvY3VzSGFuZGxlclByb3BzIHtcbiAgZm9jdXNBbmRTY3JvbGxSZWY6IEZvY3VzQW5kU2Nyb2xsUmVmXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG59XG5jbGFzcyBJbm5lclNjcm9sbEFuZEZvY3VzSGFuZGxlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxTY3JvbGxBbmRGb2N1c0hhbmRsZXJQcm9wcz4ge1xuICBoYW5kbGVQb3RlbnRpYWxTY3JvbGwgPSAoKSA9PiB7XG4gICAgLy8gSGFuZGxlIHNjcm9sbCBhbmQgZm9jdXMsIGl0J3Mgb25seSBhcHBsaWVkIG9uY2UgaW4gdGhlIGZpcnN0IHVzZUVmZmVjdCB0aGF0IHRyaWdnZXJzIHRoYXQgY2hhbmdlZC5cbiAgICBjb25zdCB7IGZvY3VzQW5kU2Nyb2xsUmVmLCBzZWdtZW50UGF0aCB9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKGZvY3VzQW5kU2Nyb2xsUmVmLmFwcGx5KSB7XG4gICAgICAvLyBzZWdtZW50UGF0aHMgaXMgYW4gYXJyYXkgb2Ygc2VnbWVudCBwYXRocyB0aGF0IHNob3VsZCBiZSBzY3JvbGxlZCB0b1xuICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgc2VnbWVudCBwYXRoIGlzIG5vdCBpbiB0aGUgYXJyYXksIHRoZSBzY3JvbGwgaXMgbm90IGFwcGxpZWRcbiAgICAgIC8vIHVubGVzcyB0aGUgYXJyYXkgaXMgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHNjcm9sbCBpcyBhbHdheXMgYXBwbGllZFxuICAgICAgaWYgKFxuICAgICAgICBmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgICFmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMuc29tZSgoc2Nyb2xsUmVmU2VnbWVudFBhdGgpID0+XG4gICAgICAgICAgc2VnbWVudFBhdGguZXZlcnkoKHNlZ21lbnQsIGluZGV4KSA9PlxuICAgICAgICAgICAgbWF0Y2hTZWdtZW50KHNlZ21lbnQsIHNjcm9sbFJlZlNlZ21lbnRQYXRoW2luZGV4XSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGRvbU5vZGU6XG4gICAgICAgIHwgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0SGFzaEZyYWdtZW50RG9tTm9kZT5cbiAgICAgICAgfCBSZXR1cm5UeXBlPHR5cGVvZiBmaW5kRE9NTm9kZT4gPSBudWxsXG4gICAgICBjb25zdCBoYXNoRnJhZ21lbnQgPSBmb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnRcblxuICAgICAgaWYgKGhhc2hGcmFnbWVudCkge1xuICAgICAgICBkb21Ob2RlID0gZ2V0SGFzaEZyYWdtZW50RG9tTm9kZShoYXNoRnJhZ21lbnQpXG4gICAgICB9XG5cbiAgICAgIC8vIGBmaW5kRE9NTm9kZWAgaXMgdHJpY2t5IGJlY2F1c2UgaXQgcmV0dXJucyBqdXN0IHRoZSBmaXJzdCBjaGlsZCBpZiB0aGUgY29tcG9uZW50IGlzIGEgZnJhZ21lbnQuXG4gICAgICAvLyBUaGlzIGFscmVhZHkgY2F1c2VkIGEgYnVnIHdoZXJlIHRoZSBmaXJzdCBjaGlsZCB3YXMgYSA8bGluay8+IGluIGhlYWQuXG4gICAgICBpZiAoIWRvbU5vZGUpIHtcbiAgICAgICAgZG9tTm9kZSA9IGZpbmRET01Ob2RlKHRoaXMpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIERPTSBub2RlIHRoaXMgbGF5b3V0LXJvdXRlciBsZXZlbCBpcyBza2lwcGVkLiBJdCdsbCBiZSBoYW5kbGVkIGhpZ2hlci11cCBpbiB0aGUgdHJlZS5cbiAgICAgIGlmICghKGRvbU5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IGlmIHRoZSBlbGVtZW50IGlzIGEgSFRNTEVsZW1lbnQgYW5kIGlmIHdlIHdhbnQgdG8gY29uc2lkZXIgaXQgZm9yIHNjcm9sbCBiZWhhdmlvci5cbiAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIHNraXBwZWQsIHRyeSB0byBzZWxlY3QgdGhlIG5leHQgc2libGluZyBhbmQgdHJ5IGFnYWluLlxuICAgICAgd2hpbGUgKCEoZG9tTm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB8fCBzaG91bGRTa2lwRWxlbWVudChkb21Ob2RlKSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmIChkb21Ob2RlLnBhcmVudEVsZW1lbnQ/LmxvY2FsTmFtZSA9PT0gJ2hlYWQnKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBXZSBlbnRlciB0aGlzIHN0YXRlIHdoZW4gbWV0YWRhdGEgd2FzIHJlbmRlcmVkIGFzIHBhcnQgb2YgdGhlIHBhZ2Ugb3IgdmlhIE5leHQuanMuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGFsd2F5cyBhIGJ1ZyBpbiBOZXh0LmpzIGFuZCBjYXVzZWQgYnkgUmVhY3QgaG9pc3RpbmcgbWV0YWRhdGEuXG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcGxhY2UgYGZpbmRET01Ob2RlYCBpbiBmYXZvciBvZiBGcmFnbWVudCBSZWZzICh3aGVuIGF2YWlsYWJsZSkgc28gdGhhdCB3ZSBjYW4gc2tpcCBvdmVyIG1ldGFkYXRhLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIHNpYmxpbmdzIGZvdW5kIHRoYXQgbWF0Y2ggdGhlIGNyaXRlcmlhIGFyZSBmb3VuZCwgc28gaGFuZGxlIHNjcm9sbCBoaWdoZXIgdXAgaW4gdGhlIHRyZWUgaW5zdGVhZC5cbiAgICAgICAgaWYgKGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZG9tTm9kZSA9IGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICB9XG5cbiAgICAgIC8vIFN0YXRlIGlzIG11dGF0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvY3VzIGFuZCBzY3JvbGwgaXMgYXBwbGllZCBvbmx5IG9uY2UuXG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZi5hcHBseSA9IGZhbHNlXG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnQgPSBudWxsXG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMgPSBbXVxuXG4gICAgICBkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgLy8gSW4gY2FzZSBvZiBoYXNoIHNjcm9sbCwgd2Ugb25seSBuZWVkIHRvIHNjcm9sbCB0aGUgZWxlbWVudCBpbnRvIHZpZXdcbiAgICAgICAgICBpZiAoaGFzaEZyYWdtZW50KSB7XG4gICAgICAgICAgICA7KGRvbU5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbEludG9WaWV3KClcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFN0b3JlIHRoZSBjdXJyZW50IHZpZXdwb3J0IGhlaWdodCBiZWNhdXNlIHJlYWRpbmcgYGNsaWVudEhlaWdodGAgY2F1c2VzIGEgcmVmbG93LFxuICAgICAgICAgIC8vIGFuZCBpdCB3b24ndCBjaGFuZ2UgZHVyaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGh0bWxFbGVtZW50LmNsaWVudEhlaWdodFxuXG4gICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQncyB0b3AgZWRnZSBpcyBhbHJlYWR5IGluIHRoZSB2aWV3cG9ydCwgZXhpdCBlYXJseS5cbiAgICAgICAgICBpZiAodG9wT2ZFbGVtZW50SW5WaWV3cG9ydChkb21Ob2RlIGFzIEhUTUxFbGVtZW50LCB2aWV3cG9ydEhlaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE90aGVyd2lzZSwgdHJ5IHNjcm9sbGluZyBnbyB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudCB0byBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcGFnZXNcbiAgICAgICAgICAvLyBzY3JvbGxJbnRvVmlldygpIGNhbGxlZCBvbiBgPGh0bWwvPmAgZWxlbWVudCBzY3JvbGxzIGhvcml6b250YWxseSBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggKHRoYXQgc2hvdWxkbid0IGhhcHBlbilcbiAgICAgICAgICAvLyBXZSBjb3VsZCB1c2UgaXQgdG8gc2Nyb2xsIGhvcml6b250YWxseSBmb2xsb3dpbmcgUlRMIGJ1dCB0aGF0IGFsc28gc2VlbXMgdG8gYmUgYnJva2VuIC0gaXQgd2lsbCBhbHdheXMgc2Nyb2xsIGxlZnRcbiAgICAgICAgICAvLyBzY3JvbGxMZWZ0ID0gMCBhbHNvIHNlZW1zIHRvIGlnbm9yZSBSVEwgYW5kIG1hbnVhbGx5IGNoZWNraW5nIGZvciBSVEwgaXMgdG9vIG11Y2ggaGFzc2xlIHNvIHdlIHdpbGwgc2Nyb2xsIGp1c3QgdmVydGljYWxseVxuICAgICAgICAgIGh0bWxFbGVtZW50LnNjcm9sbFRvcCA9IDBcblxuICAgICAgICAgIC8vIFNjcm9sbCB0byBkb21Ob2RlIGlmIGRvbU5vZGUgaXMgbm90IGluIHZpZXdwb3J0IHdoZW4gc2Nyb2xsZWQgdG8gdG9wIG9mIGRvY3VtZW50XG4gICAgICAgICAgaWYgKCF0b3BPZkVsZW1lbnRJblZpZXdwb3J0KGRvbU5vZGUgYXMgSFRNTEVsZW1lbnQsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgICAgICAgLy8gU2Nyb2xsIGludG8gdmlldyBkb2Vzbid0IHNjcm9sbCBob3Jpem9udGFsbHkgYnkgZGVmYXVsdCB3aGVuIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIDsoZG9tTm9kZSBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIFdlIHdpbGwgZm9yY2UgbGF5b3V0IGJ5IHF1ZXJ5aW5nIGRvbU5vZGUgcG9zaXRpb25cbiAgICAgICAgICBkb250Rm9yY2VMYXlvdXQ6IHRydWUsXG4gICAgICAgICAgb25seUhhc2hDaGFuZ2U6IGZvY3VzQW5kU2Nyb2xsUmVmLm9ubHlIYXNoQ2hhbmdlLFxuICAgICAgICB9XG4gICAgICApXG5cbiAgICAgIC8vIE11dGF0ZSBhZnRlciBzY3JvbGxpbmcgc28gdGhhdCBpdCBjYW4gYmUgcmVhZCBieSBgZGlzYWJsZVNtb290aFNjcm9sbER1cmluZ1JvdXRlVHJhbnNpdGlvbmBcbiAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmLm9ubHlIYXNoQ2hhbmdlID0gZmFsc2VcblxuICAgICAgLy8gU2V0IGZvY3VzIG9uIHRoZSBlbGVtZW50XG4gICAgICBkb21Ob2RlLmZvY3VzKClcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLmhhbmRsZVBvdGVudGlhbFNjcm9sbCgpXG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgLy8gQmVjYXVzZSB0aGlzIHByb3BlcnR5IGlzIG92ZXJ3cml0dGVuIGluIGhhbmRsZVBvdGVudGlhbFNjcm9sbCBpdCdzIGZpbmUgdG8gYWx3YXlzIHJ1biBpdCB3aGVuIHRydWUgYXMgaXQnbGwgYmUgc2V0IHRvIGZhbHNlIGZvciBzdWJzZXF1ZW50IHJlbmRlcnMuXG4gICAgaWYgKHRoaXMucHJvcHMuZm9jdXNBbmRTY3JvbGxSZWYuYXBwbHkpIHtcbiAgICAgIHRoaXMuaGFuZGxlUG90ZW50aWFsU2Nyb2xsKClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG5mdW5jdGlvbiBTY3JvbGxBbmRGb2N1c0hhbmRsZXIoe1xuICBzZWdtZW50UGF0aCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdsb2JhbExheW91dFJvdXRlckNvbnRleHQpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IGdsb2JhbCBsYXlvdXQgcm91dGVyIG5vdCBtb3VudGVkJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPElubmVyU2Nyb2xsQW5kRm9jdXNIYW5kbGVyXG4gICAgICBzZWdtZW50UGF0aD17c2VnbWVudFBhdGh9XG4gICAgICBmb2N1c0FuZFNjcm9sbFJlZj17Y29udGV4dC5mb2N1c0FuZFNjcm9sbFJlZn1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Jbm5lclNjcm9sbEFuZEZvY3VzSGFuZGxlcj5cbiAgKVxufVxuXG4vKipcbiAqIElubmVyTGF5b3V0Um91dGVyIGhhbmRsZXMgcmVuZGVyaW5nIHRoZSBwcm92aWRlZCBzZWdtZW50IGJhc2VkIG9uIHRoZSBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSW5uZXJMYXlvdXRSb3V0ZXIoe1xuICB0cmVlLFxuICBzZWdtZW50UGF0aCxcbiAgY2FjaGVOb2RlLFxuICB1cmwsXG59OiB7XG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuICBjYWNoZU5vZGU6IENhY2hlTm9kZVxuICB1cmw6IHN0cmluZ1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCBnbG9iYWwgbGF5b3V0IHJvdXRlciBub3QgbW91bnRlZCcpXG4gIH1cblxuICBjb25zdCB7IHRyZWU6IGZ1bGxUcmVlIH0gPSBjb250ZXh0XG5cbiAgLy8gYHJzY2AgcmVwcmVzZW50cyB0aGUgcmVuZGVyYWJsZSBub2RlIGZvciB0aGlzIHNlZ21lbnQuXG5cbiAgLy8gSWYgdGhpcyBzZWdtZW50IGhhcyBhIGBwcmVmZXRjaFJzY2AsIGl0J3MgdGhlIHN0YXRpY2FsbHkgcHJlZmV0Y2hlZCBkYXRhLlxuICAvLyBXZSBzaG91bGQgdXNlIHRoYXQgb24gaW5pdGlhbCByZW5kZXIgaW5zdGVhZCBvZiBgcnNjYC4gVGhlbiB3ZSdsbCBzd2l0Y2hcbiAgLy8gdG8gYHJzY2Agd2hlbiB0aGUgZHluYW1pYyByZXNwb25zZSBzdHJlYW1zIGluLlxuICAvL1xuICAvLyBJZiBubyBwcmVmZXRjaCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhlbiB3ZSBnbyBzdHJhaWdodCB0byByZW5kZXJpbmcgYHJzY2AuXG4gIGNvbnN0IHJlc29sdmVkUHJlZmV0Y2hSc2MgPVxuICAgIGNhY2hlTm9kZS5wcmVmZXRjaFJzYyAhPT0gbnVsbCA/IGNhY2hlTm9kZS5wcmVmZXRjaFJzYyA6IGNhY2hlTm9kZS5yc2NcblxuICAvLyBXZSB1c2UgYHVzZURlZmVycmVkVmFsdWVgIHRvIGhhbmRsZSBzd2l0Y2hpbmcgYmV0d2VlbiB0aGUgcHJlZmV0Y2hlZCBhbmRcbiAgLy8gZmluYWwgdmFsdWVzLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHJldHVybmVkIG9uIGluaXRpYWwgcmVuZGVyLCB0aGVuIGl0XG4gIC8vIHJlLXJlbmRlcnMgd2l0aCB0aGUgZmlyc3QgYXJndW1lbnQuXG4gIGNvbnN0IHJzYzogYW55ID0gdXNlRGVmZXJyZWRWYWx1ZShjYWNoZU5vZGUucnNjLCByZXNvbHZlZFByZWZldGNoUnNjKVxuXG4gIC8vIGByc2NgIGlzIGVpdGhlciBhIFJlYWN0IG5vZGUgb3IgYSBwcm9taXNlIGZvciBhIFJlYWN0IG5vZGUsIGV4Y2VwdCB3ZVxuICAvLyBzcGVjaWFsIGNhc2UgYG51bGxgIHRvIHJlcHJlc2VudCB0aGF0IHRoaXMgc2VnbWVudCdzIGRhdGEgaXMgbWlzc2luZy4gSWZcbiAgLy8gaXQncyBhIHByb21pc2UsIHdlIG5lZWQgdG8gdW53cmFwIGl0IHNvIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlXG4gIC8vIGRhdGEgaXMgbWlzc2luZy5cbiAgY29uc3QgcmVzb2x2ZWRSc2M6IFJlYWN0LlJlYWN0Tm9kZSA9XG4gICAgdHlwZW9mIHJzYyA9PT0gJ29iamVjdCcgJiYgcnNjICE9PSBudWxsICYmIHR5cGVvZiByc2MudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB1c2UocnNjKVxuICAgICAgOiByc2NcblxuICBpZiAoIXJlc29sdmVkUnNjKSB7XG4gICAgLy8gVGhlIGRhdGEgZm9yIHRoaXMgc2VnbWVudCBpcyBub3QgYXZhaWxhYmxlLCBhbmQgdGhlcmUncyBubyBwZW5kaW5nXG4gICAgLy8gbmF2aWdhdGlvbiB0aGF0IHdpbGwgYmUgYWJsZSB0byBmdWxmaWxsIGl0LiBXZSBuZWVkIHRvIGZldGNoIG1vcmUgZnJvbVxuICAgIC8vIHRoZSBzZXJ2ZXIgYW5kIHBhdGNoIHRoZSBjYWNoZS5cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHBlbmRpbmcgcmVxdWVzdC5cbiAgICBsZXQgbGF6eURhdGEgPSBjYWNoZU5vZGUubGF6eURhdGFcbiAgICBpZiAobGF6eURhdGEgPT09IG51bGwpIHtcbiAgICAgIC8qKlxuICAgICAgICogUm91dGVyIHN0YXRlIHdpdGggcmVmZXRjaCBtYXJrZXIgYWRkZWRcbiAgICAgICAqL1xuICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgY29uc3QgcmVmZXRjaFRyZWUgPSB3YWxrQWRkUmVmZXRjaChbJycsIC4uLnNlZ21lbnRQYXRoXSwgZnVsbFRyZWUpXG4gICAgICBjb25zdCBpbmNsdWRlTmV4dFVybCA9IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZShmdWxsVHJlZSlcbiAgICAgIGNvbnN0IG5hdmlnYXRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgY2FjaGVOb2RlLmxhenlEYXRhID0gbGF6eURhdGEgPSBmZXRjaFNlcnZlclJlc3BvbnNlKFxuICAgICAgICBuZXcgVVJMKHVybCwgbG9jYXRpb24ub3JpZ2luKSxcbiAgICAgICAge1xuICAgICAgICAgIGZsaWdodFJvdXRlclN0YXRlOiByZWZldGNoVHJlZSxcbiAgICAgICAgICBuZXh0VXJsOiBpbmNsdWRlTmV4dFVybCA/IGNvbnRleHQubmV4dFVybCA6IG51bGwsXG4gICAgICAgIH1cbiAgICAgICkudGhlbigoc2VydmVyUmVzcG9uc2UpID0+IHtcbiAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgICAgICB0eXBlOiBBQ1RJT05fU0VSVkVSX1BBVENILFxuICAgICAgICAgICAgcHJldmlvdXNUcmVlOiBmdWxsVHJlZSxcbiAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gc2VydmVyUmVzcG9uc2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFN1c3BlbmQgd2hpbGUgd2FpdGluZyBmb3IgbGF6eURhdGEgdG8gcmVzb2x2ZVxuICAgICAgdXNlKGxhenlEYXRhKVxuICAgIH1cbiAgICAvLyBTdXNwZW5kIGluZmluaXRlbHkgYXMgYGNoYW5nZUJ5U2VydmVyUmVzcG9uc2VgIHdpbGwgY2F1c2UgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgdHJlZSB0byBiZSByZW5kZXJlZC5cbiAgICAvLyBBIGZhbHNleSBgcmVzb2x2ZWRSc2NgIGluZGljYXRlcyBtaXNzaW5nIGRhdGEgLS0gd2Ugc2hvdWxkIG5vdCBjb21taXQgdGhhdCBicmFuY2gsIGFuZCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBkYXRhIHRvIGFycml2ZS5cbiAgICB1c2UodW5yZXNvbHZlZFRoZW5hYmxlKSBhcyBuZXZlclxuICB9XG5cbiAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9pbnQsIHRoZW4gd2Uga25vdyB3ZSBoYXZlIHNvbWV0aGluZyB3ZSBjYW4gcmVuZGVyLlxuICBjb25zdCBzdWJ0cmVlID0gKFxuICAgIC8vIFRoZSBsYXlvdXQgcm91dGVyIGNvbnRleHQgbmFycm93cyBkb3duIHRyZWUgYW5kIGNoaWxkTm9kZXMgYXQgZWFjaCBsZXZlbC5cbiAgICA8TGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgcGFyZW50VHJlZTogdHJlZSxcbiAgICAgICAgcGFyZW50Q2FjaGVOb2RlOiBjYWNoZU5vZGUsXG4gICAgICAgIHBhcmVudFNlZ21lbnRQYXRoOiBzZWdtZW50UGF0aCxcblxuICAgICAgICAvLyBUT0RPLUFQUDogb3ZlcnJpZGluZyBvZiB1cmwgZm9yIHBhcmFsbGVsIHJvdXRlc1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge3Jlc29sdmVkUnNjfVxuICAgIDwvTGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxuICAvLyBFbnN1cmUgcm9vdCBsYXlvdXQgaXMgbm90IHdyYXBwZWQgaW4gYSBkaXYgYXMgdGhlIHJvb3QgbGF5b3V0IHJlbmRlcnMgYDxodG1sPmBcbiAgcmV0dXJuIHN1YnRyZWVcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHN1c3BlbnNlIGJvdW5kYXJ5IHdpdGggdGhlIHByb3ZpZGVkIFwibG9hZGluZ1wiIHByb3BlcnR5IGFzIHRoZSBmYWxsYmFjay5cbiAqIElmIG5vIGxvYWRpbmcgcHJvcGVydHkgaXMgcHJvdmlkZWQgaXQgcmVuZGVycyB0aGUgY2hpbGRyZW4gd2l0aG91dCBhIHN1c3BlbnNlIGJvdW5kYXJ5LlxuICovXG5mdW5jdGlvbiBMb2FkaW5nQm91bmRhcnkoe1xuICBsb2FkaW5nLFxuICBjaGlsZHJlbixcbn06IHtcbiAgbG9hZGluZzogTG9hZGluZ01vZHVsZURhdGEgfCBQcm9taXNlPExvYWRpbmdNb2R1bGVEYXRhPlxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KTogSlNYLkVsZW1lbnQge1xuICAvLyBJZiBsb2FkaW5nIGlzIGEgcHJvbWlzZSwgdW53cmFwIGl0LiBUaGlzIGhhcHBlbnMgaW4gY2FzZXMgd2hlcmUgd2UgaGF2ZW4ndFxuICAvLyB5ZXQgcmVjZWl2ZWQgdGhlIGxvYWRpbmcgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIg4oCUIHdoaWNoIGluY2x1ZGVzIHdoZXRoZXIgb3JcbiAgLy8gbm90IHRoaXMgbGF5b3V0IGhhcyBhIGxvYWRpbmcgY29tcG9uZW50IGF0IGFsbC5cbiAgLy9cbiAgLy8gSXQncyBPSyB0byBzdXNwZW5kIGhlcmUgaW5zdGVhZCBvZiBpbnNpZGUgdGhlIGZhbGxiYWNrIGJlY2F1c2UgdGhpc1xuICAvLyBwcm9taXNlIHdpbGwgcmVzb2x2ZSBzaW11bHRhbmVvdXNseSB3aXRoIHRoZSBkYXRhIGZvciB0aGUgc2VnbWVudCBpdHNlbGYuXG4gIC8vIFNvIGl0IHdpbGwgbmV2ZXIgc3VzcGVuZCBmb3IgbG9uZ2VyIHRoYW4gaXQgd291bGQgaGF2ZSBpZiB3ZSBkaWRuJ3QgdXNlXG4gIC8vIGEgU3VzcGVuc2UgZmFsbGJhY2sgYXQgYWxsLlxuICBsZXQgbG9hZGluZ01vZHVsZURhdGFcbiAgaWYgKFxuICAgIHR5cGVvZiBsb2FkaW5nID09PSAnb2JqZWN0JyAmJlxuICAgIGxvYWRpbmcgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgKGxvYWRpbmcgYXMgYW55KS50aGVuID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGNvbnN0IHByb21pc2VGb3JMb2FkaW5nID0gbG9hZGluZyBhcyBQcm9taXNlPExvYWRpbmdNb2R1bGVEYXRhPlxuICAgIGxvYWRpbmdNb2R1bGVEYXRhID0gdXNlKHByb21pc2VGb3JMb2FkaW5nKVxuICB9IGVsc2Uge1xuICAgIGxvYWRpbmdNb2R1bGVEYXRhID0gbG9hZGluZyBhcyBMb2FkaW5nTW9kdWxlRGF0YVxuICB9XG5cbiAgaWYgKGxvYWRpbmdNb2R1bGVEYXRhKSB7XG4gICAgY29uc3QgbG9hZGluZ1JzYyA9IGxvYWRpbmdNb2R1bGVEYXRhWzBdXG4gICAgY29uc3QgbG9hZGluZ1N0eWxlcyA9IGxvYWRpbmdNb2R1bGVEYXRhWzFdXG4gICAgY29uc3QgbG9hZGluZ1NjcmlwdHMgPSBsb2FkaW5nTW9kdWxlRGF0YVsyXVxuICAgIHJldHVybiAoXG4gICAgICA8U3VzcGVuc2VcbiAgICAgICAgZmFsbGJhY2s9e1xuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7bG9hZGluZ1N0eWxlc31cbiAgICAgICAgICAgIHtsb2FkaW5nU2NyaXB0c31cbiAgICAgICAgICAgIHtsb2FkaW5nUnNjfVxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU3VzcGVuc2U+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxufVxuXG4vKipcbiAqIE91dGVyTGF5b3V0Um91dGVyIGhhbmRsZXMgdGhlIGN1cnJlbnQgc2VnbWVudCBhcyB3ZWxsIGFzIDxPZmZzY3JlZW4+IHJlbmRlcmluZyBvZiBvdGhlciBzZWdtZW50cy5cbiAqIEl0IGNhbiBiZSByZW5kZXJlZCBuZXh0IHRvIGVhY2ggb3RoZXIgd2l0aCBhIGRpZmZlcmVudCBgcGFyYWxsZWxSb3V0ZXJLZXlgLCBhbGxvd2luZyBmb3IgUGFyYWxsZWwgcm91dGVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPdXRlckxheW91dFJvdXRlcih7XG4gIHBhcmFsbGVsUm91dGVyS2V5LFxuICBlcnJvcixcbiAgZXJyb3JTdHlsZXMsXG4gIGVycm9yU2NyaXB0cyxcbiAgdGVtcGxhdGVTdHlsZXMsXG4gIHRlbXBsYXRlU2NyaXB0cyxcbiAgdGVtcGxhdGUsXG4gIG5vdEZvdW5kLFxuICBmb3JiaWRkZW4sXG4gIHVuYXV0aG9yaXplZCxcbiAgc2VnbWVudFZpZXdCb3VuZGFyaWVzLFxufToge1xuICBwYXJhbGxlbFJvdXRlcktleTogc3RyaW5nXG4gIGVycm9yOiBFcnJvckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBlcnJvclN0eWxlczogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIGVycm9yU2NyaXB0czogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIHRlbXBsYXRlU3R5bGVzOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgdGVtcGxhdGVTY3JpcHRzOiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgdGVtcGxhdGU6IFJlYWN0LlJlYWN0Tm9kZVxuICBub3RGb3VuZDogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIGZvcmJpZGRlbjogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIHVuYXV0aG9yaXplZDogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG4gIHNlZ21lbnRWaWV3Qm91bmRhcmllcz86IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCBleHBlY3RlZCBsYXlvdXQgcm91dGVyIHRvIGJlIG1vdW50ZWQnKVxuICB9XG5cbiAgY29uc3QgeyBwYXJlbnRUcmVlLCBwYXJlbnRDYWNoZU5vZGUsIHBhcmVudFNlZ21lbnRQYXRoLCB1cmwgfSA9IGNvbnRleHRcblxuICAvLyBHZXQgdGhlIENhY2hlTm9kZSBmb3IgdGhpcyBzZWdtZW50IGJ5IHJlYWRpbmcgaXQgZnJvbSB0aGUgcGFyZW50IHNlZ21lbnQnc1xuICAvLyBjaGlsZCBtYXAuXG4gIGNvbnN0IHBhcmVudFBhcmFsbGVsUm91dGVzID0gcGFyZW50Q2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzXG4gIGxldCBzZWdtZW50TWFwID0gcGFyZW50UGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVyS2V5KVxuICAvLyBJZiB0aGUgcGFyYWxsZWwgcm91dGVyIGNhY2hlIG5vZGUgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuXG4gIC8vIFRoaXMgd3JpdGVzIHRvIHRoZSBjYWNoZSB3aGVuIHRoZXJlIGlzIG5vIGl0ZW0gaW4gdGhlIGNhY2hlIHlldC4gSXQgbmV2ZXIgKm92ZXJ3cml0ZXMqIGV4aXN0aW5nIGNhY2hlIGl0ZW1zIHdoaWNoIGlzIHdoeSBpdCdzIHNhZmUgaW4gY29uY3VycmVudCBtb2RlLlxuICBpZiAoIXNlZ21lbnRNYXApIHtcbiAgICBzZWdtZW50TWFwID0gbmV3IE1hcCgpXG4gICAgcGFyZW50UGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVyS2V5LCBzZWdtZW50TWFwKVxuICB9XG4gIGNvbnN0IHBhcmVudFRyZWVTZWdtZW50ID0gcGFyZW50VHJlZVswXVxuICBjb25zdCBzZWdtZW50UGF0aCA9XG4gICAgcGFyZW50U2VnbWVudFBhdGggPT09IG51bGxcbiAgICAgID8gLy8gVE9ETzogVGhlIHJvb3Qgc2VnbWVudCB2YWx1ZSBpcyBjdXJyZW50bHkgb21pdHRlZCBmcm9tIHRoZSBzZWdtZW50XG4gICAgICAgIC8vIHBhdGguIFRoaXMgaGFzIGxlZCB0byBhIGJ1bmNoIG9mIHNwZWNpYWwgY2FzZXMgc2NhdHRlcmVkIHRocm91Z2hvdXRcbiAgICAgICAgLy8gdGhlIGNvZGUuIFdlIHNob3VsZCBjbGVhbiB0aGlzIHVwLlxuICAgICAgICBbcGFyYWxsZWxSb3V0ZXJLZXldXG4gICAgICA6IHBhcmVudFNlZ21lbnRQYXRoLmNvbmNhdChbcGFyZW50VHJlZVNlZ21lbnQsIHBhcmFsbGVsUm91dGVyS2V5XSlcblxuICAvLyBUaGUgXCJzdGF0ZVwiIGtleSBvZiBhIHNlZ21lbnQgaXMgdGhlIG9uZSBwYXNzZWQgdG8gUmVhY3Qg4oCUIGl0IHJlcHJlc2VudHMgdGhlXG4gIC8vIGlkZW50aXR5IG9mIHRoZSBVSSB0cmVlLiBXaGVuZXZlciB0aGUgc3RhdGUga2V5IGNoYW5nZXMsIHRoZSB0cmVlIGlzXG4gIC8vIHJlY3JlYXRlZCBhbmQgdGhlIHN0YXRlIGlzIHJlc2V0LiBJbiB0aGUgQXBwIFJvdXRlciBtb2RlbCwgc2VhcmNoIHBhcmFtcyBkb1xuICAvLyBub3QgY2F1c2Ugc3RhdGUgdG8gYmUgbG9zdCwgc28gdHdvIHNlZ21lbnRzIHdpdGggdGhlIHNhbWUgc2VnbWVudCBwYXRoIGJ1dFxuICAvLyBkaWZmZXJlbnQgc2VhcmNoIHBhcmFtcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzdGF0ZSBrZXkuXG4gIC8vXG4gIC8vIFRoZSBcImNhY2hlXCIga2V5IG9mIGEgc2VnbWVudCwgaG93ZXZlciwgKmRvZXMqIGluY2x1ZGUgdGhlIHNlYXJjaCBwYXJhbXMsIGlmXG4gIC8vIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgc2VnbWVudCBhY2Nlc3NlZCB0aGUgc2VhcmNoIHBhcmFtcyBvbiB0aGUgc2VydmVyLlxuICAvLyAoVGhpcyBvbmx5IGFwcGxpZXMgdG8gcGFnZSBzZWdtZW50czsgbGF5b3V0IHNlZ21lbnRzIGNhbm5vdCBhY2Nlc3Mgc2VhcmNoXG4gIC8vIHBhcmFtcyBvbiB0aGUgc2VydmVyLilcbiAgY29uc3QgYWN0aXZlVHJlZSA9IHBhcmVudFRyZWVbMV1bcGFyYWxsZWxSb3V0ZXJLZXldXG4gIGNvbnN0IGFjdGl2ZVNlZ21lbnQgPSBhY3RpdmVUcmVlWzBdXG4gIGNvbnN0IGFjdGl2ZVN0YXRlS2V5ID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoYWN0aXZlU2VnbWVudCwgdHJ1ZSkgLy8gbm8gc2VhcmNoIHBhcmFtc1xuXG4gIC8vIEF0IGVhY2ggbGV2ZWwgb2YgdGhlIHJvdXRlIHRyZWUsIG5vdCBvbmx5IGRvIHdlIHJlbmRlciB0aGUgY3VycmVudGx5XG4gIC8vIGFjdGl2ZSBzZWdtZW50IOKAlCB3ZSBhbHNvIHJlbmRlciB0aGUgbGFzdCBOIHNlZ21lbnRzIHRoYXQgd2VyZSBhY3RpdmUgYXRcbiAgLy8gdGhpcyBsZXZlbCBpbnNpZGUgYSBoaWRkZW4gPEFjdGl2aXR5PiBib3VuZGFyeSwgdG8gcHJlc2VydmUgdGhlaXIgc3RhdGVcbiAgLy8gaWYgb3Igd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gdGhlbSBhZ2Fpbi5cbiAgLy9cbiAgLy8gYmZjYWNoZUVudHJ5IGlzIGEgbGlua2VkIGxpc3Qgb2YgRmxpZ2h0Um91dGVyU3RhdGVzLlxuICBsZXQgYmZjYWNoZUVudHJ5OiBSb3V0ZXJCRkNhY2hlRW50cnkgfCBudWxsID0gdXNlUm91dGVyQkZDYWNoZShcbiAgICBhY3RpdmVUcmVlLFxuICAgIGFjdGl2ZVN0YXRlS2V5XG4gIClcbiAgbGV0IGNoaWxkcmVuOiBBcnJheTxSZWFjdC5SZWFjdE5vZGU+ID0gW11cbiAgZG8ge1xuICAgIGNvbnN0IHRyZWUgPSBiZmNhY2hlRW50cnkudHJlZVxuICAgIGNvbnN0IHN0YXRlS2V5ID0gYmZjYWNoZUVudHJ5LnN0YXRlS2V5XG4gICAgY29uc3Qgc2VnbWVudCA9IHRyZWVbMF1cbiAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQpXG5cbiAgICAvLyBSZWFkIHNlZ21lbnQgcGF0aCBmcm9tIHRoZSBwYXJhbGxlbCByb3V0ZXIgY2FjaGUgbm9kZS5cbiAgICBsZXQgY2FjaGVOb2RlID0gc2VnbWVudE1hcC5nZXQoY2FjaGVLZXkpXG4gICAgaWYgKGNhY2hlTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBXaGVuIGRhdGEgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgcmVuZGVyaW5nIGNsaWVudC1zaWRlIHdlIG5lZWQgdG8gZmV0Y2hcbiAgICAgIC8vIGl0IGZyb20gdGhlIHNlcnZlci5cbiAgICAgIGNvbnN0IG5ld0xhenlDYWNoZU5vZGU6IExhenlDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICByc2M6IG51bGwsXG4gICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGxvYWRpbmc6IG51bGwsXG4gICAgICAgIG5hdmlnYXRlZEF0OiAtMSxcbiAgICAgIH1cblxuICAgICAgLy8gRmxpZ2h0IGRhdGEgZmV0Y2gga2lja2VkIG9mZiBkdXJpbmcgcmVuZGVyIGFuZCBwdXQgaW50byB0aGUgY2FjaGUuXG4gICAgICBjYWNoZU5vZGUgPSBuZXdMYXp5Q2FjaGVOb2RlXG4gICAgICBzZWdtZW50TWFwLnNldChjYWNoZUtleSwgbmV3TGF6eUNhY2hlTm9kZSlcbiAgICB9XG5cbiAgICAvKlxuICAgIC0gRXJyb3IgYm91bmRhcnlcbiAgICAgIC0gT25seSByZW5kZXJzIGVycm9yIGJvdW5kYXJ5IGlmIGVycm9yIGNvbXBvbmVudCBpcyBwcm92aWRlZC5cbiAgICAgIC0gUmVuZGVyZWQgZm9yIGVhY2ggc2VnbWVudCB0byBlbnN1cmUgdGhleSBoYXZlIHRoZWlyIG93biBlcnJvciBzdGF0ZS5cbiAgICAgIC0gV2hlbiBncmFjZWZ1bGx5IGRlZ3JhZGUgZm9yIGJvdHMsIHNraXAgcmVuZGVyaW5nIGVycm9yIGJvdW5kYXJ5LlxuICAgIC0gTG9hZGluZyBib3VuZGFyeVxuICAgICAgLSBPbmx5IHJlbmRlcnMgc3VzcGVuc2UgYm91bmRhcnkgaWYgbG9hZGluZyBjb21wb25lbnRzIGlzIHByb3ZpZGVkLlxuICAgICAgLSBSZW5kZXJlZCBmb3IgZWFjaCBzZWdtZW50IHRvIGVuc3VyZSB0aGV5IGhhdmUgdGhlaXIgb3duIGxvYWRpbmcgc3RhdGUuXG4gICAgICAtIFBhc3NlZCB0byB0aGUgcm91dGVyIGR1cmluZyByZW5kZXJpbmcgdG8gZW5zdXJlIGl0IGNhbiBiZSBpbW1lZGlhdGVseSByZW5kZXJlZCB3aGVuIHN1c3BlbmRpbmcgb24gYSBGbGlnaHQgZmV0Y2guXG4gICovXG5cbiAgICBsZXQgc2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGU6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGxcbiAgICBsZXQgc2VnbWVudFZpZXdTdGF0ZU5vZGU6IFJlYWN0LlJlYWN0Tm9kZSA9IG51bGxcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfREVWVE9PTF9TRUdNRU5UX0VYUExPUkVSXG4gICAgKSB7XG4gICAgICBjb25zdCB7IFNlZ21lbnRCb3VuZGFyeVRyaWdnZXJOb2RlLCBTZWdtZW50Vmlld1N0YXRlTm9kZSB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL3NlZ21lbnQtZXhwbG9yZXItbm9kZScpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUnKVxuXG4gICAgICBjb25zdCBwYWdlUHJlZml4ID0gbm9ybWFsaXplQXBwUGF0aCh1cmwpXG4gICAgICBzZWdtZW50Vmlld1N0YXRlTm9kZSA9IChcbiAgICAgICAgPFNlZ21lbnRWaWV3U3RhdGVOb2RlIGtleT17cGFnZVByZWZpeH0gcGFnZT17cGFnZVByZWZpeH0gLz5cbiAgICAgIClcblxuICAgICAgc2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGUgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFNlZ21lbnRCb3VuZGFyeVRyaWdnZXJOb2RlIC8+XG4gICAgICAgIDwvPlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIFRPRE86IFRoZSBsb2FkaW5nIG1vZHVsZSBkYXRhIGZvciBhIHNlZ21lbnQgaXMgc3RvcmVkIG9uIHRoZSBwYXJlbnQsIHRoZW5cbiAgICAvLyBhcHBsaWVkIHRvIGVhY2ggb2YgdGhhdCBwYXJlbnQgc2VnbWVudCdzIHBhcmFsbGVsIHJvdXRlIHNsb3RzLiBJbiB0aGVcbiAgICAvLyBzaW1wbGUgY2FzZSB3aGVyZSB0aGVyZSdzIG9ubHkgb25lIHBhcmFsbGVsIHJvdXRlICh0aGUgYGNoaWxkcmVuYCBzbG90KSxcbiAgICAvLyB0aGlzIGlzIG5vIGRpZmZlcmVudCBmcm9tIGlmIHRoZSBsb2FkaW5nIG1vZHVsZSBkYXRhIHdoZXJlIHN0b3JlZCBvbiB0aGVcbiAgICAvLyBjaGlsZCBkaXJlY3RseS4gQnV0IEknbSBub3Qgc3VyZSB0aGlzIGFjdHVhbGx5IG1ha2VzIHNlbnNlIHdoZW4gdGhlcmUgYXJlXG4gICAgLy8gbXVsdGlwbGUgcGFyYWxsZWwgcm91dGVzLiBJdCdzIG5vdCBhIGh1Z2UgaXNzdWUgYmVjYXVzZSB5b3UgYWx3YXlzIGhhdmVcbiAgICAvLyB0aGUgb3B0aW9uIHRvIGRlZmluZSBhIG5hcnJvd2VyIGxvYWRpbmcgYm91bmRhcnkgZm9yIGEgcGFydGljdWxhciBzbG90LiBCdXRcbiAgICAvLyB0aGlzIHNvcnQgb2Ygc21lbGxzIGxpa2UgYW4gaW1wbGVtZW50YXRpb24gYWNjaWRlbnQgdG8gbWUuXG4gICAgY29uc3QgbG9hZGluZ01vZHVsZURhdGEgPSBwYXJlbnRDYWNoZU5vZGUubG9hZGluZ1xuICAgIGxldCBjaGlsZCA9IChcbiAgICAgIDxUZW1wbGF0ZUNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAga2V5PXtzdGF0ZUtleX1cbiAgICAgICAgdmFsdWU9e1xuICAgICAgICAgIDxTY3JvbGxBbmRGb2N1c0hhbmRsZXIgc2VnbWVudFBhdGg9e3NlZ21lbnRQYXRofT5cbiAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5XG4gICAgICAgICAgICAgIGVycm9yQ29tcG9uZW50PXtlcnJvcn1cbiAgICAgICAgICAgICAgZXJyb3JTdHlsZXM9e2Vycm9yU3R5bGVzfVxuICAgICAgICAgICAgICBlcnJvclNjcmlwdHM9e2Vycm9yU2NyaXB0c31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPExvYWRpbmdCb3VuZGFyeSBsb2FkaW5nPXtsb2FkaW5nTW9kdWxlRGF0YX0+XG4gICAgICAgICAgICAgICAgPEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgICBub3RGb3VuZD17bm90Rm91bmR9XG4gICAgICAgICAgICAgICAgICBmb3JiaWRkZW49e2ZvcmJpZGRlbn1cbiAgICAgICAgICAgICAgICAgIHVuYXV0aG9yaXplZD17dW5hdXRob3JpemVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdEJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJMYXlvdXRSb3V0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB1cmw9e3VybH1cbiAgICAgICAgICAgICAgICAgICAgICB0cmVlPXt0cmVlfVxuICAgICAgICAgICAgICAgICAgICAgIGNhY2hlTm9kZT17Y2FjaGVOb2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnRQYXRoPXtzZWdtZW50UGF0aH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlZ21lbnRCb3VuZGFyeVRyaWdnZXJOb2RlfVxuICAgICAgICAgICAgICAgICAgPC9SZWRpcmVjdEJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk+XG4gICAgICAgICAgICAgIDwvTG9hZGluZ0JvdW5kYXJ5PlxuICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAge3NlZ21lbnRWaWV3U3RhdGVOb2RlfVxuICAgICAgICAgIDwvU2Nyb2xsQW5kRm9jdXNIYW5kbGVyPlxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIHt0ZW1wbGF0ZVN0eWxlc31cbiAgICAgICAge3RlbXBsYXRlU2NyaXB0c31cbiAgICAgICAge3RlbXBsYXRlfVxuICAgICAgPC9UZW1wbGF0ZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnN0IHsgU2VnbWVudFN0YXRlUHJvdmlkZXIgfSA9XG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJylcblxuICAgICAgY2hpbGQgPSAoXG4gICAgICAgIDxTZWdtZW50U3RhdGVQcm92aWRlciBrZXk9e3N0YXRlS2V5fT5cbiAgICAgICAgICB7Y2hpbGR9XG4gICAgICAgICAge3NlZ21lbnRWaWV3Qm91bmRhcmllc31cbiAgICAgICAgPC9TZWdtZW50U3RhdGVQcm92aWRlcj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CRl9DQUNIRSkge1xuICAgICAgY2hpbGQgPSAoXG4gICAgICAgIDxBY3Rpdml0eVxuICAgICAgICAgIGtleT17c3RhdGVLZXl9XG4gICAgICAgICAgbW9kZT17c3RhdGVLZXkgPT09IGFjdGl2ZVN0YXRlS2V5ID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGR9XG4gICAgICAgIDwvQWN0aXZpdHk+XG4gICAgICApXG4gICAgfVxuXG4gICAgY2hpbGRyZW4ucHVzaChjaGlsZClcblxuICAgIGJmY2FjaGVFbnRyeSA9IGJmY2FjaGVFbnRyeS5uZXh0XG4gIH0gd2hpbGUgKGJmY2FjaGVFbnRyeSAhPT0gbnVsbClcblxuICByZXR1cm4gY2hpbGRyZW5cbn1cbiJdLCJuYW1lcyI6WyJPdXRlckxheW91dFJvdXRlciIsIkFjdGl2aXR5IiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkZfQ0FDSEUiLCJyZXF1aXJlIiwidW5zdGFibGVfQWN0aXZpdHkiLCJ3YWxrQWRkUmVmZXRjaCIsInNlZ21lbnRQYXRoVG9XYWxrIiwidHJlZVRvUmVjcmVhdGUiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZUtleSIsImlzTGFzdCIsImxlbmd0aCIsIm1hdGNoU2VnbWVudCIsImhhc093blByb3BlcnR5Iiwic3ViVHJlZSIsInVuZGVmaW5lZCIsInNsaWNlIiwiX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFIiwiUmVhY3RET00iLCJmaW5kRE9NTm9kZSIsImluc3RhbmNlIiwid2luZG93IiwiaW50ZXJuYWxfcmVhY3RET01maW5kRE9NTm9kZSIsInJlY3RQcm9wZXJ0aWVzIiwic2hvdWxkU2tpcEVsZW1lbnQiLCJlbGVtZW50IiwiaW5jbHVkZXMiLCJnZXRDb21wdXRlZFN0eWxlIiwicG9zaXRpb24iLCJOT0RFX0VOViIsImNvbnNvbGUiLCJ3YXJuIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImV2ZXJ5IiwiaXRlbSIsInRvcE9mRWxlbWVudEluVmlld3BvcnQiLCJ2aWV3cG9ydEhlaWdodCIsInRvcCIsImdldEhhc2hGcmFnbWVudERvbU5vZGUiLCJoYXNoRnJhZ21lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJnZXRFbGVtZW50QnlJZCIsImdldEVsZW1lbnRzQnlOYW1lIiwiSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbXBvbmVudERpZE1vdW50IiwiaGFuZGxlUG90ZW50aWFsU2Nyb2xsIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJvcHMiLCJmb2N1c0FuZFNjcm9sbFJlZiIsImFwcGx5IiwicmVuZGVyIiwiY2hpbGRyZW4iLCJzZWdtZW50UGF0aCIsInNlZ21lbnRQYXRocyIsInNvbWUiLCJzY3JvbGxSZWZTZWdtZW50UGF0aCIsImluZGV4IiwiZG9tTm9kZSIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsInBhcmVudEVsZW1lbnQiLCJsb2NhbE5hbWUiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uIiwic2Nyb2xsSW50b1ZpZXciLCJodG1sRWxlbWVudCIsImRvY3VtZW50RWxlbWVudCIsImNsaWVudEhlaWdodCIsInNjcm9sbFRvcCIsImRvbnRGb3JjZUxheW91dCIsIm9ubHlIYXNoQ2hhbmdlIiwiZm9jdXMiLCJTY3JvbGxBbmRGb2N1c0hhbmRsZXIiLCJjb250ZXh0IiwidXNlQ29udGV4dCIsIkdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJFcnJvciIsIklubmVyTGF5b3V0Um91dGVyIiwidHJlZSIsImNhY2hlTm9kZSIsInVybCIsImZ1bGxUcmVlIiwicmVzb2x2ZWRQcmVmZXRjaFJzYyIsInByZWZldGNoUnNjIiwicnNjIiwidXNlRGVmZXJyZWRWYWx1ZSIsInJlc29sdmVkUnNjIiwidGhlbiIsInVzZSIsImxhenlEYXRhIiwicmVmZXRjaFRyZWUiLCJpbmNsdWRlTmV4dFVybCIsImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIsIm5hdmlnYXRlZEF0IiwiRGF0ZSIsIm5vdyIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsInNlcnZlclJlc3BvbnNlIiwic3RhcnRUcmFuc2l0aW9uIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1NFUlZFUl9QQVRDSCIsInByZXZpb3VzVHJlZSIsInVucmVzb2x2ZWRUaGVuYWJsZSIsInN1YnRyZWUiLCJMYXlvdXRSb3V0ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInBhcmVudFRyZWUiLCJwYXJlbnRDYWNoZU5vZGUiLCJwYXJlbnRTZWdtZW50UGF0aCIsIkxvYWRpbmdCb3VuZGFyeSIsImxvYWRpbmciLCJsb2FkaW5nTW9kdWxlRGF0YSIsInByb21pc2VGb3JMb2FkaW5nIiwibG9hZGluZ1JzYyIsImxvYWRpbmdTdHlsZXMiLCJsb2FkaW5nU2NyaXB0cyIsIlN1c3BlbnNlIiwiZmFsbGJhY2siLCJwYXJhbGxlbFJvdXRlcktleSIsImVycm9yIiwiZXJyb3JTdHlsZXMiLCJlcnJvclNjcmlwdHMiLCJ0ZW1wbGF0ZVN0eWxlcyIsInRlbXBsYXRlU2NyaXB0cyIsInRlbXBsYXRlIiwibm90Rm91bmQiLCJmb3JiaWRkZW4iLCJ1bmF1dGhvcml6ZWQiLCJzZWdtZW50Vmlld0JvdW5kYXJpZXMiLCJwYXJlbnRQYXJhbGxlbFJvdXRlcyIsInBhcmFsbGVsUm91dGVzIiwic2VnbWVudE1hcCIsImdldCIsIk1hcCIsInNldCIsInBhcmVudFRyZWVTZWdtZW50IiwiY29uY2F0IiwiYWN0aXZlVHJlZSIsImFjdGl2ZVNlZ21lbnQiLCJhY3RpdmVTdGF0ZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwiYmZjYWNoZUVudHJ5IiwidXNlUm91dGVyQkZDYWNoZSIsInN0YXRlS2V5IiwiY2FjaGVLZXkiLCJuZXdMYXp5Q2FjaGVOb2RlIiwiaGVhZCIsInByZWZldGNoSGVhZCIsInNlZ21lbnRCb3VuZGFyeVRyaWdnZXJOb2RlIiwic2VnbWVudFZpZXdTdGF0ZU5vZGUiLCJfX05FWFRfREVWVE9PTF9TRUdNRU5UX0VYUExPUkVSIiwiU2VnbWVudEJvdW5kYXJ5VHJpZ2dlck5vZGUiLCJTZWdtZW50Vmlld1N0YXRlTm9kZSIsInBhZ2VQcmVmaXgiLCJub3JtYWxpemVBcHBQYXRoIiwicGFnZSIsImNoaWxkIiwiVGVtcGxhdGVDb250ZXh0IiwiRXJyb3JCb3VuZGFyeSIsImVycm9yQ29tcG9uZW50IiwiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJSZWRpcmVjdEJvdW5kYXJ5IiwiU2VnbWVudFN0YXRlUHJvdmlkZXIiLCJtb2RlIiwicHVzaCIsIm5leHQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/layout-router.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/match-segments.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/match-segments.js ***! \********************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"matchSegment\", ({\n enumerable: true,\n get: function() {\n return matchSegment;\n }\n}));\nconst matchSegment = (existingSegment, segment)=>{\n // segment is either Array or string\n if (typeof existingSegment === 'string') {\n if (typeof segment === 'string') {\n // Common case: segment is just a string\n return existingSegment === segment;\n }\n return false;\n }\n if (typeof segment === 'string') {\n return false;\n }\n return existingSegment[0] === segment[0] && existingSegment[1] === segment[1];\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=match-segments.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL21hdGNoLXNlZ21lbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBRWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLGVBQWUsQ0FDMUJDLGlCQUNBQztJQUVBLG9DQUFvQztJQUNwQyxJQUFJLE9BQU9ELG9CQUFvQixVQUFVO1FBQ3ZDLElBQUksT0FBT0MsWUFBWSxVQUFVO1lBQy9CLHdDQUF3QztZQUN4QyxPQUFPRCxvQkFBb0JDO1FBQzdCO1FBQ0EsT0FBTztJQUNUO0lBRUEsSUFBSSxPQUFPQSxZQUFZLFVBQVU7UUFDL0IsT0FBTztJQUNUO0lBQ0EsT0FBT0QsZUFBZSxDQUFDLEVBQUUsS0FBS0MsT0FBTyxDQUFDLEVBQUUsSUFBSUQsZUFBZSxDQUFDLEVBQUUsS0FBS0MsT0FBTyxDQUFDLEVBQUU7QUFDL0UiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXG1hdGNoLXNlZ21lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgbWF0Y2hTZWdtZW50ID0gKFxuICBleGlzdGluZ1NlZ21lbnQ6IFNlZ21lbnQsXG4gIHNlZ21lbnQ6IFNlZ21lbnRcbik6IGJvb2xlYW4gPT4ge1xuICAvLyBzZWdtZW50IGlzIGVpdGhlciBBcnJheSBvciBzdHJpbmdcbiAgaWYgKHR5cGVvZiBleGlzdGluZ1NlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gQ29tbW9uIGNhc2U6IHNlZ21lbnQgaXMganVzdCBhIHN0cmluZ1xuICAgICAgcmV0dXJuIGV4aXN0aW5nU2VnbWVudCA9PT0gc2VnbWVudFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gZXhpc3RpbmdTZWdtZW50WzBdID09PSBzZWdtZW50WzBdICYmIGV4aXN0aW5nU2VnbWVudFsxXSA9PT0gc2VnbWVudFsxXVxufVxuIl0sIm5hbWVzIjpbIm1hdGNoU2VnbWVudCIsImV4aXN0aW5nU2VnbWVudCIsInNlZ21lbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/match-segments.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/components/metadata/async-metadata.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AsyncMetadataOutlet\", ({\n enumerable: true,\n get: function() {\n return AsyncMetadataOutlet;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nfunction MetadataOutlet(param) {\n let { promise } = param;\n const { error, digest } = (0, _react.use)(promise);\n if (error) {\n if (digest) {\n // The error will lose its original digest after passing from server layer to client layer;\n // We recover the digest property here to override the React created one if original digest exists.\n ;\n error.digest = digest;\n }\n throw error;\n }\n return null;\n}\nfunction AsyncMetadataOutlet(param) {\n let { promise } = param;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {\n fallback: null,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(MetadataOutlet, {\n promise: promise\n })\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=async-metadata.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL21ldGFkYXRhL2FzeW5jLW1ldGFkYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7dURBc0JnQkE7OztlQUFBQTs7OzttQ0FwQmM7QUFHOUIsU0FBU0MsZUFBZSxLQUl2QjtJQUp1QixNQUN0QkMsT0FBTyxFQUdSLEdBSnVCO0lBS3RCLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsR0FBRyxFQUFDSDtJQUM5QixJQUFJQyxPQUFPO1FBQ1QsSUFBSUMsUUFBUTtZQUNWLDJGQUEyRjtZQUMzRixtR0FBbUc7O1lBQ2pHRCxNQUFjQyxNQUFNLEdBQUdBO1FBQzNCO1FBQ0EsTUFBTUQ7SUFDUjtJQUNBLE9BQU87QUFDVDtBQUVPLFNBQVNILG9CQUFvQixLQUluQztJQUptQyxNQUNsQ0UsT0FBTyxFQUdSLEdBSm1DO0lBS2xDLHFCQUNFLHFCQUFDSSxPQUFBQSxRQUFRO1FBQUNDLFVBQVU7a0JBQ2xCLG1DQUFDTixnQkFBQUE7WUFBZUMsU0FBU0E7OztBQUcvQiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxtZXRhZGF0YVxcYXN5bmMtbWV0YWRhdGEudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBTdXNwZW5zZSwgdXNlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbWluZ01ldGFkYXRhUmVzb2x2ZWRTdGF0ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmZ1bmN0aW9uIE1ldGFkYXRhT3V0bGV0KHtcbiAgcHJvbWlzZSxcbn06IHtcbiAgcHJvbWlzZTogUHJvbWlzZTxTdHJlYW1pbmdNZXRhZGF0YVJlc29sdmVkU3RhdGU+XG59KSB7XG4gIGNvbnN0IHsgZXJyb3IsIGRpZ2VzdCB9ID0gdXNlKHByb21pc2UpXG4gIGlmIChlcnJvcikge1xuICAgIGlmIChkaWdlc3QpIHtcbiAgICAgIC8vIFRoZSBlcnJvciB3aWxsIGxvc2UgaXRzIG9yaWdpbmFsIGRpZ2VzdCBhZnRlciBwYXNzaW5nIGZyb20gc2VydmVyIGxheWVyIHRvIGNsaWVudCBsYXllcu+8m1xuICAgICAgLy8gV2UgcmVjb3ZlciB0aGUgZGlnZXN0IHByb3BlcnR5IGhlcmUgdG8gb3ZlcnJpZGUgdGhlIFJlYWN0IGNyZWF0ZWQgb25lIGlmIG9yaWdpbmFsIGRpZ2VzdCBleGlzdHMuXG4gICAgICA7KGVycm9yIGFzIGFueSkuZGlnZXN0ID0gZGlnZXN0XG4gICAgfVxuICAgIHRocm93IGVycm9yXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFzeW5jTWV0YWRhdGFPdXRsZXQoe1xuICBwcm9taXNlLFxufToge1xuICBwcm9taXNlOiBQcm9taXNlPFN0cmVhbWluZ01ldGFkYXRhUmVzb2x2ZWRTdGF0ZT5cbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PlxuICAgICAgPE1ldGFkYXRhT3V0bGV0IHByb21pc2U9e3Byb21pc2V9IC8+XG4gICAgPC9TdXNwZW5zZT5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkFzeW5jTWV0YWRhdGFPdXRsZXQiLCJNZXRhZGF0YU91dGxldCIsInByb21pc2UiLCJlcnJvciIsImRpZ2VzdCIsInVzZSIsIlN1c3BlbnNlIiwiZmFsbGJhY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/client/components/nav-failure-handler.js ***! \*************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleHardNavError: function() {\n return handleHardNavError;\n },\n useNavFailureHandler: function() {\n return useNavFailureHandler;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nfunction handleHardNavError(error) {\n if (error && \"undefined\" !== 'undefined' && 0 && 0) {}\n return false;\n}\nfunction useNavFailureHandler() {\n if (false) {}\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=nav-failure-handler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdi1mYWlsdXJlLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2dCQSxrQkFBa0I7ZUFBbEJBOztJQWtCQUMsb0JBQW9CO2VBQXBCQTs7O21DQXJCVTsrQ0FDUTtBQUUzQixTQUFTRCxtQkFBbUJFLEtBQWM7SUFDL0MsSUFDRUEsU0FDQSxPQUFPQyxTQUFXLGVBQ2xCQSxDQUF3QixJQUN4QkcsQ0FDNkMsRUFDN0MsRUFPRDtJQUNELE9BQU87QUFDVDtBQUVPLFNBQVNMO0lBQ2QsSUFBSVcsS0FBd0MsRUFBRSxFQXVCN0M7QUFDSCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcbmF2LWZhaWx1cmUtaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUhhcmROYXZFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgZXJyb3IgJiZcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybCAmJlxuICAgIGNyZWF0ZUhyZWZGcm9tVXJsKG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKSAhPT1cbiAgICAgIGNyZWF0ZUhyZWZGcm9tVXJsKHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybClcbiAgKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBFcnJvciBvY2N1cnJlZCBkdXJpbmcgbmF2aWdhdGlvbiwgZmFsbGluZyBiYWNrIHRvIGhhcmQgbmF2aWdhdGlvbmAsXG4gICAgICBlcnJvclxuICAgIClcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybC50b1N0cmluZygpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU5hdkZhaWx1cmVIYW5kbGVyKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORykge1xuICAgIC8vIHRoaXMgaWYgaXMgb25seSBmb3IgRENFIG9mIHRoZSBmZWF0dXJlIGZsYWcgbm90IGNvbmRpdGlvbmFsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciA9IChcbiAgICAgICAgZXZ0OiBFcnJvckV2ZW50IHwgUHJvbWlzZVJlamVjdGlvbkV2ZW50XG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSAncmVhc29uJyBpbiBldnQgPyBldnQucmVhc29uIDogZXZ0LmVycm9yXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi9yZWplY3Rpb24gZHVyaW5nXG4gICAgICAgIC8vIGEgbmF2aWdhdGlvbiB3ZSBmYWxsIGJhY2sgdG8gYSBoYXJkIG5hdmlnYXRpb24gdG9cbiAgICAgICAgLy8gYXR0ZW1wdCByZWNvdmVyaW5nIHRvIGEgZ29vZCBzdGF0ZVxuICAgICAgICBoYW5kbGVIYXJkTmF2RXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAndW5oYW5kbGVkcmVqZWN0aW9uJyxcbiAgICAgICAgICB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXJcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG59XG4iXSwibmFtZXMiOlsiaGFuZGxlSGFyZE5hdkVycm9yIiwidXNlTmF2RmFpbHVyZUhhbmRsZXIiLCJlcnJvciIsIndpbmRvdyIsIm5leHQiLCJfX3BlbmRpbmdVcmwiLCJjcmVhdGVIcmVmRnJvbVVybCIsIlVSTCIsImxvY2F0aW9uIiwiaHJlZiIsImNvbnNvbGUiLCJ0b1N0cmluZyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HIiwidXNlRWZmZWN0IiwidW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIiwiZXZ0IiwicmVhc29uIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/nav-failure-handler.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation-untracked.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useUntrackedPathname\", ({\n enumerable: true,\n get: function() {\n return useUntrackedPathname;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\n/**\n * This checks to see if the current render has any unknown route parameters.\n * It's used to trigger a different render path in the error boundary.\n *\n * @returns true if there are any unknown route parameters, false otherwise\n */ function hasFallbackRouteParams() {\n if (true) {\n // AsyncLocalStorage should not be included in the client bundle.\n const { workUnitAsyncStorage } = __webpack_require__(/*! ../../server/app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (!workUnitStore) return false;\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n return fallbackParams ? fallbackParams.size > 0 : false;\n case 'prerender-legacy':\n case 'request':\n case 'prerender-runtime':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n return false;\n }\n return false;\n}\nfunction useUntrackedPathname() {\n // If there are any unknown route parameters we would typically throw\n // an error, but this internal method allows us to return a null value instead\n // for components that do not propagate the pathname to the static shell (like\n // the error boundary).\n if (hasFallbackRouteParams()) {\n return null;\n }\n // This shouldn't cause any issues related to conditional rendering because\n // the environment will be consistent for the render.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation-untracked.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24tdW50cmFja2VkLmpzIiwibWFwcGluZ3MiOiI7Ozs7d0RBb0RnQkE7OztlQUFBQTs7O21DQXBEVzs2REFDSztBQUVoQzs7Ozs7Q0FLQyxHQUNELFNBQVNDO0lBQ1AsSUFBSSxJQUE2QixFQUFFO1FBQ2pDLGlFQUFpRTtRQUNqRSxNQUFNLEVBQUVFLG9CQUFvQixFQUFFLEdBQzVCQyxtQkFBT0EsQ0FBQyxvR0FBMEQ7UUFFcEUsTUFBTUMsZ0JBQWdCRixxQkFBcUJHLFFBQVE7UUFDbkQsSUFBSSxDQUFDRCxlQUFlLE9BQU87UUFFM0IsT0FBUUEsY0FBY0UsSUFBSTtZQUN4QixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7Z0JBQ0gsTUFBTUMsaUJBQWlCSCxjQUFjSSxtQkFBbUI7Z0JBQ3hELE9BQU9ELGlCQUFpQkEsZUFBZUUsSUFBSSxHQUFHLElBQUk7WUFDcEQsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUNIO1lBQ0Y7Z0JBQ0VMO1FBQ0o7UUFFQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPO0FBQ1Q7QUFhTyxTQUFTTDtJQUNkLHFFQUFxRTtJQUNyRSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHVCQUF1QjtJQUN2QixJQUFJQywwQkFBMEI7UUFDNUIsT0FBTztJQUNUO0lBRUEsMkVBQTJFO0lBQzNFLHFEQUFxRDtJQUNyRCxzREFBc0Q7SUFDdEQsT0FBT1UsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0MsaUNBQUFBLGVBQWU7QUFDbkMiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXG5hdmlnYXRpb24tdW50cmFja2VkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFBhdGhuYW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5cbi8qKlxuICogVGhpcyBjaGVja3MgdG8gc2VlIGlmIHRoZSBjdXJyZW50IHJlbmRlciBoYXMgYW55IHVua25vd24gcm91dGUgcGFyYW1ldGVycy5cbiAqIEl0J3MgdXNlZCB0byB0cmlnZ2VyIGEgZGlmZmVyZW50IHJlbmRlciBwYXRoIGluIHRoZSBlcnJvciBib3VuZGFyeS5cbiAqXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcygpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ugc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgY2xpZW50IGJ1bmRsZS5cbiAgICBjb25zdCB7IHdvcmtVbml0QXN5bmNTdG9yYWdlIH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpXG5cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gd29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKVxuICAgIGlmICghd29ya1VuaXRTdG9yZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIHJldHVybiBmYWxsYmFja1BhcmFtcyA/IGZhbGxiYWNrUGFyYW1zLnNpemUgPiAwIDogZmFsc2VcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICBjYXNlICdjYWNoZSc6XG4gICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBUaGlzIHJldHVybnMgYSBgbnVsbGAgdmFsdWUgaWYgdGhlcmUgYXJlIGFueSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMsIGFuZFxuICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIHBhdGhuYW1lIGZyb20gdGhlIGNvbnRleHQuIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG9cbiAqIGB1c2VQYXRobmFtZWAgdGhhdCBpcyB1c2VkIGluIHRoZSBlcnJvciBib3VuZGFyeSB0byBhdm9pZCByZW5kZXJpbmcgdGhlXG4gKiBlcnJvciBib3VuZGFyeSB3aGVuIHRoZXJlIGFyZSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMuIFRoaXMgZG9lc24ndCB0aHJvd1xuICogd2hlbiBhY2Nlc3NlZCB3aXRoIHVua25vd24gcm91dGUgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJuc1xuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVW50cmFja2VkUGF0aG5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIElmIHRoZXJlIGFyZSBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzIHdlIHdvdWxkIHR5cGljYWxseSB0aHJvd1xuICAvLyBhbiBlcnJvciwgYnV0IHRoaXMgaW50ZXJuYWwgbWV0aG9kIGFsbG93cyB1cyB0byByZXR1cm4gYSBudWxsIHZhbHVlIGluc3RlYWRcbiAgLy8gZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgcHJvcGFnYXRlIHRoZSBwYXRobmFtZSB0byB0aGUgc3RhdGljIHNoZWxsIChsaWtlXG4gIC8vIHRoZSBlcnJvciBib3VuZGFyeSkuXG4gIGlmIChoYXNGYWxsYmFja1JvdXRlUGFyYW1zKCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gVGhpcyBzaG91bGRuJ3QgY2F1c2UgYW55IGlzc3VlcyByZWxhdGVkIHRvIGNvbmRpdGlvbmFsIHJlbmRlcmluZyBiZWNhdXNlXG4gIC8vIHRoZSBlbnZpcm9ubWVudCB3aWxsIGJlIGNvbnNpc3RlbnQgZm9yIHRoZSByZW5kZXIuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICByZXR1cm4gdXNlQ29udGV4dChQYXRobmFtZUNvbnRleHQpXG59XG4iXSwibmFtZXMiOlsidXNlVW50cmFja2VkUGF0aG5hbWUiLCJoYXNGYWxsYmFja1JvdXRlUGFyYW1zIiwid2luZG93Iiwid29ya1VuaXRBc3luY1N0b3JhZ2UiLCJyZXF1aXJlIiwid29ya1VuaXRTdG9yZSIsImdldFN0b3JlIiwidHlwZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2VDb250ZXh0IiwiUGF0aG5hbWVDb250ZXh0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/navigation.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation.js ***! \****************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ReadonlyURLSearchParams: function() {\n return _navigationreactserver.ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _navigationreactserver.RedirectType;\n },\n ServerInsertedHTMLContext: function() {\n return _serverinsertedhtmlsharedruntime.ServerInsertedHTMLContext;\n },\n forbidden: function() {\n return _navigationreactserver.forbidden;\n },\n notFound: function() {\n return _navigationreactserver.notFound;\n },\n permanentRedirect: function() {\n return _navigationreactserver.permanentRedirect;\n },\n redirect: function() {\n return _navigationreactserver.redirect;\n },\n unauthorized: function() {\n return _navigationreactserver.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return _unrecognizedactionerror.unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _navigationreactserver.unstable_rethrow;\n },\n useParams: function() {\n return useParams;\n },\n usePathname: function() {\n return usePathname;\n },\n useRouter: function() {\n return useRouter;\n },\n useSearchParams: function() {\n return useSearchParams;\n },\n useSelectedLayoutSegment: function() {\n return useSelectedLayoutSegment;\n },\n useSelectedLayoutSegments: function() {\n return useSelectedLayoutSegments;\n },\n useServerInsertedHTML: function() {\n return _serverinsertedhtmlsharedruntime.useServerInsertedHTML;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\");\nconst _getsegmentvalue = __webpack_require__(/*! ./router-reducer/reducers/get-segment-value */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _navigationreactserver = __webpack_require__(/*! ./navigation.react-server */ \"(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js\");\nconst _serverinsertedhtmlsharedruntime = __webpack_require__(/*! ../../shared/lib/server-inserted-html.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ./unrecognized-action-error */ \"(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst useDynamicRouteParams = true ? (__webpack_require__(/*! ../../server/app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\").useDynamicRouteParams) : 0;\nfunction useSearchParams() {\n const searchParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.SearchParamsContext);\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = (0, _react.useMemo)(()=>{\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null;\n }\n return new _navigationreactserver.ReadonlyURLSearchParams(searchParams);\n }, [\n searchParams\n ]);\n if (true) {\n // AsyncLocalStorage should not be included in the client bundle.\n const { bailoutToClientRendering } = __webpack_require__(/*! ./bailout-to-client-rendering */ \"(ssr)/./node_modules/next/dist/client/components/bailout-to-client-rendering.js\");\n // TODO-APP: handle dynamic = 'force-static' here and on the client\n bailoutToClientRendering('useSearchParams()');\n }\n return readonlySearchParams;\n}\nfunction usePathname() {\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('usePathname()');\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n}\nfunction useRouter() {\n const router = (0, _react.useContext)(_approutercontextsharedruntime.AppRouterContext);\n if (router === null) {\n throw Object.defineProperty(new Error('invariant expected app router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E238\",\n enumerable: false,\n configurable: true\n });\n }\n return router;\n}\nfunction useParams() {\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useParams()');\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathParamsContext);\n}\n/** Get the canonical parameters from the current level to the leaf node. */ // Client components API\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first, segmentPath) {\n if (first === void 0) first = true;\n if (segmentPath === void 0) segmentPath = [];\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n var _parallelRoutes_children;\n node = (_parallelRoutes_children = parallelRoutes.children) != null ? _parallelRoutes_children : Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = (0, _getsegmentvalue.getSegmentValue)(segment);\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nfunction useSelectedLayoutSegments(parallelRouteKey) {\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegments()');\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null;\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey);\n}\nfunction useSelectedLayoutSegment(parallelRouteKey) {\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegment()');\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey);\n if (!selectedLayoutSegments || selectedLayoutSegments.length === 0) {\n return null;\n }\n const selectedLayoutSegment = parallelRouteKey === 'children' ? selectedLayoutSegments[0] : selectedLayoutSegments[selectedLayoutSegments.length - 1];\n // if the default slot is showing, we return null since it's not technically \"selected\" (it's a fallback)\n // and returning an internal value like `__DEFAULT__` would be confusing.\n return selectedLayoutSegment === _segment.DEFAULT_SEGMENT_KEY ? null : selectedLayoutSegment;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNFJFQSx1QkFBdUI7ZUFBdkJBLHVCQUFBQSx1QkFBdUI7O0lBRHZCQyxZQUFZO2VBQVpBLHVCQUFBQSxZQUFZOztJQXRMWkMseUJBQXlCO2VBQXpCQSxpQ0FBQUEseUJBQXlCOztJQWtMekJDLFNBQVM7ZUFBVEEsdUJBQUFBLFNBQVM7O0lBRFRDLFFBQVE7ZUFBUkEsdUJBQUFBLFFBQVE7O0lBSVJDLGlCQUFpQjtlQUFqQkEsdUJBQUFBLGlCQUFpQjs7SUFEakJDLFFBQVE7ZUFBUkEsdUJBQUFBLFFBQVE7O0lBRFJDLFlBQVk7ZUFBWkEsdUJBQUFBLFlBQVk7O0lBTkxDLGtDQUFrQztlQUFsQ0EseUJBQUFBLGtDQUFrQzs7SUFXekNDLGdCQUFnQjtlQUFoQkEsdUJBQUFBLGdCQUFnQjs7SUF0SUZDLFNBQVM7ZUFBVEE7O0lBNURBQyxXQUFXO2VBQVhBOztJQWlDQUMsU0FBUztlQUFUQTs7SUE5RUFDLGVBQWU7ZUFBZkE7O0lBNk1BQyx3QkFBd0I7ZUFBeEJBOztJQS9CQUMseUJBQXlCO2VBQXpCQTs7SUF0SGRDLHFCQUFxQjtlQUFyQkEsaUNBQUFBLHFCQUFxQjs7O21DQW5HYTsyREFLN0I7NkRBS0E7NkNBQ3lCO3FDQUNzQjttREFDZDs2REF1RmpDO3FEQTJLNEM7QUFoUW5ELE1BQU1DLHdCQUNKLEtBQTZCLEdBRXZCRSxxS0FDcUIsR0FDdkJDLENBQVNBO0FBdUJSLFNBQVNQO0lBQ2QsTUFBTVEsZUFBZUMsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0MsaUNBQUFBLG1CQUFtQjtJQUVuRCw4REFBOEQ7SUFDOUQsMEVBQTBFO0lBQzFFLGtCQUFrQjtJQUNsQixNQUFNQyx1QkFBdUJDLENBQUFBLEdBQUFBLE9BQUFBLE9BQUFBLEVBQVE7UUFDbkMsSUFBSSxDQUFDSixjQUFjO1lBQ2pCLHlFQUF5RTtZQUN6RSxhQUFhO1lBQ2IsT0FBTztRQUNUO1FBRUEsT0FBTyxJQUFJckIsdUJBQUFBLHVCQUF1QixDQUFDcUI7SUFDckMsR0FBRztRQUFDQTtLQUFhO0lBRWpCLElBQUksSUFBNkIsRUFBRTtRQUNqQyxpRUFBaUU7UUFDakUsTUFBTSxFQUFFSyx3QkFBd0IsRUFBRSxHQUNoQ1AsbUJBQU9BLENBQUMsc0hBQStCO1FBQ3pDLG1FQUFtRTtRQUNuRU8seUJBQXlCO0lBQzNCO0lBRUEsT0FBT0Y7QUFDVDtBQW9CTyxTQUFTYjtJQUNkTSx5QkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsc0JBQXdCO0lBRXhCLDhFQUE4RTtJQUM5RSwwRUFBMEU7SUFDMUUsT0FBT0ssQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0ssaUNBQUFBLGVBQWU7QUFDbkM7QUEyQk8sU0FBU2Y7SUFDZCxNQUFNZ0IsU0FBU04sQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV08sK0JBQUFBLGdCQUFnQjtJQUMxQyxJQUFJRCxXQUFXLE1BQU07UUFDbkIsTUFBTSxxQkFBd0QsQ0FBeEQsSUFBSUUsTUFBTSxnREFBVjttQkFBQTt3QkFBQTswQkFBQTtRQUF1RDtJQUMvRDtJQUVBLE9BQU9GO0FBQ1Q7QUFvQk8sU0FBU2xCO0lBQ2RPLHlCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxzQkFBd0I7SUFFeEIsT0FBT0ssQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV1MsaUNBQUFBLGlCQUFpQjtBQUNyQztBQUVBLDBFQUEwRSxHQUMxRSx3QkFBd0I7QUFDeEIsU0FBU0MsNkJBQ1BDLElBQXVCLEVBQ3ZCQyxnQkFBd0IsRUFDeEJDLEtBQVksRUFDWkMsV0FBMEI7SUFEMUJELElBQUFBLFVBQUFBLEtBQUFBLEdBQUFBLFFBQVE7SUFDUkMsSUFBQUEsZ0JBQUFBLEtBQUFBLEdBQUFBLGNBQXdCLEVBQUU7SUFFMUIsSUFBSUM7SUFDSixJQUFJRixPQUFPO1FBQ1Qsa0VBQWtFO1FBQ2xFRSxPQUFPSixJQUFJLENBQUMsRUFBRSxDQUFDQyxpQkFBaUI7SUFDbEMsT0FBTztRQUNMLG9HQUFvRztRQUNwRyxNQUFNSSxpQkFBaUJMLElBQUksQ0FBQyxFQUFFO1lBQ3ZCSztRQUFQRCxPQUFPQyxDQUFBQSwyQkFBQUEsZUFBZUMsUUFBQUEsS0FBUSxPQUF2QkQsMkJBQTJCRSxPQUFPQyxNQUFNLENBQUNILGVBQWUsQ0FBQyxFQUFFO0lBQ3BFO0lBRUEsSUFBSSxDQUFDRCxNQUFNLE9BQU9EO0lBQ2xCLE1BQU1NLFVBQVVMLElBQUksQ0FBQyxFQUFFO0lBRXZCLElBQUlNLGVBQWVDLENBQUFBLEdBQUFBLGlCQUFBQSxlQUFBQSxFQUFnQkY7SUFFbkMsSUFBSSxDQUFDQyxnQkFBZ0JBLGFBQWFFLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUc7UUFDOUQsT0FBT1Y7SUFDVDtJQUVBQSxZQUFZVyxJQUFJLENBQUNKO0lBRWpCLE9BQU9YLDZCQUNMSyxNQUNBSCxrQkFDQSxPQUNBRTtBQUVKO0FBNEJPLFNBQVNyQiwwQkFDZG1CLGdCQUFxQztJQUFyQ0EsSUFBQUEscUJBQUFBLEtBQUFBLEdBQUFBLG1CQUEyQjtJQUUzQmpCLHlCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxzQkFBd0I7SUFFeEIsTUFBTStCLFVBQVUxQixDQUFBQSxHQUFBQSxPQUFBQSxVQUFBQSxFQUFXMkIsK0JBQUFBLG1CQUFtQjtJQUM5Qyx3RkFBd0Y7SUFDeEYsSUFBSSxDQUFDRCxTQUFTLE9BQU87SUFFckIsT0FBT2hCLDZCQUE2QmdCLFFBQVFFLFVBQVUsRUFBRWhCO0FBQzFEO0FBcUJPLFNBQVNwQix5QkFDZG9CLGdCQUFxQztJQUFyQ0EsSUFBQUEscUJBQUFBLEtBQUFBLEdBQUFBLG1CQUEyQjtJQUUzQmpCLHlCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxzQkFBd0I7SUFFeEIsTUFBTWtDLHlCQUF5QnBDLDBCQUEwQm1CO0lBRXpELElBQUksQ0FBQ2lCLDBCQUEwQkEsdUJBQXVCQyxNQUFNLEtBQUssR0FBRztRQUNsRSxPQUFPO0lBQ1Q7SUFFQSxNQUFNQyx3QkFDSm5CLHFCQUFxQixhQUNqQmlCLHNCQUFzQixDQUFDLEVBQUUsR0FDekJBLHNCQUFzQixDQUFDQSx1QkFBdUJDLE1BQU0sR0FBRyxFQUFFO0lBRS9ELHlHQUF5RztJQUN6Ryx5RUFBeUU7SUFDekUsT0FBT0MsMEJBQTBCQyxTQUFBQSxtQkFBbUIsR0FDaEQsT0FDQUQ7QUFDTiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcbmF2aWdhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcblxuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQXBwUm91dGVyQ29udGV4dCxcbiAgTGF5b3V0Um91dGVyQ29udGV4dCxcbiAgdHlwZSBBcHBSb3V0ZXJJbnN0YW5jZSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQge1xuICBTZWFyY2hQYXJhbXNDb250ZXh0LFxuICBQYXRobmFtZUNvbnRleHQsXG4gIFBhdGhQYXJhbXNDb250ZXh0LFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2hvb2tzLWNsaWVudC1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZ2V0U2VnbWVudFZhbHVlIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9nZXQtc2VnbWVudC12YWx1ZSdcbmltcG9ydCB7IFBBR0VfU0VHTUVOVF9LRVksIERFRkFVTFRfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyB9IGZyb20gJy4vbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXInXG5cbmNvbnN0IHVzZUR5bmFtaWNSb3V0ZVBhcmFtcyA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnKVxuICAgICAgKS51c2VEeW5hbWljUm91dGVQYXJhbXNcbiAgICA6IHVuZGVmaW5lZFxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSAqcmVhZCogdGhlIGN1cnJlbnQgVVJMJ3Mgc2VhcmNoIHBhcmFtZXRlcnMuXG4gKlxuICogTGVhcm4gbW9yZSBhYm91dCBbYFVSTFNlYXJjaFBhcmFtc2Agb24gTUROXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvVVJMU2VhcmNoUGFyYW1zKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKVxuICogICBzZWFyY2hQYXJhbXMuZ2V0KCdmb28nKSAvLyByZXR1cm5zICdiYXInIHdoZW4gP2Zvbz1iYXJcbiAqICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VTZWFyY2hQYXJhbXNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlYXJjaFBhcmFtcygpOiBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZUNvbnRleHQoU2VhcmNoUGFyYW1zQ29udGV4dClcblxuICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGlzIGlzIGBudWxsYCwgdGhlIGNvbXBhdCB0eXBlcyBhZGRlZCBpblxuICAvLyBgbmV4dC1lbnYuZC50c2Agd2lsbCBhZGQgYSBuZXcgb3ZlcmxvYWQgdGhhdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSB0b1xuICAvLyBpbmNsdWRlIGBudWxsYC5cbiAgY29uc3QgcmVhZG9ubHlTZWFyY2hQYXJhbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaFBhcmFtcykge1xuICAgICAgLy8gV2hlbiB0aGUgcm91dGVyIGlzIG5vdCByZWFkeSBpbiBwYWdlcywgd2Ugd29uJ3QgaGF2ZSB0aGUgc2VhcmNoIHBhcmFtc1xuICAgICAgLy8gYXZhaWxhYmxlLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zKHNlYXJjaFBhcmFtcylcbiAgfSwgW3NlYXJjaFBhcmFtc10pIGFzIFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zXG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ugc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgY2xpZW50IGJ1bmRsZS5cbiAgICBjb25zdCB7IGJhaWxvdXRUb0NsaWVudFJlbmRlcmluZyB9ID1cbiAgICAgIHJlcXVpcmUoJy4vYmFpbG91dC10by1jbGllbnQtcmVuZGVyaW5nJykgYXMgdHlwZW9mIGltcG9ydCgnLi9iYWlsb3V0LXRvLWNsaWVudC1yZW5kZXJpbmcnKVxuICAgIC8vIFRPRE8tQVBQOiBoYW5kbGUgZHluYW1pYyA9ICdmb3JjZS1zdGF0aWMnIGhlcmUgYW5kIG9uIHRoZSBjbGllbnRcbiAgICBiYWlsb3V0VG9DbGllbnRSZW5kZXJpbmcoJ3VzZVNlYXJjaFBhcmFtcygpJylcbiAgfVxuXG4gIHJldHVybiByZWFkb25seVNlYXJjaFBhcmFtc1xufVxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBjdXJyZW50IFVSTCdzIHBhdGhuYW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVBhdGhuYW1lIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgY29uc3QgcGF0aG5hbWUgPSB1c2VQYXRobmFtZSgpIC8vIHJldHVybnMgXCIvZGFzaGJvYXJkXCIgb24gL2Rhc2hib2FyZD9mb289YmFyXG4gKiAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VQYXRobmFtZWBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2UtcGF0aG5hbWUpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhdGhuYW1lKCk6IHN0cmluZyB7XG4gIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcz8uKCd1c2VQYXRobmFtZSgpJylcblxuICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGlzIGlzIGBudWxsYCwgdGhlIGNvbXBhdCB0eXBlcyBhZGRlZCBpbiBgbmV4dC1lbnYuZC50c2BcbiAgLy8gd2lsbCBhZGQgYSBuZXcgb3ZlcmxvYWQgdGhhdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSB0byBpbmNsdWRlIGBudWxsYC5cbiAgcmV0dXJuIHVzZUNvbnRleHQoUGF0aG5hbWVDb250ZXh0KSBhcyBzdHJpbmdcbn1cblxuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQge1xuICBTZXJ2ZXJJbnNlcnRlZEhUTUxDb250ZXh0LFxuICB1c2VTZXJ2ZXJJbnNlcnRlZEhUTUwsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvc2VydmVyLWluc2VydGVkLWh0bWwuc2hhcmVkLXJ1bnRpbWUnXG5cbi8qKlxuICpcbiAqIFRoaXMgaG9vayBhbGxvd3MgeW91IHRvIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdlIHJvdXRlcyBpbnNpZGUgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBcInVzZSBjbGllbnRcIlxuICogaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAqICAvLyAuLi5cbiAqICByb3V0ZXIucHVzaCgnL2Rhc2hib2FyZCcpIC8vIE5hdmlnYXRlIHRvIC9kYXNoYm9hcmRcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVJvdXRlcmBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utcm91dGVyKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VSb3V0ZXIoKTogQXBwUm91dGVySW5zdGFuY2Uge1xuICBjb25zdCByb3V0ZXIgPSB1c2VDb250ZXh0KEFwcFJvdXRlckNvbnRleHQpXG4gIGlmIChyb3V0ZXIgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCBleHBlY3RlZCBhcHAgcm91dGVyIHRvIGJlIG1vdW50ZWQnKVxuICB9XG5cbiAgcmV0dXJuIHJvdXRlclxufVxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSByZWFkIGEgcm91dGUncyBkeW5hbWljIHBhcmFtcyBmaWxsZWQgaW4gYnkgdGhlIGN1cnJlbnQgVVJMLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogICAvLyBvbiAvZGFzaGJvYXJkL1t0ZWFtXSB3aGVyZSBwYXRobmFtZSBpcyAvZGFzaGJvYXJkL25leHRqc1xuICogICBjb25zdCB7IHRlYW0gfSA9IHVzZVBhcmFtcygpIC8vIHRlYW0gPT09IFwibmV4dGpzXCJcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVBhcmFtc2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2UtcGFyYW1zKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXJhbXM8VCBleHRlbmRzIFBhcmFtcyA9IFBhcmFtcz4oKTogVCB7XG4gIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcz8uKCd1c2VQYXJhbXMoKScpXG5cbiAgcmV0dXJuIHVzZUNvbnRleHQoUGF0aFBhcmFtc0NvbnRleHQpIGFzIFRcbn1cblxuLyoqIEdldCB0aGUgY2Fub25pY2FsIHBhcmFtZXRlcnMgZnJvbSB0aGUgY3VycmVudCBsZXZlbCB0byB0aGUgbGVhZiBub2RlLiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5mdW5jdGlvbiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nLFxuICBmaXJzdCA9IHRydWUsXG4gIHNlZ21lbnRQYXRoOiBzdHJpbmdbXSA9IFtdXG4pOiBzdHJpbmdbXSB7XG4gIGxldCBub2RlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBpZiAoZmlyc3QpIHtcbiAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIHBhcmFsbGVsIHJvdXRlIGtleSBvbiB0aGUgZmlyc3QgcGFyYWxsZWwgcm91dGVcbiAgICBub2RlID0gdHJlZVsxXVtwYXJhbGxlbFJvdXRlS2V5XVxuICB9IGVsc2Uge1xuICAgIC8vIEFmdGVyIGZpcnN0IHBhcmFsbGVsIHJvdXRlIHByZWZlciBjaGlsZHJlbiwgaWYgdGhlcmUncyBubyBjaGlsZHJlbiBwaWNrIHRoZSBmaXJzdCBwYXJhbGxlbCByb3V0ZS5cbiAgICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IHRyZWVbMV1cbiAgICBub2RlID0gcGFyYWxsZWxSb3V0ZXMuY2hpbGRyZW4gPz8gT2JqZWN0LnZhbHVlcyhwYXJhbGxlbFJvdXRlcylbMF1cbiAgfVxuXG4gIGlmICghbm9kZSkgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIGNvbnN0IHNlZ21lbnQgPSBub2RlWzBdXG5cbiAgbGV0IHNlZ21lbnRWYWx1ZSA9IGdldFNlZ21lbnRWYWx1ZShzZWdtZW50KVxuXG4gIGlmICghc2VnbWVudFZhbHVlIHx8IHNlZ21lbnRWYWx1ZS5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgcmV0dXJuIHNlZ21lbnRQYXRoXG4gIH1cblxuICBzZWdtZW50UGF0aC5wdXNoKHNlZ21lbnRWYWx1ZSlcblxuICByZXR1cm4gZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aChcbiAgICBub2RlLFxuICAgIHBhcmFsbGVsUm91dGVLZXksXG4gICAgZmFsc2UsXG4gICAgc2VnbWVudFBhdGhcbiAgKVxufVxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBhY3RpdmUgcm91dGUgc2VnbWVudHMgKipiZWxvdyoqIHRoZSBMYXlvdXQgaXQgaXMgY2FsbGVkIGZyb20uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAndXNlIGNsaWVudCdcbiAqXG4gKiBpbXBvcnQgeyB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4YW1wbGVDbGllbnRDb21wb25lbnQoKSB7XG4gKiAgIGNvbnN0IHNlZ21lbnRzID0gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cygpXG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDx1bD5cbiAqICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiAoXG4gKiAgICAgICAgIDxsaSBrZXk9e2luZGV4fT57c2VnbWVudH08L2xpPlxuICogICAgICAgKSl9XG4gKiAgICAgPC91bD5cbiAqICAgKVxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50c2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VsZWN0ZWQtbGF5b3V0LXNlZ21lbnRzKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzKFxuICBwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcgPSAnY2hpbGRyZW4nXG4pOiBzdHJpbmdbXSB7XG4gIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcz8uKCd1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzKCknKVxuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KExheW91dFJvdXRlckNvbnRleHQpXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgVGhpcyBvbmx5IGhhcHBlbnMgaW4gYHBhZ2VzYC4gVHlwZSBpcyBvdmVyd3JpdHRlbiBpbiBuYXZpZ2F0aW9uLmQudHNcbiAgaWYgKCFjb250ZXh0KSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKGNvbnRleHQucGFyZW50VHJlZSwgcGFyYWxsZWxSb3V0ZUtleSlcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgYWN0aXZlIHJvdXRlIHNlZ21lbnQgKipvbmUgbGV2ZWwgYmVsb3cqKiB0aGUgTGF5b3V0IGl0IGlzIGNhbGxlZCBmcm9tLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogJ3VzZSBjbGllbnQnXG4gKiBpbXBvcnQgeyB1c2VTZWxlY3RlZExheW91dFNlZ21lbnQgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhhbXBsZUNsaWVudENvbXBvbmVudCgpIHtcbiAqICAgY29uc3Qgc2VnbWVudCA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCgpXG4gKlxuICogICByZXR1cm4gPHA+QWN0aXZlIHNlZ21lbnQ6IHtzZWdtZW50fTwvcD5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VsZWN0ZWQtbGF5b3V0LXNlZ21lbnQpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudChcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gJ2NoaWxkcmVuJ1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIHVzZUR5bmFtaWNSb3V0ZVBhcmFtcz8uKCd1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoKScpXG5cbiAgY29uc3Qgc2VsZWN0ZWRMYXlvdXRTZWdtZW50cyA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMocGFyYWxsZWxSb3V0ZUtleSlcblxuICBpZiAoIXNlbGVjdGVkTGF5b3V0U2VnbWVudHMgfHwgc2VsZWN0ZWRMYXlvdXRTZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRMYXlvdXRTZWdtZW50ID1cbiAgICBwYXJhbGxlbFJvdXRlS2V5ID09PSAnY2hpbGRyZW4nXG4gICAgICA/IHNlbGVjdGVkTGF5b3V0U2VnbWVudHNbMF1cbiAgICAgIDogc2VsZWN0ZWRMYXlvdXRTZWdtZW50c1tzZWxlY3RlZExheW91dFNlZ21lbnRzLmxlbmd0aCAtIDFdXG5cbiAgLy8gaWYgdGhlIGRlZmF1bHQgc2xvdCBpcyBzaG93aW5nLCB3ZSByZXR1cm4gbnVsbCBzaW5jZSBpdCdzIG5vdCB0ZWNobmljYWxseSBcInNlbGVjdGVkXCIgKGl0J3MgYSBmYWxsYmFjaylcbiAgLy8gYW5kIHJldHVybmluZyBhbiBpbnRlcm5hbCB2YWx1ZSBsaWtlIGBfX0RFRkFVTFRfX2Agd291bGQgYmUgY29uZnVzaW5nLlxuICByZXR1cm4gc2VsZWN0ZWRMYXlvdXRTZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZXG4gICAgPyBudWxsXG4gICAgOiBzZWxlY3RlZExheW91dFNlZ21lbnRcbn1cblxuZXhwb3J0IHsgdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciB9IGZyb20gJy4vdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvcidcblxuLy8gU2hhcmVkIGNvbXBvbmVudHMgQVBJc1xuZXhwb3J0IHtcbiAgbm90Rm91bmQsXG4gIGZvcmJpZGRlbixcbiAgdW5hdXRob3JpemVkLFxuICByZWRpcmVjdCxcbiAgcGVybWFuZW50UmVkaXJlY3QsXG4gIFJlZGlyZWN0VHlwZSxcbiAgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMsXG4gIHVuc3RhYmxlX3JldGhyb3csXG59IGZyb20gJy4vbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXInXG4iXSwibmFtZXMiOlsiUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMiLCJSZWRpcmVjdFR5cGUiLCJTZXJ2ZXJJbnNlcnRlZEhUTUxDb250ZXh0IiwiZm9yYmlkZGVuIiwibm90Rm91bmQiLCJwZXJtYW5lbnRSZWRpcmVjdCIsInJlZGlyZWN0IiwidW5hdXRob3JpemVkIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX3JldGhyb3ciLCJ1c2VQYXJhbXMiLCJ1c2VQYXRobmFtZSIsInVzZVJvdXRlciIsInVzZVNlYXJjaFBhcmFtcyIsInVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCIsInVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMiLCJ1c2VTZXJ2ZXJJbnNlcnRlZEhUTUwiLCJ1c2VEeW5hbWljUm91dGVQYXJhbXMiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwic2VhcmNoUGFyYW1zIiwidXNlQ29udGV4dCIsIlNlYXJjaFBhcmFtc0NvbnRleHQiLCJyZWFkb25seVNlYXJjaFBhcmFtcyIsInVzZU1lbW8iLCJiYWlsb3V0VG9DbGllbnRSZW5kZXJpbmciLCJQYXRobmFtZUNvbnRleHQiLCJyb3V0ZXIiLCJBcHBSb3V0ZXJDb250ZXh0IiwiRXJyb3IiLCJQYXRoUGFyYW1zQ29udGV4dCIsImdldFNlbGVjdGVkTGF5b3V0U2VnbWVudFBhdGgiLCJ0cmVlIiwicGFyYWxsZWxSb3V0ZUtleSIsImZpcnN0Iiwic2VnbWVudFBhdGgiLCJub2RlIiwicGFyYWxsZWxSb3V0ZXMiLCJjaGlsZHJlbiIsIk9iamVjdCIsInZhbHVlcyIsInNlZ21lbnQiLCJzZWdtZW50VmFsdWUiLCJnZXRTZWdtZW50VmFsdWUiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSIsInB1c2giLCJjb250ZXh0IiwiTGF5b3V0Um91dGVyQ29udGV4dCIsInBhcmVudFRyZWUiLCJzZWxlY3RlZExheW91dFNlZ21lbnRzIiwibGVuZ3RoIiwic2VsZWN0ZWRMYXlvdXRTZWdtZW50IiwiREVGQVVMVF9TRUdNRU5UX0tFWSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation.react-server.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/** @internal */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ReadonlyURLSearchParams: function() {\n return ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _redirecterror.RedirectType;\n },\n forbidden: function() {\n return _forbidden.forbidden;\n },\n notFound: function() {\n return _notfound.notFound;\n },\n permanentRedirect: function() {\n return _redirect.permanentRedirect;\n },\n redirect: function() {\n return _redirect.redirect;\n },\n unauthorized: function() {\n return _unauthorized.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _unstablerethrow.unstable_rethrow;\n }\n});\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(ssr)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst _notfound = __webpack_require__(/*! ./not-found */ \"(ssr)/./node_modules/next/dist/client/components/not-found.js\");\nconst _forbidden = __webpack_require__(/*! ./forbidden */ \"(ssr)/./node_modules/next/dist/client/components/forbidden.js\");\nconst _unauthorized = __webpack_require__(/*! ./unauthorized */ \"(ssr)/./node_modules/next/dist/client/components/unauthorized.js\");\nconst _unstablerethrow = __webpack_require__(/*! ./unstable-rethrow */ \"(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js\");\nclass ReadonlyURLSearchParamsError extends Error {\n constructor(){\n super('Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams');\n }\n}\nclass ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ append() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ delete() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ set() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ sort() {\n throw new ReadonlyURLSearchParamsError();\n }\n}\nfunction unstable_isUnrecognizedActionError() {\n throw Object.defineProperty(new Error('`unstable_isUnrecognizedActionError` can only be used on the client.'), \"__NEXT_ERROR_CODE\", {\n value: \"E776\",\n enumerable: false,\n configurable: true\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=navigation.react-server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24ucmVhY3Qtc2VydmVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWM7Ozs7Ozs7Ozs7OztJQXdDTEEsdUJBQXVCO2VBQXZCQTs7SUFMQUMsWUFBWTtlQUFaQSxlQUFBQSxZQUFZOztJQUVaQyxTQUFTO2VBQVRBLFdBQUFBLFNBQVM7O0lBRFRDLFFBQVE7ZUFBUkEsVUFBQUEsUUFBUTs7SUFGRUMsaUJBQWlCO2VBQWpCQSxVQUFBQSxpQkFBaUI7O0lBQTNCQyxRQUFRO2VBQVJBLFVBQUFBLFFBQVE7O0lBSVJDLFlBQVk7ZUFBWkEsY0FBQUEsWUFBWTs7SUFWTEMsa0NBQWtDO2VBQWxDQTs7SUFXUEMsZ0JBQWdCO2VBQWhCQSxpQkFBQUEsZ0JBQWdCOzs7c0NBTG1COzJDQUNmO3NDQUNKO3VDQUNDOzBDQUNHOzZDQUNJO0FBdENqQyxNQUFNQyxxQ0FBcUNDO0lBQ3pDQyxhQUFjO1FBQ1osS0FBSyxDQUNIO0lBRUo7QUFDRjtBQUVBLE1BQU1YLGdDQUFnQ1k7SUFDcEMsd0tBQXdLLEdBQ3hLQyxTQUFTO1FBQ1AsTUFBTSxJQUFJSjtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLSyxTQUFTO1FBQ1AsTUFBTSxJQUFJTDtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLTSxNQUFNO1FBQ0osTUFBTSxJQUFJTjtJQUNaO0lBQ0Esd0tBQXdLLEdBQ3hLTyxPQUFPO1FBQ0wsTUFBTSxJQUFJUDtJQUNaO0FBQ0Y7QUFFTyxTQUFTRjtJQUNkLE1BQU0scUJBRUwsQ0FGSyxJQUFJRyxNQUNSLHlFQURJO2VBQUE7b0JBQUE7c0JBQUE7SUFFTjtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxuYXZpZ2F0aW9uLnJlYWN0LXNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGludGVybmFsICovXG5jbGFzcyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgICdNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zJ1xuICAgIClcbiAgfVxufVxuXG5jbGFzcyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyBleHRlbmRzIFVSTFNlYXJjaFBhcmFtcyB7XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIGFwcGVuZCgpIHtcbiAgICB0aHJvdyBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvcigpXG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkIE1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMgKi9cbiAgZGVsZXRlKCkge1xuICAgIHRocm93IG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yKClcbiAgfVxuICAvKiogQGRlcHJlY2F0ZWQgTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcyAqL1xuICBzZXQoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIHNvcnQoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKCk6IGJvb2xlYW4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ2B1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yYCBjYW4gb25seSBiZSB1c2VkIG9uIHRoZSBjbGllbnQuJ1xuICApXG59XG5cbmV4cG9ydCB7IHJlZGlyZWN0LCBwZXJtYW5lbnRSZWRpcmVjdCB9IGZyb20gJy4vcmVkaXJlY3QnXG5leHBvcnQgeyBSZWRpcmVjdFR5cGUgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuZXhwb3J0IHsgbm90Rm91bmQgfSBmcm9tICcuL25vdC1mb3VuZCdcbmV4cG9ydCB7IGZvcmJpZGRlbiB9IGZyb20gJy4vZm9yYmlkZGVuJ1xuZXhwb3J0IHsgdW5hdXRob3JpemVkIH0gZnJvbSAnLi91bmF1dGhvcml6ZWQnXG5leHBvcnQgeyB1bnN0YWJsZV9yZXRocm93IH0gZnJvbSAnLi91bnN0YWJsZS1yZXRocm93J1xuZXhwb3J0IHsgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMgfVxuIl0sIm5hbWVzIjpbIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIiwiUmVkaXJlY3RUeXBlIiwiZm9yYmlkZGVuIiwibm90Rm91bmQiLCJwZXJtYW5lbnRSZWRpcmVjdCIsInJlZGlyZWN0IiwidW5hdXRob3JpemVkIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX3JldGhyb3ciLCJSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImRlbGV0ZSIsInNldCIsInNvcnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/navigation.react-server.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/not-found.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/components/not-found.js ***! \***************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"notFound\", ({\n enumerable: true,\n get: function() {\n return notFound;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";404\";\nfunction notFound() {\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=not-found.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC5qcyIsIm1hcHBpbmdzIjoiOzs7OzRDQXNCZ0JBOzs7ZUFBQUE7OztnREFuQlQ7QUFFUDs7Ozs7Ozs7Ozs7OztDQWFDLEdBRUQsTUFBTUMsU0FBVSxLQUFFQyxvQkFBQUEsOEJBQThCLEdBQUM7QUFFMUMsU0FBU0Y7SUFDZCw0Q0FBNEM7SUFDNUMsTUFBTUcsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUMsTUFBTUgsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCRSxNQUFrQ0UsTUFBTSxHQUFHSjtJQUU3QyxNQUFNRTtBQUNSIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxub3QtZm91bmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZW5kZXIgdGhlIFtub3QtZm91bmQuanMgZmlsZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZmlsZS1jb252ZW50aW9ucy9ub3QtZm91bmQpXG4gKiB3aXRoaW4gYSByb3V0ZSBzZWdtZW50IGFzIHdlbGwgYXMgaW5qZWN0IGEgdGFnLlxuICpcbiAqIGBub3RGb3VuZCgpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogLSBJbiBhIFNlcnZlciBDb21wb25lbnQsIHRoaXMgd2lsbCBpbnNlcnQgYSBgPG1ldGEgbmFtZT1cInJvYm90c1wiIGNvbnRlbnQ9XCJub2luZGV4XCIgLz5gIG1ldGEgdGFnIGFuZCBzZXQgdGhlIHN0YXR1cyBjb2RlIHRvIDQwNC5cbiAqIC0gSW4gYSBSb3V0ZSBIYW5kbGVyIG9yIFNlcnZlciBBY3Rpb24sIGl0IHdpbGwgc2VydmUgYSA0MDQgdG8gdGhlIGNhbGxlci5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGBub3RGb3VuZGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9ub3QtZm91bmQpXG4gKi9cblxuY29uc3QgRElHRVNUID0gYCR7SFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTs0MDRgXG5cbmV4cG9ydCBmdW5jdGlvbiBub3RGb3VuZCgpOiBuZXZlciB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG5cbiAgdGhyb3cgZXJyb3Jcbn1cbiJdLCJuYW1lcyI6WyJub3RGb3VuZCIsIkRJR0VTVCIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsImVycm9yIiwiRXJyb3IiLCJkaWdlc3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/not-found.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-boundary.js ***! \***********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RedirectBoundary: function() {\n return RedirectBoundary;\n },\n RedirectErrorBoundary: function() {\n return RedirectErrorBoundary;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _navigation = __webpack_require__(/*! ./navigation */ \"(ssr)/./node_modules/next/dist/client/components/navigation.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(ssr)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction HandleRedirect(param) {\n let { redirect, reset, redirectType } = param;\n const router = (0, _navigation.useRouter)();\n (0, _react.useEffect)(()=>{\n _react.default.startTransition(()=>{\n if (redirectType === _redirecterror.RedirectType.push) {\n router.push(redirect, {});\n } else {\n router.replace(redirect, {});\n }\n reset();\n });\n }, [\n redirect,\n redirectType,\n reset,\n router\n ]);\n return null;\n}\nclass RedirectErrorBoundary extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _redirecterror.isRedirectError)(error)) {\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n return {\n redirect: url,\n redirectType\n };\n }\n // Re-throw if error is not for redirect\n throw error;\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n const { redirect, redirectType } = this.state;\n if (redirect !== null && redirectType !== null) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HandleRedirect, {\n redirect: redirect,\n redirectType: redirectType,\n reset: ()=>this.setState({\n redirect: null\n })\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props);\n this.state = {\n redirect: null,\n redirectType: null\n };\n }\n}\nfunction RedirectBoundary(param) {\n let { children } = param;\n const router = (0, _navigation.useRouter)();\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(RedirectErrorBoundary, {\n router: router,\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-boundary.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWJvdW5kYXJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXlFZ0JBLGdCQUFnQjtlQUFoQkE7O0lBcENIQyxxQkFBcUI7ZUFBckJBOzs7Ozs2RUFwQ29CO3dDQUVQO3NDQUN3QzsyQ0FDcEI7QUFPOUMsU0FBU0MsZUFBZSxLQVF2QjtJQVJ1QixNQUN0QkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLFlBQVksRUFLYixHQVJ1QjtJQVN0QixNQUFNQyxTQUFTQyxDQUFBQSxHQUFBQSxZQUFBQSxTQUFBQTtJQUVmQyxDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1JDLE9BQUFBLE9BQUssQ0FBQ0MsZUFBZSxDQUFDO1lBQ3BCLElBQUlMLGlCQUFpQk0sZUFBQUEsWUFBWSxDQUFDQyxJQUFJLEVBQUU7Z0JBQ3RDTixPQUFPTSxJQUFJLENBQUNULFVBQVUsQ0FBQztZQUN6QixPQUFPO2dCQUNMRyxPQUFPTyxPQUFPLENBQUNWLFVBQVUsQ0FBQztZQUM1QjtZQUNBQztRQUNGO0lBQ0YsR0FBRztRQUFDRDtRQUFVRTtRQUFjRDtRQUFPRTtLQUFPO0lBRTFDLE9BQU87QUFDVDtBQUVPLE1BQU1MLDhCQUE4QlEsT0FBQUEsT0FBSyxDQUFDSyxTQUFTO0lBU3hELE9BQU9DLHlCQUF5QkMsS0FBVSxFQUFFO1FBQzFDLElBQUlDLENBQUFBLEdBQUFBLGVBQUFBLGVBQUFBLEVBQWdCRCxRQUFRO1lBQzFCLE1BQU1FLE1BQU1DLENBQUFBLEdBQUFBLFVBQUFBLHVCQUFBQSxFQUF3Qkg7WUFDcEMsTUFBTVgsZUFBZWUsQ0FBQUEsR0FBQUEsVUFBQUEsd0JBQUFBLEVBQXlCSjtZQUM5QyxPQUFPO2dCQUFFYixVQUFVZTtnQkFBS2I7WUFBYTtRQUN2QztRQUNBLHdDQUF3QztRQUN4QyxNQUFNVztJQUNSO0lBRUEseUlBQXlJO0lBQ3pJSyxTQUEwQjtRQUN4QixNQUFNLEVBQUVsQixRQUFRLEVBQUVFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQ2lCLEtBQUs7UUFDN0MsSUFBSW5CLGFBQWEsUUFBUUUsaUJBQWlCLE1BQU07WUFDOUMscUJBQ0UscUJBQUNILGdCQUFBQTtnQkFDQ0MsVUFBVUE7Z0JBQ1ZFLGNBQWNBO2dCQUNkRCxPQUFPLElBQU0sSUFBSSxDQUFDbUIsUUFBUSxDQUFDO3dCQUFFcEIsVUFBVTtvQkFBSzs7UUFHbEQ7UUFFQSxPQUFPLElBQUksQ0FBQ3FCLEtBQUssQ0FBQ0MsUUFBUTtJQUM1QjtJQTdCQUMsWUFBWUYsS0FBNEIsQ0FBRTtRQUN4QyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDRixLQUFLLEdBQUc7WUFBRW5CLFVBQVU7WUFBTUUsY0FBYztRQUFLO0lBQ3BEO0FBMkJGO0FBRU8sU0FBU0wsaUJBQWlCLEtBQTJDO0lBQTNDLE1BQUV5QixRQUFRLEVBQWlDLEdBQTNDO0lBQy9CLE1BQU1uQixTQUFTQyxDQUFBQSxHQUFBQSxZQUFBQSxTQUFBQTtJQUNmLHFCQUNFLHFCQUFDTix1QkFBQUE7UUFBc0JLLFFBQVFBO2tCQUFTbUI7O0FBRTVDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxyZWRpcmVjdC1ib3VuZGFyeS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlckluc3RhbmNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICcuL25hdmlnYXRpb24nXG5pbXBvcnQgeyBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IsIGdldFVSTEZyb21SZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdCdcbmltcG9ydCB7IFJlZGlyZWN0VHlwZSwgaXNSZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcblxuaW50ZXJmYWNlIFJlZGlyZWN0Qm91bmRhcnlQcm9wcyB7XG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2VcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5mdW5jdGlvbiBIYW5kbGVSZWRpcmVjdCh7XG4gIHJlZGlyZWN0LFxuICByZXNldCxcbiAgcmVkaXJlY3RUeXBlLFxufToge1xuICByZWRpcmVjdDogc3RyaW5nXG4gIHJlZGlyZWN0VHlwZTogUmVkaXJlY3RUeXBlXG4gIHJlc2V0OiAoKSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBSZWFjdC5zdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgaWYgKHJlZGlyZWN0VHlwZSA9PT0gUmVkaXJlY3RUeXBlLnB1c2gpIHtcbiAgICAgICAgcm91dGVyLnB1c2gocmVkaXJlY3QsIHt9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm91dGVyLnJlcGxhY2UocmVkaXJlY3QsIHt9KVxuICAgICAgfVxuICAgICAgcmVzZXQoKVxuICAgIH0pXG4gIH0sIFtyZWRpcmVjdCwgcmVkaXJlY3RUeXBlLCByZXNldCwgcm91dGVyXSlcblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBSZWRpcmVjdEJvdW5kYXJ5UHJvcHMsXG4gIHsgcmVkaXJlY3Q6IHN0cmluZyB8IG51bGw7IHJlZGlyZWN0VHlwZTogUmVkaXJlY3RUeXBlIHwgbnVsbCB9XG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IFJlZGlyZWN0Qm91bmRhcnlQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIHRoaXMuc3RhdGUgPSB7IHJlZGlyZWN0OiBudWxsLCByZWRpcmVjdFR5cGU6IG51bGwgfVxuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcjogYW55KSB7XG4gICAgaWYgKGlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICAgIGNvbnN0IHVybCA9IGdldFVSTEZyb21SZWRpcmVjdEVycm9yKGVycm9yKVxuICAgICAgY29uc3QgcmVkaXJlY3RUeXBlID0gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yKVxuICAgICAgcmV0dXJuIHsgcmVkaXJlY3Q6IHVybCwgcmVkaXJlY3RUeXBlIH1cbiAgICB9XG4gICAgLy8gUmUtdGhyb3cgaWYgZXJyb3IgaXMgbm90IGZvciByZWRpcmVjdFxuICAgIHRocm93IGVycm9yXG4gIH1cblxuICAvLyBFeHBsaWNpdCB0eXBlIGlzIG5lZWRlZCB0byBhdm9pZCB0aGUgZ2VuZXJhdGVkIGAuZC50c2AgaGF2aW5nIGEgd2lkZSByZXR1cm4gdHlwZSB0aGF0IGNvdWxkIGJlIHNwZWNpZmljIHRvIHRoZSBgQHR5cGVzL3JlYWN0YCB2ZXJzaW9uLlxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICBjb25zdCB7IHJlZGlyZWN0LCByZWRpcmVjdFR5cGUgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAocmVkaXJlY3QgIT09IG51bGwgJiYgcmVkaXJlY3RUeXBlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SGFuZGxlUmVkaXJlY3RcbiAgICAgICAgICByZWRpcmVjdD17cmVkaXJlY3R9XG4gICAgICAgICAgcmVkaXJlY3RUeXBlPXtyZWRpcmVjdFR5cGV9XG4gICAgICAgICAgcmVzZXQ9eygpID0+IHRoaXMuc2V0U3RhdGUoeyByZWRpcmVjdDogbnVsbCB9KX1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlblxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWRpcmVjdEJvdW5kYXJ5KHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAgcmV0dXJuIChcbiAgICA8UmVkaXJlY3RFcnJvckJvdW5kYXJ5IHJvdXRlcj17cm91dGVyfT57Y2hpbGRyZW59PC9SZWRpcmVjdEVycm9yQm91bmRhcnk+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWRpcmVjdEJvdW5kYXJ5IiwiUmVkaXJlY3RFcnJvckJvdW5kYXJ5IiwiSGFuZGxlUmVkaXJlY3QiLCJyZWRpcmVjdCIsInJlc2V0IiwicmVkaXJlY3RUeXBlIiwicm91dGVyIiwidXNlUm91dGVyIiwidXNlRWZmZWN0IiwiUmVhY3QiLCJzdGFydFRyYW5zaXRpb24iLCJSZWRpcmVjdFR5cGUiLCJwdXNoIiwicmVwbGFjZSIsIkNvbXBvbmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImVycm9yIiwiaXNSZWRpcmVjdEVycm9yIiwidXJsIiwiZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IiLCJnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IiLCJyZW5kZXIiLCJzdGF0ZSIsInNldFN0YXRlIiwicHJvcHMiLCJjaGlsZHJlbiIsImNvbnN0cnVjdG9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-boundary.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/redirect-error.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-error.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n RedirectType: function() {\n return RedirectType;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nvar RedirectType = /*#__PURE__*/ function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n return RedirectType;\n}({});\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSxtQkFBbUI7ZUFBbkJBOztJQUVEQyxZQUFZO2VBQVpBOztJQWdCSUMsZUFBZTtlQUFmQTs7O2dEQXBCbUI7QUFFNUIsTUFBTUYsc0JBQXNCO0FBRTVCLElBQUtDLGVBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLFlBQUFBOzs7V0FBQUE7O0FBZ0JMLFNBQVNDLGdCQUFnQkMsS0FBYztJQUM1QyxJQUNFLE9BQU9BLFVBQVUsWUFDakJBLFVBQVUsUUFDVixDQUFFLGFBQVlBLEtBQUFBLENBQUksSUFDbEIsT0FBT0EsTUFBTUMsTUFBTSxLQUFLLFVBQ3hCO1FBQ0EsT0FBTztJQUNUO0lBRUEsTUFBTUEsU0FBU0QsTUFBTUMsTUFBTSxDQUFDQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxDQUFDQyxXQUFXQyxLQUFLLEdBQUdIO0lBQzFCLE1BQU1JLGNBQWNKLE9BQU9LLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDO0lBQzdDLE1BQU1DLFNBQVNQLE9BQU9RLEVBQUUsQ0FBQyxDQUFDO0lBRTFCLE1BQU1DLGFBQWFDLE9BQU9IO0lBRTFCLE9BQ0VMLGNBQWNOLHVCQUNiTyxDQUFBQSxTQUFTLGFBQWFBLFNBQVMsT0FBSyxJQUNyQyxPQUFPQyxnQkFBZ0IsWUFDdkIsQ0FBQ08sTUFBTUYsZUFDUEEsY0FBY0csb0JBQUFBLGtCQUFrQjtBQUVwQyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccmVkaXJlY3QtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSAnLi9yZWRpcmVjdC1zdGF0dXMtY29kZSdcblxuZXhwb3J0IGNvbnN0IFJFRElSRUNUX0VSUk9SX0NPREUgPSAnTkVYVF9SRURJUkVDVCdcblxuZXhwb3J0IGVudW0gUmVkaXJlY3RUeXBlIHtcbiAgcHVzaCA9ICdwdXNoJyxcbiAgcmVwbGFjZSA9ICdyZXBsYWNlJyxcbn1cblxuZXhwb3J0IHR5cGUgUmVkaXJlY3RFcnJvciA9IEVycm9yICYge1xuICBkaWdlc3Q6IGAke3R5cGVvZiBSRURJUkVDVF9FUlJPUl9DT0RFfTske1JlZGlyZWN0VHlwZX07JHtzdHJpbmd9OyR7UmVkaXJlY3RTdGF0dXNDb2RlfTtgXG59XG5cbi8qKlxuICogQ2hlY2tzIGFuIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCdzIGFuIGVycm9yIGdlbmVyYXRlZCBieSB0aGVcbiAqIGByZWRpcmVjdCh1cmwpYCBoZWxwZXIuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSByZWZlcmVuY2UgYSByZWRpcmVjdCBlcnJvclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSByZWRpcmVjdCBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWRpcmVjdEVycm9yKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVkaXJlY3RFcnJvciB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8XG4gICAgZXJyb3IgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycm9yKSB8fFxuICAgIHR5cGVvZiBlcnJvci5kaWdlc3QgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgZGlnZXN0ID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylcbiAgY29uc3QgW2Vycm9yQ29kZSwgdHlwZV0gPSBkaWdlc3RcbiAgY29uc3QgZGVzdGluYXRpb24gPSBkaWdlc3Quc2xpY2UoMiwgLTIpLmpvaW4oJzsnKVxuICBjb25zdCBzdGF0dXMgPSBkaWdlc3QuYXQoLTIpXG5cbiAgY29uc3Qgc3RhdHVzQ29kZSA9IE51bWJlcihzdGF0dXMpXG5cbiAgcmV0dXJuIChcbiAgICBlcnJvckNvZGUgPT09IFJFRElSRUNUX0VSUk9SX0NPREUgJiZcbiAgICAodHlwZSA9PT0gJ3JlcGxhY2UnIHx8IHR5cGUgPT09ICdwdXNoJykgJiZcbiAgICB0eXBlb2YgZGVzdGluYXRpb24gPT09ICdzdHJpbmcnICYmXG4gICAgIWlzTmFOKHN0YXR1c0NvZGUpICYmXG4gICAgc3RhdHVzQ29kZSBpbiBSZWRpcmVjdFN0YXR1c0NvZGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJFRElSRUNUX0VSUk9SX0NPREUiLCJSZWRpcmVjdFR5cGUiLCJpc1JlZGlyZWN0RXJyb3IiLCJlcnJvciIsImRpZ2VzdCIsInNwbGl0IiwiZXJyb3JDb2RlIiwidHlwZSIsImRlc3RpbmF0aW9uIiwic2xpY2UiLCJqb2luIiwic3RhdHVzIiwiYXQiLCJzdGF0dXNDb2RlIiwiTnVtYmVyIiwiaXNOYU4iLCJSZWRpcmVjdFN0YXR1c0NvZGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-status-code.js ***! \**************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect-status-code.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlLmpzIiwibWFwcGluZ3MiOiI7Ozs7c0RBQVlBOzs7ZUFBQUE7OztBQUFMLElBQUtBLHFCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxrQkFBQUE7Ozs7V0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHJlZGlyZWN0LXN0YXR1cy1jb2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlZGlyZWN0U3RhdHVzQ29kZSB7XG4gIFNlZU90aGVyID0gMzAzLFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG59XG4iXSwibmFtZXMiOlsiUmVkaXJlY3RTdGF0dXNDb2RlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/redirect.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect.js ***! \**************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getRedirectError: function() {\n return getRedirectError;\n },\n getRedirectStatusCodeFromError: function() {\n return getRedirectStatusCodeFromError;\n },\n getRedirectTypeFromError: function() {\n return getRedirectTypeFromError;\n },\n getURLFromRedirectError: function() {\n return getURLFromRedirectError;\n },\n permanentRedirect: function() {\n return permanentRedirect;\n },\n redirect: function() {\n return redirect;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(ssr)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(ssr)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst actionAsyncStorage = true ? (__webpack_require__(/*! ../../server/app-render/action-async-storage.external */ \"../app-render/action-async-storage.external\").actionAsyncStorage) : 0;\nfunction getRedirectError(url, type, statusCode) {\n if (statusCode === void 0) statusCode = _redirectstatuscode.RedirectStatusCode.TemporaryRedirect;\n const error = Object.defineProperty(new Error(_redirecterror.REDIRECT_ERROR_CODE), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = _redirecterror.REDIRECT_ERROR_CODE + \";\" + type + \";\" + url + \";\" + statusCode + \";\";\n return error;\n}\nfunction redirect(/** The URL to redirect to */ url, type) {\n var _actionAsyncStorage_getStore;\n type != null ? type : type = (actionAsyncStorage == null ? void 0 : (_actionAsyncStorage_getStore = actionAsyncStorage.getStore()) == null ? void 0 : _actionAsyncStorage_getStore.isAction) ? _redirecterror.RedirectType.push : _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.TemporaryRedirect);\n}\nfunction permanentRedirect(/** The URL to redirect to */ url, type) {\n if (type === void 0) type = _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.PermanentRedirect);\n}\nfunction getURLFromRedirectError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) return null;\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';');\n}\nfunction getRedirectTypeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return error.digest.split(';', 2)[1];\n}\nfunction getRedirectStatusCodeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return Number(error.digest.split(';').at(-2));\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=redirect.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWVnQkEsZ0JBQWdCO2VBQWhCQTs7SUE2RUFDLDhCQUE4QjtlQUE5QkE7O0lBUkFDLHdCQUF3QjtlQUF4QkE7O0lBUkFDLHVCQUF1QjtlQUF2QkE7O0lBaEJBQyxpQkFBaUI7ZUFBakJBOztJQXZCQUMsUUFBUTtlQUFSQTs7O2dEQXJDbUI7MkNBTTVCO0FBRVAsTUFBTUMscUJBQ0osS0FBNkIsR0FFdkJFLG9KQUNrQixHQUNwQkMsQ0FBU0E7QUFFUixTQUFTVCxpQkFDZFUsR0FBVyxFQUNYQyxJQUFrQixFQUNsQkMsVUFBcUU7SUFBckVBLElBQUFBLGVBQUFBLEtBQUFBLEdBQUFBLGFBQWlDQyxvQkFBQUEsa0JBQWtCLENBQUNDLGlCQUFpQjtJQUVyRSxNQUFNQyxRQUFRLHFCQUE4QixDQUE5QixJQUFJQyxNQUFNQyxlQUFBQSxtQkFBbUIsR0FBN0I7ZUFBQTtvQkFBQTtzQkFBQTtJQUE2QjtJQUMzQ0YsTUFBTUcsTUFBTSxHQUFNRCxlQUFBQSxtQkFBbUIsR0FBQyxNQUFHTixPQUFLLE1BQUdELE1BQUksTUFBR0UsYUFBVztJQUNuRSxPQUFPRztBQUNUO0FBY08sU0FBU1YsU0FDZCwyQkFBMkIsR0FDM0JLLEdBQVcsRUFDWEMsSUFBbUI7UUFFVkw7SUFBVEssUUFBQUEsT0FBQUEsT0FBQUEsT0FBU0wsQ0FBQUEsc0JBQUFBLE9BQUFBLEtBQUFBLElBQUFBLENBQUFBLCtCQUFBQSxtQkFBb0JhLFFBQVEsdUJBQTVCYiw2QkFBZ0NjLFFBQUFBLElBQ3JDQyxlQUFBQSxZQUFZLENBQUNDLElBQUksR0FDakJELGVBQUFBLFlBQVksQ0FBQ0UsT0FBTztJQUV4QixNQUFNdkIsaUJBQWlCVSxLQUFLQyxNQUFNRSxvQkFBQUEsa0JBQWtCLENBQUNDLGlCQUFpQjtBQUN4RTtBQWFPLFNBQVNWLGtCQUNkLDJCQUEyQixHQUMzQk0sR0FBVyxFQUNYQyxJQUF5QztJQUF6Q0EsSUFBQUEsU0FBQUEsS0FBQUEsR0FBQUEsT0FBcUJVLGVBQUFBLFlBQVksQ0FBQ0UsT0FBTztJQUV6QyxNQUFNdkIsaUJBQWlCVSxLQUFLQyxNQUFNRSxvQkFBQUEsa0JBQWtCLENBQUNXLGlCQUFpQjtBQUN4RTtBQVVPLFNBQVNyQix3QkFBd0JZLEtBQWM7SUFDcEQsSUFBSSxDQUFDVSxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQlYsUUFBUSxPQUFPO0lBRXBDLHdFQUF3RTtJQUN4RSxrQkFBa0I7SUFDbEIsT0FBT0EsTUFBTUcsTUFBTSxDQUFDUSxLQUFLLENBQUMsS0FBS0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxJQUFJLENBQUM7QUFDbkQ7QUFFTyxTQUFTMUIseUJBQXlCYSxLQUFvQjtJQUMzRCxJQUFJLENBQUNVLENBQUFBLEdBQUFBLGVBQUFBLGVBQUFBLEVBQWdCVixRQUFRO1FBQzNCLE1BQU0scUJBQWlDLENBQWpDLElBQUlDLE1BQU0seUJBQVY7bUJBQUE7d0JBQUE7MEJBQUE7UUFBZ0M7SUFDeEM7SUFFQSxPQUFPRCxNQUFNRyxNQUFNLENBQUNRLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDO0FBRU8sU0FBU3pCLCtCQUErQmMsS0FBb0I7SUFDakUsSUFBSSxDQUFDVSxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQlYsUUFBUTtRQUMzQixNQUFNLHFCQUFpQyxDQUFqQyxJQUFJQyxNQUFNLHlCQUFWO21CQUFBO3dCQUFBOzBCQUFBO1FBQWdDO0lBQ3hDO0lBRUEsT0FBT2EsT0FBT2QsTUFBTUcsTUFBTSxDQUFDUSxLQUFLLENBQUMsS0FBS0ksRUFBRSxDQUFDLENBQUM7QUFDNUMiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHJlZGlyZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gJy4vcmVkaXJlY3Qtc3RhdHVzLWNvZGUnXG5pbXBvcnQge1xuICBSZWRpcmVjdFR5cGUsXG4gIHR5cGUgUmVkaXJlY3RFcnJvcixcbiAgaXNSZWRpcmVjdEVycm9yLFxuICBSRURJUkVDVF9FUlJPUl9DT0RFLFxufSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG5jb25zdCBhY3Rpb25Bc3luY1N0b3JhZ2UgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsJylcbiAgICAgICkuYWN0aW9uQXN5bmNTdG9yYWdlXG4gICAgOiB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0RXJyb3IoXG4gIHVybDogc3RyaW5nLFxuICB0eXBlOiBSZWRpcmVjdFR5cGUsXG4gIHN0YXR1c0NvZGU6IFJlZGlyZWN0U3RhdHVzQ29kZSA9IFJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdFxuKTogUmVkaXJlY3RFcnJvciB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFJFRElSRUNUX0VSUk9SX0NPREUpIGFzIFJlZGlyZWN0RXJyb3JcbiAgZXJyb3IuZGlnZXN0ID0gYCR7UkVESVJFQ1RfRVJST1JfQ09ERX07JHt0eXBlfTske3VybH07JHtzdGF0dXNDb2RlfTtgXG4gIHJldHVybiBlcnJvclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhbm90aGVyIFVSTC4gSXQgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgbWV0YSB0YWcgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlIHRhcmdldCBwYWdlLlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDMwNy8zMDMgdG8gdGhlIGNhbGxlci5cbiAqIC0gSW4gYSBTZXJ2ZXIgQWN0aW9uLCB0eXBlIGRlZmF1bHRzIHRvICdwdXNoJyBhbmQgJ3JlcGxhY2UnIGVsc2V3aGVyZS5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGByZWRpcmVjdGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9yZWRpcmVjdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0KFxuICAvKiogVGhlIFVSTCB0byByZWRpcmVjdCB0byAqL1xuICB1cmw6IHN0cmluZyxcbiAgdHlwZT86IFJlZGlyZWN0VHlwZVxuKTogbmV2ZXIge1xuICB0eXBlID8/PSBhY3Rpb25Bc3luY1N0b3JhZ2U/LmdldFN0b3JlKCk/LmlzQWN0aW9uXG4gICAgPyBSZWRpcmVjdFR5cGUucHVzaFxuICAgIDogUmVkaXJlY3RUeXBlLnJlcGxhY2VcblxuICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgUmVkaXJlY3RTdGF0dXNDb2RlLlRlbXBvcmFyeVJlZGlyZWN0KVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhbm90aGVyIFVSTC4gSXQgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgbWV0YSB0YWcgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlIHRhcmdldCBwYWdlLlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDMwOC8zMDMgdG8gdGhlIGNhbGxlci5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGByZWRpcmVjdGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9yZWRpcmVjdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcm1hbmVudFJlZGlyZWN0KFxuICAvKiogVGhlIFVSTCB0byByZWRpcmVjdCB0byAqL1xuICB1cmw6IHN0cmluZyxcbiAgdHlwZTogUmVkaXJlY3RUeXBlID0gUmVkaXJlY3RUeXBlLnJlcGxhY2Vcbik6IG5ldmVyIHtcbiAgdGhyb3cgZ2V0UmVkaXJlY3RFcnJvcih1cmwsIHR5cGUsIFJlZGlyZWN0U3RhdHVzQ29kZS5QZXJtYW5lbnRSZWRpcmVjdClcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlbmNvZGVkIFVSTCBmcm9tIHRoZSBlcnJvciBpZiBpdCdzIGEgUmVkaXJlY3RFcnJvciwgbnVsbFxuICogb3RoZXJ3aXNlLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgVVJMIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3IgdGhhdCBtYXkgYmUgYSByZWRpcmVjdCBlcnJvclxuICogQHJldHVybiB0aGUgdXJsIGlmIHRoZSBlcnJvciB3YXMgYSByZWRpcmVjdCBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcjogdW5rbm93bik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHJldHVybiBudWxsXG5cbiAgLy8gU2xpY2VzIG9mZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkaWdlc3QgdGhhdCBjb250YWlucyB0aGUgY29kZSBhbmQgdGhlXG4gIC8vIHNlcGFyYXRpbmcgJzsnLlxuICByZXR1cm4gZXJyb3IuZGlnZXN0LnNwbGl0KCc7Jykuc2xpY2UoMiwgLTIpLmpvaW4oJzsnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yOiBSZWRpcmVjdEVycm9yKTogUmVkaXJlY3RUeXBlIHtcbiAgaWYgKCFpc1JlZGlyZWN0RXJyb3IoZXJyb3IpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSByZWRpcmVjdCBlcnJvcicpXG4gIH1cblxuICByZXR1cm4gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JywgMilbMV0gYXMgUmVkaXJlY3RUeXBlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBudW1iZXIge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHJlZGlyZWN0IGVycm9yJylcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIoZXJyb3IuZGlnZXN0LnNwbGl0KCc7JykuYXQoLTIpKVxufVxuIl0sIm5hbWVzIjpbImdldFJlZGlyZWN0RXJyb3IiLCJnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IiLCJnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IiLCJnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciIsInBlcm1hbmVudFJlZGlyZWN0IiwicmVkaXJlY3QiLCJhY3Rpb25Bc3luY1N0b3JhZ2UiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwidXJsIiwidHlwZSIsInN0YXR1c0NvZGUiLCJSZWRpcmVjdFN0YXR1c0NvZGUiLCJUZW1wb3JhcnlSZWRpcmVjdCIsImVycm9yIiwiRXJyb3IiLCJSRURJUkVDVF9FUlJPUl9DT0RFIiwiZGlnZXN0IiwiZ2V0U3RvcmUiLCJpc0FjdGlvbiIsIlJlZGlyZWN0VHlwZSIsInB1c2giLCJyZXBsYWNlIiwiUGVybWFuZW50UmVkaXJlY3QiLCJpc1JlZGlyZWN0RXJyb3IiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIk51bWJlciIsImF0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/redirect.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js": /*!**********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/render-from-template-context.js ***! \**********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RenderFromTemplateContext;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nfunction RenderFromTemplateContext() {\n const children = (0, _react.useContext)(_approutercontextsharedruntime.TemplateContext);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=render-from-template-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FLQTs7O2VBQXdCQTs7Ozs7NkVBSG9COzJEQUNaO0FBRWpCLFNBQVNBO0lBQ3RCLE1BQU1DLFdBQVdDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSxlQUFlO0lBQzNDLHFCQUFPO2tCQUFHRjs7QUFDWiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB0eXBlIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlbmRlckZyb21UZW1wbGF0ZUNvbnRleHQoKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBjaGlsZHJlbiA9IHVzZUNvbnRleHQoVGVtcGxhdGVDb250ZXh0KVxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG4iXSwibmFtZXMiOlsiUmVuZGVyRnJvbVRlbXBsYXRlQ29udGV4dCIsImNoaWxkcmVuIiwidXNlQ29udGV4dCIsIlRlbXBsYXRlQ29udGV4dCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js ***! \*****************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createHrefFromUrl\", ({\n enumerable: true,\n get: function() {\n return createHrefFromUrl;\n }\n}));\nfunction createHrefFromUrl(url, includeHash) {\n if (includeHash === void 0) includeHash = true;\n return url.pathname + url.search + (includeHash ? url.hash : '');\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=create-href-from-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7cURBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxrQkFDZEMsR0FBOEMsRUFDOUNDLFdBQTJCO0lBQTNCQSxJQUFBQSxnQkFBQUEsS0FBQUEsR0FBQUEsY0FBdUI7SUFFdkIsT0FBT0QsSUFBSUUsUUFBUSxHQUFHRixJQUFJRyxNQUFNLEdBQUlGLENBQUFBLGNBQWNELElBQUlJLElBQUksR0FBRyxHQUFDO0FBQ2hFIiwic291cmNlcyI6WyJEOlxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHJvdXRlci1yZWR1Y2VyXFxjcmVhdGUtaHJlZi1mcm9tLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlSHJlZkZyb21VcmwoXG4gIHVybDogUGljazxVUkwsICdwYXRobmFtZScgfCAnc2VhcmNoJyB8ICdoYXNoJz4sXG4gIGluY2x1ZGVIYXNoOiBib29sZWFuID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHVybC5wYXRobmFtZSArIHVybC5zZWFyY2ggKyAoaW5jbHVkZUhhc2ggPyB1cmwuaGFzaCA6ICcnKVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUhyZWZGcm9tVXJsIiwidXJsIiwiaW5jbHVkZUhhc2giLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js ***! \********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createRouterCacheKey\", ({\n enumerable: true,\n get: function() {\n return createRouterCacheKey;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction createRouterCacheKey(segment, withoutSearchParameters) {\n if (withoutSearchParameters === void 0) withoutSearchParameters = false;\n // if the segment is an array, it means it's a dynamic segment\n // for example, ['lang', 'en', 'd']. We need to convert it to a string to store it as a cache node key.\n if (Array.isArray(segment)) {\n return segment[0] + \"|\" + segment[1] + \"|\" + segment[2];\n }\n // Page segments might have search parameters, ie __PAGE__?foo=bar\n // When `withoutSearchParameters` is true, we only want to return the page segment\n if (withoutSearchParameters && segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=create-router-cache-key.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5LmpzIiwibWFwcGluZ3MiOiI7Ozs7d0RBR2dCQTs7O2VBQUFBOzs7cUNBRmlCO0FBRTFCLFNBQVNBLHFCQUNkQyxPQUFnQixFQUNoQkMsdUJBQXdDO0lBQXhDQSxJQUFBQSw0QkFBQUEsS0FBQUEsR0FBQUEsMEJBQW1DO0lBRW5DLDhEQUE4RDtJQUM5RCx1R0FBdUc7SUFDdkcsSUFBSUMsTUFBTUMsT0FBTyxDQUFDSCxVQUFVO1FBQzFCLE9BQVVBLE9BQU8sQ0FBQyxFQUFFLEdBQUMsTUFBR0EsT0FBTyxDQUFDLEVBQUUsR0FBQyxNQUFHQSxPQUFPLENBQUMsRUFBRTtJQUNsRDtJQUVBLGtFQUFrRTtJQUNsRSxrRkFBa0Y7SUFDbEYsSUFBSUMsMkJBQTJCRCxRQUFRSSxVQUFVLENBQUNDLFNBQUFBLGdCQUFnQixHQUFHO1FBQ25FLE9BQU9BLFNBQUFBLGdCQUFnQjtJQUN6QjtJQUVBLE9BQU9MO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccm91dGVyLXJlZHVjZXJcXGNyZWF0ZS1yb3V0ZXItY2FjaGUta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlckNhY2hlS2V5KFxuICBzZWdtZW50OiBTZWdtZW50LFxuICB3aXRob3V0U2VhcmNoUGFyYW1ldGVyczogYm9vbGVhbiA9IGZhbHNlXG4pIHtcbiAgLy8gaWYgdGhlIHNlZ21lbnQgaXMgYW4gYXJyYXksIGl0IG1lYW5zIGl0J3MgYSBkeW5hbWljIHNlZ21lbnRcbiAgLy8gZm9yIGV4YW1wbGUsIFsnbGFuZycsICdlbicsICdkJ10uIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byBhIHN0cmluZyB0byBzdG9yZSBpdCBhcyBhIGNhY2hlIG5vZGUga2V5LlxuICBpZiAoQXJyYXkuaXNBcnJheShzZWdtZW50KSkge1xuICAgIHJldHVybiBgJHtzZWdtZW50WzBdfXwke3NlZ21lbnRbMV19fCR7c2VnbWVudFsyXX1gXG4gIH1cblxuICAvLyBQYWdlIHNlZ21lbnRzIG1pZ2h0IGhhdmUgc2VhcmNoIHBhcmFtZXRlcnMsIGllIF9fUEFHRV9fP2Zvbz1iYXJcbiAgLy8gV2hlbiBgd2l0aG91dFNlYXJjaFBhcmFtZXRlcnNgIGlzIHRydWUsIHdlIG9ubHkgd2FudCB0byByZXR1cm4gdGhlIHBhZ2Ugc2VnbWVudFxuICBpZiAod2l0aG91dFNlYXJjaFBhcmFtZXRlcnMgJiYgc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgfVxuXG4gIHJldHVybiBzZWdtZW50XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJzZWdtZW50Iiwid2l0aG91dFNlYXJjaFBhcmFtZXRlcnMiLCJBcnJheSIsImlzQXJyYXkiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js": /*!******************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js ***! \******************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createFetch: function() {\n return createFetch;\n },\n createFromNextReadableStream: function() {\n return createFromNextReadableStream;\n },\n fetchServerResponse: function() {\n return fetchServerResponse;\n }\n});\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _appcallserver = __webpack_require__(/*! ../../app-call-server */ \"(ssr)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../app-find-source-map-url */ \"(ssr)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _appbuildid = __webpack_require__(/*! ../../app-build-id */ \"(ssr)/./node_modules/next/dist/client/app-build-id.js\");\nconst _setcachebustingsearchparam = __webpack_require__(/*! ./set-cache-busting-search-param */ \"(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(ssr)/./node_modules/next/dist/client/route-params.js\");\nconst createFromReadableStream = _client.createFromReadableStream;\nfunction doMpaNavigation(url) {\n return {\n flightData: (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(url, location.origin)).toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n}\nlet abortController = new AbortController();\nif (false) {}\nasync function fetchServerResponse(url, options) {\n const { flightRouterState, nextUrl, prefetchKind } = options;\n const headers = {\n // Enable flight response\n [_approuterheaders.RSC_HEADER]: '1',\n // Provide the current router state\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(flightRouterState, options.isHmrRefresh)\n };\n /**\n * Three cases:\n * - `prefetchKind` is `undefined`, it means it's a normal navigation, so we want to prefetch the page data fully\n * - `prefetchKind` is `full` - we want to prefetch the whole page so same as above\n * - `prefetchKind` is `auto` - if the page is dynamic, prefetch the page data partially, if static prefetch the page data fully\n */ if (prefetchKind === _routerreducertypes.PrefetchKind.AUTO) {\n headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '1';\n }\n if ( true && options.isHmrRefresh) {\n headers[_approuterheaders.NEXT_HMR_REFRESH_HEADER] = '1';\n }\n if (nextUrl) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n try {\n var _res_headers_get;\n // When creating a \"temporary\" prefetch (the \"on-demand\" prefetch that gets created on navigation, if one doesn't exist)\n // we send the request with a \"high\" priority as it's in response to a user interaction that could be blocking a transition.\n // Otherwise, all other prefetches are sent with a \"low\" priority.\n // We use \"auto\" for in all other cases to match the existing default, as this function is shared outside of prefetching.\n const fetchPriority = prefetchKind ? prefetchKind === _routerreducertypes.PrefetchKind.TEMPORARY ? 'high' : 'low' : 'auto';\n if (false) {}\n const res = await createFetch(url, headers, fetchPriority, abortController.signal);\n const responseUrl = (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(res.url));\n const canonicalUrl = res.redirected ? responseUrl : undefined;\n const contentType = res.headers.get('content-type') || '';\n const interception = !!((_res_headers_get = res.headers.get('vary')) == null ? void 0 : _res_headers_get.includes(_approuterheaders.NEXT_URL));\n const postponed = !!res.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER);\n const staleTimeHeaderSeconds = res.headers.get(_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER);\n const staleTime = staleTimeHeaderSeconds !== null ? parseInt(staleTimeHeaderSeconds, 10) * 1000 : -1;\n let isFlightResponse = contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);\n if (false) {}\n // If fetch returns something different than flight response handle it like a mpa navigation\n // If the fetch was not 200, we also handle it like a mpa navigation\n if (!isFlightResponse || !res.ok || !res.body) {\n // in case the original URL came with a hash, preserve it before redirecting to the new URL\n if (url.hash) {\n responseUrl.hash = url.hash;\n }\n return doMpaNavigation(responseUrl.toString());\n }\n // We may navigate to a page that requires a different Webpack runtime.\n // In prod, every page will have the same Webpack runtime.\n // In dev, the Webpack runtime is minimal for each page.\n // We need to ensure the Webpack runtime is updated before executing client-side JS of the new page.\n if (true) {\n await (__webpack_require__(/*! ../../dev/hot-reloader/app/hot-reloader-app */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\").waitForWebpackRuntimeHotUpdate)();\n }\n // Handle the `fetch` readable stream that can be unwrapped by `React.use`.\n const flightStream = postponed ? createUnclosingPrefetchStream(res.body) : res.body;\n const response = await createFromNextReadableStream(flightStream);\n if ((0, _appbuildid.getAppBuildId)() !== response.b) {\n return doMpaNavigation(res.url);\n }\n return {\n flightData: (0, _flightdatahelpers.normalizeFlightData)(response.f),\n canonicalUrl: canonicalUrl,\n couldBeIntercepted: interception,\n prerendered: response.S,\n postponed,\n staleTime\n };\n } catch (err) {\n if (!abortController.signal.aborted) {\n console.error(\"Failed to fetch RSC payload for \" + url + \". Falling back to browser navigation.\", err);\n }\n // If fetch fails handle it like a mpa navigation\n // TODO-APP: Add a test for the case where a CORS request fails, e.g. external url redirect coming from the response.\n // See https://github.com/vercel/next.js/issues/43605#issuecomment-1451617521 for a reproduction.\n return {\n flightData: url.toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n }\n}\nasync function createFetch(url, headers, fetchPriority, signal) {\n // TODO: In output: \"export\" mode, the headers do nothing. Omit them (and the\n // cache busting search param) from the request so they're\n // maximally cacheable.\n if (false) {}\n if (false) {}\n const fetchOptions = {\n // Backwards compat for older browsers. `same-origin` is the default in modern browsers.\n credentials: 'same-origin',\n headers,\n priority: fetchPriority || undefined,\n signal\n };\n // `fetchUrl` is slightly different from `url` because we add a cache-busting\n // search param to it. This should not leak outside of this function, so we\n // track them separately.\n let fetchUrl = new URL(url);\n (0, _setcachebustingsearchparam.setCacheBustingSearchParam)(fetchUrl, headers);\n let browserResponse = await fetch(fetchUrl, fetchOptions);\n // If the server responds with a redirect (e.g. 307), and the redirected\n // location does not contain the cache busting search param set in the\n // original request, the response is likely invalid — when following the\n // redirect, the browser forwards the request headers, but since the cache\n // busting search param is missing, the server will reject the request due to\n // a mismatch.\n //\n // Ideally, we would be able to intercept the redirect response and perform it\n // manually, instead of letting the browser automatically follow it, but this\n // is not allowed by the fetch API.\n //\n // So instead, we must \"replay\" the redirect by fetching the new location\n // again, but this time we'll append the cache busting search param to prevent\n // a mismatch.\n //\n // TODO: We can optimize Next.js's built-in middleware APIs by returning a\n // custom status code, to prevent the browser from automatically following it.\n //\n // This does not affect Server Action-based redirects; those are encoded\n // differently, as part of the Flight body. It only affects redirects that\n // occur in a middleware or a third-party proxy.\n let redirected = browserResponse.redirected;\n if (false) {}\n // Remove the cache busting search param from the response URL, to prevent it\n // from leaking outside of this function.\n const responseUrl = new URL(browserResponse.url, fetchUrl);\n responseUrl.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n const rscResponse = {\n url: responseUrl.href,\n // This is true if any redirects occurred, either automatically by the\n // browser, or manually by us. So it's different from\n // `browserResponse.redirected`, which only tells us whether the browser\n // followed a redirect, and only for the last response in the chain.\n redirected,\n // These can be copied from the last browser response we received. We\n // intentionally only expose the subset of fields that are actually used\n // elsewhere in the codebase.\n ok: browserResponse.ok,\n headers: browserResponse.headers,\n body: browserResponse.body,\n status: browserResponse.status\n };\n return rscResponse;\n}\nfunction createFromNextReadableStream(flightStream) {\n return createFromReadableStream(flightStream, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n });\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\n }\n }\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=fetch-server-response.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUEyUXNCQSxXQUFXO2VBQVhBOztJQXFITkMsNEJBQTRCO2VBQTVCQTs7SUEzUk1DLG1CQUFtQjtlQUFuQkE7OztvQ0FqR3NEOzhDQWtCckU7MkNBQ29CO2lEQUNNO2dEQUNKOytDQUt0Qjt3Q0FDdUI7d0RBQ2E7eUNBQ0M7QUFFNUMsTUFBTUMsMkJBQ0pDLFFBQUFBLHdCQUErQjtBQThCakMsU0FBU0MsZ0JBQWdCQyxHQUFXO0lBQ2xDLE9BQU87UUFDTEMsWUFBWUMsQ0FBQUEsR0FBQUEsYUFBQUEsMkJBQUFBLEVBQ1YsSUFBSUMsSUFBSUgsS0FBS0ksU0FBU0MsTUFBTSxHQUM1QkMsUUFBUTtRQUNWQyxjQUFjQztRQUNkQyxvQkFBb0I7UUFDcEJDLGFBQWE7UUFDYkMsV0FBVztRQUNYQyxXQUFXLENBQUM7SUFDZDtBQUNGO0FBRUEsSUFBSUMsa0JBQWtCLElBQUlDO0FBRTFCLElBQUksS0FBNkIsRUFBRSxFQWNsQztBQU1NLGVBQWVsQixvQkFDcEJJLEdBQVEsRUFDUmtCLE9BQW1DO0lBRW5DLE1BQU0sRUFBRUMsaUJBQWlCLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFLEdBQUdIO0lBRXJELE1BQU1JLFVBQTBCO1FBQzlCLHlCQUF5QjtRQUN6QixDQUFDQyxrQkFBQUEsVUFBVSxDQUFDLEVBQUU7UUFDZCxtQ0FBbUM7UUFDbkMsQ0FBQ0Msa0JBQUFBLDZCQUE2QixDQUFDLEVBQUVDLENBQUFBLEdBQUFBLG1CQUFBQSxrQ0FBQUEsRUFDL0JOLG1CQUNBRCxRQUFRUSxZQUFZO0lBRXhCO0lBRUE7Ozs7O0dBS0MsR0FDRCxJQUFJTCxpQkFBaUJNLG9CQUFBQSxZQUFZLENBQUNDLElBQUksRUFBRTtRQUN0Q04sT0FBTyxDQUFDTyxrQkFBQUEsMkJBQTJCLENB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QUNGO0FBQ0YiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccm91dGVyLXJlZHVjZXJcXGZldGNoLXNlcnZlci1yZXNwb25zZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLy8gVE9ETzogRXhwbGljaXRseSBpbXBvcnQgZnJvbSBjbGllbnQuYnJvd3NlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIGFzIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIgfSBmcm9tICdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBOYXZpZ2F0aW9uRmxpZ2h0UmVzcG9uc2UsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIH0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHtcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9SU0NfVU5JT05fUVVFUlksXG4gIE5FWFRfVVJMLFxuICBSU0NfSEVBREVSLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfRElEX1BPU1RQT05FX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIsXG59IGZyb20gJy4uL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB7IGNhbGxTZXJ2ZXIgfSBmcm9tICcuLi8uLi9hcHAtY2FsbC1zZXJ2ZXInXG5pbXBvcnQgeyBmaW5kU291cmNlTWFwVVJMIH0gZnJvbSAnLi4vLi4vYXBwLWZpbmQtc291cmNlLW1hcC11cmwnXG5pbXBvcnQgeyBQcmVmZXRjaEtpbmQgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGdldEFwcEJ1aWxkSWQgfSBmcm9tICcuLi8uLi9hcHAtYnVpbGQtaWQnXG5pbXBvcnQgeyBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSB9IGZyb20gJy4vc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtJ1xuaW1wb3J0IHsgdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIH0gZnJvbSAnLi4vLi4vcm91dGUtcGFyYW1zJ1xuXG5jb25zdCBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0gPVxuICBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIGFzICh0eXBlb2YgaW1wb3J0KCdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50LmJyb3dzZXInKSlbJ2NyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSddXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hTZXJ2ZXJSZXNwb25zZU9wdGlvbnMge1xuICByZWFkb25seSBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgcmVhZG9ubHkgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuICByZWFkb25seSBwcmVmZXRjaEtpbmQ/OiBQcmVmZXRjaEtpbmRcbiAgcmVhZG9ubHkgaXNIbXJSZWZyZXNoPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0ID0ge1xuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nXG4gIGNhbm9uaWNhbFVybDogVVJMIHwgdW5kZWZpbmVkXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuICBwcmVyZW5kZXJlZDogYm9vbGVhblxuICBwb3N0cG9uZWQ6IGJvb2xlYW5cbiAgc3RhbGVUaW1lOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7XG4gIFtSU0NfSEVBREVSXT86ICcxJ1xuICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdPzogc3RyaW5nXG4gIFtORVhUX1VSTF0/OiBzdHJpbmdcbiAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0/OiAnMScgfCAnMidcbiAgW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXT86IHN0cmluZ1xuICAneC1kZXBsb3ltZW50LWlkJz86IHN0cmluZ1xuICBbTkVYVF9ITVJfUkVGUkVTSF9IRUFERVJdPzogJzEnXG4gIC8vIEEgaGVhZGVyIHRoYXQgaXMgb25seSBhZGRlZCBpbiB0ZXN0IG1vZGUgdG8gYXNzZXJ0IG9uIGZldGNoIHByaW9yaXR5XG4gICdOZXh0LVRlc3QtRmV0Y2gtUHJpb3JpdHknPzogUmVxdWVzdEluaXRbJ3ByaW9yaXR5J11cbn1cblxuZnVuY3Rpb24gZG9NcGFOYXZpZ2F0aW9uKHVybDogc3RyaW5nKTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB7XG4gIHJldHVybiB7XG4gICAgZmxpZ2h0RGF0YTogdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKFxuICAgICAgbmV3IFVSTCh1cmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgICApLnRvU3RyaW5nKCksXG4gICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgY291bGRCZUludGVyY2VwdGVkOiBmYWxzZSxcbiAgICBwcmVyZW5kZXJlZDogZmFsc2UsXG4gICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICBzdGFsZVRpbWU6IC0xLFxuICB9XG59XG5cbmxldCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIEFib3J0IGFueSBpbi1mbGlnaHQgcmVxdWVzdHMgd2hlbiB0aGUgcGFnZSBpcyB1bmxvYWRlZCwgZS5nLiBkdWUgdG9cbiAgLy8gcmVsb2FkaW5nIHRoZSBwYWdlIG9yIHBlcmZvcm1pbmcgaGFyZCBuYXZpZ2F0aW9ucy4gVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlXG4gIC8vIHdoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGEgdGhyb3duIFR5cGVFcnJvciB3aGVuIHRoZSBicm93c2VyIGNhbmNlbHMgdGhlXG4gIC8vIHJlcXVlc3RzLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyLmFib3J0KClcbiAgfSlcblxuICAvLyBVc2UgYSBmcmVzaCBBYm9ydENvbnRyb2xsZXIgaW5zdGFuY2Ugb24gcGFnZXNob3csIGUuZy4gd2hlbiBuYXZpZ2F0aW5nIGJhY2tcbiAgLy8gYW5kIHRoZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlc3RvcmVkIGJ5IHRoZSBicm93c2VyLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gIH0pXG59XG5cbi8qKlxuICogRmV0Y2ggdGhlIGZsaWdodCBkYXRhIGZvciB0aGUgcHJvdmlkZWQgdXJsLiBUYWtlcyBpbiB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGVcbiAqIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlciBzZXJ2ZXItc2lkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2VydmVyUmVzcG9uc2UoXG4gIHVybDogVVJMLFxuICBvcHRpb25zOiBGZXRjaFNlcnZlclJlc3BvbnNlT3B0aW9uc1xuKTogUHJvbWlzZTxGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0PiB7XG4gIGNvbnN0IHsgZmxpZ2h0Um91dGVyU3RhdGUsIG5leHRVcmwsIHByZWZldGNoS2luZCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge1xuICAgIC8vIEVuYWJsZSBmbGlnaHQgcmVzcG9uc2VcbiAgICBbUlNDX0hFQURFUl06ICcxJyxcbiAgICAvLyBQcm92aWRlIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZVxuICAgIFtORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06IHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgIG9wdGlvbnMuaXNIbXJSZWZyZXNoXG4gICAgKSxcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlZSBjYXNlczpcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgdW5kZWZpbmVkYCwgaXQgbWVhbnMgaXQncyBhIG5vcm1hbCBuYXZpZ2F0aW9uLCBzbyB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgZnVsbGAgLSB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSB3aG9sZSBwYWdlIHNvIHNhbWUgYXMgYWJvdmVcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgYXV0b2AgLSBpZiB0aGUgcGFnZSBpcyBkeW5hbWljLCBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIHBhcnRpYWxseSwgaWYgc3RhdGljIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICovXG4gIGlmIChwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5BVVRPKSB7XG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdID0gJzEnXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgb3B0aW9ucy5pc0htclJlZnJlc2gpIHtcbiAgICBoZWFkZXJzW05FWFRfSE1SX1JFRlJFU0hfSEVBREVSXSA9ICcxJ1xuICB9XG5cbiAgaWYgKG5leHRVcmwpIHtcbiAgICBoZWFkZXJzW05FWFRfVVJMXSA9IG5leHRVcmxcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gV2hlbiBjcmVhdGluZyBhIFwidGVtcG9yYXJ5XCIgcHJlZmV0Y2ggKHRoZSBcIm9uLWRlbWFuZFwiIHByZWZldGNoIHRoYXQgZ2V0cyBjcmVhdGVkIG9uIG5hdmlnYXRpb24sIGlmIG9uZSBkb2Vzbid0IGV4aXN0KVxuICAgIC8vIHdlIHNlbmQgdGhlIHJlcXVlc3Qgd2l0aCBhIFwiaGlnaFwiIHByaW9yaXR5IGFzIGl0J3MgaW4gcmVzcG9uc2UgdG8gYSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY291bGQgYmUgYmxvY2tpbmcgYSB0cmFuc2l0aW9uLlxuICAgIC8vIE90aGVyd2lzZSwgYWxsIG90aGVyIHByZWZldGNoZXMgYXJlIHNlbnQgd2l0aCBhIFwibG93XCIgcHJpb3JpdHkuXG4gICAgLy8gV2UgdXNlIFwiYXV0b1wiIGZvciBpbiBhbGwgb3RoZXIgY2FzZXMgdG8gbWF0Y2ggdGhlIGV4aXN0aW5nIGRlZmF1bHQsIGFzIHRoaXMgZnVuY3Rpb24gaXMgc2hhcmVkIG91dHNpZGUgb2YgcHJlZmV0Y2hpbmcuXG4gICAgY29uc3QgZmV0Y2hQcmlvcml0eSA9IHByZWZldGNoS2luZFxuICAgICAgPyBwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5URU1QT1JBUllcbiAgICAgICAgPyAnaGlnaCdcbiAgICAgICAgOiAnbG93J1xuICAgICAgOiAnYXV0bydcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIC8vIEluIFwib3V0cHV0OiBleHBvcnRcIiBtb2RlLCB3ZSBjYW4ndCByZWx5IG9uIGhlYWRlcnMgdG8gZGlzdGluZ3Vpc2hcbiAgICAgICAgLy8gYmV0d2VlbiBIVE1MIGFuZCBSU0MgcmVxdWVzdHMuIEluc3RlYWQsIHdlIGFwcGVuZCBhbiBleHRyYSBwcmVmaXhcbiAgICAgICAgLy8gdG8gdGhlIHJlcXVlc3QuXG4gICAgICAgIHVybCA9IG5ldyBVUkwodXJsKVxuICAgICAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJ2luZGV4LnR4dCdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJy50eHQnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjcmVhdGVGZXRjaChcbiAgICAgIHVybCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBmZXRjaFByaW9yaXR5LFxuICAgICAgYWJvcnRDb250cm9sbGVyLnNpZ25hbFxuICAgIClcblxuICAgIGNvbnN0IHJlc3BvbnNlVXJsID0gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzLnVybCkpXG4gICAgY29uc3QgY2Fub25pY2FsVXJsID0gcmVzLnJlZGlyZWN0ZWQgPyByZXNwb25zZVVybCA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnXG4gICAgY29uc3QgaW50ZXJjZXB0aW9uID0gISFyZXMuaGVhZGVycy5nZXQoJ3ZhcnknKT8uaW5jbHVkZXMoTkVYVF9VUkwpXG4gICAgY29uc3QgcG9zdHBvbmVkID0gISFyZXMuaGVhZGVycy5nZXQoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSKVxuICAgIGNvbnN0IHN0YWxlVGltZUhlYWRlclNlY29uZHMgPSByZXMuaGVhZGVycy5nZXQoXG4gICAgICBORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUlxuICAgIClcbiAgICBjb25zdCBzdGFsZVRpbWUgPVxuICAgICAgc3RhbGVUaW1lSGVhZGVyU2Vjb25kcyAhPT0gbnVsbFxuICAgICAgICA/IHBhcnNlSW50KHN0YWxlVGltZUhlYWRlclNlY29uZHMsIDEwKSAqIDEwMDBcbiAgICAgICAgOiAtMVxuICAgIGxldCBpc0ZsaWdodFJlc3BvbnNlID0gY29udGVudFR5cGUuc3RhcnRzV2l0aChSU0NfQ09OVEVOVF9UWVBFX0hFQURFUilcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIGlmICghaXNGbGlnaHRSZXNwb25zZSkge1xuICAgICAgICAgIGlzRmxpZ2h0UmVzcG9uc2UgPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCd0ZXh0L3BsYWluJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIHJldHVybnMgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGZsaWdodCByZXNwb25zZSBoYW5kbGUgaXQgbGlrZSBhIG1wYSBuYXZpZ2F0aW9uXG4gICAgLy8gSWYgdGhlIGZldGNoIHdhcyBub3QgMjAwLCB3ZSBhbHNvIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICBpZiAoIWlzRmxpZ2h0UmVzcG9uc2UgfHwgIXJlcy5vayB8fCAhcmVzLmJvZHkpIHtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9yaWdpbmFsIFVSTCBjYW1lIHdpdGggYSBoYXNoLCBwcmVzZXJ2ZSBpdCBiZWZvcmUgcmVkaXJlY3RpbmcgdG8gdGhlIG5ldyBVUkxcbiAgICAgIGlmICh1cmwuaGFzaCkge1xuICAgICAgICByZXNwb25zZVVybC5oYXNoID0gdXJsLmhhc2hcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvTXBhTmF2aWdhdGlvbihyZXNwb25zZVVybC50b1N0cmluZygpKVxuICAgIH1cblxuICAgIC8vIFdlIG1heSBuYXZpZ2F0ZSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudCBXZWJwYWNrIHJ1bnRpbWUuXG4gICAgLy8gSW4gcHJvZCwgZXZlcnkgcGFnZSB3aWxsIGhhdmUgdGhlIHNhbWUgV2VicGFjayBydW50aW1lLlxuICAgIC8vIEluIGRldiwgdGhlIFdlYnBhY2sgcnVudGltZSBpcyBtaW5pbWFsIGZvciBlYWNoIHBhZ2UuXG4gICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIFdlYnBhY2sgcnVudGltZSBpcyB1cGRhdGVkIGJlZm9yZSBleGVjdXRpbmcgY2xpZW50LXNpZGUgSlMgb2YgdGhlIG5ldyBwYWdlLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vZGV2L2hvdC1yZWxvYWRlci9hcHAvaG90LXJlbG9hZGVyLWFwcCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKVxuICAgICAgKS53YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgYGZldGNoYCByZWFkYWJsZSBzdHJlYW0gdGhhdCBjYW4gYmUgdW53cmFwcGVkIGJ5IGBSZWFjdC51c2VgLlxuICAgIGNvbnN0IGZsaWdodFN0cmVhbSA9IHBvc3Rwb25lZFxuICAgICAgPyBjcmVhdGVVbmNsb3NpbmdQcmVmZXRjaFN0cmVhbShyZXMuYm9keSlcbiAgICAgIDogcmVzLmJvZHlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IChjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICAgICAgZmxpZ2h0U3RyZWFtXG4gICAgKSBhcyBQcm9taXNlPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4pXG5cbiAgICBpZiAoZ2V0QXBwQnVpbGRJZCgpICE9PSByZXNwb25zZS5iKSB7XG4gICAgICByZXR1cm4gZG9NcGFOYXZpZ2F0aW9uKHJlcy51cmwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IG5vcm1hbGl6ZUZsaWdodERhdGEocmVzcG9uc2UuZiksXG4gICAgICBjYW5vbmljYWxVcmw6IGNhbm9uaWNhbFVybCxcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogaW50ZXJjZXB0aW9uLFxuICAgICAgcHJlcmVuZGVyZWQ6IHJlc3BvbnNlLlMsXG4gICAgICBwb3N0cG9uZWQsXG4gICAgICBzdGFsZVRpbWUsXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBSU0MgcGF5bG9hZCBmb3IgJHt1cmx9LiBGYWxsaW5nIGJhY2sgdG8gYnJvd3NlciBuYXZpZ2F0aW9uLmAsXG4gICAgICAgIGVyclxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIGZhaWxzIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICAvLyBUT0RPLUFQUDogQWRkIGEgdGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBDT1JTIHJlcXVlc3QgZmFpbHMsIGUuZy4gZXh0ZXJuYWwgdXJsIHJlZGlyZWN0IGNvbWluZyBmcm9tIHRoZSByZXNwb25zZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2lzc3Vlcy80MzYwNSNpc3N1ZWNvbW1lbnQtMTQ1MTYxNzUyMSBmb3IgYSByZXByb2R1Y3Rpb24uXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IHVybC50b1N0cmluZygpLFxuICAgICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGZhbHNlLFxuICAgICAgcHJlcmVuZGVyZWQ6IGZhbHNlLFxuICAgICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICAgIHN0YWxlVGltZTogLTEsXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgaXMgYSBzdWJzZXQgb2YgdGhlIHN0YW5kYXJkIFJlc3BvbnNlIHR5cGUuIFdlIHVzZSBhIGN1c3RvbSB0eXBlIGZvclxuLy8gdGhpcyBzbyB3ZSBjYW4gbGltaXQgd2hpY2ggZGV0YWlscyBhYm91dCB0aGUgcmVzcG9uc2UgbGVhayBpbnRvIHRoZSByZXN0IG9mXG4vLyB0aGUgY29kZWJhc2UuIEZvciBleGFtcGxlLCB0aGVyZSdzIHNvbWUgY3VzdG9tIGxvZ2ljIGZvciBtYW51YWxseSBmb2xsb3dpbmdcbi8vIHJlZGlyZWN0cywgc28gXCJyZWRpcmVjdGVkXCIgaW4gdGhpcyB0eXBlIGNvdWxkIGJlIGEgY29tcG9zaXRlIG9mIG11bHRpcGxlXG4vLyBicm93c2VyIGZldGNoIGNhbGxzOyBob3dldmVyLCB0aGlzIGZhY3Qgc2hvdWxkIG5vdCBsZWFrIHRvIHRoZSBjYWxsZXIuXG5leHBvcnQgdHlwZSBSU0NSZXNwb25zZSA9IHtcbiAgb2s6IGJvb2xlYW5cbiAgcmVkaXJlY3RlZDogYm9vbGVhblxuICBoZWFkZXJzOiBIZWFkZXJzXG4gIGJvZHk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHwgbnVsbFxuICBzdGF0dXM6IG51bWJlclxuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRmV0Y2goXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyxcbiAgZmV0Y2hQcmlvcml0eTogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdycgfCBudWxsLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxSU0NSZXNwb25zZT4ge1xuICAvLyBUT0RPOiBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgdGhlIGhlYWRlcnMgZG8gbm90aGluZy4gT21pdCB0aGVtIChhbmQgdGhlXG4gIC8vIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtKSBmcm9tIHRoZSByZXF1ZXN0IHNvIHRoZXkncmVcbiAgLy8gbWF4aW1hbGx5IGNhY2hlYWJsZS5cblxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSAmJiBmZXRjaFByaW9yaXR5ICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1snTmV4dC1UZXN0LUZldGNoLVByaW9yaXR5J10gPSBmZXRjaFByaW9yaXR5XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgaGVhZGVyc1sneC1kZXBsb3ltZW50LWlkJ10gPSBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSURcbiAgfVxuXG4gIGNvbnN0IGZldGNoT3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3Igb2xkZXIgYnJvd3NlcnMuIGBzYW1lLW9yaWdpbmAgaXMgdGhlIGRlZmF1bHQgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIGhlYWRlcnMsXG4gICAgcHJpb3JpdHk6IGZldGNoUHJpb3JpdHkgfHwgdW5kZWZpbmVkLFxuICAgIHNpZ25hbCxcbiAgfVxuICAvLyBgZmV0Y2hVcmxgIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIGB1cmxgIGJlY2F1c2Ugd2UgYWRkIGEgY2FjaGUtYnVzdGluZ1xuICAvLyBzZWFyY2ggcGFyYW0gdG8gaXQuIFRoaXMgc2hvdWxkIG5vdCBsZWFrIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiwgc28gd2VcbiAgLy8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LlxuICBsZXQgZmV0Y2hVcmwgPSBuZXcgVVJMKHVybClcbiAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oZmV0Y2hVcmwsIGhlYWRlcnMpXG4gIGxldCBicm93c2VyUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmZXRjaFVybCwgZmV0Y2hPcHRpb25zKVxuXG4gIC8vIElmIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBhIHJlZGlyZWN0IChlLmcuIDMwNyksIGFuZCB0aGUgcmVkaXJlY3RlZFxuICAvLyBsb2NhdGlvbiBkb2VzIG5vdCBjb250YWluIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBzZXQgaW4gdGhlXG4gIC8vIG9yaWdpbmFsIHJlcXVlc3QsIHRoZSByZXNwb25zZSBpcyBsaWtlbHkgaW52YWxpZCDigJQgd2hlbiBmb2xsb3dpbmcgdGhlXG4gIC8vIHJlZGlyZWN0LCB0aGUgYnJvd3NlciBmb3J3YXJkcyB0aGUgcmVxdWVzdCBoZWFkZXJzLCBidXQgc2luY2UgdGhlIGNhY2hlXG4gIC8vIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtIGlzIG1pc3NpbmcsIHRoZSBzZXJ2ZXIgd2lsbCByZWplY3QgdGhlIHJlcXVlc3QgZHVlIHRvXG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIElkZWFsbHksIHdlIHdvdWxkIGJlIGFibGUgdG8gaW50ZXJjZXB0IHRoZSByZWRpcmVjdCByZXNwb25zZSBhbmQgcGVyZm9ybSBpdFxuICAvLyBtYW51YWxseSwgaW5zdGVhZCBvZiBsZXR0aW5nIHRoZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgZm9sbG93IGl0LCBidXQgdGhpc1xuICAvLyBpcyBub3QgYWxsb3dlZCBieSB0aGUgZmV0Y2ggQVBJLlxuICAvL1xuICAvLyBTbyBpbnN0ZWFkLCB3ZSBtdXN0IFwicmVwbGF5XCIgdGhlIHJlZGlyZWN0IGJ5IGZldGNoaW5nIHRoZSBuZXcgbG9jYXRpb25cbiAgLy8gYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2UnbGwgYXBwZW5kIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSB0byBwcmV2ZW50XG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIFRPRE86IFdlIGNhbiBvcHRpbWl6ZSBOZXh0LmpzJ3MgYnVpbHQtaW4gbWlkZGxld2FyZSBBUElzIGJ5IHJldHVybmluZyBhXG4gIC8vIGN1c3RvbSBzdGF0dXMgY29kZSwgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIGF1dG9tYXRpY2FsbHkgZm9sbG93aW5nIGl0LlxuICAvL1xuICAvLyBUaGlzIGRvZXMgbm90IGFmZmVjdCBTZXJ2ZXIgQWN0aW9uLWJhc2VkIHJlZGlyZWN0czsgdGhvc2UgYXJlIGVuY29kZWRcbiAgLy8gZGlmZmVyZW50bHksIGFzIHBhcnQgb2YgdGhlIEZsaWdodCBib2R5LiBJdCBvbmx5IGFmZmVjdHMgcmVkaXJlY3RzIHRoYXRcbiAgLy8gb2NjdXIgaW4gYSBtaWRkbGV3YXJlIG9yIGEgdGhpcmQtcGFydHkgcHJveHkuXG5cbiAgbGV0IHJlZGlyZWN0ZWQgPSBicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZFxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTKSB7XG4gICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IGEgcmVkaXJlY3QgbG9vcC4gU2FtZSBsaW1pdCB1c2VkIGJ5IENocm9tZS5cbiAgICBjb25zdCBNQVhfUkVESVJFQ1RTID0gMjBcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IE1BWF9SRURJUkVDVFM7IG4rKykge1xuICAgICAgaWYgKCFicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIGRpZCBub3QgcGVyZm9ybSBhIHJlZGlyZWN0LlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICAgICAgaWYgKHJlc3BvbnNlVXJsLm9yaWdpbiAhPT0gZmV0Y2hVcmwub3JpZ2luKSB7XG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgcmVkaXJlY3RlZCB0byBhbiBleHRlcm5hbCBVUkwuIFRoZSByZXN0IG9mIHRoZSBsb2dpYyBiZWxvd1xuICAgICAgICAvLyBpcyBub3QgcmVsZXZhbnQsIGJlY2F1c2UgaXQgb25seSBhcHBsaWVzIHRvIGludGVybmFsIHJlZGlyZWN0cy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2VVcmwuc2VhcmNoUGFyYW1zLmdldChORVhUX1JTQ19VTklPTl9RVUVSWSkgPT09XG4gICAgICAgIGZldGNoVXJsLnNlYXJjaFBhcmFtcy5nZXQoTkVYVF9SU0NfVU5JT05fUVVFUlkpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIHJlZGlyZWN0ZWQgVVJMIGFscmVhZHkgaW5jbHVkZXMgdGhlIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtLlxuICAgICAgICAvLyBUaGlzIHdhcyBwcm9iYWJseSBpbnRlbnRpb25hbC4gUmVnYXJkbGVzcywgdGhlcmUncyBubyByZWFzb24gdG9cbiAgICAgICAgLy8gaXNzdWUgYW5vdGhlciByZXF1ZXN0IHRvIHRoaXMgVVJMIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgdGhlIHBhcmFtXG4gICAgICAgIC8vIHZhbHVlIHRoYXQgd2Ugd291bGQgaGF2ZSBhZGRlZCBiZWxvdy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSBSU0MgcmVxdWVzdCB3YXMgcmVkaXJlY3RlZC4gQXNzdW1lIHRoZSByZXNwb25zZSBpcyBpbnZhbGlkLlxuICAgICAgLy9cbiAgICAgIC8vIEFwcGVuZCB0aGUgY2FjaGUgYnVzdGluZyBzZWFyY2ggcGFyYW0gdG8gdGhlIHJlZGlyZWN0ZWQgVVJMIGFuZFxuICAgICAgLy8gZmV0Y2ggYWdhaW4uXG4gICAgICBmZXRjaFVybCA9IG5ldyBVUkwocmVzcG9uc2VVcmwpXG4gICAgICBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbShmZXRjaFVybCwgaGVhZGVycylcbiAgICAgIGJyb3dzZXJSZXNwb25zZSA9IGF3YWl0IGZldGNoKGZldGNoVXJsLCBmZXRjaE9wdGlvbnMpXG4gICAgICAvLyBXZSBqdXN0IHBlcmZvcm1lZCBhIG1hbnVhbCByZWRpcmVjdCwgc28gdGhpcyBpcyBub3cgdHJ1ZS5cbiAgICAgIHJlZGlyZWN0ZWQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBmcm9tIHRoZSByZXNwb25zZSBVUkwsIHRvIHByZXZlbnQgaXRcbiAgLy8gZnJvbSBsZWFraW5nIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbi5cbiAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICByZXNwb25zZVVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKE5FWFRfUlNDX1VOSU9OX1FVRVJZKVxuXG4gIGNvbnN0IHJzY1Jlc3BvbnNlOiBSU0NSZXNwb25zZSA9IHtcbiAgICB1cmw6IHJlc3BvbnNlVXJsLmhyZWYsXG5cbiAgICAvLyBUaGlzIGlzIHRydWUgaWYgYW55IHJlZGlyZWN0cyBvY2N1cnJlZCwgZWl0aGVyIGF1dG9tYXRpY2FsbHkgYnkgdGhlXG4gICAgLy8gYnJvd3Nlciwgb3IgbWFudWFsbHkgYnkgdXMuIFNvIGl0J3MgZGlmZmVyZW50IGZyb21cbiAgICAvLyBgYnJvd3NlclJlc3BvbnNlLnJlZGlyZWN0ZWRgLCB3aGljaCBvbmx5IHRlbGxzIHVzIHdoZXRoZXIgdGhlIGJyb3dzZXJcbiAgICAvLyBmb2xsb3dlZCBhIHJlZGlyZWN0LCBhbmQgb25seSBmb3IgdGhlIGxhc3QgcmVzcG9uc2UgaW4gdGhlIGNoYWluLlxuICAgIHJlZGlyZWN0ZWQsXG5cbiAgICAvLyBUaGVzZSBjYW4gYmUgY29waWVkIGZyb20gdGhlIGxhc3QgYnJvd3NlciByZXNwb25zZSB3ZSByZWNlaXZlZC4gV2VcbiAgICAvLyBpbnRlbnRpb25hbGx5IG9ubHkgZXhwb3NlIHRoZSBzdWJzZXQgb2YgZmllbGRzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWRcbiAgICAvLyBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLlxuICAgIG9rOiBicm93c2VyUmVzcG9uc2Uub2ssXG4gICAgaGVhZGVyczogYnJvd3NlclJlc3BvbnNlLmhlYWRlcnMsXG4gICAgYm9keTogYnJvd3NlclJlc3BvbnNlLmJvZHksXG4gICAgc3RhdHVzOiBicm93c2VyUmVzcG9uc2Uuc3RhdHVzLFxuICB9XG5cbiAgcmV0dXJuIHJzY1Jlc3BvbnNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICBmbGlnaHRTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbShmbGlnaHRTdHJlYW0sIHtcbiAgICBjYWxsU2VydmVyLFxuICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKFxuICBvcmlnaW5hbEZsaWdodFN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgLy8gV2hlbiBQUFIgaXMgZW5hYmxlZCwgcHJlZmV0Y2ggc3RyZWFtcyBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRoYXQgbmV2ZXJcbiAgLy8gcmVzb2x2ZSwgYmVjYXVzZSB0aGF0J3MgaG93IHdlIGVuY29kZSBkeW5hbWljIGRhdGEgYWNjZXNzLiBJbiB0aGUgZGVjb2RlZFxuICAvLyBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIEZsaWdodCBjbGllbnQsIHRoZXNlIGFyZSByZWlmaWVkIGludG8gaGFuZ2luZ1xuICAvLyBwcm9taXNlcyB0aGF0IHN1c3BlbmQgZHVyaW5nIHJlbmRlciwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgd2hhdCB3ZSB3YW50LlxuICAvLyBUaGUgVUkgcmVzb2x2ZXMgd2hlbiBpdCBzd2l0Y2hlcyB0byB0aGUgZHluYW1pYyBkYXRhIHN0cmVhbVxuICAvLyAodmlhIHVzZURlZmVycmVkVmFsdWUoZHluYW1pYywgc3RhdGljKSkuXG4gIC8vXG4gIC8vIEhvd2V2ZXIsIHRoZSBGbGlnaHQgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGVycm9ycyBpZiB0aGUgc2VydmVyIGNsb3Nlc1xuICAvLyB0aGUgcmVzcG9uc2UgYmVmb3JlIGFsbCB0aGUgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQuIEFzIGEgY2hlYXQgdG8gd29ya1xuICAvLyBhcm91bmQgdGhpcywgd2Ugd3JhcCB0aGUgb3JpZ2luYWwgc3RyZWFtIGluIGEgbmV3IHN0cmVhbSB0aGF0IG5ldmVyIGNsb3NlcyxcbiAgLy8gYW5kIHRoZXJlZm9yZSBkb2Vzbid0IGVycm9yLlxuICBjb25zdCByZWFkZXIgPSBvcmlnaW5hbEZsaWdodFN0cmVhbS5nZXRSZWFkZXIoKVxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgLy8gUGFzcyB0byB0aGUgdGFyZ2V0IHN0cmVhbSBhbmQga2VlcCBjb25zdW1pbmcgdGhlIEZsaWdodCByZXNwb25zZVxuICAgICAgICAgIC8vIGZyb20gdGhlIHNlcnZlci5cbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgc2VydmVyIHN0cmVhbSBoYXMgY2xvc2VkLiBFeGl0LCBidXQgaW50ZW50aW9uYWxseSBkbyBub3QgY2xvc2VcbiAgICAgICAgLy8gdGhlIHRhcmdldCBzdHJlYW0uXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlRmV0Y2giLCJjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtIiwiZmV0Y2hTZXJ2ZXJSZXNwb25zZSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIiLCJkb01wYU5hdmlnYXRpb24iLCJ1cmwiLCJmbGlnaHREYXRhIiwidXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIiwiVVJMIiwibG9jYXRpb24iLCJvcmlnaW4iLCJ0b1N0cmluZyIsImNhbm9uaWNhbFVybCIsInVuZGVmaW5lZCIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInByZXJlbmRlcmVkIiwicG9zdHBvbmVkIiwic3RhbGVUaW1lIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImFib3J0Iiwib3B0aW9ucyIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsInByZWZldGNoS2luZCIsImhlYWRlcnMiLCJSU0NfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIiLCJwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0IiwiaXNIbXJSZWZyZXNoIiwiUHJlZmV0Y2hLaW5kIiwiQVVUTyIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIk5FWFRfSE1SX1JFRlJFU0hfSEVBREVSIiwiTkVYVF9VUkwiLCJyZXMiLCJmZXRjaFByaW9yaXR5IiwiVEVNUE9SQVJZIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJwYXRobmFtZSIsImVuZHNXaXRoIiwic2lnbmFsIiwicmVzcG9uc2VVcmwiLCJyZWRpcmVjdGVkIiwiY29udGVudFR5cGUiLCJnZXQiLCJpbnRlcmNlcHRpb24iLCJpbmNsdWRlcyIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsInN0YWxlVGltZUhlYWRlclNlY29uZHMiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsInBhcnNlSW50IiwiaXNGbGlnaHRSZXNwb25zZSIsInN0YXJ0c1dpdGgiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIm9rIiwiYm9keSIsImhhc2giLCJUVVJCT1BBQ0siLCJyZXF1aXJlIiwid2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlIiwiZmxpZ2h0U3RyZWFtIiwiY3JlYXRlVW5jbG9zaW5nUHJlZmV0Y2hTdHJlYW0iLCJyZXNwb25zZSIsImdldEFwcEJ1aWxkSWQiLCJiIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsImYiLCJTIiwiZXJyIiwiYWJvcnRlZCIsImNvbnNvbGUiLCJlcnJvciIsIl9fTkVYVF9URVNUX01PREUiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJmZXRjaE9wdGlvbnMiLCJjcmVkZW50aWFscyIsInByaW9yaXR5IiwiZmV0Y2hVcmwiLCJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsImJyb3dzZXJSZXNwb25zZSIsImZldGNoIiwiX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTIiwiTUFYX1JFRElSRUNUUyIsIm4iLCJzZWFyY2hQYXJhbXMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsImRlbGV0ZSIsInJzY1Jlc3BvbnNlIiwiaHJlZiIsInN0YXR1cyIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwib3JpZ2luYWxGbGlnaHRTdHJlYW0iLCJyZWFkZXIiLCJnZXRSZWFkZXIiLCJSZWFkYWJsZVN0cmVhbSIsInB1bGwiLCJjb250cm9sbGVyIiwiZG9uZSIsInZhbHVlIiwicmVhZCIsImVucXVldWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js": /*!***********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js ***! \***********************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSegmentValue\", ({\n enumerable: true,\n get: function() {\n return getSegmentValue;\n }\n}));\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-segment-value.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2dldC1zZWdtZW50LXZhbHVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBRWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxnQkFBZ0JDLE9BQWdCO0lBQzlDLE9BQU9DLE1BQU1DLE9BQU8sQ0FBQ0YsV0FBV0EsT0FBTyxDQUFDLEVBQUUsR0FBR0E7QUFDL0MiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccm91dGVyLXJlZHVjZXJcXHJlZHVjZXJzXFxnZXQtc2VnbWVudC12YWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlZ21lbnRWYWx1ZShzZWdtZW50OiBTZWdtZW50KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHNlZ21lbnQpID8gc2VnbWVudFsxXSA6IHNlZ21lbnRcbn1cbiJdLCJuYW1lcyI6WyJnZXRTZWdtZW50VmFsdWUiLCJzZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js": /*!********************************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js ***! \********************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasInterceptionRouteInCurrentTree\", ({\n enumerable: true,\n get: function() {\n return hasInterceptionRouteInCurrentTree;\n }\n}));\nconst _interceptionroutes = __webpack_require__(/*! ../../../../shared/lib/router/utils/interception-routes */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction hasInterceptionRouteInCurrentTree(param) {\n let [segment, parallelRoutes] = param;\n // If we have a dynamic segment, it's marked as an interception route by the presence of the `i` suffix.\n if (Array.isArray(segment) && (segment[2] === 'di' || segment[2] === 'ci')) {\n return true;\n }\n // If segment is not an array, apply the existing string-based check\n if (typeof segment === 'string' && (0, _interceptionroutes.isInterceptionRouteAppPath)(segment)) {\n return true;\n }\n // Iterate through parallelRoutes if they exist\n if (parallelRoutes) {\n for(const key in parallelRoutes){\n if (hasInterceptionRouteInCurrentTree(parallelRoutes[key])) {\n return true;\n }\n }\n }\n return false;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-interception-route-in-current-tree.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlLmpzIiwibWFwcGluZ3MiOiI7Ozs7cUVBR2dCQTs7O2VBQUFBOzs7Z0RBRjJCO0FBRXBDLFNBQVNBLGtDQUFrQyxLQUc5QjtJQUg4QixLQUNoREMsU0FDQUMsZUFDa0IsR0FIOEI7SUFJaEQsd0dBQXdHO0lBQ3hHLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ0gsWUFBYUEsQ0FBQUEsT0FBTyxDQUFDLEVBQUUsS0FBSyxRQUFRQSxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUcsRUFBSTtRQUMxRSxPQUFPO0lBQ1Q7SUFFQSxvRUFBb0U7SUFDcEUsSUFBSSxPQUFPQSxZQUFZLFlBQVlJLENBQUFBLEdBQUFBLG9CQUFBQSwwQkFBQUEsRUFBMkJKLFVBQVU7UUFDdEUsT0FBTztJQUNUO0lBRUEsK0NBQStDO0lBQy9DLElBQUlDLGdCQUFnQjtRQUNsQixJQUFLLE1BQU1JLE9BQU9KLGVBQWdCO1lBQ2hDLElBQUlGLGtDQUFrQ0UsY0FBYyxDQUFDSSxJQUFJLEdBQUc7Z0JBQzFELE9BQU87WUFDVDtRQUNGO0lBQ0Y7SUFFQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xccm91dGVyLXJlZHVjZXJcXHJlZHVjZXJzXFxoYXMtaW50ZXJjZXB0aW9uLXJvdXRlLWluLWN1cnJlbnQtdHJlZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUoW1xuICBzZWdtZW50LFxuICBwYXJhbGxlbFJvdXRlcyxcbl06IEZsaWdodFJvdXRlclN0YXRlKTogYm9vbGVhbiB7XG4gIC8vIElmIHdlIGhhdmUgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgbWFya2VkIGFzIGFuIGludGVyY2VwdGlvbiByb3V0ZSBieSB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBpYCBzdWZmaXguXG4gIGlmIChBcnJheS5pc0FycmF5KHNlZ21lbnQpICYmIChzZWdtZW50WzJdID09PSAnZGknIHx8IHNlZ21lbnRbMl0gPT09ICdjaScpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIElmIHNlZ21lbnQgaXMgbm90IGFuIGFycmF5LCBhcHBseSB0aGUgZXhpc3Rpbmcgc3RyaW5nLWJhc2VkIGNoZWNrXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycgJiYgaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgoc2VnbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIHBhcmFsbGVsUm91dGVzIGlmIHRoZXkgZXhpc3RcbiAgaWYgKHBhcmFsbGVsUm91dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgIGlmIChoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUocGFyYWxsZWxSb3V0ZXNba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdLCJuYW1lcyI6WyJoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aCIsImtleSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js ***! \*****************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_HMR_REFRESH: function() {\n return ACTION_HMR_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_PREFETCH: function() {\n return ACTION_PREFETCH;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n PrefetchCacheEntryStatus: function() {\n return PrefetchCacheEntryStatus;\n },\n PrefetchKind: function() {\n return PrefetchKind;\n }\n});\nconst ACTION_REFRESH = 'refresh';\nconst ACTION_NAVIGATE = 'navigate';\nconst ACTION_RESTORE = 'restore';\nconst ACTION_SERVER_PATCH = 'server-patch';\nconst ACTION_PREFETCH = 'prefetch';\nconst ACTION_HMR_REFRESH = 'hmr-refresh';\nconst ACTION_SERVER_ACTION = 'server-action';\nvar PrefetchKind = /*#__PURE__*/ function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n PrefetchKind[\"TEMPORARY\"] = \"temporary\";\n return PrefetchKind;\n}({});\nvar PrefetchCacheEntryStatus = /*#__PURE__*/ function(PrefetchCacheEntryStatus) {\n PrefetchCacheEntryStatus[\"fresh\"] = \"fresh\";\n PrefetchCacheEntryStatus[\"reusable\"] = \"reusable\";\n PrefetchCacheEntryStatus[\"expired\"] = \"expired\";\n PrefetchCacheEntryStatus[\"stale\"] = \"stale\";\n return PrefetchCacheEntryStatus;\n}({});\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router-reducer-types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVlhQSxrQkFBa0I7ZUFBbEJBOztJQUpBQyxlQUFlO2VBQWZBOztJQUdBQyxlQUFlO2VBQWZBOztJQUpBQyxjQUFjO2VBQWRBOztJQUVBQyxjQUFjO2VBQWRBOztJQUlBQyxvQkFBb0I7ZUFBcEJBOztJQUhBQyxtQkFBbUI7ZUFBbkJBOztJQXlNREMsd0JBQXdCO2VBQXhCQTs7SUFoRUFDLFlBQVk7ZUFBWkE7OztBQTVJTCxNQUFNTCxpQkFBaUI7QUFDdkIsTUFBTUYsa0JBQWtCO0FBQ3hCLE1BQU1HLGlCQUFpQjtBQUN2QixNQUFNRSxzQkFBc0I7QUFDNUIsTUFBTUosa0JBQWtCO0FBQ3hCLE1BQU1GLHFCQUFxQjtBQUMzQixNQUFNSyx1QkFBdUI7QUFzSTdCLElBQUtHLGVBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLFlBQUFBOzs7O1dBQUFBOztBQWdFTCxJQUFLRCwyQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsd0JBQUFBOzs7OztXQUFBQSIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxyb3V0ZXItcmVkdWNlclxccm91dGVyLXJlZHVjZXItdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHtcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFRlJFU0ggPSAncmVmcmVzaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fTkFWSUdBVEUgPSAnbmF2aWdhdGUnXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFU1RPUkUgPSAncmVzdG9yZSdcbmV4cG9ydCBjb25zdCBBQ1RJT05fU0VSVkVSX1BBVENIID0gJ3NlcnZlci1wYXRjaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fUFJFRkVUQ0ggPSAncHJlZmV0Y2gnXG5leHBvcnQgY29uc3QgQUNUSU9OX0hNUl9SRUZSRVNIID0gJ2htci1yZWZyZXNoJ1xuZXhwb3J0IGNvbnN0IEFDVElPTl9TRVJWRVJfQUNUSU9OID0gJ3NlcnZlci1hY3Rpb24nXG5cbmV4cG9ydCB0eXBlIFJvdXRlckNoYW5nZUJ5U2VydmVyUmVzcG9uc2UgPSAoe1xuICBuYXZpZ2F0ZWRBdCxcbiAgcHJldmlvdXNUcmVlLFxuICBzZXJ2ZXJSZXNwb25zZSxcbn06IHtcbiAgbmF2aWdhdGVkQXQ6IG51bWJlclxuICBwcmV2aW91c1RyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIHNlcnZlclJlc3BvbnNlOiBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0XG59KSA9PiB2b2lkXG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZSB7XG4gIG1wYU5hdmlnYXRpb24/OiBib29sZWFuXG4gIHBhdGNoZWRUcmVlPzogRmxpZ2h0Um91dGVyU3RhdGVcbiAgY2Fub25pY2FsVXJsPzogc3RyaW5nXG4gIHNjcm9sbGFibGVTZWdtZW50cz86IEZsaWdodFNlZ21lbnRQYXRoW11cbiAgcGVuZGluZ1B1c2g/OiBib29sZWFuXG4gIGNhY2hlPzogQ2FjaGVOb2RlXG4gIHByZWZldGNoQ2FjaGU/OiBBcHBSb3V0ZXJTdGF0ZVsncHJlZmV0Y2hDYWNoZSddXG4gIGhhc2hGcmFnbWVudD86IHN0cmluZ1xuICBzaG91bGRTY3JvbGw/OiBib29sZWFuXG4gIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlPzogYm9vbGVhblxuICBvbmx5SGFzaENoYW5nZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJBY3Rpb25NdXRhYmxlIGV4dGVuZHMgTXV0YWJsZSB7XG4gIGluRmxpZ2h0U2VydmVyQWN0aW9uPzogUHJvbWlzZTxhbnk+IHwgbnVsbFxufVxuXG4vKipcbiAqIFJlZnJlc2ggdHJpZ2dlcnMgYSByZWZyZXNoIG9mIHRoZSBmdWxsIHBhZ2UgZGF0YS5cbiAqIC0gZmV0Y2hlcyB0aGUgRmxpZ2h0IGRhdGEgYW5kIGZpbGxzIHJzYyBhdCB0aGUgcm9vdCBvZiB0aGUgY2FjaGUuXG4gKiAtIFRoZSByb3V0ZXIgc3RhdGUgaXMgdXBkYXRlZCBhdCB0aGUgcm9vdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZyZXNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9SRUZSRVNIXG4gIG9yaWdpbjogTG9jYXRpb25bJ29yaWdpbiddXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG1yUmVmcmVzaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fSE1SX1JFRlJFU0hcbiAgb3JpZ2luOiBMb2NhdGlvblsnb3JpZ2luJ11cbn1cblxuZXhwb3J0IHR5cGUgU2VydmVyQWN0aW9uRGlzcGF0Y2hlciA9IChcbiAgYXJnczogT21pdDxcbiAgICBTZXJ2ZXJBY3Rpb25BY3Rpb24sXG4gICAgJ3R5cGUnIHwgJ211dGFibGUnIHwgJ25hdmlnYXRlJyB8ICdjaGFuZ2VCeVNlcnZlclJlc3BvbnNlJyB8ICdjYWNoZSdcbiAgPlxuKSA9PiB2b2lkXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyQWN0aW9uQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9TRVJWRVJfQUNUSU9OXG4gIGFjdGlvbklkOiBzdHJpbmdcbiAgYWN0aW9uQXJnczogYW55W11cbiAgcmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkXG59XG5cbi8qKlxuICogTmF2aWdhdGUgdHJpZ2dlcnMgYSBuYXZpZ2F0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuIEl0IHN1cHBvcnRzIHR3byB0eXBlczogYHB1c2hgIGFuZCBgcmVwbGFjZWAuXG4gKlxuICogYG5hdmlnYXRlVHlwZWA6XG4gKiAtIGBwdXNoYCAtIHB1c2hlcyBhIG5ldyBoaXN0b3J5IGVudHJ5IGluIHRoZSBicm93c2VyIGhpc3RvcnlcbiAqIC0gYHJlcGxhY2VgIC0gcmVwbGFjZXMgdGhlIGN1cnJlbnQgaGlzdG9yeSBlbnRyeSBpbiB0aGUgYnJvd3NlciBoaXN0b3J5XG4gKlxuICogTmF2aWdhdGUgaGFzIG11bHRpcGxlIGNhY2hlIGhldXJpc3RpY3M6XG4gKiAtIHBhZ2Ugd2FzIHByZWZldGNoZWRcbiAqICAtIEFwcGx5IHJvdXRlciBzdGF0ZSB0cmVlIGZyb20gcHJlZmV0Y2hcbiAqICAtIEFwcGx5IEZsaWdodCBkYXRhIGZyb20gcHJlZmV0Y2ggdG8gdGhlIGNhY2hlXG4gKiAgLSBJZiBGbGlnaHQgZGF0YSBpcyBhIHN0cmluZywgaXQncyBhIHJlZGlyZWN0IGFuZCB0aGUgc3RhdGUgaXMgdXBkYXRlZCB0byB0cmlnZ2VyIGEgcmVkaXJlY3RcbiAqICAtIENoZWNrIGlmIGhhcmQgbmF2aWdhdGlvbiBpcyBuZWVkZWRcbiAqICAgIC0gSGFyZCBuYXZpZ2F0aW9uIGhhcHBlbnMgd2hlbiBhIGR5bmFtaWMgcGFyYW1ldGVyIGJlbG93IHRoZSBjb21tb24gbGF5b3V0IGNoYW5nZWRcbiAqICAgIC0gV2hlbiBoYXJkIG5hdmlnYXRpb24gaXMgbmVlZGVkIHRoZSBjYWNoZSBpcyBpbnZhbGlkYXRlZCBiZWxvdyB0aGUgZmxpZ2h0U2VnbWVudFBhdGhcbiAqICAgIC0gVGhlIG1pc3NpbmcgY2FjaGUgbm9kZXMgb2YgdGhlIHBhZ2Ugd2lsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgYW5kIHRyaWdnZXIgdGhlIFNFUlZFUl9QQVRDSCBhY3Rpb25cbiAqICAtIElmIGhhcmQgbmF2aWdhdGlvbiBpcyBub3QgbmVlZGVkXG4gKiAgICAtIFRoZSBjYWNoZSBpcyByZXVzZWRcbiAqICAgIC0gSWYgYW55IGNhY2hlIG5vZGVzIGFyZSBtaXNzaW5nIHRoZXknbGwgYmUgZmV0Y2hlZCBpbiBsYXlvdXQtcm91dGVyIGFuZCB0cmlnZ2VyIHRoZSBTRVJWRVJfUEFUQ0ggYWN0aW9uXG4gKiAtIHBhZ2Ugd2FzIG5vdCBwcmVmZXRjaGVkXG4gKiAgLSBUaGUgbmF2aWdhdGUgd2FzIGNhbGxlZCBmcm9tIGBuZXh0L3JvdXRlcmAgKGByb3V0ZXIucHVzaCgpYCAvIGByb3V0ZXIucmVwbGFjZSgpYCkgLyBgbmV4dC9saW5rYCB3aXRob3V0IHByZWZldGNoZWQgZGF0YSBhdmFpbGFibGUgKGUuZy4gdGhlIHByZWZldGNoIGRpZG4ndCBjb21lIGJhY2sgZnJvbSB0aGUgc2VydmVyIGJlZm9yZSBjbGlja2luZyB0aGUgbGluaylcbiAqICAgIC0gRmxpZ2h0IGRhdGEgaXMgZmV0Y2hlZCBpbiB0aGUgcmVkdWNlciAoc3VzcGVuZHMgdGhlIHJlZHVjZXIpXG4gKiAgICAtIFJvdXRlciBzdGF0ZSB0cmVlIGlzIGNyZWF0ZWQgYmFzZWQgb24gRmxpZ2h0IGRhdGFcbiAqICAgIC0gQ2FjaGUgaXMgZmlsbGVkIGJhc2VkIG9uIHRoZSBGbGlnaHQgZGF0YVxuICpcbiAqIEFib3ZlIHN0ZXBzIGV4cGxhaW4gMyBjYXNlczpcbiAqIC0gYHNvZnRgIC0gUmV1c2VzIHRoZSBleGlzdGluZyBjYWNoZSBhbmQgZmV0Y2hlcyBtaXNzaW5nIG5vZGVzIGluIGxheW91dC1yb3V0ZXIuXG4gKiAtIGBoYXJkYCAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgd2hlcmUgY2FjaGUgbm9kZXMgYXJlIHJlbW92ZWQgYmVsb3cgdGhlIGNvbW1vbiBsYXlvdXQgYW5kIGZldGNoZXMgbWlzc2luZyBub2RlcyBpbiBsYXlvdXQtcm91dGVyLlxuICogLSBgb3B0aW1pc3RpY2AgKGV4cGxpY2l0IG5vIHByZWZldGNoKSAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgYW5kIGtpY2tzIG9mZiB0aGUgZGF0YSBmZXRjaCBpbiB0aGUgcmVkdWNlci4gVGhlIGRhdGEgZmV0Y2ggaXMgYXdhaXRlZCBpbiB0aGUgbGF5b3V0LXJvdXRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0ZUFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fTkFWSUdBVEVcbiAgdXJsOiBVUkxcbiAgaXNFeHRlcm5hbFVybDogYm9vbGVhblxuICBsb2NhdGlvblNlYXJjaDogTG9jYXRpb25bJ3NlYXJjaCddXG4gIG5hdmlnYXRlVHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnXG4gIHNob3VsZFNjcm9sbDogYm9vbGVhblxuICBhbGxvd0FsaWFzaW5nOiBib29sZWFuXG59XG5cbi8qKlxuICogUmVzdG9yZSBhcHBsaWVzIHRoZSBwcm92aWRlZCByb3V0ZXIgc3RhdGUuXG4gKiAtIFVzZWQgZm9yIGBwb3BzdGF0ZWAgKGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uKSB3aGVyZSBhIGtub3duIHJvdXRlciBzdGF0ZSBoYXMgdG8gYmUgYXBwbGllZC5cbiAqIC0gQWxzbyB1c2VkIHdoZW4gc3luY2luZyB0aGUgcm91dGVyIHN0YXRlIHdpdGggYHB1c2hTdGF0ZWAvYHJlcGxhY2VTdGF0ZWAgY2FsbHMuXG4gKiAtIFJvdXRlciBzdGF0ZSBpcyBhcHBsaWVkIGFzLWlzIGZyb20gdGhlIGhpc3Rvcnkgc3RhdGUsIGlmIGF2YWlsYWJsZS5cbiAqIC0gSWYgdGhlIGhpc3Rvcnkgc3RhdGUgZG9lcyBub3QgY29udGFpbiB0aGUgcm91dGVyIHN0YXRlLCB0aGUgZXhpc3Rpbmcgcm91dGVyIHN0YXRlIGlzIHVzZWQuXG4gKiAtIElmIGFueSBjYWNoZSBub2RlIGlzIG1pc3NpbmcgaXQgd2lsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgZHVyaW5nIHJlbmRlcmluZyBhbmQgdGhlIHNlcnZlci1wYXRjaCBjYXNlLlxuICogLSBJZiBleGlzdGluZyBjYWNoZSBub2RlcyBtYXRjaCB0aGVzZSBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN0b3JlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9SRVNUT1JFXG4gIHVybDogVVJMXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlIHwgdW5kZWZpbmVkXG59XG5cbi8qKlxuICogU2VydmVyLXBhdGNoIGFwcGxpZXMgdGhlIHByb3ZpZGVkIEZsaWdodCBkYXRhIHRvIHRoZSBjYWNoZSBhbmQgcm91dGVyIHRyZWUuXG4gKiAtIE9ubHkgdHJpZ2dlcmVkIGluIGxheW91dC1yb3V0ZXIuXG4gKiAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgYW5kIHJvdXRlciBzdGF0ZSB3aXRoIHRoZSBGbGlnaHQgZGF0YSBhcHBsaWVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclBhdGNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9TRVJWRVJfUEFUQ0hcbiAgbmF2aWdhdGVkQXQ6IG51bWJlclxuICBzZXJ2ZXJSZXNwb25zZTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdFxuICBwcmV2aW91c1RyZWU6IEZsaWdodFJvdXRlclN0YXRlXG59XG5cbi8qKlxuICogUHJlZmV0Y2hLaW5kIGRlZmluZXMgdGhlIHR5cGUgb2YgcHJlZmV0Y2hpbmcgdGhhdCBzaG91bGQgYmUgZG9uZS5cbiAqIC0gYGF1dG9gIC0gaWYgdGhlIHBhZ2UgaXMgZHluYW1pYywgcHJlZmV0Y2ggdGhlIHBhZ2UgZGF0YSBwYXJ0aWFsbHksIGlmIHN0YXRpYyBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIGZ1bGx5LlxuICogLSBgZnVsbGAgLSBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIGZ1bGx5LlxuICogLSBgdGVtcG9yYXJ5YCAtIGEgdGVtcG9yYXJ5IHByZWZldGNoIGVudHJ5IGlzIGFkZGVkIHRvIHRoZSBjYWNoZSwgdGhpcyBpcyB1c2VkIHdoZW4gcHJlZmV0Y2g9e2ZhbHNlfSBpcyB1c2VkIGluIG5leHQvbGluayBvciB3aGVuIHlvdSBwdXNoIGEgcm91dGUgcHJvZ3JhbW1hdGljYWxseS5cbiAqL1xuXG5leHBvcnQgZW51bSBQcmVmZXRjaEtpbmQge1xuICBBVVRPID0gJ2F1dG8nLFxuICBGVUxMID0gJ2Z1bGwnLFxuICBURU1QT1JBUlkgPSAndGVtcG9yYXJ5Jyxcbn1cblxuLyoqXG4gKiBQcmVmZXRjaCBhZGRzIHRoZSBwcm92aWRlZCBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBDcmVhdGVzIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBiYXNlZCBvbiB0aGUgcGF0Y2ggaW4gRmxpZ2h0RGF0YVxuICogLSBBZGRzIHRoZSBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBJbiBBQ1RJT05fTkFWSUdBVEUgdGhlIHByZWZldGNoIGNhY2hlIGlzIGNoZWNrZWQgYW5kIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBhbmQgRmxpZ2h0RGF0YSBhcmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVmZXRjaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fUFJFRkVUQ0hcbiAgdXJsOiBVUkxcbiAga2luZDogUHJlZmV0Y2hLaW5kXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaFJlZiB7XG4gIC8qKlxuICAgKiBJZiB0aGUgYXBwLXJvdXRlciBzaG91bGQgcHVzaCBhIG5ldyBoaXN0b3J5IGVudHJ5IGluIGFwcC1yb3V0ZXIncyB1c2VFZmZlY3QoKVxuICAgKi9cbiAgcGVuZGluZ1B1c2g6IGJvb2xlYW5cbiAgLyoqXG4gICAqIE11bHRpLXBhZ2UgbmF2aWdhdGlvbiB0aHJvdWdoIGxvY2F0aW9uLmhyZWYuXG4gICAqL1xuICBtcGFOYXZpZ2F0aW9uOiBib29sZWFuXG4gIC8qKlxuICAgKiBTa2lwIGFwcGx5aW5nIHRoZSByb3V0ZXIgc3RhdGUgdG8gdGhlIGJyb3dzZXIgaGlzdG9yeSBzdGF0ZS5cbiAgICovXG4gIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzQW5kU2Nyb2xsUmVmID0ge1xuICAvKipcbiAgICogSWYgZm9jdXMgYW5kIHNjcm9sbCBzaG91bGQgYmUgc2V0IGluIHRoZSBsYXlvdXQtcm91dGVyJ3MgdXNlRWZmZWN0KClcbiAgICovXG4gIGFwcGx5OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgaGFzaCBmcmFnbWVudCB0aGF0IHNob3VsZCBiZSBzY3JvbGxlZCB0by5cbiAgICovXG4gIGhhc2hGcmFnbWVudDogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogVGhlIHBhdGhzIG9mIHRoZSBzZWdtZW50cyB0aGF0IHNob3VsZCBiZSBmb2N1c2VkLlxuICAgKi9cbiAgc2VnbWVudFBhdGhzOiBGbGlnaHRTZWdtZW50UGF0aFtdXG4gIC8qKlxuICAgKiBJZiBvbmx5IHRoZSBVUkxzIGhhc2ggZnJhZ21lbnQgY2hhbmdlZFxuICAgKi9cbiAgb25seUhhc2hDaGFuZ2U6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUHJlZmV0Y2hDYWNoZUVudHJ5ID0ge1xuICB0cmVlQXRUaW1lT2ZQcmVmZXRjaDogRmxpZ2h0Um91dGVyU3RhdGVcbiAgZGF0YTogUHJvbWlzZTxGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0PlxuICBraW5kOiBQcmVmZXRjaEtpbmRcbiAgcHJlZmV0Y2hUaW1lOiBudW1iZXJcbiAgc3RhbGVUaW1lOiBudW1iZXJcbiAgbGFzdFVzZWRUaW1lOiBudW1iZXIgfCBudWxsXG4gIGtleTogc3RyaW5nXG4gIHN0YXR1czogUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzXG4gIHVybDogVVJMXG59XG5cbmV4cG9ydCBlbnVtIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyB7XG4gIGZyZXNoID0gJ2ZyZXNoJyxcbiAgcmV1c2FibGUgPSAncmV1c2FibGUnLFxuICBleHBpcmVkID0gJ2V4cGlyZWQnLFxuICBzdGFsZSA9ICdzdGFsZScsXG59XG5cbi8qKlxuICogSGFuZGxlcyBrZWVwaW5nIHRoZSBzdGF0ZSBvZiBhcHAtcm91dGVyLlxuICovXG5leHBvcnQgdHlwZSBBcHBSb3V0ZXJTdGF0ZSA9IHtcbiAgLyoqXG4gICAqIFRoZSByb3V0ZXIgc3RhdGUsIHRoaXMgaXMgd3JpdHRlbiBpbnRvIHRoZSBoaXN0b3J5IHN0YXRlIGluIGFwcC1yb3V0ZXIgdXNpbmcgcmVwbGFjZVN0YXRlL3B1c2hTdGF0ZS5cbiAgICogLSBIYXMgdG8gYmUgc2VyaWFsaXphYmxlIGFzIGl0IGlzIHdyaXR0ZW4gaW50byB0aGUgaGlzdG9yeSBzdGF0ZS5cbiAgICogLSBIb2xkcyB3aGljaCBzZWdtZW50cyBhbmQgcGFyYWxsZWwgcm91dGVzIGFyZSBzaG93biBvbiB0aGUgc2NyZWVuLlxuICAgKi9cbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBob2xkcyBSZWFjdCBub2RlcyBmb3IgZXZlcnkgc2VnbWVudCB0aGF0IGlzIHNob3duIG9uIHNjcmVlbiBhcyB3ZWxsIGFzIHByZXZpb3VzbHkgc2hvd24gc2VnbWVudHMuXG4gICAqIEl0IGFsc28gaG9sZHMgaW4tcHJvZ3Jlc3MgZGF0YSByZXF1ZXN0cy5cbiAgICogUHJlZmV0Y2hlZCBkYXRhIGlzIHN0b3JlZCBzZXBhcmF0ZWx5IGluIGBwcmVmZXRjaENhY2hlYCwgdGhhdCBpcyBhcHBsaWVkIGR1cmluZyBBQ1RJT05fTkFWSUdBVEUuXG4gICAqL1xuICBjYWNoZTogQ2FjaGVOb2RlXG4gIC8qKlxuICAgKiBDYWNoZSB0aGF0IGhvbGRzIHByZWZldGNoZWQgRmxpZ2h0IHJlc3BvbnNlcyBrZXllZCBieSB1cmwuXG4gICAqL1xuICBwcmVmZXRjaENhY2hlOiBNYXA8c3RyaW5nLCBQcmVmZXRjaENhY2hlRW50cnk+XG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSB1cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIG5ldyBoaXN0b3J5IGVudHJ5IGFuZCBpZiB0aGUgbmF2aWdhdGlvbiBoYXMgdG8gdHJpZ2dlciBhIGJyb3dzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIHB1c2hSZWY6IFB1c2hSZWZcbiAgLyoqXG4gICAqIERlY2lkZXMgaWYgdGhlIHVwZGF0ZSBzaG91bGQgYXBwbHkgc2Nyb2xsIGFuZCBmb2N1cyBtYW5hZ2VtZW50LlxuICAgKi9cbiAgZm9jdXNBbmRTY3JvbGxSZWY6IEZvY3VzQW5kU2Nyb2xsUmVmXG4gIC8qKlxuICAgKiBUaGUgY2Fub25pY2FsIHVybCB0aGF0IGlzIHB1c2hlZC9yZXBsYWNlZC5cbiAgICogLSBUaGlzIGlzIHRoZSB1cmwgeW91IHNlZSBpbiB0aGUgYnJvd3Nlci5cbiAgICovXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBcInVybFwiIHJlcHJlc2VudGluZyB0aGUgVUkgc3RhdGUsIHdoaWNoIGlzIHVzZWQgZm9yIGludGVyY2VwdGluZyByb3V0ZXMuXG4gICAqL1xuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIFJlYWRvbmx5UmVkdWNlclN0YXRlID0gUmVhZG9ubHk8QXBwUm91dGVyU3RhdGU+XG5leHBvcnQgdHlwZSBSZWR1Y2VyU3RhdGUgPSBQcm9taXNlPEFwcFJvdXRlclN0YXRlPiB8IEFwcFJvdXRlclN0YXRlXG5leHBvcnQgdHlwZSBSZWR1Y2VyQWN0aW9ucyA9IFJlYWRvbmx5PFxuICB8IFJlZnJlc2hBY3Rpb25cbiAgfCBOYXZpZ2F0ZUFjdGlvblxuICB8IFJlc3RvcmVBY3Rpb25cbiAgfCBTZXJ2ZXJQYXRjaEFjdGlvblxuICB8IFByZWZldGNoQWN0aW9uXG4gIHwgSG1yUmVmcmVzaEFjdGlvblxuICB8IFNlcnZlckFjdGlvbkFjdGlvblxuPlxuIl0sIm5hbWVzIjpbIkFDVElPTl9ITVJfUkVGUkVTSCIsIkFDVElPTl9OQVZJR0FURSIsIkFDVElPTl9QUkVGRVRDSCIsIkFDVElPTl9SRUZSRVNIIiwiQUNUSU9OX1JFU1RPUkUiLCJBQ1RJT05fU0VSVkVSX0FDVElPTiIsIkFDVElPTl9TRVJWRVJfUEFUQ0giLCJQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMiLCJQcmVmZXRjaEtpbmQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js": /*!***************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js ***! \***************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n setCacheBustingSearchParam: function() {\n return setCacheBustingSearchParam;\n },\n setCacheBustingSearchParamWithHash: function() {\n return setCacheBustingSearchParamWithHash;\n }\n});\nconst _cachebustingsearchparam = __webpack_require__(/*! ../../../shared/lib/router/utils/cache-busting-search-param */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst setCacheBustingSearchParam = (url, headers)=>{\n const uniqueCacheKey = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)(headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER], headers[_approuterheaders.NEXT_URL]);\n setCacheBustingSearchParamWithHash(url, uniqueCacheKey);\n};\nconst setCacheBustingSearchParamWithHash = (url, hash)=>{\n /**\n * Note that we intentionally do not use `url.searchParams.set` here:\n *\n * const url = new URL('https://example.com/search?q=custom%20spacing');\n * url.searchParams.set('_rsc', 'abc123');\n * console.log(url.toString()); // Outputs: https://example.com/search?q=custom+spacing&_rsc=abc123\n * ^ <--- this is causing confusion\n * This is in fact intended based on https://url.spec.whatwg.org/#interface-urlsearchparams, but\n * we want to preserve the %20 as %20 if that's what the user passed in, hence the custom\n * logic below.\n */ const existingSearch = url.search;\n const rawQuery = existingSearch.startsWith('?') ? existingSearch.slice(1) : existingSearch;\n // Always remove any existing cache busting param and add a fresh one to ensure\n // we have the correct value based on current request headers\n const pairs = rawQuery.split('&').filter((pair)=>pair && !pair.startsWith(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY + \"=\"));\n if (hash.length > 0) {\n pairs.push(_approuterheaders.NEXT_RSC_UNION_QUERY + \"=\" + hash);\n } else {\n pairs.push(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY);\n }\n url.search = pairs.length ? \"?\" + pairs.join('&') : '';\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=set-cache-busting-search-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3NldC1jYWNoZS1idXN0aW5nLXNlYXJjaC1wYXJhbS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE0QmFBLDBCQUEwQjtlQUExQkE7O0lBNkJBQyxrQ0FBa0M7ZUFBbENBOzs7cURBdkRrQzs4Q0FPeEM7QUFtQkEsTUFBTUQsNkJBQTZCLENBQ3hDRSxLQUNBQztJQUVBLE1BQU1DLGlCQUFpQkMsQ0FBQUEsR0FBQUEseUJBQUFBLDhCQUFBQSxFQUNyQkYsT0FBTyxDQUFDRyxrQkFBQUEsMkJBQTJCLENBQUMsRUFDcENILE9BQU8sQ0FBQ0ksa0JBQUFBLG1DQUFtQyxDQUFDLEVBQzVDSixPQUFPLENBQUNLLGtCQUFBQSw2QkFBNkIsQ0FBQyxFQUN0Q0wsT0FBTyxDQUFDTSxrQkFBQUEsUUFBUSxDQUFDO0lBRW5CUixtQ0FBbUNDLEtBQUtFO0FBQzFDO0FBa0JPLE1BQU1ILHFDQUFxQyxDQUNoREMsS0FDQVE7SUFFQTs7Ozs7Ozs7OztHQVVDLEdBQ0QsTUFBTUMsaUJBQWlCVCxJQUFJVSxNQUFNO0lBQ2pDLE1BQU1DLFdBQVdGLGVBQWVHLFVBQVUsQ0FBQyxPQUN2Q0gsZUFBZUksS0FBSyxDQUFDLEtBQ3JCSjtJQUVKLCtFQUErRTtJQUMvRSw2REFBNkQ7SUFDN0QsTUFBTUssUUFBUUgsU0FDWEksS0FBSyxDQUFDLEtBQ05DLE1BQU0sQ0FBQyxDQUFDQyxPQUFTQSxRQUFRLENBQUNBLEtBQUtMLFVBQVUsQ0FBRSxLQUFFTSxrQkFBQUEsb0JBQW9CLEdBQUM7SUFFckUsSUFBSVYsS0FBS1csTUFBTSxHQUFHLEdBQUc7UUFDbkJMLE1BQU1NLElBQUksQ0FBSUYsa0JBQUFBLG9CQUFvQixHQUFDLE1BQUdWO0lBQ3hDLE9BQU87UUFDTE0sTUFBTU0sSUFBSSxDQUFFLEtBQUVGLGtCQUFBQSxvQkFBb0I7SUFDcEM7SUFDQWxCLElBQUlVLE1BQU0sR0FBR0ksTUFBTUssTUFBTSxHQUFJLE1BQUdMLE1BQU1PLElBQUksQ0FBQyxPQUFTO0FBQ3REIiwic291cmNlcyI6WyJEOlxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHJvdXRlci1yZWR1Y2VyXFxzZXQtY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IGNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2NhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtJ1xuaW1wb3J0IHtcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfVVJMLFxuICBORVhUX1JTQ19VTklPTl9RVUVSWSxcbn0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SGVhZGVycyB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuXG4vKipcbiAqIE11dGF0ZXMgdGhlIHByb3ZpZGVkIFVSTCBieSBhZGRpbmcgYSBjYWNoZS1idXN0aW5nIHNlYXJjaCBwYXJhbWV0ZXIgZm9yIENETnMgdGhhdCBkb24ndFxuICogc3VwcG9ydCBjdXN0b20gaGVhZGVycy4gVGhpcyBoZWxwcyBhdm9pZCBjYWNoaW5nIGNvbmZsaWN0cyBieSBtYWtpbmcgZWFjaCByZXF1ZXN0IHVuaXF1ZS5cbiAqXG4gKiBSYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZSBWYXJ5IGhlYWRlciB3aGljaCBzb21lIENETnMgaWdub3JlLCB3ZSBhcHBlbmQgYSBzZWFyY2ggcGFyYW1cbiAqIHRvIGNyZWF0ZSBhIHVuaXF1ZSBVUkwgdGhhdCBmb3JjZXMgYSBmcmVzaCByZXF1ZXN0LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBVUkwgYmVmb3JlOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MVxuICogVVJMIGFmdGVyOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjPWFiYzEyM1xuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXV0YXRlcyB0aGUgaW5wdXQgVVJMIGRpcmVjdGx5IGFuZCBkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcuXG4gKlxuICogVE9ETzogU2luY2Ugd2UgbmVlZCB0byB1c2UgYSBzZWFyY2ggcGFyYW0gYW55d2F5LCB3ZSBjb3VsZCBzaW1wbGlmeSBieSByZW1vdmluZyB0aGUgY3VzdG9tXG4gKiBoZWFkZXJzIGFwcHJvYWNoIGVudGlyZWx5IGFuZCBqdXN0IHVzZSBzZWFyY2ggcGFyYW1zLlxuICovXG5leHBvcnQgY29uc3Qgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0gPSAoXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVyc1xuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHVuaXF1ZUNhY2hlS2V5ID0gY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtKFxuICAgIGhlYWRlcnNbTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfVVJMXVxuICApXG4gIHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtV2l0aEhhc2godXJsLCB1bmlxdWVDYWNoZUtleSlcbn1cblxuLyoqXG4gKiBTZXRzIGEgY2FjaGUtYnVzdGluZyBzZWFyY2ggcGFyYW1ldGVyIG9uIGEgVVJMIHVzaW5nIGEgcHJvdmlkZWQgaGFzaCB2YWx1ZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBzYW1lIGxvZ2ljIGFzIGBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbWAgYnV0IGFjY2VwdHNcbiAqIGEgcHJlLWNvbXB1dGVkIGhhc2ggaW5zdGVhZCBvZiBjb21wdXRpbmcgaXQgZnJvbSBoZWFkZXJzLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBVUkwgYmVmb3JlOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MVxuICogaGFzaDogXCJhYmMxMjNcIlxuICogVVJMIGFmdGVyOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjPWFiYzEyM1xuICpcbiAqIElmIHRoZSBoYXNoIGlzIG51bGwsIHdlIHdpbGwgc2V0IGBfcnNjYCBzZWFyY2ggcGFyYW0gd2l0aG91dCBhIHZhbHVlLlxuICogTGlrZSB0aGlzOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBpbnB1dCBVUkwgZGlyZWN0bHkgYW5kIGRvZXMgbm90IHJldHVybiBhbnl0aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtV2l0aEhhc2ggPSAoXG4gIHVybDogVVJMLFxuICBoYXNoOiBzdHJpbmdcbik6IHZvaWQgPT4ge1xuICAvKipcbiAgICogTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZG8gbm90IHVzZSBgdXJsLnNlYXJjaFBhcmFtcy5zZXRgIGhlcmU6XG4gICAqXG4gICAqIGNvbnN0IHVybCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5jb20vc2VhcmNoP3E9Y3VzdG9tJTIwc3BhY2luZycpO1xuICAgKiB1cmwuc2VhcmNoUGFyYW1zLnNldCgnX3JzYycsICdhYmMxMjMnKTtcbiAgICogY29uc29sZS5sb2codXJsLnRvU3RyaW5nKCkpOyAvLyBPdXRwdXRzOiBodHRwczovL2V4YW1wbGUuY29tL3NlYXJjaD9xPWN1c3RvbStzcGFjaW5nJl9yc2M9YWJjMTIzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIDwtLS0gdGhpcyBpcyBjYXVzaW5nIGNvbmZ1c2lvblxuICAgKiBUaGlzIGlzIGluIGZhY3QgaW50ZW5kZWQgYmFzZWQgb24gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtdXJsc2VhcmNocGFyYW1zLCBidXRcbiAgICogd2Ugd2FudCB0byBwcmVzZXJ2ZSB0aGUgJTIwIGFzICUyMCBpZiB0aGF0J3Mgd2hhdCB0aGUgdXNlciBwYXNzZWQgaW4sIGhlbmNlIHRoZSBjdXN0b21cbiAgICogbG9naWMgYmVsb3cuXG4gICAqL1xuICBjb25zdCBleGlzdGluZ1NlYXJjaCA9IHVybC5zZWFyY2hcbiAgY29uc3QgcmF3UXVlcnkgPSBleGlzdGluZ1NlYXJjaC5zdGFydHNXaXRoKCc/JylcbiAgICA/IGV4aXN0aW5nU2VhcmNoLnNsaWNlKDEpXG4gICAgOiBleGlzdGluZ1NlYXJjaFxuXG4gIC8vIEFsd2F5cyByZW1vdmUgYW55IGV4aXN0aW5nIGNhY2hlIGJ1c3RpbmcgcGFyYW0gYW5kIGFkZCBhIGZyZXNoIG9uZSB0byBlbnN1cmVcbiAgLy8gd2UgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBiYXNlZCBvbiBjdXJyZW50IHJlcXVlc3QgaGVhZGVyc1xuICBjb25zdCBwYWlycyA9IHJhd1F1ZXJ5XG4gICAgLnNwbGl0KCcmJylcbiAgICAuZmlsdGVyKChwYWlyKSA9PiBwYWlyICYmICFwYWlyLnN0YXJ0c1dpdGgoYCR7TkVYVF9SU0NfVU5JT05fUVVFUll9PWApKVxuXG4gIGlmIChoYXNoLmxlbmd0aCA+IDApIHtcbiAgICBwYWlycy5wdXNoKGAke05FWFRfUlNDX1VOSU9OX1FVRVJZfT0ke2hhc2h9YClcbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGAke05FWFRfUlNDX1VOSU9OX1FVRVJZfWApXG4gIH1cbiAgdXJsLnNlYXJjaCA9IHBhaXJzLmxlbmd0aCA/IGA/JHtwYWlycy5qb2luKCcmJyl9YCA6ICcnXG59XG4iXSwibmFtZXMiOlsic2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0iLCJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbVdpdGhIYXNoIiwidXJsIiwiaGVhZGVycyIsInVuaXF1ZUNhY2hlS2V5IiwiY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsIk5FWFRfVVJMIiwiaGFzaCIsImV4aXN0aW5nU2VhcmNoIiwic2VhcmNoIiwicmF3UXVlcnkiLCJzdGFydHNXaXRoIiwic2xpY2UiLCJwYWlycyIsInNwbGl0IiwiZmlsdGVyIiwicGFpciIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwibGVuZ3RoIiwicHVzaCIsImpvaW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/client/components/static-generation-bailout.js ***! \*******************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n StaticGenBailoutError: function() {\n return StaticGenBailoutError;\n },\n isStaticGenBailoutError: function() {\n return isStaticGenBailoutError;\n }\n});\nconst NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nfunction isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLHFCQUFxQjtlQUFyQkE7O0lBSUdDLHVCQUF1QjtlQUF2QkE7OztBQU5oQixNQUFNQywwQkFBMEI7QUFFekIsTUFBTUYsOEJBQThCRzs7UUFBcEMscUJBQ1dDLElBQUFBLEdBQU9GOztBQUN6QjtBQUVPLFNBQVNELHdCQUNkSSxLQUFjO0lBRWQsSUFBSSxPQUFPQSxVQUFVLFlBQVlBLFVBQVUsUUFBUSxDQUFFLFdBQVVBLEtBQUFBLENBQUksRUFBSTtRQUNyRSxPQUFPO0lBQ1Q7SUFFQSxPQUFPQSxNQUFNRCxJQUFJLEtBQUtGO0FBQ3hCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFxzdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUID0gJ05FWFRfU1RBVElDX0dFTl9CQUlMT1VUJ1xuXG5leHBvcnQgY2xhc3MgU3RhdGljR2VuQmFpbG91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZSA9IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0dlbkJhaWxvdXRFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIFN0YXRpY0dlbkJhaWxvdXRFcnJvciB7XG4gIGlmICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8IGVycm9yID09PSBudWxsIHx8ICEoJ2NvZGUnIGluIGVycm9yKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGVycm9yLmNvZGUgPT09IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUXG59XG4iXSwibmFtZXMiOlsiU3RhdGljR2VuQmFpbG91dEVycm9yIiwiaXNTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJORVhUX1NUQVRJQ19HRU5fQkFJTE9VVCIsIkVycm9yIiwiY29kZSIsImVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/unauthorized.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/components/unauthorized.js ***! \******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unauthorized\", ({\n enumerable: true,\n get: function() {\n return unauthorized;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";401\";\nfunction unauthorized() {\n if (true) {\n throw Object.defineProperty(new Error(\"`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E411\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unauthorized.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VuYXV0aG9yaXplZC5qcyIsIm1hcHBpbmdzIjoiOzs7O2dEQXNCZ0JBOzs7ZUFBQUE7OztnREFuQlQ7QUFFUCxnQ0FBZ0M7QUFDaEM7Ozs7Ozs7Ozs7OztDQVlDLEdBRUQsTUFBTUMsU0FBVSxLQUFFQyxvQkFBQUEsOEJBQThCLEdBQUM7QUFFMUMsU0FBU0Y7SUFDZCxJQUFJLElBQWdELEVBQUU7UUFDcEQsTUFBTSxxQkFFTCxDQUZLLElBQUlNLE1BQ1AsZ0hBREc7bUJBQUE7d0JBQUE7MEJBQUE7UUFFTjtJQUNGO0lBRUEsNENBQTRDO0lBQzVDLE1BQU1DLFFBQVEscUJBQWlCLENBQWpCLElBQUlELE1BQU1MLFNBQVY7ZUFBQTtvQkFBQTtzQkFBQTtJQUFnQjtJQUM1Qk0sTUFBa0NDLE1BQU0sR0FBR1A7SUFDN0MsTUFBTU07QUFDUiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcdW5hdXRob3JpemVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSxcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcblxuLy8gVE9ETzogQWRkIGB1bmF1dGhvcml6ZWRgIGRvY3Ncbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlbmRlciB0aGUgW3VuYXV0aG9yaXplZC5qcyBmaWxlXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9maWxlLWNvbnZlbnRpb25zL3VuYXV0aG9yaXplZClcbiAqIHdpdGhpbiBhIHJvdXRlIHNlZ21lbnQgYXMgd2VsbCBhcyBpbmplY3QgYSB0YWcuXG4gKlxuICogYHVuYXV0aG9yaXplZCgpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVuYXV0aG9yaXplZGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91bmF1dGhvcml6ZWQpXG4gKi9cblxuY29uc3QgRElHRVNUID0gYCR7SFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTs0MDFgXG5cbmV4cG9ydCBmdW5jdGlvbiB1bmF1dGhvcml6ZWQoKTogbmV2ZXIge1xuICBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFxcYHVuYXV0aG9yaXplZCgpXFxgIGlzIGV4cGVyaW1lbnRhbCBhbmQgb25seSBhbGxvd2VkIHRvIGJlIHVzZWQgd2hlbiBcXGBleHBlcmltZW50YWwuYXV0aEludGVycnVwdHNcXGAgaXMgZW5hYmxlZC5gXG4gICAgKVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoRElHRVNUKSBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvclxuICA7KGVycm9yIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKS5kaWdlc3QgPSBESUdFU1RcbiAgdGhyb3cgZXJyb3Jcbn1cbiJdLCJuYW1lcyI6WyJ1bmF1dGhvcml6ZWQiLCJESUdFU1QiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0VYUEVSSU1FTlRBTF9BVVRIX0lOVEVSUlVQVFMiLCJFcnJvciIsImVycm9yIiwiZGlnZXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unauthorized.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unrecognized-action-error.js ***! \*******************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n UnrecognizedActionError: function() {\n return UnrecognizedActionError;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n }\n});\nclass UnrecognizedActionError extends Error {\n constructor(...args){\n super(...args);\n this.name = 'UnrecognizedActionError';\n }\n}\nfunction unstable_isUnrecognizedActionError(error) {\n return !!(error && typeof error === 'object' && error instanceof UnrecognizedActionError);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unrecognized-action-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VucmVjb2duaXplZC1hY3Rpb24tZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQWFBLHVCQUF1QjtlQUF2QkE7O0lBeUJHQyxrQ0FBa0M7ZUFBbENBOzs7QUF6QlQsTUFBTUQsZ0NBQWdDRTtJQUMzQ0MsWUFBWSxHQUFHQyxJQUF5QyxDQUFFO1FBQ3hELEtBQUssSUFBSUE7UUFDVCxJQUFJLENBQUNDLElBQUksR0FBRztJQUNkO0FBQ0Y7QUFvQk8sU0FBU0osbUNBQ2RLLEtBQWM7SUFFZCxPQUFPLENBQUMsQ0FDTkEsQ0FBQUEsU0FDQSxPQUFPQSxVQUFVLFlBQ2pCQSxpQkFBaUJOLHVCQUFBQSxDQUFzQjtBQUUzQyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRXJyb3I+KSB7XG4gICAgc3VwZXIoLi4uYXJncylcbiAgICB0aGlzLm5hbWUgPSAnVW5yZWNvZ25pemVkQWN0aW9uRXJyb3InXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgc2VydmVyIGFjdGlvbiBjYWxsIGZhaWxlZCBiZWNhdXNlIHRoZSBzZXJ2ZXIgYWN0aW9uIHdhcyBub3QgcmVjb2duaXplZCBieSB0aGUgc2VydmVyLlxuICogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgYXJlIG5vdCBmcm9tIHRoZSBzYW1lIGRlcGxveW1lbnQuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqIGBgYHRzXG4gKiB0cnkge1xuICogICBhd2FpdCBteVNlcnZlckFjdGlvbigpO1xuICogfSBjYXRjaCAoZXJyKSB7XG4gKiAgIGlmICh1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKGVycikpIHtcbiAqICAgICAvLyBUaGUgY2xpZW50IGlzIGZyb20gYSBkaWZmZXJlbnQgZGVwbG95bWVudCB0aGFuIHRoZSBzZXJ2ZXIuXG4gKiAgICAgLy8gUmVsb2FkaW5nIHRoZSBwYWdlIHdpbGwgZml4IHRoaXMgbWlzbWF0Y2guXG4gKiAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2UgYW5kIHRyeSBhZ2FpblwiKTtcbiAqICAgICByZXR1cm47XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3Ige1xuICByZXR1cm4gISEoXG4gICAgZXJyb3IgJiZcbiAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmXG4gICAgZXJyb3IgaW5zdGFuY2VvZiBVbnJlY29nbml6ZWRBY3Rpb25FcnJvclxuICApXG59XG4iXSwibmFtZXMiOlsiVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJ1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJuYW1lIiwiZXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unrecognized-action-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unresolved-thenable.js ***! \*************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("/**\n * Create a \"Thenable\" that does not resolve. This is used to suspend indefinitely when data is not available yet.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unresolvedThenable\", ({\n enumerable: true,\n get: function() {\n return unresolvedThenable;\n }\n}));\nconst unresolvedThenable = {\n then: ()=>{}\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unresolved-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VucmVzb2x2ZWQtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUM7Ozs7c0RBQ1lBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHFCQUFxQjtJQUNoQ0MsTUFBTSxLQUFPO0FBQ2YiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGNvbXBvbmVudHNcXHVucmVzb2x2ZWQtdGhlbmFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGUgYSBcIlRoZW5hYmxlXCIgdGhhdCBkb2VzIG5vdCByZXNvbHZlLiBUaGlzIGlzIHVzZWQgdG8gc3VzcGVuZCBpbmRlZmluaXRlbHkgd2hlbiBkYXRhIGlzIG5vdCBhdmFpbGFibGUgeWV0LlxuICovXG5leHBvcnQgY29uc3QgdW5yZXNvbHZlZFRoZW5hYmxlID0ge1xuICB0aGVuOiAoKSA9PiB7fSxcbn0gYXMgUHJvbWlzZUxpa2U8dm9pZD5cbiJdLCJuYW1lcyI6WyJ1bnJlc29sdmVkVGhlbmFibGUiLCJ0aGVuIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unresolved-thenable.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/unstable-rethrow.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst unstable_rethrow = true ? (__webpack_require__(/*! ./unstable-rethrow.server */ \"(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js\").unstable_rethrow) : 0;\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unstable-rethrow.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztDQU1DOzs7O29EQUNZQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxtQkFDWCxLQUE2QixHQUV2QkUsc0pBQ2dCLEdBRWhCQSxDQUNnQiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcY29tcG9uZW50c1xcdW5zdGFibGUtcmV0aHJvdy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gcmV0aHJvdyBpbnRlcm5hbCBOZXh0LmpzIGVycm9ycyBzbyB0aGF0IHRoZXkgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGZyYW1ld29yay5cbiAqIFdoZW4gd3JhcHBpbmcgYW4gQVBJIHRoYXQgdXNlcyBlcnJvcnMgdG8gaW50ZXJydXB0IGNvbnRyb2wgZmxvdywgeW91IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiBiZWZvcmUgeW91IGRvIGFueSBlcnJvciBoYW5kbGluZy5cbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXRocm93IHRoZSBlcnJvciBpZiBpdCBpcyBhIE5leHQuanMgZXJyb3Igc28gaXQgY2FuIGJlIGhhbmRsZWQsIG90aGVyd2lzZSBpdCB3aWxsIGRvIG5vdGhpbmcuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdW5zdGFibGVfcmV0aHJvd2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91bnN0YWJsZV9yZXRocm93KVxuICovXG5leHBvcnQgY29uc3QgdW5zdGFibGVfcmV0aHJvdyA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4vdW5zdGFibGUtcmV0aHJvdy5zZXJ2ZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3Vuc3RhYmxlLXJldGhyb3cuc2VydmVyJylcbiAgICAgICkudW5zdGFibGVfcmV0aHJvd1xuICAgIDogKFxuICAgICAgICByZXF1aXJlKCcuL3Vuc3RhYmxlLXJldGhyb3cuYnJvd3NlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vdW5zdGFibGUtcmV0aHJvdy5icm93c2VyJylcbiAgICAgICkudW5zdGFibGVfcmV0aHJvd1xuIl0sIm5hbWVzIjpbInVuc3RhYmxlX3JldGhyb3ciLCJ3aW5kb3ciLCJyZXF1aXJlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unstable-rethrow.server.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst _dynamicrenderingutils = __webpack_require__(/*! ../../server/dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _ispostpone = __webpack_require__(/*! ../../server/lib/router-utils/is-postpone */ \"(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../../server/app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _hooksservercontext = __webpack_require__(/*! ./hooks-server-context */ \"(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nfunction unstable_rethrow(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error) || (0, _bailouttocsr.isBailoutToCSRError)(error) || (0, _hooksservercontext.isDynamicServerError)(error) || (0, _dynamicrendering.isDynamicPostpone)(error) || (0, _ispostpone.isPostpone)(error) || (0, _dynamicrenderingutils.isHangingPromiseRejectionError)(error)) {\n throw error;\n }\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause);\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=unstable-rethrow.server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cuc2VydmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBT2dCQTs7O2VBQUFBOzs7bURBUCtCO3dDQUNwQjswQ0FDUzsrQ0FDRjs4Q0FDQTtnREFDRztBQUU5QixTQUFTQSxpQkFBaUJDLEtBQWM7SUFDN0MsSUFDRUMsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQkQsVUFDbEJFLENBQUFBLEdBQUFBLGNBQUFBLG1CQUFBQSxFQUFvQkYsVUFDcEJHLENBQUFBLEdBQUFBLG9CQUFBQSxvQkFBQUEsRUFBcUJILFVBQ3JCSSxDQUFBQSxHQUFBQSxrQkFBQUEsaUJBQUFBLEVBQWtCSixVQUNsQkssQ0FBQUEsR0FBQUEsWUFBQUEsVUFBQUEsRUFBV0wsVUFDWE0sQ0FBQUEsR0FBQUEsdUJBQUFBLDhCQUFBQSxFQUErQk4sUUFDL0I7UUFDQSxNQUFNQTtJQUNSO0lBRUEsSUFBSUEsaUJBQWlCTyxTQUFTLFdBQVdQLE9BQU87UUFDOUNELGlCQUFpQkMsTUFBTVEsS0FBSztJQUM5QjtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFx1bnN0YWJsZS1yZXRocm93LnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0hhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvZHluYW1pYy1yZW5kZXJpbmctdXRpbHMnXG5pbXBvcnQgeyBpc1Bvc3Rwb25lIH0gZnJvbSAnLi4vLi4vc2VydmVyL2xpYi9yb3V0ZXItdXRpbHMvaXMtcG9zdHBvbmUnXG5pbXBvcnQgeyBpc0JhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4vaXMtbmV4dC1yb3V0ZXItZXJyb3InXG5pbXBvcnQgeyBpc0R5bmFtaWNQb3N0cG9uZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nJ1xuaW1wb3J0IHsgaXNEeW5hbWljU2VydmVyRXJyb3IgfSBmcm9tICcuL2hvb2tzLXNlcnZlci1jb250ZXh0J1xuXG5leHBvcnQgZnVuY3Rpb24gdW5zdGFibGVfcmV0aHJvdyhlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICBpZiAoXG4gICAgaXNOZXh0Um91dGVyRXJyb3IoZXJyb3IpIHx8XG4gICAgaXNCYWlsb3V0VG9DU1JFcnJvcihlcnJvcikgfHxcbiAgICBpc0R5bmFtaWNTZXJ2ZXJFcnJvcihlcnJvcikgfHxcbiAgICBpc0R5bmFtaWNQb3N0cG9uZShlcnJvcikgfHxcbiAgICBpc1Bvc3Rwb25lKGVycm9yKSB8fFxuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcihlcnJvcilcbiAgKSB7XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICdjYXVzZScgaW4gZXJyb3IpIHtcbiAgICB1bnN0YWJsZV9yZXRocm93KGVycm9yLmNhdXNlKVxuICB9XG59XG4iXSwibmFtZXMiOlsidW5zdGFibGVfcmV0aHJvdyIsImVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiaXNEeW5hbWljU2VydmVyRXJyb3IiLCJpc0R5bmFtaWNQb3N0cG9uZSIsImlzUG9zdHBvbmUiLCJpc0hhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3IiLCJFcnJvciIsImNhdXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/unstable-rethrow.server.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/components/use-action-queue.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/use-action-queue.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dispatchAppRouterAction: function() {\n return dispatchAppRouterAction;\n },\n useActionQueue: function() {\n return useActionQueue;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js\");\n// The app router state lives outside of React, so we can import the dispatch\n// method directly wherever we need it, rather than passing it around via props\n// or context.\nlet dispatch = null;\nfunction dispatchAppRouterAction(action) {\n if (dispatch === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n dispatch(action);\n}\nfunction useActionQueue(actionQueue) {\n const [state, setState] = _react.default.useState(actionQueue.state);\n // Because of a known issue that requires to decode Flight streams inside the\n // render phase, we have to be a bit clever and assign the dispatch method to\n // a module-level variable upon initialization. The useState hook in this\n // module only exists to synchronize state that lives outside of React.\n // Ideally, what we'd do instead is pass the state as a prop to root.render;\n // this is conceptually how we're modeling the app router state, despite the\n // weird implementation details.\n if (true) {\n const { useAppDevRenderingIndicator } = __webpack_require__(/*! ../../next-devtools/userspace/use-app-dev-rendering-indicator */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\");\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const appDevRenderingIndicator = useAppDevRenderingIndicator();\n dispatch = (action)=>{\n appDevRenderingIndicator(()=>{\n actionQueue.dispatch(action, setState);\n });\n };\n } else {}\n return (0, _isthenable.isThenable)(state) ? (0, _react.use)(state) : state;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-action-queue.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWdCQSx1QkFBdUI7ZUFBdkJBOztJQVNBQyxjQUFjO2VBQWRBOzs7OzZFQXZCVzt3Q0FDQTtBQVEzQiw2RUFBNkU7QUFDN0UsK0VBQStFO0FBQy9FLGNBQWM7QUFDZCxJQUFJQyxXQUE0QztBQUV6QyxTQUFTRix3QkFBd0JHLE1BQXNCO0lBQzVELElBQUlELGFBQWEsTUFBTTtRQUNyQixNQUFNLHFCQUVMLENBRkssSUFBSUUsTUFDUiw0RUFESTttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFDQUYsU0FBU0M7QUFDWDtBQUVPLFNBQVNGLGVBQ2RJLFdBQWlDO0lBRWpDLE1BQU0sQ0FBQ0MsT0FBT0MsU0FBUyxHQUFHQyxPQUFBQSxPQUFLLENBQUNDLFFBQVEsQ0FBZUosWUFBWUMsS0FBSztJQUV4RSw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLHlFQUF5RTtJQUN6RSx1RUFBdUU7SUFDdkUsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSxnQ0FBZ0M7SUFDaEMsSUFBSUksSUFBb0IsRUFBbUI7UUFDekMsTUFBTSxFQUFFRywyQkFBMkIsRUFBRSxHQUNuQ0MsbUJBQU9BLENBQUMsZ0tBQStEO1FBQ3pFLHNEQUFzRDtRQUN0RCxNQUFNQywyQkFBMkJGO1FBRWpDWCxXQUFXLENBQUNDO1lBQ1ZZLHlCQUF5QjtnQkFDdkJWLFlBQVlILFFBQVEsQ0FBQ0MsUUFBUUk7WUFDL0I7UUFDRjtJQUNGLE9BQU8sRUFHTjtJQUVELE9BQU9TLENBQUFBLEdBQUFBLFlBQUFBLFVBQUFBLEVBQVdWLFNBQVNXLENBQUFBLEdBQUFBLE9BQUFBLEdBQUFBLEVBQUlYLFNBQVNBO0FBQzFDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxjb21wb25lbnRzXFx1c2UtYWN0aW9uLXF1ZXVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdCwgeyB1c2UgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGlzVGhlbmFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2lzLXRoZW5hYmxlJ1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSB9IGZyb20gJy4vYXBwLXJvdXRlci1pbnN0YW5jZSdcbmltcG9ydCB0eXBlIHtcbiAgQXBwUm91dGVyU3RhdGUsXG4gIFJlZHVjZXJBY3Rpb25zLFxuICBSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbi8vIFRoZSBhcHAgcm91dGVyIHN0YXRlIGxpdmVzIG91dHNpZGUgb2YgUmVhY3QsIHNvIHdlIGNhbiBpbXBvcnQgdGhlIGRpc3BhdGNoXG4vLyBtZXRob2QgZGlyZWN0bHkgd2hlcmV2ZXIgd2UgbmVlZCBpdCwgcmF0aGVyIHRoYW4gcGFzc2luZyBpdCBhcm91bmQgdmlhIHByb3BzXG4vLyBvciBjb250ZXh0LlxubGV0IGRpc3BhdGNoOiBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9ucz4gfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykge1xuICBpZiAoZGlzcGF0Y2ggPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnSW50ZXJuYWwgTmV4dC5qcyBlcnJvcjogUm91dGVyIGFjdGlvbiBkaXNwYXRjaGVkIGJlZm9yZSBpbml0aWFsaXphdGlvbi4nXG4gICAgKVxuICB9XG4gIGRpc3BhdGNoKGFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvblF1ZXVlKFxuICBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWVcbik6IEFwcFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZTxSZWR1Y2VyU3RhdGU+KGFjdGlvblF1ZXVlLnN0YXRlKVxuXG4gIC8vIEJlY2F1c2Ugb2YgYSBrbm93biBpc3N1ZSB0aGF0IHJlcXVpcmVzIHRvIGRlY29kZSBGbGlnaHQgc3RyZWFtcyBpbnNpZGUgdGhlXG4gIC8vIHJlbmRlciBwaGFzZSwgd2UgaGF2ZSB0byBiZSBhIGJpdCBjbGV2ZXIgYW5kIGFzc2lnbiB0aGUgZGlzcGF0Y2ggbWV0aG9kIHRvXG4gIC8vIGEgbW9kdWxlLWxldmVsIHZhcmlhYmxlIHVwb24gaW5pdGlhbGl6YXRpb24uIFRoZSB1c2VTdGF0ZSBob29rIGluIHRoaXNcbiAgLy8gbW9kdWxlIG9ubHkgZXhpc3RzIHRvIHN5bmNocm9uaXplIHN0YXRlIHRoYXQgbGl2ZXMgb3V0c2lkZSBvZiBSZWFjdC5cbiAgLy8gSWRlYWxseSwgd2hhdCB3ZSdkIGRvIGluc3RlYWQgaXMgcGFzcyB0aGUgc3RhdGUgYXMgYSBwcm9wIHRvIHJvb3QucmVuZGVyO1xuICAvLyB0aGlzIGlzIGNvbmNlcHR1YWxseSBob3cgd2UncmUgbW9kZWxpbmcgdGhlIGFwcCByb3V0ZXIgc3RhdGUsIGRlc3BpdGUgdGhlXG4gIC8vIHdlaXJkIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyB1c2VBcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS91c2UtYXBwLWRldi1yZW5kZXJpbmctaW5kaWNhdG9yJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvdXNlLWFwcC1kZXYtcmVuZGVyaW5nLWluZGljYXRvcicpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgY29uc3QgYXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yID0gdXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yKClcblxuICAgIGRpc3BhdGNoID0gKGFjdGlvbjogUmVkdWNlckFjdGlvbnMpID0+IHtcbiAgICAgIGFwcERldlJlbmRlcmluZ0luZGljYXRvcigoKSA9PiB7XG4gICAgICAgIGFjdGlvblF1ZXVlLmRpc3BhdGNoKGFjdGlvbiwgc2V0U3RhdGUpXG4gICAgICB9KVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBkaXNwYXRjaCA9IChhY3Rpb246IFJlZHVjZXJBY3Rpb25zKSA9PlxuICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goYWN0aW9uLCBzZXRTdGF0ZSlcbiAgfVxuXG4gIHJldHVybiBpc1RoZW5hYmxlKHN0YXRlKSA/IHVzZShzdGF0ZSkgOiBzdGF0ZVxufVxuIl0sIm5hbWVzIjpbImRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIiwidXNlQWN0aW9uUXVldWUiLCJkaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwiYWN0aW9uUXVldWUiLCJzdGF0ZSIsInNldFN0YXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZUFwcERldlJlbmRlcmluZ0luZGljYXRvciIsInJlcXVpcmUiLCJhcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IiLCJpc1RoZW5hYmxlIiwidXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/components/use-action-queue.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js ***! \********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/// \n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return HotReload;\n },\n waitForWebpackRuntimeHotUpdate: function() {\n return waitForWebpackRuntimeHotUpdate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../shared/lib/format-webpack-messages */ \"(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js\"));\nconst _navigation = __webpack_require__(/*! ../../../components/navigation */ \"(ssr)/./node_modules/next/dist/client/components/navigation.js\");\nconst _shared = __webpack_require__(/*! ../shared */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _replayssronlyerrors = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/replay-ssr-only-errors */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\");\nconst _appdevoverlayerrorboundary = __webpack_require__(/*! ../../../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\nconst _useerrorhandler = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-error-handler */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../runtime-error-handler */ \"(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _usewebsocket = __webpack_require__(/*! ./use-websocket */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../../../../server/dev/hot-reloader-types */ \"(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _navigationuntracked = __webpack_require__(/*! ../../../components/navigation-untracked */ \"(ssr)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _reporthmrlatency = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../report-hmr-latency */ \"(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js\"));\nconst _turbopackhotreloadercommon = __webpack_require__(/*! ../turbopack-hot-reloader-common */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../../components/app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _useforwardconsolelog = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-forward-console-log */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js\");\nlet mostRecentCompilationHash = null;\nlet __nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet reloading = false;\nlet webpackStartMsSinceEpoch = null;\nconst turbopackHmr = false ? 0 : null;\nlet pendingHotUpdateWebpack = Promise.resolve();\nlet resolvePendingHotUpdateWebpack = ()=>{};\nfunction setPendingHotUpdateWebpack() {\n pendingHotUpdateWebpack = new Promise((resolve)=>{\n resolvePendingHotUpdateWebpack = ()=>{\n resolve();\n };\n });\n}\nfunction waitForWebpackRuntimeHotUpdate() {\n return pendingHotUpdateWebpack;\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n/**\n * Is there a newer version of this code available?\n * For webpack: Check if the hash changed compared to __webpack_hash__\n * For Turbopack: Always true because it doesn't have __webpack_hash__\n */ function isUpdateAvailable() {\n if (false) {}\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n return module.hot.status() === 'idle';\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === 'idle') {\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n module.hot.addStatusHandler(handler);\n }\n}\nfunction performFullReload(err, sendMessage) {\n const stackTrace = err && (err.stack && err.stack.split('\\n').slice(0, 5).join('\\n') || err.message || err + '');\n sendMessage(JSON.stringify({\n event: 'client-full-reload',\n stackTrace,\n hadRuntimeError: !!_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError,\n dependencyChain: err ? err.dependencyChain : undefined\n }));\n if (reloading) return;\n reloading = true;\n window.location.reload();\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdatesWebpack(sendMessage) {\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n resolvePendingHotUpdateWebpack();\n _nextdevtools.dispatcher.onBuildOk();\n (0, _reporthmrlatency.default)(sendMessage, [], webpackStartMsSinceEpoch, Date.now());\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || updatedModules == null) {\n if (err) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD);\n } else if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n }\n performFullReload(err, sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onBuildOk();\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n tryApplyUpdatesWebpack(sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onRefresh();\n resolvePendingHotUpdateWebpack();\n (0, _reporthmrlatency.default)(sendMessage, updatedModules, webpackStartMsSinceEpoch, Date.now());\n if (false) {}\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (updatedModules == null) {\n return null;\n }\n // We should always handle an update, even if updatedModules is empty (but\n // non-null) for any reason. That's what webpack would normally do:\n // https://github.com/webpack/webpack/blob/3aa6b6bc3a64/lib/hmr/HotModuleReplacement.runtime.js#L296-L298\n _nextdevtools.dispatcher.onBeforeRefresh();\n // https://webpack.js.org/api/hot-module-replacement/#apply\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\n/** Handles messages from the server for the App Router. */ function processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef) {\n if (!('action' in obj)) {\n return;\n }\n function handleErrors(errors) {\n // \"Massage\" webpack messages.\n const formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n _nextdevtools.dispatcher.onBuildError(formatted.errors[0]);\n // Also log them to the console.\n for(let i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n }\n function handleHotUpdate() {\n if (false) {} else {\n tryApplyUpdatesWebpack(sendMessage);\n }\n }\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ISR_MANIFEST:\n {\n if (true) {\n if (appIsrManifestRef) {\n appIsrManifestRef.current = obj.data;\n // handle initial status on receiving manifest\n // navigation is handled in useEffect for pathname changes\n // as we'll receive the updated manifest before usePathname\n // triggers for new value\n if (pathnameRef.current in obj.data) {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n {\n _nextdevtools.dispatcher.buildingIndicatorShow();\n if (false) {} else {\n webpackStartMsSinceEpoch = Date.now();\n setPendingHotUpdateWebpack();\n console.log('[Fast Refresh] rebuilding');\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n {\n _nextdevtools.dispatcher.buildingIndicatorHide();\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors, warnings } = obj;\n // Is undefined when it's a 'built' event\n if ('versionInfo' in obj) _nextdevtools.dispatcher.onVersionInfo(obj.versionInfo);\n if ('debug' in obj && obj.debug) _nextdevtools.dispatcher.onDebugInfo(obj.debug);\n if ('devIndicator' in obj) _nextdevtools.dispatcher.onDevIndicator(obj.devIndicator);\n if ('devToolsConfig' in obj) _nextdevtools.dispatcher.onDevToolsConfig(obj.devToolsConfig);\n const hasErrors = Boolean(errors && errors.length);\n // Compilation with errors (e.g. syntax error or missing modules).\n if (hasErrors) {\n sendMessage(JSON.stringify({\n event: 'client-error',\n errorCount: errors.length,\n clientId: __nextDevClientId\n }));\n handleErrors(errors);\n return;\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n sendMessage(JSON.stringify({\n event: 'client-warning',\n warningCount: warnings.length,\n clientId: __nextDevClientId\n }));\n // Print warnings to the console.\n const formattedMessages = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n for(let i = 0; i < formattedMessages.warnings.length; i++){\n if (i === 5) {\n console.warn('There were more warnings in other files.\\n' + 'You can find a complete log in the terminal.');\n break;\n }\n console.warn((0, _stripansi.default)(formattedMessages.warnings[i]));\n }\n // No early return here as we need to apply modules in the same way between warnings only and compiles without warnings\n }\n sendMessage(JSON.stringify({\n event: 'client-success',\n clientId: __nextDevClientId\n }));\n if (obj.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT) {\n handleHotUpdate();\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED:\n {\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: {\n sessionId: obj.data.sessionId\n }\n });\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE:\n {\n turbopackHmr.onTurbopackMessage(obj);\n _nextdevtools.dispatcher.onBeforeRefresh();\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: obj.data\n });\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n performFullReload(null, sendMessage);\n }\n _nextdevtools.dispatcher.onRefresh();\n break;\n }\n // TODO-APP: make server component change more granular\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onServerComponentChanges();\n sendMessage(JSON.stringify({\n event: 'server-component-reload-page',\n clientId: __nextDevClientId,\n hash: obj.hash\n }));\n // Store the latest hash in a session cookie so that it's sent back to the\n // server with any subsequent requests.\n document.cookie = _approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE + \"=\" + obj.hash + \";path=/\";\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || document.documentElement.id === '__next_error__') {\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n (0, _react.startTransition)(()=>{\n router.hmrRefresh();\n _nextdevtools.dispatcher.onRefresh();\n });\n if (false) {}\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onReloadPage();\n sendMessage(JSON.stringify({\n event: 'client-reload-page',\n clientId: __nextDevClientId\n }));\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onPageAddRemove();\n // TODO-APP: potentially only refresh if the currently viewed page was added/removed.\n return router.hmrRefresh();\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR:\n {\n const { errorJSON } = obj;\n if (errorJSON) {\n const { message, stack } = JSON.parse(errorJSON);\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE:\n {\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEVTOOLS_CONFIG:\n {\n _nextdevtools.dispatcher.onDevToolsConfig(obj.data);\n return;\n }\n default:\n {\n obj;\n }\n }\n}\nfunction HotReload(param) {\n let { assetPrefix, children, globalError } = param;\n (0, _useerrorhandler.useErrorHandler)(_nextdevtools.dispatcher.onUnhandledError, _nextdevtools.dispatcher.onUnhandledRejection);\n const webSocketRef = (0, _usewebsocket.useWebsocket)(assetPrefix);\n (0, _usewebsocket.useWebsocketPing)(webSocketRef);\n const sendMessage = (0, _usewebsocket.useSendMessage)(webSocketRef);\n (0, _useforwardconsolelog.useForwardConsoleLog)(webSocketRef);\n const processTurbopackMessage = (0, _usewebsocket.useTurbopack)(sendMessage, (err)=>performFullReload(err, sendMessage));\n const router = (0, _navigation.useRouter)();\n // We don't want access of the pathname for the dev tools to trigger a dynamic\n // access (as the dev overlay will never be present in production).\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const appIsrManifestRef = (0, _react.useRef)({});\n const pathnameRef = (0, _react.useRef)(pathname);\n if (true) {\n // this conditional is only for dead-code elimination which\n // isn't a runtime conditional only build-time so ignore hooks rule\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n pathnameRef.current = pathname;\n const appIsrManifest = appIsrManifestRef.current;\n if (appIsrManifest) {\n if (pathname && pathname in appIsrManifest) {\n try {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } catch (reason) {\n let message = '';\n if (reason instanceof DOMException) {\n var _reason_stack;\n // Most likely a SecurityError, because of an unavailable localStorage\n message = (_reason_stack = reason.stack) != null ? _reason_stack : reason.message;\n } else if (reason instanceof Error) {\n var _reason_stack1;\n message = 'Error: ' + reason.message + '\\n' + ((_reason_stack1 = reason.stack) != null ? _reason_stack1 : '');\n } else {\n message = 'Unexpected Exception: ' + reason;\n }\n console.warn('[HMR] ' + message);\n }\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }, [\n pathname\n ]);\n }\n (0, _react.useEffect)(()=>{\n const websocket = webSocketRef.current;\n if (!websocket) return;\n const handler = (event)=>{\n try {\n const obj = JSON.parse(event.data);\n processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef);\n } catch (err) {\n (0, _shared.reportInvalidHmrMessage)(event, err);\n }\n };\n websocket.addEventListener('message', handler);\n return ()=>websocket.removeEventListener('message', handler);\n }, [\n sendMessage,\n router,\n webSocketRef,\n processTurbopackMessage,\n appIsrManifestRef\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_appdevoverlayerrorboundary.AppDevOverlayErrorBoundary, {\n globalError: globalError,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_replayssronlyerrors.ReplaySsrOnlyErrors, {\n onBlockingError: _nextdevtools.dispatcher.openErrorOverlay\n }),\n children\n ]\n });\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-reloader-app.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwLmpzIiwibWFwcGluZ3MiOiI7QUFBQSw2Q0FBNkM7Ozs7Ozs7Ozs7Ozs7SUF5YzdDLE9BaUdDO2VBakd1QkE7O0lBcFpSQyw4QkFBOEI7ZUFBOUJBOzs7OzttQ0FsRG1DO2dGQUM3Qjs0RkFDWTt3Q0FDUjtvQ0FLbkI7MENBQ29CO2lEQUNTO3dEQUNPOzZDQUNYO2lEQUNJOzBDQU03Qjs4Q0FDcUM7aURBS1A7dUZBQ1I7d0RBQ0E7OENBQ2dCO2tEQUVSO0FBRXJDLElBQUlDLDRCQUFpQztBQUNyQyxJQUFJQyxvQkFBb0JDLEtBQUtDLEtBQUssQ0FBQ0QsS0FBS0UsTUFBTSxLQUFLLE1BQU1DLEtBQUtDLEdBQUc7QUFDakUsSUFBSUMsWUFBWTtBQUNoQixJQUFJQywyQkFBMEM7QUFDOUMsTUFBTUMsZUFBb0NDLE1BQXFCLEdBQzNELENBQWtCLEdBQ2xCO0FBRUosSUFBSUksMEJBQTBCQyxRQUFRQyxPQUFPO0FBQzdDLElBQUlDLGlDQUE2QyxLQUFPO0FBQ3hELFNBQVNDO0lBQ1BKLDBCQUEwQixJQUFJQyxRQUFRLENBQUNDO1FBQ3JDQyxpQ0FBaUM7WUFDL0JEO1FBQ0Y7SUFDRjtBQUNGO0FBRU8sU0FBU2pCO0lBQ2QsT0FBT2U7QUFDVDtBQUVBLGtEQUFrRDtBQUNsRCxTQUFTSyxvQkFBb0JDLElBQVk7SUFDdkMsc0NBQXNDO0lBQ3RDcEIsNEJBQTRCb0I7QUFDOUI7QUFFQTs7OztDQUlDLEdBQ0QsU0FBU0M7SUFDUCxJQUFJWCxLQUFxQixFQUFFLEVBRTFCO0lBRUQsNEJBQTRCLEdBQzVCLDJEQUEyRDtJQUMzRCw4Q0FBOEM7SUFDOUMsT0FBT1YsOEJBQThCc0IsdUJBQWdCQTtBQUN2RDtBQUVBLDZDQUE2QztBQUM3QyxTQUFTQztJQUNQLE9BQU9DLE9BQU9DLEdBQUcsQ0FBQ0MsTUFBTSxPQUFPO0FBQ2pDO0FBQ0EsU0FBU0Ms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dUIscUJBQUFBLG1CQUFtQjtnQkFBQ0MsaUJBQWlCdkgsY0FBQUEsVUFBVSxDQUFDd0gsZ0JBQWdCOztZQUNoRTFCOzs7QUFHUCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxkZXZcXGhvdC1yZWxvYWRlclxcYXBwXFxob3QtcmVsb2FkZXItYXBwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIndlYnBhY2svbW9kdWxlLmQudHNcIiAvPlxuXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlRWZmZWN0LCBzdGFydFRyYW5zaXRpb24sIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvc3RyaXAtYW5zaSdcbmltcG9ydCBmb3JtYXRXZWJwYWNrTWVzc2FnZXMgZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9mb3JtYXQtd2VicGFjay1tZXNzYWdlcydcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvbmF2aWdhdGlvbidcbmltcG9ydCB7XG4gIFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQsXG4gIFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQURfRlJPTV9FUlJPUixcbiAgcmVwb3J0SW52YWxpZEhtck1lc3NhZ2UsXG59IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7IGRpc3BhdGNoZXIgfSBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scydcbmltcG9ydCB7IFJlcGxheVNzck9ubHlFcnJvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3JlcGxheS1zc3Itb25seS1lcnJvcnMnXG5pbXBvcnQgeyBBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeSB9IGZyb20gJy4uLy4uLy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgeyB1c2VFcnJvckhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3VzZS1lcnJvci1oYW5kbGVyJ1xuaW1wb3J0IHsgUnVudGltZUVycm9ySGFuZGxlciB9IGZyb20gJy4uLy4uL3J1bnRpbWUtZXJyb3ItaGFuZGxlcidcbmltcG9ydCB7XG4gIHVzZVNlbmRNZXNzYWdlLFxuICB1c2VUdXJib3BhY2ssXG4gIHVzZVdlYnNvY2tldCxcbiAgdXNlV2Vic29ja2V0UGluZyxcbn0gZnJvbSAnLi91c2Utd2Vic29ja2V0J1xuaW1wb3J0IHsgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIEhNUl9BQ1RJT05fVFlQRVMsXG4gIFR1cmJvcGFja01zZ1RvQnJvd3Nlcixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5pbXBvcnQgeyB1c2VVbnRyYWNrZWRQYXRobmFtZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQnXG5pbXBvcnQgcmVwb3J0SG1yTGF0ZW5jeSBmcm9tICcuLi8uLi9yZXBvcnQtaG1yLWxhdGVuY3knXG5pbXBvcnQgeyBUdXJib3BhY2tIbXIgfSBmcm9tICcuLi90dXJib3BhY2staG90LXJlbG9hZGVyLWNvbW1vbidcbmltcG9ydCB7IE5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB0eXBlIHsgR2xvYmFsRXJyb3JTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZSdcbmltcG9ydCB7IHVzZUZvcndhcmRDb25zb2xlTG9nIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy91c2UtZm9yd2FyZC1jb25zb2xlLWxvZydcblxubGV0IG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2g6IGFueSA9IG51bGxcbmxldCBfX25leHREZXZDbGllbnRJZCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMCArIERhdGUubm93KCkpXG5sZXQgcmVsb2FkaW5nID0gZmFsc2VcbmxldCB3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2g6IG51bWJlciB8IG51bGwgPSBudWxsXG5jb25zdCB0dXJib3BhY2tIbXI6IFR1cmJvcGFja0htciB8IG51bGwgPSBwcm9jZXNzLmVudi5UVVJCT1BBQ0tcbiAgPyBuZXcgVHVyYm9wYWNrSG1yKClcbiAgOiBudWxsXG5cbmxldCBwZW5kaW5nSG90VXBkYXRlV2VicGFjayA9IFByb21pc2UucmVzb2x2ZSgpXG5sZXQgcmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge31cbmZ1bmN0aW9uIHNldFBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrKCkge1xuICBwZW5kaW5nSG90VXBkYXRlV2VicGFjayA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlKCkge1xuICByZXR1cm4gcGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2tcbn1cblxuLy8gVGhlcmUgaXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBjb2RlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIGhhbmRsZUF2YWlsYWJsZUhhc2goaGFzaDogc3RyaW5nKSB7XG4gIC8vIFVwZGF0ZSBsYXN0IGtub3duIGNvbXBpbGF0aW9uIGhhc2guXG4gIG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2ggPSBoYXNoXG59XG5cbi8qKlxuICogSXMgdGhlcmUgYSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgY29kZSBhdmFpbGFibGU/XG4gKiBGb3Igd2VicGFjazogQ2hlY2sgaWYgdGhlIGhhc2ggY2hhbmdlZCBjb21wYXJlZCB0byBfX3dlYnBhY2tfaGFzaF9fXG4gKiBGb3IgVHVyYm9wYWNrOiBBbHdheXMgdHJ1ZSBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSBfX3dlYnBhY2tfaGFzaF9fXG4gKi9cbmZ1bmN0aW9uIGlzVXBkYXRlQXZhaWxhYmxlKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qIGdsb2JhbHMgX193ZWJwYWNrX2hhc2hfXyAqL1xuICAvLyBfX3dlYnBhY2tfaGFzaF9fIGlzIHRoZSBoYXNoIG9mIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uLlxuICAvLyBJdCdzIGEgZ2xvYmFsIHZhcmlhYmxlIGluamVjdGVkIGJ5IFdlYnBhY2suXG4gIHJldHVybiBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoICE9PSBfX3dlYnBhY2tfaGFzaF9fXG59XG5cbi8vIFdlYnBhY2sgZGlzYWxsb3dzIHVwZGF0ZXMgaW4gb3RoZXIgc3RhdGVzLlxuZnVuY3Rpb24gY2FuQXBwbHlVcGRhdGVzKCkge1xuICByZXR1cm4gbW9kdWxlLmhvdC5zdGF0dXMoKSA9PT0gJ2lkbGUnXG59XG5mdW5jdGlvbiBhZnRlckFwcGx5VXBkYXRlcyhmbjogYW55KSB7XG4gIGlmIChjYW5BcHBseVVwZGF0ZXMoKSkge1xuICAgIGZuKClcbiAgfSBlbHNlIHtcbiAgICBmdW5jdGlvbiBoYW5kbGVyKHN0YXR1czogYW55KSB7XG4gICAgICBpZiAoc3RhdHVzID09PSAnaWRsZScpIHtcbiAgICAgICAgbW9kdWxlLmhvdC5yZW1vdmVTdGF0dXNIYW5kbGVyKGhhbmRsZXIpXG4gICAgICAgIGZuKClcbiAgICAgIH1cbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hZGRTdGF0dXNIYW5kbGVyKGhhbmRsZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoZXJyOiBhbnksIHNlbmRNZXNzYWdlOiBhbnkpIHtcbiAgY29uc3Qgc3RhY2tUcmFjZSA9XG4gICAgZXJyICYmXG4gICAgKChlcnIuc3RhY2sgJiYgZXJyLnN0YWNrLnNwbGl0KCdcXG4nKS5zbGljZSgwLCA1KS5qb2luKCdcXG4nKSkgfHxcbiAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICBlcnIgKyAnJylcblxuICBzZW5kTWVzc2FnZShcbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ2NsaWVudC1mdWxsLXJlbG9hZCcsXG4gICAgICBzdGFja1RyYWNlLFxuICAgICAgaGFkUnVudGltZUVycm9yOiAhIVJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yLFxuICAgICAgZGVwZW5kZW5jeUNoYWluOiBlcnIgPyBlcnIuZGVwZW5kZW5jeUNoYWluIDogdW5kZWZpbmVkLFxuICAgIH0pXG4gIClcblxuICBpZiAocmVsb2FkaW5nKSByZXR1cm5cbiAgcmVsb2FkaW5nID0gdHJ1ZVxuICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbn1cblxuLy8gQXR0ZW1wdCB0byB1cGRhdGUgY29kZSBvbiB0aGUgZmx5LCBmYWxsIGJhY2sgdG8gYSBoYXJkIHJlbG9hZC5cbmZ1bmN0aW9uIHRyeUFwcGx5VXBkYXRlc1dlYnBhY2soc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgaWYgKCFpc1VwZGF0ZUF2YWlsYWJsZSgpIHx8ICFjYW5BcHBseVVwZGF0ZXMoKSkge1xuICAgIHJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjaygpXG4gICAgZGlzcGF0Y2hlci5vbkJ1aWxkT2soKVxuICAgIHJlcG9ydEhtckxhdGVuY3koc2VuZE1lc3NhZ2UsIFtdLCB3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2ghLCBEYXRlLm5vdygpKVxuICAgIHJldHVyblxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQXBwbHlVcGRhdGVzKFxuICAgIGVycjogYW55LFxuICAgIHVwZGF0ZWRNb2R1bGVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbFxuICApIHtcbiAgICBpZiAoZXJyIHx8IFJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yIHx8IHVwZGF0ZWRNb2R1bGVzID09IG51bGwpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQpXG4gICAgICB9IGVsc2UgaWYgKFJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IpXG4gICAgICB9XG4gICAgICBwZXJmb3JtRnVsbFJlbG9hZChlcnIsIHNlbmRNZXNzYWdlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hlci5vbkJ1aWxkT2soKVxuXG4gICAgaWYgKGlzVXBkYXRlQXZhaWxhYmxlKCkpIHtcbiAgICAgIC8vIFdoaWxlIHdlIHdlcmUgdXBkYXRpbmcsIHRoZXJlIHdhcyBhIG5ldyB1cGRhdGUhIERvIGl0IGFnYWluLlxuICAgICAgdHJ5QXBwbHlVcGRhdGVzV2VicGFjayhzZW5kTWVzc2FnZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRpc3BhdGNoZXIub25SZWZyZXNoKClcbiAgICByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKVxuICAgIHJlcG9ydEhtckxhdGVuY3koXG4gICAgICBzZW5kTWVzc2FnZSxcbiAgICAgIHVwZGF0ZWRNb2R1bGVzLFxuICAgICAgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoISxcbiAgICAgIERhdGUubm93KClcbiAgICApXG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgYWZ0ZXJBcHBseVVwZGF0ZXMoKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKClcbiAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9hcGkvaG90LW1vZHVsZS1yZXBsYWNlbWVudC8jY2hlY2tcbiAgbW9kdWxlLmhvdFxuICAgIC5jaGVjaygvKiBhdXRvQXBwbHkgKi8gZmFsc2UpXG4gICAgLnRoZW4oKHVwZGF0ZWRNb2R1bGVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHVwZGF0ZWRNb2R1bGVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYW5kbGUgYW4gdXBkYXRlLCBldmVuIGlmIHVwZGF0ZWRNb2R1bGVzIGlzIGVtcHR5IChidXRcbiAgICAgIC8vIG5vbi1udWxsKSBmb3IgYW55IHJlYXNvbi4gVGhhdCdzIHdoYXQgd2VicGFjayB3b3VsZCBub3JtYWxseSBkbzpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svYmxvYi8zYWE2YjZiYzNhNjQvbGliL2htci9Ib3RNb2R1bGVSZXBsYWNlbWVudC5ydW50aW1lLmpzI0wyOTYtTDI5OFxuICAgICAgZGlzcGF0Y2hlci5vbkJlZm9yZVJlZnJlc2goKVxuICAgICAgLy8gaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9hcGkvaG90LW1vZHVsZS1yZXBsYWNlbWVudC8jYXBwbHlcbiAgICAgIHJldHVybiBtb2R1bGUuaG90LmFwcGx5KClcbiAgICB9KVxuICAgIC50aGVuKFxuICAgICAgKHVwZGF0ZWRNb2R1bGVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbCkgPT4ge1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMobnVsbCwgdXBkYXRlZE1vZHVsZXMpXG4gICAgICB9LFxuICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIG51bGwpXG4gICAgICB9XG4gICAgKVxufVxuXG4vKiogSGFuZGxlcyBtZXNzYWdlcyBmcm9tIHRoZSBzZXJ2ZXIgZm9yIHRoZSBBcHAgUm91dGVyLiAqL1xuZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2UoXG4gIG9iajogSE1SX0FDVElPTl9UWVBFUyxcbiAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQsXG4gIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlOiAobXNnOiBUdXJib3BhY2tNc2dUb0Jyb3dzZXIpID0+IHZvaWQsXG4gIHJvdXRlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUm91dGVyPixcbiAgYXBwSXNyTWFuaWZlc3RSZWY6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlZj4sXG4gIHBhdGhuYW1lUmVmOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWY+XG4pIHtcbiAgaWYgKCEoJ2FjdGlvbicgaW4gb2JqKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRXJyb3JzKGVycm9yczogUmVhZG9ubHlBcnJheTx1bmtub3duPikge1xuICAgIC8vIFwiTWFzc2FnZVwiIHdlYnBhY2sgbWVzc2FnZXMuXG4gICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0V2VicGFja01lc3NhZ2VzKHtcbiAgICAgIGVycm9yczogZXJyb3JzLFxuICAgICAgd2FybmluZ3M6IFtdLFxuICAgIH0pXG5cbiAgICAvLyBPbmx5IHNob3cgdGhlIGZpcnN0IGVycm9yLlxuICAgIGRpc3BhdGNoZXIub25CdWlsZEVycm9yKGZvcm1hdHRlZC5lcnJvcnNbMF0pXG5cbiAgICAvLyBBbHNvIGxvZyB0aGVtIHRvIHRoZSBjb25zb2xlLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkLmVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc29sZS5lcnJvcihzdHJpcEFuc2koZm9ybWF0dGVkLmVycm9yc1tpXSkpXG4gICAgfVxuXG4gICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gcmVsb2FkIG5vdy5cbiAgICAvLyBXZSB3aWxsIHJlbG9hZCBvbiBuZXh0IHN1Y2Nlc3MgaW5zdGVhZC5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoZm9ybWF0dGVkLmVycm9yc1swXSlcbiAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUhvdFVwZGF0ZSgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICBjb25zdCBobXJVcGRhdGUgPSB0dXJib3BhY2tIbXIhLm9uQnVpbHQoKVxuICAgICAgaWYgKGhtclVwZGF0ZSAhPSBudWxsKSB7XG4gICAgICAgIHJlcG9ydEhtckxhdGVuY3koXG4gICAgICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICAgICAgWy4uLmhtclVwZGF0ZS51cGRhdGVkTW9kdWxlc10sXG4gICAgICAgICAgaG1yVXBkYXRlLnN0YXJ0TXNTaW5jZUVwb2NoLFxuICAgICAgICAgIGhtclVwZGF0ZS5lbmRNc1NpbmNlRXBvY2gsXG4gICAgICAgICAgLy8gc3VwcHJlc3MgdGhlIGBjbGllbnQtaG1yLWxhdGVuY3lgIGV2ZW50IGlmIHRoZSB1cGRhdGUgd2FzIGEgbm8tb3A6XG4gICAgICAgICAgaG1yVXBkYXRlLmhhc1VwZGF0ZXNcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgZGlzcGF0Y2hlci5vbkJ1aWxkT2soKVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnlBcHBseVVwZGF0ZXNXZWJwYWNrKHNlbmRNZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAob2JqLmFjdGlvbikge1xuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLklTUl9NQU5JRkVTVDoge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfSU5ESUNBVE9SKSB7XG4gICAgICAgIGlmIChhcHBJc3JNYW5pZmVzdFJlZikge1xuICAgICAgICAgIGFwcElzck1hbmlmZXN0UmVmLmN1cnJlbnQgPSBvYmouZGF0YVxuXG4gICAgICAgICAgLy8gaGFuZGxlIGluaXRpYWwgc3RhdHVzIG9uIHJlY2VpdmluZyBtYW5pZmVzdFxuICAgICAgICAgIC8vIG5hdmlnYXRpb24gaXMgaGFuZGxlZCBpbiB1c2VFZmZlY3QgZm9yIHBhdGhuYW1lIGNoYW5nZXNcbiAgICAgICAgICAvLyBhcyB3ZSdsbCByZWNlaXZlIHRoZSB1cGRhdGVkIG1hbmlmZXN0IGJlZm9yZSB1c2VQYXRobmFtZVxuICAgICAgICAgIC8vIHRyaWdnZXJzIGZvciBuZXcgdmFsdWVcbiAgICAgICAgICBpZiAoKHBhdGhuYW1lUmVmLmN1cnJlbnQgYXMgc3RyaW5nKSBpbiBvYmouZGF0YSkge1xuICAgICAgICAgICAgZGlzcGF0Y2hlci5vblN0YXRpY0luZGljYXRvcih0cnVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaXNwYXRjaGVyLm9uU3RhdGljSW5kaWNhdG9yKGZhbHNlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTERJTkc6IHtcbiAgICAgIGRpc3BhdGNoZXIuYnVpbGRpbmdJbmRpY2F0b3JTaG93KClcblxuICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICB0dXJib3BhY2tIbXIhLm9uQnVpbGRpbmcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoID0gRGF0ZS5ub3coKVxuICAgICAgICBzZXRQZW5kaW5nSG90VXBkYXRlV2VicGFjaygpXG4gICAgICAgIGNvbnNvbGUubG9nKCdbRmFzdCBSZWZyZXNoXSByZWJ1aWxkaW5nJylcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkJVSUxUOlxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNZTkM6IHtcbiAgICAgIGRpc3BhdGNoZXIuYnVpbGRpbmdJbmRpY2F0b3JIaWRlKClcblxuICAgICAgaWYgKG9iai5oYXNoKSB7XG4gICAgICAgIGhhbmRsZUF2YWlsYWJsZUhhc2gob2JqLmhhc2gpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZXJyb3JzLCB3YXJuaW5ncyB9ID0gb2JqXG5cbiAgICAgIC8vIElzIHVuZGVmaW5lZCB3aGVuIGl0J3MgYSAnYnVpbHQnIGV2ZW50XG4gICAgICBpZiAoJ3ZlcnNpb25JbmZvJyBpbiBvYmopIGRpc3BhdGNoZXIub25WZXJzaW9uSW5mbyhvYmoudmVyc2lvbkluZm8pXG4gICAgICBpZiAoJ2RlYnVnJyBpbiBvYmogJiYgb2JqLmRlYnVnKSBkaXNwYXRjaGVyLm9uRGVidWdJbmZvKG9iai5kZWJ1ZylcbiAgICAgIGlmICgnZGV2SW5kaWNhdG9yJyBpbiBvYmopIGRpc3BhdGNoZXIub25EZXZJbmRpY2F0b3Iob2JqLmRldkluZGljYXRvcilcbiAgICAgIGlmICgnZGV2VG9vbHNDb25maWcnIGluIG9iailcbiAgICAgICAgZGlzcGF0Y2hlci5vbkRldlRvb2xzQ29uZmlnKG9iai5kZXZUb29sc0NvbmZpZylcblxuICAgICAgY29uc3QgaGFzRXJyb3JzID0gQm9vbGVhbihlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aClcbiAgICAgIC8vIENvbXBpbGF0aW9uIHdpdGggZXJyb3JzIChlLmcuIHN5bnRheCBlcnJvciBvciBtaXNzaW5nIG1vZHVsZXMpLlxuICAgICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogJ2NsaWVudC1lcnJvcicsXG4gICAgICAgICAgICBlcnJvckNvdW50OiBlcnJvcnMubGVuZ3RoLFxuICAgICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICBoYW5kbGVFcnJvcnMoZXJyb3JzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzV2FybmluZ3MgPSBCb29sZWFuKHdhcm5pbmdzICYmIHdhcm5pbmdzLmxlbmd0aClcbiAgICAgIGlmIChoYXNXYXJuaW5ncykge1xuICAgICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogJ2NsaWVudC13YXJuaW5nJyxcbiAgICAgICAgICAgIHdhcm5pbmdDb3VudDogd2FybmluZ3MubGVuZ3RoLFxuICAgICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICAvLyBQcmludCB3YXJuaW5ncyB0byB0aGUgY29uc29sZS5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTWVzc2FnZXMgPSBmb3JtYXRXZWJwYWNrTWVzc2FnZXMoe1xuICAgICAgICAgIHdhcm5pbmdzOiB3YXJuaW5ncyxcbiAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkTWVzc2FnZXMud2FybmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA9PT0gNSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAnVGhlcmUgd2VyZSBtb3JlIHdhcm5pbmdzIGluIG90aGVyIGZpbGVzLlxcbicgK1xuICAgICAgICAgICAgICAgICdZb3UgY2FuIGZpbmQgYSBjb21wbGV0ZSBsb2cgaW4gdGhlIHRlcm1pbmFsLidcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUud2FybihzdHJpcEFuc2koZm9ybWF0dGVkTWVzc2FnZXMud2FybmluZ3NbaV0pKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm8gZWFybHkgcmV0dXJuIGhlcmUgYXMgd2UgbmVlZCB0byBhcHBseSBtb2R1bGVzIGluIHRoZSBzYW1lIHdheSBiZXR3ZWVuIHdhcm5pbmdzIG9ubHkgYW5kIGNvbXBpbGVzIHdpdGhvdXQgd2FybmluZ3NcbiAgICAgIH1cblxuICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudDogJ2NsaWVudC1zdWNjZXNzJyxcbiAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIGlmIChvYmouYWN0aW9uID09PSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQpIHtcbiAgICAgICAgaGFuZGxlSG90VXBkYXRlKClcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5UVVJCT1BBQ0tfQ09OTkVDVEVEOiB7XG4gICAgICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5UVVJCT1BBQ0tfQ09OTkVDVEVELFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgc2Vzc2lvbklkOiBvYmouZGF0YS5zZXNzaW9uSWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX01FU1NBR0U6IHtcbiAgICAgIHR1cmJvcGFja0htciEub25UdXJib3BhY2tNZXNzYWdlKG9iailcbiAgICAgIGRpc3BhdGNoZXIub25CZWZvcmVSZWZyZXNoKClcbiAgICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19NRVNTQUdFLFxuICAgICAgICBkYXRhOiBvYmouZGF0YSxcbiAgICAgIH0pXG4gICAgICBpZiAoUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQURfRlJPTV9FUlJPUilcbiAgICAgICAgcGVyZm9ybUZ1bGxSZWxvYWQobnVsbCwgc2VuZE1lc3NhZ2UpXG4gICAgICB9XG4gICAgICBkaXNwYXRjaGVyLm9uUmVmcmVzaCgpXG4gICAgICBicmVha1xuICAgIH1cbiAgICAvLyBUT0RPLUFQUDogbWFrZSBzZXJ2ZXIgY29tcG9uZW50IGNoYW5nZSBtb3JlIGdyYW51bGFyXG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuU0VSVkVSX0NPTVBPTkVOVF9DSEFOR0VTOiB7XG4gICAgICB0dXJib3BhY2tIbXI/Lm9uU2VydmVyQ29tcG9uZW50Q2hhbmdlcygpXG4gICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50OiAnc2VydmVyLWNvbXBvbmVudC1yZWxvYWQtcGFnZScsXG4gICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgIGhhc2g6IG9iai5oYXNoLFxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICAvLyBTdG9yZSB0aGUgbGF0ZXN0IGhhc2ggaW4gYSBzZXNzaW9uIGNvb2tpZSBzbyB0aGF0IGl0J3Mgc2VudCBiYWNrIHRvIHRoZVxuICAgICAgLy8gc2VydmVyIHdpdGggYW55IHN1YnNlcXVlbnQgcmVxdWVzdHMuXG4gICAgICBkb2N1bWVudC5jb29raWUgPSBgJHtORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFfT0ke29iai5oYXNofTtwYXRoPS9gXG5cbiAgICAgIGlmIChcbiAgICAgICAgUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IgfHxcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlkID09PSAnX19uZXh0X2Vycm9yX18nXG4gICAgICApIHtcbiAgICAgICAgaWYgKHJlbG9hZGluZykgcmV0dXJuXG4gICAgICAgIHJlbG9hZGluZyA9IHRydWVcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgfVxuXG4gICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICByb3V0ZXIuaG1yUmVmcmVzaCgpXG4gICAgICAgIGRpc3BhdGNoZXIub25SZWZyZXNoKClcbiAgICAgIH0pXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKVxuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuUkVMT0FEX1BBR0U6IHtcbiAgICAgIHR1cmJvcGFja0htcj8ub25SZWxvYWRQYWdlKClcbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdjbGllbnQtcmVsb2FkLXBhZ2UnLFxuICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIGlmIChyZWxvYWRpbmcpIHJldHVyblxuICAgICAgcmVsb2FkaW5nID0gdHJ1ZVxuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5BRERFRF9QQUdFOlxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlJFTU9WRURfUEFHRToge1xuICAgICAgdHVyYm9wYWNrSG1yPy5vblBhZ2VBZGRSZW1vdmUoKVxuICAgICAgLy8gVE9ETy1BUFA6IHBvdGVudGlhbGx5IG9ubHkgcmVmcmVzaCBpZiB0aGUgY3VycmVudGx5IHZpZXdlZCBwYWdlIHdhcyBhZGRlZC9yZW1vdmVkLlxuICAgICAgcmV0dXJuIHJvdXRlci5obXJSZWZyZXNoKClcbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuU0VSVkVSX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IGVycm9ySlNPTiB9ID0gb2JqXG4gICAgICBpZiAoZXJyb3JKU09OKSB7XG4gICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgc3RhY2sgfSA9IEpTT04ucGFyc2UoZXJyb3JKU09OKVxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgICAgICBlcnJvci5zdGFjayA9IHN0YWNrXG4gICAgICAgIGhhbmRsZUVycm9ycyhbZXJyb3JdKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkRFVl9QQUdFU19NQU5JRkVTVF9VUERBVEU6IHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5ERVZUT09MU19DT05GSUc6IHtcbiAgICAgIGRpc3BhdGNoZXIub25EZXZUb29sc0NvbmZpZyhvYmouZGF0YSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBvYmogc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvdFJlbG9hZCh7XG4gIGFzc2V0UHJlZml4LFxuICBjaGlsZHJlbixcbiAgZ2xvYmFsRXJyb3IsXG59OiB7XG4gIGFzc2V0UHJlZml4OiBzdHJpbmdcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICBnbG9iYWxFcnJvcjogR2xvYmFsRXJyb3JTdGF0ZVxufSkge1xuICB1c2VFcnJvckhhbmRsZXIoZGlzcGF0Y2hlci5vblVuaGFuZGxlZEVycm9yLCBkaXNwYXRjaGVyLm9uVW5oYW5kbGVkUmVqZWN0aW9uKVxuXG4gIGNvbnN0IHdlYlNvY2tldFJlZiA9IHVzZVdlYnNvY2tldChhc3NldFByZWZpeClcblxuICB1c2VXZWJzb2NrZXRQaW5nKHdlYlNvY2tldFJlZilcbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VTZW5kTWVzc2FnZSh3ZWJTb2NrZXRSZWYpXG4gIHVzZUZvcndhcmRDb25zb2xlTG9nKHdlYlNvY2tldFJlZilcbiAgY29uc3QgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UgPSB1c2VUdXJib3BhY2soc2VuZE1lc3NhZ2UsIChlcnIpID0+XG4gICAgcGVyZm9ybUZ1bGxSZWxvYWQoZXJyLCBzZW5kTWVzc2FnZSlcbiAgKVxuXG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG5cbiAgLy8gV2UgZG9uJ3Qgd2FudCBhY2Nlc3Mgb2YgdGhlIHBhdGhuYW1lIGZvciB0aGUgZGV2IHRvb2xzIHRvIHRyaWdnZXIgYSBkeW5hbWljXG4gIC8vIGFjY2VzcyAoYXMgdGhlIGRldiBvdmVybGF5IHdpbGwgbmV2ZXIgYmUgcHJlc2VudCBpbiBwcm9kdWN0aW9uKS5cbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VVbnRyYWNrZWRQYXRobmFtZSgpXG4gIGNvbnN0IGFwcElzck1hbmlmZXN0UmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIGZhbHNlIHwgbnVtYmVyPj4oe30pXG4gIGNvbnN0IHBhdGhuYW1lUmVmID0gdXNlUmVmKHBhdGhuYW1lKVxuXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfREVWX0lORElDQVRPUikge1xuICAgIC8vIHRoaXMgY29uZGl0aW9uYWwgaXMgb25seSBmb3IgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIHdoaWNoXG4gICAgLy8gaXNuJ3QgYSBydW50aW1lIGNvbmRpdGlvbmFsIG9ubHkgYnVpbGQtdGltZSBzbyBpZ25vcmUgaG9va3MgcnVsZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBwYXRobmFtZVJlZi5jdXJyZW50ID0gcGF0aG5hbWVcblxuICAgICAgY29uc3QgYXBwSXNyTWFuaWZlc3QgPSBhcHBJc3JNYW5pZmVzdFJlZi5jdXJyZW50XG5cbiAgICAgIGlmIChhcHBJc3JNYW5pZmVzdCkge1xuICAgICAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWUgaW4gYXBwSXNyTWFuaWZlc3QpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGlzcGF0Y2hlci5vblN0YXRpY0luZGljYXRvcih0cnVlKVxuICAgICAgICAgIH0gY2F0Y2ggKHJlYXNvbikge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJ1xuXG4gICAgICAgICAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgIC8vIE1vc3QgbGlrZWx5IGEgU2VjdXJpdHlFcnJvciwgYmVjYXVzZSBvZiBhbiB1bmF2YWlsYWJsZSBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlYXNvbi5zdGFjayA/PyByZWFzb24ubWVzc2FnZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZWFzb24gaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICBtZXNzYWdlID0gJ0Vycm9yOiAnICsgcmVhc29uLm1lc3NhZ2UgKyAnXFxuJyArIChyZWFzb24uc3RhY2sgPz8gJycpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXNzYWdlID0gJ1VuZXhwZWN0ZWQgRXhjZXB0aW9uOiAnICsgcmVhc29uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0hNUl0gJyArIG1lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbcGF0aG5hbWVdKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB3ZWJzb2NrZXQgPSB3ZWJTb2NrZXRSZWYuY3VycmVudFxuICAgIGlmICghd2Vic29ja2V0KSByZXR1cm5cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudDxhbnk+KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpXG4gICAgICAgIHByb2Nlc3NNZXNzYWdlKFxuICAgICAgICAgIG9iaixcbiAgICAgICAgICBzZW5kTWVzc2FnZSxcbiAgICAgICAgICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSxcbiAgICAgICAgICByb3V0ZXIsXG4gICAgICAgICAgYXBwSXNyTWFuaWZlc3RSZWYsXG4gICAgICAgICAgcGF0aG5hbWVSZWZcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICAgIHJlcG9ydEludmFsaWRIbXJNZXNzYWdlKGV2ZW50LCBlcnIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgd2Vic29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB3ZWJzb2NrZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZXIpXG4gIH0sIFtcbiAgICBzZW5kTWVzc2FnZSxcbiAgICByb3V0ZXIsXG4gICAgd2ViU29ja2V0UmVmLFxuICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlLFxuICAgIGFwcElzck1hbmlmZXN0UmVmLFxuICBdKVxuICByZXR1cm4gKFxuICAgIDxBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeSBnbG9iYWxFcnJvcj17Z2xvYmFsRXJyb3J9PlxuICAgICAgPFJlcGxheVNzck9ubHlFcnJvcnMgb25CbG9ja2luZ0Vycm9yPXtkaXNwYXRjaGVyLm9wZW5FcnJvck92ZXJsYXl9IC8+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9BcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeT5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkhvdFJlbG9hZCIsIndhaXRGb3JXZWJwYWNrUnVudGltZUhvdFVwZGF0ZSIsIm1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2giLCJfX25leHREZXZDbGllbnRJZCIsIk1hdGgiLCJyb3VuZCIsInJhbmRvbSIsIkRhdGUiLCJub3ciLCJyZWxvYWRpbmciLCJ3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2giLCJ0dXJib3BhY2tIbXIiLCJwcm9jZXNzIiwiZW52IiwiVFVSQk9QQUNLIiwiVHVyYm9wYWNrSG1yIiwicGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2siLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjayIsInNldFBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrIiwiaGFuZGxlQXZhaWxhYmxlSGFzaCIsImhhc2giLCJpc1VwZGF0ZUF2YWlsYWJsZSIsIl9fd2VicGFja19oYXNoX18iLCJjYW5BcHBseVVwZGF0ZXMiLCJtb2R1bGUiLCJob3QiLCJzdGF0dXMiLCJhZnRlckFwcGx5VXBkYXRlcyIsImZuIiwiaGFuZGxlciIsInJlbW92ZVN0YXR1c0hhbmRsZXIiLCJhZGRTdGF0dXNIYW5kbGVyIiwicGVyZm9ybUZ1bGxSZWxvYWQiLCJlcnIiLCJzZW5kTWVzc2FnZSIsInN0YWNrVHJhY2UiLCJzdGFjayIsInNwbGl0Iiwic2xpY2UiLCJqb2luIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImhhZFJ1bnRpbWVFcnJvciIsIlJ1bnRpbWVFcnJvckhhbmRsZXIiLCJkZXBlbmRlbmN5Q2hhaW4iLCJ1bmRlZmluZWQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsInRyeUFwcGx5VXBkYXRlc1dlYnBhY2siLCJkaXNwYXRjaGVyIiwib25CdWlsZE9rIiwicmVwb3J0SG1yTGF0ZW5jeSIsImhhbmRsZUFwcGx5VXBkYXRlcyIsInVwZGF0ZWRNb2R1bGVzIiwiY29uc29sZSIsIndhcm4iLCJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEIiwiUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SIiwib25SZWZyZXNoIiwiX19ORVhUX1RFU1RfTU9ERSIsInNlbGYiLCJfX05FWFRfSE1SX0NCIiwiY2hlY2siLCJ0aGVuIiwib25CZWZvcmVSZWZyZXNoIiwiYXBwbHkiLCJwcm9jZXNzTWVzc2FnZSIsIm9iaiIsInByb2Nlc3NUdXJib3BhY2tNZXNzYWdlIiwicm91dGVyIiwiYXBwSXNyTWFuaWZlc3RSZWYiLCJwYXRobmFtZVJlZiIsImhhbmRsZUVycm9ycyIsImVycm9ycyIsImZvcm1hdHRlZCIsImZvcm1hdFdlYnBhY2tNZXNzYWdlcyIsIndhcm5pbmdzIiwib25CdWlsZEVycm9yIiwiaSIsImxlbmd0aCIsImVycm9yIiwic3RyaXBBbnNpIiwiaGFuZGxlSG90VXBkYXRlIiwiaG1yVXBkYXRlIiwib25CdWlsdCIsInN0YXJ0TXNTaW5jZUVwb2NoIiwiZW5kTXNTaW5jZUVwb2NoIiwiaGFzVXBkYXRlcyIsImFjdGlvbiIsIkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUiIsIklTUl9NQU5JRkVTVCIsIl9fTkVYVF9ERVZfSU5ESUNBVE9SIiwiY3VycmVudCIsImRhdGEiLCJvblN0YXRpY0luZGljYXRvciIsIkJVSUxESU5HIiwiYnVpbGRpbmdJbmRpY2F0b3JTaG93Iiwib25CdWlsZGluZyIsImxvZyIsIkJVSUxUIiwiU1lOQyIsImJ1aWxkaW5nSW5kaWNhdG9ySGlkZSIsIm9uVmVyc2lvbkluZm8iLCJ2ZXJzaW9uSW5mbyIsImRlYnVnIiwib25EZWJ1Z0luZm8iLCJvbkRldkluZGljYXRvciIsImRldkluZGljYXRvciIsIm9uRGV2VG9vbHNDb25maWciLCJkZXZUb29sc0NvbmZpZyIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsImZvcm1hdHRlZE1lc3NhZ2VzIiwiVFVSQk9QQUNLX0NPTk5FQ1RFRCIsInR5cGUiLCJzZXNzaW9uSWQiLCJUVVJCT1BBQ0tfTUVTU0FHRSIsIm9uVHVyYm9wYWNrTWVzc2FnZSIsIlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUyIsIm9uU2VydmVyQ29tcG9uZW50Q2hhbmdlcyIsImRvY3VtZW50IiwiY29va2llIiwiTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRSIsImRvY3VtZW50RWxlbWVudCIsImlkIiwic3RhcnRUcmFuc2l0aW9uIiwiaG1yUmVmcmVzaCIsIlJFTE9BRF9QQUdFIiwib25SZWxvYWRQYWdlIiwiQURERURfUEFHRSIsIlJFTU9WRURfUEFHRSIsIm9uUGFnZUFkZFJlbW92ZSIsIlNFUlZFUl9FUlJPUiIsImVycm9ySlNPTiIsInBhcnNlIiwiRXJyb3IiLCJERVZfUEFHRVNfTUFOSUZFU1RfVVBEQVRFIiwiREVWVE9PTFNfQ09ORklHIiwiYXNzZXRQcmVmaXgiLCJjaGlsZHJlbiIsImdsb2JhbEVycm9yIiwidXNlRXJyb3JIYW5kbGVyIiwib25VbmhhbmRsZWRFcnJvciIsIm9uVW5oYW5kbGVkUmVqZWN0aW9uIiwid2ViU29ja2V0UmVmIiwidXNlV2Vic29ja2V0IiwidXNlV2Vic29ja2V0UGluZyIsInVzZVNlbmRNZXNzYWdlIiwidXNlRm9yd2FyZENvbnNvbGVMb2ciLCJ1c2VUdXJib3BhY2siLCJ1c2VSb3V0ZXIiLCJwYXRobmFtZSIsInVzZVVudHJhY2tlZFBhdGhuYW1lIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiYXBwSXNyTWFuaWZlc3QiLCJyZWFzb24iLCJET01FeGNlcHRpb24iLCJ3ZWJzb2NrZXQiLCJyZXBvcnRJbnZhbGlkSG1yTWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkiLCJSZXBsYXlTc3JPbmx5RXJyb3JzIiwib25CbG9ja2luZ0Vycm9yIiwib3BlbkVycm9yT3ZlcmxheSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n useSendMessage: function() {\n return useSendMessage;\n },\n useTurbopack: function() {\n return useTurbopack;\n },\n useWebsocket: function() {\n return useWebsocket;\n },\n useWebsocketPing: function() {\n return useWebsocketPing;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../../shared/lib/app-router-context.shared-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\");\nconst _getsocketurl = __webpack_require__(/*! ../get-socket-url */ \"(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\");\nfunction useWebsocket(assetPrefix) {\n const webSocketRef = (0, _react.useRef)(undefined);\n (0, _react.useEffect)(()=>{\n if (webSocketRef.current) {\n return;\n }\n const url = (0, _getsocketurl.getSocketUrl)(assetPrefix);\n webSocketRef.current = new window.WebSocket(\"\" + url + \"/_next/webpack-hmr\");\n }, [\n assetPrefix\n ]);\n return webSocketRef;\n}\nfunction useSendMessage(webSocketRef) {\n const sendMessage = (0, _react.useCallback)((data)=>{\n const socket = webSocketRef.current;\n if (!socket || socket.readyState !== socket.OPEN) {\n return;\n }\n return socket.send(data);\n }, [\n webSocketRef\n ]);\n return sendMessage;\n}\nfunction useTurbopack(sendMessage, onUpdateError) {\n const turbopackState = (0, _react.useRef)({\n init: false,\n // Until the dynamic import resolves, queue any turbopack messages which will be replayed.\n queue: [],\n callback: undefined\n });\n const processTurbopackMessage = (0, _react.useCallback)((msg)=>{\n const { callback, queue } = turbopackState.current;\n if (callback) {\n callback(msg);\n } else {\n queue.push(msg);\n }\n }, []);\n (0, _react.useEffect)(()=>{\n const { current: initCurrent } = turbopackState;\n // TODO(WEB-1589): only install if `process.turbopack` set.\n if (initCurrent.init) {\n return;\n }\n initCurrent.init = true;\n __webpack_require__.e(/*! import() */ \"vendor-chunks/next\").then(__webpack_require__.t.bind(__webpack_require__, /*! @vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts */ \"(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\", 23)).then((param)=>{\n let { connect } = param;\n const { current } = turbopackState;\n connect({\n addMessageListener (cb) {\n current.callback = cb;\n // Replay all Turbopack messages before we were able to establish the HMR client.\n for (const msg of current.queue){\n cb(msg);\n }\n current.queue = undefined;\n },\n sendMessage,\n onUpdateError\n });\n });\n }, [\n sendMessage,\n onUpdateError\n ]);\n return processTurbopackMessage;\n}\nfunction useWebsocketPing(websocketRef) {\n const sendMessage = useSendMessage(websocketRef);\n const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n (0, _react.useEffect)(()=>{\n // Never send pings when using Turbopack as it's not used.\n // Pings were originally used to keep track of active routes in on-demand-entries with webpack.\n if (false) {}\n // Taken from on-demand-entries-client.js\n const interval = setInterval(()=>{\n sendMessage(JSON.stringify({\n event: 'ping',\n tree,\n appDirRoute: true\n }));\n }, 2500);\n return ()=>clearInterval(interval);\n }, [\n tree,\n sendMessage\n ]);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-websocket.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC91c2Utd2Vic29ja2V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQXFCZ0JBLGNBQWM7ZUFBZEE7O0lBY0FDLFlBQVk7ZUFBWkE7O0lBOUJBQyxZQUFZO2VBQVpBOztJQXNGQUMsZ0JBQWdCO2VBQWhCQTs7O21DQTNGMkM7MkRBQ2pCOzBDQUNiO0FBR3RCLFNBQVNELGFBQWFFLFdBQW1CO0lBQzlDLE1BQU1DLGVBQWVDLENBQUFBLEdBQUFBLE9BQUFBLE1BQU0sRUFBWUM7SUFFdkNDLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJSCxhQUFhSSxPQUFPLEVBQUU7WUFDeEI7UUFDRjtRQUVBLE1BQU1DLE1BQU1DLENBQUFBLEdBQUFBLGNBQUFBLFlBQUFBLEVBQWFQO1FBRXpCQyxhQUFhSSxPQUFPLEdBQUcsSUFBSUcsT0FBT0MsU0FBUyxDQUFFLEtBQUVILE1BQUk7SUFDckQsR0FBRztRQUFDTjtLQUFZO0lBRWhCLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTTCxlQUFlSyxZQUE2QztJQUMxRSxNQUFNUyxjQUFjQyxDQUFBQSxHQUFBQSxPQUFBQSxXQUFBQSxFQUNsQixDQUFDQztRQUNDLE1BQU1DLFNBQVNaLGFBQWFJLE9BQU87UUFDbkMsSUFBSSxDQUFDUSxVQUFVQSxPQUFPQyxVQUFVLEtBQUtELE9BQU9FLElBQUksRUFBRTtZQUNoRDtRQUNGO1FBQ0EsT0FBT0YsT0FBT0csSUFBSSxDQUFDSjtJQUNyQixHQUNBO1FBQUNYO0tBQWE7SUFFaEIsT0FBT1M7QUFDVDtBQUVPLFNBQVNiLGFBQ2RhLFdBQThDLEVBQzlDTyxhQUFxQztJQUVyQyxNQUFNQyxpQkFBaUJoQixDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUlwQjtRQUNEaUIsTUFBTTtRQUNOLDBGQUEwRjtRQUMxRkMsT0FBTyxFQUFFO1FBQ1RDLFVBQVVsQjtJQUNaO0lBRUEsTUFBTW1CLDBCQUEwQlgsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBQUEsRUFBWSxDQUFDWTtRQUMzQyxNQUFNLEVBQUVGLFFBQVEsRUFBRUQsS0FBSyxFQUFFLEdBQUdGLGVBQWViLE9BQU87UUFDbEQsSUFBSWdCLFVBQVU7WUFDWkEsU0FBU0U7UUFDWCxPQUFPO1lBQ0xILE1BQU9JLElBQUksQ0FBQ0Q7UUFDZDtJQUNGLEdBQUcsRUFBRTtJQUVMbkIsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLE1BQU0sRUFBRUMsU0FBU29CLFdBQVcsRUFBRSxHQUFHUDtRQUNqQywyREFBMkQ7UUFDM0QsSUFBSU8sWUFBWU4sSUFBSSxFQUFFO1lBQ3BCO1FBQ0Y7UUFDQU0sWUFBWU4sSUFBSSxHQUFHO1FBRW5CLHlRQUVFLENBQ0FPLElBQUksQ0FBQztnQkFBQyxFQUFFQyxPQUFPLEVBQUU7WUFDakIsTUFBTSxFQUFFdEIsT0FBTyxFQUFFLEdBQUdhO1lBQ3BCUyxRQUFRO2dCQUNOQyxvQkFBbUJDLEVBQXdDO29CQUN6RHhCLFFBQVFnQixRQUFRLEdBQUdRO29CQUVuQixpRkFBaUY7b0JBQ2pGLEtBQUssTUFBTU4sT0FBT2xCLFFBQVFlLEtBQUssQ0FBRzt3QkFDaENTLEdBQUdOO29CQUNMO29CQUNBbEIsUUFBUWUsS0FBSyxHQUFHakI7Z0JBQ2xCO2dCQUNBTztnQkFDQU87WUFDRjtRQUNGO0lBQ0YsR0FBRztRQUFDUDtRQUFhTztLQUFjO0lBRS9CLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTdkIsaUJBQ2QrQixZQUE2QztJQUU3QyxNQUFNcEIsY0FBY2QsZUFBZWtDO0lBQ25DLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSx5QkFBeUI7SUFFckQ3QixDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1IsMERBQTBEO1FBQzFELCtGQUErRjtRQUMvRixJQUFJOEIsS0FBcUIsRUFBRSxFQUUxQjtRQUVELHlDQUF5QztRQUN6QyxNQUFNRyxXQUFXQyxZQUFZO1lBQzNCNUIsWUFDRTZCLEtBQUtDLFNBQVMsQ0FBQztnQkFDYkMsT0FBTztnQkFDUFY7Z0JBQ0FXLGFBQWE7WUFDZjtRQUVKLEdBQUc7UUFDSCxPQUFPLElBQU1DLGNBQWNOO0lBQzdCLEdBQUc7UUFBQ047UUFBTXJCO0tBQVk7QUFDeEIiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcZGV2XFxob3QtcmVsb2FkZXJcXGFwcFxcdXNlLXdlYnNvY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEdsb2JhbExheW91dFJvdXRlckNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGdldFNvY2tldFVybCB9IGZyb20gJy4uL2dldC1zb2NrZXQtdXJsJ1xuaW1wb3J0IHR5cGUgeyBUdXJib3BhY2tNc2dUb0Jyb3dzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVdlYnNvY2tldChhc3NldFByZWZpeDogc3RyaW5nKSB7XG4gIGNvbnN0IHdlYlNvY2tldFJlZiA9IHVzZVJlZjxXZWJTb2NrZXQ+KHVuZGVmaW5lZClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3ZWJTb2NrZXRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gZ2V0U29ja2V0VXJsKGFzc2V0UHJlZml4KVxuXG4gICAgd2ViU29ja2V0UmVmLmN1cnJlbnQgPSBuZXcgd2luZG93LldlYlNvY2tldChgJHt1cmx9L19uZXh0L3dlYnBhY2staG1yYClcbiAgfSwgW2Fzc2V0UHJlZml4XSlcblxuICByZXR1cm4gd2ViU29ja2V0UmVmXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZW5kTWVzc2FnZSh3ZWJTb2NrZXRSZWY6IFJldHVyblR5cGU8dHlwZW9mIHVzZVdlYnNvY2tldD4pIHtcbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZGF0YTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzb2NrZXQgPSB3ZWJTb2NrZXRSZWYuY3VycmVudFxuICAgICAgaWYgKCFzb2NrZXQgfHwgc29ja2V0LnJlYWR5U3RhdGUgIT09IHNvY2tldC5PUEVOKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHNvY2tldC5zZW5kKGRhdGEpXG4gICAgfSxcbiAgICBbd2ViU29ja2V0UmVmXVxuICApXG4gIHJldHVybiBzZW5kTWVzc2FnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVHVyYm9wYWNrKFxuICBzZW5kTWVzc2FnZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlU2VuZE1lc3NhZ2U+LFxuICBvblVwZGF0ZUVycm9yOiAoZXJyOiB1bmtub3duKSA9PiB2b2lkXG4pIHtcbiAgY29uc3QgdHVyYm9wYWNrU3RhdGUgPSB1c2VSZWY8e1xuICAgIGluaXQ6IGJvb2xlYW5cbiAgICBxdWV1ZTogQXJyYXk8VHVyYm9wYWNrTXNnVG9Ccm93c2VyPiB8IHVuZGVmaW5lZFxuICAgIGNhbGxiYWNrOiAoKG1zZzogVHVyYm9wYWNrTXNnVG9Ccm93c2VyKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuICB9Pih7XG4gICAgaW5pdDogZmFsc2UsXG4gICAgLy8gVW50aWwgdGhlIGR5bmFtaWMgaW1wb3J0IHJlc29sdmVzLCBxdWV1ZSBhbnkgdHVyYm9wYWNrIG1lc3NhZ2VzIHdoaWNoIHdpbGwgYmUgcmVwbGF5ZWQuXG4gICAgcXVldWU6IFtdLFxuICAgIGNhbGxiYWNrOiB1bmRlZmluZWQsXG4gIH0pXG5cbiAgY29uc3QgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UgPSB1c2VDYWxsYmFjaygobXNnOiBUdXJib3BhY2tNc2dUb0Jyb3dzZXIpID0+IHtcbiAgICBjb25zdCB7IGNhbGxiYWNrLCBxdWV1ZSB9ID0gdHVyYm9wYWNrU3RhdGUuY3VycmVudFxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobXNnKVxuICAgIH0gZWxzZSB7XG4gICAgICBxdWV1ZSEucHVzaChtc2cpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHsgY3VycmVudDogaW5pdEN1cnJlbnQgfSA9IHR1cmJvcGFja1N0YXRlXG4gICAgLy8gVE9ETyhXRUItMTU4OSk6IG9ubHkgaW5zdGFsbCBpZiBgcHJvY2Vzcy50dXJib3BhY2tgIHNldC5cbiAgICBpZiAoaW5pdEN1cnJlbnQuaW5pdCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRDdXJyZW50LmluaXQgPSB0cnVlXG5cbiAgICBpbXBvcnQoXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHJlcXVpcmVzIFwibW9kdWxlUmVzb2x1dGlvblwiOiBcIm5vZGUxNlwiIGluIHRzY29uZmlnLmpzb24gYW5kIG5vdCAudHMgZXh0ZW5zaW9uXG4gICAgICAnQHZlcmNlbC90dXJib3BhY2stZWNtYXNjcmlwdC1ydW50aW1lL2Jyb3dzZXIvZGV2L2htci1jbGllbnQvaG1yLWNsaWVudC50cydcbiAgICApLnRoZW4oKHsgY29ubmVjdCB9KSA9PiB7XG4gICAgICBjb25zdCB7IGN1cnJlbnQgfSA9IHR1cmJvcGFja1N0YXRlXG4gICAgICBjb25uZWN0KHtcbiAgICAgICAgYWRkTWVzc2FnZUxpc3RlbmVyKGNiOiAobXNnOiBUdXJib3BhY2tNc2dUb0Jyb3dzZXIpID0+IHZvaWQpIHtcbiAgICAgICAgICBjdXJyZW50LmNhbGxiYWNrID0gY2JcblxuICAgICAgICAgIC8vIFJlcGxheSBhbGwgVHVyYm9wYWNrIG1lc3NhZ2VzIGJlZm9yZSB3ZSB3ZXJlIGFibGUgdG8gZXN0YWJsaXNoIHRoZSBITVIgY2xpZW50LlxuICAgICAgICAgIGZvciAoY29uc3QgbXNnIG9mIGN1cnJlbnQucXVldWUhKSB7XG4gICAgICAgICAgICBjYihtc2cpXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQucXVldWUgPSB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICAgIG9uVXBkYXRlRXJyb3IsXG4gICAgICB9KVxuICAgIH0pXG4gIH0sIFtzZW5kTWVzc2FnZSwgb25VcGRhdGVFcnJvcl0pXG5cbiAgcmV0dXJuIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXZWJzb2NrZXRQaW5nKFxuICB3ZWJzb2NrZXRSZWY6IFJldHVyblR5cGU8dHlwZW9mIHVzZVdlYnNvY2tldD5cbikge1xuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZVNlbmRNZXNzYWdlKHdlYnNvY2tldFJlZilcbiAgY29uc3QgeyB0cmVlIH0gPSB1c2VDb250ZXh0KEdsb2JhbExheW91dFJvdXRlckNvbnRleHQpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBOZXZlciBzZW5kIHBpbmdzIHdoZW4gdXNpbmcgVHVyYm9wYWNrIGFzIGl0J3Mgbm90IHVzZWQuXG4gICAgLy8gUGluZ3Mgd2VyZSBvcmlnaW5hbGx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhY3RpdmUgcm91dGVzIGluIG9uLWRlbWFuZC1lbnRyaWVzIHdpdGggd2VicGFjay5cbiAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBUYWtlbiBmcm9tIG9uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qc1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudDogJ3BpbmcnLFxuICAgICAgICAgIHRyZWUsXG4gICAgICAgICAgYXBwRGlyUm91dGU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfSwgMjUwMClcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbClcbiAgfSwgW3RyZWUsIHNlbmRNZXNzYWdlXSlcbn1cbiJdLCJuYW1lcyI6WyJ1c2VTZW5kTWVzc2FnZSIsInVzZVR1cmJvcGFjayIsInVzZVdlYnNvY2tldCIsInVzZVdlYnNvY2tldFBpbmciLCJhc3NldFByZWZpeCIsIndlYlNvY2tldFJlZiIsInVzZVJlZiIsInVuZGVmaW5lZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJ1cmwiLCJnZXRTb2NrZXRVcmwiLCJ3aW5kb3ciLCJXZWJTb2NrZXQiLCJzZW5kTWVzc2FnZSIsInVzZUNhbGxiYWNrIiwiZGF0YSIsInNvY2tldCIsInJlYWR5U3RhdGUiLCJPUEVOIiwic2VuZCIsIm9uVXBkYXRlRXJyb3IiLCJ0dXJib3BhY2tTdGF0ZSIsImluaXQiLCJxdWV1ZSIsImNhbGxiYWNrIiwicHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UiLCJtc2ciLCJwdXNoIiwiaW5pdEN1cnJlbnQiLCJ0aGVuIiwiY29ubmVjdCIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsImNiIiwid2Vic29ja2V0UmVmIiwidHJlZSIsInVzZUNvbnRleHQiLCJHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0IiwicHJvY2VzcyIsImVudiIsIlRVUkJPUEFDSyIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJhcHBEaXJSb3V0ZSIsImNsZWFySW50ZXJ2YWwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSocketUrl\", ({\n enumerable: true,\n get: function() {\n return getSocketUrl;\n }\n}));\nconst _normalizedassetprefix = __webpack_require__(/*! ../../../shared/lib/normalized-asset-prefix */ \"(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js\");\nfunction getSocketProtocol(assetPrefix) {\n let protocol = window.location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch (e) {}\n return protocol === 'http:' ? 'ws:' : 'wss:';\n}\nfunction getSocketUrl(assetPrefix) {\n const prefix = (0, _normalizedassetprefix.normalizedAssetPrefix)(assetPrefix);\n const protocol = getSocketProtocol(assetPrefix || '');\n if (URL.canParse(prefix)) {\n // since normalized asset prefix is ensured to be a URL format,\n // we can safely replace the protocol\n return prefix.replace(/^http/, 'ws');\n }\n const { hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? \":\" + port : '') + prefix;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-socket-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2dldC1zb2NrZXQtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBYWdCQTs7O2VBQUFBOzs7bURBYnNCO0FBRXRDLFNBQVNDLGtCQUFrQkMsV0FBbUI7SUFDNUMsSUFBSUMsV0FBV0MsT0FBT0MsUUFBUSxDQUFDRixRQUFRO0lBRXZDLElBQUk7UUFDRix1QkFBdUI7UUFDdkJBLFdBQVcsSUFBSUcsSUFBSUosYUFBYUMsUUFBUTtJQUMxQyxFQUFFLFVBQU0sQ0FBQztJQUVULE9BQU9BLGFBQWEsVUFBVSxRQUFRO0FBQ3hDO0FBRU8sU0FBU0gsYUFBYUUsV0FBK0I7SUFDMUQsTUFBTUssU0FBU0MsQ0FBQUEsR0FBQUEsdUJBQUFBLHFCQUFBQSxFQUFzQk47SUFDckMsTUFBTUMsV0FBV0Ysa0JBQWtCQyxlQUFlO0lBRWxELElBQUlJLElBQUlHLFFBQVEsQ0FBQ0YsU0FBUztRQUN4QiwrREFBK0Q7UUFDL0QscUNBQXFDO1FBQ3JDLE9BQU9BLE9BQU9HLE9BQU8sQ0FBQyxTQUFTO0lBQ2pDO0lBRUEsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRSxHQUFHUixPQUFPQyxRQUFRO0lBQzFDLE9BQVVGLFdBQVMsT0FBSVEsV0FBV0MsQ0FBQUEsT0FBUSxNQUFHQSxPQUFTLEdBQUMsR0FBSUw7QUFDN0QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcZGV2XFxob3QtcmVsb2FkZXJcXGdldC1zb2NrZXQtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZWRBc3NldFByZWZpeCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXgnXG5cbmZ1bmN0aW9uIGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2xcblxuICB0cnkge1xuICAgIC8vIGFzc2V0UHJlZml4IGlzIGEgdXJsXG4gICAgcHJvdG9jb2wgPSBuZXcgVVJMKGFzc2V0UHJlZml4KS5wcm90b2NvbFxuICB9IGNhdGNoIHt9XG5cbiAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cDonID8gJ3dzOicgOiAnd3NzOidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvY2tldFVybChhc3NldFByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gbm9ybWFsaXplZEFzc2V0UHJlZml4KGFzc2V0UHJlZml4KVxuICBjb25zdCBwcm90b2NvbCA9IGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4IHx8ICcnKVxuXG4gIGlmIChVUkwuY2FuUGFyc2UocHJlZml4KSkge1xuICAgIC8vIHNpbmNlIG5vcm1hbGl6ZWQgYXNzZXQgcHJlZml4IGlzIGVuc3VyZWQgdG8gYmUgYSBVUkwgZm9ybWF0LFxuICAgIC8vIHdlIGNhbiBzYWZlbHkgcmVwbGFjZSB0aGUgcHJvdG9jb2xcbiAgICByZXR1cm4gcHJlZml4LnJlcGxhY2UoL15odHRwLywgJ3dzJylcbiAgfVxuXG4gIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQgfSA9IHdpbmRvdy5sb2NhdGlvblxuICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2hvc3RuYW1lfSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30ke3ByZWZpeH1gXG59XG4iXSwibmFtZXMiOlsiZ2V0U29ja2V0VXJsIiwiZ2V0U29ja2V0UHJvdG9jb2wiLCJhc3NldFByZWZpeCIsInByb3RvY29sIiwid2luZG93IiwibG9jYXRpb24iLCJVUkwiLCJwcmVmaXgiLCJub3JtYWxpemVkQXNzZXRQcmVmaXgiLCJjYW5QYXJzZSIsInJlcGxhY2UiLCJob3N0bmFtZSIsInBvcnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/shared.js ***! \******************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n REACT_REFRESH_FULL_RELOAD: function() {\n return REACT_REFRESH_FULL_RELOAD;\n },\n REACT_REFRESH_FULL_RELOAD_FROM_ERROR: function() {\n return REACT_REFRESH_FULL_RELOAD_FROM_ERROR;\n },\n reportInvalidHmrMessage: function() {\n return reportInvalidHmrMessage;\n }\n});\nconst REACT_REFRESH_FULL_RELOAD = '[Fast Refresh] performing full reload\\n\\n' + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + 'You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n' + 'Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n' + 'It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n' + 'Fast Refresh requires at least one parent function component in your React tree.';\nconst REACT_REFRESH_FULL_RELOAD_FROM_ERROR = '[Fast Refresh] performing full reload because your application had an unrecoverable error';\nfunction reportInvalidHmrMessage(message, err) {\n console.warn('[HMR] Invalid message: ' + JSON.stringify(message) + '\\n' + (err instanceof Error && (err == null ? void 0 : err.stack) || ''));\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=shared.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3NoYXJlZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFFYUEseUJBQXlCO2VBQXpCQTs7SUFRQUMsb0NBQW9DO2VBQXBDQTs7SUFHR0MsdUJBQXVCO2VBQXZCQTs7O0FBWFQsTUFBTUYsNEJBQ1gsOENBQ0EsbUlBQ0EscUlBQ0EsK0dBQ0EsOEhBQ0E7QUFFSyxNQUFNQyx1Q0FDWDtBQUVLLFNBQVNDLHdCQUNkQyxPQUFpRCxFQUNqREMsR0FBWTtJQUVaQyxRQUFRQyxJQUFJLENBQ1YsNEJBQ0VDLEtBQUtDLFNBQVMsQ0FBQ0wsV0FDZixPQUNDLENBQUNDLGVBQWVLLFVBQVNMLE9BQUFBLE9BQUFBLEtBQUFBLElBQUFBLElBQUtNLEtBQUFBLEtBQVUsR0FBQztBQUVoRCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcY2xpZW50XFxkZXZcXGhvdC1yZWxvYWRlclxcc2hhcmVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSE1SX0FDVElPTl9UWVBFUyB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCA9XG4gICdbRmFzdCBSZWZyZXNoXSBwZXJmb3JtaW5nIGZ1bGwgcmVsb2FkXFxuXFxuJyArXG4gIFwiRmFzdCBSZWZyZXNoIHdpbGwgcGVyZm9ybSBhIGZ1bGwgcmVsb2FkIHdoZW4geW91IGVkaXQgYSBmaWxlIHRoYXQncyBpbXBvcnRlZCBieSBtb2R1bGVzIG91dHNpZGUgb2YgdGhlIFJlYWN0IHJlbmRlcmluZyB0cmVlLlxcblwiICtcbiAgJ1lvdSBtaWdodCBoYXZlIGEgZmlsZSB3aGljaCBleHBvcnRzIGEgUmVhY3QgY29tcG9uZW50IGJ1dCBhbHNvIGV4cG9ydHMgYSB2YWx1ZSB0aGF0IGlzIGltcG9ydGVkIGJ5IGEgbm9uLVJlYWN0IGNvbXBvbmVudCBmaWxlLlxcbicgK1xuICAnQ29uc2lkZXIgbWlncmF0aW5nIHRoZSBub24tUmVhY3QgY29tcG9uZW50IGV4cG9ydCB0byBhIHNlcGFyYXRlIGZpbGUgYW5kIGltcG9ydGluZyBpdCBpbnRvIGJvdGggZmlsZXMuXFxuXFxuJyArXG4gICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBwYXJlbnQgY29tcG9uZW50IG9mIHRoZSBjb21wb25lbnQgeW91IGVkaXRlZCBpcyBhIGNsYXNzIGNvbXBvbmVudCwgd2hpY2ggZGlzYWJsZXMgRmFzdCBSZWZyZXNoLlxcbicgK1xuICAnRmFzdCBSZWZyZXNoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJlbnQgZnVuY3Rpb24gY29tcG9uZW50IGluIHlvdXIgUmVhY3QgdHJlZS4nXG5cbmV4cG9ydCBjb25zdCBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IgPVxuICAnW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3InXG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZShcbiAgbWVzc2FnZTogSE1SX0FDVElPTl9UWVBFUyB8IE1lc3NhZ2VFdmVudDx1bmtub3duPixcbiAgZXJyOiB1bmtub3duXG4pIHtcbiAgY29uc29sZS53YXJuKFxuICAgICdbSE1SXSBJbnZhbGlkIG1lc3NhZ2U6ICcgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgK1xuICAgICAgJ1xcbicgK1xuICAgICAgKChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnI/LnN0YWNrKSB8fCAnJylcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQiLCJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IiLCJyZXBvcnRJbnZhbGlkSG1yTWVzc2FnZSIsIm1lc3NhZ2UiLCJlcnIiLCJjb25zb2xlIiwid2FybiIsIkpTT04iLCJzdHJpbmdpZnkiLCJFcnJvciIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"TurbopackHmr\", ({\n enumerable: true,\n get: function() {\n return TurbopackHmr;\n }\n}));\nconst _class_private_field_loose_base = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_base */ \"(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\");\nconst _class_private_field_loose_key = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_key */ \"(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\");\n// How long to wait before reporting the HMR start, used to suppress irrelevant\n// `BUILDING` events. Does not impact reported latency.\nconst TURBOPACK_HMR_START_DELAY_MS = 100;\nvar _updatedModules = /*#__PURE__*/ _class_private_field_loose_key._(\"_updatedModules\"), _startMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_startMsSinceEpoch\"), _lastUpdateMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_lastUpdateMsSinceEpoch\"), _deferredReportHmrStartId = /*#__PURE__*/ _class_private_field_loose_key._(\"_deferredReportHmrStartId\"), _reportedHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_reportedHmrStart\"), // as it reports *any* compilation, including fully no-op/cached compilations\n// and those unrelated to HMR. Fixing this would require significant\n// architectural changes.\n//\n// Work around this by deferring any \"rebuilding\" message by 100ms. If we get\n// a BUILT event within that threshold and nothing has changed, just suppress\n// the message entirely.\n_runDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_runDeferredReportHmrStart\"), _cancelDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_cancelDeferredReportHmrStart\"), /** Helper for other `onEvent` methods. */ _onUpdate = /*#__PURE__*/ _class_private_field_loose_key._(\"_onUpdate\");\nclass TurbopackHmr {\n onBuilding() {\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = undefined;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] = Date.now();\n // report the HMR start after a short delay\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = setTimeout(()=>_class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart](), self.__NEXT_HMR_TURBOPACK_REPORT_NOISY_NOOP_EVENTS ? 0 : TURBOPACK_HMR_START_DELAY_MS);\n }\n onTurbopackMessage(msg) {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n const updatedModules = extractModulesFromTurbopackMessage(msg.data);\n for (const module1 of updatedModules){\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules].add(module1);\n }\n }\n onServerComponentChanges() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onReloadPage() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onPageAddRemove() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n /**\n * @returns `null` if the caller should ignore the update entirely. Returns an\n * object with `hasUpdates: false` if the caller should report the end of\n * the HMR in the browser console, but the HMR was a no-op.\n */ onBuilt() {\n // Check that we got *any* `TurbopackMessageAction`, even if\n // `updatedModules` is empty (not everything gets recorded there).\n //\n // There's also a case where `onBuilt` gets called before `onBuilding`,\n // which can happen during initial page load. Ignore that too!\n const hasUpdates = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] != null && _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] != null;\n if (!hasUpdates && !_class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart]) {\n // suppress the update entirely\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n return null;\n }\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n var _class_private_field_loose_base__lastUpdateMsSinceEpoch;\n const result = {\n hasUpdates,\n updatedModules: _class_private_field_loose_base._(this, _updatedModules)[_updatedModules],\n startMsSinceEpoch: _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch],\n endMsSinceEpoch: (_class_private_field_loose_base__lastUpdateMsSinceEpoch = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch]) != null ? _class_private_field_loose_base__lastUpdateMsSinceEpoch : Date.now()\n };\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n return result;\n }\n constructor(){\n Object.defineProperty(this, _runDeferredReportHmrStart, {\n value: runDeferredReportHmrStart\n });\n Object.defineProperty(this, _cancelDeferredReportHmrStart, {\n value: cancelDeferredReportHmrStart\n });\n Object.defineProperty(this, _onUpdate, {\n value: onUpdate\n });\n Object.defineProperty(this, _updatedModules, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _startMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _lastUpdateMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _deferredReportHmrStartId, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _reportedHmrStart, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n }\n}\nfunction runDeferredReportHmrStart() {\n if (_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] != null) {\n console.log('[Fast Refresh] rebuilding');\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = true;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n }\n}\nfunction cancelDeferredReportHmrStart() {\n clearTimeout(_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId]);\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = undefined;\n}\nfunction onUpdate() {\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = Date.now();\n}\nfunction extractModulesFromTurbopackMessage(data) {\n const updatedModules = new Set();\n const updates = Array.isArray(data) ? data : [\n data\n ];\n for (const update of updates){\n // TODO this won't capture changes to CSS since they don't result in a \"merged\" update\n if (update.type !== 'partial' || update.instruction.type !== 'ChunkListUpdate' || update.instruction.merged === undefined) {\n continue;\n }\n for (const mergedUpdate of update.instruction.merged){\n for (const name of Object.keys(mergedUpdate.entries)){\n const res = /(.*)\\s+\\[.*/.exec(name);\n if (res === null) {\n console.error('[Turbopack HMR] Expected module to match pattern: ' + name);\n continue;\n }\n updatedModules.add(res[1]);\n }\n }\n }\n return updatedModules;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=turbopack-hot-reloader-common.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3R1cmJvcGFjay1ob3QtcmVsb2FkZXItY29tbW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBb0JhQTs7O2VBQUFBOzs7OztBQVhiLCtFQUErRTtBQUMvRSx1REFBdUQ7QUFDdkQsTUFBTUMsK0JBQStCO0lBVW5DLHFGQUNBLDJGQUNBLHFHQUNBLHlHQUNBLHlGQU9BLDRFQUE0RSxDQUNDO0FBQzdFLG9FQUFvRTtBQUNwRSx5QkFBeUI7QUFDekIsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0Usd0JBQXdCO0FBQ3hCLDJHQVFBLGlIQW9CQSx3Q0FBd0MsR0FDeEM7QUFqREssTUFBTUQ7SUFpQ1hFLGFBQWE7UUFDWCxzQ0FBSSxFQUFDLG9EQUEwQkM7UUFDL0Isc0NBQUksRUFBQztRQUNMLHNDQUFJLEVBQUMsMENBQXFCQyxLQUFLQyxHQUFHO1FBRWxDLDJDQUEyQztRQUMzQyxzQ0FBSSxFQUFDLHdEQUE0QkMsV0FDL0IsSUFBTSxzQ0FBSSxFQUFDLDJEQUVYQyxLQUFLQyw2Q0FBNkMsR0FDOUMsSUFDQVAsaUJBSHNFO0lBSzlFO0lBUUFRLG1CQUFtQkMsR0FBMkIsRUFBRTtRQUM5QyxzQ0FBSSxFQUFDO1FBQ0wsTUFBTUMsaUJBQWlCQyxtQ0FBbUNGLElBQUlHLElBQUk7UUFDbEUsS0FBSyxNQUFNQyxXQUFVSCxlQUFnQjtZQUNuQyxzQ0FBSSxFQUFDLGtDQUFnQkksR0FBRyxDQUFDRDtRQUMzQjtJQUNGO0lBRUFFLDJCQUEyQjtRQUN6QixzQ0FBSSxFQUFDO0lBQ1A7SUFFQUMsZUFBZTtRQUNiLHNDQUFJLEVBQUM7SUFDUDtJQUVBQyxrQkFBa0I7UUFDaEIsc0NBQUksRUFBQztJQUNQO0lBRUE7Ozs7R0FJQyxHQUNEQyxVQUE0QjtRQUMxQiw0REFBNEQ7UUFDNUQsa0VBQWtFO1FBQ2xFLEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELE1BQU1DLGFBQ0osc0NBQUksRUFBQyxxREFBMkIsUUFBUSxzQ0FBSSxFQUFDLDJDQUFzQjtRQUNyRSxJQUFJLENBQUNBLGNBQWMsQ0FBQyxzQ0FBSSxFQUFDLHVDQUFtQjtZQUMxQywrQkFBK0I7WUFDL0Isc0NBQUksRUFBQztZQUNMLE9BQU87UUFDVDtRQUNBLHNDQUFJLEVBQUM7O1FBRUwsTUFBTUMsU0FBUztZQUNiRDtZQUNBVCxjQUFjLEVBQUUsc0NBQUksRUFBQztZQUNyQlcsaUJBQWlCLEVBQUUsc0NBQUksRUFBQztZQUN4QkMsaUJBQWlCLGlHQUFJLEVBQUMsdUhBQTJCbkIsS0FBS0MsR0FBRztRQUMzRDtRQUNBLHNDQUFJLEVBQUMsb0NBQWtCLElBQUltQjtRQUMzQixzQ0FBSSxFQUFDLHdDQUFvQjtRQUN6QixPQUFPSDtJQUNUO0lBaEdBSSxhQUFjO1FBYWQ7bUJBQUE7O1FBUUE7bUJBQUE7O1FBcUJBO21CQUFBOztRQWhEQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUNBOzttQkFBQTs7UUFDQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUdFLHNDQUFJLEVBQUMsb0NBQWtCLElBQUlEO1FBQzNCLHNDQUFJLEVBQUMsd0NBQW9CO0lBQzNCO0FBOEZGO0FBcEZFO0lBQ0UsSUFBSSxzQ0FBSSxFQUFDLHlEQUE2QixNQUFNO1FBQzFDRSxRQUFRQyxHQUFHLENBQUM7UUFDWixzQ0FBSSxFQUFDLHdDQUFvQjtRQUN6QixzQ0FBSSxFQUFDO0lBQ1A7QUFDRjtBQUVBO0lBQ0VDLGFBQWEsc0NBQUksRUFBQztJQUNsQixzQ0FBSSxFQUFDLHdEQUE0QnpCO0FBQ25DO0FBa0JBO0lBQ0Usc0NBQUksRUFBQztJQUNMLHNDQUFJLEVBQUMsb0RBQTBCQyxLQUFLQyxHQUFHO0FBQ3pDO0FBc0RGLFNBQVNPLG1DQUNQQyxJQUF5QztJQUV6QyxNQUFNRixpQkFBOEIsSUFBSWE7SUFFeEMsTUFBTUssVUFBVUMsTUFBTUMsT0FBTyxDQUFDbEIsUUFBUUEsT0FBTztRQUFDQTtLQUFLO0lBQ25ELEtBQUssTUFBTW1CLFVBQVVILFFBQVM7UUFDNUIsc0ZBQXNGO1FBQ3RGLElBQ0VHLE9BQU9DLElBQUksS0FBSyxhQUNoQkQsT0FBT0UsV0FBVyxDQUFDRCxJQUFJLEtBQUsscUJBQzVCRCxPQUFPRSxXQUFXLENBQUNDLE1BQU0sS0FBS2hDLFdBQzlCO1lBQ0E7UUFDRjtRQUVBLEtBQUssTUFBTWlDLGdCQUFnQkosT0FBT0UsV0FBVyxDQUFDQyxNQUFNLENBQUU7WUFDcEQsS0FBSyxNQUFNRSxRQUFRQyxPQUFPQyxJQUFJLENBQUNILGFBQWFJLE9BQU8sRUFBRztnQkFDcEQsTUFBTUMsTUFBTSxjQUFjQyxJQUFJLENBQUNMO2dCQUMvQixJQUFJSSxRQUFRLE1BQU07b0JBQ2hCZixRQUFRaUIsS0FBSyxDQUNYLHVEQUF1RE47b0JBRXpEO2dCQUNGO2dCQUVBMUIsZUFBZUksR0FBRyxDQUFDMEIsR0FBRyxDQUFDLEVBQUU7WUFDM0I7UUFDRjtJQUNGO0lBRUEsT0FBTzlCO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXGNsaWVudFxcZGV2XFxob3QtcmVsb2FkZXJcXHR1cmJvcGFjay1ob3QtcmVsb2FkZXItY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHVyYm9wYWNrTWVzc2FnZUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVcGRhdGUgYXMgVHVyYm9wYWNrVXBkYXRlIH0gZnJvbSAnLi4vLi4vLi4vYnVpbGQvc3djL3R5cGVzJ1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fTkVYVF9ITVJfVFVSQk9QQUNLX1JFUE9SVF9OT0lTWV9OT09QX0VWRU5UUzogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICB9XG59XG5cbi8vIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHJlcG9ydGluZyB0aGUgSE1SIHN0YXJ0LCB1c2VkIHRvIHN1cHByZXNzIGlycmVsZXZhbnRcbi8vIGBCVUlMRElOR2AgZXZlbnRzLiBEb2VzIG5vdCBpbXBhY3QgcmVwb3J0ZWQgbGF0ZW5jeS5cbmNvbnN0IFRVUkJPUEFDS19ITVJfU1RBUlRfREVMQVlfTVMgPSAxMDBcblxuaW50ZXJmYWNlIEhtclVwZGF0ZSB7XG4gIGhhc1VwZGF0ZXM6IGJvb2xlYW5cbiAgdXBkYXRlZE1vZHVsZXM6IFNldDxzdHJpbmc+XG4gIHN0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXJcbiAgZW5kTXNTaW5jZUVwb2NoOiBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFR1cmJvcGFja0htciB7XG4gICN1cGRhdGVkTW9kdWxlczogU2V0PHN0cmluZz5cbiAgI3N0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2g6IG51bWJlciB8IHVuZGVmaW5lZFxuICAjZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZFxuICAjcmVwb3J0ZWRIbXJTdGFydDogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI3VwZGF0ZWRNb2R1bGVzID0gbmV3IFNldCgpXG4gICAgdGhpcy4jcmVwb3J0ZWRIbXJTdGFydCA9IGZhbHNlXG4gIH1cblxuICAvLyBIQUNLOiBUdXJib3BhY2sgdGVuZHMgdG8gZ2VuZXJhdGUgYSBsb3Qgb2YgaXJyZWxldmFudCBcIkJVSUxESU5HXCIgYWN0aW9ucyxcbiAgLy8gYXMgaXQgcmVwb3J0cyAqYW55KiBjb21waWxhdGlvbiwgaW5jbHVkaW5nIGZ1bGx5IG5vLW9wL2NhY2hlZCBjb21waWxhdGlvbnNcbiAgLy8gYW5kIHRob3NlIHVucmVsYXRlZCB0byBITVIuIEZpeGluZyB0aGlzIHdvdWxkIHJlcXVpcmUgc2lnbmlmaWNhbnRcbiAgLy8gYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLlxuICAvL1xuICAvLyBXb3JrIGFyb3VuZCB0aGlzIGJ5IGRlZmVycmluZyBhbnkgXCJyZWJ1aWxkaW5nXCIgbWVzc2FnZSBieSAxMDBtcy4gSWYgd2UgZ2V0XG4gIC8vIGEgQlVJTFQgZXZlbnQgd2l0aGluIHRoYXQgdGhyZXNob2xkIGFuZCBub3RoaW5nIGhhcyBjaGFuZ2VkLCBqdXN0IHN1cHByZXNzXG4gIC8vIHRoZSBtZXNzYWdlIGVudGlyZWx5LlxuICAjcnVuRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpIHtcbiAgICBpZiAodGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkICE9IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbRmFzdCBSZWZyZXNoXSByZWJ1aWxkaW5nJylcbiAgICAgIHRoaXMuI3JlcG9ydGVkSG1yU3RhcnQgPSB0cnVlXG4gICAgICB0aGlzLiNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICB9XG4gIH1cblxuICAjY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkKVxuICAgIHRoaXMuI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgb25CdWlsZGluZygpIHtcbiAgICB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoID0gdW5kZWZpbmVkXG4gICAgdGhpcy4jY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG4gICAgdGhpcy4jc3RhcnRNc1NpbmNlRXBvY2ggPSBEYXRlLm5vdygpXG5cbiAgICAvLyByZXBvcnQgdGhlIEhNUiBzdGFydCBhZnRlciBhIHNob3J0IGRlbGF5XG4gICAgdGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMuI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKSxcbiAgICAgIC8vIGRlYnVnZ2luZyBmZWF0dXJlOiBkb24ndCBkZWZlci9zdXBwcmVzcyBub2lzeSBuby1vcCBITVIgdXBkYXRlIG1lc3NhZ2VzXG4gICAgICBzZWxmLl9fTkVYVF9ITVJfVFVSQk9QQUNLX1JFUE9SVF9OT0lTWV9OT09QX0VWRU5UU1xuICAgICAgICA/IDBcbiAgICAgICAgOiBUVVJCT1BBQ0tfSE1SX1NUQVJUX0RFTEFZX01TXG4gICAgKVxuICB9XG5cbiAgLyoqIEhlbHBlciBmb3Igb3RoZXIgYG9uRXZlbnRgIG1ldGhvZHMuICovXG4gICNvblVwZGF0ZSgpIHtcbiAgICB0aGlzLiNydW5EZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoID0gRGF0ZS5ub3coKVxuICB9XG5cbiAgb25UdXJib3BhY2tNZXNzYWdlKG1zZzogVHVyYm9wYWNrTWVzc2FnZUFjdGlvbikge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgICBjb25zdCB1cGRhdGVkTW9kdWxlcyA9IGV4dHJhY3RNb2R1bGVzRnJvbVR1cmJvcGFja01lc3NhZ2UobXNnLmRhdGEpXG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZWRNb2R1bGVzLmFkZChtb2R1bGUpXG4gICAgfVxuICB9XG5cbiAgb25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgfVxuXG4gIG9uUmVsb2FkUGFnZSgpIHtcbiAgICB0aGlzLiNvblVwZGF0ZSgpXG4gIH1cblxuICBvblBhZ2VBZGRSZW1vdmUoKSB7XG4gICAgdGhpcy4jb25VcGRhdGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBudWxsYCBpZiB0aGUgY2FsbGVyIHNob3VsZCBpZ25vcmUgdGhlIHVwZGF0ZSBlbnRpcmVseS4gUmV0dXJucyBhblxuICAgKiAgIG9iamVjdCB3aXRoIGBoYXNVcGRhdGVzOiBmYWxzZWAgaWYgdGhlIGNhbGxlciBzaG91bGQgcmVwb3J0IHRoZSBlbmQgb2ZcbiAgICogICB0aGUgSE1SIGluIHRoZSBicm93c2VyIGNvbnNvbGUsIGJ1dCB0aGUgSE1SIHdhcyBhIG5vLW9wLlxuICAgKi9cbiAgb25CdWlsdCgpOiBIbXJVcGRhdGUgfCBudWxsIHtcbiAgICAvLyBDaGVjayB0aGF0IHdlIGdvdCAqYW55KiBgVHVyYm9wYWNrTWVzc2FnZUFjdGlvbmAsIGV2ZW4gaWZcbiAgICAvLyBgdXBkYXRlZE1vZHVsZXNgIGlzIGVtcHR5IChub3QgZXZlcnl0aGluZyBnZXRzIHJlY29yZGVkIHRoZXJlKS5cbiAgICAvL1xuICAgIC8vIFRoZXJlJ3MgYWxzbyBhIGNhc2Ugd2hlcmUgYG9uQnVpbHRgIGdldHMgY2FsbGVkIGJlZm9yZSBgb25CdWlsZGluZ2AsXG4gICAgLy8gd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgaW5pdGlhbCBwYWdlIGxvYWQuIElnbm9yZSB0aGF0IHRvbyFcbiAgICBjb25zdCBoYXNVcGRhdGVzID1cbiAgICAgIHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggIT0gbnVsbCAmJiB0aGlzLiNzdGFydE1zU2luY2VFcG9jaCAhPSBudWxsXG4gICAgaWYgKCFoYXNVcGRhdGVzICYmICF0aGlzLiNyZXBvcnRlZEhtclN0YXJ0KSB7XG4gICAgICAvLyBzdXBwcmVzcyB0aGUgdXBkYXRlIGVudGlyZWx5XG4gICAgICB0aGlzLiNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHRoaXMuI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaGFzVXBkYXRlcyxcbiAgICAgIHVwZGF0ZWRNb2R1bGVzOiB0aGlzLiN1cGRhdGVkTW9kdWxlcyxcbiAgICAgIHN0YXJ0TXNTaW5jZUVwb2NoOiB0aGlzLiNzdGFydE1zU2luY2VFcG9jaCEsXG4gICAgICBlbmRNc1NpbmNlRXBvY2g6IHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggPz8gRGF0ZS5ub3coKSxcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlZE1vZHVsZXMgPSBuZXcgU2V0KClcbiAgICB0aGlzLiNyZXBvcnRlZEhtclN0YXJ0ID0gZmFsc2VcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdE1vZHVsZXNGcm9tVHVyYm9wYWNrTWVzc2FnZShcbiAgZGF0YTogVHVyYm9wYWNrVXBkYXRlIHwgVHVyYm9wYWNrVXBkYXRlW11cbik6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgdXBkYXRlZE1vZHVsZXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG5cbiAgY29uc3QgdXBkYXRlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW2RhdGFdXG4gIGZvciAoY29uc3QgdXBkYXRlIG9mIHVwZGF0ZXMpIHtcbiAgICAvLyBUT0RPIHRoaXMgd29uJ3QgY2FwdHVyZSBjaGFuZ2VzIHRvIENTUyBzaW5jZSB0aGV5IGRvbid0IHJlc3VsdCBpbiBhIFwibWVyZ2VkXCIgdXBkYXRlXG4gICAgaWYgKFxuICAgICAgdXBkYXRlLnR5cGUgIT09ICdwYXJ0aWFsJyB8fFxuICAgICAgdXBkYXRlLmluc3RydWN0aW9uLnR5cGUgIT09ICdDaHVua0xpc3RVcGRhdGUnIHx8XG4gICAgICB1cGRhdGUuaW5zdHJ1Y3Rpb24ubWVyZ2VkID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBtZXJnZWRVcGRhdGUgb2YgdXBkYXRlLmluc3RydWN0aW9uLm1lcmdlZCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG1lcmdlZFVwZGF0ZS5lbnRyaWVzKSkge1xuICAgICAgICBjb25zdCByZXMgPSAvKC4qKVxccytcXFsuKi8uZXhlYyhuYW1lKVxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdbVHVyYm9wYWNrIEhNUl0gRXhwZWN0ZWQgbW9kdWxlIHRvIG1hdGNoIHBhdHRlcm46ICcgKyBuYW1lXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVkTW9kdWxlcy5hZGQocmVzWzFdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkTW9kdWxlc1xufVxuIl0sIm5hbWVzIjpbIlR1cmJvcGFja0htciIsIlRVUkJPUEFDS19ITVJfU1RBUlRfREVMQVlfTVMiLCJvbkJ1aWxkaW5nIiwidW5kZWZpbmVkIiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJzZWxmIiwiX19ORVhUX0hNUl9UVVJCT1BBQ0tfUkVQT1JUX05PSVNZX05PT1BfRVZFTlRTIiwib25UdXJib3BhY2tNZXNzYWdlIiwibXNnIiwidXBkYXRlZE1vZHVsZXMiLCJleHRyYWN0TW9kdWxlc0Zyb21UdXJib3BhY2tNZXNzYWdlIiwiZGF0YSIsIm1vZHVsZSIsImFkZCIsIm9uU2VydmVyQ29tcG9uZW50Q2hhbmdlcyIsIm9uUmVsb2FkUGFnZSIsIm9uUGFnZUFkZFJlbW92ZSIsIm9uQnVpbHQiLCJoYXNVcGRhdGVzIiwicmVzdWx0Iiwic3RhcnRNc1NpbmNlRXBvY2giLCJlbmRNc1NpbmNlRXBvY2giLCJTZXQiLCJjb25zdHJ1Y3RvciIsImNvbnNvbGUiLCJsb2ciLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVzIiwiQXJyYXkiLCJpc0FycmF5IiwidXBkYXRlIiwidHlwZSIsImluc3RydWN0aW9uIiwibWVyZ2VkIiwibWVyZ2VkVXBkYXRlIiwibmFtZSIsIk9iamVjdCIsImtleXMiLCJlbnRyaWVzIiwicmVzIiwiZXhlYyIsImVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/noop-turbopack-hmr.js ***! \*****************************************************************/ /***/ ((module, exports) => { "use strict"; eval("// The Turbopack HMR client can't be properly omitted at the moment (WEB-1589),\n// so instead we remap its import to this file in webpack builds.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"connect\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nfunction connect() {}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=noop-turbopack-hmr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvbm9vcC10dXJib3BhY2staG1yLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQUMvRSxpRUFBaUU7Ozs7OzJDQUNqREE7OztlQUFBQTs7O0FBQVQsU0FBU0EsV0FBVyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXGNsaWVudFxcZGV2XFxub29wLXR1cmJvcGFjay1obXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIFR1cmJvcGFjayBITVIgY2xpZW50IGNhbid0IGJlIHByb3Blcmx5IG9taXR0ZWQgYXQgdGhlIG1vbWVudCAoV0VCLTE1ODkpLFxuLy8gc28gaW5zdGVhZCB3ZSByZW1hcCBpdHMgaW1wb3J0IHRvIHRoaXMgZmlsZSBpbiB3ZWJwYWNrIGJ1aWxkcy5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0KCkge31cbiJdLCJuYW1lcyI6WyJjb25uZWN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/report-hmr-latency.js ***! \*****************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return reportHmrLatency;\n }\n}));\nfunction reportHmrLatency(sendMessage, updatedModules, startMsSinceEpoch, endMsSinceEpoch, hasUpdate) {\n if (hasUpdate === void 0) hasUpdate = true;\n const latencyMs = endMsSinceEpoch - startMsSinceEpoch;\n console.log(\"[Fast Refresh] done in \" + latencyMs + \"ms\");\n if (!hasUpdate) {\n return;\n }\n sendMessage(JSON.stringify({\n event: 'client-hmr-latency',\n id: window.__nextDevClientId,\n startTime: startMsSinceEpoch,\n endTime: endMsSinceEpoch,\n page: window.location.pathname,\n updatedModules,\n // Whether the page (tab) was hidden at the time the event occurred.\n // This can impact the accuracy of the event's timing.\n isPageHidden: document.visibilityState === 'hidden'\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latencyMs);\n }\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=report-hmr-latency.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvcmVwb3J0LWhtci1sYXRlbmN5LmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBaUJBOzs7ZUFBd0JBOzs7QUFBVCxTQUFTQSxpQkFDdEJDLFdBQXNDLEVBQ3RDQyxjQUE4QyxFQUM5Q0MsaUJBQXlCLEVBQ3pCQyxlQUF1QixFQUN2QkMsU0FBeUI7SUFBekJBLElBQUFBLGNBQUFBLEtBQUFBLEdBQUFBLFlBQXFCO0lBRXJCLE1BQU1DLFlBQVlGLGtCQUFrQkQ7SUFDcENJLFFBQVFDLEdBQUcsQ0FBRSw0QkFBeUJGLFlBQVU7SUFDaEQsSUFBSSxDQUFDRCxXQUFXO1FBQ2Q7SUFDRjtJQUNBSixZQUNFUSxLQUFLQyxTQUFTLENBQUM7UUFDYkMsT0FBTztRQUNQQyxJQUFJQyxPQUFPQyxpQkFBaUI7UUFDNUJDLFdBQVdaO1FBQ1hhLFNBQVNaO1FBQ1RhLE1BQU1KLE9BQU9LLFFBQVEsQ0FBQ0MsUUFBUTtRQUM5QmpCO1FBQ0Esb0VBQW9FO1FBQ3BFLHNEQUFzRDtRQUN0RGtCLGNBQWNDLFNBQVNDLGVBQWUsS0FBSztJQUM3QztJQUVGLElBQUlDLEtBQUtDLHFCQUFxQixFQUFFO1FBQzlCRCxLQUFLQyxxQkFBcUIsQ0FBQ2xCO0lBQzdCO0FBQ0YiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGRldlxccmVwb3J0LWhtci1sYXRlbmN5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19ORVhUX0hNUl9MQVRFTkNZX0NCOiAoKGxhdGVuY3lNczogbnVtYmVyKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogTG9ncyBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbXBsZXRlZCBITVIgdG8gdGhlIGNvbnNvbGUsIHRoZSBzZXJ2ZXIgKHZpYSBhXG4gKiBgY2xpZW50LWhtci1sYXRlbmN5YCBldmVudCksIGFuZCB0byBgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0JgIChhIGRlYnVnZ2luZ1xuICogaG9vaykuXG4gKlxuICogQHBhcmFtIGhhc1VwZGF0ZSBTZXQgdGhpcyB0byBgZmFsc2VgIHRvIGF2b2lkIHJlcG9ydGluZyB0aGUgSE1SIGV2ZW50IHZpYSBhXG4gKiAgIGBjbGllbnQtaG1yLWxhdGVuY3lgIGV2ZW50IG9yIHRvIGBzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQmAuIFVzZWQgYnlcbiAqICAgdHVyYm9wYWNrIHdoZW4gd2UgbXVzdCByZXBvcnQgYSBtZXNzYWdlIHRvIHRoZSBicm93c2VyIGNvbnNvbGUgKGJlY2F1c2Ugd2VcbiAqICAgYWxyZWFkeSBsb2dnZWQgYSBcInJlYnVpbGRpbmdcIiBtZXNzYWdlKSwgYnV0IGl0J3Mgbm90IGEgcmVhbCBITVIsIHNvIHdlXG4gKiAgIGRvbid0IHdhbnQgdG8gaW1wYWN0IG91ciB0ZWxlbWV0cnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcG9ydEhtckxhdGVuY3koXG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuICB1cGRhdGVkTW9kdWxlczogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXI+LFxuICBzdGFydE1zU2luY2VFcG9jaDogbnVtYmVyLFxuICBlbmRNc1NpbmNlRXBvY2g6IG51bWJlcixcbiAgaGFzVXBkYXRlOiBib29sZWFuID0gdHJ1ZVxuKSB7XG4gIGNvbnN0IGxhdGVuY3lNcyA9IGVuZE1zU2luY2VFcG9jaCAtIHN0YXJ0TXNTaW5jZUVwb2NoXG4gIGNvbnNvbGUubG9nKGBbRmFzdCBSZWZyZXNoXSBkb25lIGluICR7bGF0ZW5jeU1zfW1zYClcbiAgaWYgKCFoYXNVcGRhdGUpIHtcbiAgICByZXR1cm5cbiAgfVxuICBzZW5kTWVzc2FnZShcbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ2NsaWVudC1obXItbGF0ZW5jeScsXG4gICAgICBpZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkLFxuICAgICAgc3RhcnRUaW1lOiBzdGFydE1zU2luY2VFcG9jaCxcbiAgICAgIGVuZFRpbWU6IGVuZE1zU2luY2VFcG9jaCxcbiAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHVwZGF0ZWRNb2R1bGVzLFxuICAgICAgLy8gV2hldGhlciB0aGUgcGFnZSAodGFiKSB3YXMgaGlkZGVuIGF0IHRoZSB0aW1lIHRoZSBldmVudCBvY2N1cnJlZC5cbiAgICAgIC8vIFRoaXMgY2FuIGltcGFjdCB0aGUgYWNjdXJhY3kgb2YgdGhlIGV2ZW50J3MgdGltaW5nLlxuICAgICAgaXNQYWdlSGlkZGVuOiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nLFxuICAgIH0pXG4gIClcbiAgaWYgKHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKSB7XG4gICAgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IobGF0ZW5jeU1zKVxuICB9XG59XG4iXSwibmFtZXMiOlsicmVwb3J0SG1yTGF0ZW5jeSIsInNlbmRNZXNzYWdlIiwidXBkYXRlZE1vZHVsZXMiLCJzdGFydE1zU2luY2VFcG9jaCIsImVuZE1zU2luY2VFcG9jaCIsImhhc1VwZGF0ZSIsImxhdGVuY3lNcyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJpZCIsIndpbmRvdyIsIl9fbmV4dERldkNsaWVudElkIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsInBhZ2UiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiaXNQYWdlSGlkZGVuIiwiZG9jdW1lbnQiLCJ2aXNpYmlsaXR5U3RhdGUiLCJzZWxmIiwiX19ORVhUX0hNUl9MQVRFTkNZX0NCIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/report-hmr-latency.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/runtime-error-handler.js ***! \********************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RuntimeErrorHandler\", ({\n enumerable: true,\n get: function() {\n return RuntimeErrorHandler;\n }\n}));\nconst RuntimeErrorHandler = {\n hadRuntimeError: false\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=runtime-error-handler.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvcnVudGltZS1lcnJvci1oYW5kbGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7dURBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHNCQUFzQjtJQUNqQ0MsaUJBQWlCO0FBQ25CIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcY2xpZW50XFxkZXZcXHJ1bnRpbWUtZXJyb3ItaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUnVudGltZUVycm9ySGFuZGxlciA9IHtcbiAgaGFkUnVudGltZUVycm9yOiBmYWxzZSxcbn1cbiJdLCJuYW1lcyI6WyJSdW50aW1lRXJyb3JIYW5kbGVyIiwiaGFkUnVudGltZUVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/flight-data-helpers.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/flight-data-helpers.js ***! \**************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getFlightDataPartsFromPath: function() {\n return getFlightDataPartsFromPath;\n },\n getNextFlightSegmentPath: function() {\n return getNextFlightSegmentPath;\n },\n normalizeFlightData: function() {\n return normalizeFlightData;\n },\n prepareFlightRouterStateForRequest: function() {\n return prepareFlightRouterStateForRequest;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction getFlightDataPartsFromPath(flightDataPath) {\n // Pick the last 4 items from the `FlightDataPath` to get the [tree, seedData, viewport, isHeadPartial].\n const flightDataPathLength = 4;\n // tree, seedData, and head are *always* the last three items in the `FlightDataPath`.\n const [tree, seedData, head, isHeadPartial] = flightDataPath.slice(-flightDataPathLength);\n // The `FlightSegmentPath` is everything except the last three items. For a root render, it won't be present.\n const segmentPath = flightDataPath.slice(0, -flightDataPathLength);\n var _segmentPath_;\n return {\n // TODO: Unify these two segment path helpers. We are inconsistently pushing an empty segment (\"\")\n // to the start of the segment path in some places which makes it hard to use solely the segment path.\n // Look for \"// TODO-APP: remove ''\" in the codebase.\n pathToSegment: segmentPath.slice(0, -1),\n segmentPath,\n // if the `FlightDataPath` corresponds with the root, there'll be no segment path,\n // in which case we default to ''.\n segment: (_segmentPath_ = segmentPath[segmentPath.length - 1]) != null ? _segmentPath_ : '',\n tree,\n seedData,\n head,\n isHeadPartial,\n isRootRender: flightDataPath.length === flightDataPathLength\n };\n}\nfunction getNextFlightSegmentPath(flightSegmentPath) {\n // Since `FlightSegmentPath` is a repeated tuple of `Segment` and `ParallelRouteKey`, we slice off two items\n // to get the next segment path.\n return flightSegmentPath.slice(2);\n}\nfunction normalizeFlightData(flightData) {\n // FlightData can be a string when the server didn't respond with a proper flight response,\n // or when a redirect happens, to signal to the client that it needs to perform an MPA navigation.\n if (typeof flightData === 'string') {\n return flightData;\n }\n return flightData.map((flightDataPath)=>getFlightDataPartsFromPath(flightDataPath));\n}\nfunction prepareFlightRouterStateForRequest(flightRouterState, isHmrRefresh) {\n // HMR requests need the complete, unmodified state for proper functionality\n if (isHmrRefresh) {\n return encodeURIComponent(JSON.stringify(flightRouterState));\n }\n return encodeURIComponent(JSON.stringify(stripClientOnlyDataFromFlightRouterState(flightRouterState)));\n}\n/**\n * Recursively strips client-only data from FlightRouterState while preserving\n * server-needed information for proper rendering decisions.\n */ function stripClientOnlyDataFromFlightRouterState(flightRouterState) {\n const [segment, parallelRoutes, _url, refreshMarker, isRootLayout, hasLoadingBoundary] = flightRouterState;\n // __PAGE__ segments are always fetched from the server, so there's\n // no need to send them up\n const cleanedSegment = stripSearchParamsFromPageSegment(segment);\n // Recursively process parallel routes\n const cleanedParallelRoutes = {};\n for (const [key, childState] of Object.entries(parallelRoutes)){\n cleanedParallelRoutes[key] = stripClientOnlyDataFromFlightRouterState(childState);\n }\n const result = [\n cleanedSegment,\n cleanedParallelRoutes,\n null,\n shouldPreserveRefreshMarker(refreshMarker) ? refreshMarker : null\n ];\n // Append optional fields if present\n if (isRootLayout !== undefined) {\n result[4] = isRootLayout;\n }\n if (hasLoadingBoundary !== undefined) {\n result[5] = hasLoadingBoundary;\n }\n return result;\n}\n/**\n * Strips search parameters from __PAGE__ segments to prevent sensitive\n * client-side data from being sent to the server.\n */ function stripSearchParamsFromPageSegment(segment) {\n if (typeof segment === 'string' && segment.startsWith(_segment.PAGE_SEGMENT_KEY + '?')) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n}\n/**\n * Determines whether the refresh marker should be sent to the server\n * Client-only markers like 'refresh' are stripped, while server-needed markers\n * like 'refetch' and 'inside-shared-layout' are preserved.\n */ function shouldPreserveRefreshMarker(refreshMarker) {\n return Boolean(refreshMarker && refreshMarker !== 'refresh');\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=flight-data-helpers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9mbGlnaHQtZGF0YS1oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQWdDZ0JBLDBCQUEwQjtlQUExQkE7O0lBNEJBQyx3QkFBd0I7ZUFBeEJBOztJQVFBQyxtQkFBbUI7ZUFBbkJBOztJQXNCQUMsa0NBQWtDO2VBQWxDQTs7O3FDQWpGaUI7QUF1QjFCLFNBQVNILDJCQUNkSSxjQUE4QjtJQUU5Qix3R0FBd0c7SUFDeEcsTUFBTUMsdUJBQXVCO0lBQzdCLHNGQUFzRjtJQUN0RixNQUFNLENBQUNDLE1BQU1DLFVBQVVDLE1BQU1DLGNBQWMsR0FDekNMLGVBQWVNLEtBQUssQ0FBQyxDQUFDTDtJQUN4Qiw2R0FBNkc7SUFDN0csTUFBTU0sY0FBY1AsZUFBZU0sS0FBSyxDQUFDLEdBQUcsQ0FBQ0w7UUFVbENNO0lBUlgsT0FBTztRQUNMLGtHQUFrRztRQUNsRyxzR0FBc0c7UUFDdEcscURBQXFEO1FBQ3JEQyxlQUFlRCxZQUFZRCxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3JDQztRQUNBLGtGQUFrRjtRQUNsRixrQ0FBa0M7UUFDbENFLFNBQVNGLENBQUFBLGdCQUFBQSxXQUFXLENBQUNBLFlBQVlHLE1BQU0sR0FBRyxPQUFFLE9BQW5DSCxnQkFBdUM7UUFDaERMO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FNLGNBQWNYLGVBQWVVLE1BQU0sS0FBS1Q7SUFDMUM7QUFDRjtBQUVPLFNBQVNKLHlCQUNkZSxpQkFBb0M7SUFFcEMsNEdBQTRHO0lBQzVHLGdDQUFnQztJQUNoQyxPQUFPQSxrQkFBa0JOLEtBQUssQ0FBQztBQUNqQztBQUVPLFNBQVNSLG9CQUNkZSxVQUFzQjtJQUV0QiwyRkFBMkY7SUFDM0Ysa0dBQWtHO0lBQ2xHLElBQUksT0FBT0EsZUFBZSxVQUFVO1FBQ2xDLE9BQU9BO0lBQ1Q7SUFFQSxPQUFPQSxXQUFXQyxHQUFHLENBQUMsQ0FBQ2QsaUJBQ3JCSiwyQkFBMkJJO0FBRS9CO0FBVU8sU0FBU0QsbUNBQ2RnQixpQkFBb0MsRUFDcENDLFlBQXNCO0lBRXRCLDRFQUE0RTtJQUM1RSxJQUFJQSxjQUFjO1FBQ2hCLE9BQU9DLG1CQUFtQkMsS0FBS0MsU0FBUyxDQUFDSjtJQUMzQztJQUVBLE9BQU9FLG1CQUNMQyxLQUFLQyxTQUFTLENBQUNDLHlDQUF5Q0w7QUFFNUQ7QUFFQTs7O0NBR0MsR0FDRCxTQUFTSyx5Q0FDUEwsaUJBQW9DO0lBRXBDLE1BQU0sQ0FDSk4sU0FDQVksZ0JBQ0FDLE1BQ0FDLGVBQ0FDLGNBQ0FDLG1CQUNELEdBQUdWO0lBRUosbUVBQW1FO0lBQ25FLDBCQUEwQjtJQUMxQixNQUFNVyxpQkFBaUJDLGlDQUFpQ2xCO0lBRXhELHNDQUFzQztJQUN0QyxNQUFNbUIsd0JBQThELENBQUM7SUFDckUsS0FBSyxNQUFNLENBQUNDLEtBQUtDLFdBQVcsSUFBSUMsT0FBT0MsT0FBTyxDQUFDWCxnQkFBaUI7UUFDOURPLHFCQUFxQixDQUFDQyxJQUFJLEdBQ3hCVCx5Q0FBeUNVO0lBQzdDO0lBRUEsTUFBTUcsU0FBNEI7UUFDaENQO1FBQ0FFO1FBQ0E7UUFDQU0sNEJBQTRCWCxpQkFBaUJBLGdCQUFnQjtLQUM5RDtJQUVELG9DQUFvQztJQUNwQyxJQUFJQyxpQkFBaUJXLFdBQVc7UUFDOUJGLE1BQU0sQ0FBQyxFQUFFLEdBQUdUO0lBQ2Q7SUFDQSxJQUFJQyx1QkFBdUJVLFdBQVc7UUFDcENGLE1BQU0sQ0FBQyxFQUFFLEdBQUdSO0lBQ2Q7SUFFQSxPQUFPUTtBQUNUO0FBRUE7OztDQUdDLEdBQ0QsU0FBU04saUNBQWlDbEIsT0FBZ0I7SUFDeEQsSUFDRSxPQUFPQSxZQUFZLFlBQ25CQSxRQUFRMkIsVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRyxNQUN0QztRQUNBLE9BQU9BLFNBQUFBLGdCQUFnQjtJQUN6QjtJQUNBLE9BQU81QjtBQUNUO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVN5Qiw0QkFDUFgsYUFBbUM7SUFFbkMsT0FBT2UsUUFBUWYsaUJBQWlCQSxrQkFBa0I7QUFDcEQiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxzcmNcXGNsaWVudFxcZmxpZ2h0LWRhdGEtaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIENhY2hlTm9kZVNlZWREYXRhLFxuICBGbGlnaHREYXRhLFxuICBGbGlnaHREYXRhUGF0aCxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxuICBTZWdtZW50LFxufSBmcm9tICcuLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgSGVhZERhdGEgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IFBBR0VfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWRGbGlnaHREYXRhID0ge1xuICAvKipcbiAgICogVGhlIGZ1bGwgYEZsaWdodFNlZ21lbnRQYXRoYCBpbmNsdXNpdmUgb2YgdGhlIGZpbmFsIGBTZWdtZW50YFxuICAgKi9cbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG4gIC8qKlxuICAgKiBUaGUgYEZsaWdodFNlZ21lbnRQYXRoYCBleGNsdXNpdmUgb2YgdGhlIGZpbmFsIGBTZWdtZW50YFxuICAgKi9cbiAgcGF0aFRvU2VnbWVudDogRmxpZ2h0U2VnbWVudFBhdGhcbiAgc2VnbWVudDogU2VnbWVudFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsXG4gIGhlYWQ6IEhlYWREYXRhXG4gIGlzSGVhZFBhcnRpYWw6IGJvb2xlYW5cbiAgaXNSb290UmVuZGVyOiBib29sZWFuXG59XG5cbi8vIFRPRE86IFdlIHNob3VsZCBvbmx5IGhhdmUgdG8gZXhwb3J0IGBub3JtYWxpemVGbGlnaHREYXRhYCwgaG93ZXZlciBiZWNhdXNlIHRoZSBpbml0aWFsIGZsaWdodCBkYXRhXG4vLyB0aGF0IGdldHMgcGFzc2VkIHRvIGBjcmVhdGVJbml0aWFsUm91dGVyU3RhdGVgIGRvZXNuJ3QgY29uZm9ybSB0byB0aGUgYEZsaWdodERhdGFQYXRoYCB0eXBlIChpdCdzIG1pc3NpbmcgdGhlIHJvb3Qgc2VnbWVudClcbi8vIHdlJ3JlIGN1cnJlbnRseSBleHBvcnRpbmcgaXQgc28gd2UgY2FuIHVzZSBpdCBkaXJlY3RseS4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiB0aGUgdW5pZmljYXRpb24gb2Zcbi8vIHRoZSBkaWZmZXJlbnQgd2F5cyB3ZSBleHByZXNzIGBGbGlnaHRTZWdtZW50UGF0aGAuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgoXG4gIGZsaWdodERhdGFQYXRoOiBGbGlnaHREYXRhUGF0aFxuKTogTm9ybWFsaXplZEZsaWdodERhdGEge1xuICAvLyBQaWNrIHRoZSBsYXN0IDQgaXRlbXMgZnJvbSB0aGUgYEZsaWdodERhdGFQYXRoYCB0byBnZXQgdGhlIFt0cmVlLCBzZWVkRGF0YSwgdmlld3BvcnQsIGlzSGVhZFBhcnRpYWxdLlxuICBjb25zdCBmbGlnaHREYXRhUGF0aExlbmd0aCA9IDRcbiAgLy8gdHJlZSwgc2VlZERhdGEsIGFuZCBoZWFkIGFyZSAqYWx3YXlzKiB0aGUgbGFzdCB0aHJlZSBpdGVtcyBpbiB0aGUgYEZsaWdodERhdGFQYXRoYC5cbiAgY29uc3QgW3RyZWUsIHNlZWREYXRhLCBoZWFkLCBpc0hlYWRQYXJ0aWFsXSA9XG4gICAgZmxpZ2h0RGF0YVBhdGguc2xpY2UoLWZsaWdodERhdGFQYXRoTGVuZ3RoKVxuICAvLyBUaGUgYEZsaWdodFNlZ21lbnRQYXRoYCBpcyBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbGFzdCB0aHJlZSBpdGVtcy4gRm9yIGEgcm9vdCByZW5kZXIsIGl0IHdvbid0IGJlIHByZXNlbnQuXG4gIGNvbnN0IHNlZ21lbnRQYXRoID0gZmxpZ2h0RGF0YVBhdGguc2xpY2UoMCwgLWZsaWdodERhdGFQYXRoTGVuZ3RoKVxuXG4gIHJldHVybiB7XG4gICAgLy8gVE9ETzogVW5pZnkgdGhlc2UgdHdvIHNlZ21lbnQgcGF0aCBoZWxwZXJzLiBXZSBhcmUgaW5jb25zaXN0ZW50bHkgcHVzaGluZyBhbiBlbXB0eSBzZWdtZW50IChcIlwiKVxuICAgIC8vIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VnbWVudCBwYXRoIGluIHNvbWUgcGxhY2VzIHdoaWNoIG1ha2VzIGl0IGhhcmQgdG8gdXNlIHNvbGVseSB0aGUgc2VnbWVudCBwYXRoLlxuICAgIC8vIExvb2sgZm9yIFwiLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1wiIGluIHRoZSBjb2RlYmFzZS5cbiAgICBwYXRoVG9TZWdtZW50OiBzZWdtZW50UGF0aC5zbGljZSgwLCAtMSksXG4gICAgc2VnbWVudFBhdGgsXG4gICAgLy8gaWYgdGhlIGBGbGlnaHREYXRhUGF0aGAgY29ycmVzcG9uZHMgd2l0aCB0aGUgcm9vdCwgdGhlcmUnbGwgYmUgbm8gc2VnbWVudCBwYXRoLFxuICAgIC8vIGluIHdoaWNoIGNhc2Ugd2UgZGVmYXVsdCB0byAnJy5cbiAgICBzZWdtZW50OiBzZWdtZW50UGF0aFtzZWdtZW50UGF0aC5sZW5ndGggLSAxXSA/PyAnJyxcbiAgICB0cmVlLFxuICAgIHNlZWREYXRhLFxuICAgIGhlYWQsXG4gICAgaXNIZWFkUGFydGlhbCxcbiAgICBpc1Jvb3RSZW5kZXI6IGZsaWdodERhdGFQYXRoLmxlbmd0aCA9PT0gZmxpZ2h0RGF0YVBhdGhMZW5ndGgsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRGbGlnaHRTZWdtZW50UGF0aChcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG4pOiBGbGlnaHRTZWdtZW50UGF0aCB7XG4gIC8vIFNpbmNlIGBGbGlnaHRTZWdtZW50UGF0aGAgaXMgYSByZXBlYXRlZCB0dXBsZSBvZiBgU2VnbWVudGAgYW5kIGBQYXJhbGxlbFJvdXRlS2V5YCwgd2Ugc2xpY2Ugb2ZmIHR3byBpdGVtc1xuICAvLyB0byBnZXQgdGhlIG5leHQgc2VnbWVudCBwYXRoLlxuICByZXR1cm4gZmxpZ2h0U2VnbWVudFBhdGguc2xpY2UoMilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUZsaWdodERhdGEoXG4gIGZsaWdodERhdGE6IEZsaWdodERhdGFcbik6IE5vcm1hbGl6ZWRGbGlnaHREYXRhW10gfCBzdHJpbmcge1xuICAvLyBGbGlnaHREYXRhIGNhbiBiZSBhIHN0cmluZyB3aGVuIHRoZSBzZXJ2ZXIgZGlkbid0IHJlc3BvbmQgd2l0aCBhIHByb3BlciBmbGlnaHQgcmVzcG9uc2UsXG4gIC8vIG9yIHdoZW4gYSByZWRpcmVjdCBoYXBwZW5zLCB0byBzaWduYWwgdG8gdGhlIGNsaWVudCB0aGF0IGl0IG5lZWRzIHRvIHBlcmZvcm0gYW4gTVBBIG5hdmlnYXRpb24uXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmxpZ2h0RGF0YVxuICB9XG5cbiAgcmV0dXJuIGZsaWdodERhdGEubWFwKChmbGlnaHREYXRhUGF0aCkgPT5cbiAgICBnZXRGbGlnaHREYXRhUGFydHNGcm9tUGF0aChmbGlnaHREYXRhUGF0aClcbiAgKVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcmVwYXJlIHRoZSBmbGlnaHQgcm91dGVyIHN0YXRlIGZvciB0aGUgcmVxdWVzdC5cbiAqIEl0IHJlbW92ZXMgbWFya2VycyB0aGF0IGFyZSBub3QgbmVlZGVkIGJ5IHRoZSBzZXJ2ZXIsIGFuZCBhcmUgcHVyZWx5IHVzZWRcbiAqIGZvciBzdGFzaGluZyBzdGF0ZSBvbiB0aGUgY2xpZW50LlxuICogQHBhcmFtIGZsaWdodFJvdXRlclN0YXRlIC0gVGhlIGZsaWdodCByb3V0ZXIgc3RhdGUgdG8gcHJlcGFyZS5cbiAqIEBwYXJhbSBpc0htclJlZnJlc2ggLSBXaGV0aGVyIHRoaXMgaXMgYW4gSE1SIHJlZnJlc2ggcmVxdWVzdC5cbiAqIEByZXR1cm5zIFRoZSBwcmVwYXJlZCBmbGlnaHQgcm91dGVyIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdChcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBpc0htclJlZnJlc2g/OiBib29sZWFuXG4pOiBzdHJpbmcge1xuICAvLyBITVIgcmVxdWVzdHMgbmVlZCB0aGUgY29tcGxldGUsIHVubW9kaWZpZWQgc3RhdGUgZm9yIHByb3BlciBmdW5jdGlvbmFsaXR5XG4gIGlmIChpc0htclJlZnJlc2gpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZsaWdodFJvdXRlclN0YXRlKSlcbiAgfVxuXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgSlNPTi5zdHJpbmdpZnkoc3RyaXBDbGllbnRPbmx5RGF0YUZyb21GbGlnaHRSb3V0ZXJTdGF0ZShmbGlnaHRSb3V0ZXJTdGF0ZSkpXG4gIClcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBzdHJpcHMgY2xpZW50LW9ubHkgZGF0YSBmcm9tIEZsaWdodFJvdXRlclN0YXRlIHdoaWxlIHByZXNlcnZpbmdcbiAqIHNlcnZlci1uZWVkZWQgaW5mb3JtYXRpb24gZm9yIHByb3BlciByZW5kZXJpbmcgZGVjaXNpb25zLlxuICovXG5mdW5jdGlvbiBzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlKFxuICBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IEZsaWdodFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW1xuICAgIHNlZ21lbnQsXG4gICAgcGFyYWxsZWxSb3V0ZXMsXG4gICAgX3VybCwgLy8gSW50ZW50aW9uYWxseSB1bnVzZWQgLSBVUkxzIGFyZSBjbGllbnQtb25seVxuICAgIHJlZnJlc2hNYXJrZXIsXG4gICAgaXNSb290TGF5b3V0LFxuICAgIGhhc0xvYWRpbmdCb3VuZGFyeSxcbiAgXSA9IGZsaWdodFJvdXRlclN0YXRlXG5cbiAgLy8gX19QQUdFX18gc2VnbWVudHMgYXJlIGFsd2F5cyBmZXRjaGVkIGZyb20gdGhlIHNlcnZlciwgc28gdGhlcmUnc1xuICAvLyBubyBuZWVkIHRvIHNlbmQgdGhlbSB1cFxuICBjb25zdCBjbGVhbmVkU2VnbWVudCA9IHN0cmlwU2VhcmNoUGFyYW1zRnJvbVBhZ2VTZWdtZW50KHNlZ21lbnQpXG5cbiAgLy8gUmVjdXJzaXZlbHkgcHJvY2VzcyBwYXJhbGxlbCByb3V0ZXNcbiAgY29uc3QgY2xlYW5lZFBhcmFsbGVsUm91dGVzOiB7IFtrZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlIH0gPSB7fVxuICBmb3IgKGNvbnN0IFtrZXksIGNoaWxkU3RhdGVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgIGNsZWFuZWRQYXJhbGxlbFJvdXRlc1trZXldID1cbiAgICAgIHN0cmlwQ2xpZW50T25seURhdGFGcm9tRmxpZ2h0Um91dGVyU3RhdGUoY2hpbGRTdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRmxpZ2h0Um91dGVyU3RhdGUgPSBbXG4gICAgY2xlYW5lZFNlZ21lbnQsXG4gICAgY2xlYW5lZFBhcmFsbGVsUm91dGVzLFxuICAgIG51bGwsIC8vIFVSTHMgb21pdHRlZCAtIHNlcnZlciByZWNvbnN0cnVjdHMgcGF0aHMgZnJvbSBzZWdtZW50c1xuICAgIHNob3VsZFByZXNlcnZlUmVmcmVzaE1hcmtlcihyZWZyZXNoTWFya2VyKSA/IHJlZnJlc2hNYXJrZXIgOiBudWxsLFxuICBdXG5cbiAgLy8gQXBwZW5kIG9wdGlvbmFsIGZpZWxkcyBpZiBwcmVzZW50XG4gIGlmIChpc1Jvb3RMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlc3VsdFs0XSA9IGlzUm9vdExheW91dFxuICB9XG4gIGlmIChoYXNMb2FkaW5nQm91bmRhcnkgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlc3VsdFs1XSA9IGhhc0xvYWRpbmdCb3VuZGFyeVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIFN0cmlwcyBzZWFyY2ggcGFyYW1ldGVycyBmcm9tIF9fUEFHRV9fIHNlZ21lbnRzIHRvIHByZXZlbnQgc2Vuc2l0aXZlXG4gKiBjbGllbnQtc2lkZSBkYXRhIGZyb20gYmVpbmcgc2VudCB0byB0aGUgc2VydmVyLlxuICovXG5mdW5jdGlvbiBzdHJpcFNlYXJjaFBhcmFtc0Zyb21QYWdlU2VnbWVudChzZWdtZW50OiBTZWdtZW50KTogU2VnbWVudCB7XG4gIGlmIChcbiAgICB0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycgJiZcbiAgICBzZWdtZW50LnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSArICc/JylcbiAgKSB7XG4gICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgfVxuICByZXR1cm4gc2VnbWVudFxufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcmVmcmVzaCBtYXJrZXIgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxuICogQ2xpZW50LW9ubHkgbWFya2VycyBsaWtlICdyZWZyZXNoJyBhcmUgc3RyaXBwZWQsIHdoaWxlIHNlcnZlci1uZWVkZWQgbWFya2Vyc1xuICogbGlrZSAncmVmZXRjaCcgYW5kICdpbnNpZGUtc2hhcmVkLWxheW91dCcgYXJlIHByZXNlcnZlZC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkUHJlc2VydmVSZWZyZXNoTWFya2VyKFxuICByZWZyZXNoTWFya2VyOiBGbGlnaHRSb3V0ZXJTdGF0ZVszXVxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHJlZnJlc2hNYXJrZXIgJiYgcmVmcmVzaE1hcmtlciAhPT0gJ3JlZnJlc2gnKVxufVxuIl0sIm5hbWVzIjpbImdldEZsaWdodERhdGFQYXJ0c0Zyb21QYXRoIiwiZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsInByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QiLCJmbGlnaHREYXRhUGF0aCIsImZsaWdodERhdGFQYXRoTGVuZ3RoIiwidHJlZSIsInNlZWREYXRhIiwiaGVhZCIsImlzSGVhZFBhcnRpYWwiLCJzbGljZSIsInNlZ21lbnRQYXRoIiwicGF0aFRvU2VnbWVudCIsInNlZ21lbnQiLCJsZW5ndGgiLCJpc1Jvb3RSZW5kZXIiLCJmbGlnaHRTZWdtZW50UGF0aCIsImZsaWdodERhdGEiLCJtYXAiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsImlzSG1yUmVmcmVzaCIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlIiwicGFyYWxsZWxSb3V0ZXMiLCJfdXJsIiwicmVmcmVzaE1hcmtlciIsImlzUm9vdExheW91dCIsImhhc0xvYWRpbmdCb3VuZGFyeSIsImNsZWFuZWRTZWdtZW50Iiwic3RyaXBTZWFyY2hQYXJhbXNGcm9tUGFnZVNlZ21lbnQiLCJjbGVhbmVkUGFyYWxsZWxSb3V0ZXMiLCJrZXkiLCJjaGlsZFN0YXRlIiwiT2JqZWN0IiwiZW50cmllcyIsInJlc3VsdCIsInNob3VsZFByZXNlcnZlUmVmcmVzaE1hcmtlciIsInVuZGVmaW5lZCIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwiQm9vbGVhbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/flight-data-helpers.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/lib/console.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/lib/console.js ***! \******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatConsoleArgs: function() {\n return formatConsoleArgs;\n },\n parseConsoleArgs: function() {\n return parseConsoleArgs;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nfunction formatObject(arg, depth) {\n switch(typeof arg){\n case 'object':\n if (arg === null) {\n return 'null';\n } else if (Array.isArray(arg)) {\n let result = '[';\n if (depth < 1) {\n for(let i = 0; i < arg.length; i++){\n if (result !== '[') {\n result += ',';\n }\n if (Object.prototype.hasOwnProperty.call(arg, i)) {\n result += formatObject(arg[i], depth + 1);\n }\n }\n } else {\n result += arg.length > 0 ? '...' : '';\n }\n result += ']';\n return result;\n } else if (arg instanceof Error) {\n return arg + '';\n } else {\n const keys = Object.keys(arg);\n let result = '{';\n if (depth < 1) {\n for(let i = 0; i < keys.length; i++){\n const key = keys[i];\n const desc = Object.getOwnPropertyDescriptor(arg, 'key');\n if (desc && !desc.get && !desc.set) {\n const jsonKey = JSON.stringify(key);\n if (jsonKey !== '\"' + key + '\"') {\n result += jsonKey + ': ';\n } else {\n result += key + ': ';\n }\n result += formatObject(desc.value, depth + 1);\n }\n }\n } else {\n result += keys.length > 0 ? '...' : '';\n }\n result += '}';\n return result;\n }\n case 'string':\n return JSON.stringify(arg);\n case 'number':\n case 'bigint':\n case 'boolean':\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return String(arg);\n }\n}\nfunction formatConsoleArgs(args) {\n let message;\n let idx;\n if (typeof args[0] === 'string') {\n message = args[0];\n idx = 1;\n } else {\n message = '';\n idx = 0;\n }\n let result = '';\n let startQuote = false;\n for(let i = 0; i < message.length; ++i){\n const char = message[i];\n if (char !== '%' || i === message.length - 1 || idx >= args.length) {\n result += char;\n continue;\n }\n const code = message[++i];\n switch(code){\n case 'c':\n {\n // TODO: We should colorize with HTML instead of turning into a string.\n // Ignore for now.\n result = startQuote ? \"\" + result + \"]\" : \"[\" + result;\n startQuote = !startQuote;\n idx++;\n break;\n }\n case 'O':\n case 'o':\n {\n result += formatObject(args[idx++], 0);\n break;\n }\n case 'd':\n case 'i':\n {\n result += parseInt(args[idx++], 10);\n break;\n }\n case 'f':\n {\n result += parseFloat(args[idx++]);\n break;\n }\n case 's':\n {\n result += String(args[idx++]);\n break;\n }\n default:\n result += '%' + code;\n }\n }\n for(; idx < args.length; idx++){\n result += (idx > 0 ? ' ' : '') + formatObject(args[idx], 0);\n }\n return result;\n}\nfunction parseConsoleArgs(args) {\n // See\n // https://github.com/facebook/react/blob/65a56d0e99261481c721334a3ec4561d173594cd/packages/react-devtools-shared/src/backend/flight/renderer.js#L88-L93\n //\n // Logs replayed from the server look like this:\n // [\n // \"%c%s%c%o\\n\\n%s\\n\\n%s\\n\",\n // \"background: #e6e6e6; ...\",\n // \" Server \", // can also be e.g. \" Prerender \"\n // \"\",\n // Error,\n // \"The above error occurred in the component.\",\n // ...\n // ]\n if (args.length > 3 && typeof args[0] === 'string' && args[0].startsWith('%c%s%c') && typeof args[1] === 'string' && typeof args[2] === 'string' && typeof args[3] === 'string') {\n const environmentName = args[2];\n const maybeError = args[4];\n return {\n environmentName: environmentName.trim(),\n error: (0, _iserror.default)(maybeError) ? maybeError : null\n };\n }\n return {\n environmentName: null,\n error: null\n };\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=console.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saWIvY29uc29sZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE2RGdCQSxpQkFBaUI7ZUFBakJBOztJQTJEQUMsZ0JBQWdCO2VBQWhCQTs7Ozs4RUF4SEk7QUFFcEIsU0FBU0MsYUFBYUMsR0FBWSxFQUFFQyxLQUFhO0lBQy9DLE9BQVEsT0FBT0Q7UUFDYixLQUFLO1lBQ0gsSUFBSUEsUUFBUSxNQUFNO2dCQUNoQixPQUFPO1lBQ1QsT0FBTyxJQUFJRSxNQUFNQyxPQUFPLENBQUNILE1BQU07Z0JBQzdCLElBQUlJLFNBQVM7Z0JBQ2IsSUFBSUgsUUFBUSxHQUFHO29CQUNiLElBQUssSUFBSUksSUFBSSxHQUFHQSxJQUFJTCxJQUFJTSxNQUFNLEVBQUVELElBQUs7d0JBQ25DLElBQUlELFdBQVcsS0FBSzs0QkFDbEJBLFVBQVU7d0JBQ1o7d0JBQ0EsSUFBSUcsT0FBT0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1YsS0FBS0ssSUFBSTs0QkFDaERELFVBQVVMLGFBQWFDLEdBQUcsQ0FBQ0ssRUFBRSxFQUFFSixRQUFRO3dCQUN6QztvQkFDRjtnQkFDRixPQUFPO29CQUNMRyxVQUFVSixJQUFJTSxNQUFNLEdBQUcsSUFBSSxRQUFRO2dCQUNyQztnQkFDQUYsVUFBVTtnQkFDVixPQUFPQTtZQUNULE9BQU8sSUFBSUosZUFBZVcsT0FBTztnQkFDL0IsT0FBT1gsTUFBTTtZQUNmLE9BQU87Z0JBQ0wsTUFBTVksT0FBT0wsT0FBT0ssSUFBSSxDQUFDWjtnQkFDekIsSUFBSUksU0FBUztnQkFDYixJQUFJSCxRQUFRLEdBQUc7b0JBQ2IsSUFBSyxJQUFJSSxJQUFJLEdBQUdBLElBQUlPLEtBQUtOLE1BQU0sRUFBRUQsSUFBSzt3QkFDcEMsTUFBTVEsTUFBTUQsSUFBSSxDQUFDUCxFQUFFO3dCQUNuQixNQUFNUyxPQUFPUCxPQUFPUSx3QkFBd0IsQ0FBQ2YsS0FBSzt3QkFDbEQsSUFB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QUFFLEtBQUssWUFDbkIsT0FBT0EsSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUNuQixPQUFPQSxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQ25CO1FBQ0EsTUFBTVMsa0JBQWtCVCxJQUFJLENBQUMsRUFBRTtRQUMvQixNQUFNVSxhQUFhVixJQUFJLENBQUMsRUFBRTtRQUUxQixPQUFPO1lBQ0xTLGlCQUFpQkEsZ0JBQWdCRSxJQUFJO1lBQ3JDQyxPQUFPQyxDQUFBQSxHQUFBQSxTQUFBQSxPQUFBQSxFQUFRSCxjQUFjQSxhQUFhO1FBQzVDO0lBQ0Y7SUFFQSxPQUFPO1FBQ0xELGlCQUFpQjtRQUNqQkcsT0FBTztJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxjbGllbnRcXGxpYlxcY29uc29sZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNFcnJvciBmcm9tICcuLi8uLi9saWIvaXMtZXJyb3InXG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdChhcmc6IHVua25vd24sIGRlcHRoOiBudW1iZXIpIHtcbiAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmIChhcmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJ1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdbJ1xuICAgICAgICBpZiAoZGVwdGggPCAxKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09ICdbJykge1xuICAgICAgICAgICAgICByZXN1bHQgKz0gJywnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZywgaSkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdE9iamVjdChhcmdbaV0sIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGFyZy5sZW5ndGggPiAwID8gJy4uLicgOiAnJ1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSAnXSdcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gYXJnICsgJydcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcmcpXG4gICAgICAgIGxldCByZXN1bHQgPSAneydcbiAgICAgICAgaWYgKGRlcHRoIDwgMSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxuICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJnLCAna2V5JylcbiAgICAgICAgICAgIGlmIChkZXNjICYmICFkZXNjLmdldCAmJiAhZGVzYy5zZXQpIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbktleSA9IEpTT04uc3RyaW5naWZ5KGtleSlcbiAgICAgICAgICAgICAgaWYgKGpzb25LZXkgIT09ICdcIicgKyBrZXkgKyAnXCInKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGpzb25LZXkgKyAnOiAnXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGtleSArICc6ICdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGRlc2MudmFsdWUsIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGtleXMubGVuZ3RoID4gMCA/ICcuLi4nIDogJydcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gJ30nXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZylcbiAgICBjYXNlICdudW1iZXInOlxuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbnNvbGVBcmdzKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB7XG4gIGxldCBtZXNzYWdlOiBzdHJpbmdcbiAgbGV0IGlkeDogbnVtYmVyXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gYXJnc1swXVxuICAgIGlkeCA9IDFcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gJydcbiAgICBpZHggPSAwXG4gIH1cbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCBzdGFydFF1b3RlID0gZmFsc2VcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXNzYWdlLmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY2hhciA9IG1lc3NhZ2VbaV1cbiAgICBpZiAoY2hhciAhPT0gJyUnIHx8IGkgPT09IG1lc3NhZ2UubGVuZ3RoIC0gMSB8fCBpZHggPj0gYXJncy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvZGUgPSBtZXNzYWdlWysraV1cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgJ2MnOiB7XG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBjb2xvcml6ZSB3aXRoIEhUTUwgaW5zdGVhZCBvZiB0dXJuaW5nIGludG8gYSBzdHJpbmcuXG4gICAgICAgIC8vIElnbm9yZSBmb3Igbm93LlxuICAgICAgICByZXN1bHQgPSBzdGFydFF1b3RlID8gYCR7cmVzdWx0fV1gIDogYFske3Jlc3VsdH1gXG4gICAgICAgIHN0YXJ0UXVvdGUgPSAhc3RhcnRRdW90ZVxuICAgICAgICBpZHgrK1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnTyc6XG4gICAgICBjYXNlICdvJzoge1xuICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGFyZ3NbaWR4KytdLCAwKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZCc6XG4gICAgICBjYXNlICdpJzoge1xuICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQoYXJnc1tpZHgrK10gYXMgYW55LCAxMClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2YnOiB7XG4gICAgICAgIHJlc3VsdCArPSBwYXJzZUZsb2F0KGFyZ3NbaWR4KytdIGFzIGFueSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3MnOiB7XG4gICAgICAgIHJlc3VsdCArPSBTdHJpbmcoYXJnc1tpZHgrK10pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXN1bHQgKz0gJyUnICsgY29kZVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBpZHggPCBhcmdzLmxlbmd0aDsgaWR4KyspIHtcbiAgICByZXN1bHQgKz0gKGlkeCA+IDAgPyAnICcgOiAnJykgKyBmb3JtYXRPYmplY3QoYXJnc1tpZHhdLCAwKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25zb2xlQXJncyhhcmdzOiB1bmtub3duW10pOiB7XG4gIGVudmlyb25tZW50TmFtZTogc3RyaW5nIHwgbnVsbFxuICBlcnJvcjogRXJyb3IgfCBudWxsXG59IHtcbiAgLy8gU2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzY1YTU2ZDBlOTkyNjE0ODFjNzIxMzM0YTNlYzQ1NjFkMTczNTk0Y2QvcGFja2FnZXMvcmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL2ZsaWdodC9yZW5kZXJlci5qcyNMODgtTDkzXG4gIC8vXG4gIC8vIExvZ3MgcmVwbGF5ZWQgZnJvbSB0aGUgc2VydmVyIGxvb2sgbGlrZSB0aGlzOlxuICAvLyBbXG4gIC8vICAgXCIlYyVzJWMlb1xcblxcbiVzXFxuXFxuJXNcXG5cIixcbiAgLy8gICBcImJhY2tncm91bmQ6ICNlNmU2ZTY7IC4uLlwiLFxuICAvLyAgIFwiIFNlcnZlciBcIiwgLy8gY2FuIGFsc28gYmUgZS5nLiBcIiBQcmVyZW5kZXIgXCJcbiAgLy8gICBcIlwiLFxuICAvLyAgIEVycm9yLFxuICAvLyAgIFwiVGhlIGFib3ZlIGVycm9yIG9jY3VycmVkIGluIHRoZSA8UGFnZT4gY29tcG9uZW50LlwiLFxuICAvLyAgIC4uLlxuICAvLyBdXG4gIGlmIChcbiAgICBhcmdzLmxlbmd0aCA+IDMgJiZcbiAgICB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgJiZcbiAgICBhcmdzWzBdLnN0YXJ0c1dpdGgoJyVjJXMlYycpICYmXG4gICAgdHlwZW9mIGFyZ3NbMV0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbMl0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbM10gPT09ICdzdHJpbmcnXG4gICkge1xuICAgIGNvbnN0IGVudmlyb25tZW50TmFtZSA9IGFyZ3NbMl1cbiAgICBjb25zdCBtYXliZUVycm9yID0gYXJnc1s0XVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnROYW1lLnRyaW0oKSxcbiAgICAgIGVycm9yOiBpc0Vycm9yKG1heWJlRXJyb3IpID8gbWF5YmVFcnJvciA6IG51bGwsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnZpcm9ubWVudE5hbWU6IG51bGwsXG4gICAgZXJyb3I6IG51bGwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRDb25zb2xlQXJncyIsInBhcnNlQ29uc29sZUFyZ3MiLCJmb3JtYXRPYmplY3QiLCJhcmciLCJkZXB0aCIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImkiLCJsZW5ndGgiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJFcnJvciIsImtleXMiLCJrZXkiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0Iiwic2V0IiwianNvbktleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWx1ZSIsIlN0cmluZyIsImFyZ3MiLCJtZXNzYWdlIiwiaWR4Iiwic3RhcnRRdW90ZSIsImNoYXIiLCJjb2RlIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0Iiwic3RhcnRzV2l0aCIsImVudmlyb25tZW50TmFtZSIsIm1heWJlRXJyb3IiLCJ0cmltIiwiZXJyb3IiLCJpc0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/lib/console.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/client/route-params.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/route-params.js ***! \*******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n doesStaticSegmentAppearInURL: function() {\n return doesStaticSegmentAppearInURL;\n },\n getCacheKeyForDynamicParam: function() {\n return getCacheKeyForDynamicParam;\n },\n getParamValueFromCacheKey: function() {\n return getParamValueFromCacheKey;\n },\n getRenderedPathname: function() {\n return getRenderedPathname;\n },\n getRenderedSearch: function() {\n return getRenderedSearch;\n },\n parseDynamicParamFromURLPart: function() {\n return parseDynamicParamFromURLPart;\n },\n urlToUrlWithoutFlightMarker: function() {\n return urlToUrlWithoutFlightMarker;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../shared/lib/segment-cache/segment-value-encoding */ \"(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _approuterheaders = __webpack_require__(/*! ./components/app-router-headers */ \"(ssr)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getRenderedSearch(response) {\n // If the server performed a rewrite, the search params used to render the\n // page will be different from the params in the request URL. In this case,\n // the response will include a header that gives the rewritten search query.\n const rewrittenQuery = response.headers.get(_approuterheaders.NEXT_REWRITTEN_QUERY_HEADER);\n if (rewrittenQuery !== null) {\n return rewrittenQuery === '' ? '' : '?' + rewrittenQuery;\n }\n // If the header is not present, there was no rewrite, so we use the search\n // query of the response URL.\n return urlToUrlWithoutFlightMarker(new URL(response.url)).search;\n}\nfunction getRenderedPathname(response) {\n // If the server performed a rewrite, the pathname used to render the\n // page will be different from the pathname in the request URL. In this case,\n // the response will include a header that gives the rewritten pathname.\n const rewrittenPath = response.headers.get(_approuterheaders.NEXT_REWRITTEN_PATH_HEADER);\n return rewrittenPath != null ? rewrittenPath : urlToUrlWithoutFlightMarker(new URL(response.url)).pathname;\n}\nfunction parseDynamicParamFromURLPart(paramType, pathnameParts, partIndex) {\n // This needs to match the behavior in get-dynamic-param.ts.\n switch(paramType){\n // Catchalls\n case 'c':\n case 'ci':\n {\n // Catchalls receive all the remaining URL parts. If there are no\n // remaining pathname parts, return an empty array.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : [];\n }\n // Optional catchalls\n case 'oc':\n {\n // Optional catchalls receive all the remaining URL parts, unless this is\n // the end of the pathname, in which case they return null.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : null;\n }\n // Dynamic\n case 'd':\n case 'di':\n {\n if (partIndex >= pathnameParts.length) {\n // The route tree expected there to be more parts in the URL than there\n // actually are. This could happen if the x-nextjs-rewritten-path header\n // is incorrectly set, or potentially due to bug in Next.js. TODO:\n // Should this be a hard error? During a prefetch, we can just abort.\n // During a client navigation, we could trigger a hard refresh. But if\n // it happens during initial render, we don't really have any\n // recovery options.\n return '';\n }\n return encodeURIComponent(pathnameParts[partIndex]);\n }\n default:\n paramType;\n return '';\n }\n}\nfunction doesStaticSegmentAppearInURL(segment) {\n // This is not a parameterized segment; however, we need to determine\n // whether or not this segment appears in the URL. For example, this route\n // groups do not appear in the URL, so they should be skipped. Any other\n // special cases must be handled here.\n // TODO: Consider encoding this directly into the router tree instead of\n // inferring it on the client based on the segment type. Something like\n // a `doesAppearInURL` flag in FlightRouterState.\n if (segment === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY || // For some reason, the loader tree sometimes includes extra __PAGE__\n // \"layouts\" when part of a parallel route. But it's not a leaf node.\n // Otherwise, we wouldn't need this special case because pages are\n // always leaf nodes.\n // TODO: Investigate why the loader produces these fake page segments.\n segment.startsWith(_segment.PAGE_SEGMENT_KEY) || // Route groups.\n segment[0] === '(' && segment.endsWith(')') || segment === _segment.DEFAULT_SEGMENT_KEY || segment === '/_not-found') {\n return false;\n } else {\n // All other segment types appear in the URL\n return true;\n }\n}\nfunction getCacheKeyForDynamicParam(paramValue, renderedSearch) {\n // This needs to match the logic in get-dynamic-param.ts, until we're able to\n // unify the various implementations so that these are always computed on\n // the client.\n if (typeof paramValue === 'string') {\n // TODO: Refactor or remove this helper function to accept a string rather\n // than the whole segment type. Also we can probably just append the\n // search string instead of turning it into JSON.\n const pageSegmentWithSearchParams = (0, _segment.addSearchParamsIfPageSegment)(paramValue, Object.fromEntries(new URLSearchParams(renderedSearch)));\n return pageSegmentWithSearchParams;\n } else if (paramValue === null) {\n return '';\n } else {\n return paramValue.join('/');\n }\n}\nfunction urlToUrlWithoutFlightMarker(url) {\n const urlWithoutFlightParameters = new URL(url);\n urlWithoutFlightParameters.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n if (false) {}\n return urlWithoutFlightParameters;\n}\nfunction getParamValueFromCacheKey(paramCacheKey, paramType) {\n // Turn the cache key string sent by the server (as part of FlightRouterState)\n // into a value that can be passed to `useParams` and client components.\n const isCatchAll = paramType === 'c' || paramType === 'oc';\n if (isCatchAll) {\n // Catch-all param keys are a concatenation of the path segments.\n // See equivalent logic in `getSelectedParams`.\n // TODO: We should just pass the array directly, rather than concatenate\n // it to a string and then split it back to an array. It needs to be an\n // array in some places, like when passing a key React, but we can convert\n // it at runtime in those places.\n return paramCacheKey.split('/');\n }\n return paramCacheKey;\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-params.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1wYXJhbXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBOEZnQkEsNEJBQTRCO2VBQTVCQTs7SUE0QkFDLDBCQUEwQjtlQUExQkE7O0lBd0NBQyx5QkFBeUI7ZUFBekJBOztJQTNIQUMsbUJBQW1CO2VBQW5CQTs7SUFoQkFDLGlCQUFpQjtlQUFqQkE7O0lBMEJBQyw0QkFBNEI7ZUFBNUJBOztJQWdHQUMsMkJBQTJCO2VBQTNCQTs7O3FDQTVJVDtrREFDa0M7OENBS2xDO0FBWUEsU0FBU0Ysa0JBQWtCRyxRQUFxQjtJQUNyRCwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxNQUFNQyxpQkFBaUJELFNBQVNFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxrQkFBQUEsMkJBQTJCO0lBQ3ZFLElBQUlILG1CQUFtQixNQUFNO1FBQzNCLE9BQ0VBLG1CQUFtQixLQUFLLEtBQUssTUFBTUE7SUFFdkM7SUFDQSwyRUFBMkU7SUFDM0UsNkJBQTZCO0lBQzdCLE9BQU9GLDRCQUE0QixJQUFJTSxJQUFJTCxTQUFTTSxHQUFHLEdBQ3BEQyxNQUFNO0FBQ1g7QUFFTyxTQUFTWCxvQkFBb0JJLFFBQXFCO0lBQ3ZELHFFQUFxRTtJQUNyRSw2RUFBNkU7SUFDN0Usd0VBQXdFO0lBQ3hFLE1BQU1RLGdCQUFnQlIsU0FBU0UsT0FBTyxDQUFDQyxHQUFHLENBQUNNLGtCQUFBQSwwQkFBMEI7SUFDckUsT0FDRUQsaUJBQUFBLE9BQUFBLGdCQUFpQlQsNEJBQTRCLElBQUlNLElBQUlMLFNBQVNNLEdBQUcsR0FBR0ksUUFBUTtBQUVoRjtBQUVPLFNBQVNaLDZCQUNkYSxTQUFpQyxFQUNqQ0MsYUFBNEIsRUFDNUJDLFNBQWlCO0lBRWpCLDREQUE0RDtJQUM1RCxPQUFRRjtRQUNOLFlBQVk7UUFDWixLQUFLO1FBQ0wsS0FBSztZQUFNO2dCQUNULGlFQUFpRTtnQkFDakUsbURBQW1EO2dCQUNuRCxPQUFPRSxZQUFZRCxjQUFjRSxNQUFNLEdBQ25DRixjQUFjRyxLQUFLLENBQUNGLFdBQVdHLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQyxtQkFBbUJELE1BQzdELEVBQUU7WUFDUjtRQUNBLHFCQUFxQjtRQUNyQixLQUFLO1lBQU07Z0JBQ1QseUVBQXlFO2dCQUN6RSwyREFBMkQ7Z0JBQzNELE9BQU9KLFlBQVlELGNBQWNFLE1BQU0sR0FDbkNGLGNBQWNHLEtBQUssQ0FBQ0YsV0FBV0csR0FBRyxDQUFDLENBQUNDLElBQU1DLG1CQUFtQkQsTUFDN0Q7WUFDTjtRQUNBLFVBQVU7UUFDVixLQUFLO1FBQ0wsS0FBSztZQUFNO2dCQUNULElBQUlKLGFBQWFELGNBQWNFLE1BQU0sRUFBRTtvQkFDckMsdUVBQXVFO29CQUN2RSx3RUFBd0U7b0JBQ3hFLGtFQUFrRTtvQkFDbEUscUVBQXFFO29CQUNyRSxzRUFBc0U7b0JBQ3RFLDZEQUE2RDtvQkFDN0Qsb0JBQW9CO29CQUNwQixPQUFPO2dCQUNUO2dCQUNBLE9BQU9JLG1CQUFtQk4sYUFBYSxDQUFDQyxVQUFVO1lBQ3BEO1FBQ0E7WUFDRUY7WUFDQSxPQUFPO0lBQ1g7QUFDRjtBQUVPLFNBQVNsQiw2QkFBNkIwQixPQUFlO0lBQzFELHFFQUFxRTtJQUNyRSwwRUFBMEU7SUFDMUUsd0VBQXdFO0lBQ3hFLHNDQUFzQztJQUN0Qyx3RUFBd0U7SUFDeEUsdUVBQXVFO0lBQ3ZFLGlEQUFpRDtJQUNqRCxJQUNFQSxZQUFZQyxzQkFBQUEsd0JBQXdCLElBQ3BDLHFFQUFxRTtJQUNyRSxxRUFBcUU7SUFDckUsa0VBQWtFO0lBQ2xFLHFCQUFxQjtJQUNyQixzRUFBc0U7SUFDdEVELFFBQVFFLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEtBQ25DLGdCQUFnQjtJQUNmSCxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU9BLFFBQVFJLFFBQVEsQ0FBQyxRQUN4Q0osWUFBWUssU0FBQUEsbUJBQW1CLElBQy9CTCxZQUFZLGVBQ1o7UUFDQSxPQUFPO0lBQ1QsT0FBTztRQUNMLDRDQUE0QztRQUM1QyxPQUFPO0lBQ1Q7QUFDRjtBQUVPLFNBQVN6QiwyQkFDZCtCLFVBQTJCLEVBQzNCQyxjQUFnQztJQUVoQyw2RUFBNkU7SUFDN0UseUVBQXlFO0lBQ3pFLGNBQWM7SUFDZCxJQUFJLE9BQU9ELGVBQWUsVUFBVTtRQUNsQywwRUFBMEU7UUFDMUUsb0VBQW9FO1FBQ3BFLGlEQUFpRDtRQUNqRCxNQUFNRSw4QkFBOEJDLENBQUFBLEdBQUFBLFNBQUFBLDRCQUFBQSxFQUNsQ0gsWUFDQUksT0FBT0MsV0FBVyxDQUFDLElBQUlDLGdCQUFnQkw7UUFFekMsT0FBT0M7SUFDVCxPQUFPLElBQUlGLGVBQWUsTUFBTTtRQUM5QixPQUFPO0lBQ1QsT0FBTztRQUNMLE9BQU9BLFdBQVdPLElBQUksQ0FBQztJQUN6QjtBQUNGO0FBRU8sU0FBU2pDLDRCQUE0Qk8sR0FBUTtJQUNsRCxNQUFNMkIsNkJBQTZCLElBQUk1QixJQUFJQztJQUMzQzJCLDJCQUEyQkMsWUFBWSxDQUFDQyxNQUFNLENBQUNDLGtCQUFBQSxvQkFBb0I7SUFDbkUsSUFBSUMsS0FBb0IsRUFBbUIsRUFVMUM7SUFDRCxPQUFPSjtBQUNUO0FBRU8sU0FBU3RDLDBCQUNkOEMsYUFBcUIsRUFDckI5QixTQUFpQztJQUVqQyw4RUFBOEU7SUFDOUUsd0VBQXdFO0lBQ3hFLE1BQU0rQixhQUFhL0IsY0FBYyxPQUFPQSxjQUFjO0lBQ3RELElBQUkrQixZQUFZO1FBQ2QsaUVBQWlFO1FBQ2pFLCtDQUErQztRQUMvQyx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLDBFQUEwRTtRQUMxRSxpQ0FBaUM7UUFDakMsT0FBT0QsY0FBY0UsS0FBSyxDQUFDO0lBQzdCO0lBQ0EsT0FBT0Y7QUFDVCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXHNyY1xcY2xpZW50XFxyb3V0ZS1wYXJhbXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEeW5hbWljUGFyYW1UeXBlc1Nob3J0IH0gZnJvbSAnLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQge1xuICBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50LFxuICBERUZBVUxUX1NFR01FTlRfS0VZLFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBST09UX1NFR01FTlRfUkVRVUVTVF9LRVkgfSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQtY2FjaGUvc2VnbWVudC12YWx1ZS1lbmNvZGluZydcbmltcG9ydCB7XG4gIE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSLFxuICBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIsXG4gIE5FWFRfUlNDX1VOSU9OX1FVRVJZLFxufSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUnXG5pbXBvcnQgdHlwZSB7IFJTQ1Jlc3BvbnNlIH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbVZhbHVlID0gc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IG51bGxcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbSA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIHZhbHVlOiBSb3V0ZVBhcmFtVmFsdWVcbiAgdHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuZGVyZWRTZWFyY2gocmVzcG9uc2U6IFJTQ1Jlc3BvbnNlKTogTm9ybWFsaXplZFNlYXJjaCB7XG4gIC8vIElmIHRoZSBzZXJ2ZXIgcGVyZm9ybWVkIGEgcmV3cml0ZSwgdGhlIHNlYXJjaCBwYXJhbXMgdXNlZCB0byByZW5kZXIgdGhlXG4gIC8vIHBhZ2Ugd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcGFyYW1zIGluIHRoZSByZXF1ZXN0IFVSTC4gSW4gdGhpcyBjYXNlLFxuICAvLyB0aGUgcmVzcG9uc2Ugd2lsbCBpbmNsdWRlIGEgaGVhZGVyIHRoYXQgZ2l2ZXMgdGhlIHJld3JpdHRlbiBzZWFyY2ggcXVlcnkuXG4gIGNvbnN0IHJld3JpdHRlblF1ZXJ5ID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSKVxuICBpZiAocmV3cml0dGVuUXVlcnkgIT09IG51bGwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcmV3cml0dGVuUXVlcnkgPT09ICcnID8gJycgOiAnPycgKyByZXdyaXR0ZW5RdWVyeVxuICAgICkgYXMgTm9ybWFsaXplZFNlYXJjaFxuICB9XG4gIC8vIElmIHRoZSBoZWFkZXIgaXMgbm90IHByZXNlbnQsIHRoZXJlIHdhcyBubyByZXdyaXRlLCBzbyB3ZSB1c2UgdGhlIHNlYXJjaFxuICAvLyBxdWVyeSBvZiB0aGUgcmVzcG9uc2UgVVJMLlxuICByZXR1cm4gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzcG9uc2UudXJsKSlcbiAgICAuc2VhcmNoIGFzIE5vcm1hbGl6ZWRTZWFyY2hcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlcmVkUGF0aG5hbWUocmVzcG9uc2U6IFJTQ1Jlc3BvbnNlKTogc3RyaW5nIHtcbiAgLy8gSWYgdGhlIHNlcnZlciBwZXJmb3JtZWQgYSByZXdyaXRlLCB0aGUgcGF0aG5hbWUgdXNlZCB0byByZW5kZXIgdGhlXG4gIC8vIHBhZ2Ugd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcGF0aG5hbWUgaW4gdGhlIHJlcXVlc3QgVVJMLiBJbiB0aGlzIGNhc2UsXG4gIC8vIHRoZSByZXNwb25zZSB3aWxsIGluY2x1ZGUgYSBoZWFkZXIgdGhhdCBnaXZlcyB0aGUgcmV3cml0dGVuIHBhdGhuYW1lLlxuICBjb25zdCByZXdyaXR0ZW5QYXRoID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9SRVdSSVRURU5fUEFUSF9IRUFERVIpXG4gIHJldHVybiAoXG4gICAgcmV3cml0dGVuUGF0aCA/PyB1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIobmV3IFVSTChyZXNwb25zZS51cmwpKS5wYXRobmFtZVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0KFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnQsXG4gIHBhdGhuYW1lUGFydHM6IEFycmF5PHN0cmluZz4sXG4gIHBhcnRJbmRleDogbnVtYmVyXG4pOiBSb3V0ZVBhcmFtVmFsdWUge1xuICAvLyBUaGlzIG5lZWRzIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBpbiBnZXQtZHluYW1pYy1wYXJhbS50cy5cbiAgc3dpdGNoIChwYXJhbVR5cGUpIHtcbiAgICAvLyBDYXRjaGFsbHNcbiAgICBjYXNlICdjJzpcbiAgICBjYXNlICdjaSc6IHtcbiAgICAgIC8vIENhdGNoYWxscyByZWNlaXZlIGFsbCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cy4gSWYgdGhlcmUgYXJlIG5vXG4gICAgICAvLyByZW1haW5pbmcgcGF0aG5hbWUgcGFydHMsIHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAgICAgIHJldHVybiBwYXJ0SW5kZXggPCBwYXRobmFtZVBhcnRzLmxlbmd0aFxuICAgICAgICA/IHBhdGhuYW1lUGFydHMuc2xpY2UocGFydEluZGV4KS5tYXAoKHMpID0+IGVuY29kZVVSSUNvbXBvbmVudChzKSlcbiAgICAgICAgOiBbXVxuICAgIH1cbiAgICAvLyBPcHRpb25hbCBjYXRjaGFsbHNcbiAgICBjYXNlICdvYyc6IHtcbiAgICAgIC8vIE9wdGlvbmFsIGNhdGNoYWxscyByZWNlaXZlIGFsbCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cywgdW5sZXNzIHRoaXMgaXNcbiAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lLCBpbiB3aGljaCBjYXNlIHRoZXkgcmV0dXJuIG51bGwuXG4gICAgICByZXR1cm4gcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGhcbiAgICAgICAgPyBwYXRobmFtZVBhcnRzLnNsaWNlKHBhcnRJbmRleCkubWFwKChzKSA9PiBlbmNvZGVVUklDb21wb25lbnQocykpXG4gICAgICAgIDogbnVsbFxuICAgIH1cbiAgICAvLyBEeW5hbWljXG4gICAgY2FzZSAnZCc6XG4gICAgY2FzZSAnZGknOiB7XG4gICAgICBpZiAocGFydEluZGV4ID49IHBhdGhuYW1lUGFydHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRoZSByb3V0ZSB0cmVlIGV4cGVjdGVkIHRoZXJlIHRvIGJlIG1vcmUgcGFydHMgaW4gdGhlIFVSTCB0aGFuIHRoZXJlXG4gICAgICAgIC8vIGFjdHVhbGx5IGFyZS4gVGhpcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHgtbmV4dGpzLXJld3JpdHRlbi1wYXRoIGhlYWRlclxuICAgICAgICAvLyBpcyBpbmNvcnJlY3RseSBzZXQsIG9yIHBvdGVudGlhbGx5IGR1ZSB0byBidWcgaW4gTmV4dC5qcy4gVE9ETzpcbiAgICAgICAgLy8gU2hvdWxkIHRoaXMgYmUgYSBoYXJkIGVycm9yPyBEdXJpbmcgYSBwcmVmZXRjaCwgd2UgY2FuIGp1c3QgYWJvcnQuXG4gICAgICAgIC8vIER1cmluZyBhIGNsaWVudCBuYXZpZ2F0aW9uLCB3ZSBjb3VsZCB0cmlnZ2VyIGEgaGFyZCByZWZyZXNoLiBCdXQgaWZcbiAgICAgICAgLy8gaXQgaGFwcGVucyBkdXJpbmcgaW5pdGlhbCByZW5kZXIsIHdlIGRvbid0IHJlYWxseSBoYXZlIGFueVxuICAgICAgICAvLyByZWNvdmVyeSBvcHRpb25zLlxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQocGF0aG5hbWVQYXJ0c1twYXJ0SW5kZXhdKVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICAgICAgcmV0dXJuICcnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwoc2VnbWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRoaXMgaXMgbm90IGEgcGFyYW1ldGVyaXplZCBzZWdtZW50OyBob3dldmVyLCB3ZSBuZWVkIHRvIGRldGVybWluZVxuICAvLyB3aGV0aGVyIG9yIG5vdCB0aGlzIHNlZ21lbnQgYXBwZWFycyBpbiB0aGUgVVJMLiBGb3IgZXhhbXBsZSwgdGhpcyByb3V0ZVxuICAvLyBncm91cHMgZG8gbm90IGFwcGVhciBpbiB0aGUgVVJMLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkLiBBbnkgb3RoZXJcbiAgLy8gc3BlY2lhbCBjYXNlcyBtdXN0IGJlIGhhbmRsZWQgaGVyZS5cbiAgLy8gVE9ETzogQ29uc2lkZXIgZW5jb2RpbmcgdGhpcyBkaXJlY3RseSBpbnRvIHRoZSByb3V0ZXIgdHJlZSBpbnN0ZWFkIG9mXG4gIC8vIGluZmVycmluZyBpdCBvbiB0aGUgY2xpZW50IGJhc2VkIG9uIHRoZSBzZWdtZW50IHR5cGUuIFNvbWV0aGluZyBsaWtlXG4gIC8vIGEgYGRvZXNBcHBlYXJJblVSTGAgZmxhZyBpbiBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAgaWYgKFxuICAgIHNlZ21lbnQgPT09IFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSB8fFxuICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdGhlIGxvYWRlciB0cmVlIHNvbWV0aW1lcyBpbmNsdWRlcyBleHRyYSBfX1BBR0VfX1xuICAgIC8vIFwibGF5b3V0c1wiIHdoZW4gcGFydCBvZiBhIHBhcmFsbGVsIHJvdXRlLiBCdXQgaXQncyBub3QgYSBsZWFmIG5vZGUuXG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMgc3BlY2lhbCBjYXNlIGJlY2F1c2UgcGFnZXMgYXJlXG4gICAgLy8gYWx3YXlzIGxlYWYgbm9kZXMuXG4gICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgd2h5IHRoZSBsb2FkZXIgcHJvZHVjZXMgdGhlc2UgZmFrZSBwYWdlIHNlZ21lbnRzLlxuICAgIHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSB8fFxuICAgIC8vIFJvdXRlIGdyb3Vwcy5cbiAgICAoc2VnbWVudFswXSA9PT0gJygnICYmIHNlZ21lbnQuZW5kc1dpdGgoJyknKSkgfHxcbiAgICBzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZIHx8XG4gICAgc2VnbWVudCA9PT0gJy9fbm90LWZvdW5kJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICAvLyBBbGwgb3RoZXIgc2VnbWVudCB0eXBlcyBhcHBlYXIgaW4gdGhlIFVSTFxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtKFxuICBwYXJhbVZhbHVlOiBSb3V0ZVBhcmFtVmFsdWUsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBzdHJpbmcge1xuICAvLyBUaGlzIG5lZWRzIHRvIG1hdGNoIHRoZSBsb2dpYyBpbiBnZXQtZHluYW1pYy1wYXJhbS50cywgdW50aWwgd2UncmUgYWJsZSB0b1xuICAvLyB1bmlmeSB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgc28gdGhhdCB0aGVzZSBhcmUgYWx3YXlzIGNvbXB1dGVkIG9uXG4gIC8vIHRoZSBjbGllbnQuXG4gIGlmICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUT0RPOiBSZWZhY3RvciBvciByZW1vdmUgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8gYWNjZXB0IGEgc3RyaW5nIHJhdGhlclxuICAgIC8vIHRoYW4gdGhlIHdob2xlIHNlZ21lbnQgdHlwZS4gQWxzbyB3ZSBjYW4gcHJvYmFibHkganVzdCBhcHBlbmQgdGhlXG4gICAgLy8gc2VhcmNoIHN0cmluZyBpbnN0ZWFkIG9mIHR1cm5pbmcgaXQgaW50byBKU09OLlxuICAgIGNvbnN0IHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtcyA9IGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQoXG4gICAgICBwYXJhbVZhbHVlLFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXMocmVuZGVyZWRTZWFyY2gpKVxuICAgICkgYXMgc3RyaW5nXG4gICAgcmV0dXJuIHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtc1xuICB9IGVsc2UgaWYgKHBhcmFtVmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyYW1WYWx1ZS5qb2luKCcvJylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKHVybDogVVJMKTogVVJMIHtcbiAgY29uc3QgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMgPSBuZXcgVVJMKHVybClcbiAgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMuc2VhcmNoUGFyYW1zLmRlbGV0ZShORVhUX1JTQ19VTklPTl9RVUVSWSlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfQ09ORklHX09VVFBVVCA9PT0gJ2V4cG9ydCcgJiZcbiAgICAgIHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzLnBhdGhuYW1lLmVuZHNXaXRoKCcudHh0JylcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzXG4gICAgICBjb25zdCBsZW5ndGggPSBwYXRobmFtZS5lbmRzV2l0aCgnL2luZGV4LnR4dCcpID8gMTAgOiA0XG4gICAgICAvLyBTbGljZSBvZmYgYC9pbmRleC50eHRgIG9yIGAudHh0YCBmcm9tIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lXG4gICAgICB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVycy5wYXRobmFtZSA9IHBhdGhuYW1lLnNsaWNlKDAsIC1sZW5ndGgpXG4gICAgfVxuICB9XG4gIHJldHVybiB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1WYWx1ZUZyb21DYWNoZUtleShcbiAgcGFyYW1DYWNoZUtleTogc3RyaW5nLFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnRcbikge1xuICAvLyBUdXJuIHRoZSBjYWNoZSBrZXkgc3RyaW5nIHNlbnQgYnkgdGhlIHNlcnZlciAoYXMgcGFydCBvZiBGbGlnaHRSb3V0ZXJTdGF0ZSlcbiAgLy8gaW50byBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgdXNlUGFyYW1zYCBhbmQgY2xpZW50IGNvbXBvbmVudHMuXG4gIGNvbnN0IGlzQ2F0Y2hBbGwgPSBwYXJhbVR5cGUgPT09ICdjJyB8fCBwYXJhbVR5cGUgPT09ICdvYydcbiAgaWYgKGlzQ2F0Y2hBbGwpIHtcbiAgICAvLyBDYXRjaC1hbGwgcGFyYW0ga2V5cyBhcmUgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBwYXRoIHNlZ21lbnRzLlxuICAgIC8vIFNlZSBlcXVpdmFsZW50IGxvZ2ljIGluIGBnZXRTZWxlY3RlZFBhcmFtc2AuXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIGp1c3QgcGFzcyB0aGUgYXJyYXkgZGlyZWN0bHksIHJhdGhlciB0aGFuIGNvbmNhdGVuYXRlXG4gICAgLy8gaXQgdG8gYSBzdHJpbmcgYW5kIHRoZW4gc3BsaXQgaXQgYmFjayB0byBhbiBhcnJheS4gSXQgbmVlZHMgdG8gYmUgYW5cbiAgICAvLyBhcnJheSBpbiBzb21lIHBsYWNlcywgbGlrZSB3aGVuIHBhc3NpbmcgYSBrZXkgUmVhY3QsIGJ1dCB3ZSBjYW4gY29udmVydFxuICAgIC8vIGl0IGF0IHJ1bnRpbWUgaW4gdGhvc2UgcGxhY2VzLlxuICAgIHJldHVybiBwYXJhbUNhY2hlS2V5LnNwbGl0KCcvJylcbiAgfVxuICByZXR1cm4gcGFyYW1DYWNoZUtleVxufVxuIl0sIm5hbWVzIjpbImRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwiLCJnZXRDYWNoZUtleUZvckR5bmFtaWNQYXJhbSIsImdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXkiLCJnZXRSZW5kZXJlZFBhdGhuYW1lIiwiZ2V0UmVuZGVyZWRTZWFyY2giLCJwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0IiwidXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIiwicmVzcG9uc2UiLCJyZXdyaXR0ZW5RdWVyeSIsImhlYWRlcnMiLCJnZXQiLCJORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIiLCJVUkwiLCJ1cmwiLCJzZWFyY2giLCJyZXdyaXR0ZW5QYXRoIiwiTkVYVF9SRVdSSVRURU5fUEFUSF9IRUFERVIiLCJwYXRobmFtZSIsInBhcmFtVHlwZSIsInBhdGhuYW1lUGFydHMiLCJwYXJ0SW5kZXgiLCJsZW5ndGgiLCJzbGljZSIsIm1hcCIsInMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZWdtZW50IiwiUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJlbmRzV2l0aCIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJwYXJhbVZhbHVlIiwicmVuZGVyZWRTZWFyY2giLCJwYWdlU2VnbWVudFdpdGhTZWFyY2hQYXJhbXMiLCJhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50IiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJqb2luIiwidXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJkZWxldGUiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9fTkVYVF9DT05GSUdfT1VUUFVUIiwicGFyYW1DYWNoZUtleSIsImlzQ2F0Y2hBbGwiLCJzcGxpdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/client/route-params.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/compiled/next-devtools/index.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports) => { eval("var __webpack_modules__={\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`[data-nextjs-toast] {\n &[data-hidden='true'] {\n display: none;\n }\n}\n\n.dev-tools-indicator-menu {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-menu);\n border-radius: var(--rounded-xl);\n position: absolute;\n font-family: var(--font-stack-sans);\n z-index: 3;\n overflow: hidden;\n opacity: 0;\n outline: 0;\n min-width: 248px;\n transition: opacity var(--animate-out-duration-ms)\n var(--animate-out-timing-function);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n}\n\n.dev-tools-indicator-inner {\n padding: 6px;\n width: 100%;\n}\n\n.dev-tools-indicator-item {\n display: flex;\n align-items: center;\n padding: 8px 6px;\n height: var(--size-36);\n border-radius: 6px;\n text-decoration: none !important;\n user-select: none;\n white-space: nowrap;\n\n svg {\n width: var(--size-16);\n height: var(--size-16);\n }\n\n &:focus-visible {\n outline: 0;\n }\n}\n\n.dev-tools-indicator-footer {\n background: var(--color-background-200);\n padding: 6px;\n border-top: 1px solid var(--color-gray-400);\n width: 100%;\n}\n\n.dev-tools-indicator-item[data-selected='true'] {\n cursor: pointer;\n background-color: var(--color-gray-200);\n}\n\n.dev-tools-indicator-label {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-1000);\n}\n\n.dev-tools-indicator-value {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-900);\n margin-left: auto;\n}\n\n.dev-tools-indicator-issue-count {\n --color-primary: var(--color-gray-800);\n --color-secondary: var(--color-gray-100);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-width: var(--size-40);\n height: var(--size-24);\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-small);\n padding: 2px;\n color: var(--color-gray-1000);\n border-radius: 128px;\n font-weight: 500;\n font-size: var(--size-13);\n font-variant-numeric: tabular-nums;\n\n &[data-has-issues='true'] {\n --color-primary: var(--color-red-800);\n --color-secondary: var(--color-red-100);\n }\n\n .dev-tools-indicator-issue-count-indicator {\n width: var(--size-8);\n height: var(--size-8);\n background: var(--color-primary);\n box-shadow: 0 0 0 2px var(--color-secondary);\n border-radius: 50%;\n }\n}\n\n.dev-tools-indicator-shortcut {\n display: flex;\n gap: 4px;\n\n kbd {\n width: var(--size-20);\n height: var(--size-20);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: var(--rounded-md);\n border: 1px solid var(--color-gray-400);\n font-family: var(--font-stack-sans);\n background: var(--color-background-100);\n color: var(--color-gray-1000);\n text-align: center;\n font-size: var(--size-12);\n line-height: var(--size-16);\n }\n}\n\n.dev-tools-grabbing {\n cursor: grabbing;\n\n > * {\n pointer-events: none;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\"],names:[],mappings:\"AAAA;EACE;IACE,aAAa;EACf;AACF;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,8BAA8B;EAC9B,gCAAgC;EAChC,kBAAkB;EAClB,mCAAmC;EACnC,UAAU;EACV,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,gBAAgB;EAChB;sCACoC;;EAEpC;IACE,UAAU;IACV,QAAQ;EACV;AACF;;AAEA;EACE,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,gCAAgC;EAChC,iBAAiB;EACjB,mBAAmB;;EAEnB;IACE,qBAAqB;IACrB,sBAAsB;EACxB;;EAEA;IACE,UAAU;EACZ;AACF;;AAEA;EACE,uCAAuC;EACvC,YAAY;EACZ,2CAA2C;EAC3C,WAAW;AACb;;AAEA;EACE,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,6BAA6B;AAC/B;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,4BAA4B;EAC5B,iBAAiB;AACnB;;AAEA;EACE,sCAAsC;EACtC,wCAAwC;EACxC,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,yBAAyB;EACzB,sBAAsB;EACtB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,+BAA+B;EAC/B,YAAY;EACZ,6BAA6B;EAC7B,oBAAoB;EACpB,gBAAgB;EAChB,yBAAyB;EACzB,kCAAkC;;EAElC;IACE,qCAAqC;IACrC,uCAAuC;EACzC;;EAEA;IACE,oBAAoB;IACpB,qBAAqB;IACrB,gCAAgC;IAChC,4CAA4C;IAC5C,kBAAkB;EACpB;AACF;;AAEA;EACE,aAAa;EACb,QAAQ;;EAER;IACE,qBAAqB;IACrB,sBAAsB;IACtB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,gCAAgC;IAChC,uCAAuC;IACvC,mCAAmC;IACnC,uCAAuC;IACvC,6BAA6B;IAC7B,kBAAkB;IAClB,yBAAyB;IACzB,2BAA2B;EAC7B;AACF;;AAEA;EACE,gBAAgB;;EAEhB;IACE,oBAAoB;EACtB;AACF\",sourcesContent:[\"[data-nextjs-toast] {\\n &[data-hidden='true'] {\\n display: none;\\n }\\n}\\n\\n.dev-tools-indicator-menu {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-menu);\\n border-radius: var(--rounded-xl);\\n position: absolute;\\n font-family: var(--font-stack-sans);\\n z-index: 3;\\n overflow: hidden;\\n opacity: 0;\\n outline: 0;\\n min-width: 248px;\\n transition: opacity var(--animate-out-duration-ms)\\n var(--animate-out-timing-function);\\n\\n &[data-rendered='true'] {\\n opacity: 1;\\n scale: 1;\\n }\\n}\\n\\n.dev-tools-indicator-inner {\\n padding: 6px;\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item {\\n display: flex;\\n align-items: center;\\n padding: 8px 6px;\\n height: var(--size-36);\\n border-radius: 6px;\\n text-decoration: none !important;\\n user-select: none;\\n white-space: nowrap;\\n\\n svg {\\n width: var(--size-16);\\n height: var(--size-16);\\n }\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n}\\n\\n.dev-tools-indicator-footer {\\n background: var(--color-background-200);\\n padding: 6px;\\n border-top: 1px solid var(--color-gray-400);\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item[data-selected='true'] {\\n cursor: pointer;\\n background-color: var(--color-gray-200);\\n}\\n\\n.dev-tools-indicator-label {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-1000);\\n}\\n\\n.dev-tools-indicator-value {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-900);\\n margin-left: auto;\\n}\\n\\n.dev-tools-indicator-issue-count {\\n --color-primary: var(--color-gray-800);\\n --color-secondary: var(--color-gray-100);\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n min-width: var(--size-40);\\n height: var(--size-24);\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-small);\\n padding: 2px;\\n color: var(--color-gray-1000);\\n border-radius: 128px;\\n font-weight: 500;\\n font-size: var(--size-13);\\n font-variant-numeric: tabular-nums;\\n\\n &[data-has-issues='true'] {\\n --color-primary: var(--color-red-800);\\n --color-secondary: var(--color-red-100);\\n }\\n\\n .dev-tools-indicator-issue-count-indicator {\\n width: var(--size-8);\\n height: var(--size-8);\\n background: var(--color-primary);\\n box-shadow: 0 0 0 2px var(--color-secondary);\\n border-radius: 50%;\\n }\\n}\\n\\n.dev-tools-indicator-shortcut {\\n display: flex;\\n gap: 4px;\\n\\n kbd {\\n width: var(--size-20);\\n height: var(--size-20);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: var(--rounded-md);\\n border: 1px solid var(--color-gray-400);\\n font-family: var(--font-stack-sans);\\n background: var(--color-background-100);\\n color: var(--color-gray-1000);\\n text-align: center;\\n font-size: var(--size-12);\\n line-height: var(--size-16);\\n }\\n}\\n\\n.dev-tools-grabbing {\\n cursor: grabbing;\\n\\n > * {\\n pointer-events: none;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.resize-container {\n position: absolute;\n /* todo: better z index */\n z-index: 10;\n /* todo: is this needed */\n background: transparent;\n}\n\n.resize-line {\n position: absolute;\n /* todo smarter z index */\n z-index: -1;\n pointer-events: none;\n /* a normal exit animation curve- at this point the exit animation is */\n /* immediately responsive so we don't need a bespoke curve */\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n /* todo: better var? */\n border: 1px solid var(--color-gray-400);\n}\n\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\n.resize-container:hover ~ .resize-line {\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\n}\n\n.resize-container.right,\n.resize-container.left {\n top: 0;\n height: 100%;\n width: 22px;\n cursor: ew-resize;\n}\n\n/* todo: don't hard code all these values/use vars */\n\n.resize-container.bottom,\n.resize-container.top {\n left: 0;\n width: 100%;\n height: 22px;\n cursor: ns-resize;\n}\n\n.resize-container.top {\n top: -7px;\n}\n.resize-container.bottom {\n bottom: -7px;\n}\n.resize-container.left {\n left: -7px;\n}\n.resize-container.right {\n right: -7px;\n}\n\n.resize-container.top-left,\n.resize-container.top-right,\n.resize-container.bottom-left,\n.resize-container.bottom-right {\n width: 26px;\n height: 26px;\n z-index: 15;\n}\n\n.resize-container.top-left {\n top: -5px;\n left: -5px;\n cursor: nwse-resize;\n}\n.resize-container.top-right {\n top: -5px;\n right: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-left {\n bottom: -5px;\n left: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-right {\n bottom: -5px;\n right: -5px;\n cursor: nwse-resize;\n}\n\n.resize-line.top,\n.resize-line.bottom {\n height: 18px;\n width: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.left,\n.resize-line.right {\n width: 18px;\n height: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.top {\n top: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n transform: translateY(18px);\n}\n\n.resize-line.bottom {\n bottom: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n transform: translateY(-18px);\n}\n\n.resize-line.left {\n top: calc(-1 * var(--border-top, 2px));\n left: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\n transform: translateX(18px);\n}\n\n.resize-line.right {\n top: calc(-1 * var(--border-top, 2px));\n right: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\n transform: translateX(-18px);\n}\n\n.resize-container.right:hover ~ .resize-line.right,\n.resize-container.left:hover ~ .resize-line.left,\n.resize-line.right.dragging,\n.resize-line.left.dragging {\n transform: translateX(0);\n}\n\n.resize-container.bottom:hover ~ .resize-line.bottom,\n.resize-container.top:hover ~ .resize-line.top,\n.resize-line.bottom.dragging,\n.resize-line.top.dragging {\n transform: translateY(0);\n}\n\n/* make sure that we don't show multiple handles at once\n * we should only ever show the currently resizing handle\n * regardless of hover state \n */\n.resize-container.no-hover.right:hover ~ .resize-line.right {\n transform: translateX(-20px);\n}\n.resize-container.no-hover.left:hover ~ .resize-line.left {\n transform: translateX(20px);\n}\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\n transform: translateY(-20px);\n}\n.resize-container.no-hover.top:hover ~ .resize-line.top {\n transform: translateY(20px);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,yBAAyB;EACzB,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,oBAAoB;EACpB,uEAAuE;EACvE,4DAA4D;EAC5D,uDAAuD;EACvD,sBAAsB;EACtB,uCAAuC;AACzC;;AAEA,mIAAmI;AACnI;EACE,4DAA4D;AAC9D;;AAEA;;EAEE,MAAM;EACN,YAAY;EACZ,WAAW;EACX,iBAAiB;AACnB;;AAEA,oDAAoD;;AAEpD;;EAEE,OAAO;EACP,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,WAAW;AACb;;AAEA;;;;EAIE,WAAW;EACX,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,SAAS;EACT,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,SAAS;EACT,WAAW;EACX,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,WAAW;EACX,mBAAmB;AACrB;;AAEA;;EAEE,YAAY;EACZ,WAAW;EACX,6CAA6C;AAC/C;;AAEA;;EAEE,WAAW;EACX,YAAY;EACZ,6CAA6C;AAC/C;;AAEA;EACE,SAAS;EACT,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,YAAY;EACZ,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;EACE,sCAAsC;EACtC,UAAU;EACV,gDAAgD;EAChD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,sCAAsC;EACtC,WAAW;EACX,gDAAgD;EAChD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;EAGE;AACF;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".resize-container {\\n position: absolute;\\n /* todo: better z index */\\n z-index: 10;\\n /* todo: is this needed */\\n background: transparent;\\n}\\n\\n.resize-line {\\n position: absolute;\\n /* todo smarter z index */\\n z-index: -1;\\n pointer-events: none;\\n /* a normal exit animation curve- at this point the exit animation is */\\n /* immediately responsive so we don't need a bespoke curve */\\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\\n /* todo: better var? */\\n border: 1px solid var(--color-gray-400);\\n}\\n\\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\\n.resize-container:hover ~ .resize-line {\\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\\n}\\n\\n.resize-container.right,\\n.resize-container.left {\\n top: 0;\\n height: 100%;\\n width: 22px;\\n cursor: ew-resize;\\n}\\n\\n/* todo: don't hard code all these values/use vars */\\n\\n.resize-container.bottom,\\n.resize-container.top {\\n left: 0;\\n width: 100%;\\n height: 22px;\\n cursor: ns-resize;\\n}\\n\\n.resize-container.top {\\n top: -7px;\\n}\\n.resize-container.bottom {\\n bottom: -7px;\\n}\\n.resize-container.left {\\n left: -7px;\\n}\\n.resize-container.right {\\n right: -7px;\\n}\\n\\n.resize-container.top-left,\\n.resize-container.top-right,\\n.resize-container.bottom-left,\\n.resize-container.bottom-right {\\n width: 26px;\\n height: 26px;\\n z-index: 15;\\n}\\n\\n.resize-container.top-left {\\n top: -5px;\\n left: -5px;\\n cursor: nwse-resize;\\n}\\n.resize-container.top-right {\\n top: -5px;\\n right: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-left {\\n bottom: -5px;\\n left: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-right {\\n bottom: -5px;\\n right: -5px;\\n cursor: nwse-resize;\\n}\\n\\n.resize-line.top,\\n.resize-line.bottom {\\n height: 18px;\\n width: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.left,\\n.resize-line.right {\\n width: 18px;\\n height: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.top {\\n top: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\\n transform: translateY(18px);\\n}\\n\\n.resize-line.bottom {\\n bottom: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\\n transform: translateY(-18px);\\n}\\n\\n.resize-line.left {\\n top: calc(-1 * var(--border-top, 2px));\\n left: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\\n transform: translateX(18px);\\n}\\n\\n.resize-line.right {\\n top: calc(-1 * var(--border-top, 2px));\\n right: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\\n transform: translateX(-18px);\\n}\\n\\n.resize-container.right:hover ~ .resize-line.right,\\n.resize-container.left:hover ~ .resize-line.left,\\n.resize-line.right.dragging,\\n.resize-line.left.dragging {\\n transform: translateX(0);\\n}\\n\\n.resize-container.bottom:hover ~ .resize-line.bottom,\\n.resize-container.top:hover ~ .resize-line.top,\\n.resize-line.bottom.dragging,\\n.resize-line.top.dragging {\\n transform: translateY(0);\\n}\\n\\n/* make sure that we don't show multiple handles at once\\n * we should only ever show the currently resizing handle\\n * regardless of hover state \\n */\\n.resize-container.no-hover.right:hover ~ .resize-line.right {\\n transform: translateX(-20px);\\n}\\n.resize-container.no-hover.left:hover ~ .resize-line.left {\\n transform: translateX(20px);\\n}\\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\\n transform: translateY(-20px);\\n}\\n.resize-container.no-hover.top:hover ~ .resize-line.top {\\n transform: translateY(20px);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-boundary-trigger {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 6px;\n line-height: 16px;\n font-weight: 500;\n color: var(--color-gray-1000);\n border-radius: 999px;\n border: none;\n font-size: var(--size-12);\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-boundary-trigger-text {\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.segment-boundary-trigger-text .plus-icon {\n transition: transform 0.25s ease;\n}\n\n.segment-boundary-trigger-text:hover .plus-icon {\n color: var(--color-gray-800);\n}\n\n.segment-boundary-trigger svg {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n vertical-align: middle;\n}\n\n.segment-boundary-trigger:hover svg {\n color: var(--color-gray-700);\n}\n\n.segment-boundary-trigger[disabled] svg,\n.segment-boundary-trigger[disabled]:hover svg {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown {\n padding: 8px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 16px;\n min-width: 120px;\n user-select: none;\n cursor: default;\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\n}\n\n.segment-boundary-dropdown-positioner {\n z-index: var(--top-z-index);\n}\n\n.segment-boundary-dropdown-item {\n display: flex;\n align-items: center;\n padding: 8px;\n line-height: 20px;\n font-size: 14px;\n border-radius: 6px;\n color: var(--color-gray-1000);\n cursor: pointer;\n min-width: 220px;\n border: none;\n background: none;\n width: 100%;\n}\n\n.segment-boundary-dropdown-item[data-disabled] {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown-item svg {\n margin-right: 12px;\n color: currentColor;\n}\n\n.segment-boundary-dropdown-item:hover {\n background: var(--color-gray-200);\n}\n\n.segment-boundary-dropdown-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n\n.segment-boundary-dropdown-item:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.segment-boundary-group-label {\n padding: 8px;\n font-size: 13px;\n line-height: 16px;\n font-weight: 400;\n color: var(--color-gray-900);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"],names:[],mappings:\"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,6BAA6B;EAC7B,oBAAoB;EACpB,YAAY;EACZ,yBAAyB;EACzB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;EACd,sBAAsB;AACxB;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;;EAEE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,sFAAsF;AACxF;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,iBAAiB;EACjB,eAAe;EACf,kBAAkB;EAClB,6BAA6B;EAC7B,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,WAAW;AACb;;AAEA;EACE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,8BAA8B;EAC9B,+BAA+B;AACjC;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,4BAA4B;AAC9B\",sourcesContent:[\".segment-boundary-trigger {\\n display: flex;\\n align-items: center;\\n gap: 4px;\\n padding: 4px 6px;\\n line-height: 16px;\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n border-radius: 999px;\\n border: none;\\n font-size: var(--size-12);\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-boundary-trigger-text {\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.segment-boundary-trigger-text .plus-icon {\\n transition: transform 0.25s ease;\\n}\\n\\n.segment-boundary-trigger-text:hover .plus-icon {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-boundary-trigger svg {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n vertical-align: middle;\\n}\\n\\n.segment-boundary-trigger:hover svg {\\n color: var(--color-gray-700);\\n}\\n\\n.segment-boundary-trigger[disabled] svg,\\n.segment-boundary-trigger[disabled]:hover svg {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown {\\n padding: 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 16px;\\n min-width: 120px;\\n user-select: none;\\n cursor: default;\\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\\n}\\n\\n.segment-boundary-dropdown-positioner {\\n z-index: var(--top-z-index);\\n}\\n\\n.segment-boundary-dropdown-item {\\n display: flex;\\n align-items: center;\\n padding: 8px;\\n line-height: 20px;\\n font-size: 14px;\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n cursor: pointer;\\n min-width: 220px;\\n border: none;\\n background: none;\\n width: 100%;\\n}\\n\\n.segment-boundary-dropdown-item[data-disabled] {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown-item svg {\\n margin-right: 12px;\\n color: currentColor;\\n}\\n\\n.segment-boundary-dropdown-item:hover {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-boundary-dropdown-item:first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n\\n.segment-boundary-dropdown-item:last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n\\n.segment-boundary-group-label {\\n padding: 8px;\\n font-size: 13px;\\n line-height: 16px;\\n font-weight: 400;\\n color: var(--color-gray-900);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-explorer-content {\n font-size: var(--size-14);\n padding: 0 8px;\n width: 100%;\n height: 100%;\n}\n\n.segment-explorer-page-route-bar {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n background-color: var(--color-background-200);\n gap: 12px;\n}\n\n.segment-explorer-page-route-bar-path {\n font-size: var(--size-14);\n font-weight: 500;\n color: var(--color-gray-1000);\n font-family: var(--font-mono);\n white-space: nowrap;\n line-height: 20px;\n}\n\n.segment-explorer-item {\n margin: 4px 0;\n border-radius: 6px;\n}\n\n.segment-explorer-item:nth-child(even) {\n background-color: var(--color-background-200);\n}\n.segment-explorer-item-row {\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-right: 4px;\n}\n.segment-explorer-item-row-main {\n display: flex;\n align-items: center;\n white-space: pre;\n cursor: default;\n color: var(--color-gray-1000);\n}\n\n.segment-explorer-children--intended {\n padding-left: 16px;\n}\n\n.segment-explorer-filename {\n display: inline-flex;\n width: 100%;\n align-items: center;\n}\n\n.segment-explorer-filename select {\n margin-left: auto;\n}\n.segment-explorer-filename--path {\n margin-right: 8px;\n}\n.segment-explorer-filename--path small {\n display: inline-block;\n width: 0;\n opacity: 0;\n}\n.segment-explorer-filename--name {\n color: var(--color-gray-800);\n}\n\n.segment-explorer-files {\n display: inline-flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.segment-explorer-files + .segment-boundary-trigger {\n margin-left: 8px;\n}\n\n.segment-explorer-file-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n height: 20px;\n border-radius: 16px;\n line-height: 16px;\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n cursor: pointer;\n background-color: var(--color-gray-300);\n color: var(--color-gray-1000);\n}\n.segment-explorer-file-label-text {\n display: inline-flex;\n align-items: center;\n}\n\n.segment-explorer-file-label--overridden {\n background-color: var(--color-amber-300);\n color: var(--color-amber-900);\n}\n\n.segment-explorer-file-label .code-icon {\n opacity: 0;\n margin-left: 0;\n width: 0;\n transition: all 0.15s ease-in-out;\n}\n.segment-explorer-file-label:hover .code-icon {\n opacity: 1;\n width: 12px;\n margin-left: 4px;\n}\n\n.segment-explorer-file-label:hover {\n filter: brightness(0.95);\n}\n\n.segment-explorer-file-label--builtin {\n background-color: transparent;\n color: var(--color-gray-900);\n border: 1px dashed var(--color-gray-500);\n height: 24px;\n cursor: default;\n}\n.segment-explorer-file-label--builtin svg {\n margin-left: 4px;\n margin-right: -4px;\n}\n\n/* Footer styles */\n.segment-explorer-footer {\n padding: 8px;\n border-top: 1px solid var(--color-gray-400);\n user-select: none;\n}\n\n.segment-explorer-footer-button {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n width: 100%;\n padding: 6px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 6px;\n color: var(--color-gray-1000);\n font-size: var(--size-14);\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-explorer-footer-button:hover:not(:disabled) {\n background: var(--color-gray-200);\n}\n\n.segment-explorer-footer-button--disabled {\n cursor: not-allowed;\n}\n\n.segment-explorer-footer-text {\n text-align: center;\n}\n\n.segment-explorer-footer-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: var(--color-amber-300);\n color: var(--color-amber-900);\n border-radius: 10px;\n font-size: var(--size-12);\n font-weight: 600;\n line-height: 1;\n}\n\n.segment-explorer-file-label-tooltip--sm {\n white-space: nowrap;\n}\n\n.segment-explorer-file-label-tooltip--lg {\n min-width: 200px;\n}\n\n.segment-explorer-suggestions {\n display: inline-flex;\n gap: 8px;\n}\n\n.segment-explorer-suggestions-tooltip {\n width: 200px;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"],names:[],mappings:\"AAAA;EACE,yBAAyB;EACzB,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,6CAA6C;EAC7C,SAAS;AACX;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,6BAA6B;EAC7B,6BAA6B;EAC7B,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,kBAAkB;AACpB;;AAEA;EACE,6CAA6C;AAC/C;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;EACf,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,QAAQ;EACR,UAAU;AACZ;AACA;EACE,4BAA4B;AAC9B;;AAEA;EACE,oBAAoB;EACpB,QAAQ;EACR,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;EACd,YAAY;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,uCAAuC;EACvC,6BAA6B;AAC/B;AACA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,6BAA6B;AAC/B;;AAEA;EACE,UAAU;EACV,cAAc;EACd,QAAQ;EACR,iCAAiC;AACnC;AACA;EACE,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,6BAA6B;EAC7B,4BAA4B;EAC5B,wCAAwC;EACxC,YAAY;EACZ,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA,kBAAkB;AAClB;EACE,YAAY;EACZ,2CAA2C;EAC3C,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,kBAAkB;EAClB,6BAA6B;EAC7B,yBAAyB;EACzB,gBAAgB;EAChB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,YAAY;EACZ,cAAc;EACd,kCAAkC;EAClC,6BAA6B;EAC7B,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,QAAQ;AACV;;AAEA;EACE,YAAY;AACd\",sourcesContent:[\".segment-explorer-content {\\n font-size: var(--size-14);\\n padding: 0 8px;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.segment-explorer-page-route-bar {\\n display: flex;\\n align-items: center;\\n padding: 14px 16px;\\n background-color: var(--color-background-200);\\n gap: 12px;\\n}\\n\\n.segment-explorer-page-route-bar-path {\\n font-size: var(--size-14);\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n font-family: var(--font-mono);\\n white-space: nowrap;\\n line-height: 20px;\\n}\\n\\n.segment-explorer-item {\\n margin: 4px 0;\\n border-radius: 6px;\\n}\\n\\n.segment-explorer-item:nth-child(even) {\\n background-color: var(--color-background-200);\\n}\\n.segment-explorer-item-row {\\n display: flex;\\n flex-direction: column;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n padding-right: 4px;\\n}\\n.segment-explorer-item-row-main {\\n display: flex;\\n align-items: center;\\n white-space: pre;\\n cursor: default;\\n color: var(--color-gray-1000);\\n}\\n\\n.segment-explorer-children--intended {\\n padding-left: 16px;\\n}\\n\\n.segment-explorer-filename {\\n display: inline-flex;\\n width: 100%;\\n align-items: center;\\n}\\n\\n.segment-explorer-filename select {\\n margin-left: auto;\\n}\\n.segment-explorer-filename--path {\\n margin-right: 8px;\\n}\\n.segment-explorer-filename--path small {\\n display: inline-block;\\n width: 0;\\n opacity: 0;\\n}\\n.segment-explorer-filename--name {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-explorer-files {\\n display: inline-flex;\\n gap: 8px;\\n margin-left: auto;\\n}\\n\\n.segment-explorer-files + .segment-boundary-trigger {\\n margin-left: 8px;\\n}\\n\\n.segment-explorer-file-label {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 6px;\\n height: 20px;\\n border-radius: 16px;\\n line-height: 16px;\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n cursor: pointer;\\n background-color: var(--color-gray-300);\\n color: var(--color-gray-1000);\\n}\\n.segment-explorer-file-label-text {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.segment-explorer-file-label--overridden {\\n background-color: var(--color-amber-300);\\n color: var(--color-amber-900);\\n}\\n\\n.segment-explorer-file-label .code-icon {\\n opacity: 0;\\n margin-left: 0;\\n width: 0;\\n transition: all 0.15s ease-in-out;\\n}\\n.segment-explorer-file-label:hover .code-icon {\\n opacity: 1;\\n width: 12px;\\n margin-left: 4px;\\n}\\n\\n.segment-explorer-file-label:hover {\\n filter: brightness(0.95);\\n}\\n\\n.segment-explorer-file-label--builtin {\\n background-color: transparent;\\n color: var(--color-gray-900);\\n border: 1px dashed var(--color-gray-500);\\n height: 24px;\\n cursor: default;\\n}\\n.segment-explorer-file-label--builtin svg {\\n margin-left: 4px;\\n margin-right: -4px;\\n}\\n\\n/* Footer styles */\\n.segment-explorer-footer {\\n padding: 8px;\\n border-top: 1px solid var(--color-gray-400);\\n user-select: none;\\n}\\n\\n.segment-explorer-footer-button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n width: 100%;\\n padding: 6px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n font-size: var(--size-14);\\n font-weight: 500;\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-explorer-footer-button:hover:not(:disabled) {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-explorer-footer-button--disabled {\\n cursor: not-allowed;\\n}\\n\\n.segment-explorer-footer-text {\\n text-align: center;\\n}\\n\\n.segment-explorer-footer-badge {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n min-width: 20px;\\n height: 20px;\\n padding: 0 6px;\\n background: var(--color-amber-300);\\n color: var(--color-amber-900);\\n border-radius: 10px;\\n font-size: var(--size-12);\\n font-weight: 600;\\n line-height: 1;\\n}\\n\\n.segment-explorer-file-label-tooltip--sm {\\n white-space: nowrap;\\n}\\n\\n.segment-explorer-file-label-tooltip--lg {\\n min-width: 200px;\\n}\\n\\n.segment-explorer-suggestions {\\n display: inline-flex;\\n gap: 8px;\\n}\\n\\n.segment-explorer-suggestions-tooltip {\\n width: 200px;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.nextjs-toast {\n position: fixed;\n z-index: var(--top-z-index);\n max-width: 420px;\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\n}\n\n.nextjs-toast-errors-parent {\n padding: 16px;\n border-radius: var(--rounded-4xl);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/toast/style.css\"],names:[],mappings:\"AAAA;EACE,eAAe;EACf,2BAA2B;EAC3B,gBAAgB;EAChB,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,iCAAiC;EACjC,gBAAgB;EAChB,qCAAqC;EACrC,uCAAuC;AACzC\",sourcesContent:[\".nextjs-toast {\\n position: fixed;\\n z-index: var(--top-z-index);\\n max-width: 420px;\\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\\n}\\n\\n.nextjs-toast-errors-parent {\\n padding: 16px;\\n border-radius: var(--rounded-4xl);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.tooltip-wrapper {\n position: relative;\n display: inline-block;\n line-height: 1;\n}\n\n.tooltip {\n position: relative;\n padding: 6px 12px;\n border-radius: 8px;\n font-size: 14px;\n line-height: 1.4;\n pointer-events: none;\n color: var(--color-gray-100);\n background-color: var(--color-gray-1000);\n}\n\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: var(--arrow-size, 6px);\n border-color: transparent;\n}\n\n.tooltip-arrow--top {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\n var(--arrow-size, 6px);\n border-top-color: var(--color-gray-1000);\n bottom: 0;\n transform: translateY(100%);\n}\n\n.tooltip-arrow--bottom {\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-bottom-color: var(--color-gray-1000);\n top: 0;\n transform: translateY(-100%);\n}\n\n.tooltip-arrow--left {\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-left-color: var(--color-gray-1000);\n right: 0;\n transform: translateX(100%);\n}\n\n.tooltip-arrow--right {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px) 0;\n border-right-color: var(--color-gray-1000);\n left: 0;\n transform: translateX(-100%);\n}\n\n.tooltip-positioner {\n z-index: var(--top-z-index);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;EACf,gBAAgB;EAChB,oBAAoB;EACpB,4BAA4B;EAC5B,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,mBAAmB;EACnB,oCAAoC;EACpC,yBAAyB;AAC3B;;AAEA;EACE;0BACwB;EACxB,wCAAwC;EACxC,SAAS;EACT,2BAA2B;AAC7B;;AAEA;EACE;0BACwB;EACxB,2CAA2C;EAC3C,MAAM;EACN,4BAA4B;AAC9B;;AAEA;EACE;0BACwB;EACxB,yCAAyC;EACzC,QAAQ;EACR,2BAA2B;AAC7B;;AAEA;EACE;4BAC0B;EAC1B,0CAA0C;EAC1C,OAAO;EACP,4BAA4B;AAC9B;;AAEA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".tooltip-wrapper {\\n position: relative;\\n display: inline-block;\\n line-height: 1;\\n}\\n\\n.tooltip {\\n position: relative;\\n padding: 6px 12px;\\n border-radius: 8px;\\n font-size: 14px;\\n line-height: 1.4;\\n pointer-events: none;\\n color: var(--color-gray-100);\\n background-color: var(--color-gray-1000);\\n}\\n\\n.tooltip-arrow {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: var(--arrow-size, 6px);\\n border-color: transparent;\\n}\\n\\n.tooltip-arrow--top {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\\n var(--arrow-size, 6px);\\n border-top-color: var(--color-gray-1000);\\n bottom: 0;\\n transform: translateY(100%);\\n}\\n\\n.tooltip-arrow--bottom {\\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-bottom-color: var(--color-gray-1000);\\n top: 0;\\n transform: translateY(-100%);\\n}\\n\\n.tooltip-arrow--left {\\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-left-color: var(--color-gray-1000);\\n right: 0;\\n transform: translateX(100%);\\n}\\n\\n.tooltip-arrow--right {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px) 0;\\n border-right-color: var(--color-gray-1000);\\n left: 0;\\n transform: translateX(-100%);\\n}\\n\\n.tooltip-positioner {\\n z-index: var(--top-z-index);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>f});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a),l=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\"),s=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\"),c=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\"),u=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\"),d=i()(o());d.i(l.Z),d.i(s.Z),d.i(c.Z),d.i(u.Z),d.push([e.id,`/* devtool global css variables */\n:host {\n /* variables */\n --top-z-index: 2147483647;\n}\n\n/* global styles */\n* {\n -webkit-font-smoothing: antialiased;\n}\n\n/* global reset for draggable content scrollbar styles */\n[data-nextjs-scrollable-content],\n[data-nextjs-scrollable-content] * {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n border-radius: 0 0 1rem 1rem;\n margin-bottom: 1rem;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n\n &::-webkit-scrollbar-track {\n border-radius: 0 0 1rem 1rem;\n background-color: var(--color-background-100);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 1rem;\n background-color: var(--color-gray-500);\n }\n}\n\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n[data-nextjs-scrollable-content] {\n overflow: hidden;\n border-radius: inherit;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/global.css\"],names:[],mappings:\"AAKA,iCAAiC;AACjC;EACE,cAAc;EACd,yBAAyB;AAC3B;;AAEA,kBAAkB;AAClB;EACE,mCAAmC;AACrC;;AAEA,wDAAwD;AACxD;;EAEE;IACE,UAAU;IACV,WAAW;IACX,4BAA4B;IAC5B,mBAAmB;EACrB;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,4BAA4B;IAC5B,6CAA6C;EAC/C;;EAEA;IACE,mBAAmB;IACnB,uCAAuC;EACzC;AACF;;AAEA,iFAAiF;AACjF;EACE,gBAAgB;EAChB,sBAAsB;AACxB\",sourcesContent:[\"@import './normalize.css';\\n@import './styles/default-theme.css';\\n@import './styles/dark-theme.css';\\n@import './styles/colors.css';\\n\\n/* devtool global css variables */\\n:host {\\n /* variables */\\n --top-z-index: 2147483647;\\n}\\n\\n/* global styles */\\n* {\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n/* global reset for draggable content scrollbar styles */\\n[data-nextjs-scrollable-content],\\n[data-nextjs-scrollable-content] * {\\n &::-webkit-scrollbar {\\n width: 6px;\\n height: 6px;\\n border-radius: 0 0 1rem 1rem;\\n margin-bottom: 1rem;\\n }\\n\\n &::-webkit-scrollbar-button {\\n display: none;\\n }\\n\\n &::-webkit-scrollbar-track {\\n border-radius: 0 0 1rem 1rem;\\n background-color: var(--color-background-100);\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n border-radius: 1rem;\\n background-color: var(--color-gray-500);\\n }\\n}\\n\\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\\n[data-nextjs-scrollable-content] {\\n overflow: hidden;\\n border-radius: inherit;\\n}\\n\"],sourceRoot:\"\"}]);let f=d},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel content padding styles */\n.panel-content {\n padding: 16px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* User preferences wrapper styles */\n.user-preferences-wrapper {\n padding: 20px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* Panel route base styles */\n.panel-route {\n opacity: var(--panel-opacity);\n transition: var(--panel-transition);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/menu/panel-router.css\"],names:[],mappings:\"AAAA,iCAAiC;AACjC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,oCAAoC;AACpC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,4BAA4B;AAC5B;EACE,6BAA6B;EAC7B,mCAAmC;AACrC\",sourcesContent:[\"/* Panel content padding styles */\\n.panel-content {\\n padding: 16px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* User preferences wrapper styles */\\n.user-preferences-wrapper {\\n padding: 20px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* Panel route base styles */\\n.panel-route {\\n opacity: var(--panel-opacity);\\n transition: var(--panel-transition);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n all: initial;\n\n /* the direction property is not reset by 'all' */\n direction: ltr;\n}\n\n/*!\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle,\naside,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection {\n display: block;\n}\n\n:host {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--color-font);\n text-align: left;\n}\n\n:host:not(button) {\n background-color: #fff;\n}\n\n[tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 8px;\n}\n\np {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 8px;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 16px;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n 'Courier New', monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 16px;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 8px;\n}\n\nbutton {\n border-radius: 0;\n border: 0;\n padding: 0;\n margin: 0;\n background: none;\n appearance: none;\n -webkit-appearance: none;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: none;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type='button']:not(:disabled),\n[type='reset']:not(:disabled),\n[type='submit']:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type='button']::-moz-focus-inner,\n[type='reset']::-moz-focus-inner,\n[type='submit']::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type='radio'],\ninput[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type='date'],\ninput[type='time'],\ninput[type='datetime-local'],\ninput[type='month'] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 8px;\n font-size: 24px;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type='number']::-webkit-inner-spin-button,\n[type='number']::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type='search'] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/normalize.css\"],names:[],mappings:\"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\",sourcesContent:[\":host {\\n all: initial;\\n\\n /* the direction property is not reset by 'all' */\\n direction: ltr;\\n}\\n\\n/*!\\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\\n * Copyright 2011-2019 The Bootstrap Authors\\n * Copyright 2011-2019 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\\n */\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\\n:host {\\n font-family: sans-serif;\\n line-height: 1.15;\\n -webkit-text-size-adjust: 100%;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n\\narticle,\\naside,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nnav,\\nsection {\\n display: block;\\n}\\n\\n:host {\\n margin: 0;\\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',\\n 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 1.5;\\n color: var(--color-font);\\n text-align: left;\\n}\\n\\n:host:not(button) {\\n background-color: #fff;\\n}\\n\\n[tabindex='-1']:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n\\nhr {\\n box-sizing: content-box;\\n height: 0;\\n overflow: visible;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-top: 0;\\n margin-bottom: 8px;\\n}\\n\\np {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nabbr[title],\\nabbr[data-original-title] {\\n text-decoration: underline;\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n cursor: help;\\n border-bottom: 0;\\n -webkit-text-decoration-skip-ink: none;\\n text-decoration-skip-ink: none;\\n}\\n\\naddress {\\n margin-bottom: 16px;\\n font-style: normal;\\n line-height: inherit;\\n}\\n\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\n\\ndt {\\n font-weight: 700;\\n}\\n\\ndd {\\n margin-bottom: 8px;\\n margin-left: 0;\\n}\\n\\nblockquote {\\n margin: 0 0 16px;\\n}\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\nsub,\\nsup {\\n position: relative;\\n font-size: 75%;\\n line-height: 0;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\na {\\n color: #007bff;\\n text-decoration: none;\\n background-color: transparent;\\n}\\n\\na:hover {\\n color: #0056b3;\\n text-decoration: underline;\\n}\\n\\na:not([href]) {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\na:not([href]):hover {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\\n 'Courier New', monospace;\\n font-size: 1em;\\n}\\n\\npre {\\n margin-top: 0;\\n margin-bottom: 16px;\\n overflow: auto;\\n}\\n\\nfigure {\\n margin: 0 0 16px;\\n}\\n\\nimg {\\n vertical-align: middle;\\n border-style: none;\\n}\\n\\nsvg {\\n overflow: hidden;\\n vertical-align: middle;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n}\\n\\ncaption {\\n padding-top: 12px;\\n padding-bottom: 12px;\\n color: #6c757d;\\n text-align: left;\\n caption-side: bottom;\\n}\\n\\nth {\\n text-align: inherit;\\n}\\n\\nlabel {\\n display: inline-block;\\n margin-bottom: 8px;\\n}\\n\\nbutton {\\n border-radius: 0;\\n border: 0;\\n padding: 0;\\n margin: 0;\\n background: none;\\n appearance: none;\\n -webkit-appearance: none;\\n}\\n\\nbutton:focus {\\n outline: 1px dotted;\\n outline: 5px auto -webkit-focus-ring-color;\\n}\\n\\nbutton:focus:not(:focus-visible) {\\n outline: none;\\n}\\n\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0;\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\nbutton,\\ninput {\\n overflow: visible;\\n}\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\nselect {\\n word-wrap: normal;\\n}\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n\\nbutton:not(:disabled),\\n[type='button']:not(:disabled),\\n[type='reset']:not(:disabled),\\n[type='submit']:not(:disabled) {\\n cursor: pointer;\\n}\\n\\nbutton::-moz-focus-inner,\\n[type='button']::-moz-focus-inner,\\n[type='reset']::-moz-focus-inner,\\n[type='submit']::-moz-focus-inner {\\n padding: 0;\\n border-style: none;\\n}\\n\\ninput[type='radio'],\\ninput[type='checkbox'] {\\n box-sizing: border-box;\\n padding: 0;\\n}\\n\\ninput[type='date'],\\ninput[type='time'],\\ninput[type='datetime-local'],\\ninput[type='month'] {\\n -webkit-appearance: listbox;\\n}\\n\\ntextarea {\\n overflow: auto;\\n resize: vertical;\\n}\\n\\nfieldset {\\n min-width: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n}\\n\\nlegend {\\n display: block;\\n width: 100%;\\n max-width: 100%;\\n padding: 0;\\n margin-bottom: 8px;\\n font-size: 24px;\\n line-height: inherit;\\n color: inherit;\\n white-space: normal;\\n}\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n[type='number']::-webkit-inner-spin-button,\\n[type='number']::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n[type='search'] {\\n outline-offset: -2px;\\n -webkit-appearance: none;\\n}\\n\\n[type='search']::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n::-webkit-file-upload-button {\\n font: inherit;\\n -webkit-appearance: button;\\n}\\n\\noutput {\\n display: inline-block;\\n}\\n\\nsummary {\\n display: list-item;\\n cursor: pointer;\\n}\\n\\ntemplate {\\n display: none;\\n}\\n\\n[hidden] {\\n display: none !important;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/panel/dynamic-panel.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel container base styles with dynamic positioning and sizing */\n.dynamic-panel-container {\n position: fixed;\n z-index: 2147483646;\n outline: none;\n top: var(--panel-top, auto);\n bottom: var(--panel-bottom, auto);\n left: var(--panel-left, auto);\n right: var(--panel-right, auto);\n width: var(--panel-width);\n height: var(--panel-height);\n min-width: var(--panel-min-width);\n min-height: var(--panel-min-height);\n max-width: var(--panel-max-width);\n max-height: var(--panel-max-height);\n}\n\n/* Panel content container styles */\n.panel-content-container {\n position: relative;\n width: 100%;\n height: 100%;\n border: 1px solid var(--color-gray-alpha-400);\n border-radius: var(--rounded-xl);\n background: var(--color-background-100);\n display: flex;\n flex-direction: column;\n}\n\n/* Draggable content area styles */\n.draggable-content {\n flex: 1;\n overflow: auto;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/panel/dynamic-panel.css\"],names:[],mappings:\"AAAA,oEAAoE;AACpE;EACE,eAAe;EACf,mBAAmB;EACnB,aAAa;EACb,2BAA2B;EAC3B,iCAAiC;EACjC,6BAA6B;EAC7B,+BAA+B;EAC/B,yBAAyB;EACzB,2BAA2B;EAC3B,iCAAiC;EACjC,mCAAmC;EACnC,iCAAiC;EACjC,mCAAmC;AACrC;;AAEA,mCAAmC;AACnC;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,6CAA6C;EAC7C,gCAAgC;EAChC,uCAAuC;EACvC,aAAa;EACb,sBAAsB;AACxB;;AAEA,kCAAkC;AAClC;EACE,OAAO;EACP,cAAc;AAChB\",sourcesContent:[\"/* Panel container base styles with dynamic positioning and sizing */\\n.dynamic-panel-container {\\n position: fixed;\\n z-index: 2147483646;\\n outline: none;\\n top: var(--panel-top, auto);\\n bottom: var(--panel-bottom, auto);\\n left: var(--panel-left, auto);\\n right: var(--panel-right, auto);\\n width: var(--panel-width);\\n height: var(--panel-height);\\n min-width: var(--panel-min-width);\\n min-height: var(--panel-min-height);\\n max-width: var(--panel-max-width);\\n max-height: var(--panel-max-height);\\n}\\n\\n/* Panel content container styles */\\n.panel-content-container {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-xl);\\n background: var(--color-background-100);\\n display: flex;\\n flex-direction: column;\\n}\\n\\n/* Draggable content area styles */\\n.draggable-content {\\n flex: 1;\\n overflow: auto;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * CAUTION: THIS IS A WORKAROUND!\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\n * So, we do a workaround mapping to change the color matching the theme.\n *\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\n */\n /* cyan: keyword */\n --color-ansi-cyan: var(--color-syntax-keyword);\n /* yellow: capitalized, jsxIdentifier, punctuation */\n --color-ansi-yellow: var(--color-syntax-function);\n /* magenta: number, regex */\n --color-ansi-magenta: var(--color-syntax-keyword);\n /* green: string */\n --color-ansi-green: var(--color-syntax-string);\n /* gray (bright black): comment, gutter */\n --color-ansi-bright-black: var(--color-syntax-comment);\n\n /* Ansi - Temporary */\n --color-ansi-selection: var(--color-gray-alpha-300);\n --color-ansi-bg: var(--color-background-200);\n --color-ansi-fg: var(--color-gray-1000);\n\n --color-ansi-white: var(--color-gray-700);\n --color-ansi-black: var(--color-gray-200);\n --color-ansi-blue: var(--color-blue-700);\n --color-ansi-red: var(--color-red-700);\n --color-ansi-bright-white: var(--color-gray-1000);\n --color-ansi-bright-blue: var(--color-blue-800);\n --color-ansi-bright-cyan: var(--color-blue-800);\n --color-ansi-bright-green: var(--color-green-800);\n --color-ansi-bright-magenta: var(--color-blue-800);\n --color-ansi-bright-red: var(--color-red-800);\n --color-ansi-bright-yellow: var(--color-amber-900);\n\n /* Background Light */\n --color-background-100: #ffffff;\n --color-background-200: #fafafa;\n\n /* Syntax Light */\n --color-syntax-comment: #545454;\n --color-syntax-constant: #171717;\n --color-syntax-function: #0054ad;\n --color-syntax-keyword: #a51850;\n --color-syntax-link: #066056;\n --color-syntax-parameter: #8f3e00;\n --color-syntax-punctuation: #171717;\n --color-syntax-string: #036157;\n --color-syntax-string-expression: #066056;\n\n /* Gray Scale Light */\n --color-gray-100: #f2f2f2;\n --color-gray-200: #ebebeb;\n --color-gray-300: #e6e6e6;\n --color-gray-400: #eaeaea;\n --color-gray-500: #c9c9c9;\n --color-gray-600: #a8a8a8;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #666666;\n --color-gray-1000: #171717;\n\n /* Gray Alpha Scale Light */\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\n\n /* Blue Scale Light */\n --color-blue-100: #f0f7ff;\n --color-blue-200: #edf6ff;\n --color-blue-300: #e1f0ff;\n --color-blue-400: #cde7ff;\n --color-blue-500: #99ceff;\n --color-blue-600: #52aeff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #0067d6;\n --color-blue-1000: #0025ad;\n\n /* Red Scale Light */\n --color-red-100: #fff0f0;\n --color-red-200: #ffebeb;\n --color-red-300: #ffe5e5;\n --color-red-400: #fdd8d8;\n --color-red-500: #f8baba;\n --color-red-600: #f87274;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ca2a30;\n --color-red-1000: #381316;\n\n /* Amber Scale Light */\n --color-amber-100: #fff6e5;\n --color-amber-200: #fff4d5;\n --color-amber-300: #fef0cd;\n --color-amber-400: #ffddbf;\n --color-amber-500: #ffc96b;\n --color-amber-600: #f5b047;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #a35200;\n --color-amber-1000: #4e2009;\n\n /* Green Scale Light */\n --color-green-100: #effbef;\n --color-green-200: #eafaea;\n --color-green-300: #dcf6dc;\n --color-green-400: #c8f1c9;\n --color-green-500: #99e59f;\n --color-green-600: #6cda76;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #297c3b;\n --color-green-1000: #18311e;\n\n /* Turbopack Light - Temporary */\n --color-turbopack-text-red: #ff1e56;\n --color-turbopack-text-blue: #0096ff;\n --color-turbopack-border-red: #f0adbe;\n --color-turbopack-border-blue: #adccea;\n --color-turbopack-background-red: #fff7f9;\n --color-turbopack-background-blue: #f6fbff;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/colors.css\"],names:[],mappings:\"AAAA;EACE;;;;;;;;;IASE;EACF,kBAAkB;EAClB,8CAA8C;EAC9C,oDAAoD;EACpD,iDAAiD;EACjD,2BAA2B;EAC3B,iDAAiD;EACjD,kBAAkB;EAClB,8CAA8C;EAC9C,yCAAyC;EACzC,sDAAsD;;EAEtD,qBAAqB;EACrB,mDAAmD;EACnD,4CAA4C;EAC5C,uCAAuC;;EAEvC,yCAAyC;EACzC,yCAAyC;EACzC,wCAAwC;EACxC,sCAAsC;EACtC,iDAAiD;EACjD,+CAA+C;EAC/C,+CAA+C;EAC/C,iDAAiD;EACjD,kDAAkD;EAClD,6CAA6C;EAC7C,kDAAkD;;EAElD,qBAAqB;EACrB,+BAA+B;EAC/B,+BAA+B;;EAE/B,iBAAiB;EACjB,+BAA+B;EAC/B,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,4BAA4B;EAC5B,iCAAiC;EACjC,mCAAmC;EACnC,8BAA8B;EAC9B,yCAAyC;;EAEzC,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,2BAA2B;EAC3B,2CAA2C;EAC3C,4CAA4C;EAC5C,0CAA0C;EAC1C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,4CAA4C;EAC5C,4CAA4C;;EAE5C,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,oBAAoB;EACpB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,yBAAyB;;EAEzB,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,gCAAgC;EAChC,mCAAmC;EACnC,oCAAoC;EACpC,qCAAqC;EACrC,sCAAsC;EACtC,yCAAyC;EACzC,0CAA0C;AAC5C\",sourcesContent:[':host {\\n /* \\n * CAUTION: THIS IS A WORKAROUND!\\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\\n * So, we do a workaround mapping to change the color matching the theme.\\n *\\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\\n */\\n /* cyan: keyword */\\n --color-ansi-cyan: var(--color-syntax-keyword);\\n /* yellow: capitalized, jsxIdentifier, punctuation */\\n --color-ansi-yellow: var(--color-syntax-function);\\n /* magenta: number, regex */\\n --color-ansi-magenta: var(--color-syntax-keyword);\\n /* green: string */\\n --color-ansi-green: var(--color-syntax-string);\\n /* gray (bright black): comment, gutter */\\n --color-ansi-bright-black: var(--color-syntax-comment);\\n\\n /* Ansi - Temporary */\\n --color-ansi-selection: var(--color-gray-alpha-300);\\n --color-ansi-bg: var(--color-background-200);\\n --color-ansi-fg: var(--color-gray-1000);\\n\\n --color-ansi-white: var(--color-gray-700);\\n --color-ansi-black: var(--color-gray-200);\\n --color-ansi-blue: var(--color-blue-700);\\n --color-ansi-red: var(--color-red-700);\\n --color-ansi-bright-white: var(--color-gray-1000);\\n --color-ansi-bright-blue: var(--color-blue-800);\\n --color-ansi-bright-cyan: var(--color-blue-800);\\n --color-ansi-bright-green: var(--color-green-800);\\n --color-ansi-bright-magenta: var(--color-blue-800);\\n --color-ansi-bright-red: var(--color-red-800);\\n --color-ansi-bright-yellow: var(--color-amber-900);\\n\\n /* Background Light */\\n --color-background-100: #ffffff;\\n --color-background-200: #fafafa;\\n\\n /* Syntax Light */\\n --color-syntax-comment: #545454;\\n --color-syntax-constant: #171717;\\n --color-syntax-function: #0054ad;\\n --color-syntax-keyword: #a51850;\\n --color-syntax-link: #066056;\\n --color-syntax-parameter: #8f3e00;\\n --color-syntax-punctuation: #171717;\\n --color-syntax-string: #036157;\\n --color-syntax-string-expression: #066056;\\n\\n /* Gray Scale Light */\\n --color-gray-100: #f2f2f2;\\n --color-gray-200: #ebebeb;\\n --color-gray-300: #e6e6e6;\\n --color-gray-400: #eaeaea;\\n --color-gray-500: #c9c9c9;\\n --color-gray-600: #a8a8a8;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #666666;\\n --color-gray-1000: #171717;\\n\\n /* Gray Alpha Scale Light */\\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\\n\\n /* Blue Scale Light */\\n --color-blue-100: #f0f7ff;\\n --color-blue-200: #edf6ff;\\n --color-blue-300: #e1f0ff;\\n --color-blue-400: #cde7ff;\\n --color-blue-500: #99ceff;\\n --color-blue-600: #52aeff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #0067d6;\\n --color-blue-1000: #0025ad;\\n\\n /* Red Scale Light */\\n --color-red-100: #fff0f0;\\n --color-red-200: #ffebeb;\\n --color-red-300: #ffe5e5;\\n --color-red-400: #fdd8d8;\\n --color-red-500: #f8baba;\\n --color-red-600: #f87274;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ca2a30;\\n --color-red-1000: #381316;\\n\\n /* Amber Scale Light */\\n --color-amber-100: #fff6e5;\\n --color-amber-200: #fff4d5;\\n --color-amber-300: #fef0cd;\\n --color-amber-400: #ffddbf;\\n --color-amber-500: #ffc96b;\\n --color-amber-600: #f5b047;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #a35200;\\n --color-amber-1000: #4e2009;\\n\\n /* Green Scale Light */\\n --color-green-100: #effbef;\\n --color-green-200: #eafaea;\\n --color-green-300: #dcf6dc;\\n --color-green-400: #c8f1c9;\\n --color-green-500: #99e59f;\\n --color-green-600: #6cda76;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #297c3b;\\n --color-green-1000: #18311e;\\n\\n /* Turbopack Light - Temporary */\\n --color-turbopack-text-red: #ff1e56;\\n --color-turbopack-text-blue: #0096ff;\\n --color-turbopack-border-red: #f0adbe;\\n --color-turbopack-border-blue: #adccea;\\n --color-turbopack-background-red: #fff7f9;\\n --color-turbopack-background-blue: #f6fbff;\\n}\\n'],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host(.dark) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n}\n\n@media (prefers-color-scheme: dark) {\n :host(:not(.light)) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/dark-theme.css\"],names:[],mappings:\"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\",sourcesContent:[\":host(.dark) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n}\\n\\n@media (prefers-color-scheme: dark) {\\n :host(:not(.light)) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * Although the style applied to the shadow host is isolated,\n * the element that attached the shadow host (i.e. \"nextjs-portal\")\n * is still affected by the parent's style (e.g. \"body\"). This may\n * occur style conflicts like \"display: flex\", with other children\n * elements therefore give the shadow host an absolute position.\n */\n position: absolute;\n\n --color-font: #757575;\n --color-backdrop: rgba(250, 250, 250, 0.8);\n --color-border-shadow: rgba(0, 0, 0, 0.145);\n\n --color-title-color: #1f1f1f;\n --color-stack-notes: #777;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\n sans-serif;\n\n font-family: var(--font-stack-sans);\n font-variant-ligatures: none;\n\n /* TODO: Remove replaced ones. */\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --shadow-none: 0 0 #0000;\n\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\n\n --focus-color: var(--color-blue-800);\n --focus-ring: 2px solid var(--focus-color);\n\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\n /* prettier-ignore */\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\n\n --rounded-none: 0px;\n --rounded-sm: 2px;\n --rounded-md: 4px;\n --rounded-md-2: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n --rounded-3xl: 24px;\n --rounded-4xl: 32px;\n --rounded-full: 9999px;\n\n /* \n This value gets set from the Dev Tools preferences,\n and we use the following --size-* variables to \n scale the relevant elements.\n\n The reason why we don't rely on rem values is because\n if an app sets their root font size to something tiny, \n it feels unexpected to have the app root size leak \n into a Next.js surface.\n\n https://github.com/vercel/next.js/discussions/76812\n */\n --nextjs-dev-tools-scale: 1;\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\n\n @media print {\n display: none;\n }\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-bottom: 8px;\n font-weight: 500;\n line-height: 1.5;\n}\n\na {\n color: var(--color-blue-900);\n &:hover {\n color: var(--color-blue-900);\n }\n &:focus-visible {\n outline: var(--focus-ring);\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/default-theme.css\"],names:[],mappings:\"AAAA;EACE;;;;;;IAME;EACF,kBAAkB;;EAElB,qBAAqB;EACrB,0CAA0C;EAC1C,2CAA2C;;EAE3C,4BAA4B;EAC5B,yBAAyB;;EAEzB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;;EAE1B;0DACwD;EACxD;cACY;;EAEZ,mCAAmC;EACnC,4BAA4B;;EAE5B,gCAAgC;EAChC,0CAA0C;EAC1C,uEAAuE;EACvE,6EAA6E;EAC7E;mCACiC;EACjC;oCACkC;EAClC,iDAAiD;EACjD,mDAAmD;EACnD,wBAAwB;;EAExB,+CAA+C;EAC/C;gFAC8E;;EAE9E,oCAAoC;EACpC,0CAA0C;;EAE1C,oDAAoD;EACpD,uDAAuD;EACvD,oBAAoB;EACpB,i3CAAi3C;;EAEj3C,mBAAmB;EACnB,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;EACnB,iBAAiB;EACjB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;EACnB,sBAAsB;;EAEtB;;;;;;;;;;;GAWC;EACD,2BAA2B;EAC3B,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;;EAErD;IACE,aAAa;EACf;AACF;;AAEA;;;;;;EAME,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,4BAA4B;EAC5B;IACE,4BAA4B;EAC9B;EACA;IACE,0BAA0B;EAC5B;AACF\",sourcesContent:[\":host {\\n /* \\n * Although the style applied to the shadow host is isolated,\\n * the element that attached the shadow host (i.e. \\\"nextjs-portal\\\")\\n * is still affected by the parent's style (e.g. \\\"body\\\"). This may\\n * occur style conflicts like \\\"display: flex\\\", with other children\\n * elements therefore give the shadow host an absolute position.\\n */\\n position: absolute;\\n\\n --color-font: #757575;\\n --color-backdrop: rgba(250, 250, 250, 0.8);\\n --color-border-shadow: rgba(0, 0, 0, 0.145);\\n\\n --color-title-color: #1f1f1f;\\n --color-stack-notes: #777;\\n\\n --color-accents-1: #808080;\\n --color-accents-2: #222222;\\n --color-accents-3: #404040;\\n\\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\\n sans-serif;\\n\\n font-family: var(--font-stack-sans);\\n font-variant-ligatures: none;\\n\\n /* TODO: Remove replaced ones. */\\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n --shadow-none: 0 0 #0000;\\n\\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\\n /* prettier-ignore */\\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\\n\\n --rounded-none: 0px;\\n --rounded-sm: 2px;\\n --rounded-md: 4px;\\n --rounded-md-2: 6px;\\n --rounded-lg: 8px;\\n --rounded-xl: 12px;\\n --rounded-2xl: 16px;\\n --rounded-3xl: 24px;\\n --rounded-4xl: 32px;\\n --rounded-full: 9999px;\\n\\n /* \\n This value gets set from the Dev Tools preferences,\\n and we use the following --size-* variables to \\n scale the relevant elements.\\n\\n The reason why we don't rely on rem values is because\\n if an app sets their root font size to something tiny, \\n it feels unexpected to have the app root size leak \\n into a Next.js surface.\\n\\n https://github.com/vercel/next.js/discussions/76812\\n */\\n --nextjs-dev-tools-scale: 1;\\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\\n\\n @media print {\\n display: none;\\n }\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-bottom: 8px;\\n font-weight: 500;\\n line-height: 1.5;\\n}\\n\\na {\\n color: var(--color-blue-900);\\n &:hover {\\n color: var(--color-blue-900);\\n }\\n &:focus-visible {\\n outline: var(--focus-ring);\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\":function(e){\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=\"\",r=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),r&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),r&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n}).join(\"\")},t.i=function(e,n,r,o,a){\"string\"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=a),n&&(u[2]&&(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\")),u[2]=n),o&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=o):u[4]=\"\".concat(o)),t.push(u))}},t}},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\":function(e){\"use strict\";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n))));return[t].concat([\"/*# \".concat(\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(r),\" */\")]).join(\"\\n\")}return[t].join(\"\\n\")}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":function(e){\"use strict\";var t=[];function n(e){for(var n=-1,r=0;r0?\" \".concat(n.layer):\"\",\" {\")),r+=n.css,o&&(r+=\"}\"),n.media&&(r+=\"}\"),n.supports&&(r+=\"}\"),(a=n.sourceMap)&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))),\" */\")),e.styleTagTransform(r,t,e.options)},remove:function(){!function(e){if(null!==e.parentNode)e.parentNode.removeChild(e)}(t)}}}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\":function(e){\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},\"./dist/compiled/anser/index.js\":function(e){(()=>{\"use strict\";var t={211:e=>{var t=function(){function e(e,t){for(var n=0;n]/gm,function(e){return\"&\"==e?\"&\":\"<\"==e?\"<\":\">\"==e?\">\":\"\"})}},{key:\"linkify\",value:function(e){return e.replace(/(https?:\\/\\/[^\\s]+)/gm,function(e){return''+e+\"\"})}},{key:\"ansiToHtml\",value:function(e,t){return this.process(e,t,!0)}},{key:\"ansiToJson\",value:function(e,t){return(t=t||{}).json=!0,t.clearLine=!1,this.process(e,t,!0)}},{key:\"ansiToText\",value:function(e){return this.process(e,{},!1)}},{key:\"process\",value:function(e,t,n){var r=this,o=e.split(/\\033\\[/),a=o.shift();null==t&&(t={}),t.clearLine=/\\r/.test(e);var i=o.map(function(e){return r.processChunk(e,t,n)});if(t&&t.json){var l=this.processChunkJson(\"\");return l.content=a,l.clearLine=t.clearLine,i.unshift(l),t.remove_empty&&(i=i.filter(function(e){return!e.isEmpty()})),i}return i.unshift(a),i.join(\"\")}},{key:\"processChunkJson\",value:function(e,t,r){var o=(t=void 0===t?{}:t).use_classes=void 0!==t.use_classes&&t.use_classes,a=t.key=o?\"class\":\"color\",i={content:e,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,clearLine:t.clearLine,decoration:null,was_processed:!1,isEmpty:function(){return!i.content}},l=e.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);if(!l)return i;i.content=l[4];var s=l[2].split(\";\");if(\"\"!==l[1]||\"m\"!==l[3]||!r)return i;for(this.decoration=null;s.length>0;){var c=parseInt(s.shift());if(isNaN(c)||0===c)this.fg=this.bg=this.decoration=null;else if(1===c)this.decoration=\"bold\";else if(2===c)this.decoration=\"dim\";else if(3==c)this.decoration=\"italic\";else if(4==c)this.decoration=\"underline\";else if(5==c)this.decoration=\"blink\";else if(7===c)this.decoration=\"reverse\";else if(8===c)this.decoration=\"hidden\";else if(9===c)this.decoration=\"strikethrough\";else if(39==c)this.fg=null;else if(49==c)this.bg=null;else if(c>=30&&c<38)this.fg=n[0][c%10][a];else if(c>=90&&c<98)this.fg=n[1][c%10][a];else if(c>=40&&c<48)this.bg=n[0][c%10][a];else if(c>=100&&c<108)this.bg=n[1][c%10][a];else if(38===c||48===c){var u=38===c;if(s.length>=1){var d=s.shift();if(\"5\"===d&&s.length>=1){var f=parseInt(s.shift());if(f>=0&&f<=255)if(o){var p=f>=16?\"ansi-palette-\"+f:n[+(f>7)][f%8].class;u?this.fg=p:this.bg=p}else this.PALETTE_COLORS||this.setupPalette(),u?this.fg=this.PALETTE_COLORS[f]:this.bg=this.PALETTE_COLORS[f]}else if(\"2\"===d&&s.length>=3){var h=parseInt(s.shift()),m=parseInt(s.shift()),g=parseInt(s.shift());if(h>=0&&h<=255&&m>=0&&m<=255&&g>=0&&g<=255){var y=h+\", \"+m+\", \"+g;o?u?(this.fg=\"ansi-truecolor\",this.fg_truecolor=y):(this.bg=\"ansi-truecolor\",this.bg_truecolor=y):u?this.fg=y:this.bg=y}}}}}return null===this.fg&&null===this.bg&&null===this.decoration||(i.fg=this.fg,i.bg=this.bg,i.fg_truecolor=this.fg_truecolor,i.bg_truecolor=this.bg_truecolor,i.decoration=this.decoration,i.was_processed=!0),i}},{key:\"processChunk\",value:function(e,t,n){var r=this;t=t||{};var o=this.processChunkJson(e,t,n);if(t.json)return o;if(o.isEmpty())return\"\";if(!o.was_processed)return o.content;var a=t.use_classes,i=[],l=[],s={},c=function(e){var t=[],n=void 0;for(n in e)e.hasOwnProperty(n)&&t.push(\"data-\"+n+'=\"'+r.escapeForHtml(e[n])+'\"');return t.length>0?\" \"+t.join(\" \"):\"\"};return(o.fg&&(a?(l.push(o.fg+\"-fg\"),null!==o.fg_truecolor&&(s[\"ansi-truecolor-fg\"]=o.fg_truecolor,o.fg_truecolor=null)):i.push(\"color:rgb(\"+o.fg+\")\")),o.bg&&(a?(l.push(o.bg+\"-bg\"),null!==o.bg_truecolor&&(s[\"ansi-truecolor-bg\"]=o.bg_truecolor,o.bg_truecolor=null)):i.push(\"background-color:rgb(\"+o.bg+\")\")),o.decoration&&(a?l.push(\"ansi-\"+o.decoration):\"bold\"===o.decoration?i.push(\"font-weight:bold\"):\"dim\"===o.decoration?i.push(\"opacity:0.5\"):\"italic\"===o.decoration?i.push(\"font-style:italic\"):\"reverse\"===o.decoration?i.push(\"filter:invert(100%)\"):\"hidden\"===o.decoration?i.push(\"visibility:hidden\"):\"strikethrough\"===o.decoration?i.push(\"text-decoration:line-through\"):i.push(\"text-decoration:\"+o.decoration)),a)?'\"+o.content+\"\":'\"+o.content+\"\"}}]),e}()}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(211)})()},\"./dist/compiled/react-dom/cjs/react-dom-client.production.js\":function(e,t,n){\"use strict\";var r,o=n(\"./dist/compiled/scheduler/index.js\"),a=n(\"./dist/compiled/react/index.js\"),i=n(\"./dist/compiled/react-dom/index.js\");function l(e){var t=\"https://react.dev/errors/\"+e;if(1L||(e.current=D[L],D[L]=null,L--)}function M(e,t){D[++L]=e.current,e.current=t}var Z=N(null),U=N(null),F=N(null),q=N(null);function H(e,t){switch(M(F,t),M(U,e),M(Z,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?ch(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=cm(t=ch(t),e);else switch(e){case\"svg\":e=1;break;case\"math\":e=2;break;default:e=0}}R(Z),M(Z,e)}function V(){R(Z),R(U),R(F)}function $(e){null!==e.memoizedState&&M(q,e);var t=Z.current,n=cm(t,e.type);t!==n&&(M(U,e),M(Z,n))}function W(e){U.current===e&&(R(Z),R(U)),q.current===e&&(R(q),c9._currentValue=z)}function Y(e){if(void 0===tL)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);tL=t&&t[1]||\"\",tN=-1)\":-1o||s[r]!==c[o]){var u=\"\\n\"+s[r].replace(\" at new \",\" at \");return e.displayName&&u.includes(\"\")&&(u=u.replace(\"\",e.displayName)),u}while(1<=r&&0<=o);break}}}finally{K=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:\"\")?Y(n):\"\"}function G(e){try{var t=\"\",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return Y(e.type);case 16:return Y(\"Lazy\");case 13:return e.child!==t&&null!==t?Y(\"Suspense Fallback\"):Y(\"Suspense\");case 19:return Y(\"SuspenseList\");case 0:case 15:return X(e.type,!1);case 11:return X(e.type.render,!1);case 1:return X(e.type,!0);case 31:return Y(\"Activity\");default:return\"\"}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return\"\\nError generating stack: \"+e.message+\"\\n\"+e.stack}}var Q=Object.prototype.hasOwnProperty,J=o.unstable_scheduleCallback,ee=o.unstable_cancelCallback,et=o.unstable_shouldYield,en=o.unstable_requestPaint,er=o.unstable_now,eo=o.unstable_getCurrentPriorityLevel,ea=o.unstable_ImmediatePriority,ei=o.unstable_UserBlockingPriority,el=o.unstable_NormalPriority,es=o.unstable_LowPriority,ec=o.unstable_IdlePriority,eu=o.log,ed=o.unstable_setDisableYieldValue,ef=null,ep=null;function eh(e){if(\"function\"==typeof eu&&ed(e),ep&&\"function\"==typeof ep.setStrictMode)try{ep.setStrictMode(ef,e)}catch(e){}}var em=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=4194304;function eA(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ex(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=0x7ffffff&r;return 0!==l?0!=(r=l&~a)?o=eA(r):0!=(i&=l)?o=eA(i):n||0!=(n=l&~e)&&(o=eA(n)):0!=(l=r&~a)?o=eA(l):0!==i?o=eA(i):n||0!=(n=r&~e)&&(o=eA(n)),0===o?0:0!==t&&t!==o&&0==(t&a)&&((a=o&-o)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:o}function ew(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eC(){var e=ev;return 0==(4194048&(ev<<=1))&&(ev=256),e}function e_(){var e=eb;return 0==(0x3c00000&(eb<<=1))&&(eb=4194304),e}function ek(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function eE(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ej(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-em(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&n}function eS(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-em(n),o=1<=nt),no=!1;function na(e,t){switch(e){case\"keyup\":return -1!==t7.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function ni(e){return\"object\"==typeof(e=e.detail)&&\"data\"in e?e.data:null}var nl=!1,ns={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function nc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!ns[e.type]:\"textarea\"===t}function nu(e,t,n,r){tb?tA?tA.push(r):tA=[r]:tb=r,0<(t=ct(t,\"onChange\")).length&&(n=new tF(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var nd=null,nf=null;function np(e){s4(e,0)}function nh(e){if(e8(e$(e)))return e}function nm(e,t){if(\"change\"===e)return t}var ng=!1;if(tk){if(tk){var ny=\"oninput\"in document;if(!ny){var nv=document.createElement(\"div\");nv.setAttribute(\"oninput\",\"return;\"),ny=\"function\"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=nj(r)}}function nO(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n=\"string\"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nB(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}var nP=tk&&\"documentMode\"in document&&11>=document.documentMode,nI=null,nT=null,nz=null,nD=!1;function nL(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nD||null==nI||nI!==e7(r)||(r=\"selectionStart\"in(r=nI)&&nB(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nz&&nE(nz,r)||(nz=r,0<(r=ct(nT,\"onSelect\")).length&&(t=new tF(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=nI)))}function nN(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var nR={animationend:nN(\"Animation\",\"AnimationEnd\"),animationiteration:nN(\"Animation\",\"AnimationIteration\"),animationstart:nN(\"Animation\",\"AnimationStart\"),transitionrun:nN(\"Transition\",\"TransitionRun\"),transitionstart:nN(\"Transition\",\"TransitionStart\"),transitioncancel:nN(\"Transition\",\"TransitionCancel\"),transitionend:nN(\"Transition\",\"TransitionEnd\")},nM={},nZ={};function nU(e){if(nM[e])return nM[e];if(!nR[e])return e;var t,n=nR[e];for(t in n)if(n.hasOwnProperty(t)&&t in nZ)return nM[e]=n[t];return e}tk&&(nZ=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete nR.animationend.animation,delete nR.animationiteration.animation,delete nR.animationstart.animation),\"TransitionEvent\"in window||delete nR.transitionend.transition);var nF=nU(\"animationend\"),nq=nU(\"animationiteration\"),nH=nU(\"animationstart\"),nV=nU(\"transitionrun\"),n$=nU(\"transitionstart\"),nW=nU(\"transitioncancel\"),nY=nU(\"transitionend\"),nK=new Map,nX=\"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function nG(e,t){nK.set(e,t),eG(t,[e])}nX.push(\"scrollEnd\");var nQ=\"function\"==typeof reportError?reportError:function(e){if(\"object\"==typeof window&&\"function\"==typeof window.ErrorEvent){var t=new window.ErrorEvent(\"error\",{bubbles:!0,cancelable:!0,message:\"object\"==typeof e&&null!==e&&\"string\"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(\"object\"==typeof process&&\"function\"==typeof process.emit)return void process.emit(\"uncaughtException\",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=i,o-=i,rv=1<<32-em(t)+o|n<h?(m=d,d=null):m=d.sibling;var g=p(o,d,l[h],s);if(null===g){null===d&&(d=m);break}e&&d&&null===g.alternate&&t(o,d),i=a(g,i,h),null===u?c=g:u.sibling=g,u=g,d=m}if(h===l.length)return n(o,d),rj&&rA(o,h),c;if(null===d){for(;hm?(g=h,h=null):g=h.sibling;var b=p(o,h,v.value,c);if(null===b){null===h&&(h=g);break}e&&h&&null===b.alternate&&t(o,h),i=a(b,i,m),null===d?u=b:d.sibling=b,d=b,h=g}if(v.done)return n(o,h),rj&&rA(o,m),u;if(null===h){for(;!v.done;m++,v=s.next())null!==(v=f(o,v.value,c))&&(i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return rj&&rA(o,m),u}for(h=r(h);!v.done;m++,v=s.next())null!==(v=y(h,o,m,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?m:v.key),i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(o,e)}),rj&&rA(o,m),u}(c,u,d=b.call(d),v)}if(\"function\"==typeof d.then)return s(c,u,om(d),v);if(d.$$typeof===A)return s(c,u,rK(c,d),v);oy(c,d)}return\"string\"==typeof d&&\"\"!==d||\"number\"==typeof d||\"bigint\"==typeof d?(d=\"\"+d,null!==u&&6===u.tag?(n(c,u.sibling),(v=o(u,d)).return=c):(n(c,u),(v=ri(d,c.mode,v)).return=c),i(c=v)):n(c,u)}(s,c,u,d);return op=null,v}catch(e){if(e===or||e===oa)throw e;var b=re(29,e,null,s.mode);return b.lanes=d,b.return=s,b}finally{}}}var ob=ov(!0),oA=ov(!1),ox=!1;function ow(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oC(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function o_(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ok(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&lD)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,t=n9(e),n6(e,null,n),t}return n4(e,r,t,n),n9(e)}function oE(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eS(e,n)}}function oj(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var oS=!1;function oO(){if(oS){var e=r6;if(null!==e)throw e}}function oB(e,t,n,r){oS=!1;var o=e.updateQueue;ox=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?a=c:i.next=c,i=s;var u=e.alternate;null!==u&&(l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s)}if(null!==a){var d=o.baseState;for(i=0,u=c=s=null,l=a;;){var p=-0x20000001&l.lane,h=p!==l.lane;if(h?(lR&p)===p:(r&p)===p){0!==p&&p===r3&&(oS=!0),null!==u&&(u=u.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var m=e,g=l;switch(p=t,g.tag){case 1:if(\"function\"==typeof(m=g.payload)){d=m.call(n,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p=\"function\"==typeof(m=g.payload)?m.call(n,d,p):m))break e;d=f({},d,p);break e;case 2:ox=!0}}null!==(p=l.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=o.callbacks)?o.callbacks=[p]:h.push(p))}else h={lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=h,s=d):u=u.next=h,i|=p;if(null===(l=l.next))if(null===(l=o.shared.pending))break;else l=(h=l).next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}null===u&&(s=d),o.baseState=s,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null===a&&(o.shared.lanes=0),l$|=i,e.lanes=i,e.memoizedState=d}}function oP(e,t){if(\"function\"!=typeof e)throw Error(l(191,e));e.call(t)}function oI(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var i=I.T,l={};I.T=l,a6(e,!1,t,n);try{var s=o(),c=I.S;if(null!==c&&c(l,s),null!==s&&\"object\"==typeof s&&\"function\"==typeof s.then){var u,d,f=(u=[],d={status:\"pending\",value:null,reason:null,then:function(e){u.push(e)}},s.then(function(){d.status=\"fulfilled\",d.value=r;for(var e=0;e title\"))),cu(a,r,n),a[eD]=e,eY(a),r=a;break e;case\"link\":var i=cJ(\"link\",\"href\",o).get(r+(n.href||\"\"));if(i){for(var s=0;s<\\/script>\",a=a.removeChild(a.firstChild);break;case\"select\":a=\"string\"==typeof r.is?i.createElement(\"select\",{is:r.is}):i.createElement(\"select\"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=\"string\"==typeof r.is?i.createElement(o,{is:r.is}):i.createElement(o)}}a[eD]=t,a[eL]=r;e:for(i=t.child;null!==i;){if(5===i.tag||6===i.tag)a.appendChild(i.stateNode);else if(4!==i.tag&&27!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}switch(t.stateNode=a,cu(a,o,r),o){case\"button\":case\"input\":case\"select\":case\"textarea\":r=!!r.autoFocus;break;case\"img\":r=!0;break;default:r=!1}r&&iY(t)}}return iJ(t),iK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iY(t);else{if(\"string\"!=typeof r&&null===t.stateNode)throw Error(l(166));if(e=F.current,rz(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(o=rk))switch(o.tag){case 27:case 5:r=o.memoizedProps}e[eD]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||cl(e.nodeValue,n)))||rP(t,!0)}else(e=cp(e).createTextNode(r))[eD]=t,t.stateNode=e}return iJ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rz(t),null!==n){if(null===e){if(!r)throw Error(l(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(l(557));e[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),e=!1}else n=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return oH(t),t;return oH(t),null}if(0!=(128&t.flags))throw Error(l(558))}return iJ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(o=rz(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(l(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(l(317));o[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),o=!1}else o=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o){if(256&t.flags)return oH(t),t;return oH(t),null}}if(oH(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,o=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(o=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==o&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),iG(t,t.updateQueue),iJ(t),null;case 4:return V(),null===e&&s9(t.stateNode.containerInfo),iJ(t),null;case 10:return rF(t.type),iJ(t),null;case 19:if(R(oV),null===(r=t.memoizedState))return iJ(t),null;if(o=0!=(128&t.flags),null===(a=r.rendering))if(o)iQ(r,!1);else{if(0!==lV||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=o$(e))){for(t.flags|=128,iQ(r,!1),t.updateQueue=e=a.updateQueue,iG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return M(oV,1&oV.current|2),rj&&rA(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>l1&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304)}else{if(!o)if(null!==(e=o$(a))){if(t.flags|=128,o=!0,t.updateQueue=e=e.updateQueue,iG(t,e),iQ(r,!0),null===r.tail&&\"hidden\"===r.tailMode&&!a.alternate&&!rj)return iJ(t),null}else 2*er()-r.renderingStartTime>l1&&0x20000000!==n&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=oV.current,M(oV,o?1&n|2:1&n),rj&&rA(t,r.treeForkCount),e;return iJ(t),null;case 22:case 23:return oH(t),oN(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(iJ(t),6&t.subtreeFlags&&(t.flags|=8192)):iJ(t),null!==(n=t.updateQueue)&&iG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&R(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rF(r0),iJ(t),null;case 25:case 30:return null}throw Error(l(156,t.tag))}(t.alternate,t,lH);if(null!==n){lN=n;return}if(null!==(t=t.sibling)){lN=t;return}lN=t=e}while(null!==t);0===lV&&(lV=5)}function sw(e,t){do{var n=function(e,t){switch(rC(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rF(r0),V(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return W(t),null;case 31:if(null!==t.memoizedState){if(oH(t),null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(oH(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return R(oV),null;case 4:return V(),null;case 10:return rF(t.type),null;case 22:case 23:return oH(t),oN(),null!==e&&R(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rF(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lN=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lN=e;return}lN=e=n}while(null!==e);lV=6,lN=null}function sC(e,t,n,r,o,a,i,s,c){e.cancelPendingCommit=null;do sS();while(0!==l5);if(0!=(6&lD))throw Error(l(327));if(null!==t){if(t===e.current)throw Error(l(177));if(!function(e,t,n,r,o,a){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,c=e.hiddenUpdates;for(n=i&~n;0g&&(i=g,g=m,m=i);var y=nS(l,m),v=nS(l,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=d.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),m>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(\"function\"==typeof l.focus&&l.focus(),l=0;ln?32:n,I.T=null,n=l7,l7=null;var a=l3,i=l9;if(l5=0,l6=l3=null,l9=0,0!=(6&lD))throw Error(l(331));var s=lD;if(lD|=4,lP(a.current),l_(a,a.current,i,n),lD=s,sH(0,!1),ep&&\"function\"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ef,a)}catch(e){}return!0}finally{T.p=o,I.T=r,sj(e,t)}}function sB(e,t,n){t=ru(n,t),t=ig(e.stateNode,t,2),null!==(e=ok(e,t,2))&&(eE(e,2),sq(e))}function sP(e,t,n){if(3===e.tag)sB(e,e,n);else for(;null!==t;){if(3===t.tag){sB(t,e,n);break}if(1===t.tag){var r=t.stateNode;if(\"function\"==typeof t.type.getDerivedStateFromError||\"function\"==typeof r.componentDidCatch&&(null===l4||!l4.has(r))){e=ru(n,e),null!==(r=ok(t,n=iy(2),2))&&(iv(n,r,t,e),eE(r,2),sq(r));break}}t=t.return}}function sI(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new lz;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(lq=!0,o.add(n),e=sT.bind(null,e,t,n),t.then(e,e))}function sT(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lL===e&&(lR&n)===n&&(4===lV||3===lV&&(0x3c00000&lR)===lR&&300>er()-l0?0==(2&lD)&&sd(e,0):lY|=n,lX===lR&&(lX=0)),sq(e)}function sz(e,t){0===t&&(t=e_()),null!==(e=n3(e,t))&&(eE(e,t),sq(e))}function sD(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),sz(e,n)}function sL(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(l(314))}null!==r&&r.delete(t),sz(e,n)}var sN=null,sR=null,sM=!1,sZ=!1,sU=!1,sF=0;function sq(e){e!==sR&&null===e.next&&(null===sR?sN=sR=e:sR=sR.next=e),sZ=!0,sM||(sM=!0,cx(function(){0!=(6&lD)?J(ea,sV):s$()}))}function sH(e,t){if(!sU&&sZ){sU=!0;do for(var n=!1,r=sN;null!==r;){if(!t)if(0!==e){var o=r.pendingLanes;if(0===o)var a=0;else{var i=r.suspendedLanes,l=r.pingedLanes;a=0xc000095&(a=(1<<31-em(42|e)+1)-1&(o&~(i&~l)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,sK(r,a))}else a=lR,0==(3&(a=ex(r,r===lL?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ew(r,a)||(n=!0,sK(r,a));r=r.next}while(n);sU=!1}}function sV(){s$()}function s$(){sZ=sM=!1;var e,t=0;0===sF||((e=window.event)&&\"popstate\"===e.type?e===cy||(cy=e,0):(cy=null,1))||(t=sF);for(var n=er(),r=null,o=sN;null!==o;){var a=o.next,i=sW(o,n);0===i?(o.next=null,null===r?sN=a:r.next=a,null===a&&(sR=r)):(r=o,(0!==t||0!=(3&i))&&(sZ=!0)),o=a}0!==l5&&5!==l5||sH(t,!1),0!==sF&&(sF=0)}function sW(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title\"):null)}function c1(e){return\"stylesheet\"!==e.type||0!=(3&e.state.loading)}var c2=null;function c4(){if(this.count--,0===this.count){if(this.stylesheets)c3(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var c5=null;function c3(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,c5=new Map,t.forEach(c6,e),c5=null,c4.call(e))}function c6(e,t){if(!(4&t.state.loading)){var n=c5.get(e);if(n)var r=n.get(null);else{n=new Map,c5.set(e,n);for(var o=e.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),a=0;a>>1,o=e[r];if(0>>1;ra(s,n))ca(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else if(ca(u,n))e[r]=u,e[c]=n,r=c;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,\"object\"==typeof performance&&\"function\"==typeof performance.now){var i,l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,c=s.now();t.unstable_now=function(){return s.now()-c}}var u=[],d=[],f=1,p=null,h=3,m=!1,g=!1,y=!1,v=!1,b=\"function\"==typeof setTimeout?setTimeout:null,A=\"function\"==typeof clearTimeout?clearTimeout:null,x=\"undefined\"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(d);null!==t;){if(null===t.callback)o(d);else if(t.startTime<=e)o(d),t.sortIndex=t.expirationTime,n(u,t);else break;t=r(d)}}function C(e){if(y=!1,w(e),!g)if(null!==r(u))g=!0,_||(_=!0,i());else{var t=r(d);null!==t&&I(C,t.startTime-e)}}var _=!1,k=-1,E=5,j=-1;function S(){return!!v||!(t.unstable_now()-je&&S());){var l=p.callback;if(\"function\"==typeof l){p.callback=null,h=p.priorityLevel;var s=l(p.expirationTime<=e);if(e=t.unstable_now(),\"function\"==typeof s){p.callback=s,w(e),n=!0;break t}p===r(u)&&o(u),w(e)}else o(u);p=r(u)}if(null!==p)n=!0;else{var c=r(d);null!==c&&I(C,c.startTime-e),n=!1}}break e}finally{p=null,h=a,m=!1}}}finally{n?i():_=!1}}}if(\"function\"==typeof x)i=function(){x(O)};else if(\"undefined\"!=typeof MessageChannel){var B=new MessageChannel,P=B.port2;B.port1.onmessage=O,i=function(){P.postMessage(null)}}else i=function(){b(O,0)};function I(e,n){k=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=a,n(d,e),null===r(u)&&e===r(d)&&(y?(A(k),k=-1):y=!0,I(C,a-l))):(e.sortIndex=s,n(u,e),g||m||(g=!0,_||(_=!0,i()))),e},t.unstable_shouldYield=S,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},\"./dist/compiled/scheduler/index.js\":function(e,t,n){\"use strict\";e.exports=n(\"./dist/compiled/scheduler/cjs/scheduler.production.js\")},\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\":function(e){(()=>{\"use strict\";\"undefined\"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab=\"//\");var t,n,r,o,a,i,l,s,c={};Object.defineProperty(c,\"__esModule\",{value:!0}),t=\"\",n=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|webpack-internal|rsc|about|turbopack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,r=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,o=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|webpack-internal|rsc|about|turbopack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,a=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|webpack-internal|rsc|about|turbopack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,i=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,l=/^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i,s=/^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,c.parse=function(e){return e.split(\"\\n\").reduce(function(e,c){var u,d,f,p,h,m,g=function(e){var o=n.exec(e);if(!o)return null;var a=o[2]&&0===o[2].indexOf(\"native\"),i=o[2]&&0===o[2].indexOf(\"eval\"),l=r.exec(o[2]);return i&&null!=l&&(o[2]=l[1],o[3]=l[2],o[4]=l[3]),{file:a?null:o[2],methodName:o[1]||t,arguments:a?[o[2]]:[],lineNumber:o[3]?+o[3]:null,column:o[4]?+o[4]:null}}(c)||(u=c,(d=o.exec(u))?{file:d[2],methodName:d[1]||t,arguments:[],lineNumber:+d[3],column:d[4]?+d[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(\" > eval\")>-1,o=i.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(\",\"):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(c)||(f=c,(p=s.exec(f))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||(h=c,(m=l.exec(h))?{file:m[3],methodName:m[1]||t,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return g&&e.push(g),e},[])},e.exports=c})()},\"./dist/compiled/strip-ansi/index.js\":function(e){(()=>{\"use strict\";var t={511:e=>{e.exports=({onlyFirst:e=!1}={})=>RegExp(\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\",e?void 0:\"g\")},532:(e,t,n)=>{let r=n(511);e.exports=e=>\"string\"==typeof e?e.replace(r(),\"\"):e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(532)})()},\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\":function(e){function t(){let e=window._nextjsDevtoolsStyleCache;if(e.cachedShadowRoot)return e.cachedShadowRoot;let t=document.querySelector(\"nextjs-portal\"),n=t?.shadowRoot||null;return n&&(e.cachedShadowRoot=n),n}function n(e,t){let n=window._nextjsDevtoolsStyleCache;n.lastInsertedElement?n.lastInsertedElement.nextSibling?t.insertBefore(e,n.lastInsertedElement.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),n.lastInsertedElement=e}function r(){let e=window._nextjsDevtoolsStyleCache,r=t();r&&(e.pendingElements.forEach(e=>{n(e,r)}),e.pendingElements=[])}\"undefined\"!=typeof window&&(window._nextjsDevtoolsStyleCache=window._nextjsDevtoolsStyleCache||{pendingElements:[],isObserving:!1,lastInsertedElement:null,cachedShadowRoot:null}),e.exports=function(e){e.setAttribute(\"data-nextjs-dev-tool-style\",\"true\");let o=t();o?n(e,o):(window._nextjsDevtoolsStyleCache.pendingElements.push(e),function(){let e=window._nextjsDevtoolsStyleCache;if(e.isObserving)return;if(e.isObserving=!0,t())return r();let n=new MutationObserver(o=>{if(0!==o.length){for(let a of o)if(0!==a.addedNodes.length)for(let o of a.addedNodes){if(o.nodeType!==Node.ELEMENT_NODE)continue;let a=null;if(\"SCRIPT\"===o.tagName&&o.getAttribute(\"data-nextjs-dev-overlay\")?a=o.firstChild:\"NEXTJS-PORTAL\"===o.tagName&&(a=o),a){let o=()=>{t()?(r(),n.disconnect(),e.isObserving=!1):setTimeout(o,20)};o();return}}}});n.observe(document.body,{childList:!0,subtree:!0})}())}},\"./dist/compiled/zod/index.cjs\":function(e){(()=>{\"use strict\";var t={629:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},i=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),t.z=void 0;let l=a(n(923));t.z=l,i(n(923),t),t.default=l},348:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0}),t.ZodError=t.quotelessJson=t.ZodIssueCode=void 0;let r=n(709);t.ZodIssueCode=r.util.arrayToEnum([\"invalid_type\",\"invalid_literal\",\"custom\",\"invalid_union\",\"invalid_union_discriminator\",\"invalid_enum_value\",\"unrecognized_keys\",\"invalid_arguments\",\"invalid_return_type\",\"invalid_date\",\"invalid_string\",\"too_small\",\"too_big\",\"invalid_intersection_types\",\"not_multiple_of\",\"not_finite\"]),t.quotelessJson=e=>JSON.stringify(e,null,2).replace(/\"([^\"]+)\":/g,\"$1:\");class o extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=\"ZodError\",this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let o of e.issues)if(\"invalid_union\"===o.code)o.unionErrors.map(r);else if(\"invalid_return_type\"===o.code)r(o.returnTypeError);else if(\"invalid_arguments\"===o.code)r(o.argumentsError);else if(0===o.path.length)n._errors.push(t(o));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}t.ZodError=o,o.create=e=>new o(e)},61:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.defaultErrorMap=void 0,t.setErrorMap=function(e){a=e},t.getErrorMap=function(){return a};let o=r(n(871));t.defaultErrorMap=o.default;let a=o.default},923:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),o(n(61),t),o(n(818),t),o(n(515),t),o(n(709),t),o(n(155),t),o(n(348),t)},538:(e,t)=>{var n,r;Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorUtil=void 0,(r=n||(t.errorUtil=n={})).errToObj=e=>\"string\"==typeof e?{message:e}:e||{},r.toString=e=>\"string\"==typeof e?e:e?.message},818:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.isAsync=t.isValid=t.isDirty=t.isAborted=t.OK=t.DIRTY=t.INVALID=t.ParseStatus=t.EMPTY_PATH=t.makeIssue=void 0,t.addIssueToContext=function(e,n){let r=(0,o.getErrorMap)(),i=(0,t.makeIssue)({issueData:n,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===a.default?void 0:a.default].filter(e=>!!e)});e.common.issues.push(i)};let o=n(61),a=r(n(871));t.makeIssue=e=>{let{data:t,path:n,errorMaps:r,issueData:o}=e,a=[...n,...o.path||[]],i={...o,path:a};if(void 0!==o.message)return{...o,path:a,message:o.message};let l=\"\";for(let e of r.filter(e=>!!e).slice().reverse())l=e(i,{data:t,defaultError:l}).message;return{...o,path:a,message:l}},t.EMPTY_PATH=[];class i{constructor(){this.value=\"valid\"}dirty(){\"valid\"===this.value&&(this.value=\"dirty\")}abort(){\"aborted\"!==this.value&&(this.value=\"aborted\")}static mergeArray(e,n){let r=[];for(let o of n){if(\"aborted\"===o.status)return t.INVALID;\"dirty\"===o.status&&e.dirty(),r.push(o.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let n=[];for(let e of t){let t=await e.key,r=await e.value;n.push({key:t,value:r})}return i.mergeObjectSync(e,n)}static mergeObjectSync(e,n){let r={};for(let o of n){let{key:n,value:a}=o;if(\"aborted\"===n.status||\"aborted\"===a.status)return t.INVALID;\"dirty\"===n.status&&e.dirty(),\"dirty\"===a.status&&e.dirty(),\"__proto__\"!==n.value&&(void 0!==a.value||o.alwaysSet)&&(r[n.value]=a.value)}return{status:e.value,value:r}}}t.ParseStatus=i,t.INVALID=Object.freeze({status:\"aborted\"}),t.DIRTY=e=>({status:\"dirty\",value:e}),t.OK=e=>({status:\"valid\",value:e}),t.isAborted=e=>\"aborted\"===e.status,t.isDirty=e=>\"dirty\"===e.status,t.isValid=e=>\"valid\"===e.status,t.isAsync=e=>\"undefined\"!=typeof Promise&&e instanceof Promise},515:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:!0})},709:(e,t)=>{var n,r,o;Object.defineProperty(t,\"__esModule\",{value:!0}),t.getParsedType=t.ZodParsedType=t.objectUtil=t.util=void 0,(o=n||(t.util=n={})).assertEqual=e=>{},o.assertIs=function(e){},o.assertNever=function(e){throw Error()},o.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},o.getValidEnumValues=e=>{let t=o.objectKeys(e).filter(t=>\"number\"!=typeof e[e[t]]),n={};for(let r of t)n[r]=e[r];return o.objectValues(n)},o.objectValues=e=>o.objectKeys(e).map(function(t){return e[t]}),o.objectKeys=\"function\"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},o.find=(e,t)=>{for(let n of e)if(t(n))return n},o.isInteger=\"function\"==typeof Number.isInteger?e=>Number.isInteger(e):e=>\"number\"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,o.joinValues=function(e,t=\" | \"){return e.map(e=>\"string\"==typeof e?`'${e}'`:e).join(t)},o.jsonStringifyReplacer=(e,t)=>\"bigint\"==typeof t?t.toString():t,(r||(t.objectUtil=r={})).mergeShapes=(e,t)=>({...e,...t}),t.ZodParsedType=n.arrayToEnum([\"string\",\"nan\",\"number\",\"integer\",\"float\",\"boolean\",\"date\",\"bigint\",\"symbol\",\"function\",\"undefined\",\"null\",\"array\",\"object\",\"unknown\",\"promise\",\"void\",\"never\",\"map\",\"set\"]),t.getParsedType=e=>{switch(typeof e){case\"undefined\":return t.ZodParsedType.undefined;case\"string\":return t.ZodParsedType.string;case\"number\":return Number.isNaN(e)?t.ZodParsedType.nan:t.ZodParsedType.number;case\"boolean\":return t.ZodParsedType.boolean;case\"function\":return t.ZodParsedType.function;case\"bigint\":return t.ZodParsedType.bigint;case\"symbol\":return t.ZodParsedType.symbol;case\"object\":if(Array.isArray(e))return t.ZodParsedType.array;if(null===e)return t.ZodParsedType.null;if(e.then&&\"function\"==typeof e.then&&e.catch&&\"function\"==typeof e.catch)return t.ZodParsedType.promise;if(\"undefined\"!=typeof Map&&e instanceof Map)return t.ZodParsedType.map;if(\"undefined\"!=typeof Set&&e instanceof Set)return t.ZodParsedType.set;if(\"undefined\"!=typeof Date&&e instanceof Date)return t.ZodParsedType.date;return t.ZodParsedType.object;default:return t.ZodParsedType.unknown}}},871:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0});let r=n(348),o=n(709);t.default=(e,t)=>{let n;switch(e.code){case r.ZodIssueCode.invalid_type:n=e.received===o.ZodParsedType.undefined?\"Required\":`Expected ${e.expected}, received ${e.received}`;break;case r.ZodIssueCode.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,o.util.jsonStringifyReplacer)}`;break;case r.ZodIssueCode.unrecognized_keys:n=`Unrecognized key(s) in object: ${o.util.joinValues(e.keys,\", \")}`;break;case r.ZodIssueCode.invalid_union:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${o.util.joinValues(e.options)}`;break;case r.ZodIssueCode.invalid_enum_value:n=`Invalid enum value. Expected ${o.util.joinValues(e.options)}, received '${e.received}'`;break;case r.ZodIssueCode.invalid_arguments:n=\"Invalid function arguments\";break;case r.ZodIssueCode.invalid_return_type:n=\"Invalid function return type\";break;case r.ZodIssueCode.invalid_date:n=\"Invalid date\";break;case r.ZodIssueCode.invalid_string:\"object\"==typeof e.validation?\"includes\"in e.validation?(n=`Invalid input: must include \"${e.validation.includes}\"`,\"number\"==typeof e.validation.position&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):\"startsWith\"in e.validation?n=`Invalid input: must start with \"${e.validation.startsWith}\"`:\"endsWith\"in e.validation?n=`Invalid input: must end with \"${e.validation.endsWith}\"`:o.util.assertNever(e.validation):n=\"regex\"!==e.validation?`Invalid ${e.validation}`:\"Invalid\";break;case r.ZodIssueCode.too_small:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"more than\"} ${e.minimum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"over\"} ${e.minimum} character(s)`:\"number\"===e.type||\"bigint\"===e.type?`Number must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${e.minimum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${new Date(Number(e.minimum))}`:\"Invalid input\";break;case r.ZodIssueCode.too_big:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"less than\"} ${e.maximum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"under\"} ${e.maximum} character(s)`:\"number\"===e.type?`Number must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"bigint\"===e.type?`BigInt must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly\":e.inclusive?\"smaller than or equal to\":\"smaller than\"} ${new Date(Number(e.maximum))}`:\"Invalid input\";break;case r.ZodIssueCode.custom:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_intersection_types:n=\"Intersection results could not be merged\";break;case r.ZodIssueCode.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case r.ZodIssueCode.not_finite:n=\"Number must be finite\";break;default:n=t.defaultError,o.util.assertNever(e)}return{message:n}}},155:(e,t,n)=>{var r,o;let a;Object.defineProperty(t,\"__esModule\",{value:!0}),t.discriminatedUnion=t.date=t.boolean=t.bigint=t.array=t.any=t.coerce=t.ZodFirstPartyTypeKind=t.late=t.ZodSchema=t.Schema=t.ZodReadonly=t.ZodPipeline=t.ZodBranded=t.BRAND=t.ZodNaN=t.ZodCatch=t.ZodDefault=t.ZodNullable=t.ZodOptional=t.ZodTransformer=t.ZodEffects=t.ZodPromise=t.ZodNativeEnum=t.ZodEnum=t.ZodLiteral=t.ZodLazy=t.ZodFunction=t.ZodSet=t.ZodMap=t.ZodRecord=t.ZodTuple=t.ZodIntersection=t.ZodDiscriminatedUnion=t.ZodUnion=t.ZodObject=t.ZodArray=t.ZodVoid=t.ZodNever=t.ZodUnknown=t.ZodAny=t.ZodNull=t.ZodUndefined=t.ZodSymbol=t.ZodDate=t.ZodBoolean=t.ZodBigInt=t.ZodNumber=t.ZodString=t.ZodType=void 0,t.NEVER=t.void=t.unknown=t.union=t.undefined=t.tuple=t.transformer=t.symbol=t.string=t.strictObject=t.set=t.record=t.promise=t.preprocess=t.pipeline=t.ostring=t.optional=t.onumber=t.oboolean=t.object=t.number=t.nullable=t.null=t.never=t.nativeEnum=t.nan=t.map=t.literal=t.lazy=t.intersection=t.instanceof=t.function=t.enum=t.effect=void 0,t.datetimeRegex=I,t.custom=ev;let i=n(348),l=n(61),s=n(538),c=n(818),u=n(709);class d{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let f=(e,t)=>{if((0,c.isValid)(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(\"Validation failed but no issues detected.\");return{success:!1,get error(){if(this._error)return this._error;let t=new i.ZodError(e.common.issues);return this._error=t,this._error}}};function p(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:o}=e;if(t&&(n||r))throw Error('Can\\'t use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.');return t?{errorMap:t,description:o}:{errorMap:(t,o)=>{let{message:a}=e;return\"invalid_enum_value\"===t.code?{message:a??o.defaultError}:void 0===o.data?{message:a??r??o.defaultError}:\"invalid_type\"!==t.code?{message:o.defaultError}:{message:a??n??o.defaultError}},description:o}}class h{get description(){return this._def.description}_getType(e){return(0,u.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new c.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if((0,c.isAsync)(t))throw Error(\"Synchronous parse encountered promise.\");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parseSync({data:e,path:n.path,parent:n});return f(n,r)}\"~validate\"(e){let t={common:{issues:[],async:!!this[\"~standard\"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)};if(!this[\"~standard\"].async)try{let n=this._parseSync({data:e,path:[],parent:t});return(0,c.isValid)(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(\"encountered\")&&(this[\"~standard\"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>(0,c.isValid)(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parse({data:e,path:n.path,parent:n});return f(n,await ((0,c.isAsync)(r)?r:Promise.resolve(r)))}refine(e,t){return this._refinement((n,r)=>{let o=e(n),a=()=>r.addIssue({code:i.ZodIssueCode.custom,...\"string\"==typeof t||void 0===t?{message:t}:\"function\"==typeof t?t(n):t});return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then(e=>!!e||(a(),!1)):!!o||(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>!!e(n)||(r.addIssue(\"function\"==typeof t?t(n,r):t),!1))}_refinement(e){return new es({schema:this,typeName:r.ZodEffects,effect:{type:\"refinement\",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[\"~standard\"]={version:1,vendor:\"zod\",validate:e=>this[\"~validate\"](e)}}optional(){return ec.create(this,this._def)}nullable(){return eu.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return V.create(this)}promise(){return el.create(this,this._def)}or(e){return W.create([this,e],this._def)}and(e){return X.create(this,e,this._def)}transform(e){return new es({...p(this._def),schema:this,typeName:r.ZodEffects,effect:{type:\"transform\",transform:e}})}default(e){return new ed({...p(this._def),innerType:this,defaultValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodDefault})}brand(){return new eh({typeName:r.ZodBranded,type:this,...p(this._def)})}catch(e){return new ef({...p(this._def),innerType:this,catchValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return em.create(this,e)}readonly(){return eg.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}t.ZodType=h,t.Schema=h,t.ZodSchema=h;let m=/^c[^\\s-]{8,}$/i,g=/^[0-9a-z]+$/,y=/^[0-9A-HJKMNP-TV-Z]{26}$/i,v=/^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i,b=/^[a-z0-9_-]{21}$/i,A=/^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,x=/^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/,w=/^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i,C=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,k=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,E=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,j=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,S=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,O=\"((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))\",B=RegExp(`^${O}$`);function P(e){let t=\"[0-5]\\\\d\";e.precision?t=`${t}\\\\.\\\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\\\.\\\\d+)?`);let n=e.precision?\"+\":\"?\";return`([01]\\\\d|2[0-3]):[0-5]\\\\d(:${t})${n}`}function I(e){let t=`${O}T${P(e)}`,n=[];return n.push(e.local?\"Z?\":\"Z\"),e.offset&&n.push(\"([+-]\\\\d{2}:?\\\\d{2})\"),t=`${t}(${n.join(\"|\")})`,RegExp(`^${t}$`)}class T extends h{_parse(e){var t,n,r,o;let l;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==u.ZodParsedType.string){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.string,received:t.parsedType}),c.INVALID}let s=new c.ParseStatus;for(let d of this._def.checks)if(\"min\"===d.kind)e.data.lengthd.value&&(l=this._getOrReturnCtx(e,l),(0,c.addIssueToContext)(l,{code:i.ZodIssueCode.too_big,maximum:d.value,type:\"string\",inclusive:!0,exact:!1,message:d.message}),s.dirty());else if(\"length\"===d.kind){let t=e.data.length>d.value,n=e.data.lengthe.test(t),{validation:t,code:i.ZodIssueCode.invalid_string,...s.errorUtil.errToObj(n)})}_addCheck(e){return new T({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:\"email\",...s.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:\"url\",...s.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:\"emoji\",...s.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:\"uuid\",...s.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:\"nanoid\",...s.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:\"cuid\",...s.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:\"cuid2\",...s.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:\"ulid\",...s.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:\"base64\",...s.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:\"base64url\",...s.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:\"jwt\",...s.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:\"ip\",...s.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:\"cidr\",...s.errorUtil.errToObj(e)})}datetime(e){return\"string\"==typeof e?this._addCheck({kind:\"datetime\",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:\"datetime\",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...s.errorUtil.errToObj(e?.message)})}date(e){return this._addCheck({kind:\"date\",message:e})}time(e){return\"string\"==typeof e?this._addCheck({kind:\"time\",precision:null,message:e}):this._addCheck({kind:\"time\",precision:void 0===e?.precision?null:e?.precision,...s.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:\"duration\",...s.errorUtil.errToObj(e)})}regex(e,t){return this._addCheck({kind:\"regex\",regex:e,...s.errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:\"includes\",value:e,position:t?.position,...s.errorUtil.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:\"startsWith\",value:e,...s.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:\"endsWith\",value:e,...s.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:\"min\",value:e,...s.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e,...s.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:\"length\",value:e,...s.errorUtil.errToObj(t)})}nonempty(e){return this.min(1,s.errorUtil.errToObj(e))}trim(){return new T({...this._def,checks:[...this._def.checks,{kind:\"trim\"}]})}toLowerCase(){return new T({...this._def,checks:[...this._def.checks,{kind:\"toLowerCase\"}]})}toUpperCase(){return new T({...this._def,checks:[...this._def.checks,{kind:\"toUpperCase\"}]})}get isDatetime(){return!!this._def.checks.find(e=>\"datetime\"===e.kind)}get isDate(){return!!this._def.checks.find(e=>\"date\"===e.kind)}get isTime(){return!!this._def.checks.find(e=>\"time\"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>\"duration\"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>\"email\"===e.kind)}get isURL(){return!!this._def.checks.find(e=>\"url\"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>\"emoji\"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>\"uuid\"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>\"nanoid\"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>\"cuid\"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>\"cuid2\"===e.kind)}get isULID(){return!!this._def.checks.find(e=>\"ulid\"===e.kind)}get isIP(){return!!this._def.checks.find(e=>\"ip\"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>\"cidr\"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>\"base64\"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>\"base64url\"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew T({checks:[],typeName:r.ZodString,coerce:e?.coerce??!1,...p(e)});class z extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==u.ZodParsedType.number){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.number,received:t.parsedType}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"int\"===r.kind?u.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:\"integer\",received:\"float\",message:r.message}),n.dirty()):\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.value,type:\"number\",inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?0!==function(e,t){let n=(e.toString().split(\".\")[1]||\"\").length,r=(t.toString().split(\".\")[1]||\"\").length,o=n>r?n:r;return Number.parseInt(e.toFixed(o).replace(\".\",\"\"))%Number.parseInt(t.toFixed(o).replace(\".\",\"\"))/10**o}(e.data,r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):\"finite\"===r.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_finite,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new z({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new z({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:\"int\",message:s.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:\"min\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:\"finite\",message:s.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:\"min\",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:s.errorUtil.toString(e)})._addCheck({kind:\"max\",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:s.errorUtil.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.value\"int\"===e.kind||\"multipleOf\"===e.kind&&u.util.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(\"finite\"===n.kind||\"int\"===n.kind||\"multipleOf\"===n.kind)return!0;else\"min\"===n.kind?(null===t||n.value>t)&&(t=n.value):\"max\"===n.kind&&(null===e||n.valuenew z({checks:[],typeName:r.ZodNumber,coerce:e?.coerce||!1,...p(e)});class D extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==u.ZodParsedType.bigint)return this._getInvalidInput(e);let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,type:\"bigint\",maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.bigint,received:t.parsedType}),c.INVALID}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new D({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new D({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew D({checks:[],typeName:r.ZodBigInt,coerce:e?.coerce??!1,...p(e)});class L extends h{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==u.ZodParsedType.boolean){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.boolean,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodBoolean=L,L.create=e=>new L({typeName:r.ZodBoolean,coerce:e?.coerce||!1,...p(e)});class N extends h{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==u.ZodParsedType.date){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.date,received:t.parsedType}),c.INVALID}if(Number.isNaN(e.data.getTime())){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_date}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?e.data.getTime()r.value&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:\"date\"}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:\"min\",value:e.getTime(),message:s.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e.getTime(),message:s.errorUtil.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew N({checks:[],coerce:e?.coerce||!1,typeName:r.ZodDate,...p(e)});class R extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.symbol){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.symbol,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodSymbol=R,R.create=e=>new R({typeName:r.ZodSymbol,...p(e)});class M extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.undefined,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodUndefined=M,M.create=e=>new M({typeName:r.ZodUndefined,...p(e)});class Z extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.null){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.null,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodNull=Z,Z.create=e=>new Z({typeName:r.ZodNull,...p(e)});class U extends h{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodAny=U,U.create=e=>new U({typeName:r.ZodAny,...p(e)});class F extends h{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodUnknown=F,F.create=e=>new F({typeName:r.ZodUnknown,...p(e)});class q extends h{_parse(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.never,received:t.parsedType}),c.INVALID}}t.ZodNever=q,q.create=e=>new q({typeName:r.ZodNever,...p(e)});class H extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.void,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodVoid=H,H.create=e=>new H({typeName:r.ZodVoid,...p(e)});class V extends h{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:t.parsedType}),c.INVALID;if(null!==r.exactLength){let e=t.data.length>r.exactLength.value,o=t.data.lengthr.maxLength.value&&((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.maxLength.value,type:\"array\",inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new d(t,e,t.path,n)))).then(e=>c.ParseStatus.mergeArray(n,e));let o=[...t.data].map((e,n)=>r.type._parseSync(new d(t,e,t.path,n)));return c.ParseStatus.mergeArray(n,o)}get element(){return this._def.type}min(e,t){return new V({...this._def,minLength:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new V({...this._def,maxLength:{value:e,message:s.errorUtil.toString(t)}})}length(e,t){return new V({...this._def,exactLength:{value:e,message:s.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}t.ZodArray=V,V.create=(e,t)=>new V({type:e,minLength:null,maxLength:null,exactLength:null,typeName:r.ZodArray,...p(t)});class $ extends h{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=u.util.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==u.ZodParsedType.object){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:o}=this._getCached(),a=[];if(!(this._def.catchall instanceof q&&\"strip\"===this._def.unknownKeys))for(let e in n.data)o.includes(e)||a.push(e);let l=[];for(let e of o){let t=r[e],o=n.data[e];l.push({key:{status:\"valid\",value:e},value:t._parse(new d(n,o,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof q){let e=this._def.unknownKeys;if(\"passthrough\"===e)for(let e of a)l.push({key:{status:\"valid\",value:e},value:{status:\"valid\",value:n.data[e]}});else if(\"strict\"===e)a.length>0&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.unrecognized_keys,keys:a}),t.dirty());else if(\"strip\"===e);else throw Error(\"Internal ZodObject error: invalid unknownKeys value.\")}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];l.push({key:{status:\"valid\",value:t},value:e._parse(new d(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of l){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>c.ParseStatus.mergeObjectSync(t,e)):c.ParseStatus.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return s.errorUtil.errToObj,new $({...this._def,unknownKeys:\"strict\",...void 0!==e?{errorMap:(t,n)=>{let r=this._def.errorMap?.(t,n).message??n.defaultError;return\"unrecognized_keys\"===t.code?{message:s.errorUtil.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new $({...this._def,unknownKeys:\"strip\"})}passthrough(){return new $({...this._def,unknownKeys:\"passthrough\"})}extend(e){return new $({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new $({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:r.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new $({...this._def,catchall:e})}pick(e){let t={};for(let n of u.util.objectKeys(e))e[n]&&this.shape[n]&&(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}omit(e){let t={};for(let n of u.util.objectKeys(this.shape))e[n]||(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof $){let n={};for(let r in t.shape){let o=t.shape[r];n[r]=ec.create(e(o))}return new $({...t._def,shape:()=>n})}if(t instanceof V)return new V({...t._def,type:e(t.element)});if(t instanceof ec)return ec.create(e(t.unwrap()));if(t instanceof eu)return eu.create(e(t.unwrap()));if(t instanceof G)return G.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let n of u.util.objectKeys(this.shape)){let r=this.shape[n];e&&!e[n]?t[n]=r:t[n]=r.optional()}return new $({...this._def,shape:()=>t})}required(e){let t={};for(let n of u.util.objectKeys(this.shape))if(e&&!e[n])t[n]=this.shape[n];else{let e=this.shape[n];for(;e instanceof ec;)e=e._def.innerType;t[n]=e}return new $({...this._def,shape:()=>t})}keyof(){return eo(u.util.objectKeys(this.shape))}}t.ZodObject=$,$.create=(e,t)=>new $({shape:()=>e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.strictCreate=(e,t)=>new $({shape:()=>e,unknownKeys:\"strict\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.lazycreate=(e,t)=>new $({shape:e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)});class W extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(function(e){for(let t of e)if(\"valid\"===t.result.status)return t.result;for(let n of e)if(\"dirty\"===n.result.status)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new i.ZodError(e.ctx.common.issues));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:n}),c.INVALID});{let e,r=[];for(let o of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=o._parseSync({data:t.data,path:t.path,parent:n});if(\"valid\"===a.status)return a;\"dirty\"!==a.status||e||(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let o=r.map(e=>new i.ZodError(e));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:o}),c.INVALID}}get options(){return this._def.options}}t.ZodUnion=W,W.create=(e,t)=>new W({options:e,typeName:r.ZodUnion,...p(t)});let Y=e=>{if(e instanceof en)return Y(e.schema);if(e instanceof es)return Y(e.innerType());if(e instanceof er)return[e.value];if(e instanceof ea)return e.options;if(e instanceof ei)return u.util.objectValues(e.enum);else if(e instanceof ed)return Y(e._def.innerType);else if(e instanceof M)return[void 0];else if(e instanceof Z)return[null];else if(e instanceof ec)return[void 0,...Y(e.unwrap())];else if(e instanceof eu)return[null,...Y(e.unwrap())];else if(e instanceof eh)return Y(e.unwrap());else if(e instanceof eg)return Y(e.unwrap());else if(e instanceof ef)return Y(e._def.innerType);else return[]};class K extends h{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID;let n=this.discriminator,r=t.data[n],o=this.optionsMap.get(r);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),c.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){let o=new Map;for(let n of t){let t=Y(n.shape[e]);if(!t.length)throw Error(`A discriminator value for key \\`${e}\\` could not be extracted from all schema options`);for(let r of t){if(o.has(r))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(r)}`);o.set(r,n)}}return new K({typeName:r.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:o,...p(n)})}}t.ZodDiscriminatedUnion=K;class X extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if((0,c.isAborted)(e)||(0,c.isAborted)(r))return c.INVALID;let o=function e(t,n){let r=(0,u.getParsedType)(t),o=(0,u.getParsedType)(n);if(t===n)return{valid:!0,data:t};if(r===u.ZodParsedType.object&&o===u.ZodParsedType.object){let r=u.util.objectKeys(n),o=u.util.objectKeys(t).filter(e=>-1!==r.indexOf(e)),a={...t,...n};for(let r of o){let o=e(t[r],n[r]);if(!o.valid)return{valid:!1};a[r]=o.data}return{valid:!0,data:a}}if(r===u.ZodParsedType.array&&o===u.ZodParsedType.array){if(t.length!==n.length)return{valid:!1};let r=[];for(let o=0;or(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}t.ZodIntersection=X,X.create=(e,t,n)=>new X({left:e,right:t,typeName:r.ZodIntersection,...p(n)});class G extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:n.parsedType}),c.INVALID;if(n.data.lengththis._def.items.length&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:\"array\"}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new d(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>c.ParseStatus.mergeArray(t,e)):c.ParseStatus.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new G({...this._def,rest:e})}}t.ZodTuple=G,G.create=(e,t)=>{if(!Array.isArray(e))throw Error(\"You must pass an array of schemas to z.tuple([ ... ])\");return new G({items:e,typeName:r.ZodTuple,rest:null,...p(t)})};class Q extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:n.parsedType}),c.INVALID;let r=[],o=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:o._parse(new d(n,e,n.path,e)),value:a._parse(new d(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?c.ParseStatus.mergeObjectAsync(t,r):c.ParseStatus.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,n){return new Q(t instanceof h?{keyType:e,valueType:t,typeName:r.ZodRecord,...p(n)}:{keyType:T.create(),valueType:e,typeName:r.ZodRecord,...p(t)})}}t.ZodRecord=Q;class J extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.map)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.map,received:n.parsedType}),c.INVALID;let r=this._def.keyType,o=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new d(n,e,n.path,[a,\"key\"])),value:o._parse(new d(n,t,n.path,[a,\"value\"]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,o=await n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}})}{let e=new Map;for(let n of a){let r=n.key,o=n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}}}}t.ZodMap=J,J.create=(e,t,n)=>new J({valueType:t,keyType:e,typeName:r.ZodMap,...p(n)});class ee extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.set)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.set,received:n.parsedType}),c.INVALID;let r=this._def;null!==r.minSize&&n.data.sizer.maxSize.value&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:r.maxSize.value,type:\"set\",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let o=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(\"aborted\"===r.status)return c.INVALID;\"dirty\"===r.status&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let l=[...n.data.values()].map((e,t)=>o._parse(new d(n,e,n.path,t)));return n.common.async?Promise.all(l).then(e=>a(e)):a(l)}min(e,t){return new ee({...this._def,minSize:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new ee({...this._def,maxSize:{value:e,message:s.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}t.ZodSet=ee,ee.create=(e,t)=>new ee({valueType:e,minSize:null,maxSize:null,typeName:r.ZodSet,...p(t)});class et extends h{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.function)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.function,received:t.parsedType}),c.INVALID;function n(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_arguments,argumentsError:n}})}function r(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_return_type,returnTypeError:n}})}let o={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof el){let e=this;return(0,c.OK)(async function(...t){let l=new i.ZodError([]),s=await e._def.args.parseAsync(t,o).catch(e=>{throw l.addIssue(n(t,e)),l}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,o).catch(e=>{throw l.addIssue(r(c,e)),l})})}{let e=this;return(0,c.OK)(function(...t){let l=e._def.args.safeParse(t,o);if(!l.success)throw new i.ZodError([n(t,l.error)]);let s=Reflect.apply(a,this,l.data),c=e._def.returns.safeParse(s,o);if(!c.success)throw new i.ZodError([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new et({...this._def,args:G.create(e).rest(F.create())})}returns(e){return new et({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new et({args:e||G.create([]).rest(F.create()),returns:t||F.create(),typeName:r.ZodFunction,...p(n)})}}t.ZodFunction=et;class en extends h{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}t.ZodLazy=en,en.create=(e,t)=>new en({getter:e,typeName:r.ZodLazy,...p(t)});class er extends h{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_literal,expected:this._def.value}),c.INVALID}return{status:\"valid\",value:e.data}}get value(){return this._def.value}}function eo(e,t){return new ea({values:e,typeName:r.ZodEnum,...p(t)})}t.ZodLiteral=er,er.create=(e,t)=>new er({value:e,typeName:r.ZodLiteral,...p(t)});class ea extends h{_parse(e){if(\"string\"!=typeof e.data){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{expected:u.util.joinValues(n),received:t.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_enum_value,options:n}),c.INVALID}return(0,c.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return ea.create(e,{...this._def,...t})}exclude(e,t=this._def){return ea.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}t.ZodEnum=ea,ea.create=eo;class ei extends h{_parse(e){let t=u.util.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==u.ZodParsedType.string&&n.parsedType!==u.ZodParsedType.number){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{expected:u.util.joinValues(e),received:n.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(u.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{received:n.data,code:i.ZodIssueCode.invalid_enum_value,options:e}),c.INVALID}return(0,c.OK)(e.data)}get enum(){return this._def.values}}t.ZodNativeEnum=ei,ei.create=(e,t)=>new ei({values:e,typeName:r.ZodNativeEnum,...p(t)});class el extends h{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.promise&&!1===t.common.async)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.promise,received:t.parsedType}),c.INVALID;let n=t.parsedType===u.ZodParsedType.promise?t.data:Promise.resolve(t.data);return(0,c.OK)(n.then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}t.ZodPromise=el,el.create=(e,t)=>new el({type:e,typeName:r.ZodPromise,...p(t)});class es extends h{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===r.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,o={addIssue:e=>{(0,c.addIssueToContext)(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(o.addIssue=o.addIssue.bind(o),\"preprocess\"===r.type){let e=r.transform(n.data,o);if(n.common.async)return Promise.resolve(e).then(async e=>{if(\"aborted\"===t.value)return c.INVALID;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r});{if(\"aborted\"===t.value)return c.INVALID;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r}}if(\"refinement\"===r.type){let e=e=>{let t=r.refinement(e,o);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");return e};if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>\"aborted\"===n.status?c.INVALID:(\"dirty\"===n.status&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))));{let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:(\"dirty\"===r.status&&t.dirty(),e(r.value),{status:t.value,value:r.value})}}if(\"transform\"===r.type)if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>(0,c.isValid)(e)?Promise.resolve(r.transform(e.value,o)).then(e=>({status:t.value,value:e})):c.INVALID);else{let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!(0,c.isValid)(e))return c.INVALID;let a=r.transform(e.value,o);if(a instanceof Promise)throw Error(\"Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.\");return{status:t.value,value:a}}u.util.assertNever(r)}}t.ZodEffects=es,t.ZodTransformer=es,es.create=(e,t,n)=>new es({schema:e,typeName:r.ZodEffects,effect:t,...p(n)}),es.createWithPreprocess=(e,t,n)=>new es({schema:t,effect:{type:\"preprocess\",transform:e},typeName:r.ZodEffects,...p(n)});class ec extends h{_parse(e){return this._getType(e)===u.ZodParsedType.undefined?(0,c.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodOptional=ec,ec.create=(e,t)=>new ec({innerType:e,typeName:r.ZodOptional,...p(t)});class eu extends h{_parse(e){return this._getType(e)===u.ZodParsedType.null?(0,c.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodNullable=eu,eu.create=(e,t)=>new eu({innerType:e,typeName:r.ZodNullable,...p(t)});class ed extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===u.ZodParsedType.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}t.ZodDefault=ed,ed.create=(e,t)=>new ed({innerType:e,typeName:r.ZodDefault,defaultValue:\"function\"==typeof t.default?t.default:()=>t.default,...p(t)});class ef extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return(0,c.isAsync)(r)?r.then(e=>({status:\"valid\",value:\"valid\"===e.status?e.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})})):{status:\"valid\",value:\"valid\"===r.status?r.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}t.ZodCatch=ef,ef.create=(e,t)=>new ef({innerType:e,typeName:r.ZodCatch,catchValue:\"function\"==typeof t.catch?t.catch:()=>t.catch,...p(t)});class ep extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.nan){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.nan,received:t.parsedType}),c.INVALID}return{status:\"valid\",value:e.data}}}t.ZodNaN=ep,ep.create=e=>new ep({typeName:r.ZodNaN,...p(e)}),t.BRAND=Symbol(\"zod_brand\");class eh extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}t.ZodBranded=eh;class em extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),(0,c.DIRTY)(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),{status:\"dirty\",value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(e,t){return new em({in:e,out:t,typeName:r.ZodPipeline})}}t.ZodPipeline=em;class eg extends h{_parse(e){let t=this._def.innerType._parse(e),n=e=>((0,c.isValid)(e)&&(e.value=Object.freeze(e.value)),e);return(0,c.isAsync)(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}}function ey(e,t){let n=\"function\"==typeof e?e(t):\"string\"==typeof e?{message:e}:e;return\"string\"==typeof n?{message:n}:n}function ev(e,t={},n){return e?U.create().superRefine((r,o)=>{let a=e(r);if(a instanceof Promise)return a.then(e=>{if(!e){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}});if(!a){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}}):U.create()}t.ZodReadonly=eg,eg.create=(e,t)=>new eg({innerType:e,typeName:r.ZodReadonly,...p(t)}),t.late={object:$.lazycreate},(o=r||(t.ZodFirstPartyTypeKind=r={})).ZodString=\"ZodString\",o.ZodNumber=\"ZodNumber\",o.ZodNaN=\"ZodNaN\",o.ZodBigInt=\"ZodBigInt\",o.ZodBoolean=\"ZodBoolean\",o.ZodDate=\"ZodDate\",o.ZodSymbol=\"ZodSymbol\",o.ZodUndefined=\"ZodUndefined\",o.ZodNull=\"ZodNull\",o.ZodAny=\"ZodAny\",o.ZodUnknown=\"ZodUnknown\",o.ZodNever=\"ZodNever\",o.ZodVoid=\"ZodVoid\",o.ZodArray=\"ZodArray\",o.ZodObject=\"ZodObject\",o.ZodUnion=\"ZodUnion\",o.ZodDiscriminatedUnion=\"ZodDiscriminatedUnion\",o.ZodIntersection=\"ZodIntersection\",o.ZodTuple=\"ZodTuple\",o.ZodRecord=\"ZodRecord\",o.ZodMap=\"ZodMap\",o.ZodSet=\"ZodSet\",o.ZodFunction=\"ZodFunction\",o.ZodLazy=\"ZodLazy\",o.ZodLiteral=\"ZodLiteral\",o.ZodEnum=\"ZodEnum\",o.ZodEffects=\"ZodEffects\",o.ZodNativeEnum=\"ZodNativeEnum\",o.ZodOptional=\"ZodOptional\",o.ZodNullable=\"ZodNullable\",o.ZodDefault=\"ZodDefault\",o.ZodCatch=\"ZodCatch\",o.ZodPromise=\"ZodPromise\",o.ZodBranded=\"ZodBranded\",o.ZodPipeline=\"ZodPipeline\",o.ZodReadonly=\"ZodReadonly\",t.instanceof=(e,t={message:`Input not instance of ${e.name}`})=>ev(t=>t instanceof e,t);let eb=T.create;t.string=eb;let eA=z.create;t.number=eA,t.nan=ep.create,t.bigint=D.create;let ex=L.create;t.boolean=ex,t.date=N.create,t.symbol=R.create,t.undefined=M.create,t.null=Z.create,t.any=U.create,t.unknown=F.create,t.never=q.create,t.void=H.create,t.array=V.create,t.object=$.create,t.strictObject=$.strictCreate,t.union=W.create,t.discriminatedUnion=K.create,t.intersection=X.create,t.tuple=G.create,t.record=Q.create,t.map=J.create,t.set=ee.create,t.function=et.create,t.lazy=en.create,t.literal=er.create,t.enum=ea.create,t.nativeEnum=ei.create,t.promise=el.create;let ew=es.create;t.effect=ew,t.transformer=ew,t.optional=ec.create,t.nullable=eu.create,t.preprocess=es.createWithPreprocess,t.pipeline=em.create,t.ostring=()=>eb().optional(),t.onumber=()=>eA().optional(),t.oboolean=()=>ex().optional(),t.coerce={string:e=>T.create({...e,coerce:!0}),number:e=>z.create({...e,coerce:!0}),boolean:e=>L.create({...e,coerce:!0}),bigint:e=>D.create({...e,coerce:!0}),date:e=>N.create({...e,coerce:!0})},t.NEVER=c.INVALID}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(629)})()}},__webpack_module_cache__={};function __nested_webpack_require_378273__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](n,n.exports,__nested_webpack_require_378273__),n.exports}__nested_webpack_require_378273__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __nested_webpack_require_378273__.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;__nested_webpack_require_378273__.t=function(n,r){if(1&r&&(n=this(n)),8&r||\"object\"==typeof n&&n&&(4&r&&n.__esModule||16&r&&\"function\"==typeof n.then))return n;var o=Object.create(null);__nested_webpack_require_378273__.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;\"object\"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>{a[e]=()=>n[e]});return a.default=()=>n,__nested_webpack_require_378273__.d(o,a),o}})(),__nested_webpack_require_378273__.d=(e,t)=>{for(var n in t)__nested_webpack_require_378273__.o(t,n)&&!__nested_webpack_require_378273__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__nested_webpack_require_378273__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_378273__.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},__nested_webpack_require_378273__.nc=void 0;var __nested_webpack_exports__={};for(var __webpack_i__ in(()=>{\"use strict\";__nested_webpack_require_378273__.r(__nested_webpack_exports__),__nested_webpack_require_378273__.d(__nested_webpack_exports__,{dispatcher:()=>dr,renderAppDevOverlay:()=>dd,DevOverlayContext:()=>di,renderPagesDevOverlay:()=>df,useDevOverlayContext:()=>dl});var e,t,n,r,o=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\"),a=__nested_webpack_require_378273__.n(o),i=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleDomAPI.js\"),l=__nested_webpack_require_378273__.n(i),s=__nested_webpack_require_378273__(\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\"),c=__nested_webpack_require_378273__.n(s),u=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\"),d=__nested_webpack_require_378273__.n(u),f=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/insertStyleElement.js\"),p=__nested_webpack_require_378273__.n(f),h=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\"),m=__nested_webpack_require_378273__.n(h),g=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\"),y={};y.styleTagTransform=m(),y.setAttributes=d(),y.insert=c(),y.domAPI=l(),y.insertStyleElement=p(),a()(g.Z,y),g.Z&&g.Z.locals&&g.Z.locals;var v=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\"),b={};b.styleTagTransform=m(),b.setAttributes=d(),b.insert=c(),b.domAPI=l(),b.insertStyleElement=p(),a()(v.Z,b),v.Z&&v.Z.locals&&v.Z.locals;var A=__nested_webpack_require_378273__(\"./dist/compiled/react/jsx-runtime.js\"),x=__nested_webpack_require_378273__(\"./dist/compiled/react/compiler-runtime.js\"),w=__nested_webpack_require_378273__(\"./dist/compiled/react/index.js\"),C=__nested_webpack_require_378273__.t(w,2),_=__nested_webpack_require_378273__(\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\"),k=/\\/_next(\\/static\\/.+)/,E=Symbol.for(\"next.console.error.digest\");function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){for(var t=1;t1?t-1:0),r=1;r0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]\"!==e.file&&(null!=e.column1?n+=\" (\".concat(e.line1,\":\").concat(e.column1,\")\"):n+=\" (\".concat(e.line1,\")\")),n}function eB(e){var t,n,r=(0,x.c)(6);r[0]!==e?(t=void 0===e?{}:e,r[0]=e,r[1]=t):t=r[1];var o=t.file,a=t.line1,i=t.column1;return r[2]!==i||r[3]!==o||r[4]!==a?(n=function(){if(null!=o&&null!=a&&null!=i){var e=new URLSearchParams;e.append(\"file\",o),e.append(\"line1\",String(a)),e.append(\"column1\",String(i)),self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString())).then(eP,function(e){console.error('Failed to open file \"'.concat(o,\" (\").concat(a,\":\").concat(i,')\" in your editor. Cause:'),e)})}},r[2]=i,r[3]=o,r[4]=a,r[5]=n):n=r[5],n}function eP(){}function eI(e){for(var t=1;t? +\\d+ +\\| [ ]+/.exec(eV()(e))?null:/^>? +\\d+ +\\| ( *)/.exec(eV()(e))}).filter(Boolean).map(function(e){return e.pop()}).reduce(function(e,t){return isNaN(e)?t.length:Math.min(e,t.length)},NaN);return n>1?t.map(function(e,t){return~(t=e.indexOf(\"|\"))?e.substring(0,t)+e.substring(t).replace(\"^\\\\ {\".concat(n,\"}\"),\"\"):e}).join(\"\\n\"):t.join(\"\\n\")}function eW(e){for(var t=1;t0&&n.push(r),n})(e$(a)).map(function(e){var t,n,r,a,i,l,s,c,u;return{line:e,parsedLine:(t=e,n=o,((null==(r=t[0])?void 0:r.content)===\">\"||(null==(a=t[0])?void 0:a.content)===\" \")&&(s=null==(l=t[1])||null==(u=l.content)||null==(c=u.replace(\"|\",\"\"))?void 0:c.trim()),{lineNumber:s,isErroredLine:s===(null==(i=n.line1)?void 0:i.toString())})}})},[a,o]),l=eB({file:o.file,line1:null!=(n=o.line1)?n:1,column1:null!=(r=o.column1)?r:1}),s=null==o||null==(t=o.file)?void 0:t.split(\".\").pop();return(0,A.jsxs)(\"div\",{\"data-nextjs-codeframe\":!0,children:[(0,A.jsx)(\"div\",{className:\"code-frame-header\",children:(0,A.jsxs)(\"p\",{className:\"code-frame-link\",children:[(0,A.jsx)(\"span\",{className:\"code-frame-icon\",children:(0,A.jsx)(eL,{lang:s})}),(0,A.jsxs)(\"span\",{\"data-text\":!0,children:[eO(o),\" @\",\" \",(0,A.jsx)(eA,{text:o.methodName})]}),(0,A.jsx)(\"button\",{\"aria-label\":\"Open in editor\",\"data-with-open-in-editor-link-source-file\":!0,onClick:l,children:(0,A.jsx)(\"span\",{className:\"code-frame-icon\",\"data-icon\":\"right\",children:(0,A.jsx)(ez,{width:16,height:16})})})]})}),(0,A.jsx)(\"pre\",{className:\"code-frame-pre\",children:(0,A.jsx)(\"div\",{className:\"code-frame-lines\",children:i.map(function(e,t){var n,r,o=e.line,a=e.parsedLine,i=a.lineNumber,l=a.isErroredLine,s={};return i&&(s[\"data-nextjs-codeframe-line\"]=i),l&&(s[\"data-nextjs-codeframe-line--errored\"]=!0),(0,A.jsx)(\"div\",(n=eW({},s),r=r={children:o.map(function(e,t){return(0,A.jsx)(\"span\",{style:eW({color:e.fg?\"var(--color-\".concat(e.fg,\")\"):void 0},\"bold\"===e.decoration?{fontWeight:500}:\"italic\"===e.decoration?{fontStyle:\"italic\"}:void 0),children:e.content},\"frame-\".concat(t))})},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n),\"line-\".concat(t))})})})]})}var eK=function(e){var t,n,r,o,a,i,l=(0,x.c)(8);return(l[0]!==e?(a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,A.jsx)(\"div\",(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,A.jsx)(\"div\",(t=function(e){for(var t=1;t [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: 8px;\\n }\\n\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n max-height: calc(100% - 15px);\\n }\\n }\\n\\n @media (min-width: 576px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 540px;\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 960px;\\n }\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return eG=function(){return n},n}var eQ=eu(eG());function eJ(){for(var e=arguments.length,t=Array(e),n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"content\",\"getContent\",\"actionLabel\",\"successLabel\",\"icon\",\"disabled\"]),n=e.content,o=e.getContent,t=e.actionLabel,l=e.successLabel,a=e.icon,r=e.disabled,v[0]=e,v[1]=t,v[2]=n,v[3]=r,v[4]=o,v[5]=a,v[6]=i,v[7]=l):(t=v[1],n=v[2],r=v[3],o=v[4],a=v[5],i=v[6],l=v[7]),v[8]!==n||v[9]!==o?(s=function(){return n||(o?o():\"\")},v[8]=n,v[9]=o,v[10]=s):s=v[10];var b=s;v[11]!==b?(c=b(),v[11]=b,v[12]=c):c=v[12];var C=e4(e9(c),4),_=C[0],k=C[1],E=C[2],j=C[3],S=\"error\"===_.state?_.error:null;v[13]!==S?(u=function(){null!==S&&console.warn(S)},d=[S],v[13]=S,v[14]=u,v[15]=d):(u=v[14],d=v[15]),w.useEffect(u,d),v[16]!==_.state||v[17]!==E?(f=function(){if(\"success\"===_.state){var e=setTimeout(function(){E()},2e3);return function(){clearTimeout(e)}}},v[16]=_.state,v[17]=E,v[18]=f):f=v[18],v[19]!==_.state||v[20]!==j||v[21]!==E?(p=[j,_.state,E],v[19]=_.state,v[20]=j,v[21]=E,v[22]=p):p=v[22],w.useEffect(f,p);var O=!navigator.clipboard||j||r||!!S,B=\"success\"===_.state?l:t;v[23]!==_.state||v[24]!==a?(h=\"success\"===_.state?(0,A.jsx)(te,{}):a||(0,A.jsx)(e7,{width:14,height:14,className:\"error-overlay-toolbar-button-icon\"}),v[23]=_.state,v[24]=a,v[25]=h):h=v[25];var P=h,I=\"nextjs-data-copy-button--\".concat(_.state);v[26]!==e.className||v[27]!==I?(m=eJ(e.className,\"nextjs-data-copy-button\",I),v[26]=e.className,v[27]=I,v[28]=m):m=v[28],v[29]!==k||v[30]!==O?(g=function(){O||k()},v[29]=k,v[30]=O,v[31]=g):g=v[31];var T=\"error\"===_.state?\" \".concat(_.error):null;return v[32]!==O||v[33]!==B||v[34]!==P||v[35]!==i||v[36]!==T||v[37]!==m||v[38]!==g?(y=(0,A.jsxs)(\"button\",e2(e1({},i),{type:\"button\",title:B,\"aria-label\":B,\"aria-disabled\":O,disabled:O,\"data-nextjs-copy-button\":!0,className:m,onClick:g,children:[P,T]})),v[32]=O,v[33]=B,v[34]=P,v[35]=i,v[36]=T,v[37]=m,v[38]=g,v[39]=y):y=v[39],y}function e7(e){var t,n,r=(0,x.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M2.406.438c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531H3.937V8.75H2.406a.219.219 0 0 1-.219-.219V1.97c0-.121.098-.219.22-.219h4.812c.12 0 .218.098.218.219v.656H8.75v-.656c0-.846-.686-1.532-1.531-1.532H2.406zm4.375 3.5c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531h4.813c.845 0 1.531-.685 1.531-1.53V5.468c0-.846-.686-1.532-1.531-1.532H6.78zm-.218 1.53c0-.12.097-.218.218-.218h4.813c.12 0 .219.098.219.219v6.562c0 .121-.098.219-.22.219H6.782a.219.219 0 0 1-.218-.219V5.47z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,A.jsx)(\"svg\",e2(e1({width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function te(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{height:\"16\",xlinkTitle:\"copied\",viewBox:\"0 0 16 16\",width:\"16\",stroke:\"currentColor\",fill:\"currentColor\",children:(0,A.jsx)(\"path\",{d:\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"})}),t[0]=e):e=t[0],e}function tt(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n\\.(.*)\\nThis will cause a hydration error\\.(.*)/,/^In HTML, (.+?) cannot be a descendant of <(.+?)>\\.\\nThis will cause a hydration error\\.(.*)/,/^In HTML, text nodes cannot be a child of <(.+?)>\\.\\nThis will cause a hydration error\\./,/^In HTML, whitespace text nodes cannot be a child of <(.+?)>\\. Make sure you don't have any extra whitespace between tags on each line of your source code\\.\\nThis will cause a hydration error\\./];function tv(e){return ty.some(function(t){return t.test(e)})}var tb=[\"https://nextjs.org\",\"https://react.dev\"];function tA(e){return tb.some(function(t){return e.startsWith(t)})}function tx(e){var t,n,r,o,a=(0,x.c)(6),i=e.errorMessage;a[0]!==i?(t=function(e){var t,n,r,o=(t=e,n=tA,r=Array.from(t.matchAll(/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/gi),function(e){return e[0]}),n?r.filter(function(e){return n(e)}):r);if(0===o.length)return null;var a=o[0];return a===tm?tg:a}(i),a[0]=i,a[1]=t):t=a[1];var l=t;return l?(a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,A.jsx)(tw,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14}),a[3]=r):r=a[3],a[4]!==l?(o=(0,A.jsx)(\"a\",{title:\"Go to related documentation\",\"aria-label\":\"Go to related documentation\",className:\"docs-link-button\",href:l,target:\"_blank\",rel:\"noopener noreferrer\",children:r}),a[4]=l,a[5]=o):o=a[5],o):(a[2]===Symbol.for(\"react.memo_cache_sentinel\")?(n=(0,A.jsx)(\"button\",{title:\"No related documentation found\",\"aria-label\":\"No related documentation found\",className:\"docs-link-button\",disabled:!0,children:(0,A.jsx)(tw,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14})}),a[2]=n):n=a[2],n)}function tw(e){var t,n,r,o,a=(0,x.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M0 .875h4.375C5.448.875 6.401 1.39 7 2.187A3.276 3.276 0 0 1 9.625.875H14v11.156H9.4c-.522 0-1.023.208-1.392.577l-.544.543h-.928l-.544-.543c-.369-.37-.87-.577-1.392-.577H0V.875zm6.344 3.281a1.969 1.969 0 0 0-1.969-1.968H1.312v8.53H4.6c.622 0 1.225.177 1.744.502V4.156zm1.312 7.064V4.156c0-1.087.882-1.968 1.969-1.968h3.063v8.53H9.4c-.622 0-1.225.177-1.744.502z\",fill:\"currentColor\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,A.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]e.length)&&(t=e.length);for(var n=0,r=Array(t);n200)},i[0]=t):t=i[0],i[1]!==l?(n=[l],i[1]=l,i[2]=n):n=i[2],(0,w.useLayoutEffect)(t,n);var m=\"nextjs__container_errors_desc \".concat(f&&!c?\"truncated\":\"\");return i[3]!==l||i[4]!==m?(r=(0,A.jsx)(\"p\",{ref:h,id:\"nextjs__container_errors_desc\",className:m,children:l}),i[3]=l,i[4]=m,i[5]=r):r=i[5],i[6]!==c||i[7]!==f?(o=f&&!c&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(\"div\",{className:\"nextjs__container_errors_gradient_overlay\"}),(0,A.jsx)(\"button\",{onClick:function(){return u(!0)},className:\"nextjs__container_errors_expand_button\",\"aria-expanded\":c,\"aria-controls\":\"nextjs__container_errors_desc\",children:\"Show More\"})]}),i[6]=c,i[7]=f,i[8]=o):o=i[8],i[9]!==r||i[10]!==o?(a=(0,A.jsxs)(\"div\",{className:\"nextjs__container_errors_wrapper\",children:[r,o]}),i[9]=r,i[10]=o,i[11]=a):a=i[11],a}function tD(e){var t,n=(0,x.c)(2),r=e.errorType;return n[0]!==r?(t=(0,A.jsx)(\"span\",{id:\"nextjs__container_errors_label\",className:\"nextjs__container_errors_label\",children:r}),n[0]=r,n[1]=t):t=n[1],t}function tL(e){var t,n,r=(0,x.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M9.24996 12.0608L8.71963 11.5304L5.89641 8.70722C5.50588 8.3167 5.50588 7.68353 5.89641 7.29301L8.71963 4.46978L9.24996 3.93945L10.3106 5.00011L9.78029 5.53044L7.31062 8.00011L9.78029 10.4698L10.3106 11.0001L9.24996 12.0608Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,A.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-label\":o,className:a,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tN(e){var t,n,r=(0,x.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M6.75011 3.93945L7.28044 4.46978L10.1037 7.29301C10.4942 7.68353 10.4942 8.3167 10.1037 8.70722L7.28044 11.5304L6.75011 12.0608L5.68945 11.0001L6.21978 10.4698L8.68945 8.00011L6.21978 5.53044L5.68945 5.00011L6.75011 3.93945Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,A.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",className:a,\"aria-label\":o,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&_(Math.max(0,C-1))})},v[0]=C,v[1]=_,v[2]=r):r=v[2];var k=r;v[3]!==C||v[4]!==_||v[5]!==b.length?(o=function(){return(0,w.startTransition)(function(){C=b.length-1,R=C>=b.length-1;return v[31]===Symbol.for(\"react.memo_cache_sentinel\")?(m=(0,A.jsx)(tN,{title:\"next\",className:\"error-overlay-pagination-button-icon\"}),v[31]=m):m=v[31],v[32]!==E||v[33]!==N||v[34]!==R?(g=(0,A.jsx)(\"button\",{ref:S,type:\"button\",disabled:N,\"aria-disabled\":R,onClick:E,\"data-nextjs-dialog-error-next\":!0,className:\"error-overlay-pagination-button\",children:m}),v[32]=E,v[33]=N,v[34]=R,v[35]=g):g=v[35],v[36]!==d||v[37]!==h||v[38]!==g?(y=(0,A.jsxs)(\"nav\",{className:\"error-overlay-pagination dialog-exclude-closing-from-outside-click\",ref:I,children:[d,h,g]}),v[36]=d,v[37]=h,v[38]=g,v[39]=y):y=v[39],y}function tZ(e){var t,n,r,o,a=(0,x.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,A.jsx)(\"circle\",{cx:\"7\",cy:\"7\",r:\"5.5\",strokeWidth:\"3\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,A.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\",\"onClose\",\"aria-labelledby\",\"aria-describedby\"]),p=e.children,h=e.className,m=e.onClose,f=e[\"aria-labelledby\"],d=e[\"aria-describedby\"],j[0]=e,j[1]=d,j[2]=f,j[3]=p,j[4]=h,j[5]=m,j[6]=g):(d=j[1],f=j[2],p=j[3],h=j[4],m=j[5],g=j[6]);var S=w.useRef(null),O=(t=w.useState(\"undefined\"!=typeof document&&document.hasFocus()?\"dialog\":void 0),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||function(e,t){if(e){if(\"string\"==typeof e)return t$(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return t$(e,t)}}(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),B=O[0],P=O[1];return(j[7]!==m?(y=function(e){return e.preventDefault(),null==m?void 0:m()},j[7]=m,j[8]=y):y=j[8],r=S,o=tW,a=y,(s=(0,x.c)(5))[0]!==o||s[1]!==r||s[2]!==a?(i=function(){var e=r&&\"current\"in r?r.current:r;if(null!=e&&null!=a){var t=function(t){!(!e||e.contains(t.target))&&(o.some(function(e){return t.target.closest(e)})||a(t))},n=e.getRootNode();return n.addEventListener(\"mouseup\",t),n.addEventListener(\"touchend\",t,{passive:!1}),function(){n.removeEventListener(\"mouseup\",t),n.removeEventListener(\"touchend\",t)}}},l=[a,r,o],s[0]=o,s[1]=r,s[2]=a,s[3]=i,s[4]=l):(i=s[3],l=s[4]),w.useEffect(i,l),j[9]===Symbol.for(\"react.memo_cache_sentinel\")?(v=function(){if(null!=S.current){var e=function(){P(document.hasFocus()?\"dialog\":void 0)};return window.addEventListener(\"focus\",e),window.addEventListener(\"blur\",e),function(){window.removeEventListener(\"focus\",e),window.removeEventListener(\"blur\",e)}}},b=[],j[9]=v,j[10]=b):(v=j[9],b=j[10]),w.useEffect(v,b),j[11]===Symbol.for(\"react.memo_cache_sentinel\")?(C=function(){var e,t,n=S.current,r=null==n?void 0:n.getRootNode(),o=(e=r,null!=(t=ShadowRoot)&&\"undefined\"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t)?null==r?void 0:r.activeElement:null;return null==n||n.focus(),function(){null==n||n.blur(),null==o||o.focus()}},_=[],j[11]=C,j[12]=_):(C=j[11],_=j[12]),w.useEffect(C,_),j[13]!==m?(k=function(e){\"Escape\"===e.key&&(null==m||m())},j[13]=m,j[14]=k):k=j[14],j[15]!==d||j[16]!==f||j[17]!==p||j[18]!==h||j[19]!==g||j[20]!==B||j[21]!==k)?(E=(0,A.jsx)(\"div\",(c=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"onClose\",\"footer\"]),r=e.children,a=e.onClose,o=e.footer,c[0]=e,c[1]=r,c[2]=o,c[3]=a,c[4]=i):(r=c[1],o=c[2],a=c[3],i=c[4]),c[5]!==r||c[6]!==a||c[7]!==i)?(l=(0,A.jsx)(tY,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"className\",\"children\"]),o=e.className,r=e.children,s[0]=e,s[1]=r,s[2]=o,s[3]=a):(r=s[1],o=s[2],a=s[3]),s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(i=[],s[4]=i):i=s[4],w.useEffect(t2,i),s[5]!==r||s[6]!==o||s[7]!==a)?(l=(0,A.jsx)(\"div\",(t=function(e){for(var t=1;t0)){var e=window.innerWidth-document.documentElement.clientWidth;e>0&&(n=document.body.style.paddingRight,document.body.style.paddingRight=\"\".concat(e,\"px\")),r=document.body.style.overflow,document.body.style.overflow=\"hidden\"}}),t1}function t4(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n padding: initial;\\n top: 10vh;\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return t4=function(){return n},n}function t5(e){var t,n,r,o,a,i=(0,x.c)(6);return(i[0]!==e?(o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\"]),r=e.children,i[0]=e,i[1]=r,i[2]=o):(r=i[1],o=i[2]),i[3]!==r||i[4]!==o)?(a=(0,A.jsx)(t0,(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.current.getBoundingClientRect().left-10&&n.clientX<=e.current.getBoundingClientRect().right+10&&n.clientY>=e.current.getBoundingClientRect().top-10&&n.clientY<=e.current.getBoundingClientRect().bottom+10||null!=(a=t.current)&&a.getBoundingClientRect()&&n.clientX>=t.current.getBoundingClientRect().left-10&&n.clientX<=t.current.getBoundingClientRect().right+10&&n.clientY>=t.current.getBoundingClientRect().top-10&&n.clientY<=t.current.getBoundingClientRect().bottom+10||r(\"outside\"))},s=function(e){\"Escape\"===e.key&&r(\"escape\")};return null==i||i.addEventListener(\"mousedown\",l),null==i||i.addEventListener(\"keydown\",s),function(){null==i||i.removeEventListener(\"mousedown\",l),null==i||i.removeEventListener(\"keydown\",s)}}},i=[n,r,o,e,t],l[0]=n,l[1]=r,l[2]=o,l[3]=e,l[4]=t,l[5]=a,l[6]=i):(a=l[5],i=l[6]),(0,w.useEffect)(a,i)}var nt=\"cubic-bezier(0.175, 0.885, 0.32, 1.1)\",nn=(0,w.forwardRef)(function(e,t){var n,r,o=(0,x.c)(9),a=e.stop,i=e.blur,l=e.side,s=e.style,c=e.height,u=\"\".concat(c,\"px\");o[0]!==i||o[1]!==a||o[2]!==s||o[3]!==u?(n=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"measure\"]),g=e.children,y=e.measure,k[0]=e,k[1]=g,k[2]=y,k[3]=v):(g=k[1],y=k[2],v=k[3]);var E=no((0,w.useState)(null),2),j=E[0],S=E[1],O=no((n=j,r=y,l=(0,x.c)(7),c=(s=no((0,w.useState)(0),2))[0],u=s[1],f=(d=no((0,w.useState)(!0),2))[0],p=d[1],l[0]!==n||l[1]!==r?(o=function(){if(r&&n){var e,t=new ResizeObserver(function(t){var n=no(t,1)[0].contentRect;clearTimeout(e),e=window.setTimeout(function(){p(!1)},100),u(n.height)});return t.observe(n),function(){return t.disconnect()}}},a=[r,n],l[0]=n,l[1]=r,l[2]=o,l[3]=a):(o=l[2],a=l[3]),(0,w.useEffect)(o,a),l[4]!==c||l[5]!==f?(i=[c,f],l[4]=c,l[5]=f,l[6]=i):i=l[6],i),2),B=O[0],P=O[1]?\"auto\":B;return(k[4]!==P?(b={height:P,transition:\"height 250ms var(--timing-swift)\"},k[4]=P,k[5]=b):b=k[5],k[6]!==g?(C=(0,A.jsx)(\"div\",{ref:S,children:g}),k[6]=g,k[7]=C):C=k[7],k[8]!==v||k[9]!==t||k[10]!==b||k[11]!==C)?(_=(0,A.jsx)(\"div\",(h=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"fixed\"]),t=e.fixed,o[0]=e,o[1]=t,o[2]=n):(t=o[1],n=o[2]);var a=!!t||void 0;return o[3]!==n||o[4]!==a?(r=(0,A.jsx)(\"div\",function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n h1 {\\n font-size: var(--size-20);\\n line-height: var(--size-24);\\n font-weight: bold;\\n margin: calc(16px * 1.5) 0;\\n color: var(--color-title-h1);\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-14);\\n color: var(--color-accents-1);\\n margin-left: 16px;\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: 4px;\\n }\\n .nextjs-container-errors-header > p > a {\\n color: inherit;\\n font-weight: bold;\\n }\\n .nextjs-container-errors-header\\n > .nextjs-container-build-error-version-status {\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n }\\n\",\"\\n \").concat(\"\",\"\\n\\n \").concat(\"\\n [data-nextjs-error-overlay-nav] {\\n --stroke-color: var(--color-gray-400);\\n --background-color: var(--color-background-100);\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\\n width: 100%;\\n\\n position: relative;\\n z-index: 2;\\n outline: none;\\n translate: var(--next-dialog-border-width) var(--next-dialog-border-width);\\n max-width: var(--next-dialog-max-width);\\n\\n .error-overlay-notch {\\n translate: calc(var(--next-dialog-border-width) * -1);\\n width: auto;\\n height: var(--next-dialog-notch-height);\\n padding: 12px;\\n background: var(--background-color);\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n position: relative;\\n\\n &[data-side='left'] {\\n padding-right: 0;\\n border-radius: var(--next-dialog-radius) 0 0 0;\\n\\n .error-overlay-notch-tail {\\n right: -54px;\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-right: -10px;\\n }\\n }\\n\\n &[data-side='right'] {\\n padding-left: 0;\\n border-radius: 0 var(--next-dialog-radius) 0 0;\\n\\n .error-overlay-notch-tail {\\n left: -54px;\\n transform: rotateY(180deg);\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-left: -12px;\\n }\\n }\\n\\n .error-overlay-notch-tail {\\n position: absolute;\\n top: calc(var(--next-dialog-border-width) * -1);\\n pointer-events: none;\\n z-index: -1;\\n height: calc(100% + var(--next-dialog-border-width));\\n }\\n }\\n }\\n\\n @media (max-width: 600px) {\\n [data-nextjs-error-overlay-nav] {\\n background: var(--background-color);\\n border-radius: var(--next-dialog-radius) var(--next-dialog-radius) 0 0;\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n overflow: hidden;\\n translate: 0 var(--next-dialog-border-width);\\n \\n .error-overlay-notch {\\n border-radius: 0;\\n border: 0;\\n\\n &[data-side=\\\"left\\\"], &[data-side=\\\"right\\\"] {\\n border-radius: 0;\\n }\\n\\n .error-overlay-notch-tail {\\n display: none;\\n }\\n }\\n }\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_label {\\n padding: 2px 6px;\\n margin: 0;\\n border-radius: var(--rounded-md-2);\\n background: var(--color-red-100);\\n font-weight: 600;\\n font-size: var(--size-12);\\n color: var(--color-red-900);\\n font-family: var(--font-stack-monospace);\\n line-height: var(--size-20);\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_wrapper {\\n position: relative;\\n }\\n\\n .nextjs__container_errors_desc {\\n margin: 0;\\n margin-left: 4px;\\n color: var(--color-red-900);\\n font-weight: 500;\\n font-size: var(--size-16);\\n letter-spacing: -0.32px;\\n line-height: var(--size-24);\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n }\\n\\n .nextjs__container_errors_desc.truncated {\\n max-height: 200px;\\n overflow: hidden;\\n }\\n\\n .nextjs__container_errors_gradient_overlay {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 85px;\\n background: linear-gradient(\\n 180deg,\\n rgba(250, 250, 250, 0) 0%,\\n var(--color-background-100) 100%\\n );\\n }\\n\\n .nextjs__container_errors_expand_button {\\n position: absolute;\\n bottom: 10px;\\n left: 50%;\\n transform: translateX(-50%);\\n display: flex;\\n align-items: center;\\n padding: 6px 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: 999px;\\n box-shadow:\\n 0px 2px 2px var(--color-gray-alpha-100),\\n 0px 8px 8px -8px var(--color-gray-alpha-100);\\n font-size: var(--size-13);\\n cursor: pointer;\\n color: var(--color-gray-900);\\n font-weight: 500;\\n transition: background-color 0.2s ease;\\n }\\n\\n .nextjs__container_errors_expand_button:hover {\\n background: var(--color-gray-100);\\n }\\n\",\"\\n \").concat(\"\\n .error-overlay-toolbar {\\n display: flex;\\n gap: 6px;\\n }\\n\\n .nodejs-inspector-button,\\n .copy-error-button,\\n .docs-link-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n width: var(--size-28);\\n height: var(--size-28);\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n svg {\\n width: var(--size-14);\\n height: var(--size-14);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n\\n &:not(:disabled):hover {\\n background: var(--color-gray-alpha-100);\\n }\\n\\n &:not(:disabled):active {\\n background: var(--color-gray-alpha-200);\\n }\\n\\n &:disabled {\\n background-color: var(--color-gray-100);\\n cursor: not-allowed;\\n }\\n }\\n\\n .error-overlay-toolbar-button-icon {\\n color: var(--color-gray-900);\\n }\\n\",\"\\n\\n [data-nextjs-error-label-group] {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n }\\n\");function np(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n /* secondary z-index, -1 than toast z-index */\\n z-index: 2147483646;\\n\\n display: flex;\\n align-content: center;\\n align-items: center;\\n flex-direction: column;\\n padding: 10vh 15px 0;\\n }\\n\\n @media (max-height: 812px) {\\n [data-nextjs-dialog-overlay] {\\n padding: 15px 15px 0;\\n }\\n }\\n\\n [data-nextjs-dialog-backdrop] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: var(--color-backdrop);\\n backdrop-filter: blur(10px);\\n pointer-events: all;\\n z-index: -1;\\n }\\n\\n [data-nextjs-dialog-backdrop-fixed] {\\n cursor: not-allowed;\\n -webkit-backdrop-filter: blur(8px);\\n backdrop-filter: blur(8px);\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return np=function(){return n},n}var nh=eu(np());function nm(e){var t,n,r,o,a,i=(0,x.c)(9),l=e.file,s=e.location,c=null!=(t=null==s?void 0:s.line)?t:1,u=null!=(n=null==s?void 0:s.column)?n:1;i[0]!==l||i[1]!==c||i[2]!==u?(r={file:l,line1:c,column1:u},i[0]=l,i[1]=c,i[2]=u,i[3]=r):r=i[3];var d=eB(r),f=s?\":\".concat(s.line,\":\").concat(s.column):null;return i[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,A.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[(0,A.jsx)(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),(0,A.jsx)(\"polyline\",{points:\"15 3 21 3 21 9\"}),(0,A.jsx)(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})]}),i[4]=o):o=i[4],i[5]!==l||i[6]!==d||i[7]!==f?(a=(0,A.jsxs)(\"div\",{\"data-with-open-in-editor-link\":!0,\"data-with-open-in-editor-link-import-trace\":!0,role:\"link\",onClick:d,title:\"Click to open in your editor\",children:[l,f,o]}),i[5]=l,i[6]=d,i[7]=f,i[8]=a):a=i[8],a}function ng(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"message\"]),r=e.message,d[0]=e,d[1]=r,d[2]=o):(r=d[1],o=d[2]),d[3]!==r?(a=Error(r),d[3]=r,d[4]=a):a=d[4];var f=a;d[5]!==r?(l=nv(r)||\"Failed to compile\",d[5]=r,d[6]=l):l=d[6],i=l,d[7]!==i||d[8]!==r||d[9]!==o.versionInfo.installed?(s=function(){var e=[];if(e.push(\"## Error Type\\nBuild Error\"),i&&e.push(\"## Error Message\\n\".concat(i)),r){var t=eV()(r);e.push(\"## Build Output\\n\".concat(t))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(o.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},d[7]=i,d[8]=r,d[9]=o.versionInfo.installed,d[10]=s):s=d[10];var p=s;return(d[11]!==r?(c=(0,A.jsx)(ny,{content:r}),d[11]=r,d[12]=c):c=d[12],d[13]!==f||d[14]!==i||d[15]!==p||d[16]!==o||d[17]!==c)?(u=(0,A.jsx)(nd,(t=function(e){for(var t=1;t0&&(0,A.jsxs)(\"button\",{\"data-nextjs-call-stack-ignored-list-toggle-button\":c,onClick:d,children:[\"\".concat(c?\"Hide\":\"Show\",\" \").concat(u,\" ignore-listed frame(s)\"),(0,A.jsx)(nw,{})]}),l[2]=u,l[3]=c,l[4]=d,l[5]=n):n=l[5],l[6]!==t||l[7]!==n?(r=(0,A.jsxs)(\"div\",{\"data-nextjs-call-stack-header\":!0,children:[t,n]}),l[6]=t,l[7]=n,l[8]=r):r=l[8],l[9]!==s||l[10]!==c?(l[12]!==c?(a=function(e,t){return!e.ignored||c?(0,A.jsx)(nx,{frame:e},t):null},l[12]=c,l[13]=a):a=l[13],o=s.map(a),l[9]=s,l[10]=c,l[11]=o):o=l[11],l[14]!==r||l[15]!==o?(i=(0,A.jsxs)(\"div\",{\"data-nextjs-call-stack-container\":!0,children:[r,o]}),l[14]=r,l[15]=o,l[16]=i):i=l[16],i}var nk=eu(nC());function nE(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n\"===e[0],l=a||i,s=l?e[0]:\"\",c=l?e.indexOf(s):-1,u=nB(l?[e.slice(0,c),e.slice(c+1)]:[e,\"\"],2),d=u[0],f=u[1];a?n.push((0,A.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line\":!0,\"data-nextjs-container-errors-pseudo-html--diff\":\"+\"===s?\"add\":\"remove\",children:(0,A.jsxs)(\"span\",{children:[d,(0,A.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line-sign\":!0,children:s}),f,\"\\n\"]})},\"comp-diff\"+t)):n.push((0,A.jsxs)(\"span\",(r=function(e){for(var t=1;t0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]0&&(0,A.jsx)(nj,{dialogResizerRef:s,frames:c}),i[2]=s,i[3]=c,i[4]=o):o=i[4],i[5]!==r||i[6]!==o?(a=(0,A.jsxs)(A.Fragment,{children:[r,o]}),i[5]=r,i[6]=o,i[7]=a):a=i[7],a}function nU(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame}var nF=\"\\n \".concat(\"\\n [data-nextjs-container-errors-pseudo-html] {\\n padding: 8px 0;\\n margin: 8px 0;\\n border: 1px solid var(--color-gray-400);\\n background: var(--color-background-200);\\n color: var(--color-syntax-constant);\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n line-height: 1.33em; /* 16px in 12px font size */\\n border-radius: var(--rounded-md-2);\\n }\\n [data-nextjs-container-errors-pseudo-html-line] {\\n display: inline-block;\\n width: 100%;\\n padding-left: 40px;\\n line-height: calc(5 / 3);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error'] {\\n background: var(--color-amber-100);\\n box-shadow: 2px 0 0 0 var(--color-amber-900) inset;\\n font-weight: bold;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse-button] {\\n all: unset;\\n margin-left: 12px;\\n &:focus {\\n outline: none;\\n }\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add'] {\\n background: var(--color-green-300);\\n }\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-green-900);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove'] {\\n background: var(--color-red-300);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-red-900);\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-amber-900);\\n }\\n \\n [data-nextjs-container-errors-pseudo-html--hint] {\\n display: inline-block;\\n font-size: 0;\\n height: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html--tag-adjacent='false'] {\\n color: var(--color-accents-1);\\n }\\n .nextjs__container_errors__component-stack {\\n margin: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse='true']\\n .nextjs__container_errors__component-stack\\n code {\\n max-height: 120px;\\n mask-image: linear-gradient(to bottom,rgba(0,0,0,0) 0%,black 10%);\\n padding-bottom: 40px;\\n }\\n .nextjs__container_errors__component-stack code {\\n display: block;\\n width: 100%;\\n white-space: pre-wrap;\\n scroll-snap-type: y mandatory;\\n overflow-y: hidden;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff] {\\n scroll-snap-align: center;\\n }\\n .error-overlay-hydration-error-diff-plus-icon {\\n color: var(--color-green-900);\\n }\\n .error-overlay-hydration-error-diff-minus-icon {\\n color: var(--color-red-900);\\n }\\n\",\"\\n\");function nq(e){return e&&\"undefined\"!=typeof Symbol&&e.constructor===Symbol?\"symbol\":typeof e}function nH(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"getSquashedHydrationErrorDetails\",\"runtimeErrors\",\"debugInfo\",\"onClose\"]),s=(0,w.useRef)(null),c=function(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m=(0,x.c)(17),g=e.runtimeErrors,y=e.getSquashedHydrationErrorDetails,v=(a=(0,w.useState)(0),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(a,2)||function(e,t){if(e){if(\"string\"==typeof e)return nH(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return nH(e,t)}}(a,i)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),b=v[0],A=v[1];s=0===g.length;var C=(t=null==(c=null!=(u=g[b])?u:null)?void 0:c.error,n=y,(0,w.useMemo)(function(){if(void 0===t)return nY;var e,r,o,a=n(t);if(null!==a)return{hydrationWarning:null!=(r=a.warning)?r:null,notes:null,reactOutputComponentDiff:null!=(o=a.reactOutputComponentDiff)?o:null};if(!(tv((e=t).message)||/Hydration failed because the server rendered (text|HTML) didn't match the client\\./.test(e.message)||/A tree hydrated but some attributes of the server rendered HTML didn't match the client properties./.test(e.message)))return nY;var i=function(e){var t=e.message;if(tv(t)){var n=tf(t.split(\"\\n\\n\"),2),r=n[0],o=n[1],a=(void 0===o?\"\":o).trim();return{message:\"\"===a?t.trim():r.trim(),diff:a,notes:null}}var i=tf(t.split(\"\".concat(tm)),2),l=i[0],s=i[1],c=l.trim();if(void 0!==s&&s.length>1){var u=[];s.split(\"\\n\").forEach(function(e){\"\"!==e.trim()&&(e.trim().startsWith(\"at \")||u.push(e))});var d=tp(c.split(\"\\n\\n\")),f=d[0],p=d.slice(1);return{message:f,diff:u.join(\"\\n\"),notes:p.join(\"\\n\\n\")||null}}var h=tp(c.split(\"\\n\\n\"));return{message:h[0],diff:null,notes:h.slice(1).join(\"\\n\\n\")}}(t),l=i.message,s=i.notes,c=i.diff;return null===l?nY:{hydrationWarning:l,notes:s,reactOutputComponentDiff:c}},[t,n]));if(s||!c)return m[0]!==b||m[1]!==s?(d={isLoading:s,activeIdx:b,setActiveIndex:A,activeError:null,errorDetails:null,errorCode:null,errorType:null,notes:null,hydrationWarning:null},m[0]=b,m[1]=s,m[2]=d):d=m[2],d;var _=c.error;m[3]!==_?(f=(void 0===(l=_)?\"undefined\":nq(l))===\"object\"&&null!==l&&\"__NEXT_ERROR_CODE\"in l&&\"string\"==typeof l.__NEXT_ERROR_CODE?l.__NEXT_ERROR_CODE:(void 0===l?\"undefined\":nq(l))===\"object\"&&null!==l&&\"digest\"in l&&\"string\"==typeof l.digest?l.digest.split(\"@\").find(function(e){return e.startsWith(\"E\")}):void 0,m[3]=_,m[4]=f):f=m[4];var k=f;m[5]!==c.type||m[6]!==_?(r=_,p=\"recoverable\"===(o=c.type)?\"Recoverable \".concat(r.name):\"console\"===o?\"Console \".concat(r.name):\"Runtime \".concat(r.name),m[5]=c.type,m[6]=_,m[7]=p):p=m[7];var E=p,j=C.notes,S=C.hydrationWarning;return m[8]!==c||m[9]!==b||m[10]!==k||m[11]!==C||m[12]!==E||m[13]!==S||m[14]!==s||m[15]!==j?(h={isLoading:s,activeIdx:b,setActiveIndex:A,activeError:c,errorDetails:C,errorCode:k,errorType:E,notes:j,hydrationWarning:S},m[8]=c,m[9]=b,m[10]=k,m[11]=C,m[12]=E,m[13]=S,m[14]=s,m[15]=j,m[16]=h):h=m[16],h}({runtimeErrors:o,getSquashedHydrationErrorDetails:r}),u=c.isLoading,d=c.errorCode,f=c.errorType,p=c.notes,h=c.hydrationWarning,m=c.activeIdx,g=c.errorDetails,y=c.activeError,v=c.setActiveIndex,b=nM(y),C=(0,w.useMemo)(function(){var e,t=b.findIndex(function(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame});return null!=(e=b[t])?e:null},[b]),_=(0,w.useCallback)(function(){if(!y)return\"\";var e=[];f&&e.push(\"## Error Type\\n\".concat(f));var t=y.error,n=t.message;if(\"environmentName\"in t&&t.environmentName){var r=\"[ \".concat(t.environmentName,\" ] \");n.startsWith(r)&&(n=n.slice(r.length))}if(n&&e.push(\"## Error Message\\n\".concat(n)),b.length>0){var o=b.filter(function(e){return!e.ignored});if(o.length>0){var a=o.map(function(e){if(e.originalStackFrame){var t=e.originalStackFrame,n=t.methodName,r=t.file,o=t.line1,a=t.column1;return\" at \".concat(n,\" (\").concat(r,\":\").concat(o,\":\").concat(a,\")\")}if(e.sourceStackFrame){var i=e.sourceStackFrame,l=i.methodName,s=i.file,c=i.line1,u=i.column1;return\" at \".concat(l,\" (\").concat(s,\":\").concat(c,\":\").concat(u,\")\")}return\"\"}).filter(Boolean);a.length>0&&e.push(\"\\n\".concat(a.join(\"\\n\")))}}if(null==C?void 0:C.originalCodeFrame){var i=eV()(e$(C.originalCodeFrame));e.push(\"## Code Frame\\n\".concat(i))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(l.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},[y,f,C,b,l.versionInfo]);if(u)return(0,A.jsx)(t0,{children:(0,A.jsx)(ni,{})});if(!y)return null;var k=y.error,E=[\"server\",\"edge-server\"].includes(nT(k)||\"\");return(0,A.jsxs)(nd,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function n0(e){var t,n,r,o,a,i,l=(0,x.c)(10);l[0]!==e?(t=nJ(e,[\"routerType\"]),n=e.routerType,l[0]=e,l[1]=t,l[2]=n):(t=l[1],n=l[2]),l[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,A.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",(0,A.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),\" \",'is marked as \"static\" since it will be prerendered during the build time.']}),l[3]=r):r=l[3];var s=\"pages\"===n?\"https://nextjs.org/docs/pages/building-your-application/data-fetching/incremental-static-regeneration\":\"https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration\";return l[4]!==s?(o=(0,A.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"With Static Rendering, routes are rendered at build time, or in the background after\",\" \",(0,A.jsx)(\"a\",{className:\"dev-tools-info-link\",href:s,target:\"_blank\",rel:\"noopener noreferrer\",children:\"data revalidation\"}),\".\"]}),l[4]=s,l[5]=o):o=l[5],l[6]===Symbol.for(\"react.memo_cache_sentinel\")?(a=(0,A.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Static rendering is useful when a route has data that is not personalized to the user and can be known at build time, such as a static blog post or a product page.\"}),l[6]=a):a=l[6],l[7]!==t||l[8]!==o?(i=(0,A.jsxs)(\"article\",nQ(nG({className:\"dev-tools-info-article\"},t),{children:[r,o,a]})),l[7]=t,l[8]=o,l[9]=i):i=l[9],i}function n1(e){var t,n,r,o,a,i,l,s=(0,x.c)(11);return s[0]!==e?(t=nJ(e,[\"routerType\"]),n=e.routerType,s[0]=e,s[1]=t,s[2]=n):(t=s[1],n=s[2]),s[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,A.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),s[3]=r):r=s[3],s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,A.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",r,\" \",'is marked as \"dynamic\" since it will be rendered for each user at',\" \",(0,A.jsx)(\"strong\",{children:\"request time\"}),\".\"]}),a=(0,A.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Dynamic rendering is useful when a route has data that is personalized to the user or has information that can only be known at request time, such as cookies or the URL's search params.\"}),s[4]=o,s[5]=a):(o=s[4],a=s[5]),s[6]!==n?(i=\"pages\"===n?(0,A.jsxs)(\"p\",{className:\"dev-tools-info-pagraph\",children:[\"Exporting the\",\" \",(0,A.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"getServerSideProps\"}),\" \",\"function will opt the route into dynamic rendering. This function will be called by the server on every request.\"]}):(0,A.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"During rendering, if a\",\" \",(0,A.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-apis\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"Dynamic API\"}),\" \",\"or a\",\" \",(0,A.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/api-reference/functions/fetch\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"fetch\"}),\" \",\"option of\",\" \",(0,A.jsx)(\"code\",{className:\"dev-tools-info-code\",children:\"{ cache: 'no-store' }\"}),\" \",\"is discovered, Next.js will switch to dynamically rendering the whole route.\"]}),s[6]=n,s[7]=i):i=s[7],s[8]!==t||s[9]!==i?(l=(0,A.jsxs)(\"article\",nQ(nG({className:\"dev-tools-info-article\"},t),{children:[o,a,i]})),s[8]=t,s[9]=i,s[10]=l):l=s[10],l}var n2={pages:{static:\"https://nextjs.org/docs/pages/building-your-application/rendering/static-site-generation\",dynamic:\"https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering\"},app:{static:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#static-rendering-default\",dynamic:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-rendering\"}};function n4(e){var t,n,r,o,a=(0,x.c)(8);return a[0]!==e?(n=nJ(e,[\"routerType\",\"isStaticRoute\"]),r=e.routerType,t=e.isStaticRoute,a[0]=e,a[1]=t,a[2]=n,a[3]=r):(t=a[1],n=a[2],r=a[3]),a[4]!==t||a[5]!==n||a[6]!==r?(o=t?(0,A.jsx)(n0,nG({routerType:r},n)):(0,A.jsx)(n1,nG({routerType:r},n)),a[4]=t,a[5]=n,a[6]=r,a[7]=o):o=a[7],o}function n5(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"none\",children:(0,A.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m.191 2.063.56.498 13.5 12 .561.498.997-1.121-.56-.498-1.81-1.608 2.88-3.342v-.98l-3.204-3.72C10.645.923 6.365.686 3.594 3.08L1.748 1.44 1.188.94.19 2.063ZM14.761 8l-2.442 2.836-1.65-1.466a3.001 3.001 0 0 0-4.342-3.86l-1.6-1.422a5.253 5.253 0 0 1 7.251.682L14.76 8ZM7.526 6.576l1.942 1.727a1.499 1.499 0 0 0-1.942-1.727Zm-7.845.935 1.722-2 1.137.979L1.24 8l2.782 3.23A5.25 5.25 0 0 0 9.9 12.703l.54 1.4a6.751 6.751 0 0 1-7.555-1.892L-.318 8.49v-.98Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n3(){var e,t,n=(0,x.c)(2);return n[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"g\",{clipPath:\"url(#light_icon_clip_path)\",children:(0,A.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M8.75.75V0h-1.5v2h1.5V.75ZM3.26 4.32l-.53-.53-.354-.353-.53-.53 1.06-1.061.53.53.354.354.53.53-1.06 1.06Zm8.42-1.06.53-.53.353-.354.53-.53 1.061 1.06-.53.53-.354.354-.53.53-1.06-1.06ZM8 11.25a3.25 3.25 0 1 0 0-6.5 3.25 3.25 0 0 0 0 6.5Zm0 1.5a4.75 4.75 0 1 0 0-9.5 4.75 4.75 0 0 0 0 9.5Zm6-5.5h2v1.5h-2v-1.5Zm-13.25 0H0v1.5h2v-1.5H.75Zm1.62 5.32-.53.53 1.06 1.06.53-.53.354-.353.53-.53-1.06-1.061-.53.53-.354.354Zm10.2 1.06.53.53 1.06-1.06-.53-.53-.354-.354-.53-.53-1.06 1.06.53.53.353.354ZM8.75 14v2h-1.5v-2h1.5Z\",clipRule:\"evenodd\"})}),n[0]=e):e=n[0],n[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"20\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:[e,(0,A.jsx)(\"defs\",{children:(0,A.jsx)(\"clipPath\",{id:\"light_icon_clip_path\",children:(0,A.jsx)(\"path\",{fill:\"currentColor\",d:\"M0 0h16v16H0z\"})})})]}),n[1]=t):t=n[1],t}function n6(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{\"data-testid\":\"geist-icon\",height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M1.5 8.00005C1.5 5.53089 2.99198 3.40932 5.12349 2.48889C4.88136 3.19858 4.75 3.95936 4.75 4.7501C4.75 8.61609 7.88401 11.7501 11.75 11.7501C11.8995 11.7501 12.048 11.7454 12.1953 11.7361C11.0955 13.1164 9.40047 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00005ZM6.41706 0.577759C2.78784 1.1031 0 4.22536 0 8.00005C0 12.1422 3.35786 15.5001 7.5 15.5001C10.5798 15.5001 13.2244 13.6438 14.3792 10.9921L13.4588 9.9797C12.9218 10.155 12.3478 10.2501 11.75 10.2501C8.71243 10.2501 6.25 7.78767 6.25 4.7501C6.25 3.63431 6.58146 2.59823 7.15111 1.73217L6.41706 0.577759ZM13.25 1V1.75V2.75L14.25 2.75H15V4.25H14.25H13.25V5.25V6H11.75V5.25V4.25H10.75L10 4.25V2.75H10.75L11.75 2.75V1.75V1H13.25Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}function n9(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{width:\"16\",height:\"16\",strokeLinejoin:\"round\",children:(0,A.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8.5a1 1 0 0 1-1 1H8.75v3h1.75V16h-5v-1.5h1.75v-3H1a1 1 0 0 1-1-1V2Zm1.5.5V10h13V2.5h-13Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n8(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0;h[2]!==g||h[3]!==v||h[4]!==_?(n=function(e){if(e.target===T.current&&\"Tab\"!==e.key){I.current&&clearTimeout(I.current),_||k(!0),v&&(S([]),b(!1));var t=function(e){I.current=window.setTimeout(function(){P(!0),g(e.join(\"+\")),I.current=window.setTimeout(function(){k(!1)},1e3)},180)};e.preventDefault(),e.stopPropagation(),S(function(n){if(n.includes(e.code)||n.includes(e.key))return n;if(!rr.includes(e.key)){var r=n.findIndex(rl);if(-1!==r){var o=re(n);return o[r]=e.code,t(o),o}var a=re(n).concat([e.code]);return t(a),a}for(var i=re(n),l=rr.indexOf(e.key),s=0,c=0;c1,a[0]=e):e=a[0];var c=e;return a[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){!0===c&&s(\"⌘\"),!1===c&&s(\"Ctrl\")},n=[c],a[1]=t,a[2]=n):(t=a[1],n=a[2]),(0,w.useEffect)(t,n),a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r={minWidth:\"1em\",display:\"inline-block\"},a[3]=r):r=a[3],a[4]!==l?(o=(0,A.jsx)(\"span\",{style:r,children:l}),a[4]=l,a[5]=o):o=a[5],o}function rd(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}var rf=eu(rn());function rp(e){return\"undefined\"!=typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}function rh(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"prefix\"]),r=e.children,o=e.prefix,c[0]=e,c[1]=r,c[2]=o,c[3]=a):(r=c[1],o=c[2],a=c[3]),c[4]!==r||c[5]!==a)?(i=(0,A.jsx)(\"select\",(t=function(e){for(var t=1;t span { \\n position: relative;\\n z-index: 1;\\n }\\n\\n &::after {\\n content: \"\";\\n width: calc(100% + var(--code-frame-padding) * 2);\\n height: var(--code-frame-line-height);\\n left: calc(-1 * var(--code-frame-padding));\\n background: var(--color-red-200);\\n box-shadow: 2px 0 0 0 var(--color-red-900) inset;\\n position: absolute;\\n }\\n }\\n\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n }\\n\\n .code-frame-link {\\n display: flex;\\n margin: 0;\\n outline: 0;\\n }\\n .code-frame-link [data-icon=\\'right\\'] {\\n margin-left: auto;\\n }\\n\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\\n [data-nextjs-codeframe] svg {\\n color: var(--color-gray-900);\\n }\\n',\"\\n [data-nextjs-terminal]::selection,\\n [data-nextjs-terminal] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n\\n [data-nextjs-terminal] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-terminal] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-terminal] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-terminal] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\",\"\\n [data-with-open-in-editor-link] svg {\\n width: auto;\\n height: var(--size-14);\\n margin-left: 8px;\\n }\\n [data-with-open-in-editor-link] {\\n cursor: pointer;\\n }\\n [data-with-open-in-editor-link]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-with-open-in-editor-link-import-trace] {\\n margin-left: 16px;\\n }\\n\",\"\",\"\\n .nextjs-error-with-static {\\n bottom: calc(16px * 4.5);\\n }\\n p.nextjs__container_errors__link {\\n font-size: var(--size-14);\\n }\\n p.nextjs__container_errors__notes {\\n color: var(--color-stack-notes);\\n font-size: var(--size-14);\\n line-height: 1.5;\\n }\\n .nextjs-container-errors-body > h2:not(:first-child) {\\n margin-top: calc(16px + 8px);\\n }\\n .nextjs-container-errors-body > h2 {\\n color: var(--color-title-color);\\n margin-bottom: 8px;\\n font-size: var(--size-20);\\n }\\n .nextjs-toast-errors-parent {\\n cursor: pointer;\\n transition: transform 0.2s ease;\\n }\\n .nextjs-toast-errors-parent:hover {\\n transform: scale(1.1);\\n }\\n .nextjs-toast-errors {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n }\\n .nextjs-toast-errors > svg {\\n margin-right: 8px;\\n }\\n .nextjs-toast-hide-button {\\n margin-left: 24px;\\n border: none;\\n background: none;\\n color: var(--color-ansi-bright-white);\\n padding: 0;\\n transition: opacity 0.25s ease;\\n opacity: 0.7;\\n }\\n .nextjs-toast-hide-button:hover {\\n opacity: 1;\\n }\\n .nextjs__container_errors__error_title {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: 14px;\\n }\\n .error-overlay-notes-container {\\n margin: 8px 2px;\\n }\\n .error-overlay-notes-container p {\\n white-space: pre-wrap;\\n }\\n\",nF,\"\\n .nextjs-container-build-error-version-status {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n gap: 4px;\\n\\n height: var(--size-26);\\n padding: 6px 8px 6px 6px;\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n color: var(--color-gray-900);\\n font-size: var(--size-12);\\n font-weight: 500;\\n line-height: var(--size-16);\\n }\\n\\n a.nextjs-container-build-error-version-status {\\n text-decoration: none;\\n color: var(--color-gray-900);\\n\\n &:hover {\\n background: var(--color-gray-100);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n }\\n\\n .version-staleness-indicator.fresh {\\n fill: var(--color-green-800);\\n stroke: var(--color-green-300);\\n }\\n .version-staleness-indicator.stale {\\n fill: var(--color-amber-800);\\n stroke: var(--color-amber-300);\\n }\\n .version-staleness-indicator.outdated {\\n fill: var(--color-red-800);\\n stroke: var(--color-red-300);\\n }\\n .version-staleness-indicator.unknown {\\n fill: var(--color-gray-800);\\n stroke: var(--color-gray-300);\\n }\\n\\n .nextjs-container-build-error-version-status > .turbopack-text {\\n background: linear-gradient(\\n to right,\\n var(--color-turbopack-text-red) 0%,\\n var(--color-turbopack-text-blue) 100%\\n );\\n background-clip: text;\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n }\\n\",\"\\n .dev-tools-info-code {\\n background: var(--color-gray-400);\\n color: var(--color-gray-1000);\\n font-family: var(--font-stack-monospace);\\n padding: 2px 4px;\\n margin: 0;\\n font-size: var(--size-13);\\n white-space: break-spaces;\\n border-radius: var(--rounded-md-2);\\n }\\n\\n .dev-tools-info-code-block-container {\\n padding: 6px;\\n }\\n\\n .dev-tools-info-code-block {\\n position: relative;\\n background: var(--color-background-200);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-md-2);\\n min-width: 326px;\\n }\\n\\n .dev-tools-info-code-block-pre {\\n margin: 0;\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n }\\n\\n .dev-tools-info-copy-button {\\n position: absolute;\\n\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n right: 8px;\\n top: 8px;\\n padding: 4px;\\n height: var(--size-24);\\n width: var(--size-24);\\n border-radius: var(--rounded-md-2);\\n border: 1px solid var(--color-gray-alpha-400);\\n background: var(--color-background-100);\\n }\\n\\n .dev-tools-info-code-block-line {\\n display: block;\\n line-height: 1.5;\\n padding: 0 16px;\\n }\\n\\n .dev-tools-info-code-block-line.dev-tools-info-highlight {\\n border-left: 2px solid var(--color-blue-900);\\n background: var(--color-blue-400);\\n }\\n\\n .dev-tools-info-code-block-json-key {\\n color: var(--color-syntax-keyword);\\n }\\n\\n .dev-tools-info-code-block-json-value {\\n color: var(--color-syntax-link);\\n }\\n\",\"\",rO,'\\n .nextjs-scroll-fader {\\n --blur: 1px;\\n --stop: 25%;\\n --height: 150px;\\n --color-bg: var(--color-background-100);\\n position: absolute;\\n pointer-events: none;\\n user-select: none;\\n width: 100%;\\n height: var(--height);\\n left: 0;\\n backdrop-filter: blur(var(--blur));\\n\\n &[data-side=\"top\"] {\\n top: 0;\\n background: linear-gradient(to top, transparent, var(--color-bg));\\n mask-image: linear-gradient(to bottom, var(--color-bg) var(--stop), transparent);\\n }\\n }\\n',rI,rf)})}function rD(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function oe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return r6(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r6(e,t)}}(e,t)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ot(){var e,t,n=(e=[\"\\n [data-next-badge-root] {\\n --timing: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --duration-long: 250ms;\\n --color-outer-border: #171717;\\n --color-inner-border: hsla(0, 0%, 100%, 0.14);\\n --color-hover-alpha-subtle: hsla(0, 0%, 100%, 0.13);\\n --color-hover-alpha-error: hsla(0, 0%, 100%, 0.2);\\n --color-hover-alpha-error-2: hsla(0, 0%, 100%, 0.25);\\n --mark-size: calc(var(--size) - var(--size-2) * 2);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n &:has([data-next-badge][data-error='true']) {\\n --focus-color: #fff;\\n }\\n }\\n\\n [data-disabled-icon] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding-right: 4px;\\n }\\n\\n [data-next-badge] {\\n width: var(--size);\\n height: var(--size);\\n display: flex;\\n align-items: center;\\n position: relative;\\n background: rgba(0, 0, 0, 0.8);\\n box-shadow:\\n 0 0 0 1px var(--color-outer-border),\\n inset 0 0 0 1px var(--color-inner-border),\\n 0px 16px 32px -8px rgba(0, 0, 0, 0.24);\\n backdrop-filter: blur(48px);\\n border-radius: var(--rounded-full);\\n user-select: none;\\n cursor: pointer;\\n scale: 1;\\n overflow: hidden;\\n will-change: scale, box-shadow, width, background;\\n transition:\\n scale var(--duration-short) var(--timing),\\n width var(--duration-long) var(--timing),\\n box-shadow var(--duration-long) var(--timing),\\n background var(--duration-short) ease;\\n\\n &:active[data-error='false'] {\\n scale: 0.95;\\n }\\n\\n &[data-animate='true']:not(:hover) {\\n scale: 1.02;\\n }\\n\\n &[data-error='false']:has([data-next-mark]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: 3px;\\n }\\n\\n &[data-error='true'] {\\n background: #ca2a30;\\n --color-inner-border: #e5484d;\\n\\n [data-next-mark] {\\n background: var(--color-hover-alpha-error);\\n outline-offset: 0px;\\n\\n &:focus-visible {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-error-2);\\n }\\n }\\n }\\n\\n &[data-error-expanded='false'][data-error='true'] ~ [data-dot] {\\n scale: 1;\\n }\\n\\n > div {\\n display: flex;\\n }\\n }\\n\\n [data-issues-collapse]:focus-visible {\\n outline: var(--focus-ring);\\n }\\n\\n [data-issues]:has([data-issues-open]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n [data-dot] {\\n content: '';\\n width: var(--size-8);\\n height: var(--size-8);\\n background: #fff;\\n box-shadow: 0 0 0 1px var(--color-outer-border);\\n border-radius: 50%;\\n position: absolute;\\n top: 2px;\\n right: 0px;\\n scale: 0;\\n pointer-events: none;\\n transition: scale 200ms var(--timing);\\n transition-delay: var(--duration-short);\\n }\\n\\n [data-issues] {\\n --padding-left: 8px;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n padding-left: 8px;\\n padding-right: 8px;\\n height: var(--size-32);\\n margin-right: 2px;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:has([data-issues-open]:hover) {\\n background: var(--color-hover-alpha-error);\\n }\\n\\n &:has([data-issues-collapse]) {\\n padding-right: calc(var(--padding-left) / 2);\\n }\\n\\n [data-cross] {\\n translate: 0px -1px;\\n }\\n }\\n\\n [data-issues-open] {\\n font-size: var(--size-13);\\n color: white;\\n width: fit-content;\\n height: 100%;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n margin: 0;\\n line-height: var(--size-36);\\n font-weight: 500;\\n z-index: 2;\\n white-space: nowrap;\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n }\\n\\n [data-issues-collapse] {\\n width: var(--size-24);\\n height: var(--size-24);\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:hover {\\n background: var(--color-hover-alpha-error);\\n }\\n }\\n\\n [data-cross] {\\n color: #fff;\\n width: var(--size-12);\\n height: var(--size-12);\\n }\\n\\n [data-next-mark] {\\n width: var(--mark-size);\\n height: var(--mark-size);\\n margin: 0 2px;\\n display: flex;\\n align-items: center;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-long) var(--timing);\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-subtle);\\n }\\n\\n svg {\\n flex-shrink: 0;\\n width: var(--size-40);\\n height: var(--size-40);\\n }\\n }\\n\\n [data-issues-count-animation] {\\n display: grid;\\n place-items: center center;\\n font-variant-numeric: tabular-nums;\\n\\n &[data-animate='false'] {\\n [data-issues-count-exit],\\n [data-issues-count-enter] {\\n animation-duration: 0ms;\\n }\\n }\\n\\n > * {\\n grid-area: 1 / 1;\\n }\\n\\n [data-issues-count-exit] {\\n animation: fadeOut 300ms var(--timing) forwards;\\n }\\n\\n [data-issues-count-enter] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n [data-issues-count-plural] {\\n display: inline-block;\\n &[data-animate='true'] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n .path0 {\\n animation: draw0 1.5s ease-in-out infinite;\\n }\\n\\n .path1 {\\n animation: draw1 1.5s ease-out infinite;\\n animation-delay: 0.3s;\\n }\\n\\n .paused {\\n stroke-dashoffset: 0;\\n }\\n\\n @keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n filter: blur(2px);\\n transform: translateY(8px);\\n }\\n 100% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n }\\n\\n @keyframes fadeOut {\\n 0% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n 100% {\\n opacity: 0;\\n transform: translateY(-12px);\\n filter: blur(2px);\\n }\\n }\\n\\n @keyframes draw0 {\\n 0%,\\n 25% {\\n stroke-dashoffset: -29.6;\\n }\\n 25%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 29.6;\\n }\\n }\\n\\n @keyframes draw1 {\\n 0%,\\n 20% {\\n stroke-dashoffset: -11.6;\\n }\\n 20%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 11.6;\\n }\\n }\\n\\n @media (prefers-reduced-motion) {\\n [data-issues-count-exit],\\n [data-issues-count-enter],\\n [data-issues-count-plural] {\\n animation-duration: 0ms !important;\\n }\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return ot=function(){return n},n}function on(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,b,C,_,k,E,j,S,O,B,P,I,T,z,D,L,N,R,M,Z,U,H,V,$,W,Y=(0,x.c)(40);Y[0]!==e?(D=r7(e,[\"onTriggerClick\"]),L=e.onTriggerClick,Y[0]=e,Y[1]=D,Y[2]=L):(D=Y[1],L=Y[2]);var K=dl(),X=K.state,G=K.dispatch,Q=u3().totalErrorCount,J=36/X.scale,ee=r5(),et=ee.panel,en=ee.triggerRef,er=ee.setPanel,eo=\"panel-selector\"===et,ea=Q>0,ei=oe((0,w.useState)(ea),2),el=ei[0],es=ei[1],ec=oe((0,w.useState)(ea),2),ed=ec[0],ef=ec[1];ed!==ea&&(ef(ea),es(ea));var ep=oe((0,w.useState)(!1),2),eh=ep[0],em=ep[1],eg=(t=Q,n=150,a=(0,x.c)(4),i=n,l=(0,w.useRef)(null),d=(s=(0,w.useState)(!1),c=2,u=function(e){if(Array.isArray(e))return e}(s)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(s,2)||function(e,t){if(e){if(\"string\"==typeof e)return rG(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rG(e,t)}}(s,c)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],f=u[1],a[0]!==i||a[1]!==t?(r=function(){if(t>0){var e=l.current?Date.now()-l.current:-1;if(l.current=Date.now(),!(e<=i)){f(!0);var n=window.setTimeout(function(){f(!1)},i);return function(){clearTimeout(n)}}}},o=[t,i],a[0]=i,a[1]=t,a[2]=r,a[3]=o):(r=a[2],o=a[3]),(0,w.useEffect)(r,o),d),ey=(0,w.useRef)(null),ev=(p=ey,g=(0,x.c)(4),v=(y=rJ((0,w.useState)(0),2))[0],b=y[1],g[0]!==p.current?(h=function(){var e=p.current;if(e){var t=new ResizeObserver(function(e){b(rJ(e,1)[0].contentRect.width)});return t.observe(e),function(){return t.disconnect()}}},g[0]=p.current,g[1]=h):h=g[1],g[2]!==p?(m=[p],g[2]=p,g[3]=m):m=g[3],(0,w.useEffect)(h,m),v),eb=(C=X.buildingIndicator||X.renderingIndicator,E=(0,x.c)(4),j=750,P=(S=(0,w.useState)(!1),O=2,B=function(e){if(Array.isArray(e))return e}(S)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(S,2)||function(e,t){if(e){if(\"string\"==typeof e)return r0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r0(e,t)}}(S,O)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],I=B[1],T=(0,w.useRef)(null),z=(0,w.useRef)(null),E[0]!==j||E[1]!==C?(_=function(){if(z.current&&(clearTimeout(z.current),z.current=null),C)null===T.current&&(T.current=Date.now()),I(!0);else if(null===T.current)I(!1);else{var e=Date.now()-T.current,t=j*Math.ceil(e/j)-e;t>0?z.current=setTimeout(function(){I(!1),T.current=null},t):(I(!1),T.current=null)}return function(){z.current&&clearTimeout(z.current)}},k=[C,j],E[0]=j,E[1]=C,E[2]=_,E[3]=k):(_=E[2],k=E[3]),(0,w.useEffect)(_,k),P),eA=el||X.disableDevIndicator,ex=0===ev?\"auto\":ev,ew=\"\".concat(J,\"px\"),eC=X.disableDevIndicator&&(!ea||eh)?\"none\":\"block\";Y[3]!==ew||Y[4]!==eC?(N={\"--size\":ew,\"--duration-short\":\"\".concat(150,\"ms\"),display:eC},Y[3]=ew,Y[4]=eC,Y[5]=N):N=Y[5];var e_=N;return Y[6]===Symbol.for(\"react.memo_cache_sentinel\")?(R=(0,A.jsx)(\"style\",{children:eu(ot())}),Y[6]=R):R=Y[6],Y[7]!==ex?(M={width:ex},Y[7]=ex,Y[8]=M):M=Y[8],Y[9]!==D||Y[10]!==eb||Y[11]!==eo||Y[12]!==L||Y[13]!==X.buildingIndicator||Y[14]!==X.disableDevIndicator||Y[15]!==en?(Z=!X.disableDevIndicator&&(0,A.jsx)(\"button\",r8(r9({id:\"next-logo\",ref:en,\"data-next-mark\":!0,\"data-next-mark-loading\":eb,onClick:L,disabled:X.disableDevIndicator,\"aria-haspopup\":\"menu\",\"aria-expanded\":eo,\"aria-controls\":\"nextjs-dev-tools-menu\",\"aria-label\":\"\".concat(eo?\"Close\":\"Open\",\" Next.js Dev Tools\"),\"data-nextjs-dev-tools-button\":!0},D),{children:(0,A.jsx)(oo,{isLoading:eb,isDevBuilding:X.buildingIndicator})})),Y[9]=D,Y[10]=eb,Y[11]=eo,Y[12]=L,Y[13]=X.buildingIndicator,Y[14]=X.disableDevIndicator,Y[15]=en,Y[16]=Z):Z=Y[16],Y[17]!==G||Y[18]!==eA||Y[19]!==eg||Y[20]!==er||Y[21]!==X.buildError||Y[22]!==X.disableDevIndicator||Y[23]!==X.isErrorOverlayOpen||Y[24]!==Q||Y[25]!==en?(U=eA&&(0,A.jsxs)(\"div\",{\"data-issues\":!0,children:[(0,A.jsxs)(\"button\",{\"data-issues-open\":!0,\"aria-label\":\"Open issues overlay\",onClick:function(){if(X.isErrorOverlayOpen)return void G({type:q});G({type:F}),er(null)},children:[X.disableDevIndicator&&(0,A.jsx)(\"div\",{\"data-disabled-icon\":!0,children:(0,A.jsx)(r2,{})}),(0,A.jsx)(or,{animate:eg,\"data-issues-count-animation\":!0,children:Q},Q),\" \",(0,A.jsxs)(\"div\",{children:[\"Issue\",Q>1&&(0,A.jsx)(\"span\",{\"aria-hidden\":!0,\"data-issues-count-plural\":!0,\"data-animate\":eg&&2===Q,children:\"s\"})]})]}),!X.buildError&&(0,A.jsx)(\"button\",{\"data-issues-collapse\":!0,\"aria-label\":\"Collapse issues badge\",onClick:function(){var e;X.disableDevIndicator?em(!0):es(!1),null==(e=en.current)||e.focus()},children:(0,A.jsx)(r1,{\"data-cross\":!0})})]}),Y[17]=G,Y[18]=eA,Y[19]=eg,Y[20]=er,Y[21]=X.buildError,Y[22]=X.disableDevIndicator,Y[23]=X.isErrorOverlayOpen,Y[24]=Q,Y[25]=en,Y[26]=U):U=Y[26],Y[27]!==Z||Y[28]!==U?(H=(0,A.jsxs)(\"div\",{ref:ey,children:[Z,U]}),Y[27]=Z,Y[28]=U,Y[29]=H):H=Y[29],Y[30]!==ea||Y[31]!==eA||Y[32]!==eg||Y[33]!==M||Y[34]!==H?(V=(0,A.jsx)(\"div\",{\"data-next-badge\":!0,\"data-error\":ea,\"data-error-expanded\":eA,\"data-animate\":eg,style:M,children:H}),Y[30]=ea,Y[31]=eA,Y[32]=eg,Y[33]=M,Y[34]=H,Y[35]=V):V=Y[35],Y[36]===Symbol.for(\"react.memo_cache_sentinel\")?($=(0,A.jsx)(\"div\",{\"aria-hidden\":!0,\"data-dot\":!0}),Y[36]=$):$=Y[36],Y[37]!==V||Y[38]!==e_?(W=(0,A.jsxs)(\"div\",{\"data-next-badge-root\":!0,style:e_,children:[R,V,$]}),Y[37]=V,Y[38]=e_,Y[39]=W):W=Y[39],W}function or(e){var t,n,r,o,a,i,l=(0,x.c)(13);l[0]!==e?(n=r7(e,[\"children\",\"animate\"]),t=e.children,r=e.animate,l[0]=e,l[1]=t,l[2]=n,l[3]=r):(t=l[1],n=l[2],r=l[3]);var s=void 0===r||r,c=t-1;return l[4]!==c?(o=(0,A.jsx)(\"div\",{\"aria-hidden\":!0,\"data-issues-count-exit\":!0,children:c}),l[4]=c,l[5]=o):o=l[5],l[6]!==t?(a=(0,A.jsx)(\"div\",{\"data-issues-count\":!0,\"data-issues-count-enter\":!0,children:t}),l[6]=t,l[7]=a):a=l[7],l[8]!==s||l[9]!==n||l[10]!==o||l[11]!==a?(i=(0,A.jsxs)(\"div\",r8(r9({},n),{\"data-animate\":s,children:[o,a]})),l[8]=s,l[9]=n,l[10]=o,l[11]=a,l[12]=i):i=l[12],i}function oo(e){var t,n,r,o,a,i,l,s,c=(0,x.c)(19),u=e.isLoading,d=e.isDevBuilding?\"rgba(255,255,255,0.7)\":\"white\",f=u?\"path0\":\"paused\";c[0]!==f?(t=(0,A.jsx)(\"path\",{className:f,d:\"M13.3 15.2 L2.34 1 V12.6\",fill:\"none\",stroke:\"url(#next_logo_paint0_linear_1357_10853)\",strokeWidth:\"1.86\",mask:\"url(#next_logo_mask0)\",strokeDasharray:\"29.6\",strokeDashoffset:\"29.6\"}),c[0]=f,c[1]=t):t=c[1];var p=u?\"path1\":\"paused\";return c[2]!==p?(n=(0,A.jsx)(\"path\",{className:p,d:\"M11.825 1.5 V13.1\",strokeWidth:\"1.86\",stroke:\"url(#next_logo_paint1_linear_1357_10853)\",strokeDasharray:\"11.6\",strokeDashoffset:\"11.6\"}),c[2]=p,c[3]=n):n=c[3],c[4]!==t||c[5]!==n?(r=(0,A.jsxs)(\"g\",{transform:\"translate(8.5, 13)\",children:[t,n]}),c[4]=t,c[5]=n,c[6]=r):r=c[6],c[7]!==d?(o=(0,A.jsxs)(\"linearGradient\",{id:\"next_logo_paint0_linear_1357_10853\",x1:\"9.95555\",y1:\"11.1226\",x2:\"15.4778\",y2:\"17.9671\",gradientUnits:\"userSpaceOnUse\",children:[(0,A.jsx)(\"stop\",{stopColor:d}),(0,A.jsx)(\"stop\",{offset:\"0.604072\",stopColor:d,stopOpacity:\"0\"}),(0,A.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[7]=d,c[8]=o):o=c[8],c[9]!==d?(a=(0,A.jsxs)(\"linearGradient\",{id:\"next_logo_paint1_linear_1357_10853\",x1:\"11.8222\",y1:\"1.40039\",x2:\"11.791\",y2:\"9.62542\",gradientUnits:\"userSpaceOnUse\",children:[(0,A.jsx)(\"stop\",{stopColor:d}),(0,A.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[9]=d,c[10]=a):a=c[10],c[11]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,A.jsxs)(\"mask\",{id:\"next_logo_mask0\",children:[(0,A.jsx)(\"rect\",{width:\"100%\",height:\"100%\",fill:\"white\"}),(0,A.jsx)(\"rect\",{width:\"5\",height:\"1.5\",fill:\"black\"})]}),c[11]=i):i=c[11],c[12]!==o||c[13]!==a?(l=(0,A.jsxs)(\"defs\",{children:[o,a,i]}),c[12]=o,c[13]=a,c[14]=l):l=c[14],c[15]!==u||c[16]!==r||c[17]!==l?(s=(0,A.jsxs)(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",fill:\"none\",\"data-next-mark-loading\":u,children:[r,l]}),c[15]=u,c[16]=r,c[17]=l,c[18]=s):s=c[18],s}var oa=w.forwardRef(function(e,t){var n,r,o,a,i,l,s,c,u,d=(0,x.c)(15);return(d[0]!==e?(l=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"onClick\",\"children\",\"className\"]),i=e.onClick,o=e.children,a=e.className,d[0]=e,d[1]=o,d[2]=a,d[3]=i,d[4]=l):(o=d[1],a=d[2],i=d[3],l=d[4]),d[5]!==i?(s=function(e){return e.target.closest(\"a\")||e.preventDefault(),null==i?void 0:i()},d[5]=i,d[6]=s):s=d[6],d[7]!==a?(c=eJ(\"nextjs-toast\",a),d[7]=a,d[8]=c):c=d[8],d[9]!==o||d[10]!==l||d[11]!==t||d[12]!==s||d[13]!==c)?(u=(0,A.jsx)(\"div\",(n=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"ref\"]),r=e.children,a=e.ref,f[0]=e,f[1]=r,f[2]=o,f[3]=a):(r=f[1],o=f[2],a=f[3]);var p=(0,w.useRef)(null),h=oc();f[4]!==a?(i=function(e){if(p.current=null!=e?e:null,\"function\"==typeof a)a(e);else{var t;a&&(void 0===a?\"undefined\":(t=a)&&\"undefined\"!=typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t)==\"object\"&&(a.current=e)}},f[4]=a,f[5]=i):i=f[5];var m=i;f[6]!==h?(l=function(){if(h&&p.current&&!h.disabled){var e=p.current;return h.register(e),function(){return h.unregister(e)}}},s=[h],f[6]=h,f[7]=l,f[8]=s):(l=f[7],s=f[8]),(0,w.useEffect)(l,s);var g=(null==h?void 0:h.disabled)?\"default\":\"grab\";return(f[9]!==o.style?(c=o.style||{},f[9]=o.style,f[10]=c):c=f[10],f[11]!==g||f[12]!==c?(u=oi({cursor:g},c),f[11]=g,f[12]=c,f[13]=u):u=f[13],f[14]!==r||f[15]!==o||f[16]!==m||f[17]!==u)?(d=(0,A.jsx)(\"div\",(t=oi({ref:m},o),n=n={style:u,children:r},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)),f[14]=r,f[15]=o,f[16]=m,f[17]=u,f[18]=d):d=f[18],d}function od(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function om(e){return function(e){if(Array.isArray(e))return od(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||og(e)||function(){throw TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function og(e,t){if(e){if(\"string\"==typeof e)return od(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return od(e,t)}}function oy(e){var t,n,r,o,a,i,l,s,c,u,d,f,p=(0,x.c)(18);p[0]!==e?(s=oh(e,[\"children\",\"padding\",\"position\",\"setPosition\",\"onDragStart\",\"dragHandleSelector\",\"disableDrag\",\"avoidZone\"]),r=e.children,l=e.padding,o=e.position,c=e.setPosition,i=e.onDragStart,a=e.dragHandleSelector,u=e.disableDrag,n=e.avoidZone,p[0]=e,p[1]=n,p[2]=r,p[3]=o,p[4]=a,p[5]=i,p[6]=l,p[7]=s,p[8]=c,p[9]=u):(n=p[1],r=p[2],o=p[3],a=p[4],i=p[5],l=p[6],s=p[7],c=p[8],u=p[9]);var h=function(e){var t=(0,w.useRef)(null),n=(0,w.useRef)({state:\"idle\"}),r=(0,w.useRef)(null),o=(0,w.useRef)({x:0,y:0}),a=(0,w.useRef)({x:0,y:0}),i=(0,w.useRef)(0),l=(0,w.useRef)([]),s=(0,w.useCallback)(function(){var e,o;\"drag\"===n.current.state&&(null==(o=t.current)||o.releasePointerCapture(n.current.pointerId)),n.current=\"drag\"===n.current.state?{state:\"drag-end\"}:{state:\"idle\"},null!==r.current&&(r.current(),r.current=null),l.current=[],null==(e=t.current)||e.classList.remove(\"dev-tools-grabbing\"),document.body.style.removeProperty(\"user-select\"),document.body.style.removeProperty(\"-webkit-user-select\")},[]);function c(e){t.current&&(a.current=e,t.current.style.translate=\"\".concat(e.x,\"px \").concat(e.y,\"px\"))}function u(n){var r=t.current;null!==r&&(r.style.transition=\"translate 491.22ms var(--timing-bounce)\",r.addEventListener(\"transitionend\",function t(o){if(\"translate\"===o.propertyName){var i;null==(i=e.onAnimationEnd)||i.call(e,n),a.current={x:0,y:0},r.style.transition=\"\",r.removeEventListener(\"transitionend\",t)}}),c(n.translation))}function d(e){if(\"drag-end\"===n.current.state){var r;e.preventDefault(),e.stopPropagation(),n.current={state:\"idle\"},null==(r=t.current)||r.removeEventListener(\"click\",d)}}function f(r){if(\"press\"===n.current.state){var s,u,d,f,p=r.clientX-o.current.x,h=r.clientY-o.current.y;Math.sqrt(p*p+h*h)>=e.threshold&&(n.current={state:\"drag\",pointerId:r.pointerId},null==(u=t.current)||u.setPointerCapture(r.pointerId),null==(d=t.current)||d.classList.add(\"dev-tools-grabbing\"),document.body.style.userSelect=\"none\",document.body.style.webkitUserSelect=\"none\",null==(f=e.onDragStart)||f.call(e))}if(\"drag\"===n.current.state){var m={x:r.clientX,y:r.clientY},g=m.x-o.current.x,y=m.y-o.current.y;o.current=m,c({x:a.current.x+g,y:a.current.y+y});var v=Date.now();v-i.current>=10&&(l.current=om(l.current.slice(-5)).concat([{position:m,timestamp:v}])),i.current=v,null==(s=e.onDrag)||s.call(e,a.current)}}function p(){var t,n=function(e){if(e.length<2)return{x:0,y:0};var t=e[0],n=e[e.length-1],r=n.timestamp-t.timestamp;return 0===r?{x:0,y:0}:{x:1e3*((n.position.x-t.position.x)/r),y:1e3*((n.position.y-t.position.y)/r)}}(l.current);s(),null==(t=e.onDragEnd)||t.call(e,a.current,n)}return(0,w.useLayoutEffect)(function(){e.disabled&&s()},[s,e.disabled]),e.disabled?{ref:t,animate:u}:{ref:t,onPointerDown:function(a){var i;0===a.button&&function(n){if(!n||!t.current)return!0;if(e.handles&&e.handles.size>0){for(var r=n;r&&r!==t.current;){if(e.handles.has(r))return!0;r=r.parentElement}return!1}return!e.dragHandleSelector||null!==n.closest(e.dragHandleSelector)}(a.target)&&(o.current={x:a.clientX,y:a.clientY},n.current={state:\"press\"},window.addEventListener(\"pointermove\",f),window.addEventListener(\"pointerup\",p),null!==r.current&&(r.current(),r.current=null),r.current=function(){window.removeEventListener(\"pointermove\",f),window.removeEventListener(\"pointerup\",p)},null==(i=t.current)||i.addEventListener(\"click\",d))},animate:u}}({disabled:void 0!==u&&u,handles:null==(t=oc())?void 0:t.handles,threshold:5,onDragStart:i,onDragEnd:function(e,t){var r,a,i,s,c,u,d,f,p,h,y,v,b,A,x,w,C,_;if(0===Math.sqrt(e.x*e.x+e.y*e.y)){null==(r=m.current)||r.style.removeProperty(\"translate\");return}g((b=(a={x:e.x+ob(t.x),y:e.y+ob(t.y)}).x,A=a.y,w=Object.entries(x=(c=2*l,u=(null==(i=m.current)?void 0:i.offsetWidth)||0,d=(null==(s=m.current)?void 0:s.offsetHeight)||0,f=window.innerWidth-document.documentElement.clientWidth,h=(p=function(e){var t=e.includes(\"right\"),r=e.includes(\"bottom\"),o=t?window.innerWidth-f-c-u:0,a=r?window.innerHeight-c-d:0;if(n&&n.corner===e){var i=n.square+n.padding;r?a-=i:a+=i}return{x:o,y:a}})(o),{\"top-left\":(y=function(e){return{x:e.x-h.x,y:e.y-h.y}})(p(\"top-left\")),\"top-right\":y(p(\"top-right\")),\"bottom-left\":y(p(\"bottom-left\")),\"bottom-right\":y(p(\"bottom-right\"))})).map(function(e){var t,n,r=(n=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||og(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),o=r[0],a=r[1];return{key:o,distance:Math.sqrt(Math.pow(b-a.x,2)+Math.pow(A-a.y,2))}}),C=(v=Math).min.apply(v,om(w.map(ov))),(_=w.find(function(e){return e.distance===C}))?{translation:x[_.key],corner:_.key}:{corner:o,translation:x[o]}))},onAnimationEnd:function(e){var t=e.corner;setTimeout(function(){var e;null==(e=m.current)||e.style.removeProperty(\"translate\"),c(t)})},dragHandleSelector:a}),m=h.ref,g=h.animate,y=oh(h,[\"ref\",\"animate\"]);return p[10]!==s.style?(d=of({touchAction:\"none\",userSelect:\"none\",WebkitUserSelect:\"none\"},s.style),p[10]=s.style,p[11]=d):d=p[11],p[12]!==r||p[13]!==y||p[14]!==s||p[15]!==m||p[16]!==d?(f=(0,A.jsx)(\"div\",op(of(op(of({},s),{ref:m}),y),{style:d,children:r})),p[12]=r,p[13]=y,p[14]=s,p[15]=m,p[16]=d,p[17]=f):f=p[17],f}function ov(e){return e.distance}function ob(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.999;return e/1e3*t/(1-t)}function oA(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"index\",\"label\",\"value\",\"onClick\",\"href\"]),n=e.index,r=e.label,i=e.value,o=e.onClick,t=e.href,h[0]=e,h[1]=t,h[2]=n,h[3]=r,h[4]=o,h[5]=a,h[6]=i):(t=h[1],n=h[2],r=h[3],o=h[4],a=h[5],i=h[6]);var m=\"function\"==typeof o||\"string\"==typeof t,g=(0,w.useContext)(oP),y=g.closeMenu,v=g.selectedIndex,b=g.setSelectedIndex,C=v===n;h[7]!==y||h[8]!==t||h[9]!==m||h[10]!==o?(l=function(){m&&(null==o||o(),null==y||y(),t&&window.open(t,\"_blank\",\"noopener, noreferrer\"))},h[7]=y,h[8]=t,h[9]=m,h[10]=o,h[11]=l):l=h[11];var _=l;h[12]!==n||h[13]!==m||h[14]!==v||h[15]!==b?(s=function(){m&&void 0!==n&&v!==n&&b(n)},h[12]=n,h[13]=m,h[14]=v,h[15]=b,h[16]=s):s=h[16],h[17]!==b?(c=function(){return b(-1)},h[17]=b,h[18]=c):c=h[18],h[19]!==_?(u=function(e){(\"Enter\"===e.key||\" \"===e.key)&&_()},h[19]=_,h[20]=u):u=h[20];var k=m?\"menuitem\":void 0,E=C?0:-1;return h[21]!==r?(d=(0,A.jsx)(\"span\",{className:\"dev-tools-indicator-label\",children:r}),h[21]=r,h[22]=d):d=h[22],h[23]!==i?(f=(0,A.jsx)(\"span\",{className:\"dev-tools-indicator-value\",children:i}),h[23]=i,h[24]=f):f=h[24],h[25]!==_||h[26]!==n||h[27]!==a||h[28]!==C||h[29]!==s||h[30]!==c||h[31]!==u||h[32]!==k||h[33]!==E||h[34]!==d||h[35]!==f?(p=(0,A.jsxs)(\"div\",oO(oS({className:\"dev-tools-indicator-item\",\"data-index\":n,\"data-selected\":C,onClick:_,onMouseMove:s,onMouseLeave:c,onKeyDown:u,role:k,tabIndex:E},a),{children:[d,f]})),h[25]=_,h[26]=n,h[27]=a,h[28]=C,h[29]=s,h[30]=c,h[31]=u,h[32]=k,h[33]=E,h[34]=d,h[35]=f,h[36]=p):p=h[36],p}var oT=function(e){var t,n=e.closeOnClickOutside,r=void 0===n||n,o=e.items,a=dl().state,i=r5(),l=i.setPanel,s=i.triggerRef,c=i.setSelectedIndex,u=i.selectedIndex,d=uQ().mounted,f=oB(a.devToolsPosition.split(\"-\",2),2),p=f[0],h=f[1],m=(0,w.useRef)(null);ne(m,s,r&&d,function(e){switch(e){case\"escape\":l(null),c(-1);return;case\"outside\":if(!r)return;l(null),c(-1);return;default:return null}}),(0,w.useLayoutEffect)(function(){var e;null==(e=m.current)||e.focus(),oN({index:-1===u?\"first\":u,menuRef:m,setSelectedIndex:c})},[]);var g=r3(a),y=oB(a.devToolsPosition.split(\"-\",2),2),v=y[0],b=y[1],x=p===v&&h===b?g:ow,C=(oj(t={},p,\"\".concat(x,\"px\")),oj(t,h,\"\".concat(ow,\"px\")),oj(t,\"top\"===p?\"bottom\":\"top\",\"auto\"),oj(t,\"left\"===h?\"right\":\"left\",\"auto\"),t),_=o.filter(function(e){return!!e}),k=_.filter(function(e){return!e.footer}),E=_.filter(function(e){return e.footer});return(0,A.jsx)(\"div\",{ref:m,onKeyDown:function(e){e.preventDefault();var t=_.filter(function(e){return e.onClick}).length;switch(e.key){case\"ArrowDown\":oN({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"ArrowUp\":oN({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c});break;case\"Home\":oN({index:\"first\",menuRef:m,setSelectedIndex:c});break;case\"End\":oN({index:\"last\",menuRef:m,setSelectedIndex:c});break;case\"n\":e.ctrlKey&&oN({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"p\":e.ctrlKey&&oN({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c})}},id:\"nextjs-dev-tools-menu\",role:\"menu\",dir:\"ltr\",\"aria-orientation\":\"vertical\",\"aria-label\":\"Next.js Dev Tools Items\",tabIndex:-1,style:oS({outline:0,WebkitFontSmoothing:\"antialiased\",display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",background:\"var(--color-background-100)\",backgroundClip:\"padding-box\",boxShadow:\"var(--shadow-menu)\",borderRadius:\"var(--rounded-xl)\",position:\"fixed\",fontFamily:\"var(--font-stack-sans)\",zIndex:\"var(--top-z-index)\",overflow:\"hidden\",opacity:1,minWidth:\"248px\",transition:\"opacity var(--animate-out-duration-ms) var(--animate-out-timing-function)\",border:\"1px solid var(--color-gray-alpha-400)\"},C),children:(0,A.jsxs)(oP,{value:{selectedIndex:u,setSelectedIndex:c},children:[(0,A.jsx)(\"div\",{style:{padding:\"6px\",width:\"100%\"},children:k.map(function(e,t){return(0,A.jsx)(oI,oS({title:e.title,label:e.label,value:e.value,onClick:e.onClick,index:e.onClick?oz(k,t):void 0},e.attributes),e.label)})}),(0,A.jsx)(\"div\",{className:\"dev-tools-indicator-footer\",children:E.map(function(e,t){var n;return(0,A.jsx)(oI,oO(oS({title:e.title,label:e.label,value:e.value,onClick:e.onClick},e.attributes),{index:e.onClick?oz(E,t)+(n=k).filter(function(e){return e.onClick}).length:void 0}),e.label)})})]})})};function oz(e,t){for(var n=0,r=0;r<=t&&r0;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"span\",{className:\"dev-tools-indicator-issue-count-indicator\"}),r[0]=t):t=r[0],r[1]!==o||r[2]!==a?(n=(0,A.jsxs)(\"span\",{className:\"dev-tools-indicator-issue-count\",\"data-has-issues\":a,children:[t,o]}),r[1]=o,r[2]=a,r[3]=n):n=r[3],n}function oL(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:(0,A.jsx)(\"path\",{fill:\"#666\",fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M5.50011 1.93945L6.03044 2.46978L10.8537 7.293C11.2442 7.68353 11.2442 8.31669 10.8537 8.70722L6.03044 13.5304L5.50011 14.0608L4.43945 13.0001L4.96978 12.4698L9.43945 8.00011L4.96978 3.53044L4.43945 3.00011L5.50011 1.93945Z\"})}),t[0]=e):e=t[0],e}function oN(e){var t,n=e.index,r=e.menuRef,o=e.setSelectedIndex;if(\"first\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oN({index:Number(t[0].getAttribute(\"data-index\")),menuRef:r,setSelectedIndex:o})});if(\"last\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oN({index:t.length-1,menuRef:r,setSelectedIndex:o})});var a=null==(t=r.current)?void 0:t.querySelector('[data-index=\"'.concat(n,'\"]'));a&&(o(n),null==a||a.focus())}function oR(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:\"width\";if(\"number\"==typeof e)return e;var n=document.createElement(\"div\");n.style.position=\"absolute\",n.style.visibility=\"hidden\",\"width\"===t?n.style.width=e:n.style.height=e,document.body.appendChild(n);var r=\"width\"===t?n.offsetWidth:n.offsetHeight;return document.body.removeChild(n),r}function o2(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g=e.header,y=e.children,v=e.draggable,b=void 0!==v&&v,C=e.sizeConfig,_=void 0===C?{kind:\"resizable\",minWidth:400,minHeight:350,maxWidth:1e3,maxHeight:1e3,initialSize:{height:400,width:500}}:C,k=e.closeOnClickOutside,E=void 0!==k&&k,j=e.sharePanelSizeGlobally,S=e.sharePanelPositionGlobally,O=e.containerProps,B=r5().setPanel,P=uQ(),I=P.name,T=P.mounted,z=void 0===j||j?et:\"\".concat(ee,\"_\").concat(I),D=void 0===S||S?en:\"\".concat(J,\"_\").concat(I),L=dl(),N=L.dispatch,R=L.state,M=null!=(h=R.devToolsPanelPosition[D])?h:R.devToolsPosition,Z=o0(M.split(\"-\",2),2),U=Z[0],F=Z[1],q=(0,w.useRef)(null);ne(q,r5().triggerRef,T,function(e){switch(e){case\"escape\":return void B(\"panel-selector\");case\"outside\":E&&B(\"panel-selector\");return;default:return null}});var H=r3(R),V=o0(R.devToolsPosition.split(\"-\",2),2),$=V[0],W=V[1],Y=U===$&&F===W?H:ow,K=(oQ(m={},U,\"\".concat(Y,\"px\")),oQ(m,F,\"\".concat(ow,\"px\")),oQ(m,\"top\"===U?\"bottom\":\"top\",\"auto\"),oQ(m,\"left\"===F?\"right\":\"left\",\"auto\"),m),G=\"resizable\"===_.kind,Q=(t=G?_.minWidth:void 0,n=G?_.minHeight:void 0,r=G?_.maxWidth:void 0,o=G?_.maxHeight:void 0,(s=(0,x.c)(11))[0]!==o||s[1]!==r||s[2]!==n||s[3]!==t?(a=function(){return{minWidth:t?o1(t,\"width\"):void 0,minHeight:n?o1(n,\"height\"):void 0,maxWidth:r?o1(r,\"width\"):void 0,maxHeight:o?o1(o,\"height\"):void 0}},s[0]=o,s[1]=r,s[2]=n,s[3]=t,s[4]=a):a=s[4],u=(c=o0((0,w.useState)(a),2))[0],d=c[1],s[5]!==o||s[6]!==r||s[7]!==n||s[8]!==t?(i=function(){var e=function(){d({minWidth:t?o1(t,\"width\"):void 0,minHeight:n?o1(n,\"height\"):void 0,maxWidth:r?o1(r,\"width\"):void 0,maxHeight:o?o1(o,\"height\"):void 0})};return window.addEventListener(\"resize\",e),function(){return window.removeEventListener(\"resize\",e)}},l=[t,n,r,o],s[5]=o,s[6]=r,s[7]=n,s[8]=t,s[9]=i,s[10]=l):(i=s[9],l=s[10]),(0,w.useEffect)(i,l),u),er=Q.minWidth,eo=Q.minHeight,ea=Q.maxWidth,ei=Q.maxHeight,el=I?\"\".concat(ee,\"_\").concat(I):et,es=R.devToolsPanelSize[el];return(0,A.jsx)(oU,{value:{resizeRef:q,initialSize:\"resizable\"===_.kind?_.initialSize:_,minWidth:er,minHeight:eo,maxWidth:ea,maxHeight:ei,devToolsPosition:R.devToolsPosition,devToolsPanelSize:R.devToolsPanelSize,storageKey:z},children:(0,A.jsx)(\"div\",{tabIndex:-1,ref:q,className:\"dynamic-panel-container\",style:oJ({\"--panel-top\":K.top,\"--panel-bottom\":K.bottom,\"--panel-left\":K.left,\"--panel-right\":K.right},G?{\"--panel-min-width\":er?\"\".concat(er,\"px\"):void 0,\"--panel-min-height\":eo?\"\".concat(eo,\"px\"):void 0,\"--panel-max-width\":ea?\"\".concat(ea,\"px\"):void 0,\"--panel-max-height\":ei?\"\".concat(ei,\"px\"):void 0}:{\"--panel-height\":\"\".concat(es?es.height:_.height,\"px\"),\"--panel-width\":\"\".concat(es?es.width:_.width,\"px\")}),children:(0,A.jsx)(os,{disabled:!b,children:(0,A.jsx)(oy,{dragHandleSelector:\".resize-container\",avoidZone:{corner:R.devToolsPosition,square:25/R.scale,padding:ow},padding:ow,position:M,setPosition:function(e){N({type:X,devToolsPanelPosition:e,key:D}),\"resizable\"===_.kind&&rw({devToolsPanelPosition:oQ({},D,e)})},style:{overflow:\"auto\",width:\"100%\",height:\"100%\"},disableDrag:!b,children:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(\"div\",(f=oJ({},O),p=p={className:\"panel-content-container \".concat((null==O?void 0:O.className)||\"\"),style:oJ({},null==O?void 0:O.style),children:[(0,A.jsx)(ou,{children:g}),(0,A.jsx)(\"div\",{\"data-nextjs-scrollable-content\":!0,className:\"draggable-content\",children:y})]},Object.getOwnPropertyDescriptors?Object.defineProperties(f,Object.getOwnPropertyDescriptors(p)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(p)).forEach(function(e){Object.defineProperty(f,e,Object.getOwnPropertyDescriptor(p,e))}),f)),G&&(0,A.jsxs)(A.Fragment,{children:[(!_.sides||_.sides.includes(\"vertical\"))&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o$,{position:M,direction:\"top\"}),(0,A.jsx)(o$,{position:M,direction:\"bottom\"})]}),(!_.sides||_.sides.includes(\"horizontal\"))&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o$,{position:M,direction:\"right\"}),(0,A.jsx)(o$,{position:M,direction:\"left\"})]}),(!_.sides||_.sides.includes(\"diagonal\"))&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o$,{position:M,direction:\"top-left\"}),(0,A.jsx)(o$,{position:M,direction:\"top-right\"}),(0,A.jsx)(o$,{position:M,direction:\"bottom-left\"}),(0,A.jsx)(o$,{position:M,direction:\"bottom-right\"})]})]})]})})})})})}oX.styleTagTransform=m(),oX.setAttributes=d(),oX.insert=c(),oX.domAPI=l(),oX.insertStyleElement=p(),a()(oK.Z,oX),oK.Z&&oK.Z.locals&&oK.Z.locals;var o4=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"),o5={};function o3(e){for(var t=1;t=0;m--){var g=l[m],y=r[m];0===Object.keys(g.children[y].children).length&&delete g.children[y]}a=o3({},a),i()}},getRoot:function(){return a}}}({compare:function(e,t){return!!e&&!!t&&e.pagePath===t.pagePath&&e.type===t.type&&e.boundaryType===t.boundaryType},getCharacters:function(e){return e.pagePath.split(\"/\")}}),an=at.insert,ar=at.remove,ao=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"),aa={};aa.styleTagTransform=m(),aa.setAttributes=d(),aa.insert=c(),aa.domAPI=l(),aa.insertStyleElement=p(),a()(ao.Z,aa),ao.Z&&ao.Z.locals&&ao.Z.locals;let ai={};function al(e,t){let n=w.useRef(ai);return n.current===ai&&(n.current=e(t)),n}let as=[];function ac(e){w.useEffect(e,as)}class au{static create(){return new au}currentId=0;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=0,t()},e)}isStarted(){return 0!==this.currentId}clear=()=>{0!==this.currentId&&(clearTimeout(this.currentId),this.currentId=0)};disposeEffect=()=>this.clear}function ad(){let e=al(au.create).current;return ac(e.disposeEffect),e}let af=C[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],ap=af&&af!==w.useLayoutEffect?af:e=>e();function ah(e){let t=al(am).current;return t.next=e,ap(t.effect),t.trampoline}function am(){let e={next:void 0,callback:ag,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ag(){}function ay({controlled:e,default:t,name:n,state:r=\"value\"}){let{current:o}=w.useRef(void 0!==e),[a,i]=w.useState(t),l=w.useCallback(e=>{o||i(e)},[]);return[o?e:a,l]}let av={...C},ab=0,aA=av.useId;function ax(e,t){if(void 0!==aA){let n=aA();return e??(t?`${t}-${n}`:n)}return function(e,t=\"mui\"){let[n,r]=w.useState(e),o=e||n;return w.useEffect(()=>{null==n&&(ab+=1,r(`${t}-${ab}`))},[n,t]),o}(e,t)}function aw(){let e=new Map;return{emit(t,n){e.get(t)?.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}let aC=\"undefined\"!=typeof document?w.useLayoutEffect:()=>{},a_=w.createContext(null),ak=w.createContext(null),aE=()=>w.useContext(a_)?.id||null,aj=()=>w.useContext(ak);function aS(e){let{children:t,id:n}=e,r=aE();return(0,A.jsx)(a_.Provider,{value:w.useMemo(()=>({id:n,parentId:r}),[n,r]),children:t})}function aO(e){let{children:t}=e,n=w.useRef([]),r=w.useCallback(e=>{n.current=[...n.current,e]},[]),o=w.useCallback(e=>{n.current=n.current.filter(t=>t!==e)},[]),[a]=w.useState(()=>aw());return(0,A.jsx)(ak.Provider,{value:w.useMemo(()=>({nodesRef:n,addNode:r,removeNode:o,events:a}),[r,o,a]),children:t})}function aB(e){let{open:t=!1,onOpenChange:n,elements:r}=e,o=ax(),a=w.useRef({}),[i]=w.useState(()=>aw()),l=null!=aE(),[s,c]=w.useState(r.reference),u=ah((e,t,r)=>{a.current.openEvent=e?t:void 0,i.emit(\"openchange\",{open:e,event:t,reason:r,nested:l}),n?.(e,t,r)}),d=w.useMemo(()=>({setPositionReference:c}),[]),f=w.useMemo(()=>({reference:s||r.reference||null,floating:r.floating||null,domReference:r.reference}),[s,r.reference,r.floating]);return w.useMemo(()=>({dataRef:a,open:t,onOpenChange:u,elements:f,events:i,floatingId:o,refs:d}),[t,u,f,i,o,d])}function aP(){return\"undefined\"!=typeof window}function aI(e){return aD(e)?(e.nodeName||\"\").toLowerCase():\"#document\"}function aT(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function az(e){var t;return null==(t=(aD(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function aD(e){return!!aP()&&(e instanceof Node||e instanceof aT(e).Node)}function aL(e){return!!aP()&&(e instanceof Element||e instanceof aT(e).Element)}function aN(e){return!!aP()&&(e instanceof HTMLElement||e instanceof aT(e).HTMLElement)}function aR(e){return!!aP()&&\"undefined\"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof aT(e).ShadowRoot)}let aM=new Set([\"inline\",\"contents\"]);function aZ(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=aG(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!aM.has(o)}let aU=new Set([\"table\",\"td\",\"th\"]),aF=[\":popover-open\",\":modal\"];function aq(e){return aF.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let aH=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\"],aV=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\",\"filter\"],a$=[\"paint\",\"layout\",\"strict\",\"content\"];function aW(e){let t=aY(),n=aL(e)?aG(e):e;return aH.some(e=>!!n[e]&&\"none\"!==n[e])||!!n.containerType&&\"normal\"!==n.containerType||!t&&!!n.backdropFilter&&\"none\"!==n.backdropFilter||!t&&!!n.filter&&\"none\"!==n.filter||aV.some(e=>(n.willChange||\"\").includes(e))||a$.some(e=>(n.contain||\"\").includes(e))}function aY(){return\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter\",\"none\")}let aK=new Set([\"html\",\"body\",\"#document\"]);function aX(e){return aK.has(aI(e))}function aG(e){return aT(e).getComputedStyle(e)}function aQ(e){return aL(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function aJ(e){if(\"html\"===aI(e))return e;let t=e.assignedSlot||e.parentNode||aR(e)&&e.host||az(e);return aR(t)?t.host:t}function a0(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=aJ(t);return aX(n)?t.ownerDocument?t.ownerDocument.body:t.body:aN(n)&&aZ(n)?n:e(n)}(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),i=aT(o);if(a){let e=a1(i);return t.concat(i,i.visualViewport||[],aZ(o)?o:[],e&&n?a0(e):[])}return t.concat(o,a0(o,[],n))}function a1(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function a2(e){let t=al(a4,e).current;return t.next=e,aC(t.effect),t}function a4(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}let a5=\"undefined\"!=typeof navigator,a3=function(){if(!a5)return{platform:\"\",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??\"\",maxTouchPoints:navigator.maxTouchPoints??-1}}(),a6=function(){if(!a5)return\"\";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??\"\"}(),a9=function(){if(!a5)return\"\";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:e,version:t})=>`${e}/${t}`).join(\" \"):navigator.userAgent}(),a8=\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter:none\"),a7=\"MacIntel\"===a3.platform&&a3.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(a3.platform);a5&&/firefox/i.test(a9);let ie=a5&&/apple/i.test(navigator.vendor),it=a5&&/android/i.test(a6)||/android/i.test(a9),ir=a5&&a6.toLowerCase().startsWith(\"mac\")&&!navigator.maxTouchPoints,io=a9.includes(\"jsdom/\");function ia(e){e.preventDefault(),e.stopPropagation()}function ii(e){return 0===e.mozInputSource&&!!e.isTrusted||(it&&e.pointerType?\"click\"===e.type&&1===e.buttons:0===e.detail&&!e.pointerType)}function il(e){return!io&&(!it&&0===e.width&&0===e.height||it&&1===e.width&&1===e.height&&0===e.pressure&&0===e.detail&&\"mouse\"===e.pointerType||e.width<1&&e.height<1&&0===e.pressure&&0===e.detail&&\"touch\"===e.pointerType)}function is(e,t){let n=[\"mouse\",\"pen\"];return t||n.push(\"\",void 0),n.includes(e)}let ic=\"data-base-ui-focusable\",iu=\"active\",id=\"selected\",ip=\"ArrowLeft\",ih=\"ArrowRight\",im=\"ArrowUp\",ig=\"ArrowDown\";function iy(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function iv(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&aR(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function ib(e){return\"composedPath\"in e?e.composedPath()[0]:e.target}function iA(e,t){return null!=t&&(\"composedPath\"in e?e.composedPath().includes(t):null!=e.target&&t.contains(e.target))}function ix(e){return e?.ownerDocument||document}function iw(e){return aN(e)&&e.matches(\"input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\")}function iC(e){return!!e&&\"combobox\"===e.getAttribute(\"role\")&&iw(e)}function i_(e){return e?e.hasAttribute(ic)?e:e.querySelector(`[${ic}]`)||e:null}function ik(e){return`data-base-ui-${e}`}let iE=ik(\"safe-polygon\");function ij(e,t,n){if(n&&!is(n))return 0;if(\"number\"==typeof e)return e;if(\"function\"==typeof e){let n=e();return\"number\"==typeof n?n:n?.[t]}return e?.[t]}function iS(e){return\"function\"==typeof e?e():e}function iO(e,t={}){let{open:n,onOpenChange:r,dataRef:o,events:a,elements:i}=e,{enabled:l=!0,delay:s=0,handleClose:c=null,mouseOnly:u=!1,restMs:d=0,move:f=!0}=t,p=aj(),h=aE(),m=a2(c),g=a2(s),y=a2(n),v=a2(d),b=w.useRef(void 0),A=ad(),x=w.useRef(void 0),C=ad(),_=w.useRef(!0),k=w.useRef(!1),E=w.useRef(()=>{}),j=w.useRef(!1),S=ah(()=>{let e=o.current.openEvent?.type;return e?.includes(\"mouse\")&&\"mousedown\"!==e});w.useEffect(()=>{if(l)return a.on(\"openchange\",e),()=>{a.off(\"openchange\",e)};function e({open:e}){e||(A.clear(),C.clear(),_.current=!0,j.current=!1)}},[l,a,A,C]),w.useEffect(()=>{if(!l||!m.current||!n)return;function e(e){S()&&r(!1,e,\"hover\")}let t=ix(i.floating).documentElement;return t.addEventListener(\"mouseleave\",e),()=>{t.removeEventListener(\"mouseleave\",e)}},[i.floating,n,r,l,m,S]);let O=w.useCallback((e,t=!0,n=\"hover\")=>{let o=ij(g.current,\"close\",b.current);o&&!x.current?A.start(o,()=>r(!1,e,n)):t&&(A.clear(),r(!1,e,n))},[g,r,A]),B=ah(()=>{E.current(),x.current=void 0}),P=ah(()=>{if(k.current){let e=ix(i.floating).body;e.style.pointerEvents=\"\",e.removeAttribute(iE),k.current=!1}}),I=ah(()=>!!o.current.openEvent&&[\"click\",\"mousedown\"].includes(o.current.openEvent.type));w.useEffect(()=>{if(l&&aL(i.domReference)){let r=i.domReference,o=i.floating;return n&&r.addEventListener(\"mouseleave\",a),f&&r.addEventListener(\"mousemove\",e,{once:!0}),r.addEventListener(\"mouseenter\",e),r.addEventListener(\"mouseleave\",t),o&&(o.addEventListener(\"mouseleave\",a),o.addEventListener(\"mouseenter\",s),o.addEventListener(\"mouseleave\",c)),()=>{n&&r.removeEventListener(\"mouseleave\",a),f&&r.removeEventListener(\"mousemove\",e),r.removeEventListener(\"mouseenter\",e),r.removeEventListener(\"mouseleave\",t),o&&(o.removeEventListener(\"mouseleave\",a),o.removeEventListener(\"mouseenter\",s),o.removeEventListener(\"mouseleave\",c))}}function e(e){if(A.clear(),_.current=!1,u&&!is(b.current)||iS(v.current)>0&&!ij(g.current,\"open\"))return;let t=ij(g.current,\"open\",b.current);t?A.start(t,()=>{y.current||r(!0,e,\"hover\")}):n||r(!0,e,\"hover\")}function t(e){if(I())return void P();E.current();let t=ix(i.floating);if(C.clear(),j.current=!1,m.current&&o.current.floatingContext){n||A.clear(),x.current=m.current({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e,!0,\"safe-polygon\")}});let r=x.current;t.addEventListener(\"mousemove\",r),E.current=()=>{t.removeEventListener(\"mousemove\",r)};return}\"touch\"===b.current&&iv(i.floating,e.relatedTarget)||O(e)}function a(e){!I()&&o.current.floatingContext&&m.current?.({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e)}})(e)}function s(){A.clear()}function c(e){I()||O(e,!1)}},[i,l,e,u,f,O,B,P,r,n,y,p,g,m,o,I,v,A,C]),aC(()=>{if(l&&n&&m.current?.__options?.blockPointerEvents&&S()){k.current=!0;let e=i.floating;if(aL(i.domReference)&&e){let t=ix(i.floating).body;t.setAttribute(iE,\"\");let n=i.domReference,r=p?.nodesRef.current.find(e=>e.id===h)?.context?.elements.floating;return r&&(r.style.pointerEvents=\"\"),t.style.pointerEvents=\"none\",n.style.pointerEvents=\"auto\",e.style.pointerEvents=\"auto\",()=>{t.style.pointerEvents=\"\",n.style.pointerEvents=\"\",e.style.pointerEvents=\"\"}}}},[l,n,h,i,p,m,S]),aC(()=>{n||(b.current=void 0,j.current=!1,B(),P())},[n,B,P]),w.useEffect(()=>()=>{B(),A.clear(),C.clear(),P()},[l,i.domReference,B,P,A,C]);let T=w.useMemo(()=>{function e(e){b.current=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e;function o(){_.current||y.current||r(!0,t,\"hover\")}(!u||is(b.current))&&!n&&0!==iS(v.current)&&(j.current&&e.movementX**2+e.movementY**2<2||(C.clear(),\"touch\"===b.current?o():(j.current=!0,C.start(iS(v.current),o))))}}},[u,r,n,y,v,C]);return w.useMemo(()=>l?{reference:T}:{},[l,T])}function iB(e,t,n=!0){return e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...iB(e,t.id,n)])}function iP(e,t){let n=[],r=e.find(e=>e.id===t)?.parentId;for(;r;){let t=e.find(e=>e.id===r);r=t?.parentId,t&&(n=n.concat(t))}return n}function iI(e,t){let[n,r]=e,o=!1,a=t.length;for(let e=0,i=a-1;e=r!=c>=r&&n<=(s-a)*(r-l)/(c-l)+a&&(o=!o)}return o}function iT(e={}){let{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e,o=new au,a=!1,i=null,l=null,s=\"undefined\"!=typeof performance?performance.now():0,c=({x:e,y:n,placement:c,elements:u,onClose:d,nodeId:f,tree:p})=>function(h){var m,g;function y(){o.clear(),d()}if(o.clear(),!u.domReference||!u.floating||null==c||null==e||null==n)return;let{clientX:v,clientY:b}=h,A=[v,b],x=ib(h),w=\"mouseleave\"===h.type,C=iv(u.floating,x),_=iv(u.domReference,x),k=u.domReference.getBoundingClientRect(),E=u.floating.getBoundingClientRect(),j=c.split(\"-\")[0],S=e>E.right-E.width/2,O=n>E.bottom-E.height/2,B=(m=A,g=k,m[0]>=g.x&&m[0]<=g.x+g.width&&m[1]>=g.y&&m[1]<=g.y+g.height),P=E.width>k.width,I=E.height>k.height,T=(P?k:E).left,z=(P?k:E).right,D=(I?k:E).top,L=(I?k:E).bottom;if(C&&(a=!0,!w))return;if(_&&(a=!1),_&&!w){a=!0;return}if(w&&aL(h.relatedTarget)&&iv(u.floating,h.relatedTarget)||p&&iB(p.nodesRef.current,f).some(({context:e})=>e?.open))return;if(\"top\"===j&&n>=k.bottom-1||\"bottom\"===j&&n<=k.top+1||\"left\"===j&&e>=k.right-1||\"right\"===j&&e<=k.left+1)return y();let N=[];switch(j){case\"top\":N=[[T,k.top+1],[T,E.bottom-1],[z,E.bottom-1],[z,k.top+1]];break;case\"bottom\":N=[[T,E.top+1],[T,k.bottom-1],[z,k.bottom-1],[z,E.top+1]];break;case\"left\":N=[[E.right-1,L],[E.right-1,D],[k.left+1,D],[k.left+1,L]];break;case\"right\":N=[[k.right-1,L],[k.right-1,D],[E.left+1,D],[E.left+1,L]]}if(!iI([v,b],N)){if(a&&!B)return y();if(!w&&r){let e=function(e,t){let n=performance.now(),r=n-s;if(null===i||null===l||0===r)return i=e,l=t,s=n,null;let o=e-i,a=t-l,c=Math.sqrt(o*o+a*a);return i=e,l=t,s=n,c/r}(h.clientX,h.clientY);if(null!==e&&e<.1)return y()}iI([v,b],function([e,n]){switch(j){case\"top\":{let r=[[E.left,S||P?E.bottom-t:E.top],[E.right,S?P?E.bottom-t:E.top:E.bottom-t]];return[[P?e+t/2:S?e+4*t:e-4*t,n+t+1],[P?e-t/2:S?e+4*t:e-4*t,n+t+1],...r]}case\"bottom\":{let r=[[E.left,S||P?E.top+t:E.bottom],[E.right,S?P?E.top+t:E.bottom:E.top+t]];return[[P?e+t/2:S?e+4*t:e-4*t,n-t],[P?e-t/2:S?e+4*t:e-4*t,n-t],...r]}case\"left\":return[[O||I?E.right-t:E.left,E.top],[O?I?E.right-t:E.left:E.right-t,E.bottom],[e+t+1,I?n+t/2:O?n+4*t:n-4*t],[e+t+1,I?n-t/2:O?n+4*t:n-4*t]];case\"right\":{let r=[[O||I?E.left+t:E.right,E.top],[O?I?E.left+t:E.right:E.left+t,E.bottom]];return[[e-t,I?n+t/2:O?n+4*t:n-4*t],[e-t,I?n-t/2:O?n+4*t:n-4*t],...r]}default:return[]}}([e,n]))?!a&&r&&o.start(40,y):y()}};return c.__options={blockPointerEvents:n},c}let iz=ir&&ie;function iD(e,t={}){let{open:n,onOpenChange:r,events:o,dataRef:a,elements:i}=e,{enabled:l=!0,visibleOnly:s=!0}=t,c=w.useRef(!1),u=ad(),d=w.useRef(!0);w.useEffect(()=>{if(!l)return;let e=aT(i.domReference);function t(){!n&&aN(i.domReference)&&i.domReference===iy(ix(i.domReference))&&(c.current=!0)}function r(){d.current=!0}function o(){d.current=!1}return e.addEventListener(\"blur\",t),iz&&(e.addEventListener(\"keydown\",r,!0),e.addEventListener(\"pointerdown\",o,!0)),()=>{e.removeEventListener(\"blur\",t),iz&&(e.removeEventListener(\"keydown\",r,!0),e.removeEventListener(\"pointerdown\",o,!0))}},[i.domReference,n,l]),w.useEffect(()=>{if(l)return o.on(\"openchange\",e),()=>{o.off(\"openchange\",e)};function e({reason:e}){(\"reference-press\"===e||\"escape-key\"===e)&&(c.current=!0)}},[o,l]);let f=w.useMemo(()=>({onMouseLeave(){c.current=!1},onFocus(e){if(c.current)return;let t=ib(e.nativeEvent);if(s&&aL(t)){if(iz&&!e.relatedTarget){if(!d.current&&!iw(t))return}else if(!function(e){if(!e||io)return!0;try{return e.matches(\":focus-visible\")}catch(e){return!0}}(t))return}r(!0,e.nativeEvent,\"focus\")},onBlur(e){c.current=!1;let t=e.relatedTarget,n=e.nativeEvent,o=aL(t)&&t.hasAttribute(ik(\"focus-guard\"))&&\"outside\"===t.getAttribute(\"data-type\");u.start(0,()=>{let e=iy(i.domReference?i.domReference.ownerDocument:document);(t||e!==i.domReference)&&(iv(a.current.floatingContext?.refs.floating.current,e)||iv(i.domReference,e)||o||r(!1,n,\"focus\"))})}}),[a,i.domReference,r,s,u]);return w.useMemo(()=>l?{reference:f}:{},[l,f])}globalThis.requestAnimationFrame;let iL=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n=this.callbacks.length||(this.callbacks[t]=null,this.callbacksCount-=1)}};class iN{static create(){return new iN}static request(e){return iL.request(e)}static cancel(e){return iL.cancel(e)}currentId=null;request(e){this.cancel(),this.currentId=iL.request(()=>{this.currentId=null,e()})}cancel=()=>{null!==this.currentId&&(iL.cancel(this.currentId),this.currentId=null)};disposeEffect=()=>this.cancel}function iR(){let e=al(iN.create).current;return ac(e.disposeEffect),e}let iM={style:{transition:\"none\"}},iZ={},iU=[],iF={fallbackAxisSide:\"none\"},iq={fallbackAxisSide:\"end\"},iH={intentional:\"onClick\",sloppy:\"onPointerDown\"};function iV(e){return{escapeKey:\"boolean\"==typeof e?e:e?.escapeKey??!1,outsidePress:\"boolean\"==typeof e?e:e?.outsidePress??!0}}function i$(e,t={}){let{open:n,onOpenChange:r,elements:o,dataRef:a}=e,{enabled:i=!0,escapeKey:l=!0,outsidePress:s=!0,outsidePressEvent:c=\"sloppy\",referencePress:u=!1,referencePressEvent:d=\"sloppy\",ancestorScroll:f=!1,bubbles:p,capture:h}=t,m=aj(),g=ah(\"function\"==typeof s?s:()=>!1),y=\"function\"==typeof s?g:s,v=w.useRef(!1),{escapeKey:b,outsidePress:A}=iV(p),{escapeKey:x,outsidePress:C}=iV(h),_=w.useRef(null),k=ad(),E=ad(),j=w.useRef(!1),S=w.useRef(\"\"),O=ah(e=>{S.current=e.pointerType}),B=ah(()=>{let e=S.current;return\"string\"==typeof c?c:c[\"pen\"!==e&&e?e:\"mouse\"]}),P=ah(e=>{if(!n||!i||!l||\"Escape\"!==e.key||j.current)return;let t=a.current.floatingContext?.nodeId,o=m?iB(m.nodesRef.current,t):[];if(!b&&(e.stopPropagation(),o.length>0)){let e=!0;if(o.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__escapeKeyBubbles&&(e=!1)}),!e)return}r(!1,\"nativeEvent\"in e?e.nativeEvent:e,\"escape-key\")}),I=ah(e=>{let t=B();return\"intentional\"===t&&\"click\"!==e.type||\"sloppy\"===t&&\"click\"===e.type}),T=ah(e=>{let t=()=>{P(e),ib(e)?.removeEventListener(\"keydown\",t)};ib(e)?.addEventListener(\"keydown\",t)}),z=ah(e=>{if(I(e))return;let t=a.current.insideReactTree;a.current.insideReactTree=!1;let n=v.current;if(v.current=!1,\"intentional\"===B()&&n||t||\"function\"==typeof y&&!y(e))return;let i=ib(e),l=`[${ik(\"inert\")}]`,s=ix(o.floating).querySelectorAll(l),c=aL(i)?i:null;for(;c&&!aX(c);){let e=aJ(c);if(aX(e)||!aL(e))break;c=e}if(s.length&&aL(i)&&!i.matches(\"html,body\")&&!iv(i,o.floating)&&Array.from(s).every(e=>!iv(c,e)))return;if(aN(i)){let t=aX(i),n=aG(i),r=/auto|scroll/,o=t||r.test(n.overflowX),a=t||r.test(n.overflowY),l=o&&i.clientWidth>0&&i.scrollWidth>i.clientWidth,s=a&&i.clientHeight>0&&i.scrollHeight>i.clientHeight,c=\"rtl\"===n.direction,u=s&&(c?e.offsetX<=i.offsetWidth-i.clientWidth:e.offsetX>i.clientWidth),d=l&&e.offsetY>i.clientHeight;if(u||d)return}let u=a.current.floatingContext?.nodeId,d=m&&iB(m.nodesRef.current,u).some(t=>iA(e,t.context?.elements.floating));if(iA(e,o.floating)||iA(e,o.domReference)||d)return;let f=m?iB(m.nodesRef.current,u):[];if(f.length>0){let e=!0;if(f.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__outsidePressBubbles&&(e=!1)}),!e)return}r(!1,e,\"outside-press\")}),D=ah(e=>{if(!(\"sloppy\"!==B()||!n||!i||iA(e,o.floating)||iA(e,o.domReference))){if(\"touch\"===e.pointerType){_.current={startTime:Date.now(),startX:e.clientX,startY:e.clientY,dismissOnPointerUp:!1,dismissOnMouseDown:!0},k.start(1e3,()=>{_.current&&(_.current.dismissOnPointerUp=!1,_.current.dismissOnMouseDown=!1)});return}z(e)}}),L=ah(e=>{if(I(e)||(k.clear(),\"mousedown\"===e.type&&_.current&&!_.current.dismissOnMouseDown))return;let t=()=>{\"pointerdown\"===e.type?D(e):z(e),ib(e)?.removeEventListener(e.type,t)};ib(e)?.addEventListener(e.type,t)}),N=ah(e=>{if(\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iA(e,o.floating)||iA(e,o.domReference))return;let t=Math.abs(e.clientX-_.current.startX),n=Math.abs(e.clientY-_.current.startY),r=Math.sqrt(t*t+n*n);r>5&&(_.current.dismissOnPointerUp=!0),r>10&&(z(e),k.clear(),_.current=null)}),R=ah(e=>{\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iA(e,o.floating)||iA(e,o.domReference)||(_.current.dismissOnPointerUp&&z(e),k.clear(),_.current=null)});w.useEffect(()=>{if(!n||!i)return;a.current.__escapeKeyBubbles=b,a.current.__outsidePressBubbles=A;let e=new au;function t(e){r(!1,e,\"ancestor-scroll\")}function s(){e.clear(),j.current=!0}function c(){e.start(5*!!aY(),()=>{j.current=!1})}let u=ix(o.floating);u.addEventListener(\"pointerdown\",O,!0),l&&(u.addEventListener(\"keydown\",x?T:P,x),u.addEventListener(\"compositionstart\",s),u.addEventListener(\"compositionend\",c)),y&&(u.addEventListener(\"click\",C?L:z,C),u.addEventListener(\"pointerdown\",C?L:z,C),u.addEventListener(\"pointermove\",N,C),u.addEventListener(\"pointerup\",R,C),u.addEventListener(\"mousedown\",L,C));let d=[];return f&&(aL(o.domReference)&&(d=a0(o.domReference)),aL(o.floating)&&(d=d.concat(a0(o.floating))),!aL(o.reference)&&o.reference&&o.reference.contextElement&&(d=d.concat(a0(o.reference.contextElement)))),(d=d.filter(e=>e!==u.defaultView?.visualViewport)).forEach(e=>{e.addEventListener(\"scroll\",t,{passive:!0})}),()=>{u.removeEventListener(\"pointerdown\",O,!0),l&&(u.removeEventListener(\"keydown\",x?T:P,x),u.removeEventListener(\"compositionstart\",s),u.removeEventListener(\"compositionend\",c)),y&&(u.removeEventListener(\"click\",C?L:z,C),u.removeEventListener(\"pointerdown\",C?L:z,C),u.removeEventListener(\"pointermove\",N,C),u.removeEventListener(\"pointerup\",R,C),u.removeEventListener(\"mousedown\",L,C)),d.forEach(e=>{e.removeEventListener(\"scroll\",t)}),e.clear()}},[a,o,l,y,c,n,r,f,i,b,A,P,x,T,z,C,L,D,N,R,O]),w.useEffect(()=>{a.current.insideReactTree=!1},[a,y]);let M=w.useMemo(()=>({onKeyDown:P,...u&&{[iH[d]]:e=>{r(!1,e.nativeEvent,\"reference-press\")},...\"intentional\"!==d&&{onClick(e){r(!1,e.nativeEvent,\"reference-press\")}}}}),[P,r,u,d]),Z=ah(e=>{let t=ib(e.nativeEvent);iv(o.floating,t)&&(v.current=!0)}),U=ah(()=>{a.current.insideReactTree=!0,E.start(0,()=>{a.current.insideReactTree=!1})}),F=w.useMemo(()=>({onKeyDown:P,onMouseDown:Z,onMouseUp:Z,onPointerDownCapture:U,onMouseDownCapture:U,onClickCapture:U}),[P,Z,U]);return w.useMemo(()=>i?{reference:M,floating:F}:{},[i,M,F])}let iW=new Map([[\"select\",\"listbox\"],[\"combobox\",\"listbox\"],[\"label\",!1]]),iY=[\"top\",\"right\",\"bottom\",\"left\"],iK=Math.min,iX=Math.max,iG=Math.round,iQ=Math.floor,iJ=e=>({x:e,y:e}),i0={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},i1={start:\"end\",end:\"start\"};function i2(e,t){return\"function\"==typeof e?e(t):e}function i4(e){return e.split(\"-\")[0]}function i5(e){return e.split(\"-\")[1]}function i3(e){return\"x\"===e?\"y\":\"x\"}function i6(e){return\"y\"===e?\"height\":\"width\"}let i9=new Set([\"top\",\"bottom\"]);function i8(e){return i9.has(i4(e))?\"y\":\"x\"}function i7(e){return e.replace(/start|end/g,e=>i1[e])}let le=[\"left\",\"right\"],lt=[\"right\",\"left\"],ln=[\"top\",\"bottom\"],lr=[\"bottom\",\"top\"];function lo(e){return e.replace(/left|right|bottom|top/g,e=>i0[e])}function la(e){return\"number\"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function li(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function ll(e,t,n){return Math.floor(e/t)!==n}function ls(e,t){return t<0||t>=e.current.length}function lc(e,t){return ld(e,{disabledIndices:t})}function lu(e,t){return ld(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function ld(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:r,amount:o=1}={}){let a=t;do a+=n?-o:o;while(a>=0&&a<=e.current.length-1&&lf(e,a,r));return a}function lf(e,t,n){if(\"function\"==typeof n)return n(t);if(n)return n.includes(t);let r=e.current[t];return null==r||r.hasAttribute(\"disabled\")||\"true\"===r.getAttribute(\"aria-disabled\")}let lp=0;function lh(e,t={}){let{preventScroll:n=!1,cancelPrevious:r=!0,sync:o=!1}=t;r&&cancelAnimationFrame(lp);let a=()=>e?.focus({preventScroll:n});o?a():lp=requestAnimationFrame(a)}function lm(e,t,n){switch(e){case\"vertical\":return t;case\"horizontal\":return n;default:return t||n}}function lg(e,t){return lm(t,e===im||e===ig,e===ip||e===ih)}function ly(e,t,n){return lm(t,e===ig,n?e===ip:e===ih)||\"Enter\"===e||\" \"===e||\"\"===e}function lv(e=[]){let t=e.map(e=>e?.reference),n=e.map(e=>e?.floating),r=e.map(e=>e?.item),o=w.useCallback(t=>lb(t,e,\"reference\"),t),a=w.useCallback(t=>lb(t,e,\"floating\"),n),i=w.useCallback(t=>lb(t,e,\"item\"),r);return w.useMemo(()=>({getReferenceProps:o,getFloatingProps:a,getItemProps:i}),[o,a,i])}function lb(e,t,n){let r=new Map,o=\"item\"===n,a={};for(let t in\"floating\"===n&&(a.tabIndex=-1,a[ic]=\"\"),e)o&&e&&(t===iu||t===id)||(a[t]=e[t]);for(let i=0;ir.get(o)?.map(t=>t(...e)).find(e=>void 0!==e))):e[o]=a)}}let lx=w.createContext(void 0);function lw(e){let t=w.useContext(lx);if(void 0===t&&!e)throw Error(\"Base UI: MenuRootContext is missing. Menu parts must be placed within .\");return t}let lC=w.createContext(null);function l_(e,t=!1,n=!1){let[r,o]=w.useState(e&&t?\"idle\":void 0),[a,i]=w.useState(e);return e&&!a&&(i(!0),o(\"starting\")),e||!a||\"ending\"===r||n||o(\"ending\"),e||a||\"ending\"!==r||o(void 0),aC(()=>{if(!e&&a&&\"ending\"!==r&&n){let e=iN.request(()=>{o(\"ending\")});return()=>{iN.cancel(e)}}},[e,a,r,n]),aC(()=>{if(!e||t)return;let n=iN.request(()=>{eh.flushSync(()=>{o(void 0)})});return()=>{iN.cancel(n)}},[t,e]),aC(()=>{if(!e||!t)return;e&&a&&\"idle\"!==r&&o(\"starting\");let n=iN.request(()=>{o(\"idle\")});return()=>{iN.cancel(n)}},[t,e,a,o,r]),w.useMemo(()=>({mounted:a,setMounted:i,transitionStatus:r}),[a,r])}function lk(e){let{enabled:t=!0,open:n,ref:r,onComplete:o}=e,a=a2(n),i=ah(o),l=function(e,t=!1){let n=iR();return ah((r,o=null)=>{let a;if(n.cancel(),null!=e){if(\"current\"in e){if(null==e.current)return;a=e.current}else a=e;\"function\"!=typeof a.getAnimations||globalThis.BASE_UI_ANIMATIONS_DISABLED?r():n.request(()=>{function e(){a&&Promise.allSettled(a.getAnimations().map(e=>e.finished)).then(()=>{null!=o&&o.aborted||eh.flushSync(r)})}t?n.request(e):e()})}})}(r,n);w.useEffect(()=>{t&&l(()=>{n===a.current&&i()})},[t,n,i,l,a])}let lE=w.createContext(void 0);function lj(e=!0){let t=w.useContext(lE);if(void 0===t&&!e)throw Error(\"Base UI: DirectionContext is missing.\");return t?.direction??\"ltr\"}function lS(e){return e?.ownerDocument||document}let lO=()=>{},lB={},lP={},lI=\"\";class lT{lockCount=0;restore=null;timeoutLock=au.create();timeoutUnlock=au.create();acquire(e){return this.lockCount+=1,1===this.lockCount&&null===this.restore&&this.timeoutLock.start(0,()=>this.lock(e)),this.release}release=()=>{this.lockCount-=1,0===this.lockCount&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{0===this.lockCount&&this.restore&&(this.restore?.(),this.restore=null)};lock(e){if(0===this.lockCount||null!==this.restore)return;let t=lS(e).documentElement,n=aT(t).getComputedStyle(t).overflowY;if(\"hidden\"===n||\"clip\"===n){this.restore=lO;return}let r=a7||!function(e){if(\"undefined\"==typeof document)return!1;let t=lS(e);return aT(t).innerWidth-t.documentElement.clientWidth>0}(e);this.restore=r?function(e){let t=lS(e).documentElement,n=t.style.overflow;return t.style.overflow=\"hidden\",()=>{t.style.overflow=n}}(e):function(e){let t=lS(e),n=t.documentElement,r=t.body,o=aT(n),a=0,i=0,l=iN.create();if(a8&&(o.visualViewport?.scale??1)!==1)return()=>{};function s(){let e=o.getComputedStyle(n),t=o.getComputedStyle(r);a=n.scrollTop,i=n.scrollLeft,lB={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},lI=n.style.scrollBehavior,lP={position:r.style.position,height:r.style.height,width:r.style.width,boxSizing:r.style.boxSizing,overflowY:r.style.overflowY,overflowX:r.style.overflowX,scrollBehavior:r.style.scrollBehavior};let l=\"undefined\"!=typeof CSS&&CSS.supports?.(\"scrollbar-gutter\",\"stable\"),s=n.scrollHeight>n.clientHeight,c=n.scrollWidth>n.clientWidth,u=\"scroll\"===e.overflowY||\"scroll\"===t.overflowY,d=\"scroll\"===e.overflowX||\"scroll\"===t.overflowX,f=Math.max(0,o.innerWidth-n.clientWidth),p=Math.max(0,o.innerHeight-n.clientHeight),h=parseFloat(t.marginTop)+parseFloat(t.marginBottom),m=parseFloat(t.marginLeft)+parseFloat(t.marginRight);Object.assign(n.style,{scrollbarGutter:\"stable\",overflowY:!l&&(s||u)?\"scroll\":\"hidden\",overflowX:!l&&(c||d)?\"scroll\":\"hidden\"}),Object.assign(r.style,{position:\"relative\",height:h||p?`calc(100dvh - ${h+p}px)`:\"100dvh\",width:m||f?`calc(100vw - ${m+f}px)`:\"100vw\",boxSizing:\"border-box\",overflow:\"hidden\",scrollBehavior:\"unset\"}),r.scrollTop=a,r.scrollLeft=i,n.setAttribute(\"data-base-ui-scroll-locked\",\"\"),n.style.scrollBehavior=\"unset\"}function c(){Object.assign(n.style,lB),Object.assign(r.style,lP),n.scrollTop=a,n.scrollLeft=i,n.removeAttribute(\"data-base-ui-scroll-locked\"),n.style.scrollBehavior=lI}function u(){c(),l.request(s)}return s(),o.addEventListener(\"resize\",u),()=>{l.cancel(),c(),o.removeEventListener(\"resize\",u)}}(e)}}let lz=new lT;function lD(e){if(e)return({\"focus-out\":\"focus-out\",\"escape-key\":\"escape-key\",\"outside-press\":\"outside-press\",\"list-navigation\":\"list-navigation\",click:\"trigger-press\",hover:\"trigger-hover\",focus:\"trigger-focus\",\"reference-press\":\"trigger-press\",\"safe-polygon\":\"trigger-hover\",\"ancestor-scroll\":void 0})[e]}let lL=w.createContext(void 0);function lN(e=!0){let t=w.useContext(lL);if(void 0===t&&!e)throw Error(\"Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within .\");return t}let lR=w.createContext(!1);function lM(e,t){return e&&!t?e:!e&&t?t:e||t?{...e,...t}:void 0}let lZ={};function lU(e,t,n,r,o){let a={...lH(e,lZ)};return t&&(a=lF(a,t)),n&&(a=lF(a,n)),r&&(a=lF(a,r)),o&&(a=lF(a,o)),a}function lF(e,t){return lq(t)?t(e):function(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case\"style\":e[n]=lM(e.style,r);break;case\"className\":e[n]=l$(e.className,r);break;default:!function(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return 111===n&&110===r&&o>=65&&o<=90&&(\"function\"==typeof t||void 0===t)}(n,r)?e[n]=r:e[n]=function(e,t){return t?e?n=>{var r;if(null!=(r=n)&&\"object\"==typeof r&&\"nativeEvent\"in r){lV(n);let r=t(n);return n.baseUIHandlerPrevented||e?.(n),r}let o=t(n);return e?.(n),o}:t:e}(e[n],r)}}return e}(e,t)}function lq(e){return\"function\"==typeof e}function lH(e,t){return lq(e)?e(t):e??lZ}function lV(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function l$(e,t){return t?e?t+\" \"+e:t:e}let lW=[],lY={current:!1},lK=function(e){let t,n,{children:r,open:o,onOpenChange:a,onOpenChangeComplete:i,defaultOpen:l=!1,disabled:s=!1,modal:c,loop:u=!0,orientation:d=\"vertical\",actionsRef:f,openOnHover:p,delay:h=100,closeDelay:m=0,closeParentOnEsc:g=!0}=e,[y,v]=w.useState(null),[b,x]=w.useState(null),[C,_]=w.useState(),[k,E]=w.useState(!0),[j,S]=w.useState(null),[O,B]=w.useState(null),[P,I]=w.useState(!0),[T,z]=w.useState(!1),D=w.useRef(null),L=w.useRef(null),N=w.useRef(null),R=w.useRef([]),M=w.useRef([]),Z=ad(),U=lN(!0),F=w.useContext(lR);{let e=lw(!0),n=function(e){let t=w.useContext(lC);if(null===t&&!e)throw Error(\"Base UI: MenubarContext is missing. Menubar parts must be placed within .\");return t}(!0);t=F&&e?{type:\"menu\",context:e}:n?{type:\"menubar\",context:n}:U?{type:\"context-menu\",context:U}:{type:void 0}}let q=ax();void 0!==t.type&&(q=t.context.rootId);let H=(void 0===t.type||\"context-menu\"===t.type)&&(c??!0),V=\"menu\"===t.type?t.context.allowMouseEnter:T,$=\"menu\"===t.type?t.context.setAllowMouseEnter:z,W=p??(\"menu\"===t.type||\"menubar\"===t.type&&t.context.hasSubmenuOpen),[Y,K]=ay({controlled:o,default:l,name:\"MenuRoot\",state:\"open\"}),X=w.useRef(\"context-menu\"!==t.type),G=ad();w.useEffect(()=>{if(Y||(D.current=null),\"context-menu\"===t.type){if(!Y){G.clear(),X.current=!1;return}G.start(500,()=>{X.current=!0})}},[G,Y,t.type]);let Q=w.useCallback(e=>{N.current=e,x(e)},[]),{mounted:J,setMounted:ee,transitionStatus:et}=l_(Y),{openMethod:en,triggerProps:er,reset:eo}=function(e){let[t,n]=w.useState(null),r=ah((t,r)=>{e||n(r)}),o=ah(()=>{n(null)}),{onClick:a,onPointerDown:i}=function(e){let t=w.useRef(\"\"),n=w.useCallback(n=>{n.defaultPrevented||(t.current=n.pointerType,e(n,n.pointerType))},[e]);return{onClick:w.useCallback(n=>{if(0===n.detail)return void e(n,\"keyboard\");\"pointerType\"in n&&e(n,n.pointerType),e(n,t.current),t.current=\"\"},[e]),onPointerDown:n}}(r);return w.useMemo(()=>({openMethod:t,reset:o,triggerProps:{onClick:a,onPointerDown:i}}),[t,o,a,i])}(Y);var ea={enabled:Y&&H&&\"trigger-hover\"!==O&&\"touch\"!==en,mounted:J,open:Y,referenceElement:b};let{enabled:ei=!0,mounted:el,open:es,referenceElement:ec=null}=ea;aC(()=>{if(ei&&a8&&el&&!es){let e=lS(ec),t=e.body.style.userSelect,n=e.body.style.webkitUserSelect;return e.body.style.userSelect=\"none\",e.body.style.webkitUserSelect=\"none\",()=>{e.body.style.userSelect=t,e.body.style.webkitUserSelect=n}}},[ei,el,es,ec]),aC(()=>{if(ei)return lz.acquire(ec)},[ei,ec]),Y||k||E(!0);let eu=ah(()=>{ee(!1),I(!0),$(!1),i?.(!1),eo()});lk({enabled:!f,open:Y,ref:L,onComplete(){Y||eu()}});let ed=w.useRef(!0),ef=ad(),ep=ah((e,n,r)=>{if(Y===e||!1===e&&n?.type===\"click\"&&\"touch\"===n.pointerType&&!ed.current)return;if(!e&&null!==j){let e=R.current[j];queueMicrotask(()=>{e?.setAttribute(\"tabindex\",\"-1\")})}e&&\"trigger-focus\"===r?(ed.current=!1,ef.start(300,()=>{ed.current=!0})):(ed.current=!0,ef.clear());let o=(\"trigger-press\"===r||\"item-press\"===r)&&0===n.detail&&n?.isTrusted,i=!e&&(\"escape-key\"===r||null==r);function l(){a?.(e,n,r),K(e),B(r??null),D.current=n??null}\"trigger-hover\"===r?(I(!0),Z.start(500,()=>{I(!1)}),eh.flushSync(l)):l(),\"menubar\"===t.type&&(\"trigger-focus\"===r||\"focus-out\"===r||\"trigger-hover\"===r||\"list-navigation\"===r||\"sibling-open\"===r)?_(\"group\"):o||i?_(o?\"click\":\"dismiss\"):_(void 0)});w.useImperativeHandle(f,()=>({unmount:eu}),[eu]),\"context-menu\"===t.type&&(n=t.context),w.useImperativeHandle(n?.positionerRef,()=>b,[b]),w.useImperativeHandle(n?.actionsRef,()=>({setOpen:ep}),[ep]),w.useEffect(()=>{Y||Z.clear()},[Z,Y]);let em=aB({elements:{reference:y,floating:b},open:Y,onOpenChange(e,t,n){ep(e,t,lD(n))}}),eg=iO(em,{enabled:k&&W&&!s&&\"context-menu\"!==t.type&&(\"menubar\"!==t.type||t.context.hasSubmenuOpen&&!Y),handleClose:iT({blockPointerEvents:!0}),mouseOnly:!0,move:\"menu\"===t.type,restMs:void 0===t.type||\"menu\"===t.type&&V?h:void 0,delay:\"menu\"===t.type?{open:V?h:1e10,close:m}:{close:m}}),ey=iD(em,{enabled:!s&&!Y&&\"menubar\"===t.type&&t.context.hasSubmenuOpen&&!U}),ev=function(e,t={}){let{open:n,onOpenChange:r,dataRef:o}=e,{enabled:a=!0,event:i=\"click\",toggle:l=!0,ignoreMouse:s=!1,stickIfOpen:c=!0}=t,u=w.useRef(void 0),d=iR(),f=w.useMemo(()=>({onPointerDown(e){u.current=e.pointerType},onMouseDown(e){let t=u.current,a=e.nativeEvent;if(0!==e.button||\"click\"===i||is(t,!0)&&s)return;let f=o.current.openEvent,p=f?.type,h=!(n&&l&&(!f||!c||\"click\"===p||\"mousedown\"===p));d.request(()=>{r(h,a,\"click\")})},onClick(e){let t=u.current;if(\"mousedown\"===i&&t){u.current=void 0;return}if(is(t,!0)&&s)return;let a=o.current.openEvent,d=a?.type;r(!(n&&l&&(!a||!c||\"click\"===d||\"mousedown\"===d||\"keydown\"===d||\"keyup\"===d)),e.nativeEvent,\"click\")},onKeyDown(){u.current=void 0}}),[o,i,s,r,n,c,l,d]);return w.useMemo(()=>a?{reference:f}:iZ,[a,f])}(em,{enabled:!s&&\"context-menu\"!==t.type,event:Y&&\"menubar\"===t.type?\"click\":\"mousedown\",toggle:!W||\"menu\"!==t.type,ignoreMouse:W&&\"menu\"===t.type,stickIfOpen:void 0===t.type&&P}),eb=i$(em,{enabled:!s,bubbles:g&&\"menu\"===t.type,outsidePress:()=>\"context-menu\"!==t.type||D.current?.type===\"contextmenu\"||X.current}),eA=function(e,t={}){let{open:n,elements:r,floatingId:o}=e,{enabled:a=!0,role:i=\"dialog\"}=t,l=ax(),s=r.domReference?.id||l,c=w.useMemo(()=>i_(r.floating)?.id||o,[r.floating,o]),u=iW.get(i)??i,d=null!=aE(),f=w.useMemo(()=>\"tooltip\"===u||\"label\"===i?{[`aria-${\"label\"===i?\"labelledby\":\"describedby\"}`]:n?c:void 0}:{\"aria-expanded\":n?\"true\":\"false\",\"aria-haspopup\":\"alertdialog\"===u?\"dialog\":u,\"aria-controls\":n?c:void 0,...\"listbox\"===u&&{role:\"combobox\"},...\"menu\"===u&&{id:s},...\"menu\"===u&&d&&{role:\"menuitem\"},...\"select\"===i&&{\"aria-autocomplete\":\"none\"},...\"combobox\"===i&&{\"aria-autocomplete\":\"list\"}},[u,c,d,n,s,i]),p=w.useMemo(()=>{let e={id:c,...u&&{role:u}};return\"tooltip\"===u||\"label\"===i?e:{...e,...\"menu\"===u&&{\"aria-labelledby\":s}}},[u,c,s,i]),h=w.useCallback(({active:e,selected:t})=>{let n={role:\"option\",...e&&{id:`${c}-fui-option`}};switch(i){case\"select\":case\"combobox\":return{...n,\"aria-selected\":t}}return{}},[c,i]);return w.useMemo(()=>a?{reference:f,floating:p,item:h}:{},[a,f,p,h])}(em,{role:\"menu\"}),ex=lj(),ew=function(e,t){let{open:n,onOpenChange:r,elements:o,floatingId:a}=e,{listRef:i,activeIndex:l,onNavigate:s=()=>{},enabled:c=!0,selectedIndex:u=null,allowEscape:d=!1,loop:f=!1,nested:p=!1,rtl:h=!1,virtual:m=!1,focusItemOnOpen:g=\"auto\",focusItemOnHover:y=!0,openOnArrowKeyDown:v=!0,disabledIndices:b,orientation:A=\"vertical\",parentOrientation:x,cols:C=1,scrollItemIntoView:_=!0,virtualItemRef:k,itemSizes:E,dense:j=!1}=t,S=a2(i_(o.floating)),O=aE(),B=aj();aC(()=>{e.dataRef.current.orientation=A},[e,A]);let P=iC(o.domReference),I=w.useRef(g),T=w.useRef(u??-1),z=w.useRef(null),D=w.useRef(!0),L=ah(()=>{s(-1===T.current?null:T.current)}),N=w.useRef(L),R=w.useRef(!!o.floating),M=w.useRef(n),Z=w.useRef(!1),U=w.useRef(!1),F=a2(b),q=a2(n),H=a2(_),V=a2(u),[$,W]=w.useState(),Y=ah(()=>{function e(e){m?(e.id?.endsWith(\"-fui-option\")&&(e.id=`${a}-${Math.random().toString(16).slice(2,10)}`),W(e.id),B?.events.emit(\"virtualfocus\",e),k&&(k.current=e)):lh(e,{sync:Z.current,preventScroll:!0})}let t=i.current[T.current],n=U.current;t&&e(t),(Z.current?e=>e():requestAnimationFrame)(()=>{let r=i.current[T.current]||t;if(!r)return;t||e(r);let o=H.current;o&&X&&(n||!D.current)&&r.scrollIntoView?.(\"boolean\"==typeof o?{block:\"nearest\",inline:\"nearest\"}:o)})});aC(()=>{c&&(n&&o.floating?I.current&&null!=u&&(U.current=!0,T.current=u,L()):R.current&&(T.current=-1,N.current()))},[c,n,o.floating,u,L]),aC(()=>{if(c&&n&&o.floating)if(null==l){if(Z.current=!1,null!=V.current)return;if(R.current&&(T.current=-1,Y()),(!M.current||!R.current)&&I.current&&(null!=z.current||!0===I.current&&null==z.current)){let e=0,t=()=>{null==i.current[0]?(e<2&&(e?requestAnimationFrame:queueMicrotask)(t),e+=1):(T.current=null==z.current||ly(z.current,A,h)||p?lc(i,F.current):lu(i,F.current),z.current=null,L())};t()}}else ls(i,l)||(T.current=l,Y(),U.current=!1)},[c,n,o.floating,l,V,p,i,A,h,L,Y,F]),aC(()=>{if(!c||o.floating||!B||m||!R.current)return;let e=B.nodesRef.current,t=e.find(e=>e.id===O)?.context?.elements.floating,n=iy(ix(o.floating)),r=e.some(e=>e.context&&iv(e.context.elements.floating,n));t&&!r&&D.current&&t.focus({preventScroll:!0})},[c,o.floating,B,O,m]),aC(()=>{N.current=L,M.current=n,R.current=!!o.floating}),aC(()=>{n||(z.current=null,I.current=g)},[n,g]);let K=null!=l,X=w.useMemo(()=>{function e(e){if(!q.current)return;let t=i.current.indexOf(e);-1!==t&&T.current!==t&&(T.current=t,L())}return{onFocus({currentTarget:t}){Z.current=!0,e(t)},onClick:({currentTarget:e})=>e.focus({preventScroll:!0}),onMouseMove({currentTarget:t}){Z.current=!0,U.current=!1,y&&e(t)},onPointerLeave({pointerType:e}){D.current&&\"touch\"!==e&&(Z.current=!0,y&&(T.current=-1,L(),m||S.current?.focus({preventScroll:!0})))}}},[q,S,y,i,L,m]),G=w.useCallback(()=>x??B?.nodesRef.current.find(e=>e.id===O)?.context?.dataRef?.current.orientation,[O,B,x]),Q=ah(e=>{var t,a,l,s,c;if(D.current=!1,Z.current=!0,229===e.which||!q.current&&e.currentTarget===S.current)return;if(p&&(t=e.key,a=A,l=h,s=C,\"both\"===a||\"horizontal\"===a&&s&&s>1?\"Escape\"===t:lm(a,l?t===ih:t===ip,t===im))){lg(e.key,G())||ia(e),r(!1,e.nativeEvent,\"list-navigation\"),aN(o.domReference)&&(m?B?.events.emit(\"virtualfocus\",o.domReference):o.domReference.focus());return}let u=T.current,g=lc(i,b),y=lu(i,b);if(P||(\"Home\"===e.key&&(ia(e),T.current=g,L()),\"End\"===e.key&&(ia(e),T.current=y,L())),C>1){let t=E||Array.from({length:i.current.length},()=>({width:1,height:1})),n=function(e,t,n){let r=[],o=0;return e.forEach(({width:e,height:a},i)=>{let l=!1;for(n&&(o=0);!l;){let n=[];for(let r=0;rnull==r[e])?(n.forEach(e=>{r[e]=i}),l=!0):o+=1}}),[...r]}(t,C,j),r=n.findIndex(e=>null!=e&&!lf(i,e,b)),o=n.reduce((e,t,n)=>null==t||lf(i,t,b)?e:n,-1),a=n[function(e,{event:t,orientation:n,loop:r,rtl:o,cols:a,disabledIndices:i,minIndex:l,maxIndex:s,prevIndex:c,stopEvent:u=!1}){let d=c;if(t.key===im){if(u&&ia(t),-1===c)d=s;else if(d=ld(e,{startingIndex:d,amount:a,decrement:!0,disabledIndices:i}),r&&(c-ae?n:n-a}ls(e,d)&&(d=c)}if(t.key===ig&&(u&&ia(t),-1===c?d=l:(d=ld(e,{startingIndex:c,amount:a,disabledIndices:i}),r&&c+a>s&&(d=ld(e,{startingIndex:c%a-a,amount:a,disabledIndices:i}))),ls(e,d)&&(d=c)),\"both\"===n){let n=iQ(c/a);t.key===(o?ip:ih)&&(u&&ia(t),c%a!=a-1?(d=ld(e,{startingIndex:c,disabledIndices:i}),r&&ll(d,a,n)&&(d=ld(e,{startingIndex:c-c%a-1,disabledIndices:i}))):r&&(d=ld(e,{startingIndex:c-c%a-1,disabledIndices:i})),ll(d,a,n)&&(d=c)),t.key===(o?ih:ip)&&(u&&ia(t),c%a!=0?(d=ld(e,{startingIndex:c,decrement:!0,disabledIndices:i}),r&&ll(d,a,n)&&(d=ld(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i}))):r&&(d=ld(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i})),ll(d,a,n)&&(d=c));let l=iQ(s/a)===n;ls(e,d)&&(d=r&&l?t.key===(o?ih:ip)?s:ld(e,{startingIndex:c-c%a-1,disabledIndices:i}):c)}return d}({current:n.map(e=>null!=e?i.current[e]:null)},{event:e,orientation:A,loop:f,rtl:h,cols:C,disabledIndices:(c=[...(\"function\"!=typeof b?b:null)||i.current.map((e,t)=>lf(i,t,b)?t:void 0),void 0],n.flatMap((e,t)=>c.includes(e)?[t]:[])),minIndex:r,maxIndex:o,prevIndex:function(e,t,n,r,o){if(-1===e)return -1;let a=n.indexOf(e),i=t[e];switch(o){case\"tl\":return a;case\"tr\":if(!i)return a;return a+i.width-1;case\"bl\":if(!i)return a;return a+(i.height-1)*r;case\"br\":return n.lastIndexOf(e);default:return -1}}(T.current>y?g:T.current,t,n,C,e.key===ig?\"bl\":e.key===(h?ip:ih)?\"tr\":\"tl\"),stopEvent:!0})];if(null!=a&&(T.current=a,L()),\"both\"===A)return}if(lg(e.key,A)){if(ia(e),n&&!m&&iy(e.currentTarget.ownerDocument)===e.currentTarget){T.current=ly(e.key,A,h)?g:y,L();return}ly(e.key,A,h)?f?T.current=u>=y?d&&u!==i.current.length?-1:g:ld(i,{startingIndex:u,disabledIndices:b}):T.current=Math.min(y,ld(i,{startingIndex:u,disabledIndices:b})):f?T.current=u<=g?d&&-1!==u?i.current.length:y:ld(i,{startingIndex:u,decrement:!0,disabledIndices:b}):T.current=Math.max(g,ld(i,{startingIndex:u,decrement:!0,disabledIndices:b})),ls(i,T.current)&&(T.current=-1),L()}}),J=w.useMemo(()=>m&&n&&K&&{\"aria-activedescendant\":$},[m,n,K,$]),ee=w.useMemo(()=>({\"aria-orientation\":\"both\"===A?void 0:A,...!P?J:{},onKeyDown(e){if(\"Tab\"===e.key&&e.shiftKey&&n&&!m){ia(e),r(!1,e.nativeEvent,\"list-navigation\"),aN(o.domReference)&&o.domReference.focus();return}Q(e)},onPointerMove(){D.current=!0}}),[J,Q,A,P,r,n,m,o.domReference]),et=w.useMemo(()=>{function e(e){\"auto\"===g&&ii(e.nativeEvent)&&(I.current=!0)}function t(e){I.current=g,\"auto\"===g&&il(e.nativeEvent)&&(I.current=!0)}return{...J,onKeyDown(e){var t,o;D.current=!1;let a=e.key.startsWith(\"Arrow\"),l=(t=e.key,o=G(),lm(o,h?t===ip:t===ih,t===ig)),s=lg(e.key,A),c=(p?l:s)||\"Enter\"===e.key||\"\"===e.key.trim();if(m&&n)return Q(e);if(n||v||!a){if(c){let t=lg(e.key,G());z.current=p&&t?null:e.key}if(p){l&&(ia(e),n?(T.current=lc(i,F.current),L()):r(!0,e.nativeEvent,\"list-navigation\"));return}s&&(null!=u&&(T.current=u),ia(e),!n&&v?r(!0,e.nativeEvent,\"list-navigation\"):Q(e),n&&L())}},onFocus(){n&&!m&&(T.current=-1,L())},onPointerDown:t,onPointerEnter:t,onMouseDown:e,onClick:e}},[J,Q,F,g,i,p,L,r,n,v,A,G,h,u,m]);return w.useMemo(()=>c?{reference:et,floating:ee,item:X}:{},[c,et,ee,X])}(em,{enabled:!s,listRef:R,activeIndex:j,nested:void 0!==t.type,loop:u,orientation:d,parentOrientation:\"menubar\"===t.type?t.context.orientation:void 0,rtl:\"rtl\"===ex,disabledIndices:lW,onNavigate:S,openOnArrowKeyDown:\"context-menu\"!==t.type}),eC=w.useRef(!1),e_=function(e,t){let{open:n,dataRef:r}=e,{listRef:o,activeIndex:a,onMatch:i,onTypingChange:l,enabled:s=!0,findMatch:c=null,resetMs:u=750,ignoreKeys:d=[],selectedIndex:f=null}=t,p=ad(),h=w.useRef(\"\"),m=w.useRef(f??a??-1),g=w.useRef(null),y=ah(i),v=ah(l),b=a2(c),A=a2(d);aC(()=>{n&&(p.clear(),g.current=null,h.current=\"\")},[n,p]),aC(()=>{n&&\"\"===h.current&&(m.current=f??a??-1)},[n,f,a]);let x=ah(e=>{e?r.current.typing||(r.current.typing=e,v(e)):r.current.typing&&(r.current.typing=e,v(e))}),C=ah(e=>{function t(e,t,n){let r=b.current?b.current(t,n):t.find(e=>e?.toLocaleLowerCase().indexOf(n.toLocaleLowerCase())===0);return r?e.indexOf(r):-1}let r=o.current;if(h.current.length>0&&\" \"!==h.current[0]&&(-1===t(r,r,h.current)?x(!1):\" \"===e.key&&ia(e)),null==r||A.current.includes(e.key)||1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey)return;n&&\" \"!==e.key&&(ia(e),x(!0)),r.every(e=>!e||e[0]?.toLocaleLowerCase()!==e[1]?.toLocaleLowerCase())&&h.current===e.key&&(h.current=\"\",m.current=g.current),h.current+=e.key,p.start(u,()=>{h.current=\"\",m.current=g.current,x(!1)});let a=m.current,i=t(r,[...r.slice((a||0)+1),...r.slice(0,(a||0)+1)],h.current);-1!==i?(y(i),g.current=i):\" \"!==e.key&&(h.current=\"\",x(!1))}),_=w.useMemo(()=>({onKeyDown:C}),[C]),k=w.useMemo(()=>({onKeyDown:C,onKeyUp(e){\" \"===e.key&&x(!1)}}),[C,x]);return w.useMemo(()=>s?{reference:_,floating:k}:{},[s,_,k])}(em,{listRef:M,activeIndex:j,resetMs:500,onMatch:e=>{Y&&e!==j&&S(e)},onTypingChange:w.useCallback(e=>{eC.current=e},[])}),{getReferenceProps:ek,getFloatingProps:eE,getItemProps:ej}=lv([eg,ev,eb,ey,eA,ew,e_]),eS=function(e){let{enabled:t=!0,mouseDownAction:n,open:r}=e,o=w.useRef(!1);return w.useMemo(()=>t?{onMouseDown:e=>{(\"open\"===n&&!r||\"close\"===n&&r)&&(o.current=!0,lS(e.currentTarget).addEventListener(\"click\",()=>{o.current=!1},{once:!0}))},onClick:e=>{o.current&&(o.current=!1,e.preventBaseUIHandler())}}:iZ,[t,n,r])}({open:Y,enabled:\"menubar\"===t.type,mouseDownAction:\"open\"}),eO=w.useMemo(()=>{let e=lU(ek(),{onMouseEnter(){E(!0)},onMouseMove(){$(!0)}},er,eS);return delete e.role,e},[ek,eS,$,er]),eB=w.useMemo(()=>eE({onMouseEnter(){W&&\"menu\"!==t.type||E(!1)},onMouseMove(){$(!0)},onClick(){W&&E(!1)}}),[eE,W,t.type,$]),eP=w.useMemo(()=>ej(),[ej]),eI=w.useMemo(()=>({activeIndex:j,setActiveIndex:S,allowMouseUpTriggerRef:t.type?t.context.allowMouseUpTriggerRef:lY,floatingRootContext:em,itemProps:eP,popupProps:eB,triggerProps:eO,itemDomElements:R,itemLabels:M,mounted:J,open:Y,popupRef:L,positionerRef:N,setOpen:ep,setPositionerElement:Q,triggerElement:y,setTriggerElement:v,transitionStatus:et,lastOpenChangeReason:O,instantType:C,onOpenChangeComplete:i,setHoverEnabled:E,typingRef:eC,modal:H,disabled:s,parent:t,rootId:q,allowMouseEnter:V,setAllowMouseEnter:$}),[j,em,eP,eB,eO,R,M,J,Y,N,ep,et,y,Q,O,C,i,H,s,t,q,V,$]),eT=(0,A.jsx)(lx.Provider,{value:eI,children:r});return void 0===t.type||\"context-menu\"===t.type?(0,A.jsx)(aO,{children:eT}):eT};function lX(e,t,n,r){var o,a,i,l,s;let c=al(lG).current;return o=c,a=e,i=t,l=n,s=r,(o.refs[0]!==a||o.refs[1]!==i||o.refs[2]!==l||o.refs[3]!==s)&&lQ(c,[e,t,n,r]),c.callback}function lG(){return{callback:null,cleanup:null,refs:[]}}function lQ(e,t){if(e.refs=t,t.every(e=>null==e)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){let r=Array(t.length).fill(null);for(let e=0;e{for(let e=0;e\"starting\"===e?l0:\"ending\"===e?l1:null},l4=function(e){return e.open=\"data-open\",e.closed=\"data-closed\",e[e.startingStyle=lJ.startingStyle]=\"startingStyle\",e[e.endingStyle=lJ.endingStyle]=\"endingStyle\",e.anchorHidden=\"data-anchor-hidden\",e}({}),l5=function(e){return e.popupOpen=\"data-popup-open\",e.pressed=\"data-pressed\",e}({}),l3={[l5.popupOpen]:\"\"},l6={[l5.popupOpen]:\"\",[l5.pressed]:\"\"},l9={[l4.open]:\"\"},l8={[l4.closed]:\"\"},l7={[l4.anchorHidden]:\"\"},se={open:e=>e?l3:null},st={open:e=>e?l6:null},sn={open:e=>e?l9:l8,anchorHidden:e=>e?l7:null},sr=parseInt(w.version,10);function so(e,t,n={}){let r=t.render,o=function(e,t={}){var n,r;let o,{className:a,render:i}=e,{state:l=iZ,ref:s,props:c,disableStyleHooks:u,customStyleHookMapping:d,enabled:f=!0}=t,p=f?(n=a,r=l,\"function\"==typeof n?n(r):n):void 0;!0!==u&&(o=w.useMemo(()=>f?function(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let e=t[r](o);null!=e&&Object.assign(n,e);continue}!0===o?n[`data-${r.toLowerCase()}`]=\"\":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}(l,d):iZ,[l,d,f]));let h=f?lM(o,Array.isArray(c)?function(e){if(0===e.length)return lZ;if(1===e.length)return lH(e[0],lZ);let t={...lH(e[0],lZ)};for(let n=1;ne!==n[t]))&&lQ(r,e),r.callback}([h.ref,sa(i),...s]):h.ref=lX(h.ref,sa(i),s):lX(null,null)),f)?(void 0!==p&&(h.className=l$(h.className,p)),h):iZ}(t,n);return!1===n.enabled?null:function(e,t,n,r){if(t){if(\"function\"==typeof t)return t(n,r);let e=lU(n,t.props);return e.ref=n.ref,w.cloneElement(t,e)}if(e&&\"string\"==typeof e){var o,a;return o=e,a=n,\"button\"===o?(0,A.jsx)(\"button\",{type:\"button\",...a}):\"img\"===o?(0,A.jsx)(\"img\",{alt:\"\",...a}):w.createElement(o,a)}throw Error(\"Base UI: Render element or function are not defined.\")}(e,r,o,n.state??iZ)}function sa(e){return e&&\"function\"!=typeof e?sr>=19?e.props.ref:e.ref:null}let si=w.createContext(void 0);function sl(e=!1){let t=w.useContext(si);if(void 0===t&&!e)throw Error(\"Base UI: CompositeRootContext is missing. Composite parts must be placed within .\");return t}function ss(e={}){let{disabled:t=!1,focusableWhenDisabled:n,tabIndex:r=0,native:o=!0}=e,a=w.useRef(null),i=void 0!==sl(!0),l=ah(()=>{let e=a.current;return!!(e?.tagName===\"A\"&&e?.href)}),{props:s}=function(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:o=0,isNativeButton:a}=e,i=r&&!1!==t,l=r&&!1===t;return{props:w.useMemo(()=>{let e={onKeyDown(e){n&&t&&\"Tab\"!==e.key&&e.preventDefault()}};return r||(e.tabIndex=o,!a&&n&&(e.tabIndex=t?o:-1)),(a&&(t||i)||!a&&n)&&(e[\"aria-disabled\"]=n),a&&(!t||l)&&(e.disabled=n),e},[r,n,t,i,l,a,o])}}({focusableWhenDisabled:n,disabled:t,composite:i,tabIndex:r,isNativeButton:o});return aC(()=>{let e=a.current;e instanceof HTMLButtonElement&&i&&t&&void 0===s.disabled&&e.disabled&&(e.disabled=!1)},[t,s.disabled,i]),{getButtonProps:w.useCallback((e={})=>{let{onClick:n,onMouseDown:r,onKeyUp:a,onKeyDown:i,onPointerDown:c,...u}=e;return lU({type:o?\"button\":void 0,onClick(e){if(t)return void e.preventDefault();n?.(e)},onMouseDown(e){t||r?.(e)},onKeyDown(e){if(t||(lV(e),i?.(e)),e.baseUIHandlerPrevented)return;let r=e.target===e.currentTarget&&!o&&!l()&&!t,a=\"Enter\"===e.key,s=\" \"===e.key;r&&((s||a)&&e.preventDefault(),a&&n?.(e))},onKeyUp(e){t||(lV(e),a?.(e)),!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||o||t||\" \"!==e.key||n?.(e))},onPointerDown(e){if(t)return void e.preventDefault();c?.(e)}},o?void 0:{role:\"button\"},s,u)},[t,s,o,l]),buttonRef:a}}let sc=w.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}}),su=function(e){return e[e.None=0]=\"None\",e[e.GuessFromOrder=1]=\"GuessFromOrder\",e}({});function sd(e={}){let{label:t,metadata:n,textRef:r,indexGuessBehavior:o}=e,{register:a,unregister:i,subscribeMapChange:l,elementsRef:s,labelsRef:c,nextIndexRef:u}=w.useContext(sc),d=w.useRef(-1),[f,p]=w.useState(o===su.GuessFromOrder?()=>{if(-1===d.current){let e=u.current;u.current+=1,d.current=e}return d.current}:-1),h=w.useRef(null),m=w.useCallback(e=>{if(h.current=e,-1!==f&&null!==e&&(s.current[f]=e,c)){let n=void 0!==t;c.current[f]=n?t:r?.current?.textContent??e.textContent}},[f,s,c,t,r]);return aC(()=>{let e=h.current;if(e)return a(e,n),()=>{i(e)}},[a,i,n]),aC(()=>l(e=>{let t=h.current?e.get(h.current)?.index:null;null!=t&&p(t)}),[l,p]),w.useMemo(()=>({ref:m,index:f}),[f,m])}function sf(e){let{render:t,className:n,state:r=iZ,props:o=iU,refs:a=iU,metadata:i,customStyleHookMapping:l,tag:s=\"div\",...c}=e,{compositeProps:u,compositeRef:d}=function(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=sl(),{ref:o,index:a}=sd(e),i=n===a,l=w.useRef(null),s=lX(o,l);return{compositeProps:w.useMemo(()=>({tabIndex:i?0:-1,onFocus(){r(a)},onMouseMove(){let e=l.current;if(!t||!e)return;let n=e.hasAttribute(\"disabled\")||\"true\"===e.ariaDisabled;i||n||e.focus()}}),[i,r,a,t]),compositeRef:s,index:a}}({metadata:i});return so(s,e,{state:r,ref:[...a,d],props:[u,...o,c],customStyleHookMapping:l})}let sp=w.forwardRef(function(e,t){let{render:n,className:r,disabled:o=!1,nativeButton:a=!0,...i}=e,{triggerProps:l,disabled:s,setTriggerElement:c,open:u,allowMouseUpTriggerRef:d,positionerRef:f,parent:p,lastOpenChangeReason:h,rootId:m}=lw(),g=o||s,y=w.useRef(null),v=ad(),{getButtonProps:b,buttonRef:x}=ss({disabled:g,native:a}),C=lX(x,c),{events:_}=aj();w.useEffect(()=>{u||void 0!==p.type||(d.current=!1)},[d,u,p.type]);let k=ah(e=>{if(!y.current)return;v.clear(),d.current=!1;let t=e.target;if(iv(y.current,t)||iv(f.current,t)||t===y.current||null!=t&&function e(t){return aN(t)&&t.hasAttribute(\"data-rootownerid\")?t.getAttribute(\"data-rootownerid\")??void 0:aX(t)?void 0:e(aJ(t))}(t)===m)return;let n=function(e){let t=e.getBoundingClientRect(),n=window.getComputedStyle(e,\"::before\"),r=window.getComputedStyle(e,\"::after\");if(\"none\"===n.content&&\"none\"===r.content)return t;let o=parseFloat(n.width)||0,a=parseFloat(n.height)||0,i=parseFloat(r.width)||0,l=parseFloat(r.height)||0,s=Math.max(t.width,o,i),c=Math.max(t.height,a,l),u=s-t.width,d=c-t.height;return{left:t.left-u/2,right:t.right+u/2,top:t.top-d/2,bottom:t.bottom+d/2}}(y.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||_.emit(\"close\",{domEvent:e,reason:\"cancel-open\"})});w.useEffect(()=>{u&&\"trigger-hover\"===h&&lS(y.current).addEventListener(\"mouseup\",k,{once:!0})},[u,k,h]);let E=\"menubar\"===p.type,j=w.useCallback(e=>lU(E?{role:\"menuitem\"}:{},{\"aria-haspopup\":\"menu\",ref:C,onMouseDown:e=>{u||(v.start(200,()=>{d.current=!0}),lS(e.currentTarget).addEventListener(\"mouseup\",k,{once:!0}))}},e,b),[b,C,u,d,v,k,E]),S=w.useMemo(()=>({disabled:g,open:u}),[g,u]),O=[y,t,x],B=[l,i,j],P=so(\"button\",e,{enabled:!E,customStyleHookMapping:st,state:S,ref:O,props:B});return E?(0,A.jsx)(sf,{tag:\"button\",render:n,className:r,state:S,refs:O,props:B,customStyleHookMapping:st}):P}),sh={clip:\"rect(0 0 0 0)\",overflow:\"hidden\",whiteSpace:\"nowrap\",position:\"fixed\",top:0,left:0,border:0,padding:0,width:1,height:1,margin:-1},sm=w.forwardRef(function(e,t){let[n,r]=w.useState();return aC(()=>{ie&&r(\"button\")},[]),(0,A.jsx)(\"span\",{...e,ref:t,tabIndex:0,role:n,\"aria-hidden\":!n||void 0,style:sh,\"data-base-ui-focus-guard\":\"\"})});var sg='input:not([inert]),select:not([inert]),textarea:not([inert]),a[href]:not([inert]),button:not([inert]),[tabindex]:not(slot):not([inert]),audio[controls]:not([inert]),video[controls]:not([inert]),[contenteditable]:not([contenteditable=\"false\"]):not([inert]),details>summary:first-of-type:not([inert]),details:not([inert])',sy=\"undefined\"==typeof Element,sv=sy?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,sb=!sy&&Element.prototype.getRootNode?function(e){var t;return null==e||null==(t=e.getRootNode)?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},sA=function e(t,n){void 0===n&&(n=!0);var r,o=null==t||null==(r=t.getAttribute)?void 0:r.call(t,\"inert\");return\"\"===o||\"true\"===o||n&&t&&e(t.parentNode)},sx=function(e){var t,n=null==e||null==(t=e.getAttribute)?void 0:t.call(e,\"contenteditable\");return\"\"===n||\"true\"===n},sw=function(e,t,n){if(sA(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(sg));return t&&sv.call(e,sg)&&r.unshift(e),r=r.filter(n)},sC=function e(t,n,r){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!sA(i,!1))if(\"SLOT\"===i.tagName){var l=i.assignedElements(),s=e(l.length?l:i.children,!0,r);r.flatten?o.push.apply(o,s):o.push({scopeParent:i,candidates:s})}else{sv.call(i,sg)&&r.filter(i)&&(n||!t.includes(i))&&o.push(i);var c=i.shadowRoot||\"function\"==typeof r.getShadowRoot&&r.getShadowRoot(i),u=!sA(c,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(c&&u){var d=e(!0===c?i.children:c.children,!0,r);r.flatten?o.push.apply(o,d):o.push({scopeParent:i,candidates:d})}else a.unshift.apply(a,i.children)}}return o},s_=function(e){return!isNaN(parseInt(e.getAttribute(\"tabindex\"),10))},sk=function(e){if(!e)throw Error(\"No node provided\");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||sx(e))&&!s_(e)?0:e.tabIndex},sE=function(e,t){var n=sk(e);return n<0&&t&&!s_(e)?0:n},sj=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},sS=function(e){return\"INPUT\"===e.tagName},sO=function(e,t){for(var n=0;nsummary:first-of-type\")?e.parentElement:e;if(sv.call(o,\"details:not([open]) *\"))return!0;if(n&&\"full\"!==n&&\"legacy-full\"!==n){if(\"non-zero-area\"===n)return sT(e)}else{if(\"function\"==typeof r){for(var a=e;e;){var i=e.parentElement,l=sb(e);if(i&&!i.shadowRoot&&!0===r(i))return sT(e);e=e.assignedSlot?e.assignedSlot:i||l===e.ownerDocument?i:l.host}e=a}if(sI(e))return!e.getClientRects().length;if(\"legacy-full\"!==n)return!0}return!1},sD=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(\"FIELDSET\"===t.tagName&&t.disabled){for(var n=0;nsk(t))&&!!sL(e,t)},sR=function(e){var t=parseInt(e.getAttribute(\"tabindex\"),10);return!!isNaN(t)||!!(t>=0)},sM=function e(t){var n=[],r=[];return t.forEach(function(t,o){var a=!!t.scopeParent,i=a?t.scopeParent:t,l=sE(i,a),s=a?e(t.candidates):i;0===l?a?n.push.apply(n,s):n.push(i):r.push({documentOrder:o,tabIndex:l,item:t,isScope:a,content:s})}),r.sort(sj).reduce(function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e},[]).concat(n)},sZ=function(e,t){return sM((t=t||{}).getShadowRoot?sC([e],t.includeContainer,{filter:sN.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:sR}):sw(e,t.includeContainer,sN.bind(null,t)))},sU=function(e,t){return(t=t||{}).getShadowRoot?sC([e],t.includeContainer,{filter:sL.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):sw(e,t.includeContainer,sL.bind(null,t))},sF=function(e,t){if(t=t||{},!e)throw Error(\"No node provided\");return!1!==sv.call(e,sg)&&sN(t,e)};let sq=()=>({getShadowRoot:!0,displayCheck:\"function\"==typeof ResizeObserver&&ResizeObserver.toString().includes(\"[native code]\")?\"full\":\"none\"});function sH(e,t){let n=sZ(e,sq()),r=n.length;if(0===r)return;let o=iy(ix(e)),a=n.indexOf(o);return n[-1===a?1===t?0:r-1:a+t]}function sV(e){return sH(ix(e).body,1)||e}function s$(e){return sH(ix(e).body,-1)||e}function sW(e,t){let n=t||e.currentTarget,r=e.relatedTarget;return!r||!iv(n,r)}function sY(e){sZ(e,sq()).forEach(e=>{e.dataset.tabindex=e.getAttribute(\"tabindex\")||\"\",e.setAttribute(\"tabindex\",\"-1\")})}function sK(e){e.querySelectorAll(\"[data-tabindex]\").forEach(e=>{let t=e.dataset.tabindex;delete e.dataset.tabindex,t?e.setAttribute(\"tabindex\",t):e.removeAttribute(\"tabindex\")})}let sX=w.createContext(null),sG=()=>w.useContext(sX),sQ=ik(\"portal\");function sJ(e={}){let{id:t,root:n}=e,r=ax(),o=sG(),[a,i]=w.useState(null),l=w.useRef(null);return aC(()=>()=>{a?.remove(),queueMicrotask(()=>{l.current=null})},[a]),aC(()=>{if(!r||l.current)return;let e=t?document.getElementById(t):null;if(!e)return;let n=document.createElement(\"div\");n.id=r,n.setAttribute(sQ,\"\"),e.appendChild(n),l.current=n,i(n)},[t,r]),aC(()=>{if(null===n||!r||l.current)return;let e=n||o?.portalNode;e&&!aD(e)&&(e=e.current),e=e||document.body;let a=null;t&&((a=document.createElement(\"div\")).id=t,e.appendChild(a));let s=document.createElement(\"div\");s.id=r,s.setAttribute(sQ,\"\"),(e=a||e).appendChild(s),l.current=s,i(s)},[t,n,r,o]),a}function s0(e){let{children:t,id:n,root:r,preserveTabOrder:o=!0}=e,a=sJ({id:n,root:r}),[i,l]=w.useState(null),s=w.useRef(null),c=w.useRef(null),u=w.useRef(null),d=w.useRef(null),f=i?.modal,p=i?.open,h=!!i&&!i.modal&&i.open&&o&&!!(r||a);return w.useEffect(()=>{if(a&&o&&!f)return a.addEventListener(\"focusin\",e,!0),a.addEventListener(\"focusout\",e,!0),()=>{a.removeEventListener(\"focusin\",e,!0),a.removeEventListener(\"focusout\",e,!0)};function e(e){if(a&&sW(e)){let t=\"focusin\"===e.type;(t?sK:sY)(a)}}},[a,o,f]),w.useEffect(()=>{a&&(p||sK(a))},[p,a]),(0,A.jsxs)(sX.Provider,{value:w.useMemo(()=>({preserveTabOrder:o,beforeOutsideRef:s,afterOutsideRef:c,beforeInsideRef:u,afterInsideRef:d,portalNode:a,setFocusManagerState:l}),[o,a]),children:[h&&a&&(0,A.jsx)(sm,{\"data-type\":\"outside\",ref:s,onFocus:e=>{if(sW(e,a))u.current?.focus();else{let e=s$(i?i.domReference:null);e?.focus()}}}),h&&a&&(0,A.jsx)(\"span\",{\"aria-owns\":a.id,style:sh}),a&&eh.createPortal(t,a),h&&a&&(0,A.jsx)(sm,{\"data-type\":\"outside\",ref:c,onFocus:e=>{if(sW(e,a))d.current?.focus();else{let t=sV(i?i.domReference:null);t?.focus(),i?.closeOnFocusOut&&i?.onOpenChange(!1,e.nativeEvent,\"focus-out\")}}})]})}let s1=w.createContext(void 0);function s2(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=lw();return o||n?(0,A.jsx)(s1.Provider,{value:n,children:(0,A.jsx)(s0,{root:r,children:t})}):null}let s4=w.createContext(void 0);function s5(e,t,n){let r,{reference:o,floating:a}=e,i=i8(t),l=i3(i8(t)),s=i6(l),c=i4(t),u=\"y\"===i,d=o.x+o.width/2-a.width/2,f=o.y+o.height/2-a.height/2,p=o[s]/2-a[s]/2;switch(c){case\"top\":r={x:d,y:o.y-a.height};break;case\"bottom\":r={x:d,y:o.y+o.height};break;case\"right\":r={x:o.x+o.width,y:f};break;case\"left\":r={x:o.x-a.width,y:f};break;default:r={x:o.x,y:o.y}}switch(i5(t)){case\"start\":r[l]-=p*(n&&u?-1:1);break;case\"end\":r[l]+=p*(n&&u?-1:1)}return r}let s3=async(e,t,n)=>{let{placement:r=\"bottom\",strategy:o=\"absolute\",middleware:a=[],platform:i}=n,l=a.filter(Boolean),s=await (null==i.isRTL?void 0:i.isRTL(t)),c=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=s5(c,r,s),f=r,p={},h=0;for(let n=0;ne[t]>=0)}let s7=new Set([\"left\",\"top\"]);async function ce(e,t){let{placement:n,platform:r,elements:o}=e,a=await (null==r.isRTL?void 0:r.isRTL(o.floating)),i=i4(n),l=i5(n),s=\"y\"===i8(n),c=s7.has(i)?-1:1,u=a&&s?-1:1,d=i2(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:h}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return l&&\"number\"==typeof h&&(p=\"end\"===l?-1*h:h),s?{x:p*u,y:f*c}:{x:f*c,y:p*u}}function ct(e){let t=aG(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=aN(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=iG(n)!==a||iG(r)!==i;return l&&(n=a,r=i),{width:n,height:r,$:l}}function cn(e){return aL(e)?e:e.contextElement}function cr(e){let t=cn(e);if(!aN(t))return iJ(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:a}=ct(t),i=(a?iG(n.width):n.width)/r,l=(a?iG(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}let co=iJ(0);function ca(e){let t=aT(e);return aY()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:co}function ci(e,t,n,r){var o,a,i;void 0===t&&(t=!1),void 0===n&&(n=!1);let l=e.getBoundingClientRect(),s=cn(e),c=iJ(1);t&&(r?aL(r)&&(c=cr(r)):c=cr(e));let u=(o=s,void 0===(a=n)&&(a=!1),(i=r)&&(!a||i===aT(o))&&a)?ca(s):iJ(0),d=(l.left+u.x)/c.x,f=(l.top+u.y)/c.y,p=l.width/c.x,h=l.height/c.y;if(s){let e=aT(s),t=r&&aL(r)?aT(r):r,n=e,o=a1(n);for(;o&&r&&t!==n;){let e=cr(o),t=o.getBoundingClientRect(),r=aG(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,i=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;d*=e.x,f*=e.y,p*=e.x,h*=e.y,d+=a,f+=i,o=a1(n=aT(o))}}return li({width:p,height:h,x:d,y:f})}function cl(e,t){let n=aQ(e).scrollLeft;return t?t.left+n:ci(az(e)).left+n}function cs(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:cl(e,r));return{x:o,y:r.top+t.scrollTop}}let cc=new Set([\"absolute\",\"fixed\"]);function cu(e,t,n){let r;if(\"viewport\"===t)r=function(e,t){let n=aT(e),r=az(e),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,l=0,s=0;if(o){a=o.width,i=o.height;let e=aY();(!e||e&&\"fixed\"===t)&&(l=o.offsetLeft,s=o.offsetTop)}return{width:a,height:i,x:l,y:s}}(e,n);else if(\"document\"===t)r=function(e){let t=az(e),n=aQ(e),r=e.ownerDocument.body,o=iX(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=iX(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),i=-n.scrollLeft+cl(e),l=-n.scrollTop;return\"rtl\"===aG(r).direction&&(i+=iX(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(az(e));else if(aL(t))r=function(e,t){let n=ci(e,!0,\"fixed\"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=aN(e)?cr(e):iJ(1),i=e.clientWidth*a.x,l=e.clientHeight*a.y,s=o*a.x;return{width:i,height:l,x:s,y:r*a.y}}(t,n);else{let n=ca(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return li(r)}function cd(e){return\"static\"===aG(e).position}function cf(e,t){if(!aN(e)||\"fixed\"===aG(e).position)return null;if(t)return t(e);let n=e.offsetParent;return az(e)===n&&(n=n.ownerDocument.body),n}function cp(e,t){var n;let r=aT(e);if(aq(e))return r;if(!aN(e)){let t=aJ(e);for(;t&&!aX(t);){if(aL(t)&&!cd(t))return t;t=aJ(t)}return r}let o=cf(e,t);for(;o&&(n=o,aU.has(aI(n)))&&cd(o);)o=cf(o,t);return o&&aX(o)&&cd(o)&&!aW(o)?r:o||function(e){let t=aJ(e);for(;aN(t)&&!aX(t);){if(aW(t))return t;if(aq(t))break;t=aJ(t)}return null}(e)||r}let ch=async function(e){let t=this.getOffsetParent||cp,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=aN(t),o=az(t),a=\"fixed\"===n,i=ci(e,!0,a,t),l={scrollLeft:0,scrollTop:0},s=iJ(0);if(r||!r&&!a)if((\"body\"!==aI(t)||aZ(o))&&(l=aQ(t)),r){let e=ci(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=cl(o));a&&!r&&o&&(s.x=cl(o));let c=!o||r||a?iJ(0):cs(o,l),u=i.left+l.scrollLeft-s.x-c.x;return{x:u,y:i.top+l.scrollTop-s.y-c.y,width:i.width,height:i.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},cm={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,a=\"fixed\"===o,i=az(r),l=!!t&&aq(t.floating);if(r===i||l&&a)return n;let s={scrollLeft:0,scrollTop:0},c=iJ(1),u=iJ(0),d=aN(r);if((d||!d&&!a)&&((\"body\"!==aI(r)||aZ(i))&&(s=aQ(r)),aN(r))){let e=ci(r);c=cr(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=!i||d||a?iJ(0):cs(i,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+f.x,y:n.y*c.y-s.scrollTop*c.y+u.y+f.y}},getDocumentElement:az,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,a=[...\"clippingAncestors\"===n?aq(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=a0(e,[],!1).filter(e=>aL(e)&&\"body\"!==aI(e)),o=null,a=\"fixed\"===aG(e).position,i=a?aJ(e):e;for(;aL(i)&&!aX(i);){let t=aG(i),n=aW(i);n||\"fixed\"!==t.position||(o=null),(a?!n&&!o:!n&&\"static\"===t.position&&!!o&&cc.has(o.position)||aZ(i)&&!n&&function e(t,n){let r=aJ(t);return!(r===n||!aL(r)||aX(r))&&(\"fixed\"===aG(r).position||e(r,n))}(e,i))?r=r.filter(e=>e!==i):o=t,i=aJ(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce((e,n)=>{let r=cu(t,n,o);return e.top=iX(r.top,e.top),e.right=iK(r.right,e.right),e.bottom=iK(r.bottom,e.bottom),e.left=iX(r.left,e.left),e},cu(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:cp,getElementRects:ch,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=ct(e);return{width:t,height:n}},getScale:cr,isElement:aL,isRTL:function(e){return\"rtl\"===aG(e).direction}};function cg(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cy(e,t,n,r){let o;void 0===r&&(r={});let{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:l=\"function\"==typeof ResizeObserver,layoutShift:s=\"function\"==typeof IntersectionObserver,animationFrame:c=!1}=r,u=cn(e),d=a||i?[...u?a0(u):[],...a0(t)]:[];d.forEach(e=>{a&&e.addEventListener(\"scroll\",n,{passive:!0}),i&&e.addEventListener(\"resize\",n)});let f=u&&s?function(e,t){let n,r=null,o=az(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function i(l,s){void 0===l&&(l=!1),void 0===s&&(s=1),a();let c=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=c;if(l||t(),!f||!p)return;let h=iQ(d),m=iQ(o.clientWidth-(u+f)),g=iQ(o.clientHeight-(d+p)),y={rootMargin:-h+\"px \"+-m+\"px \"+-g+\"px \"+-iQ(u)+\"px\",threshold:iX(0,iK(1,s))||1},v=!0;function b(t){let r=t[0].intersectionRatio;if(r!==s){if(!v)return i();r?i(!1,r):n=setTimeout(()=>{i(!1,1e-7)},1e3)}1!==r||cg(c,e.getBoundingClientRect())||i(),v=!1}try{r=new IntersectionObserver(b,{...y,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(b,y)}r.observe(e)}(!0),a}(u,n):null,p=-1,h=null;l&&(h=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),n()}),u&&!c&&h.observe(u),h.observe(t));let m=c?ci(e):null;return c&&function t(){let r=ci(e);m&&!cg(m,r)&&n(),m=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener(\"scroll\",n),i&&e.removeEventListener(\"resize\",n)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,c&&cancelAnimationFrame(o)}}var cv=\"undefined\"!=typeof document,cb=cv?w.useLayoutEffect:function(){};function cA(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if(\"function\"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&\"object\"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!cA(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if((\"_owner\"!==n||!e.$$typeof)&&!cA(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function cx(e){return\"undefined\"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function cw(e,t){let n=cx(e);return Math.round(t*n)/n}function cC(e){let t=w.useRef(e);return cb(()=>{t.current=e}),t}function c_(e,t,n){let r=\"inline-start\"===e||\"inline-end\"===e;return({top:\"top\",right:r?n?\"inline-start\":\"inline-end\":\"right\",bottom:\"bottom\",left:r?n?\"inline-end\":\"inline-start\":\"left\"})[t]}function ck(e,t,n){let{rects:r,placement:o}=e;return{side:c_(t,i4(o),n),align:i5(o)||\"center\",anchor:{width:r.reference.width,height:r.reference.height},positioner:{width:r.floating.width,height:r.floating.height}}}function cE(e){var t,n,r,o,a;let i,l,s,c,u,d,f,p,h,m,g,y,v,{anchor:b,positionMethod:A=\"absolute\",side:x=\"bottom\",sideOffset:C=0,align:_=\"center\",alignOffset:k=0,collisionBoundary:E,collisionPadding:j=5,sticky:S=!1,arrowPadding:O=5,trackAnchor:B=!0,keepMounted:P=!1,floatingRootContext:I,mounted:T,collisionAvoidance:z,shiftCrossAxis:D=!1,nodeId:L,adaptiveOrigin:N}=e,R=z.side||\"flip\",M=z.align||\"flip\",Z=z.fallbackAxisSide||\"end\",U=\"function\"==typeof b?b:void 0,F=ah(U),q=U?F:b,H=a2(b),V=\"rtl\"===lj(),$={top:\"top\",right:\"right\",bottom:\"bottom\",left:\"left\",\"inline-end\":V?\"left\":\"right\",\"inline-start\":V?\"right\":\"left\"}[x],W=\"center\"===_?$:`${$}-${_}`,Y={boundary:\"clipping-ancestors\"===E?\"clippingAncestors\":E,padding:j},K=w.useRef(null),X=a2(C),G=a2(k),Q=\"function\"!=typeof C?C:0,J=[(i=e=>{let t=ck(e,x,V),n=\"function\"==typeof X.current?X.current(t):X.current,r=\"function\"==typeof G.current?G.current(t):G.current;return{mainAxis:n,crossAxis:r,alignmentAxis:r}},l=[Q,\"function\"!=typeof k?k:0,V,x],{...(void 0===(t=i)&&(t=0),{name:\"offset\",options:t,async fn(e){var n,r;let{x:o,y:a,placement:i,middlewareData:l}=e,s=await ce(e,t);return i===(null==(n=l.offset)?void 0:n.placement)&&null!=(r=l.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:i}}}}),options:[i,l]})],ee=\"none\"===M&&\"shift\"!==R,et=!ee&&(S||D||\"shift\"===R),en=\"none\"===R?null:{...{name:\"flip\",options:n=s={...Y,mainAxis:!D&&\"flip\"===R,crossAxis:\"flip\"===M&&\"alignment\",fallbackAxisSideDirection:Z},async fn(e){var t,r,o,a,i;let{placement:l,middlewareData:s,rects:c,initialPlacement:u,platform:d,elements:f}=e,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:g=\"bestFit\",fallbackAxisSideDirection:y=\"none\",flipAlignment:v=!0,...b}=i2(n,e);if(null!=(t=s.arrow)&&t.alignmentOffset)return{};let A=i4(l),x=i8(u),w=i4(u)===u,C=await (null==d.isRTL?void 0:d.isRTL(f.floating)),_=m||(w||!v?[lo(u)]:function(e){let t=lo(e);return[i7(e),t,i7(t)]}(u)),k=\"none\"!==y;!m&&k&&_.push(...function(e,t,n,r){let o=i5(e),a=function(e,t,n){switch(e){case\"top\":case\"bottom\":if(n)return t?lt:le;return t?le:lt;case\"left\":case\"right\":return t?ln:lr;default:return[]}}(i4(e),\"start\"===n,r);return o&&(a=a.map(e=>e+\"-\"+o),t&&(a=a.concat(a.map(i7)))),a}(u,v,y,C));let E=[u,..._],j=await s6(e,b),S=[],O=(null==(r=s.flip)?void 0:r.overflows)||[];if(p&&S.push(j[A]),h){let e=function(e,t,n){void 0===n&&(n=!1);let r=i5(e),o=i3(i8(e)),a=i6(o),i=\"x\"===o?r===(n?\"end\":\"start\")?\"right\":\"left\":\"start\"===r?\"bottom\":\"top\";return t.reference[a]>t.floating[a]&&(i=lo(i)),[i,lo(i)]}(l,c,C);S.push(j[e[0]],j[e[1]])}if(O=[...O,{placement:l,overflows:S}],!S.every(e=>e<=0)){let e=((null==(o=s.flip)?void 0:o.index)||0)+1,t=E[e];if(t&&(\"alignment\"!==h||x===i8(t)||O.every(e=>i8(e.placement)!==x||e.overflows[0]>0)))return{data:{index:e,overflows:O},reset:{placement:t}};let n=null==(a=O.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:a.placement;if(!n)switch(g){case\"bestFit\":{let e=null==(i=O.filter(e=>{if(k){let t=i8(e.placement);return t===x||\"y\"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:i[0];e&&(n=e);break}case\"initialPlacement\":n=u}if(l!==n)return{reset:{placement:n}}}return{}}},options:[s,c]},er=ee?null:(u=e=>{var t;let n,r,o=lS(e.elements.floating).documentElement;return{...Y,rootBoundary:D?{x:0,y:0,width:o.clientWidth,height:o.clientHeight}:void 0,mainAxis:\"none\"!==M,crossAxis:et,limiter:S||D?void 0:{...(void 0===(t=n=()=>{if(!K.current)return{};let{height:e}=K.current.getBoundingClientRect();return{offset:e/2+(\"number\"==typeof j?j:0)}})&&(t={}),{options:t,fn(e){let{x:n,y:r,placement:o,rects:a,middlewareData:i}=e,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=i2(t,e),u={x:n,y:r},d=i8(o),f=i3(d),p=u[f],h=u[d],m=i2(l,e),g=\"number\"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){let e=\"y\"===f?\"height\":\"width\",t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(c){var y,v;let e=\"y\"===f?\"width\":\"height\",t=s7.has(i4(o)),n=a.reference[d]-a.floating[e]+(t&&(null==(y=i.offset)?void 0:y[d])||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:(null==(v=i.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[f]:p,[d]:h}}}),options:[n,r]}}},d=[Y,S,D,j,M],{...(void 0===(r=u)&&(r={}),{name:\"shift\",options:r,async fn(e){let{x:t,y:n,placement:o}=e,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=i2(r,e),c={x:t,y:n},u=await s6(e,s),d=i8(i4(o)),f=i3(d),p=c[f],h=c[d];if(a){let e=\"y\"===f?\"top\":\"left\",t=\"y\"===f?\"bottom\":\"right\",n=p+u[e],r=p-u[t];p=iX(n,iK(p,r))}if(i){let e=\"y\"===d?\"top\":\"left\",t=\"y\"===d?\"bottom\":\"right\",n=h+u[e],r=h-u[t];h=iX(n,iK(h,r))}let m=l.fn({...e,[f]:p,[d]:h});return{...m,data:{x:m.x-t,y:m.y-n,enabled:{[f]:a,[d]:i}}}}}),options:[u,d]});\"shift\"===R||\"shift\"===M||\"center\"===_?J.push(er,en):J.push(en,er),J.push({...{name:\"size\",options:o=f={...Y,apply({elements:{floating:e},rects:{reference:t},availableWidth:n,availableHeight:r}){Object.entries({\"--available-width\":`${n}px`,\"--available-height\":`${r}px`,\"--anchor-width\":`${t.width}px`,\"--anchor-height\":`${t.height}px`}).forEach(([t,n])=>{e.style.setProperty(t,n)})}},async fn(e){var t,n;let r,a,{placement:i,rects:l,platform:s,elements:c}=e,{apply:u=()=>{},...d}=i2(o,e),f=await s6(e,d),p=i4(i),h=i5(i),m=\"y\"===i8(i),{width:g,height:y}=l.floating;\"top\"===p||\"bottom\"===p?(r=p,a=h===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?\"start\":\"end\")?\"left\":\"right\"):(a=p,r=\"end\"===h?\"top\":\"bottom\");let v=y-f.top-f.bottom,b=g-f.left-f.right,A=iK(y-f[r],v),x=iK(g-f[a],b),w=!e.middlewareData.shift,C=A,_=x;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(_=b),null!=(n=e.middlewareData.shift)&&n.enabled.y&&(C=v),w&&!h){let e=iX(f.left,0),t=iX(f.right,0),n=iX(f.top,0),r=iX(f.bottom,0);m?_=g-2*(0!==e||0!==t?e+t:iX(f.left,f.right)):C=y-2*(0!==n||0!==r?n+r:iX(f.top,f.bottom))}await u({...e,availableWidth:_,availableHeight:C});let k=await s.getDimensions(c.floating);return g!==k.width||y!==k.height?{reset:{rects:!0}}:{}}},options:[f,p]},(h=()=>({element:K.current||document.createElement(\"div\"),padding:O,offsetParent:\"floating\"}),m=[O],{...{name:\"arrow\",options:g=h,async fn(e){let{x:t,y:n,placement:r,rects:o,platform:a,elements:i,middlewareData:l}=e,{element:s,padding:c=0,offsetParent:u=\"real\"}=i2(g,e)||{};if(null==s)return{};let d=la(c),f={x:t,y:n},p=i3(i8(r)),h=i6(p),m=await a.getDimensions(s),y=\"y\"===p,v=y?\"clientHeight\":\"clientWidth\",b=o.reference[h]+o.reference[p]-f[p]-o.floating[h],A=f[p]-o.reference[p],x=\"real\"===u?await a.getOffsetParent?.(s):i.floating,w=i.floating[v]||o.floating[h];w&&await a.isElement?.(x)||(w=i.floating[v]||o.floating[h]);let C=w/2-m[h]/2-1,_=Math.min(d[y?\"top\":\"left\"],C),k=Math.min(d[y?\"bottom\":\"right\"],C),E=w-m[h]-k,j=w/2-m[h]/2+(b/2-A/2),S=iX(_,iK(j,E)),O=!l.arrow&&null!=i5(r)&&j!==S&&o.reference[h]/2-(j<_?_:k)-m[h]/2<0,B=O?j<_?j-_:j-E:0;return{[p]:f[p]+B,data:{[p]:S,centerOffset:j-S-B,...O&&{alignmentOffset:B}},reset:O}}},options:[h,m]}),{...(void 0===(a=y)&&(a={}),{name:\"hide\",options:a,async fn(e){let{rects:t}=e,{strategy:n=\"referenceHidden\",...r}=i2(a,e);switch(n){case\"referenceHidden\":{let n=s9(await s6(e,{...r,elementContext:\"reference\"}),t.reference);return{data:{referenceHiddenOffsets:n,referenceHidden:s8(n)}}}case\"escaped\":{let n=s9(await s6(e,{...r,altBoundary:!0}),t.floating);return{data:{escapedOffsets:n,escaped:s8(n)}}}default:return{}}}}),options:[y,v]},{name:\"transformOrigin\",fn(e){let{elements:t,middlewareData:n,placement:r,rects:o,y:a}=e,i=i4(r),l=i8(i),s=K.current,c=n.arrow?.x||0,u=n.arrow?.y||0,d=s?.clientWidth||0,f=s?.clientHeight||0,p=c+d/2,h=u+f/2,m=Math.abs(n.shift?.y||0),g=o.reference.height/2,y=m>(\"function\"==typeof C?C(ck(e,x,V)):C),v={top:`${p}px calc(100% + ${C}px)`,bottom:`${p}px ${-C}px`,left:`calc(100% + ${C}px) ${h}px`,right:`${-C}px ${h}px`}[i],b=`${p}px ${o.reference.y+g-a}px`;return t.floating.style.setProperty(\"--transform-origin\",et&&\"y\"===l&&y?b:v),{}}},N);let eo=I;!T&&I&&(eo={...I,elements:{reference:null,floating:null,domReference:null}});let ea=w.useMemo(()=>({elementResize:B&&\"undefined\"!=typeof ResizeObserver,layoutShift:B&&\"undefined\"!=typeof IntersectionObserver}),[B]),{refs:ei,elements:el,x:es,y:ec,middlewareData:eu,update:ed,placement:ef,context:ep,isPositioned:em,floatingStyles:eg}=function(e={}){let{nodeId:t}=e,n=aB({...e,elements:{reference:null,floating:null,...e.elements}}),r=e.rootContext||n,o=r.elements,[a,i]=w.useState(null),[l,s]=w.useState(null),c=o?.domReference||a,u=w.useRef(null),d=aj();aC(()=>{c&&(u.current=c)},[c]);let f=function(e){void 0===e&&(e={});let{placement:t=\"bottom\",strategy:n=\"absolute\",middleware:r=[],platform:o,elements:{reference:a,floating:i}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[u,d]=w.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=w.useState(r);cA(f,r)||p(r);let[h,m]=w.useState(null),[g,y]=w.useState(null),v=w.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),b=w.useCallback(e=>{e!==_.current&&(_.current=e,y(e))},[]),A=a||h,x=i||g,C=w.useRef(null),_=w.useRef(null),k=w.useRef(u),E=null!=s,j=cC(s),S=cC(o),O=cC(c),B=w.useCallback(()=>{if(!C.current||!_.current)return;let e={placement:t,strategy:n,middleware:f};S.current&&(e.platform=S.current),((e,t,n)=>{let r=new Map,o={platform:cm,...n},a={...o.platform,_c:r};return s3(e,t,{...o,platform:a})})(C.current,_.current,e).then(e=>{let t={...e,isPositioned:!1!==O.current};P.current&&!cA(k.current,t)&&(k.current=t,eh.flushSync(()=>{d(t)}))})},[f,t,n,S,O]);cb(()=>{!1===c&&k.current.isPositioned&&(k.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let P=w.useRef(!1);cb(()=>(P.current=!0,()=>{P.current=!1}),[]),cb(()=>{if(A&&(C.current=A),x&&(_.current=x),A&&x){if(j.current)return j.current(A,x,B);B()}},[A,x,B,j,E]);let I=w.useMemo(()=>({reference:C,floating:_,setReference:v,setFloating:b}),[v,b]),T=w.useMemo(()=>({reference:A,floating:x}),[A,x]),z=w.useMemo(()=>{let e={position:n,left:0,top:0};if(!T.floating)return e;let t=cw(T.floating,u.x),r=cw(T.floating,u.y);return l?{...e,transform:\"translate(\"+t+\"px, \"+r+\"px)\",...cx(T.floating)>=1.5&&{willChange:\"transform\"}}:{position:n,left:t,top:r}},[n,l,T.floating,u.x,u.y]);return w.useMemo(()=>({...u,update:B,refs:I,elements:T,floatingStyles:z}),[u,B,I,T,z])}({...e,elements:{...o,...l&&{reference:l}}}),p=w.useCallback(e=>{let t=aL(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),getClientRects:()=>e.getClientRects(),contextElement:e}:e;s(t),f.refs.setReference(t)},[f.refs]),h=w.useCallback(e=>{(aL(e)||null===e)&&(u.current=e,i(e)),(aL(f.refs.reference.current)||null===f.refs.reference.current||null!==e&&!aL(e))&&f.refs.setReference(e)},[f.refs]),m=w.useMemo(()=>({...f.refs,setReference:h,setPositionReference:p,domReference:u}),[f.refs,h,p]),g=w.useMemo(()=>({...f.elements,domReference:c}),[f.elements,c]),y=w.useMemo(()=>({...f,...r,refs:m,elements:g,nodeId:t}),[f,m,g,t,r]);return aC(()=>{r.dataRef.current.floatingContext=y;let e=d?.nodesRef.current.find(e=>e.id===t);e&&(e.context=y)}),w.useMemo(()=>({...f,context:y,refs:m,elements:g}),[f,m,g,y])}({rootContext:eo,placement:W,middleware:J,strategy:A,whileElementsMounted:P?void 0:(...e)=>cy(...e,ea),nodeId:L}),{sideX:ey,sideY:ev}=eu.adaptiveOrigin||{},eb=w.useMemo(()=>N?{position:A,[ey]:`${es}px`,[ev]:`${ec}px`}:eg,[N,ey,ev,A,es,ec,eg]),eA=w.useRef(null);aC(()=>{if(!T)return;let e=H.current,t=\"function\"==typeof e?e():e,n=(cj(t)?t.current:t)||null;n!==eA.current&&(ei.setPositionReference(n),eA.current=n)},[T,ei,q,H]),w.useEffect(()=>{if(!T)return;let e=H.current;\"function\"!=typeof e&&cj(e)&&e.current!==eA.current&&(ei.setPositionReference(e.current),eA.current=e.current)},[T,ei,q,H]),w.useEffect(()=>{if(P&&T&&el.domReference&&el.floating)return cy(el.domReference,el.floating,ed,ea)},[P,T,el,ed,ea]);let ex=c_(x,i4(ef),V),ew=i5(ef)||\"center\",eC=!!eu.hide?.referenceHidden,e_=w.useMemo(()=>({position:\"absolute\",top:eu.arrow?.y,left:eu.arrow?.x}),[eu.arrow]),ek=eu.arrow?.centerOffset!==0;return w.useMemo(()=>({positionerStyles:eb,arrowStyles:e_,arrowRef:K,arrowUncentered:ek,side:ex,align:ew,anchorHidden:eC,refs:ei,context:ep,isPositioned:em,update:ed}),[eb,e_,K,ek,ex,ew,eC,ei,ep,em,ed])}function cj(e){return null!=e&&\"current\"in e}function cS(e){let{children:t,elementsRef:n,labelsRef:r,onMapChange:o}=e,a=w.useRef(0),i=al(cB).current,l=al(cO).current,[s,c]=w.useState(0),u=w.useRef(s),d=ah((e,t)=>{l.set(e,t??null),u.current+=1,c(u.current)}),f=ah(e=>{l.delete(e),u.current+=1,c(u.current)}),p=w.useMemo(()=>{let e=new Map;return Array.from(l.keys()).sort(cP).forEach((t,n)=>{let r=l.get(t)??{};e.set(t,{...r,index:n})}),e},[l,s]);aC(()=>{u.current===s&&(n.current.length!==p.size&&(n.current.length=p.size),r&&r.current.length!==p.size&&(r.current.length=p.size)),o?.(p)},[o,p,n,r,s,u]);let h=ah(e=>(i.add(e),()=>{i.delete(e)}));aC(()=>{i.forEach(e=>e(p))},[i,p]);let m=w.useMemo(()=>({register:d,unregister:f,subscribeMapChange:h,elementsRef:n,labelsRef:r,nextIndexRef:a}),[d,f,h,n,r,a]);return(0,A.jsx)(sc.Provider,{value:m,children:t})}function cO(){return new Map}function cB(){return new Set}function cP(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}let cI=w.forwardRef(function(e,t){let n,{cutout:r,...o}=e;if(r){let e=r?.getBoundingClientRect();n=`polygon(\n 0% 0%,\n 100% 0%,\n 100% 100%,\n 0% 100%,\n 0% 0%,\n ${e.left}px ${e.top}px,\n ${e.left}px ${e.bottom}px,\n ${e.right}px ${e.bottom}px,\n ${e.right}px ${e.top}px,\n ${e.left}px ${e.top}px\n )`}return(0,A.jsx)(\"div\",{ref:t,role:\"presentation\",\"data-base-ui-inert\":\"\",...o,style:{position:\"fixed\",inset:0,userSelect:\"none\",WebkitUserSelect:\"none\",clipPath:n}})}),cT=w.forwardRef(function(e,t){var n;let{anchor:r,positionMethod:o=\"absolute\",className:a,render:i,side:l,align:s,sideOffset:c=0,alignOffset:u=0,collisionBoundary:d=\"clipping-ancestors\",collisionPadding:f=5,arrowPadding:p=5,sticky:h=!1,trackAnchor:m=!0,collisionAvoidance:g=iF,...y}=e,{open:v,setOpen:b,floatingRootContext:x,setPositionerElement:C,itemDomElements:_,itemLabels:k,mounted:E,modal:j,lastOpenChangeReason:S,parent:O,setHoverEnabled:B,triggerElement:P}=lw(),I=function(){let e=w.useContext(s1);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),T=function(e){let t=ax(),n=aj(),r=aE(),o=r;return aC(()=>{if(!t)return;let e={id:t,parentId:o};return n?.addNode(e),()=>{n?.removeNode(e)}},[n,t,o]),t}(),z=aE(),D=lN(!0),L=r,N=c,R=u,M=s;\"context-menu\"===O.type&&(L=O.context?.anchor??r,M=e.align??\"start\",R=e.alignOffset??2,N=e.sideOffset??-5);let Z=l,U=M;\"menu\"===O.type?(Z=Z??\"inline-end\",U=U??\"start\"):\"menubar\"===O.type&&(Z=Z??\"bottom\",U=U??\"start\");let F=\"context-menu\"===O.type,q=cE({anchor:L,floatingRootContext:x,positionMethod:D?\"fixed\":o,mounted:E,side:Z,sideOffset:N,align:U,alignOffset:R,arrowPadding:F?0:p,collisionBoundary:d,collisionPadding:f,sticky:h,nodeId:T,keepMounted:I,trackAnchor:m,collisionAvoidance:g,shiftCrossAxis:F}),{events:H}=aj(),V=w.useMemo(()=>{let e={};return v||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!E,style:{...q.positionerStyles,...e}}},[v,E,q.positionerStyles]);w.useEffect(()=>{function e(e){e.open?(e.parentNodeId===T&&B(!1),e.nodeId!==T&&e.parentNodeId===z&&b(!1,void 0,\"sibling-open\")):e.parentNodeId===T&&B(!0)}return H.on(\"openchange\",e),()=>{H.off(\"openchange\",e)}},[H,T,z,b,B]),w.useEffect(()=>{H.emit(\"openchange\",{open:v,nodeId:T,parentNodeId:z})},[H,v,T,z]);let $=w.useMemo(()=>({open:v,side:q.side,align:q.align,anchorHidden:q.anchorHidden,nested:\"menu\"===O.type}),[v,q.side,q.align,q.anchorHidden,O.type]),W=w.useMemo(()=>({side:q.side,align:q.align,arrowRef:q.arrowRef,arrowUncentered:q.arrowUncentered,arrowStyles:q.arrowStyles,floatingContext:q.context}),[q.side,q.align,q.arrowRef,q.arrowUncentered,q.arrowStyles,q.context]),Y=so(\"div\",e,{state:$,customStyleHookMapping:sn,ref:[t,C],props:{...V,...y}}),K=E&&\"menu\"!==O.type&&(\"menubar\"!==O.type&&j&&\"trigger-hover\"!==S||\"menubar\"===O.type&&O.context.modal),X=null;return\"menubar\"===O.type?X=O.context.contentElement:void 0===O.type&&(X=P),(0,A.jsxs)(s4.Provider,{value:W,children:[K&&(0,A.jsx)(cI,{ref:\"context-menu\"===O.type||\"nested-context-menu\"===O.type?O.context.internalBackdropRef:null,inert:(n=!v,sr>=19?n:n?\"true\":void 0),cutout:X}),(0,A.jsx)(aS,{id:T,children:(0,A.jsx)(cS,{elementsRef:_,labelsRef:k,children:Y})})]})}),cz={inert:new WeakMap,\"aria-hidden\":new WeakMap,none:new WeakMap};function cD(e){return\"inert\"===e?cz.inert:\"aria-hidden\"===e?cz[\"aria-hidden\"]:cz.none}let cL=new WeakSet,cN={},cR=0,cM=e=>e&&(e.host||cM(e.parentNode)),cZ=[];function cU(){cZ=cZ.filter(e=>e.isConnected)}function cF(){return cU(),cZ[cZ.length-1]}function cq(e,t){if(!t.current.includes(\"floating\")&&!e.getAttribute(\"role\")?.includes(\"dialog\"))return;let n=sq(),r=sU(e,n).filter(e=>{let t=e.getAttribute(\"data-tabindex\")||\"\";return sF(e,n)||e.hasAttribute(\"data-tabindex\")&&!t.startsWith(\"-\")}),o=e.getAttribute(\"tabindex\");t.current.includes(\"floating\")||0===r.length?\"0\"!==o&&e.setAttribute(\"tabindex\",\"0\"):(\"-1\"!==o||e.hasAttribute(\"data-tabindex\")&&\"-1\"!==e.getAttribute(\"data-tabindex\"))&&(e.setAttribute(\"tabindex\",\"-1\"),e.setAttribute(\"data-tabindex\",\"-1\"))}function cH(e){let{context:t,children:n,disabled:r=!1,order:o=[\"content\"],initialFocus:a=0,returnFocus:i=!0,restoreFocus:l=!1,modal:s=!0,closeOnFocusOut:c=!0,getInsideElements:u=()=>[]}=e,{open:d,onOpenChange:f,events:p,dataRef:h,elements:{domReference:m,floating:g}}=t,y=ah(()=>h.current.floatingContext?.nodeId),v=ah(u),b=\"number\"==typeof a&&a<0,x=iC(m)&&b,C=a2(o),_=a2(a),k=a2(i),E=aj(),j=sG(),S=w.useRef(null),O=w.useRef(null),B=w.useRef(!1),P=w.useRef(!1),I=w.useRef(-1),T=ad(),z=null!=j,D=i_(g),L=ah((e=D)=>e?sZ(e,sq()):[]),N=ah(e=>{let t=L(e);return C.current.map(()=>t).filter(Boolean).flat()});w.useEffect(()=>{if(r||!s)return;function e(e){\"Tab\"===e.key&&iv(D,iy(ix(D)))&&0===L().length&&!x&&ia(e)}let t=ix(D);return t.addEventListener(\"keydown\",e),()=>{t.removeEventListener(\"keydown\",e)}},[r,m,D,s,C,x,L,N]),w.useEffect(()=>{if(!r&&g)return g.addEventListener(\"focusin\",e),()=>{g.removeEventListener(\"focusin\",e)};function e(e){let t=ib(e),n=L().indexOf(t);-1!==n&&(I.current=n)}},[r,g,L]),w.useEffect(()=>{if(r||!c)return;function e(){P.current=!0}function t(e){let t=e.relatedTarget,n=e.currentTarget,r=ib(e);queueMicrotask(()=>{let o=y(),a=!(iv(m,t)||iv(g,t)||iv(t,g)||iv(j?.portalNode,t)||t?.hasAttribute(ik(\"focus-guard\"))||E&&(iB(E.nodesRef.current,o).find(e=>iv(e.context?.elements.floating,t)||iv(e.context?.elements.domReference,t))||iP(E.nodesRef.current,o).find(e=>[e.context?.elements.floating,i_(e.context?.elements.floating)].includes(t)||e.context?.elements.domReference===t)));if(n===m&&D&&cq(D,C),l&&n!==m&&!r?.isConnected&&iy(ix(D))===ix(D).body){aN(D)&&D.focus();let e=I.current,t=L(),n=t[e]||t[t.length-1]||D;aN(n)&&n.focus()}if(h.current.insideReactTree){h.current.insideReactTree=!1;return}if(P.current){P.current=!1;return}(x||!s)&&t&&a&&t!==cF()&&(B.current=!0,f(!1,e,\"focus-out\"))})}let n=!!(!E&&j);function o(){h.current.insideReactTree=!0,T.start(0,()=>{h.current.insideReactTree=!1})}if(g&&aN(m))return m.addEventListener(\"focusout\",t),m.addEventListener(\"pointerdown\",e),g.addEventListener(\"focusout\",t),n&&g.addEventListener(\"focusout\",o,!0),()=>{m.removeEventListener(\"focusout\",t),m.removeEventListener(\"pointerdown\",e),g.removeEventListener(\"focusout\",t),n&&g.removeEventListener(\"focusout\",o,!0)}},[r,m,g,D,s,E,j,f,c,l,L,x,y,C,h,T]);let R=w.useRef(null),M=w.useRef(null),Z=lX(R,j?.beforeInsideRef),U=lX(M,j?.afterInsideRef);w.useEffect(()=>{if(r||!g)return;let e=Array.from(j?.portalNode?.querySelectorAll(`[${ik(\"portal\")}]`)||[]),t=E?iP(E.nodesRef.current,y()):[],n=function(e,t=!1,n=!1){let r=ix(e[0]).body;return function(e,t,n,r){let o,a=\"data-base-ui-inert\",i=r?\"inert\":n?\"aria-hidden\":null,l=(o=t,e.map(e=>{if(o.contains(e))return e;let t=cM(e);return o.contains(t)?t:null}).filter(e=>null!=e)),s=new Set,c=new Set(l),u=[];cN[a]||(cN[a]=new WeakMap);let d=cN[a];return l.forEach(function e(t){!(!t||s.has(t))&&(s.add(t),t.parentNode&&e(t.parentNode))}),function e(t){!t||c.has(t)||[].forEach.call(t.children,t=>{if(\"script\"!==aI(t))if(s.has(t))e(t);else{let e=i?t.getAttribute(i):null,n=null!==e&&\"false\"!==e,r=cD(i),o=(r.get(t)||0)+1,l=(d.get(t)||0)+1;r.set(t,o),d.set(t,l),u.push(t),1===o&&n&&cL.add(t),1===l&&t.setAttribute(a,\"\"),!n&&i&&t.setAttribute(i,\"inert\"===i?\"\":\"true\")}})}(t),s.clear(),cR+=1,()=>{u.forEach(e=>{let t=cD(i),n=(t.get(e)||0)-1,r=(d.get(e)||0)-1;t.set(e,n),d.set(e,r),n||(!cL.has(e)&&i&&e.removeAttribute(i),cL.delete(e)),r||e.removeAttribute(a)}),(cR-=1)||(cz.inert=new WeakMap,cz[\"aria-hidden\"]=new WeakMap,cz.none=new WeakMap,cL=new WeakSet,cN={})}}(e.concat(Array.from(r.querySelectorAll(\"[aria-live]\"))),r,t,n)}([g,t.find(e=>iC(e.context?.elements.domReference||null))?.context?.elements.domReference,...e,...v(),S.current,O.current,R.current,M.current,j?.beforeOutsideRef.current,j?.afterOutsideRef.current,x?m:null].filter(e=>null!=e),s||x);return()=>{n()}},[r,m,g,s,C,j,x,E,y,v]),aC(()=>{if(r||!aN(D))return;let e=iy(ix(D));queueMicrotask(()=>{let t=N(D),n=_.current,r=(\"number\"==typeof n?t[n]:n.current)||D,o=iv(D,e);b||o||!d||lh(r,{preventScroll:r===D})})},[r,d,D,b,N,_]),aC(()=>{var e;if(r||!D)return;let t=ix(D);function n({reason:e,event:t,nested:n}){if([\"hover\",\"safe-polygon\"].includes(e)&&\"mouseleave\"===t.type&&(B.current=!0),\"outside-press\"===e)if(n)B.current=!1;else if(ii(t)||il(t))B.current=!1;else{let e=!1;document.createElement(\"div\").focus({get preventScroll(){return e=!0,!1}}),e?B.current=!1:B.current=!0}}e=iy(t),cU(),e&&\"body\"!==aI(e)&&(cZ.push(e),cZ.length>20&&(cZ=cZ.slice(-20))),p.on(\"openchange\",n);let o=t.createElement(\"span\");return o.setAttribute(\"tabindex\",\"-1\"),o.setAttribute(\"aria-hidden\",\"true\"),Object.assign(o.style,sh),z&&m&&m.insertAdjacentElement(\"afterend\",o),()=>{p.off(\"openchange\",n);let e=iy(t),r=iv(g,e)||E&&iB(E.nodesRef.current,y(),!1).some(t=>iv(t.context?.elements.floating,e)),a=function(){if(\"boolean\"==typeof k.current){let e=m||cF();return e&&e.isConnected?e:o}return k.current.current||o}();queueMicrotask(()=>{let n=function(e){let t=sq();return sF(e,t)?e:sZ(e,t)[0]||e}(a);k.current&&!B.current&&aN(n)&&(n===e||e===t.body||r)&&n.focus({preventScroll:!0}),o.remove()})}},[r,g,D,k,h,p,E,z,m,y]),w.useEffect(()=>{queueMicrotask(()=>{B.current=!1})},[r]),w.useEffect(()=>{if(r||!d)return;function e(e){let t=ib(e);t?.closest(\"[data-base-ui-click-trigger]\")&&(P.current=!0)}let t=ix(D);return t.addEventListener(\"pointerdown\",e,!0),()=>{t.removeEventListener(\"pointerdown\",e,!0)}},[r,d,D]),aC(()=>{if(!r&&j)return j.setFocusManagerState({modal:s,closeOnFocusOut:c,open:d,onOpenChange:f,domReference:m}),()=>{j.setFocusManagerState(null)}},[r,j,s,d,f,c,m]),aC(()=>{if(!r&&D)return cq(D,C),()=>{queueMicrotask(cU)}},[r,D,C]);let F=!r&&(!s||!x)&&(z||s);return(0,A.jsxs)(w.Fragment,{children:[F&&(0,A.jsx)(sm,{\"data-type\":\"inside\",ref:Z,onFocus:e=>{if(s){let e=N();lh(e[e.length-1])}else if(j?.preserveTabOrder&&j.portalNode)if(B.current=!1,sW(e,j.portalNode)){let e=sV(m);e?.focus()}else j.beforeOutsideRef.current?.focus()}}),n,F&&(0,A.jsx)(sm,{\"data-type\":\"inside\",ref:U,onFocus:e=>{if(s)lh(N()[0]);else if(j?.preserveTabOrder&&j.portalNode)if(c&&(B.current=!0),sW(e,j.portalNode)){let e=s$(m);e?.focus()}else j.afterOutsideRef.current?.focus()}})]})}let cV={...sn,...l2},c$=w.forwardRef(function(e,t){let{render:n,className:r,finalFocus:o,...a}=e,{open:i,setOpen:l,popupRef:s,transitionStatus:c,popupProps:u,mounted:d,instantType:f,onOpenChangeComplete:p,parent:h,lastOpenChangeReason:m,rootId:g}=lw(),{side:y,align:v,floatingContext:b}=function(){let e=w.useContext(s4);if(void 0===e)throw Error(\"Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within .\");return e}();lk({open:i,ref:s,onComplete(){i&&p?.(!0)}});let{events:x}=aj();w.useEffect(()=>{function e(e){l(!1,e.domEvent,e.reason)}return x.on(\"close\",e),()=>{x.off(\"close\",e)}},[x,l]);let C=so(\"div\",e,{state:w.useMemo(()=>({transitionStatus:c,side:y,align:v,open:i,nested:\"menu\"===h.type,instant:f}),[c,y,v,i,h.type,f]),ref:[t,s],customStyleHookMapping:cV,props:[u,\"starting\"===c?iM:iZ,a,{\"data-rootownerid\":g}]}),_=void 0===h.type||\"context-menu\"===h.type;return\"menubar\"===h.type&&\"outside-press\"!==m&&(_=!0),(0,A.jsx)(cH,{context:b,modal:!1,disabled:!d,returnFocus:o||_,initialFocus:\"menu\"===h.type?-1:0,restoreFocus:!0,children:C})}),cW=w.createContext(void 0),cY=w.forwardRef(function(e,t){let{render:n,className:r,...o}=e,[a,i]=w.useState(void 0),l=w.useMemo(()=>({setLabelId:i}),[i]),s=so(\"div\",e,{ref:t,props:{role:\"group\",\"aria-labelledby\":a,...o}});return(0,A.jsx)(cW.Provider,{value:l,children:s})});function cK(e){return ax(e,\"base-ui\")}let cX=w.forwardRef(function(e,t){let{className:n,render:r,id:o,...a}=e,i=cK(o),{setLabelId:l}=function(){let e=w.useContext(cW);if(void 0===e)throw Error(\"Base UI: MenuGroupRootContext is missing. Menu group parts must be used within .\");return e}();return aC(()=>(l(i),()=>{l(void 0)}),[l,i]),so(\"div\",e,{ref:t,props:{id:i,role:\"presentation\",...a}})}),cG={type:\"regular-item\"},cQ=w.memo(w.forwardRef(function(e,t){let{className:n,closeOnClick:r=!0,disabled:o=!1,highlighted:a,id:i,menuEvents:l,itemProps:s,render:c,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,...p}=e,{getItemProps:h,itemRef:m}=function(e){let{closeOnClick:t,disabled:n=!1,highlighted:r,id:o,menuEvents:a,allowMouseUpTriggerRef:i,typingRef:l,nativeButton:s,itemMetadata:c}=e,u=w.useRef(null),{getButtonProps:d,buttonRef:f}=ss({disabled:n,focusableWhenDisabled:!0,native:s}),p=w.useCallback(e=>lU({id:o,role:\"menuitem\",tabIndex:r?0:-1,onMouseEnter(){\"submenu-trigger\"===c.type&&c.setActive()},onKeyUp:e=>{\" \"===e.key&&l.current&&e.preventBaseUIHandler()},onClick:e=>{t&&a.emit(\"close\",{domEvent:e,reason:\"item-press\"})},onMouseUp:()=>{u.current&&i.current&&\"regular-item\"===c.type&&u.current.click()}},e,d),[o,r,d,l,t,a,i,c]),h=lX(u,f);return w.useMemo(()=>({getItemProps:p,itemRef:h}),[p,h])}({closeOnClick:r,disabled:o,highlighted:a,id:i,menuEvents:l,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,itemMetadata:cG});return so(\"div\",e,{state:w.useMemo(()=>({disabled:o,highlighted:a}),[o,a]),ref:[m,t],props:[s,p,h]})})),cJ=w.forwardRef(function(e,t){let{id:n,label:r,nativeButton:o=!1,...a}=e,i=w.useRef(null),l=sd({label:r}),s=lX(t,l.ref,i),{itemProps:c,activeIndex:u,allowMouseUpTriggerRef:d,typingRef:f}=lw(),p=cK(n),h=l.index===u,{events:m}=aj();return(0,A.jsx)(cQ,{...a,id:p,ref:s,highlighted:h,menuEvents:m,itemProps:c,allowMouseUpTriggerRef:d,typingRef:f,nativeButton:o})});var c0=\"__next_builtin__\";function c1(e){return e.replace(new RegExp(\"^\".concat(c0)),\"\").replace(new RegExp(\"\".concat(\"@boundary\",\"$\")),\"\")}var c2=\"boundary:\";function c4(e){return e.startsWith(c2)}function c5(e){return e.replace(c2,\"\")}function c3(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n.\");return e}let uc=w.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,setTriggerElement:i,triggerProps:l}=us();return so(\"button\",e,{state:w.useMemo(()=>({open:a}),[a]),ref:[t,i],props:[l,o],customStyleHookMapping:se})}),uu=w.createContext(void 0);function ud(){let e=w.useContext(uu);if(void 0===e)throw Error(\"Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within .\");return e}let uf=w.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,arrowRef:i,side:l,align:s,arrowUncentered:c,arrowStyles:u}=ud();return so(\"div\",e,{state:w.useMemo(()=>({open:a,side:l,align:s,uncentered:c}),[a,l,s,c]),ref:[t,i],props:[{style:u,\"aria-hidden\":!0},o],customStyleHookMapping:sn})}),up={...sn,...l2},uh=w.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,instantType:i,transitionStatus:l,popupProps:s,popupRef:c,onOpenChangeComplete:u}=us(),{side:d,align:f}=ud();return lk({open:a,ref:c,onComplete(){a&&u?.(!0)}}),so(\"div\",e,{state:w.useMemo(()=>({open:a,side:d,align:f,instant:i,transitionStatus:l}),[a,d,f,i,l]),ref:[t,c],props:[s,\"starting\"===l?iM:iZ,o],customStyleHookMapping:up})}),um=w.createContext(void 0),ug=w.forwardRef(function(e,t){let{render:n,className:r,anchor:o,positionMethod:a=\"absolute\",side:i=\"top\",align:l=\"center\",sideOffset:s=0,alignOffset:c=0,collisionBoundary:u=\"clipping-ancestors\",collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,trackAnchor:h=!0,collisionAvoidance:m=iq,...g}=e,{open:y,setPositionerElement:v,mounted:b,floatingRootContext:x,trackCursorAxis:C,hoverable:_}=us(),k=cE({anchor:o,positionMethod:a,floatingRootContext:x,mounted:b,side:i,sideOffset:s,align:l,alignOffset:c,collisionBoundary:u,collisionPadding:d,sticky:p,arrowPadding:f,trackAnchor:h,keepMounted:function(){let e=w.useContext(um);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),collisionAvoidance:m}),E=w.useMemo(()=>{let e={};return y&&\"both\"!==C&&_||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!b,style:{...k.positionerStyles,...e}}},[y,C,_,b,k.positionerStyles]),j=w.useMemo(()=>({props:E,...k}),[E,k]),S=w.useMemo(()=>({open:y,side:j.side,align:j.align,anchorHidden:j.anchorHidden}),[y,j.side,j.align,j.anchorHidden]),O=w.useMemo(()=>({...S,arrowRef:j.arrowRef,arrowStyles:j.arrowStyles,arrowUncentered:j.arrowUncentered}),[S,j.arrowRef,j.arrowStyles,j.arrowUncentered]),B=so(\"div\",e,{state:S,props:[j.props,g],ref:[t,v],customStyleHookMapping:sn});return(0,A.jsx)(uu.Provider,{value:O,children:B})});function uy(e){let t=sJ({root:e.root});return t&&eh.createPortal(e.children,t)}function uv(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=us();return o||n?(0,A.jsx)(um.Provider,{value:n,children:(0,A.jsx)(uy,{root:r,children:t})}):null}let ub=w.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new au,currentIdRef:{current:null},currentContextRef:{current:null}});function uA(e){let{children:t,delay:n,timeoutMs:r=0}=e,o=w.useRef(n),a=w.useRef(n),i=w.useRef(null),l=w.useRef(null),s=ad();return(0,A.jsx)(ub.Provider,{value:w.useMemo(()=>({hasProvider:!0,delayRef:o,initialDelayRef:a,currentIdRef:i,timeoutMs:r,currentContextRef:l,timeout:s}),[r,s]),children:t})}let ux=w.createContext(void 0),uw=function(e){let{delay:t,closeDelay:n,timeout:r=400}=e,o=w.useMemo(()=>({delay:t,closeDelay:n}),[t,n]),a=w.useMemo(()=>({open:t,close:n}),[t,n]);return(0,A.jsx)(ux.Provider,{value:o,children:(0,A.jsx)(uA,{delay:a,timeoutMs:r,children:e.children})})};function uC(e){return null!=e&&null!=e.clientX}function u_(e){let{disabled:t=!1,defaultOpen:n=!1,onOpenChange:r,open:o,delay:a,closeDelay:i,hoverable:l=!0,trackCursorAxis:s=\"none\",actionsRef:c,onOpenChangeComplete:u}=e,d=a??600,f=i??0,[p,h]=w.useState(null),[m,g]=w.useState(null),[y,v]=w.useState(),b=w.useRef(null),[x,C]=ay({controlled:o,default:n,name:\"Tooltip\",state:\"open\"}),_=!t&&x;function k(e,t,n){let o=\"trigger-hover\"===n,a=e&&\"trigger-focus\"===n,i=!e&&(\"trigger-press\"===n||\"escape-key\"===n);function l(){r?.(e,t,n),C(e)}o?eh.flushSync(l):l(),a||i?v(a?\"focus\":\"dismiss\"):\"trigger-hover\"===n&&v(void 0)}let E=ah(k);x&&t&&k(!1,void 0,\"disabled\");let{mounted:j,setMounted:S,transitionStatus:O}=l_(_),B=ah(()=>{S(!1),u?.(!1)});lk({enabled:!c,open:_,ref:b,onComplete(){_||B()}}),w.useImperativeHandle(c,()=>({unmount:B}),[B]);let P=aB({elements:{reference:p,floating:m},open:_,onOpenChange(e,t,n){E(e,t,lD(n))}}),I=w.useContext(ux),{delayRef:T,isInstantPhase:z,hasProvider:D}=function(e,t={}){let{open:n,onOpenChange:r,floatingId:o}=e,{enabled:a=!0}=t,{currentIdRef:i,delayRef:l,timeoutMs:s,initialDelayRef:c,currentContextRef:u,hasProvider:d,timeout:f}=w.useContext(ub),[p,h]=w.useState(!1);return aC(()=>{function e(){h(!1),u.current?.setIsInstantPhase(!1),i.current=null,u.current=null,l.current=c.current}if(a&&i.current&&!n&&i.current===o){if(h(!1),s)return f.start(s,e),()=>{f.clear()};e()}},[a,n,o,i,l,s,c,u,f]),aC(()=>{if(!a||!n)return;let e=u.current,t=i.current;u.current={onOpenChange:r,setIsInstantPhase:h},i.current=o,l.current={open:0,close:ij(c.current,\"close\")},null!==t&&t!==o?(f.clear(),h(!0),e?.setIsInstantPhase(!0),e?.onOpenChange(!1)):(h(!1),e?.setIsInstantPhase(!1))},[a,n,o,r,i,l,s,c,u,f]),aC(()=>()=>{u.current=null},[u]),w.useMemo(()=>({hasProvider:d,delayRef:l,isInstantPhase:p}),[d,l,p])}(P),L=z?\"delay\":y,N=iO(P,{enabled:!t,mouseOnly:!0,move:!1,handleClose:l&&\"both\"!==s?iT():null,restMs(){let e=I?.delay,t=\"object\"==typeof T.current?T.current.open:void 0,n=d;return D&&(n=0!==t?a??e??d:0),n},delay(){let e=\"object\"==typeof T.current?T.current.close:void 0,t=f;return null==i&&D&&(t=e),{close:t}}}),R=iD(P,{enabled:!t}),M=i$(P,{enabled:!t,referencePress:!0}),{getReferenceProps:Z,getFloatingProps:U}=lv([N,R,M,function(e,t={}){let{open:n,dataRef:r,elements:{floating:o,domReference:a},refs:i}=e,{enabled:l=!0,axis:s=\"both\",x:c=null,y:u=null}=t,d=w.useRef(!1),f=w.useRef(null),[p,h]=w.useState(),[m,g]=w.useState([]),y=ah((e,t)=>{if(!d.current&&(!r.current.openEvent||uC(r.current.openEvent))){var n,o;let l,c,u;i.setPositionReference((n=a,o={x:e,y:t,axis:s,dataRef:r,pointerType:p},l=null,c=null,u=!1,{contextElement:n||void 0,getBoundingClientRect(){let e=n?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},t=\"x\"===o.axis||\"both\"===o.axis,r=\"y\"===o.axis||\"both\"===o.axis,a=[\"mouseenter\",\"mousemove\"].includes(o.dataRef.current.openEvent?.type||\"\")&&\"touch\"!==o.pointerType,i=e.width,s=e.height,d=e.x,f=e.y;return null==l&&o.x&&t&&(l=e.x-o.x),null==c&&o.y&&r&&(c=e.y-o.y),d-=l||0,f-=c||0,i=0,s=0,!u||a?(i=\"y\"===o.axis?e.width:0,s=\"x\"===o.axis?e.height:0,d=t&&null!=o.x?o.x:d,f=r&&null!=o.y?o.y:f):u&&!a&&(s=\"x\"===o.axis?e.height:s,i=\"y\"===o.axis?e.width:i),u=!0,{width:i,height:s,x:d,y:f,top:f,right:d+i,bottom:f+s,left:d}}}))}}),v=ah(e=>{null==c&&null==u&&(n?f.current||g([]):y(e.clientX,e.clientY))}),b=is(p)?o:n,A=w.useCallback(()=>{if(!b||!l||null!=c||null!=u)return;let e=aT(o);function t(n){iv(o,ib(n))?(e.removeEventListener(\"mousemove\",t),f.current=null):y(n.clientX,n.clientY)}if(!r.current.openEvent||uC(r.current.openEvent)){e.addEventListener(\"mousemove\",t);let n=()=>{e.removeEventListener(\"mousemove\",t),f.current=null};return f.current=n,n}i.setPositionReference(a)},[b,l,c,u,o,r,i,a,y]);w.useEffect(()=>A(),[A,m]),w.useEffect(()=>{l&&!o&&(d.current=!1)},[l,o]),w.useEffect(()=>{!l&&n&&(d.current=!0)},[l,n]),aC(()=>{l&&(null!=c||null!=u)&&(d.current=!1,y(c,u))},[l,c,u,y]);let x=w.useMemo(()=>{function e(e){h(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:v,onMouseEnter:v}},[v]);return w.useMemo(()=>l?{reference:x}:{},[l,x])}(P,{enabled:!t&&\"none\"!==s,axis:\"none\"===s?void 0:s})]),F=w.useMemo(()=>({open:_,setOpen:E,mounted:j,setMounted:S,setTriggerElement:h,positionerElement:m,setPositionerElement:g,popupRef:b,triggerProps:Z(),popupProps:U(),floatingRootContext:P,instantType:L,transitionStatus:O,onOpenChangeComplete:u}),[_,E,j,S,h,m,g,b,Z,U,P,L,O,u]),q=w.useMemo(()=>({...F,delay:d,closeDelay:f,trackCursorAxis:s,hoverable:l}),[F,d,f,s,l]);return(0,A.jsx)(ul.Provider,{value:q,children:e.children})}var uk=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"),uE={};uE.styleTagTransform=m(),uE.setAttributes=d(),uE.insert=c(),uE.domAPI=l(),uE.insertStyleElement=p(),a()(uk.Z,uE),uk.Z&&uk.Z.locals&&uk.Z.locals;var uj=(0,w.forwardRef)(function(e,t){var n,r,o,a,i,l,s,c,u,d,f,p,h=(0,x.c)(35),m=e.className,g=e.children,y=e.title,v=e.direction,b=e.arrowSize,w=e.offset,C=void 0===v?\"top\":v,_=void 0===b?6:b,k=dl().shadowRoot;if(!y)return g;h[0]!==g?(n=function(e){var t,n;return(0,A.jsx)(\"span\",(t=function(e){for(var t=1;t0,s=\"segment-explorer-footer-button \".concat(l?\"\":\"segment-explorer-footer-button--disabled\"),c=l?i:void 0,u=!l;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"span\",{className:\"segment-explorer-footer-text\",children:\"Clear Segment Overrides\"}),o[0]=t):t=o[0],o[1]!==a||o[2]!==l?(n=l&&(0,A.jsx)(\"span\",{className:\"segment-explorer-footer-badge\",children:a}),o[1]=a,o[2]=l,o[3]=n):n=o[3],o[4]!==s||o[5]!==c||o[6]!==u||o[7]!==n?(r=(0,A.jsx)(\"div\",{className:\"segment-explorer-footer\",children:(0,A.jsxs)(\"button\",{className:s,onClick:c,disabled:u,type:\"button\",children:[t,n]})}),o[4]=s,o[5]=c,o[6]=u,o[7]=n,o[8]=r):r=o[8],r}function uz(e){var t,n,r,o,a,i=(0,x.c)(15),l=e.type,s=e.isBuiltin,c=e.isOverridden,u=e.filePath,d=e.fileName,f=\"segment-explorer-file-label--\".concat(l),p=s&&\"segment-explorer-file-label--builtin\",h=c&&\"segment-explorer-file-label--overridden\";return i[0]!==f||i[1]!==p||i[2]!==h?(t=eJ(\"segment-explorer-file-label\",f,p,h),i[0]=f,i[1]=p,i[2]=h,i[3]=t):t=i[3],i[4]!==u?(n=function(){var e;e=new URLSearchParams({file:{filePath:u}.filePath,isAppRelativePath:\"1\"}),fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString()))},i[4]=u,i[5]=n):n=i[5],i[6]!==d?(r=(0,A.jsx)(\"span\",{className:\"segment-explorer-file-label-text\",children:d}),i[6]=d,i[7]=r):r=i[7],i[8]!==s?(o=s?(0,A.jsx)(uR,{}):(0,A.jsx)(uZ,{className:\"code-icon\"}),i[8]=s,i[9]=o):o=i[9],i[10]!==t||i[11]!==n||i[12]!==r||i[13]!==o?(a=(0,A.jsxs)(\"span\",{className:t,onClick:n,children:[r,o]}),i[10]=t,i[11]=n,i[12]=r,i[13]=o,i[14]=a):a=i[14],a}function uD(e){var t,n,r,o,a,i,l,s,c,u=(0,x.c)(17),d=e.page,f=(0,w.useSyncExternalStore)(o8,o7,ae);u[0]!==f?(n=function e(t){var n,r=0;return(null==(n=t.value)?void 0:n.setBoundaryType)&&null!==t.value.boundaryType&&!c4(t.value.type)&&r++,Object.values(t.children).forEach(function(t){t&&(r+=e(t))}),r}(f),u[0]=f,u[1]=n):n=u[1],t=n,u[2]!==f?(r=function(){!function e(t){var n;(null==(n=t.value)?void 0:n.setBoundaryType)&&t.value.setBoundaryType(null),Object.values(t.children).forEach(function(t){t&&e(t)})}(f)},u[2]=f,u[3]=r):r=u[3];var p=r;return u[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o={display:\"flex\",flexDirection:\"column\",height:\"100%\"},u[4]=o):o=u[4],u[5]!==d?(a=(0,A.jsx)(uI,{page:d}),u[5]=d,u[6]=a):a=u[6],u[7]===Symbol.for(\"react.memo_cache_sentinel\")?(i={flex:\"1 1 auto\",overflow:\"auto\"},u[7]=i):i=u[7],u[8]!==f?(l=(0,A.jsx)(\"div\",{className:\"segment-explorer-content\",\"data-nextjs-devtool-segment-explorer\":!0,style:i,children:(0,A.jsx)(uN,{node:f,level:0,segment:\"\"})}),u[8]=f,u[9]=l):l=u[9],u[10]!==t||u[11]!==p?(s=(0,A.jsx)(uT,{activeBoundariesCount:t,onGlobalReset:p}),u[10]=t,u[11]=p,u[12]=s):s=u[12],u[13]!==a||u[14]!==l||u[15]!==s?(c=(0,A.jsxs)(\"div\",{\"data-nextjs-devtools-panel-segments-explorer\":!0,style:o,children:[a,l,s]}),u[13]=a,u[14]=l,u[15]=s,u[16]=c):c=u[16],c}var uL=\"global-error\";function uN(e){var t=e.segment,n=e.node,r=e.level,o=(0,w.useMemo)(function(){return Object.keys(n.children)},[n.children]),a=(0,w.useMemo)(function(){var e=[];return o.forEach(function(t){var r=n.children[t];if(r&&r.value){var o=c5(r.value.type),a=o===uL;(a&&!r.value.pagePath.startsWith(c0)||!a&&c4(r.value.type))&&e.push(o)}}),0===r&&!e.includes(uL)},[n.children,o,r]),i=o.sort(function(e,t){var r=e.includes(\".\"),o=t.includes(\".\");if(r&&!o)return -1;if(!r&&o)return 1;if(r&&o){var a,i,l,s,c,u,d,f,p=null==(i=n.children[e])||null==(a=i.value)?void 0:a.type,h=null==(s=n.children[t])||null==(l=s.value)?void 0:l.type,m=function(e){return e?\"layout\"===e?1:\"template\"===e?2:\"page\"===e?3:c4(e)?4:5:5},g=m(p),y=m(h);if(g!==y)return g-y;var v=(null==(u=n.children[e])||null==(c=u.value)?void 0:c.pagePath)||\"\",b=(null==(f=n.children[t])||null==(d=f.value)?void 0:d.pagePath)||\"\";return v.localeCompare(b)}return e.localeCompare(t)}),l=0!==r||t?t:\"app\",s=[],c=[],u=!0,d=!1,f=void 0;try{for(var p,h=i[Symbol.iterator]();!(u=(p=h.next()).done);u=!0){var m=p.value,g=n.children[m];if(g){if(uP(g)){c.push(m);continue}s.push(m)}}}catch(e){d=!0,f=e}finally{try{u||null==h.return||h.return()}finally{if(d)throw f}}for(var y=c1(c[0]||\"\").split(\".\").pop()||\"js\",v=null,b=i.length-1;b>=0;b--){var x=n.children[i[b]];if(x&&x.value){var C=c4(x.value.type);if(!v&&!C){v=x;break}}}var _=null,k=!0,E=!1,j=void 0;try{for(var S,O=i[Symbol.iterator]();!(k=(S=O.next()).done);k=!0){var B=S.value,P=n.children[B];if(P&&P.value&&c4(P.value.type)){_=P;break}}}catch(e){E=!0,j=e}finally{try{k||null==O.return||O.return()}finally{if(E)throw j}}v=v||_;var I=c.length>0,T={\"not-found\":null,loading:null,error:null,\"global-error\":null};return c.forEach(function(e){var t=n.children[e];if(t&&t.value&&c4(t.value.type)){var r=c5(t.value.type);r in T&&(T[r]=t.value.pagePath||null)}}),(0,A.jsxs)(A.Fragment,{children:[I&&(0,A.jsx)(\"div\",{className:\"segment-explorer-item\",\"data-nextjs-devtool-segment-explorer-segment\":t+\"-\"+r,children:(0,A.jsx)(\"div\",{className:\"segment-explorer-item-row\",style:uO({},{paddingLeft:\"\".concat((r+1)*8,\"px\")}),children:(0,A.jsx)(\"div\",{className:\"segment-explorer-item-row-main\",children:(0,A.jsxs)(\"div\",{className:\"segment-explorer-filename\",children:[l&&(0,A.jsxs)(\"span\",{className:\"segment-explorer-filename--path\",children:[l,(0,A.jsx)(\"small\",{children:\"/\"})]}),a&&(0,A.jsx)(uS,{possibleExtension:y,missingGlobalError:a}),c.length>0&&(0,A.jsx)(\"span\",{className:\"segment-explorer-files\",children:c.map(function(e){var t=n.children[e];if(!t||!t.value||c4(t.value.type))return null;var r=t.value.pagePath,o=r.split(\"/\").pop()||\"\",a=r.startsWith(c0),i=c1(o),l=a?\"The default Next.js \".concat(t.value.type,\" is being shown. You can customize this page by adding your own \").concat(i,\" file to the app/ directory.\"):null,s=null!==t.value.boundaryType;return(0,A.jsx)(uj,{className:\"segment-explorer-file-label-tooltip--\"+(a?\"lg\":\"sm\"),direction:a?\"right\":\"top\",title:l,offset:12,children:(0,A.jsx)(uz,{type:t.value.type,isBuiltin:a,isOverridden:s,filePath:r,fileName:i})},e)})}),v&&v.value&&(0,A.jsx)(ue,{nodeState:v.value,boundaries:T})]})})})}),s.map(function(e){var o=n.children[e];if(!o)return null;var a=I?e:t+\" / \"+e;return(0,A.jsx)(uN,{segment:a,node:o,level:I?r+1:r},e)})]})}function uR(e){var t,n,r,o=(0,x.c)(4);return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{d:\"M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z\",fill:\"var(--color-gray-400)\"}),n=(0,A.jsx)(\"path\",{d:\"M7.75 7C8.30228 7.00001 8.75 7.44772 8.75 8V11.25H7.25V8.5H6.25V7H7.75ZM8 4C8.55228 4 9 4.44772 9 5C9 5.55228 8.55228 6 8 6C7.44772 6 7 5.55228 7 5C7 4.44772 7.44772 4 8 4Z\",fill:\"var(--color-gray-900)\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==e?(r=(0,A.jsxs)(\"svg\",uB(uO({width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:[t,n]})),o[2]=e,o[3]=r):r=o[3],r}function uM(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 20 20\",fill:\"var(--color-gray-600)\",xmlns:\"http://www.w3.org/2000/svg\",children:(0,A.jsx)(\"path\",{d:\"M4.5 11.25C4.5 11.3881 4.61193 11.5 4.75 11.5H14.4395L11.9395 9L13 7.93945L16.7803 11.7197L16.832 11.7764C17.0723 12.0709 17.0549 12.5057 16.7803 12.7803L13 16.5605L11.9395 15.5L14.4395 13H4.75C3.7835 13 3 12.2165 3 11.25V4.25H4.5V11.25Z\"})}),t[0]=e):e=t[0],e}function uZ(e){var t,n,r=(0,x.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M7.22763 14.1819L10.2276 2.18193L10.4095 1.45432L8.95432 1.09052L8.77242 1.81812L5.77242 13.8181L5.59051 14.5457L7.04573 14.9095L7.22763 14.1819ZM3.75002 12.0607L3.21969 11.5304L0.39647 8.70713C0.00594559 8.31661 0.00594559 7.68344 0.39647 7.29292L3.21969 4.46969L3.75002 3.93936L4.81068 5.00002L4.28035 5.53035L1.81068 8.00003L4.28035 10.4697L4.81068 11L3.75002 12.0607ZM12.25 12.0607L12.7804 11.5304L15.6036 8.70713C15.9941 8.31661 15.9941 7.68344 15.6036 7.29292L12.7804 4.46969L12.25 3.93936L11.1894 5.00002L11.7197 5.53035L14.1894 8.00003L11.7197 10.4697L11.1894 11L12.25 12.0607Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,A.jsx)(\"svg\",uB(uO({width:\"12\",height:\"12\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",fill:\"currentColor\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function uU(){var e,t,n=(e=[\"\\n .dev-tools-info-close-button:focus-visible {\\n outline: var(--focus-ring);\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return uU=function(){return n},n}function uF(e){var t,n,r,o,a,i,l,s,c,u,d,f=(0,x.c)(18),p=e.title,h=e.children,m=e.ref,g=r5().setPanel,y=(0,w.useRef)(null);return f[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){var e;null==(e=y.current)||e.focus()},n=[],f[0]=t,f[1]=n):(t=f[0],n=f[1]),(0,w.useLayoutEffect)(t,n),f[2]===Symbol.for(\"react.memo_cache_sentinel\")?(r={width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",padding:\"8px 20px\",userSelect:\"none\",WebkitUserSelect:\"none\",borderBottom:\"1px solid var(--color-gray-alpha-400)\"},f[2]=r):r=f[2],f[3]===Symbol.for(\"react.memo_cache_sentinel\")?(o={margin:0,fontSize:\"14px\",color:\"var(--color-text-primary)\",fontWeight:\"normal\"},f[3]=o):o=f[3],f[4]!==p?(a=(0,A.jsx)(\"h3\",{style:o,children:p}),f[4]=p,f[5]=a):a=f[5],f[6]!==g?(i=function(){g(\"panel-selector\")},f[6]=g,f[7]=i):i=f[7],f[8]===Symbol.for(\"react.memo_cache_sentinel\")?(l={background:\"none\",border:\"none\",cursor:\"pointer\",padding:\"4px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"4px\",color:\"var(--color-gray-900)\"},s=(0,A.jsx)(uq,{}),f[8]=l,f[9]=s):(l=f[8],s=f[9]),f[10]!==i?(c=(0,A.jsx)(\"button\",{ref:y,id:\"_next-devtools-panel-close\",className:\"dev-tools-info-close-button\",onClick:i,\"aria-label\":\"Close devtools panel\",style:l,children:s}),f[10]=i,f[11]=c):c=f[11],f[12]===Symbol.for(\"react.memo_cache_sentinel\")?(u=(0,A.jsx)(\"style\",{children:eu(uU())}),f[12]=u):u=f[12],f[13]!==h||f[14]!==m||f[15]!==a||f[16]!==c?(d=(0,A.jsxs)(\"div\",{style:r,ref:m,children:[a,h,c,u]}),f[13]=h,f[14]=m,f[15]=a,f[16]=c,f[17]=d):d=f[17],d}function uq(e){var t,n,r,o=(0,x.c)(4),a=e.size,i=void 0===a?22:a;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,A.jsx)(\"path\",{d:\"M18 6 6 18\"}),n=(0,A.jsx)(\"path\",{d:\"m6 6 12 12\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==i?(r=(0,A.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:i,height:i,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[t,n]}),o[2]=i,o[3]=r):r=o[3],r}function uH(){var e,t=(0,x.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,A.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 20 20\",fill:\"none\",children:(0,A.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m9.7 3.736.045-.236h.51l.044.236a2.024 2.024 0 0 0 1.334 1.536c.19.066.375.143.554.23.618.301 1.398.29 2.03-.143l.199-.136.36.361-.135.199a2.024 2.024 0 0 0-.143 2.03c.087.179.164.364.23.554.224.65.783 1.192 1.536 1.334l.236.044v.51l-.236.044a2.024 2.024 0 0 0-1.536 1.334 4.95 4.95 0 0 1-.23.554 2.024 2.024 0 0 0 .143 2.03l.136.199-.361.36-.199-.135a2.024 2.024 0 0 0-2.03-.143c-.179.087-.364.164-.554.23a2.024 2.024 0 0 0-1.334 1.536l-.044.236h-.51l-.044-.236a2.024 2.024 0 0 0-1.334-1.536 4.952 4.952 0 0 1-.554-.23 2.024 2.024 0 0 0-2.03.143l-.199.136-.36-.361.135-.199a2.024 2.024 0 0 0 .143-2.03 4.958 4.958 0 0 1-.23-.554 2.024 2.024 0 0 0-1.536-1.334l-.236-.044v-.51l.236-.044a2.024 2.024 0 0 0 1.536-1.334 4.96 4.96 0 0 1 .23-.554 2.024 2.024 0 0 0-.143-2.03l-.136-.199.361-.36.199.135a2.024 2.024 0 0 0 2.03.143c.179-.087.364-.164.554-.23a2.024 2.024 0 0 0 1.334-1.536ZM8.5 2h3l.274 1.46c.034.185.17.333.348.394.248.086.49.186.722.3.17.082.37.074.526-.033l1.226-.839 2.122 2.122-.84 1.226a.524.524 0 0 0-.032.526c.114.233.214.474.3.722.061.177.21.314.394.348L18 8.5v3l-1.46.274a.524.524 0 0 0-.394.348 6.47 6.47 0 0 1-.3.722.524.524 0 0 0 .033.526l.839 1.226-2.122 2.122-1.226-.84a.524.524 0 0 0-.526-.032 6.477 6.477 0 0 1-.722.3.524.524 0 0 0-.348.394L11.5 18h-3l-.274-1.46a.524.524 0 0 0-.348-.394 6.477 6.477 0 0 1-.722-.3.524.524 0 0 0-.526.033l-1.226.839-2.122-2.122.84-1.226a.524.524 0 0 0 .032-.526 6.453 6.453 0 0 1-.3-.722.524.524 0 0 0-.394-.348L2 11.5v-3l1.46-.274a.524.524 0 0 0 .394-.348c.086-.248.186-.49.3-.722a.524.524 0 0 0-.033-.526l-.839-1.226 2.122-2.122 1.226.84a.524.524 0 0 0 .526.032 6.46 6.46 0 0 1 .722-.3.524.524 0 0 0 .348-.394L8.5 2Zm3 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm1.5 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}var uV=__nested_webpack_require_378273__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\"),u$={};u$.styleTagTransform=m(),u$.setAttributes=d(),u$.insert=c(),u$.domAPI=l(),u$.insertStyleElement=p(),a()(uV.Z,u$),uV.Z&&uV.Z.locals&&uV.Z.locals;var uW=function(){var e,t,n,r,o,a,i,l,s,c,u,d=(0,x.c)(32),f=r5(),p=f.setPanel,h=f.setSelectedIndex,m=dl(),g=m.state,y=m.dispatch,v=u3().totalErrorCount,b=\"app\"===g.routerType;d[0]!==y||d[1]!==p||d[2]!==h||d[3]!==g.isErrorOverlayOpen||d[4]!==v?(e=v>0&&{title:\"\".concat(v,\" \").concat(1===v?\"issue\":\"issues\",\" found. Click to view details in the dev overlay.\"),label:\"Issues\",value:(0,A.jsx)(oD,{children:v}),onClick:function(){if(g.isErrorOverlayOpen){y({type:q}),p(null);return}p(null),h(-1),v>0&&y({type:F})}},d[0]=y,d[1]=p,d[2]=h,d[3]=g.isErrorOverlayOpen,d[4]=v,d[5]=e):e=d[5];var w=\"Current route is \".concat(g.staticIndicator?\"static\":\"dynamic\",\".\"),C=g.staticIndicator?\"Static\":\"Dynamic\";d[6]!==p?(t=function(){return p(\"route-type\")},d[6]=p,d[7]=t):t=d[7];var _=g.staticIndicator?\"static\":\"dynamic\";return d[8]!==_?(n={\"data-nextjs-route-type\":_},d[8]=_,d[9]=n):n=d[9],d[10]!==w||d[11]!==C||d[12]!==t||d[13]!==n?(r={title:w,label:\"Route\",value:C,onClick:t,attributes:n},d[10]=w,d[11]=C,d[12]=t,d[13]=n,d[14]=r):r=d[14],d[15]!==p?(o= false?0:{title:\"Learn about Turbopack and how to enable it in your application.\",label:\"Try Turbopack\",value:(0,A.jsx)(oL,{}),onClick:function(){return p(\"turbo-info\")}},d[15]=p,d[16]=o):o=d[16],d[17]!==b||d[18]!==p?(a= true&&b&&{label:\"Route Info\",value:(0,A.jsx)(oL,{}),onClick:function(){return p(\"segment-explorer\")},attributes:{\"data-segment-explorer\":!0}},d[17]=b,d[18]=p,d[19]=a):a=d[19],d[20]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,A.jsx)(uH,{}),d[20]=i):i=d[20],d[21]!==p?(l=function(){return p(\"preferences\")},d[21]=p,d[22]=l):l=d[22],d[23]===Symbol.for(\"react.memo_cache_sentinel\")?(s={\"data-preferences\":!0},d[23]=s):s=d[23],d[24]!==l?(c={label:\"Preferences\",value:i,onClick:l,footer:!0,attributes:s},d[24]=l,d[25]=c):c=d[25],d[26]!==e||d[27]!==c||d[28]!==r||d[29]!==o||d[30]!==a?(u=(0,A.jsx)(oT,{items:[e,r,o,a,c]}),d[26]=e,d[27]=c,d[28]=r,d[29]=o,d[30]=a,d[31]=u):u=d[31],u},uY=function(){var e,t=(0,x.c)(4),n=dl(),r=n.state,o=n.dispatch,a=n.shadowRoot;return t[0]!==o||t[1]!==a||t[2]!==r.disableDevIndicator?(e=function(){o({type:U,disabled:!r.disableDevIndicator});var e=a.getElementById(\"panel-route\"),t=a.getElementById(\"data-devtools-indicator\");if(e&&e.firstElementChild){var n=e.firstElementChild,i=\"none\"===n.style.display;n.style.display=i?\"\":\"none\"}if(t){var l=\"none\"===t.style.display;t.style.display=l?\"\":\"none\"}},t[0]=o,t[1]=a,t[2]=r.disableDevIndicator,t[3]=e):e=t[3],e},uK=function(){var e,t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,b,C,_,k,E,j,S,O=(0,x.c)(44),B=dl().state,P=r5().triggerRef,I=uY(),T=\"app\"===B.routerType;O[0]!==B.hideShortcut||O[1]!==I?(s=B.hideShortcut?(e={},t=B.hideShortcut,n=I,t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e):{},O[0]=B.hideShortcut,O[1]=I,O[2]=s):s=O[2],r=s,o=P,(l=(0,x.c)(4))[0]!==o||l[1]!==r?(a=function(){var e=function(e){if(!((n=t7((t=o).current))&&(\"true\"===n.contentEditable||\"INPUT\"===n.tagName||\"TEXTAREA\"===n.tagName||\"SELECT\"===n.tagName||\"true\"===n.dataset[\"shortcut-recorder\"])&&!n.hasAttribute(\"readonly\"))){var t,n,a=[];e.metaKey&&a.push(\"Meta\"),e.ctrlKey&&a.push(\"Control\"),e.altKey&&a.push(\"Alt\"),e.shiftKey&&a.push(\"Shift\"),\"Meta\"!==e.key&&\"Control\"!==e.key&&\"Alt\"!==e.key&&\"Shift\"!==e.key&&a.push(e.code);var i=a.join(\"+\");r[i]&&(e.preventDefault(),r[i]())}};return window.addEventListener(\"keydown\",e),function(){return window.removeEventListener(\"keydown\",e)}},i=[o,r],l[0]=o,l[1]=r,l[2]=a,l[3]=i):(a=l[2],i=l[3]),(0,w.useEffect)(a,i),O[3]===Symbol.for(\"react.memo_cache_sentinel\")?(c=(0,A.jsx)(u0,{name:\"panel-selector\",children:(0,A.jsx)(uW,{})}),O[3]=c):c=O[3];var z=500/B.scale;O[4]!==z?(u={kind:\"fixed\",height:z,width:512},O[4]=z,O[5]=u):u=O[5],O[6]===Symbol.for(\"react.memo_cache_sentinel\")?(d=(0,A.jsx)(uF,{title:\"Preferences\"}),f=(0,A.jsx)(uG,{}),O[6]=d,O[7]=f):(d=O[6],f=O[7]),O[8]!==u?(p=(0,A.jsx)(u0,{name:\"preferences\",children:(0,A.jsx)(o2,{sharePanelSizeGlobally:!1,sizeConfig:u,closeOnClickOutside:!0,header:d,children:f})}),O[8]=u,O[9]=p):p=O[9];var D=B.staticIndicator?\"static\":\"dynamic\",L=B.staticIndicator?300/B.scale:325/B.scale,N=400/B.scale;O[10]!==L||O[11]!==N?(h={kind:\"fixed\",height:L,width:N},O[10]=L,O[11]=N,O[12]=h):h=O[12];var R=\"\".concat(B.staticIndicator?\"Static\":\"Dynamic\",\" Route\");O[13]!==R?(m=(0,A.jsx)(uF,{title:R}),O[13]=R,O[14]=m):m=O[14],O[15]!==B.routerType||O[16]!==B.staticIndicator?(g=(0,A.jsx)(n4,{routerType:B.routerType,isStaticRoute:B.staticIndicator}),O[15]=B.routerType,O[16]=B.staticIndicator,O[17]=g):g=O[17];var M=n2[B.routerType][B.staticIndicator?\"static\":\"dynamic\"];O[18]!==M?(y=(0,A.jsx)(uX,{href:M}),O[18]=M,O[19]=y):y=O[19],O[20]!==g||O[21]!==y?(v=(0,A.jsxs)(\"div\",{className:\"panel-content\",children:[g,y]}),O[20]=g,O[21]=y,O[22]=v):v=O[22],O[23]!==h||O[24]!==m||O[25]!==v||O[26]!==D?(b=(0,A.jsx)(u0,{name:\"route-type\",children:(0,A.jsx)(o2,{sharePanelSizeGlobally:!1,sizeConfig:h,closeOnClickOutside:!0,header:m,children:v},D)}),O[23]=h,O[24]=m,O[25]=v,O[26]=D,O[27]=b):b=O[27],O[28]!==T||O[29]!==B.page||O[30]!==B.scale?(C= true&&T&&(0,A.jsx)(u0,{name:\"segment-explorer\",children:(0,A.jsx)(o2,{sharePanelSizeGlobally:!1,sharePanelPositionGlobally:!1,draggable:!0,sizeConfig:{kind:\"resizable\",maxHeight:\"90vh\",maxWidth:\"90vw\",minHeight:200/B.scale,minWidth:250/B.scale,initialSize:{height:375/B.scale,width:400/B.scale}},header:(0,A.jsx)(uF,{title:\"Route Info\"}),children:(0,A.jsx)(uD,{page:B.page})})}),O[28]=T,O[29]=B.page,O[30]=B.scale,O[31]=C):C=O[31];var Z=470/B.scale,U=400/B.scale;return O[32]!==Z||O[33]!==U?(_={kind:\"fixed\",height:Z,width:U},O[32]=Z,O[33]=U,O[34]=_):_=O[34],O[35]===Symbol.for(\"react.memo_cache_sentinel\")?(k=(0,A.jsx)(uF,{title:\"Try Turbopack\"}),O[35]=k):k=O[35],O[36]===Symbol.for(\"react.memo_cache_sentinel\")?(E=(0,A.jsxs)(\"div\",{className:\"panel-content\",children:[(0,A.jsx)(nX,{}),(0,A.jsx)(uX,{href:\"https://nextjs.org/docs/app/api-reference/turbopack\"})]}),O[36]=E):E=O[36],O[37]!==_?(j=(0,A.jsx)(u0,{name:\"turbo-info\",children:(0,A.jsx)(o2,{sharePanelSizeGlobally:!1,sizeConfig:_,closeOnClickOutside:!0,header:k,children:E})}),O[37]=_,O[38]=j):j=O[38],O[39]!==b||O[40]!==C||O[41]!==j||O[42]!==p?(S=(0,A.jsxs)(A.Fragment,{children:[c,p,b,C,j]}),O[39]=b,O[40]=C,O[41]=j,O[42]=p,O[43]=S):S=O[43],S},uX=function(e){var t,n=(0,x.c)(2),r=e.href;return n[0]!==r?(t=(0,A.jsx)(\"div\",{className:\"dev-tools-info-button-container\",children:(0,A.jsx)(\"a\",{className:\"dev-tools-info-learn-more-button\",href:r,target:\"_blank\",rel:\"noreferrer noopener\",children:\"Learn More\"})}),n[0]=r,n[1]=t):t=n[1],t},uG=function(){var e,t,n,r,o=(0,x.c)(17),a=dl(),i=a.dispatch,l=a.state,s=r5(),c=s.setPanel,u=s.setSelectedIndex,d=o_();return o[0]!==i?(e=function(e){i({type:G,scale:e})},o[0]=i,o[1]=e):e=o[1],o[2]!==i||o[3]!==d?(t=function(e){i({type:K,devToolsPosition:e}),d(e)},o[2]=i,o[3]=d,o[4]=t):t=o[4],o[5]!==i||o[6]!==c||o[7]!==u?(n=function(){i({type:U,disabled:!0}),u(-1),c(null),fetch(\"/__nextjs_disable_dev_indicator\",{method:\"POST\"})},o[5]=i,o[6]=c,o[7]=u,o[8]=n):n=o[8],o[9]!==l.devToolsPosition||o[10]!==l.hideShortcut||o[11]!==l.scale||o[12]!==l.theme||o[13]!==e||o[14]!==t||o[15]!==n?(r=(0,A.jsx)(\"div\",{className:\"user-preferences-wrapper\",children:(0,A.jsx)(rk,{theme:l.theme,position:l.devToolsPosition,scale:l.scale,setScale:e,setPosition:t,hideShortcut:l.hideShortcut,setHideShortcut:u1,hide:n})}),o[9]=l.devToolsPosition,o[10]=l.hideShortcut,o[11]=l.scale,o[12]=l.theme,o[13]=e,o[14]=t,o[15]=n,o[16]=r):r=o[16],r},uQ=function(){return(0,w.useContext)(uJ)},uJ=(0,w.createContext)(null);function u0(e){var t,n,r,o,a,i=(0,x.c)(12),l=e.children,s=e.name,c=r5().panel;i[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t={enterDelay:0,exitDelay:200},i[0]=t):t=i[0];var u=rN(s===c,t),d=u.mounted,f=u.rendered;if(!d)return null;i[1]!==d||i[2]!==s?(n={name:s,mounted:d},i[1]=d,i[2]=s,i[3]=n):n=i[3];var p=+!!f;i[4]!==p?(r={\"--panel-opacity\":p,\"--panel-transition\":\"opacity \".concat(200,\"ms \").concat(nt)},i[4]=p,i[5]=r):r=i[5];var h=r;return i[6]!==l||i[7]!==h?(o=(0,A.jsx)(\"div\",{id:\"panel-route\",className:\"panel-route\",style:h,children:l}),i[6]=l,i[7]=h,i[8]=o):o=i[8],i[9]!==n||i[10]!==o?(a=(0,A.jsx)(uJ,{value:n,children:o}),i[9]=n,i[10]=o,i[11]=a):a=i[11],a}function u1(e){rw({hideShortcut:e})}function u2(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:process.env.__NEXT_DIST_DIR;return e?(e=e.split(\"\\n\").map(function(e){return e.includes(\"(eval \")&&(e=e.replace(/eval code/g,\"eval\").replace(/\\(eval at [^()]* \\(/,\"(file://\").replace(/\\),.*$/g,\")\")),e}).join(\"\\n\"),(0,_.parse)(e).map(function(e){try{var n=new URL(e.file),r=k.exec(n.pathname);if(r){var o,a=null==t||null==(o=t.replace(/\\\\/g,\"/\"))?void 0:o.replace(/\\/$/,\"\");a&&(e.file=\"file://\"+a.concat(r.pop())+n.search)}}catch(e){}return{file:e.file,line1:e.lineNumber,column1:e.column,methodName:e.methodName,arguments:e.arguments}})):[]}((o.stack||\"\")+(i||\"\")),s={id:t,error:o,frames:l,type:r(o)?\"recoverable\":(a=o)&&\"NEXT_CONSOLE_ERROR\"===a[E]?\"console\":\"runtime\"},c=e.filter(function(e){return e.error.stack!==s.error.stack&&ea(e.error.stack)!==ea(s.error.stack)||n(e.error)!==n(s.error)});return c.length===e.length?(c.push(s),c):e},s[0]=n,s[1]=r,s[2]=a):a=s[2],c=a,(s[3]!==c?(i=function(e,t){switch(t.type){case M:return O(S({},e),{debugInfo:t.debugInfo});case P:return O(S({},e),{staticIndicator:t.staticIndicator});case I:return O(S({},e),{buildError:null});case T:return O(S({},e),{buildError:t.message});case z:return O(S({},e),{refreshState:{type:\"pending\",errors:[]}});case D:return O(S({},e),{buildError:null,errors:\"pending\"===e.refreshState.type?e.refreshState.errors:[],refreshState:{type:\"idle\"}});case N:case R:switch(e.refreshState.type){case\"idle\":return O(S({},e),{nextId:e.nextId+1,errors:c(e.errors,e.nextId,t.reason)});case\"pending\":return O(S({},e),{nextId:e.nextId+1,refreshState:O(S({},e.refreshState),{errors:c(e.errors,e.nextId,t.reason)})});default:return e}case L:return O(S({},e),{versionInfo:t.versionInfo});case U:return O(S({},e),{disableDevIndicator:t.disabled});case Z:return O(S({},e),{showIndicator:!0,disableDevIndicator:ei||!!t.devIndicator.disabledUntil});case F:return O(S({},e),{isErrorOverlayOpen:!0});case q:return O(S({},e),{isErrorOverlayOpen:!1});case H:return O(S({},e),{isErrorOverlayOpen:!e.isErrorOverlayOpen});case V:return O(S({},e),{buildingIndicator:!0});case $:return O(S({},e),{buildingIndicator:!1});case W:return O(S({},e),{renderingIndicator:!0});case Y:return O(S({},e),{renderingIndicator:!1});case K:return O(S({},e),{devToolsPosition:t.devToolsPosition});case X:return O(S({},e),{devToolsPanelPosition:O(S({},e.devToolsPanelPosition),j({},t.key,t.devToolsPanelPosition))});case G:return O(S({},e),{scale:t.scale});case er:return O(S({},e),{page:t.page});case Q:var n=t.devToolsConfig,r=n.theme,o=n.disableDevIndicator,a=n.devToolsPosition,i=n.devToolsPanelPosition,l=n.devToolsPanelSize,s=n.scale,u=n.hideShortcut;return O(S({},e),{theme:null!=r?r:e.theme,disableDevIndicator:null!=o?o:e.disableDevIndicator,devToolsPosition:null!=a?a:e.devToolsPosition,devToolsPanelPosition:null!=i?i:e.devToolsPanelPosition,scale:null!=s?s:e.scale,devToolsPanelSize:null!=l?l:e.devToolsPanelSize,hideShortcut:void 0!==u?u:e.hideShortcut});default:return e}},s[3]=c,s[4]=i):i=s[4],s[5]!==t)?(o=t,l=O(S({},es),{isErrorOverlayOpen:\"pages\"===o,routerType:o}),s[5]=t,s[6]=l):l=s[6],u=(0,w.useReducer)(i,l),d=2,function(e){if(Array.isArray(e))return e}(u)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(u,2)||u7(u,d)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),el=eo[0],ec=eo[1];return C[0]!==en.host||C[1]!==el.theme?(f=function(){var e=en.host;\"dark\"===el.theme?(e.classList.add(\"dark\"),e.classList.remove(\"light\")):\"light\"===el.theme?(e.classList.add(\"light\"),e.classList.remove(\"dark\")):(e.classList.remove(\"dark\"),e.classList.remove(\"light\"))},C[0]=en.host,C[1]=el.theme,C[2]=f):f=C[2],C[3]!==en||C[4]!==el.theme?(p=[en,el.theme],C[3]=en,C[4]=el.theme,C[5]=p):p=C[5],(0,w.useLayoutEffect)(f,p),C[6]!==ec?(h=function(){de=ec;var e=setTimeout(function(){!function(e){try{var t=!0,n=!1,r=void 0;try{for(var o,a=dt[Symbol.iterator]();!(t=(o=a.next()).done);t=!0)(0,o.value)(e)}catch(e){n=!0,r=e}finally{try{t||null==a.return||a.return()}finally{if(n)throw r}}}finally{dt.length=0}}(ec)});return function(){de=null,clearTimeout(e)}},C[6]=ec,C[7]=h):h=C[7],C[8]===Symbol.for(\"react.memo_cache_sentinel\")?(m=[],C[8]=m):m=C[8],(0,w.useInsertionEffect)(h,m),C[9]===Symbol.for(\"react.memo_cache_sentinel\")?(g=(0,A.jsx)(ef,{}),C[9]=g):g=C[9],C[10]!==ec||C[11]!==J||C[12]!==en||C[13]!==el?(y={dispatch:ec,getSquashedHydrationErrorDetails:J,shadowRoot:en,state:el},C[10]=ec,C[11]=J,C[12]=en,C[13]=el,C[14]=y):y=C[14],C[15]===Symbol.for(\"react.memo_cache_sentinel\")?(v=(0,A.jsx)(u6,{}),C[15]=v):v=C[15],C[16]!==y?(b=(0,A.jsxs)(A.Fragment,{children:[g,(0,A.jsx)(di,{value:y,children:v})]}),C[16]=y,C[17]=b):b=C[17],b}var di=(0,w.createContext)(null),dl=function(){return(0,w.useContext)(di)},ds=!1,dc=!1;function du(){return null}function dd(e,t){if(ds)throw Error(\"Next DevTools: Pages Dev Overlay is already mounted. This is a bug in Next.js\");if(!dc){var n=document.createElement(\"script\");n.style.display=\"block\",n.style.position=\"absolute\",n.setAttribute(\"data-nextjs-dev-overlay\",\"true\");var r=document.createElement(\"nextjs-portal\");n.appendChild(r),document.body.appendChild(n);var o=(0,ec.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,w.startTransition)(function(){o.render((0,A.jsx)(da,{getOwnerStack:e,getSquashedHydrationErrorDetails:du,isRecoverableError:t,routerType:\"app\",shadowRoot:a}))}),dc=!0}}function df(e,t,n){if(dc)throw Error(\"Next DevTools: App Dev Overlay is already mounted. This is a bug in Next.js\");if(!ds){var r=document.createElement(\"nextjs-portal\");r.style.position=\"absolute\",new MutationObserver(function(e){var t=!0,n=!1,o=void 0;try{for(var a,i=e[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var l=a.value;if(\"childList\"===l.type){var s=!0,c=!1,u=void 0;try{for(var d,f=l.removedNodes[Symbol.iterator]();!(s=(d=f.next()).done);s=!0)d.value===r&&document.body.appendChild(r)}catch(e){c=!0,u=e}finally{try{s||null==f.return||f.return()}finally{if(c)throw u}}}}}catch(e){n=!0,o=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw o}}}).observe(document.body,{childList:!0}),document.body.appendChild(r);var o=(0,ec.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,w.startTransition)(function(){o.render((0,A.jsx)(da,{getOwnerStack:e,getSquashedHydrationErrorDetails:t,isRecoverableError:n,routerType:\"pages\",shadowRoot:a}))}),ds=!0}}})(),exports.DevOverlayContext=__nested_webpack_exports__.DevOverlayContext,exports.dispatcher=__nested_webpack_exports__.dispatcher,exports.renderAppDevOverlay=__nested_webpack_exports__.renderAppDevOverlay,exports.renderPagesDevOverlay=__nested_webpack_exports__.renderPagesDevOverlay,exports.useDevOverlayContext=__nested_webpack_exports__.useDevOverlayContext,__nested_webpack_exports__)-1===[\"DevOverlayContext\",\"dispatcher\",\"renderAppDevOverlay\",\"renderPagesDevOverlay\",\"useDevOverlayContext\"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__nested_webpack_exports__[__webpack_i__]);Object.defineProperty(exports, \"__esModule\", ({value:!0}));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUEseUJBQXlCLDZSQUE2UixhQUFhLE9BQU8sUUFBUSxFQUFFLDhhQUE4YTtBQUNsd0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDZJQUE2SSxLQUFLLFVBQVUsS0FBSyxNQUFNLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksV0FBVyxV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OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sMklBQTJJLFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLFdBQVcsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxZQUFZLE1BQU0sWUFBWSxPQUFPLE1BQU0sVUFBVSxVQUFVLFVBQVUsWUFBWSxPQUFPLGFBQWEsT0FBTyxVQUFVLFVBQVUsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLE1BQU0sUUFBUSxVQUFVLFVBQVUsVUFBVSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLE1BQU0sS0FBSyxVQUFVLFVBQVUsWUFBWSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksT0FBTyxNQUFNLFVBQVUsVUFBVSxZQUFZLE9BQU8sTUFBTSxVQUFVLFVBQVUsWUFBWSxPQUFPLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxXQUFXLFlBQVksYUFB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUlBQWlJLFlBQVksV0FBVyxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsWUFBWSxhQUFhLGFBQWEsV0FBVyxNQUFNLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFVB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzR0FBc0csV0FBVyxZQUFZLFdBQVcsT0FBTyxVQUFVLEtBQUssT0FBTyxZQUFZLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sY0FBYyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sT0FBTyxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLE9BQU8sVUFBVSxVQUFVLFlBQVksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLE1BQU0sWUFBWSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsT0FBTyxPQUFPLFVBQVUsWUFBWSxPQUFPLFFBQVEsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxXQUFXLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sTUFBTSxZQUFZLFdBQVcsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxPQUFPLEtBQUssVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLFlBQVksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLFFBQVEsS0FBSyxPQUFPLFdBQVcsT0FBTyxL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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4R0FBOEcsWUFBWSxhQUFhLGNBQWMsYUFBYSxjQUFjLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxPQUFPLEtBQUssS0FBSyxZQUFZLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFB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QUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlIQUFpSCxVQUFVLEtBQUssYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsTUFBTSxPQUFPLE1BQU0sTUFBTSxZQUFZLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLE9BQU8sTUFBTSxPQUFPLGFBQWEsYUFBYSxjQUFjLGFBQWEsTUFBTSxRQUFRLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxnQkFBZ0IsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxnQkFBZ0IsS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLE1BQU0sVUFBVSxLQUFLLE1BQU0sVUFBVSxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxNQUFNLFlBQVksTUFBTSxLQUFL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QkFBaUIsbUdBQW1HLFFBQVEsdUNBQXVDLHFHQUFxRyw4Q0FBOEMsOENBQThDLDJCQUEyQix3QkFBd0Isb0JBQW9CLFlBQVksRUFBRSxpQ0FBaUMsdUJBQXVCLHVHQUF1RyxHQUFHLFNBQVMsbUJBQW1CLGlHQUFpRyxRQUFRLDhDQUE4Qyw2REFBNkQsdUJBQXVCLElBQUksaUNBQWlDLHVCQUF1QixNQUFNLGNBQWMseUJBQXlCLHVCQUF1QixJQUFJLDhDQUE4Qyx1QkFBdUIsK0NBQStDLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsaUJBQWlCLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsZUFBZSx5QkFBeUIsYUFBYSwrQkFBK0IsMkJBQTJCLHdCQUF3QixvQkFBb0IsWUFBWSxFQUFFLGlDQUFpQyx1QkFBdUIsd0dBQXdHLEdBQUcsVUFBVSxJQUFJLHlCQUF5QixDQUFDLDBCQUFtQixtQkFBbUIsa0JBQWtCLENBQUMsMEJBQW1CLFlBQVksMkJBQTJCLENBQUMsMEJBQW1CLHFCQUFxQiw2QkFBNkIsQ0FBQywwQkFBbUIsdUJBQXVCLDRCQUE0QixDQUFDLDBCQUFtQixzQkFBc0IsMEJBQW1CLDhKQUE4SiwwQkFBbUIsaUJBQWlCLDhDQUEyQyxDQUFDLFNBQVMsRUFBQztBQUMxem1FIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxjb21waWxlZFxcbmV4dC1kZXZ0b29sc1xcaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fd2VicGFja19tb2R1bGVzX189e1wiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtaW5kaWNhdG9yL2RldnRvb2xzLWluZGljYXRvci5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgW2RhdGEtbmV4dGpzLXRvYXN0XSB7XG4gICZbZGF0YS1oaWRkZW49J3RydWUnXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1tZW51IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWVudSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xuICB6LWluZGV4OiAzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICBvdXRsaW5lOiAwO1xuICBtaW4td2lkdGg6IDI0OHB4O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGUtb3V0LWR1cmF0aW9uLW1zKVxuICAgIHZhcigtLWFuaW1hdGUtb3V0LXRpbWluZy1mdW5jdGlvbik7XG5cbiAgJltkYXRhLXJlbmRlcmVkPSd0cnVlJ10ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgc2NhbGU6IDE7XG4gIH1cbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItaW5uZXIge1xuICBwYWRkaW5nOiA2cHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDZweDtcbiAgaGVpZ2h0OiB2YXIoLS1zaXplLTM2KTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgc3ZnIHtcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1mb290ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG4gIHBhZGRpbmc6IDZweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWl0ZW1bZGF0YS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItdmFsdWUge1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudCB7XG4gIC0tY29sb3ItcHJpbWFyeTogdmFyKC0tY29sb3ItZ3JheS04MDApO1xuICAtLWNvbG9yLXNlY29uZGFyeTogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIG1pbi13aWR0aDogdmFyKC0tc2l6ZS00MCk7XG4gIGhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21hbGwpO1xuICBwYWRkaW5nOiAycHg7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBib3JkZXItcmFkaXVzOiAxMjhweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEzKTtcbiAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblxuICAmW2RhdGEtaGFzLWlzc3Vlcz0ndHJ1ZSddIHtcbiAgICAtLWNvbG9yLXByaW1hcnk6IHZhcigtLWNvbG9yLXJlZC04MDApO1xuICAgIC0tY29sb3Itc2Vjb25kYXJ5OiB2YXIoLS1jb2xvci1yZWQtMTAwKTtcbiAgfVxuXG4gIC5kZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50LWluZGljYXRvciB7XG4gICAgd2lkdGg6IHZhcigtLXNpemUtOCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTgpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1jb2xvci1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgfVxufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1zaG9ydGN1dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogNHB4O1xuXG4gIGtiZCB7XG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjApO1xuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xuICB9XG59XG5cbi5kZXYtdG9vbHMtZ3JhYmJpbmcge1xuICBjdXJzb3I6IGdyYWJiaW5nO1xuXG4gID4gKiB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1pbmRpY2F0b3IvZGV2dG9vbHMtaW5kaWNhdG9yLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRTtJQUNFLGFBQWE7RUFDZjtBQUNGOztBQUVBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsdUNBQXVDO0VBQ3ZDLDZDQUE2QztFQUM3Qyw0QkFBNEI7RUFDNUIsOEJBQThCO0VBQzlCLGdDQUFnQztFQUNoQyxrQkFBa0I7RUFDbEIsbUNBQW1DO0VBQ25DLFVBQVU7RUFDVixnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLFVBQVU7RUFDVixnQkFBZ0I7RUFDaEI7c0NBQ29DOztFQUVwQztJQUNFLFVBQVU7SUFDVixRQUFRO0VBQ1Y7QUFDRjs7QUFFQTtFQUNFLFlBQVk7RUFDWixXQUFXO0FBQ2I7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGdDQUFnQztFQUNoQyxpQkFBaUI7RUFDakIsbUJBQW1COztFQUVuQjtJQUNFLHFCQUFxQjtJQUNyQixzQkFBc0I7RUFDeEI7O0VBRUE7SUFDRSxVQUFVO0VBQ1o7QUFDRjs7QUFFQTtFQUNFLHVDQUF1QztFQUN2QyxZQUFZO0VBQ1osMkNBQTJDO0VBQzNDLFdBQVc7QUFDYjs7QUFFQTtFQUNFLGVBQWU7RUFDZix1Q0FBdUM7QUFDekM7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIsMkJBQTJCO0VBQzNCLDZCQUE2QjtBQUMvQjs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QiwyQkFBMkI7RUFDM0IsNEJBQTRCO0VBQzVCLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLHNDQUFzQztFQUN0Qyx3Q0FBd0M7RUFDeEMsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLFFBQVE7RUFDUix5QkFBeUI7RUFDekIsc0JBQXNCO0VBQ3RCLHVDQUF1QztFQUN2Qyw2Q0FBNkM7RUFDN0MsNEJBQTRCO0VBQzVCLCtCQUErQjtFQUMvQixZQUFZO0VBQ1osNkJBQTZCO0VBQzdCLG9CQUFvQjtFQUNwQixnQkFBZ0I7RUFDaEIseUJBQXlCO0VBQ3pCLGtDQUFrQzs7RUFFbEM7SUFDRSxxQ0FBcUM7SUFDckMsdUNBQXVDO0VBQ3pDOztFQUVBO0lBQ0Usb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixnQ0FBZ0M7SUFDaEMsNENBQTRDO0lBQzVDLGtCQUFrQjtFQUNwQjtBQUNGOztBQUVBO0VBQ0UsYUFBYTtFQUNiLFFBQVE7O0VBRVI7SUFDRSxxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGdDQUFnQztJQUNoQyx1Q0FBdUM7SUFDdkMsbUNBQW1DO0lBQ25DLHVDQUF1QztJQUN2Qyw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLHlCQUF5QjtJQUN6QiwyQkFBMkI7RUFDN0I7QUFDRjs7QUFFQTtFQUNFLGdCQUFnQjs7RUFFaEI7SUFDRSxvQkFBb0I7RUFDdEI7QUFDRlwiLHNvdXJjZXNDb250ZW50OltcIltkYXRhLW5leHRqcy10b2FzdF0ge1xcbiAgJltkYXRhLWhpZGRlbj0ndHJ1ZSddIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItbWVudSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZW51KTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XFxuICB6LWluZGV4OiAzO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBvdXRsaW5lOiAwO1xcbiAgbWluLXdpZHRoOiAyNDhweDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0ZS1vdXQtZHVyYXRpb24tbXMpXFxuICAgIHZhcigtLWFuaW1hdGUtb3V0LXRpbWluZy1mdW5jdGlvbik7XFxuXFxuICAmW2RhdGEtcmVuZGVyZWQ9J3RydWUnXSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHNjYWxlOiAxO1xcbiAgfVxcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1pbm5lciB7XFxuICBwYWRkaW5nOiA2cHg7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItaXRlbSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDhweCA2cHg7XFxuICBoZWlnaHQ6IHZhcigtLXNpemUtMzYpO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFxuICBzdmcge1xcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICB9XFxuXFxuICAmOmZvY3VzLXZpc2libGUge1xcbiAgICBvdXRsaW5lOiAwO1xcbiAgfVxcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1mb290ZXIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgcGFkZGluZzogNnB4O1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1pdGVtW2RhdGEtc2VsZWN0ZWQ9J3RydWUnXSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWxhYmVsIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItdmFsdWUge1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnQge1xcbiAgLS1jb2xvci1wcmltYXJ5OiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XFxuICAtLWNvbG9yLXNlY29uZGFyeTogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBnYXA6IDhweDtcXG4gIG1pbi13aWR0aDogdmFyKC0tc2l6ZS00MCk7XFxuICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbWFsbCk7XFxuICBwYWRkaW5nOiAycHg7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IDEyOHB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMyk7XFxuICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xcblxcbiAgJltkYXRhLWhhcy1pc3N1ZXM9J3RydWUnXSB7XFxuICAgIC0tY29sb3ItcHJpbWFyeTogdmFyKC0tY29sb3ItcmVkLTgwMCk7XFxuICAgIC0tY29sb3Itc2Vjb25kYXJ5OiB2YXIoLS1jb2xvci1yZWQtMTAwKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50LWluZGljYXRvciB7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTgpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtOCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgfVxcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1zaG9ydGN1dCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZ2FwOiA0cHg7XFxuXFxuICBrYmQge1xcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICB9XFxufVxcblxcbi5kZXYtdG9vbHMtZ3JhYmJpbmcge1xcbiAgY3Vyc29yOiBncmFiYmluZztcXG5cXG4gID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgfVxcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtcGFuZWwvcmVzaXplL3Jlc2l6ZS1oYW5kbGUuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC5yZXNpemUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICAvKiB0b2RvOiBiZXR0ZXIgeiBpbmRleCAqL1xuICB6LWluZGV4OiAxMDtcbiAgLyogdG9kbzogaXMgdGhpcyBuZWVkZWQgKi9cbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi5yZXNpemUtbGluZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgLyogdG9kbyBzbWFydGVyIHogaW5kZXggKi9cbiAgei1pbmRleDogLTE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAvKiBhIG5vcm1hbCBleGl0IGFuaW1hdGlvbiBjdXJ2ZS0gYXQgdGhpcyBwb2ludCB0aGUgZXhpdCBhbmltYXRpb24gaXMgKi9cbiAgLyogaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZSBzbyB3ZSBkb24ndCBuZWVkIGEgYmVzcG9rZSBjdXJ2ZSAqL1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAvKiB0b2RvOiBiZXR0ZXIgdmFyPyAqL1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG59XG5cbi8qIHN0YXJ0IHJlYWxseSBmYXN0IGJlY2F1c2Ugd2Ugc3RhcnQgc3VwZXIgaGlkZGVuIGluaXRpYWxseSBiZWhpbmQgdGhlIHBhbmVsLCBvdGhlcndpc2UgZmVlbHMgbGlrZSBhbiB1bmludGVuZGVkIGFuaW1hdGlvbiBkZWxheSAqL1xuLnJlc2l6ZS1jb250YWluZXI6aG92ZXIgfiAucmVzaXplLWxpbmUge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDAuOSk7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0LFxuLnJlc2l6ZS1jb250YWluZXIubGVmdCB7XG4gIHRvcDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMjJweDtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG5cbi8qIHRvZG86IGRvbid0IGhhcmQgY29kZSBhbGwgdGhlc2UgdmFsdWVzL3VzZSB2YXJzICovXG5cbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbSxcbi5yZXNpemUtY29udGFpbmVyLnRvcCB7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDIycHg7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci50b3Age1xuICB0b3A6IC03cHg7XG59XG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20ge1xuICBib3R0b206IC03cHg7XG59XG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0IHtcbiAgbGVmdDogLTdweDtcbn1cbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0IHtcbiAgcmlnaHQ6IC03cHg7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLnRvcC1sZWZ0LFxuLnJlc2l6ZS1jb250YWluZXIudG9wLXJpZ2h0LFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLWxlZnQsXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tcmlnaHQge1xuICB3aWR0aDogMjZweDtcbiAgaGVpZ2h0OiAyNnB4O1xuICB6LWluZGV4OiAxNTtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIudG9wLWxlZnQge1xuICB0b3A6IC01cHg7XG4gIGxlZnQ6IC01cHg7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG4ucmVzaXplLWNvbnRhaW5lci50b3AtcmlnaHQge1xuICB0b3A6IC01cHg7XG4gIHJpZ2h0OiAtNXB4O1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLWxlZnQge1xuICBib3R0b206IC01cHg7XG4gIGxlZnQ6IC01cHg7XG4gIGN1cnNvcjogbmVzdy1yZXNpemU7XG59XG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tcmlnaHQge1xuICBib3R0b206IC01cHg7XG4gIHJpZ2h0OiAtNXB4O1xuICBjdXJzb3I6IG53c2UtcmVzaXplO1xufVxuXG4ucmVzaXplLWxpbmUudG9wLFxuLnJlc2l6ZS1saW5lLmJvdHRvbSB7XG4gIGhlaWdodDogMThweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbn1cblxuLnJlc2l6ZS1saW5lLmxlZnQsXG4ucmVzaXplLWxpbmUucmlnaHQge1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG59XG5cbi5yZXNpemUtbGluZS50b3Age1xuICB0b3A6IC03cHg7XG4gIGxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItbGVmdCwgMnB4KSk7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItaG9yaXpvbnRhbCwgNHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpIDAgMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE4cHgpO1xufVxuXG4ucmVzaXplLWxpbmUuYm90dG9tIHtcbiAgYm90dG9tOiAtN3B4O1xuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLWxlZnQsIDJweCkpO1xuICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLWhvcml6b250YWwsIDRweCkpO1xuICBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZyk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMThweCk7XG59XG5cbi5yZXNpemUtbGluZS5sZWZ0IHtcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLXRvcCwgMnB4KSk7XG4gIGxlZnQ6IC03cHg7XG4gIGhlaWdodDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLXZlcnRpY2FsLCA0cHgpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZykgMCAwIHZhcigtLXJvdW5kZWQtbGcpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMThweCk7XG59XG5cbi5yZXNpemUtbGluZS5yaWdodCB7XG4gIHRvcDogY2FsYygtMSAqIHZhcigtLWJvcmRlci10b3AsIDJweCkpO1xuICByaWdodDogLTdweDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItdmVydGljYWwsIDRweCkpO1xuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpIDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMThweCk7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLnJpZ2h0LFxuLnJlc2l6ZS1jb250YWluZXIubGVmdDpob3ZlciB+IC5yZXNpemUtbGluZS5sZWZ0LFxuLnJlc2l6ZS1saW5lLnJpZ2h0LmRyYWdnaW5nLFxuLnJlc2l6ZS1saW5lLmxlZnQuZHJhZ2dpbmcge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbTpob3ZlciB+IC5yZXNpemUtbGluZS5ib3R0b20sXG4ucmVzaXplLWNvbnRhaW5lci50b3A6aG92ZXIgfiAucmVzaXplLWxpbmUudG9wLFxuLnJlc2l6ZS1saW5lLmJvdHRvbS5kcmFnZ2luZyxcbi5yZXNpemUtbGluZS50b3AuZHJhZ2dpbmcge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHNob3cgbXVsdGlwbGUgaGFuZGxlcyBhdCBvbmNlXG4gKiB3ZSBzaG91bGQgb25seSBldmVyIHNob3cgdGhlIGN1cnJlbnRseSByZXNpemluZyBoYW5kbGVcbiAqIHJlZ2FyZGxlc3Mgb2YgaG92ZXIgc3RhdGUgXG4gKi9cbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLnJpZ2h0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLnJpZ2h0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTtcbn1cbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLmxlZnQ6aG92ZXIgfiAucmVzaXplLWxpbmUubGVmdCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTtcbn1cbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLmJvdHRvbTpob3ZlciB+IC5yZXNpemUtbGluZS5ib3R0b20ge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xufVxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIudG9wOmhvdmVyIH4gLnJlc2l6ZS1saW5lLnRvcCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1wYW5lbC9yZXNpemUvcmVzaXplLWhhbmRsZS5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixXQUFXO0VBQ1gseUJBQXlCO0VBQ3pCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsV0FBVztFQUNYLG9CQUFvQjtFQUNwQix1RUFBdUU7RUFDdkUsNERBQTREO0VBQzVELHVEQUF1RDtFQUN2RCxzQkFBc0I7RUFDdEIsdUNBQXVDO0FBQ3pDOztBQUVBLG1JQUFtSTtBQUNuSTtFQUNFLDREQUE0RDtBQUM5RDs7QUFFQTs7RUFFRSxNQUFNO0VBQ04sWUFBWTtFQUNaLFdBQVc7RUFDWCxpQkFBaUI7QUFDbkI7O0FBRUEsb0RBQW9EOztBQUVwRDs7RUFFRSxPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVk7RUFDWixpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxTQUFTO0FBQ1g7QUFDQTtFQUNFLFlBQVk7QUFDZDtBQUNBO0VBQ0UsVUFBVTtBQUNaO0FBQ0E7RUFDRSxXQUFXO0FBQ2I7O0FBRUE7Ozs7RUFJRSxXQUFXO0VBQ1gsWUFBWTtFQUNaLFdBQVc7QUFDYjs7QUFFQTtFQUNFLFNBQVM7RUFDVCxVQUFVO0VBQ1YsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxTQUFTO0VBQ1QsV0FBVztFQUNYLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UsWUFBWTtFQUNaLFVBQVU7RUFDVixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLFlBQVk7RUFDWixXQUFXO0VBQ1gsbUJBQW1CO0FBQ3JCOztBQUVBOztFQUVFLFlBQVk7RUFDWixXQUFXO0VBQ1gsNkNBQTZDO0FBQy9DOztBQUVBOztFQUVFLFdBQVc7RUFDWCxZQUFZO0VBQ1osNkNBQTZDO0FBQy9DOztBQUVBO0VBQ0UsU0FBUztFQUNULHdDQUF3QztFQUN4QyxpREFBaUQ7RUFDakQsc0RBQXNEO0VBQ3RELDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFLFlBQVk7RUFDWix3Q0FBd0M7RUFDeEMsaURBQWlEO0VBQ2pELHNEQUFzRDtFQUN0RCw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRSxzQ0FBc0M7RUFDdEMsVUFBVTtFQUNWLGdEQUFnRDtFQUNoRCxzREFBc0Q7RUFDdEQsMkJBQTJCO0FBQzdCOztBQUVBO0VBQ0Usc0NBQXNDO0VBQ3RDLFdBQVc7RUFDWCxnREFBZ0Q7RUFDaEQsc0RBQXNEO0VBQ3RELDRCQUE0QjtBQUM5Qjs7QUFFQTs7OztFQUlFLHdCQUF3QjtBQUMxQjs7QUFFQTs7OztFQUlFLHdCQUF3QjtBQUMxQjs7QUFFQTs7O0VBR0U7QUFDRjtFQUNFLDRCQUE0QjtBQUM5QjtBQUNBO0VBQ0UsMkJBQTJCO0FBQzdCO0FBQ0E7RUFDRSw0QkFBNEI7QUFDOUI7QUFDQTtFQUNFLDJCQUEyQjtBQUM3QlwiLHNvdXJjZXNDb250ZW50OltcIi5yZXNpemUtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIC8qIHRvZG86IGJldHRlciB6IGluZGV4ICovXFxuICB6LWluZGV4OiAxMDtcXG4gIC8qIHRvZG86IGlzIHRoaXMgbmVlZGVkICovXFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnJlc2l6ZS1saW5lIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIC8qIHRvZG8gc21hcnRlciB6IGluZGV4ICovXFxuICB6LWluZGV4OiAtMTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgLyogYSBub3JtYWwgZXhpdCBhbmltYXRpb24gY3VydmUtIGF0IHRoaXMgcG9pbnQgdGhlIGV4aXQgYW5pbWF0aW9uIGlzICovXFxuICAvKiBpbW1lZGlhdGVseSByZXNwb25zaXZlIHNvIHdlIGRvbid0IG5lZWQgYSBiZXNwb2tlIGN1cnZlICovXFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgLyogdG9kbzogYmV0dGVyIHZhcj8gKi9cXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG59XFxuXFxuLyogc3RhcnQgcmVhbGx5IGZhc3QgYmVjYXVzZSB3ZSBzdGFydCBzdXBlciBoaWRkZW4gaW5pdGlhbGx5IGJlaGluZCB0aGUgcGFuZWwsIG90aGVyd2lzZSBmZWVscyBsaWtlIGFuIHVuaW50ZW5kZWQgYW5pbWF0aW9uIGRlbGF5ICovXFxuLnJlc2l6ZS1jb250YWluZXI6aG92ZXIgfiAucmVzaXplLWxpbmUge1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAwLjkpO1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci5yaWdodCxcXG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0IHtcXG4gIHRvcDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAyMnB4O1xcbiAgY3Vyc29yOiBldy1yZXNpemU7XFxufVxcblxcbi8qIHRvZG86IGRvbid0IGhhcmQgY29kZSBhbGwgdGhlc2UgdmFsdWVzL3VzZSB2YXJzICovXFxuXFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLFxcbi5yZXNpemUtY29udGFpbmVyLnRvcCB7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBjdXJzb3I6IG5zLXJlc2l6ZTtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIudG9wIHtcXG4gIHRvcDogLTdweDtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tIHtcXG4gIGJvdHRvbTogLTdweDtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIubGVmdCB7XFxuICBsZWZ0OiAtN3B4O1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5yaWdodCB7XFxuICByaWdodDogLTdweDtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIudG9wLWxlZnQsXFxuLnJlc2l6ZS1jb250YWluZXIudG9wLXJpZ2h0LFxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1sZWZ0LFxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1yaWdodCB7XFxuICB3aWR0aDogMjZweDtcXG4gIGhlaWdodDogMjZweDtcXG4gIHotaW5kZXg6IDE1O1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci50b3AtbGVmdCB7XFxuICB0b3A6IC01cHg7XFxuICBsZWZ0OiAtNXB4O1xcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIudG9wLXJpZ2h0IHtcXG4gIHRvcDogLTVweDtcXG4gIHJpZ2h0OiAtNXB4O1xcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLWxlZnQge1xcbiAgYm90dG9tOiAtNXB4O1xcbiAgbGVmdDogLTVweDtcXG4gIGN1cnNvcjogbmVzdy1yZXNpemU7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1yaWdodCB7XFxuICBib3R0b206IC01cHg7XFxuICByaWdodDogLTVweDtcXG4gIGN1cnNvcjogbndzZS1yZXNpemU7XFxufVxcblxcbi5yZXNpemUtbGluZS50b3AsXFxuLnJlc2l6ZS1saW5lLmJvdHRvbSB7XFxuICBoZWlnaHQ6IDE4cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLmxlZnQsXFxuLnJlc2l6ZS1saW5lLnJpZ2h0IHtcXG4gIHdpZHRoOiAxOHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUudG9wIHtcXG4gIHRvcDogLTdweDtcXG4gIGxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItbGVmdCwgMnB4KSk7XFxuICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLWhvcml6b250YWwsIDRweCkpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZykgMCAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE4cHgpO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUuYm90dG9tIHtcXG4gIGJvdHRvbTogLTdweDtcXG4gIGxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItbGVmdCwgMnB4KSk7XFxuICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLWhvcml6b250YWwsIDRweCkpO1xcbiAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xOHB4KTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLmxlZnQge1xcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLXRvcCwgMnB4KSk7XFxuICBsZWZ0OiAtN3B4O1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItdmVydGljYWwsIDRweCkpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZykgMCAwIHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE4cHgpO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUucmlnaHQge1xcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLXRvcCwgMnB4KSk7XFxuICByaWdodDogLTdweDtcXG4gIGhlaWdodDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLXZlcnRpY2FsLCA0cHgpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZykgMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMThweCk7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLnJpZ2h0LFxcbi5yZXNpemUtY29udGFpbmVyLmxlZnQ6aG92ZXIgfiAucmVzaXplLWxpbmUubGVmdCxcXG4ucmVzaXplLWxpbmUucmlnaHQuZHJhZ2dpbmcsXFxuLnJlc2l6ZS1saW5lLmxlZnQuZHJhZ2dpbmcge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b206aG92ZXIgfiAucmVzaXplLWxpbmUuYm90dG9tLFxcbi5yZXNpemUtY29udGFpbmVyLnRvcDpob3ZlciB+IC5yZXNpemUtbGluZS50b3AsXFxuLnJlc2l6ZS1saW5lLmJvdHRvbS5kcmFnZ2luZyxcXG4ucmVzaXplLWxpbmUudG9wLmRyYWdnaW5nIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG59XFxuXFxuLyogbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3Qgc2hvdyBtdWx0aXBsZSBoYW5kbGVzIGF0IG9uY2VcXG4gKiB3ZSBzaG91bGQgb25seSBldmVyIHNob3cgdGhlIGN1cnJlbnRseSByZXNpemluZyBoYW5kbGVcXG4gKiByZWdhcmRsZXNzIG9mIGhvdmVyIHN0YXRlIFxcbiAqL1xcbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLnJpZ2h0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLnJpZ2h0IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLmxlZnQ6aG92ZXIgfiAucmVzaXplLWxpbmUubGVmdCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLmJvdHRvbTpob3ZlciB+IC5yZXNpemUtbGluZS5ib3R0b20ge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIudG9wOmhvdmVyIH4gLnJlc2l6ZS1saW5lLnRvcCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0IC5wbHVzLWljb24ge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0OmhvdmVyIC5wbHVzLWljb24ge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS04MDApO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHN2ZyB7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyOmhvdmVyIHN2ZyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTcwMCk7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXJbZGlzYWJsZWRdIHN2Zyxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXJbZGlzYWJsZWRdOmhvdmVyIHN2ZyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duIHtcbiAgcGFkZGluZzogOHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgbWluLXdpZHRoOiAxMjBweDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggLTRweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY29sb3ItZ3JheS05MDApIDQlLCB0cmFuc3BhcmVudCk7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLXBvc2l0aW9uZXIge1xuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWluLXdpZHRoOiAyMjBweDtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbVtkYXRhLWRpc2FibGVkXSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW0gc3ZnIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICBjb2xvcjogY3VycmVudENvbG9yO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWdyb3VwLWxhYmVsIHtcbiAgcGFkZGluZzogOHB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtYm91bmRhcnktdHJpZ2dlci5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixRQUFRO0VBQ1IsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsNkJBQTZCO0VBQzdCLG9CQUFvQjtFQUNwQixZQUFZO0VBQ1oseUJBQXlCO0VBQ3pCLGVBQWU7RUFDZix1Q0FBdUM7QUFDekM7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGdDQUFnQztBQUNsQzs7QUFFQTtFQUNFLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxZQUFZO0VBQ1osY0FBYztFQUNkLHNCQUFzQjtBQUN4Qjs7QUFFQTtFQUNFLDRCQUE0QjtBQUM5Qjs7QUFFQTs7RUFFRSw0QkFBNEI7RUFDNUIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLHVDQUF1QztFQUN2Qyx1Q0FBdUM7RUFDdkMsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLHNGQUFzRjtBQUN4Rjs7QUFFQTtFQUNFLDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLDZCQUE2QjtFQUM3QixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsV0FBVztBQUNiOztBQUVBO0VBQ0UsNEJBQTRCO0VBQzVCLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxpQ0FBaUM7QUFDbkM7O0FBRUE7RUFDRSwyQkFBMkI7RUFDM0IsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0UsOEJBQThCO0VBQzlCLCtCQUErQjtBQUNqQzs7QUFFQTtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQiw0QkFBNEI7QUFDOUJcIixzb3VyY2VzQ29udGVudDpbXCIuc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZ2FwOiA0cHg7XFxuICBwYWRkaW5nOiA0cHggNnB4O1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dCB7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dCAucGx1cy1pY29uIHtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBlYXNlO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQ6aG92ZXIgLnBsdXMtaWNvbiB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS04MDApO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHN2ZyB7XFxuICB3aWR0aDogMTRweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIGZsZXgtc2hyaW5rOiAwO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcjpob3ZlciBzdmcge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNzAwKTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcltkaXNhYmxlZF0gc3ZnLFxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXJbZGlzYWJsZWRdOmhvdmVyIHN2ZyB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24ge1xcbiAgcGFkZGluZzogOHB4O1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcXG4gIG1pbi13aWR0aDogMTIwcHg7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggOHB4IC00cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNvbG9yLWdyYXktOTAwKSA0JSwgdHJhbnNwYXJlbnQpO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1wb3NpdGlvbmVyIHtcXG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDhweDtcXG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBtaW4td2lkdGg6IDIyMHB4O1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtW2RhdGEtZGlzYWJsZWRdIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtIHN2ZyB7XFxuICBtYXJnaW4tcmlnaHQ6IDEycHg7XFxuICBjb2xvcjogY3VycmVudENvbG9yO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpmaXJzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZ3JvdXAtbGFiZWwge1xcbiAgcGFkZGluZzogOHB4O1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtZXhwbG9yZXIuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC5zZWdtZW50LWV4cGxvcmVyLWNvbnRlbnQge1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xuICBwYWRkaW5nOiAwIDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbiAgZ2FwOiAxMnB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhci1wYXRoIHtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbSB7XG4gIG1hcmdpbjogNHB4IDA7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbTpudGgtY2hpbGQoZXZlbikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG59XG4uc2VnbWVudC1leHBsb3Jlci1pdGVtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgcGFkZGluZy1yaWdodDogNHB4O1xufVxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3ctbWFpbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWNoaWxkcmVuLS1pbnRlbmRlZCB7XG4gIHBhZGRpbmctbGVmdDogMTZweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lIHNlbGVjdCB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLXBhdGgge1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1wYXRoIHNtYWxsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMDtcbiAgb3BhY2l0eTogMDtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1uYW1lIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZXMge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZ2FwOiA4cHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlcyArIC5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIge1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwIDZweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1vdmVycmlkZGVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW1iZXItMzAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwgLmNvZGUtaWNvbiB7XG4gIG9wYWNpdHk6IDA7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbDpob3ZlciAuY29kZS1pY29uIHtcbiAgb3BhY2l0eTogMTtcbiAgd2lkdGg6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWw6aG92ZXIge1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMC45NSk7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLWJ1aWx0aW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcbiAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLWNvbG9yLWdyYXktNTAwKTtcbiAgaGVpZ2h0OiAyNHB4O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1idWlsdGluIHN2ZyB7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIG1hcmdpbi1yaWdodDogLTRweDtcbn1cblxuLyogRm9vdGVyIHN0eWxlcyAqL1xuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyIHtcbiAgcGFkZGluZzogOHB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDZweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uLS1kaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBwYWRkaW5nOiAwIDZweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYW1iZXItMzAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRvb2x0aXAtLXNtIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10b29sdGlwLS1sZyB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogOHB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9ucy10b29sdGlwIHtcbiAgd2lkdGg6IDIwMHB4O1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtZXhwbG9yZXIuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLHlCQUF5QjtFQUN6QixjQUFjO0VBQ2QsV0FBVztFQUNYLFlBQVk7QUFDZDs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLDZDQUE2QztFQUM3QyxTQUFTO0FBQ1g7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsbUJBQW1CO0VBQ25CLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGFBQWE7RUFDYixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSw2Q0FBNkM7QUFDL0M7QUFDQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixrQkFBa0I7QUFDcEI7QUFDQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZiw2QkFBNkI7QUFDL0I7O0FBRUE7RUFDRSxrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxvQkFBb0I7RUFDcEIsV0FBVztFQUNYLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxxQkFBcUI7RUFDckIsUUFBUTtFQUNSLFVBQVU7QUFDWjtBQUNBO0VBQ0UsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLFFBQVE7RUFDUixpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixjQUFjO0VBQ2QsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLHVDQUF1QztFQUN2Qyw2QkFBNkI7QUFDL0I7QUFDQTtFQUNFLG9CQUFvQjtFQUNwQixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSx3Q0FBd0M7RUFDeEMsNkJBQTZCO0FBQy9COztBQUVBO0VBQ0UsVUFBVTtFQUNWLGNBQWM7RUFDZCxRQUFRO0VBQ1IsaUNBQWlDO0FBQ25DO0FBQ0E7RUFDRSxVQUFVO0VBQ1YsV0FBVztFQUNYLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLHdCQUF3QjtBQUMxQjs7QUFFQTtFQUNFLDZCQUE2QjtFQUM3Qiw0QkFBNEI7RUFDNUIsd0NBQXdDO0VBQ3hDLFlBQVk7RUFDWixlQUFlO0FBQ2pCO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIsa0JBQWtCO0FBQ3BCOztBQUVBLGtCQUFrQjtBQUNsQjtFQUNFLFlBQVk7RUFDWiwyQ0FBMkM7RUFDM0MsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsUUFBUTtFQUNSLFdBQVc7RUFDWCxZQUFZO0VBQ1osdUNBQXVDO0VBQ3ZDLHVDQUF1QztFQUN2QyxrQkFBa0I7RUFDbEIsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLHVDQUF1QztBQUN6Qzs7QUFFQTtFQUNFLGlDQUFpQztBQUNuQzs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLGVBQWU7RUFDZixZQUFZO0VBQ1osY0FBYztFQUNkLGtDQUFrQztFQUNsQyw2QkFBNkI7RUFDN0IsbUJBQW1CO0VBQ25CLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsY0FBYztBQUNoQjs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLG9CQUFvQjtFQUNwQixRQUFRO0FBQ1Y7O0FBRUE7RUFDRSxZQUFZO0FBQ2RcIixzb3VyY2VzQ29udGVudDpbXCIuc2VnbWVudC1leHBsb3Jlci1jb250ZW50IHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICBwYWRkaW5nOiAwIDhweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDE0cHggMTZweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gIGdhcDogMTJweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXItcGF0aCB7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0ge1xcbiAgbWFyZ2luOiA0cHggMDtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbTpudGgtY2hpbGQoZXZlbikge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtLXJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBhZGRpbmctdG9wOiAxMHB4O1xcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XFxuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93LW1haW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICB3aGl0ZS1zcGFjZTogcHJlO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWNoaWxkcmVuLS1pbnRlbmRlZCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZSBzZWxlY3Qge1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1wYXRoIHtcXG4gIG1hcmdpbi1yaWdodDogOHB4O1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tcGF0aCBzbWFsbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogMDtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1uYW1lIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVzIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgZ2FwOiA4cHg7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZXMgKyAuc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHtcXG4gIG1hcmdpbi1sZWZ0OiA4cHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBwYWRkaW5nOiAwIDZweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICBsaW5lLWhlaWdodDogMTZweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10ZXh0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tb3ZlcnJpZGRlbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci0zMDApO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwgLmNvZGUtaWNvbiB7XFxuICBvcGFjaXR5OiAwO1xcbiAgbWFyZ2luLWxlZnQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlLWluLW91dDtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbDpob3ZlciAuY29kZS1pY29uIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB3aWR0aDogMTJweDtcXG4gIG1hcmdpbi1sZWZ0OiA0cHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWw6aG92ZXIge1xcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOTUpO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1idWlsdGluIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICBoZWlnaHQ6IDI0cHg7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLWJ1aWx0aW4gc3ZnIHtcXG4gIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICBtYXJnaW4tcmlnaHQ6IC00cHg7XFxufVxcblxcbi8qIEZvb3RlciBzdHlsZXMgKi9cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXIge1xcbiAgcGFkZGluZzogOHB4O1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBnYXA6IDhweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogNnB4O1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24tLWRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci10ZXh0IHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJhZGdlIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgbWluLXdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcGFkZGluZzogMCA2cHg7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1hbWJlci0zMDApO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBsaW5lLWhlaWdodDogMTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10b29sdGlwLS1zbSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRvb2x0aXAtLWxnIHtcXG4gIG1pbi13aWR0aDogMjAwcHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgZ2FwOiA4cHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zLXRvb2x0aXAge1xcbiAgd2lkdGg6IDIwMHB4O1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvdG9hc3Qvc3R5bGUuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC5uZXh0anMtdG9hc3Qge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcbiAgbWF4LXdpZHRoOiA0MjBweDtcbiAgYm94LXNoYWRvdzogMHB4IDE2cHggMzJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4ubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQge1xuICBwYWRkaW5nOiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLTR4bCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b2FzdC9zdHlsZS5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0UsZUFBZTtFQUNmLDJCQUEyQjtFQUMzQixnQkFBZ0I7RUFDaEIsNkNBQTZDO0FBQy9DOztBQUVBO0VBQ0UsYUFBYTtFQUNiLGlDQUFpQztFQUNqQyxnQkFBZ0I7RUFDaEIscUNBQXFDO0VBQ3JDLHVDQUF1QztBQUN6Q1wiLHNvdXJjZXNDb250ZW50OltcIi5uZXh0anMtdG9hc3Qge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xcbiAgbWF4LXdpZHRoOiA0MjBweDtcXG4gIGJveC1zaGFkb3c6IDBweCAxNnB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcXG59XFxuXFxuLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50IHtcXG4gIHBhZGRpbmc6IDE2cHg7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLTR4bCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLnRvb2x0aXAtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLnRvb2x0aXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDZweCAxMnB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG59XG5cbi50b29sdGlwLWFycm93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCk7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi50b29sdGlwLWFycm93LS10b3Age1xuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcbiAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgYm90dG9tOiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG59XG5cbi50b29sdGlwLWFycm93LS1ib3R0b20ge1xuICBib3JkZXItd2lkdGg6IDAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgdG9wOiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xufVxuXG4udG9vbHRpcC1hcnJvdy0tbGVmdCB7XG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwIHZhcigtLWFycm93LXNpemUsIDZweClcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xuICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgcmlnaHQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLnRvb2x0aXAtYXJyb3ctLXJpZ2h0IHtcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweClcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDA7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgbGVmdDogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbn1cblxuLnRvb2x0aXAtcG9zaXRpb25lciB7XG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsY0FBYztBQUNoQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLDRCQUE0QjtFQUM1Qix3Q0FBd0M7QUFDMUM7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxtQkFBbUI7RUFDbkIsb0NBQW9DO0VBQ3BDLHlCQUF5QjtBQUMzQjs7QUFFQTtFQUNFOzBCQUN3QjtFQUN4Qix3Q0FBd0M7RUFDeEMsU0FBUztFQUNULDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFOzBCQUN3QjtFQUN4QiwyQ0FBMkM7RUFDM0MsTUFBTTtFQUNOLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFOzBCQUN3QjtFQUN4Qix5Q0FBeUM7RUFDekMsUUFBUTtFQUNSLDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFOzRCQUMwQjtFQUMxQiwwQ0FBMEM7RUFDMUMsT0FBTztFQUNQLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLDJCQUEyQjtBQUM3QlwiLHNvdXJjZXNDb250ZW50OltcIi50b29sdGlwLXdyYXBwZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxufVxcblxcbi50b29sdGlwIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmc6IDZweCAxMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgbGluZS1oZWlnaHQ6IDEuNDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxufVxcblxcbi50b29sdGlwLWFycm93IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi50b29sdGlwLWFycm93LS10b3Age1xcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweCkgMFxcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGJvdHRvbTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG59XFxuXFxuLnRvb2x0aXAtYXJyb3ctLWJvdHRvbSB7XFxuICBib3JkZXItd2lkdGg6IDAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXFxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgdG9wOiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcXG59XFxuXFxuLnRvb2x0aXAtYXJyb3ctLWxlZnQge1xcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICByaWdodDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG59XFxuXFxuLnRvb2x0aXAtYXJyb3ctLXJpZ2h0IHtcXG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXFxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCkgMDtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGxlZnQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcbn1cXG5cXG4udG9vbHRpcC1wb3NpdGlvbmVyIHtcXG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9nbG9iYWwuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5mfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpLGw9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9ub3JtYWxpemUuY3NzXCIpLHM9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGVmYXVsdC10aGVtZS5jc3NcIiksYz1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kYXJrLXRoZW1lLmNzc1wiKSx1PW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2NvbG9ycy5jc3NcIiksZD1pKCkobygpKTtkLmkobC5aKSxkLmkocy5aKSxkLmkoYy5aKSxkLmkodS5aKSxkLnB1c2goW2UuaWQsYC8qIGRldnRvb2wgZ2xvYmFsIGNzcyB2YXJpYWJsZXMgKi9cbjpob3N0IHtcbiAgLyogdmFyaWFibGVzICovXG4gIC0tdG9wLXotaW5kZXg6IDIxNDc0ODM2NDc7XG59XG5cbi8qIGdsb2JhbCBzdHlsZXMgKi9cbioge1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuLyogZ2xvYmFsIHJlc2V0IGZvciBkcmFnZ2FibGUgY29udGVudCBzY3JvbGxiYXIgc3R5bGVzICovXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSxcbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdICoge1xuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDZweDtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMXJlbSAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDFyZW0gMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XG4gIH1cbn1cblxuLyogUGxhY2Ugb3ZlcmZsb3c6IGhpZGRlbiBvbiB0aGlzIHNvIHdlIGNhbiBicmVhayBvdXQgZnJvbSBbZGF0YS1uZXh0anMtZGlhbG9nXSAqL1xuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9nbG9iYWwuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFLQSxpQ0FBaUM7QUFDakM7RUFDRSxjQUFjO0VBQ2QseUJBQXlCO0FBQzNCOztBQUVBLGtCQUFrQjtBQUNsQjtFQUNFLG1DQUFtQztBQUNyQzs7QUFFQSx3REFBd0Q7QUFDeEQ7O0VBRUU7SUFDRSxVQUFVO0lBQ1YsV0FBVztJQUNYLDRCQUE0QjtJQUM1QixtQkFBbUI7RUFDckI7O0VBRUE7SUFDRSxhQUFhO0VBQ2Y7O0VBRUE7SUFDRSw0QkFBNEI7SUFDNUIsNkNBQTZDO0VBQy9DOztFQUVBO0lBQ0UsbUJBQW1CO0lBQ25CLHVDQUF1QztFQUN6QztBQUNGOztBQUVBLGlGQUFpRjtBQUNqRjtFQUNFLGdCQUFnQjtFQUNoQixzQkFBc0I7QUFDeEJcIixzb3VyY2VzQ29udGVudDpbXCJAaW1wb3J0ICcuL25vcm1hbGl6ZS5jc3MnO1xcbkBpbXBvcnQgJy4vc3R5bGVzL2RlZmF1bHQtdGhlbWUuY3NzJztcXG5AaW1wb3J0ICcuL3N0eWxlcy9kYXJrLXRoZW1lLmNzcyc7XFxuQGltcG9ydCAnLi9zdHlsZXMvY29sb3JzLmNzcyc7XFxuXFxuLyogZGV2dG9vbCBnbG9iYWwgY3NzIHZhcmlhYmxlcyAqL1xcbjpob3N0IHtcXG4gIC8qIHZhcmlhYmxlcyAqL1xcbiAgLS10b3Atei1pbmRleDogMjE0NzQ4MzY0NztcXG59XFxuXFxuLyogZ2xvYmFsIHN0eWxlcyAqL1xcbioge1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxufVxcblxcbi8qIGdsb2JhbCByZXNldCBmb3IgZHJhZ2dhYmxlIGNvbnRlbnQgc2Nyb2xsYmFyIHN0eWxlcyAqL1xcbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdLFxcbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdICoge1xcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgICB3aWR0aDogNnB4O1xcbiAgICBoZWlnaHQ6IDZweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDFyZW0gMXJlbTtcXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG4gIH1cXG5cXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxuXFxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxcmVtIDFyZW07XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIH1cXG5cXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgfVxcbn1cXG5cXG4vKiBQbGFjZSBvdmVyZmxvdzogaGlkZGVuIG9uIHRoaXMgc28gd2UgY2FuIGJyZWFrIG91dCBmcm9tIFtkYXRhLW5leHRqcy1kaWFsb2ddICovXFxuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0ge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGY9ZH0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbWVudS9wYW5lbC1yb3V0ZXIuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC8qIFBhbmVsIGNvbnRlbnQgcGFkZGluZyBzdHlsZXMgKi9cbi5wYW5lbC1jb250ZW50IHtcbiAgcGFkZGluZzogMTZweDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogVXNlciBwcmVmZXJlbmNlcyB3cmFwcGVyIHN0eWxlcyAqL1xuLnVzZXItcHJlZmVyZW5jZXMtd3JhcHBlciB7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIFBhbmVsIHJvdXRlIGJhc2Ugc3R5bGVzICovXG4ucGFuZWwtcm91dGUge1xuICBvcGFjaXR5OiB2YXIoLS1wYW5lbC1vcGFjaXR5KTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tcGFuZWwtdHJhbnNpdGlvbik7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L21lbnUvcGFuZWwtcm91dGVyLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUEsaUNBQWlDO0FBQ2pDO0VBQ0UsYUFBYTtFQUNiLGdCQUFnQjtFQUNoQixnQkFBZ0I7QUFDbEI7O0FBRUEsb0NBQW9DO0FBQ3BDO0VBQ0UsYUFBYTtFQUNiLGdCQUFnQjtFQUNoQixnQkFBZ0I7QUFDbEI7O0FBRUEsNEJBQTRCO0FBQzVCO0VBQ0UsNkJBQTZCO0VBQzdCLG1DQUFtQztBQUNyQ1wiLHNvdXJjZXNDb250ZW50OltcIi8qIFBhbmVsIGNvbnRlbnQgcGFkZGluZyBzdHlsZXMgKi9cXG4ucGFuZWwtY29udGVudCB7XFxuICBwYWRkaW5nOiAxNnB4O1xcbiAgcGFkZGluZy10b3A6IDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcblxcbi8qIFVzZXIgcHJlZmVyZW5jZXMgd3JhcHBlciBzdHlsZXMgKi9cXG4udXNlci1wcmVmZXJlbmNlcy13cmFwcGVyIHtcXG4gIHBhZGRpbmc6IDIwcHg7XFxuICBwYWRkaW5nLXRvcDogOHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLyogUGFuZWwgcm91dGUgYmFzZSBzdHlsZXMgKi9cXG4ucGFuZWwtcm91dGUge1xcbiAgb3BhY2l0eTogdmFyKC0tcGFuZWwtb3BhY2l0eSk7XFxuICB0cmFuc2l0aW9uOiB2YXIoLS1wYW5lbC10cmFuc2l0aW9uKTtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9ub3JtYWxpemUuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYDpob3N0IHtcbiAgYWxsOiBpbml0aWFsO1xuXG4gIC8qIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgaXMgbm90IHJlc2V0IGJ5ICdhbGwnICovXG4gIGRpcmVjdGlvbjogbHRyO1xufVxuXG4vKiFcbiAqIEJvb3RzdHJhcCBSZWJvb3QgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqIEZvcmtlZCBmcm9tIE5vcm1hbGl6ZS5jc3MsIGxpY2Vuc2VkIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKVxuICovXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG46aG9zdCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG59XG5cbmFydGljbGUsXG5hc2lkZSxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubmF2LFxuc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG46aG9zdCB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLFxuICAgICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJyxcbiAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ05vdG8gQ29sb3IgRW1vamknO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1mb250KTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuOmhvc3Q6bm90KGJ1dHRvbikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuXG5bdGFiaW5kZXg9Jy0xJ106Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbn1cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuYWJiclt0aXRsZV0sXG5hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIGN1cnNvcjogaGVscDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbn1cblxuYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbm9sLFxudWwsXG5kbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG5cbm9sIG9sLFxudWwgdWwsXG5vbCB1bCxcbnVsIG9sIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZHQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDAgMCAxNnB4O1xufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuc3ViLFxuc3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuYSB7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5hOmhvdmVyIHtcbiAgY29sb3I6ICMwMDU2YjM7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuYTpub3QoW2hyZWZdKTpob3ZlciB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnByZSxcbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsXG4gICAgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxucHJlIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMCAwIDE2cHg7XG59XG5cbmltZyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuc3ZnIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG5jYXB0aW9uIHtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XG59XG5cbnRoIHtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbn1cblxubGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZDtcbiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO1xufVxuXG5idXR0b246Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG5zZWxlY3Qge1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9J2J1dHRvbiddOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9J3Jlc2V0J106bm90KDpkaXNhYmxlZCksXG5bdHlwZT0nc3VibWl0J106bm90KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdidXR0b24nXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9J3N1Ym1pdCddOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPSdyYWRpbyddLFxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmlucHV0W3R5cGU9J2RhdGUnXSxcbmlucHV0W3R5cGU9J3RpbWUnXSxcbmlucHV0W3R5cGU9J2RhdGV0aW1lLWxvY2FsJ10sXG5pbnB1dFt0eXBlPSdtb250aCddIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5maWVsZHNldCB7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG5bdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L25vcm1hbGl6ZS5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0UsWUFBWTs7RUFFWixpREFBaUQ7RUFDakQsY0FBYztBQUNoQjs7QUFFQTs7Ozs7O0VBTUU7QUFDRjs7O0VBR0Usc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtFQUNqQiw4QkFBOEI7RUFDOUIsNkNBQTZDO0FBQy9DOztBQUVBOzs7Ozs7Ozs7O0VBVUUsY0FBYztBQUNoQjs7QUFFQTtFQUNFLFNBQVM7RUFDVDs7MkRBRXlEO0VBQ3pELGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHdCQUF3QjtFQUN4QixnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRSx1QkFBdUI7RUFDdkIsU0FBUztFQUNULGlCQUFpQjtBQUNuQjs7QUFFQTs7Ozs7O0VBTUUsYUFBYTtFQUNiLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7QUFDckI7O0FBRUE7O0VBRUUsMEJBQTBCO0VBQzFCLHlDQUF5QztFQUN6QyxpQ0FBaUM7RUFD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IGluaXRpYWw7XFxuXFxuICAvKiB0aGUgZGlyZWN0aW9uIHByb3BlcnR5IGlzIG5vdCByZXNldCBieSAnYWxsJyAqL1xcbiAgZGlyZWN0aW9uOiBsdHI7XFxufVxcblxcbi8qIVxcbiAqIEJvb3RzdHJhcCBSZWJvb3QgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVGhlIEJvb3RzdHJhcCBBdXRob3JzXFxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXFxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcXG4gKiBGb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzLCBsaWNlbnNlZCBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZClcXG4gKi9cXG4qLFxcbio6OmJlZm9yZSxcXG4qOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG5cXG46aG9zdCB7XFxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xcbn1cXG5cXG5hcnRpY2xlLFxcbmFzaWRlLFxcbmZpZ2NhcHRpb24sXFxuZmlndXJlLFxcbmZvb3RlcixcXG5oZWFkZXIsXFxuaGdyb3VwLFxcbm1haW4sXFxubmF2LFxcbnNlY3Rpb24ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbjpob3N0IHtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90byxcXG4gICAgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLFxcbiAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ05vdG8gQ29sb3IgRW1vamknO1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZm9udCk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG5cXG46aG9zdDpub3QoYnV0dG9uKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbn1cXG5cXG5bdGFiaW5kZXg9Jy0xJ106Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XFxuICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbmhyIHtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgaGVpZ2h0OiAwO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxufVxcblxcbmgxLFxcbmgyLFxcbmgzLFxcbmg0LFxcbmg1LFxcbmg2IHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiA4cHg7XFxufVxcblxcbnAge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XFxufVxcblxcbmFiYnJbdGl0bGVdLFxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XFxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcXG4gIGN1cnNvcjogaGVscDtcXG4gIGJvcmRlci1ib3R0b206IDA7XFxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcXG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcXG59XFxuXFxuYWRkcmVzcyB7XFxuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxufVxcblxcbm9sLFxcbnVsLFxcbmRsIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xcbn1cXG5cXG5vbCBvbCxcXG51bCB1bCxcXG5vbCB1bCxcXG51bCBvbCB7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG5cXG5kdCB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cXG5cXG5kZCB7XFxuICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICBtYXJnaW4tbGVmdDogMDtcXG59XFxuXFxuYmxvY2txdW90ZSB7XFxuICBtYXJnaW46IDAgMCAxNnB4O1xcbn1cXG5cXG5iLFxcbnN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZGVyO1xcbn1cXG5cXG5zbWFsbCB7XFxuICBmb250LXNpemU6IDgwJTtcXG59XFxuXFxuc3ViLFxcbnN1cCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250LXNpemU6IDc1JTtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG5cXG5zdWIge1xcbiAgYm90dG9tOiAtMC4yNWVtO1xcbn1cXG5cXG5zdXAge1xcbiAgdG9wOiAtMC41ZW07XFxufVxcblxcbmEge1xcbiAgY29sb3I6ICMwMDdiZmY7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuYTpob3ZlciB7XFxuICBjb2xvcjogIzAwNTZiMztcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG5cXG5hOm5vdChbaHJlZl0pIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5hOm5vdChbaHJlZl0pOmhvdmVyIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5wcmUsXFxuY29kZSxcXG5rYmQsXFxuc2FtcCB7XFxuICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJyxcXG4gICAgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xcbiAgZm9udC1zaXplOiAxZW07XFxufVxcblxcbnByZSB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbn1cXG5cXG5maWd1cmUge1xcbiAgbWFyZ2luOiAwIDAgMTZweDtcXG59XFxuXFxuaW1nIHtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBib3JkZXItc3R5bGU6IG5vbmU7XFxufVxcblxcbnN2ZyB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuXFxudGFibGUge1xcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcXG59XFxuXFxuY2FwdGlvbiB7XFxuICBwYWRkaW5nLXRvcDogMTJweDtcXG4gIHBhZGRpbmctYm90dG9tOiAxMnB4O1xcbiAgY29sb3I6ICM2Yzc1N2Q7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XFxufVxcblxcbnRoIHtcXG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XFxufVxcblxcbmxhYmVsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG59XFxuXFxuYnV0dG9uIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBib3JkZXI6IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxufVxcblxcbmJ1dHRvbjpmb2N1cyB7XFxuICBvdXRsaW5lOiAxcHggZG90dGVkO1xcbiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO1xcbn1cXG5cXG5idXR0b246Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG5cXG5pbnB1dCxcXG5idXR0b24sXFxuc2VsZWN0LFxcbm9wdGdyb3VwLFxcbnRleHRhcmVhIHtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxufVxcblxcbmJ1dHRvbixcXG5pbnB1dCB7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG59XFxuXFxuYnV0dG9uLFxcbnNlbGVjdCB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG59XFxuXFxuc2VsZWN0IHtcXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xcbn1cXG5cXG5idXR0b24sXFxuW3R5cGU9J2J1dHRvbiddLFxcblt0eXBlPSdyZXNldCddLFxcblt0eXBlPSdzdWJtaXQnXSB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcXG59XFxuXFxuYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxcblt0eXBlPSdidXR0b24nXTpub3QoOmRpc2FibGVkKSxcXG5bdHlwZT0ncmVzZXQnXTpub3QoOmRpc2FibGVkKSxcXG5bdHlwZT0nc3VibWl0J106bm90KDpkaXNhYmxlZCkge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXFxuW3R5cGU9J2J1dHRvbiddOjotbW96LWZvY3VzLWlubmVyLFxcblt0eXBlPSdyZXNldCddOjotbW96LWZvY3VzLWlubmVyLFxcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xcbn1cXG5cXG5pbnB1dFt0eXBlPSdyYWRpbyddLFxcbmlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbmlucHV0W3R5cGU9J2RhdGUnXSxcXG5pbnB1dFt0eXBlPSd0aW1lJ10sXFxuaW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcXG5pbnB1dFt0eXBlPSdtb250aCddIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDtcXG59XFxuXFxudGV4dGFyZWEge1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICByZXNpemU6IHZlcnRpY2FsO1xcbn1cXG5cXG5maWVsZHNldCB7XFxuICBtaW4td2lkdGg6IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYm9yZGVyOiAwO1xcbn1cXG5cXG5sZWdlbmQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICBmb250LXNpemU6IDI0cHg7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG59XFxuXFxucHJvZ3Jlc3Mge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG5cXG5bdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuXFxuW3R5cGU9J3NlYXJjaCddIHtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG5cXG5bdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG5cXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcXG4gIGZvbnQ6IGluaGVyaXQ7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcXG59XFxuXFxub3V0cHV0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuXFxuc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbnRlbXBsYXRlIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbltoaWRkZW5dIHtcXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9wYW5lbC9keW5hbWljLXBhbmVsLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAvKiBQYW5lbCBjb250YWluZXIgYmFzZSBzdHlsZXMgd2l0aCBkeW5hbWljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcgKi9cbi5keW5hbWljLXBhbmVsLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMjE0NzQ4MzY0NjtcbiAgb3V0bGluZTogbm9uZTtcbiAgdG9wOiB2YXIoLS1wYW5lbC10b3AsIGF1dG8pO1xuICBib3R0b206IHZhcigtLXBhbmVsLWJvdHRvbSwgYXV0byk7XG4gIGxlZnQ6IHZhcigtLXBhbmVsLWxlZnQsIGF1dG8pO1xuICByaWdodDogdmFyKC0tcGFuZWwtcmlnaHQsIGF1dG8pO1xuICB3aWR0aDogdmFyKC0tcGFuZWwtd2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXBhbmVsLWhlaWdodCk7XG4gIG1pbi13aWR0aDogdmFyKC0tcGFuZWwtbWluLXdpZHRoKTtcbiAgbWluLWhlaWdodDogdmFyKC0tcGFuZWwtbWluLWhlaWdodCk7XG4gIG1heC13aWR0aDogdmFyKC0tcGFuZWwtbWF4LXdpZHRoKTtcbiAgbWF4LWhlaWdodDogdmFyKC0tcGFuZWwtbWF4LWhlaWdodCk7XG59XG5cbi8qIFBhbmVsIGNvbnRlbnQgY29udGFpbmVyIHN0eWxlcyAqL1xuLnBhbmVsLWNvbnRlbnQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi8qIERyYWdnYWJsZSBjb250ZW50IGFyZWEgc3R5bGVzICovXG4uZHJhZ2dhYmxlLWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvcGFuZWwvZHluYW1pYy1wYW5lbC5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBLG9FQUFvRTtBQUNwRTtFQUNFLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsYUFBYTtFQUNiLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsNkJBQTZCO0VBQzdCLCtCQUErQjtFQUMvQix5QkFBeUI7RUFDekIsMkJBQTJCO0VBQzNCLGlDQUFpQztFQUNqQyxtQ0FBbUM7RUFDbkMsaUNBQWlDO0VBQ2pDLG1DQUFtQztBQUNyQzs7QUFFQSxtQ0FBbUM7QUFDbkM7RUFDRSxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWiw2Q0FBNkM7RUFDN0MsZ0NBQWdDO0VBQ2hDLHVDQUF1QztFQUN2QyxhQUFhO0VBQ2Isc0JBQXNCO0FBQ3hCOztBQUVBLGtDQUFrQztBQUNsQztFQUNFLE9BQU87RUFDUCxjQUFjO0FBQ2hCXCIsc291cmNlc0NvbnRlbnQ6W1wiLyogUGFuZWwgY29udGFpbmVyIGJhc2Ugc3R5bGVzIHdpdGggZHluYW1pYyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nICovXFxuLmR5bmFtaWMtcGFuZWwtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHotaW5kZXg6IDIxNDc0ODM2NDY7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgdG9wOiB2YXIoLS1wYW5lbC10b3AsIGF1dG8pO1xcbiAgYm90dG9tOiB2YXIoLS1wYW5lbC1ib3R0b20sIGF1dG8pO1xcbiAgbGVmdDogdmFyKC0tcGFuZWwtbGVmdCwgYXV0byk7XFxuICByaWdodDogdmFyKC0tcGFuZWwtcmlnaHQsIGF1dG8pO1xcbiAgd2lkdGg6IHZhcigtLXBhbmVsLXdpZHRoKTtcXG4gIGhlaWdodDogdmFyKC0tcGFuZWwtaGVpZ2h0KTtcXG4gIG1pbi13aWR0aDogdmFyKC0tcGFuZWwtbWluLXdpZHRoKTtcXG4gIG1pbi1oZWlnaHQ6IHZhcigtLXBhbmVsLW1pbi1oZWlnaHQpO1xcbiAgbWF4LXdpZHRoOiB2YXIoLS1wYW5lbC1tYXgtd2lkdGgpO1xcbiAgbWF4LWhlaWdodDogdmFyKC0tcGFuZWwtbWF4LWhlaWdodCk7XFxufVxcblxcbi8qIFBhbmVsIGNvbnRlbnQgY29udGFpbmVyIHN0eWxlcyAqL1xcbi5wYW5lbC1jb250ZW50LWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcblxcbi8qIERyYWdnYWJsZSBjb250ZW50IGFyZWEgc3R5bGVzICovXFxuLmRyYWdnYWJsZS1jb250ZW50IHtcXG4gIGZsZXg6IDE7XFxuICBvdmVyZmxvdzogYXV0bztcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvY29sb3JzLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGA6aG9zdCB7XG4gIC8qIFxuICAgKiBDQVVUSU9OOiBUSElTIElTIEEgV09SS0FST1VORCFcbiAgICogRm9yIG5vdywgd2UgdXNlIEBiYWJlbC9jb2RlLWZyYW1lIHRvIHBhcnNlIHRoZSBjb2RlIGZyYW1lIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uIHRvIGNoYW5nZSB0aGUgY29sb3IuXG4gICAqIHgtcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYmFiZWwvYmFiZWwvYmxvYi9lZmE1MjMyNGZmODM1Yjc5NGM0ODA4MGYxNDg3N2I2Y2FmMzJjZDE1L3BhY2thZ2VzL2JhYmVsLWNvZGUtZnJhbWUvc3JjL2RlZnMudHMjTDQwLUw1NFxuICAgKiBTbywgd2UgZG8gYSB3b3JrYXJvdW5kIG1hcHBpbmcgdG8gY2hhbmdlIHRoZSBjb2xvciBtYXRjaGluZyB0aGUgdGhlbWUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpbiBAYmFiZWwvY29kZS1mcmFtZSwgdGhlIFwia2V5d29yZFwiIGlzIG1hcHBlZCB0byBBTlNJIFwiY3lhblwiLlxuICAgKiBXZSB3YW50IHRoZSBcImtleXdvcmRcIiB0byB1c2UgdGhlIFwic3ludGF4LWtleXdvcmRcIiBjb2xvciBpbiB0aGUgdGhlbWUuXG4gICAqIFNvLCB3ZSBtYXAgdGhlIFwiY3lhblwiIHRvIHRoZSBcInN5bnRheC1rZXl3b3JkXCIgaW4gdGhlIHRoZW1lLlxuICAgKi9cbiAgLyogY3lhbjoga2V5d29yZCAqL1xuICAtLWNvbG9yLWFuc2ktY3lhbjogdmFyKC0tY29sb3Itc3ludGF4LWtleXdvcmQpO1xuICAvKiB5ZWxsb3c6IGNhcGl0YWxpemVkLCBqc3hJZGVudGlmaWVyLCBwdW5jdHVhdGlvbiAqL1xuICAtLWNvbG9yLWFuc2kteWVsbG93OiB2YXIoLS1jb2xvci1zeW50YXgtZnVuY3Rpb24pO1xuICAvKiBtYWdlbnRhOiBudW1iZXIsIHJlZ2V4ICovXG4gIC0tY29sb3ItYW5zaS1tYWdlbnRhOiB2YXIoLS1jb2xvci1zeW50YXgta2V5d29yZCk7XG4gIC8qIGdyZWVuOiBzdHJpbmcgKi9cbiAgLS1jb2xvci1hbnNpLWdyZWVuOiB2YXIoLS1jb2xvci1zeW50YXgtc3RyaW5nKTtcbiAgLyogZ3JheSAoYnJpZ2h0IGJsYWNrKTogY29tbWVudCwgZ3V0dGVyICovXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtYmxhY2s6IHZhcigtLWNvbG9yLXN5bnRheC1jb21tZW50KTtcblxuICAvKiBBbnNpIC0gVGVtcG9yYXJ5ICovXG4gIC0tY29sb3ItYW5zaS1zZWxlY3Rpb246IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMzAwKTtcbiAgLS1jb2xvci1hbnNpLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG4gIC0tY29sb3ItYW5zaS1mZzogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcblxuICAtLWNvbG9yLWFuc2ktd2hpdGU6IHZhcigtLWNvbG9yLWdyYXktNzAwKTtcbiAgLS1jb2xvci1hbnNpLWJsYWNrOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XG4gIC0tY29sb3ItYW5zaS1ibHVlOiB2YXIoLS1jb2xvci1ibHVlLTcwMCk7XG4gIC0tY29sb3ItYW5zaS1yZWQ6IHZhcigtLWNvbG9yLXJlZC03MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsdWU6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1jeWFuOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtZ3JlZW46IHZhcigtLWNvbG9yLWdyZWVuLTgwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtbWFnZW50YTogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXJlZDogdmFyKC0tY29sb3ItcmVkLTgwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQteWVsbG93OiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xuXG4gIC8qIEJhY2tncm91bmQgTGlnaHQgKi9cbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogI2ZmZmZmZjtcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogI2ZhZmFmYTtcblxuICAvKiBTeW50YXggTGlnaHQgKi9cbiAgLS1jb2xvci1zeW50YXgtY29tbWVudDogIzU0NTQ1NDtcbiAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICMxNzE3MTc7XG4gIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjMDA1NGFkO1xuICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjYTUxODUwO1xuICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMDY2MDU2O1xuICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICM4ZjNlMDA7XG4gIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjMTcxNzE3O1xuICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwMzYxNTc7XG4gIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMDY2MDU2O1xuXG4gIC8qIEdyYXkgU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1ncmF5LTEwMDogI2YyZjJmMjtcbiAgLS1jb2xvci1ncmF5LTIwMDogI2ViZWJlYjtcbiAgLS1jb2xvci1ncmF5LTMwMDogI2U2ZTZlNjtcbiAgLS1jb2xvci1ncmF5LTQwMDogI2VhZWFlYTtcbiAgLS1jb2xvci1ncmF5LTUwMDogI2M5YzljOTtcbiAgLS1jb2xvci1ncmF5LTYwMDogI2E4YThhODtcbiAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcbiAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcbiAgLS1jb2xvci1ncmF5LTkwMDogIzY2NjY2NjtcbiAgLS1jb2xvci1ncmF5LTEwMDA6ICMxNzE3MTc7XG5cbiAgLyogR3JheSBBbHBoYSBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDAsIDAsIDAsIDAuMDgxKTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDAsIDAsIDAsIDAuMjEpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDAsIDAsIDAsIDAuNDQpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDAsIDAsIDAsIDAuNTEpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDAsIDAsIDAsIDAuNjA1KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMCwgMCwgMCwgMC45MSk7XG5cbiAgLyogQmx1ZSBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLWJsdWUtMTAwOiAjZjBmN2ZmO1xuICAtLWNvbG9yLWJsdWUtMjAwOiAjZWRmNmZmO1xuICAtLWNvbG9yLWJsdWUtMzAwOiAjZTFmMGZmO1xuICAtLWNvbG9yLWJsdWUtNDAwOiAjY2RlN2ZmO1xuICAtLWNvbG9yLWJsdWUtNTAwOiAjOTljZWZmO1xuICAtLWNvbG9yLWJsdWUtNjAwOiAjNTJhZWZmO1xuICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xuICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xuICAtLWNvbG9yLWJsdWUtOTAwOiAjMDA2N2Q2O1xuICAtLWNvbG9yLWJsdWUtMTAwMDogIzAwMjVhZDtcblxuICAvKiBSZWQgU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1yZWQtMTAwOiAjZmZmMGYwO1xuICAtLWNvbG9yLXJlZC0yMDA6ICNmZmViZWI7XG4gIC0tY29sb3ItcmVkLTMwMDogI2ZmZTVlNTtcbiAgLS1jb2xvci1yZWQtNDAwOiAjZmRkOGQ4O1xuICAtLWNvbG9yLXJlZC01MDA6ICNmOGJhYmE7XG4gIC0tY29sb3ItcmVkLTYwMDogI2Y4NzI3NDtcbiAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xuICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XG4gIC0tY29sb3ItcmVkLTkwMDogI2NhMmEzMDtcbiAgLS1jb2xvci1yZWQtMTAwMDogIzM4MTMxNjtcblxuICAvKiBBbWJlciBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLWFtYmVyLTEwMDogI2ZmZjZlNTtcbiAgLS1jb2xvci1hbWJlci0yMDA6ICNmZmY0ZDU7XG4gIC0tY29sb3ItYW1iZXItMzAwOiAjZmVmMGNkO1xuICAtLWNvbG9yLWFtYmVyLTQwMDogI2ZmZGRiZjtcbiAgLS1jb2xvci1hbWJlci01MDA6ICNmZmM5NmI7XG4gIC0tY29sb3ItYW1iZXItNjAwOiAjZjViMDQ3O1xuICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcbiAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XG4gIC0tY29sb3ItYW1iZXItOTAwOiAjYTM1MjAwO1xuICAtLWNvbG9yLWFtYmVyLTEwMDA6ICM0ZTIwMDk7XG5cbiAgLyogR3JlZW4gU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1ncmVlbi0xMDA6ICNlZmZiZWY7XG4gIC0tY29sb3ItZ3JlZW4tMjAwOiAjZWFmYWVhO1xuICAtLWNvbG9yLWdyZWVuLTMwMDogI2RjZjZkYztcbiAgLS1jb2xvci1ncmVlbi00MDA6ICNjOGYxYzk7XG4gIC0tY29sb3ItZ3JlZW4tNTAwOiAjOTllNTlmO1xuICAtLWNvbG9yLWdyZWVuLTYwMDogIzZjZGE3NjtcbiAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XG4gIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xuICAtLWNvbG9yLWdyZWVuLTkwMDogIzI5N2MzYjtcbiAgLS1jb2xvci1ncmVlbi0xMDAwOiAjMTgzMTFlO1xuXG4gIC8qIFR1cmJvcGFjayBMaWdodCAtIFRlbXBvcmFyeSAqL1xuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmMWU1NjtcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjMDA5NmZmO1xuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjZjBhZGJlO1xuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogI2FkY2NlYTtcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICNmZmY3Zjk7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogI2Y2ZmJmZjtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2NvbG9ycy5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0U7Ozs7Ozs7OztJQVNFO0VBQ0Ysa0JBQWtCO0VBQ2xCLDhDQUE4QztFQUM5QyxvREFBb0Q7RUFDcEQsaURBQWlEO0VBQ2pELDJCQUEyQjtFQUMzQixpREFBaUQ7RUFDakQsa0JBQWtCO0VBQ2xCLDhDQUE4QztFQUM5Qyx5Q0FBeUM7RUFDekMsc0RBQXNEOztFQUV0RCxxQkFBcUI7RUFDckIsbURBQW1EO0VBQ25ELDRDQUE0QztFQUM1Qyx1Q0FBdUM7O0VBRXZDLHlDQUF5QztFQUN6Qyx5Q0FBeUM7RUFDekMsd0NBQXdDO0VBQ3hDLHNDQUFzQztFQUN0QyxpREFBaUQ7RUFDakQsK0NBQStDO0VBQy9DLCtDQUErQztFQUMvQyxpREFBaUQ7RUFDakQsa0RBQWtEO0VBQ2xELDZDQUE2QztFQUM3QyxrREFBa0Q7O0VBRWxELHFCQUFxQjtFQUNyQiwrQkFBK0I7RUFDL0IsK0JBQStCOztFQUUvQixpQkFBaUI7RUFDakIsK0JBQStCO0VBQy9CLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsK0JBQStCO0VBQy9CLDRCQUE0QjtFQUM1QixpQ0FBaUM7RUFDakMsbUNBQW1DO0VBQ25DLDhCQUE4QjtFQUM5Qix5Q0FBeUM7O0VBRXpDLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QiwwQkFBMEI7O0VBRTFCLDJCQUEyQjtFQUMzQiwyQ0FBMkM7RUFDM0MsNENBQTRDO0VBQzVDLDBDQUEwQztFQUMxQywyQ0FBMkM7RUFDM0MsMkNBQTJDO0VBQzNDLDJDQUEyQztFQUMzQywyQ0FBMkM7RUFDM0MsMkNBQTJDO0VBQzNDLDRDQUE0QztFQUM1Qyw0Q0FBNEM7O0VBRTVDLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QiwwQkFBMEI7O0VBRTFCLG9CQUFvQjtFQUNwQix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix5QkFBeUI7O0VBRXpCLHNCQUFzQjtFQUN0QiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwyQkFBMkI7O0VBRTNCLHNCQUFzQjtFQUN0QiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwyQkFBMkI7O0VBRTNCLGdDQUFnQztFQUNoQyxtQ0FBbUM7RUFDbkMsb0NBQW9DO0VBQ3BDLHFDQUFxQztFQUNyQyxzQ0FBc0M7RUFDdEMseUNBQXlDO0VBQ3pDLDBDQUEwQztBQUM1Q1wiLHNvdXJjZXNDb250ZW50OlsnOmhvc3Qge1xcbiAgLyogXFxuICAgKiBDQVVUSU9OOiBUSElTIElTIEEgV09SS0FST1VORCFcXG4gICAqIEZvciBub3csIHdlIHVzZSBAYmFiZWwvY29kZS1mcmFtZSB0byBwYXJzZSB0aGUgY29kZSBmcmFtZSB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IG9wdGlvbiB0byBjaGFuZ2UgdGhlIGNvbG9yLlxcbiAgICogeC1yZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL2VmYTUyMzI0ZmY4MzViNzk0YzQ4MDgwZjE0ODc3YjZjYWYzMmNkMTUvcGFja2FnZXMvYmFiZWwtY29kZS1mcmFtZS9zcmMvZGVmcy50cyNMNDAtTDU0XFxuICAgKiBTbywgd2UgZG8gYSB3b3JrYXJvdW5kIG1hcHBpbmcgdG8gY2hhbmdlIHRoZSBjb2xvciBtYXRjaGluZyB0aGUgdGhlbWUuXFxuICAgKlxcbiAgICogRm9yIGV4YW1wbGUsIGluIEBiYWJlbC9jb2RlLWZyYW1lLCB0aGUgXCJrZXl3b3JkXCIgaXMgbWFwcGVkIHRvIEFOU0kgXCJjeWFuXCIuXFxuICAgKiBXZSB3YW50IHRoZSBcImtleXdvcmRcIiB0byB1c2UgdGhlIFwic3ludGF4LWtleXdvcmRcIiBjb2xvciBpbiB0aGUgdGhlbWUuXFxuICAgKiBTbywgd2UgbWFwIHRoZSBcImN5YW5cIiB0byB0aGUgXCJzeW50YXgta2V5d29yZFwiIGluIHRoZSB0aGVtZS5cXG4gICAqL1xcbiAgLyogY3lhbjoga2V5d29yZCAqL1xcbiAgLS1jb2xvci1hbnNpLWN5YW46IHZhcigtLWNvbG9yLXN5bnRheC1rZXl3b3JkKTtcXG4gIC8qIHllbGxvdzogY2FwaXRhbGl6ZWQsIGpzeElkZW50aWZpZXIsIHB1bmN0dWF0aW9uICovXFxuICAtLWNvbG9yLWFuc2kteWVsbG93OiB2YXIoLS1jb2xvci1zeW50YXgtZnVuY3Rpb24pO1xcbiAgLyogbWFnZW50YTogbnVtYmVyLCByZWdleCAqL1xcbiAgLS1jb2xvci1hbnNpLW1hZ2VudGE6IHZhcigtLWNvbG9yLXN5bnRheC1rZXl3b3JkKTtcXG4gIC8qIGdyZWVuOiBzdHJpbmcgKi9cXG4gIC0tY29sb3ItYW5zaS1ncmVlbjogdmFyKC0tY29sb3Itc3ludGF4LXN0cmluZyk7XFxuICAvKiBncmF5IChicmlnaHQgYmxhY2spOiBjb21tZW50LCBndXR0ZXIgKi9cXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtYmxhY2s6IHZhcigtLWNvbG9yLXN5bnRheC1jb21tZW50KTtcXG5cXG4gIC8qIEFuc2kgLSBUZW1wb3JhcnkgKi9cXG4gIC0tY29sb3ItYW5zaS1zZWxlY3Rpb246IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMzAwKTtcXG4gIC0tY29sb3ItYW5zaS1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgLS1jb2xvci1hbnNpLWZnOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcblxcbiAgLS1jb2xvci1hbnNpLXdoaXRlOiB2YXIoLS1jb2xvci1ncmF5LTcwMCk7XFxuICAtLWNvbG9yLWFuc2ktYmxhY2s6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcXG4gIC0tY29sb3ItYW5zaS1ibHVlOiB2YXIoLS1jb2xvci1ibHVlLTcwMCk7XFxuICAtLWNvbG9yLWFuc2ktcmVkOiB2YXIoLS1jb2xvci1yZWQtNzAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGU6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsdWU6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtY3lhbjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ncmVlbjogdmFyKC0tY29sb3ItZ3JlZW4tODAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtbWFnZW50YTogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1yZWQ6IHZhcigtLWNvbG9yLXJlZC04MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC15ZWxsb3c6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XFxuXFxuICAvKiBCYWNrZ3JvdW5kIExpZ2h0ICovXFxuICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjZmZmZmZmO1xcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogI2ZhZmFmYTtcXG5cXG4gIC8qIFN5bnRheCBMaWdodCAqL1xcbiAgLS1jb2xvci1zeW50YXgtY29tbWVudDogIzU0NTQ1NDtcXG4gIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjMTcxNzE3O1xcbiAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICMwMDU0YWQ7XFxuICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjYTUxODUwO1xcbiAgLS1jb2xvci1zeW50YXgtbGluazogIzA2NjA1NjtcXG4gIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogIzhmM2UwMDtcXG4gIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjMTcxNzE3O1xcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMDM2MTU3O1xcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwNjYwNTY7XFxuXFxuICAvKiBHcmF5IFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLWdyYXktMTAwOiAjZjJmMmYyO1xcbiAgLS1jb2xvci1ncmF5LTIwMDogI2ViZWJlYjtcXG4gIC0tY29sb3ItZ3JheS0zMDA6ICNlNmU2ZTY7XFxuICAtLWNvbG9yLWdyYXktNDAwOiAjZWFlYWVhO1xcbiAgLS1jb2xvci1ncmF5LTUwMDogI2M5YzljOTtcXG4gIC0tY29sb3ItZ3JheS02MDA6ICNhOGE4YTg7XFxuICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xcbiAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcXG4gIC0tY29sb3ItZ3JheS05MDA6ICM2NjY2NjY7XFxuICAtLWNvbG9yLWdyYXktMTAwMDogIzE3MTcxNztcXG5cXG4gIC8qIEdyYXkgQWxwaGEgU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDAsIDAsIDAsIDAuMDgxKTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDAsIDAsIDAsIDAuMjEpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgwLCAwLCAwLCAwLjM0KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMCwgMCwgMCwgMC40NCk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDAsIDAsIDAsIDAuNTEpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgwLCAwLCAwLCAwLjYwNSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgwLCAwLCAwLCAwLjkxKTtcXG5cXG4gIC8qIEJsdWUgU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItYmx1ZS0xMDA6ICNmMGY3ZmY7XFxuICAtLWNvbG9yLWJsdWUtMjAwOiAjZWRmNmZmO1xcbiAgLS1jb2xvci1ibHVlLTMwMDogI2UxZjBmZjtcXG4gIC0tY29sb3ItYmx1ZS00MDA6ICNjZGU3ZmY7XFxuICAtLWNvbG9yLWJsdWUtNTAwOiAjOTljZWZmO1xcbiAgLS1jb2xvci1ibHVlLTYwMDogIzUyYWVmZjtcXG4gIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XFxuICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xcbiAgLS1jb2xvci1ibHVlLTkwMDogIzAwNjdkNjtcXG4gIC0tY29sb3ItYmx1ZS0xMDAwOiAjMDAyNWFkO1xcblxcbiAgLyogUmVkIFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLXJlZC0xMDA6ICNmZmYwZjA7XFxuICAtLWNvbG9yLXJlZC0yMDA6ICNmZmViZWI7XFxuICAtLWNvbG9yLXJlZC0zMDA6ICNmZmU1ZTU7XFxuICAtLWNvbG9yLXJlZC00MDA6ICNmZGQ4ZDg7XFxuICAtLWNvbG9yLXJlZC01MDA6ICNmOGJhYmE7XFxuICAtLWNvbG9yLXJlZC02MDA6ICNmODcyNzQ7XFxuICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XFxuICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XFxuICAtLWNvbG9yLXJlZC05MDA6ICNjYTJhMzA7XFxuICAtLWNvbG9yLXJlZC0xMDAwOiAjMzgxMzE2O1xcblxcbiAgLyogQW1iZXIgU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItYW1iZXItMTAwOiAjZmZmNmU1O1xcbiAgLS1jb2xvci1hbWJlci0yMDA6ICNmZmY0ZDU7XFxuICAtLWNvbG9yLWFtYmVyLTMwMDogI2ZlZjBjZDtcXG4gIC0tY29sb3ItYW1iZXItNDAwOiAjZmZkZGJmO1xcbiAgLS1jb2xvci1hbWJlci01MDA6ICNmZmM5NmI7XFxuICAtLWNvbG9yLWFtYmVyLTYwMDogI2Y1YjA0NztcXG4gIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xcbiAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XFxuICAtLWNvbG9yLWFtYmVyLTkwMDogI2EzNTIwMDtcXG4gIC0tY29sb3ItYW1iZXItMTAwMDogIzRlMjAwOTtcXG5cXG4gIC8qIEdyZWVuIFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLWdyZWVuLTEwMDogI2VmZmJlZjtcXG4gIC0tY29sb3ItZ3JlZW4tMjAwOiAjZWFmYWVhO1xcbiAgLS1jb2xvci1ncmVlbi0zMDA6ICNkY2Y2ZGM7XFxuICAtLWNvbG9yLWdyZWVuLTQwMDogI2M4ZjFjOTtcXG4gIC0tY29sb3ItZ3JlZW4tNTAwOiAjOTllNTlmO1xcbiAgLS1jb2xvci1ncmVlbi02MDA6ICM2Y2RhNzY7XFxuICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcXG4gIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xcbiAgLS1jb2xvci1ncmVlbi05MDA6ICMyOTdjM2I7XFxuICAtLWNvbG9yLWdyZWVuLTEwMDA6ICMxODMxMWU7XFxuXFxuICAvKiBUdXJib3BhY2sgTGlnaHQgLSBUZW1wb3JhcnkgKi9cXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmYxZTU2O1xcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjMDA5NmZmO1xcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogI2YwYWRiZTtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjYWRjY2VhO1xcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICNmZmY3Zjk7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICNmNmZiZmY7XFxufVxcbiddLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGFyay10aGVtZS5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgOmhvc3QoLmRhcmspIHtcbiAgLS1jb2xvci1mb250OiB3aGl0ZTtcbiAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xuXG4gIC0tY29sb3ItdGl0bGUtY29sb3I6ICNmYWZhZmE7XG4gIC0tY29sb3Itc3RhY2stbm90ZXM6ICNhOWE5YTk7XG5cbiAgLyogQmFja2dyb3VuZCBEYXJrICovXG4gIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICMwYTBhMGE7XG4gIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICMwMDAwMDA7XG5cbiAgLyogU3ludGF4IERhcmsgKi9cbiAgLS1jb2xvci1zeW50YXgtY29tbWVudDogI2EwYTBhMDtcbiAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICNlZGVkZWQ7XG4gIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjNTJhOWZmO1xuICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjZjc2ZTk5O1xuICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMGFjNWIyO1xuICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICNmMWExMGQ7XG4gIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjZWRlZGVkO1xuICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwYWM1YjI7XG4gIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMGFjNWIyO1xuXG4gIC8qIEdyYXkgU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLWdyYXktMTAwOiAjMWExYTFhO1xuICAtLWNvbG9yLWdyYXktMjAwOiAjMWYxZjFmO1xuICAtLWNvbG9yLWdyYXktMzAwOiAjMjkyOTI5O1xuICAtLWNvbG9yLWdyYXktNDAwOiAjMmUyZTJlO1xuICAtLWNvbG9yLWdyYXktNTAwOiAjNDU0NTQ1O1xuICAtLWNvbG9yLWdyYXktNjAwOiAjODc4Nzg3O1xuICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xuICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xuICAtLWNvbG9yLWdyYXktOTAwOiAjYTBhMGEwO1xuICAtLWNvbG9yLWdyYXktMTAwMDogI2VkZWRlZDtcblxuICAvKiBHcmF5IEFscGhhIFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2Nik7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wODcpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTI1KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMzkpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTA2KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU0KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ3KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYxKTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MjMpO1xuXG4gIC8qIEJsdWUgU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLWJsdWUtMTAwOiAjMGYxYjJkO1xuICAtLWNvbG9yLWJsdWUtMjAwOiAjMTAyNDNlO1xuICAtLWNvbG9yLWJsdWUtMzAwOiAjMGYzMDU4O1xuICAtLWNvbG9yLWJsdWUtNDAwOiAjMGQzODY4O1xuICAtLWNvbG9yLWJsdWUtNTAwOiAjMGE0NDgxO1xuICAtLWNvbG9yLWJsdWUtNjAwOiAjMDA5MWZmO1xuICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xuICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xuICAtLWNvbG9yLWJsdWUtOTAwOiAjNTJhOWZmO1xuICAtLWNvbG9yLWJsdWUtMTAwMDogI2VhZjZmZjtcblxuICAvKiBSZWQgU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLXJlZC0xMDA6ICMyYTEzMTQ7XG4gIC0tY29sb3ItcmVkLTIwMDogIzNkMTcxOTtcbiAgLS1jb2xvci1yZWQtMzAwOiAjNTUxYTFlO1xuICAtLWNvbG9yLXJlZC00MDA6ICM2NzFlMjI7XG4gIC0tY29sb3ItcmVkLTUwMDogIzgyMjAyNTtcbiAgLS1jb2xvci1yZWQtNjAwOiAjZTU0ODRkO1xuICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XG4gIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcbiAgLS1jb2xvci1yZWQtOTAwOiAjZmY2MzY5O1xuICAtLWNvbG9yLXJlZC0xMDAwOiAjZmZlY2VlO1xuXG4gIC8qIEFtYmVyIFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1hbWJlci0xMDA6ICMyNzE3MDA7XG4gIC0tY29sb3ItYW1iZXItMjAwOiAjMzQxYzAwO1xuICAtLWNvbG9yLWFtYmVyLTMwMDogIzRhMjkwMDtcbiAgLS1jb2xvci1hbWJlci00MDA6ICM1NzMzMDA7XG4gIC0tY29sb3ItYW1iZXItNTAwOiAjNjkzZjA1O1xuICAtLWNvbG9yLWFtYmVyLTYwMDogI2U3OWMxMztcbiAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XG4gIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xuICAtLWNvbG9yLWFtYmVyLTkwMDogI2YxYTEwZDtcbiAgLS1jb2xvci1hbWJlci0xMDAwOiAjZmVmM2RkO1xuXG4gIC8qIEdyZWVuIFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1ncmVlbi0xMDA6ICMwYjIyMTE7XG4gIC0tY29sb3ItZ3JlZW4tMjAwOiAjMGYyYzE3O1xuICAtLWNvbG9yLWdyZWVuLTMwMDogIzExMzUxYjtcbiAgLS1jb2xvci1ncmVlbi00MDA6ICMwYzQ2MWI7XG4gIC0tY29sb3ItZ3JlZW4tNTAwOiAjMTI2NDI3O1xuICAtLWNvbG9yLWdyZWVuLTYwMDogIzFhOTMzODtcbiAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XG4gIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xuICAtLWNvbG9yLWdyZWVuLTkwMDogIzYzYzE3NDtcbiAgLS1jb2xvci1ncmVlbi0xMDAwOiAjZTVmYmViO1xuXG4gIC8qIFR1cmJvcGFjayBEYXJrIC0gVGVtcG9yYXJ5ICovXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmY2ZDkyO1xuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICM0NWIyZmY7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICM2ZTI5M2I7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjMjg0ZjgwO1xuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogIzI1MGQxMjtcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjMGExNzIzO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIDpob3N0KDpub3QoLmxpZ2h0KSkge1xuICAgIC0tY29sb3ItZm9udDogd2hpdGU7XG4gICAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuICAgIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XG5cbiAgICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjZmFmYWZhO1xuICAgIC0tY29sb3Itc3RhY2stbm90ZXM6ICNhOWE5YTk7XG5cbiAgICAvKiBCYWNrZ3JvdW5kIERhcmsgKi9cbiAgICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjMGEwYTBhO1xuICAgIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICMwMDAwMDA7XG5cbiAgICAvKiBTeW50YXggRGFyayAqL1xuICAgIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICNhMGEwYTA7XG4gICAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICNlZGVkZWQ7XG4gICAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICM1MmE5ZmY7XG4gICAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2Y3NmU5OTtcbiAgICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMGFjNWIyO1xuICAgIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogI2YxYTEwZDtcbiAgICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogI2VkZWRlZDtcbiAgICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwYWM1YjI7XG4gICAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwYWM1YjI7XG5cbiAgICAvKiBHcmF5IFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLWdyYXktMTAwOiAjMWExYTFhO1xuICAgIC0tY29sb3ItZ3JheS0yMDA6ICMxZjFmMWY7XG4gICAgLS1jb2xvci1ncmF5LTMwMDogIzI5MjkyOTtcbiAgICAtLWNvbG9yLWdyYXktNDAwOiAjMmUyZTJlO1xuICAgIC0tY29sb3ItZ3JheS01MDA6ICM0NTQ1NDU7XG4gICAgLS1jb2xvci1ncmF5LTYwMDogIzg3ODc4NztcbiAgICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xuICAgIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XG4gICAgLS1jb2xvci1ncmF5LTkwMDogI2EwYTBhMDtcbiAgICAtLWNvbG9yLWdyYXktMTAwMDogI2VkZWRlZDtcblxuICAgIC8qIEdyYXkgQWxwaGEgU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNjYpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wODcpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMzkpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MDYpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ3KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjEpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIzKTtcblxuICAgIC8qIEJsdWUgU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItYmx1ZS0xMDA6ICMwZjFiMmQ7XG4gICAgLS1jb2xvci1ibHVlLTIwMDogIzEwMjQzZTtcbiAgICAtLWNvbG9yLWJsdWUtMzAwOiAjMGYzMDU4O1xuICAgIC0tY29sb3ItYmx1ZS00MDA6ICMwZDM4Njg7XG4gICAgLS1jb2xvci1ibHVlLTUwMDogIzBhNDQ4MTtcbiAgICAtLWNvbG9yLWJsdWUtNjAwOiAjMDA5MWZmO1xuICAgIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XG4gICAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcbiAgICAtLWNvbG9yLWJsdWUtOTAwOiAjNTJhOWZmO1xuICAgIC0tY29sb3ItYmx1ZS0xMDAwOiAjZWFmNmZmO1xuXG4gICAgLyogUmVkIFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLXJlZC0xMDA6ICMyYTEzMTQ7XG4gICAgLS1jb2xvci1yZWQtMjAwOiAjM2QxNzE5O1xuICAgIC0tY29sb3ItcmVkLTMwMDogIzU1MWExZTtcbiAgICAtLWNvbG9yLXJlZC00MDA6ICM2NzFlMjI7XG4gICAgLS1jb2xvci1yZWQtNTAwOiAjODIyMDI1O1xuICAgIC0tY29sb3ItcmVkLTYwMDogI2U1NDg0ZDtcbiAgICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XG4gICAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xuICAgIC0tY29sb3ItcmVkLTkwMDogI2ZmNjM2OTtcbiAgICAtLWNvbG9yLXJlZC0xMDAwOiAjZmZlY2VlO1xuXG4gICAgLyogQW1iZXIgU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItYW1iZXItMTAwOiAjMjcxNzAwO1xuICAgIC0tY29sb3ItYW1iZXItMjAwOiAjMzQxYzAwO1xuICAgIC0tY29sb3ItYW1iZXItMzAwOiAjNGEyOTAwO1xuICAgIC0tY29sb3ItYW1iZXItNDAwOiAjNTczMzAwO1xuICAgIC0tY29sb3ItYW1iZXItNTAwOiAjNjkzZjA1O1xuICAgIC0tY29sb3ItYW1iZXItNjAwOiAjZTc5YzEzO1xuICAgIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xuICAgIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xuICAgIC0tY29sb3ItYW1iZXItOTAwOiAjZjFhMTBkO1xuICAgIC0tY29sb3ItYW1iZXItMTAwMDogI2ZlZjNkZDtcblxuICAgIC8qIEdyZWVuIFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLWdyZWVuLTEwMDogIzBiMjIxMTtcbiAgICAtLWNvbG9yLWdyZWVuLTIwMDogIzBmMmMxNztcbiAgICAtLWNvbG9yLWdyZWVuLTMwMDogIzExMzUxYjtcbiAgICAtLWNvbG9yLWdyZWVuLTQwMDogIzBjNDYxYjtcbiAgICAtLWNvbG9yLWdyZWVuLTUwMDogIzEyNjQyNztcbiAgICAtLWNvbG9yLWdyZWVuLTYwMDogIzFhOTMzODtcbiAgICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcbiAgICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcbiAgICAtLWNvbG9yLWdyZWVuLTkwMDogIzYzYzE3NDtcbiAgICAtLWNvbG9yLWdyZWVuLTEwMDA6ICNlNWZiZWI7XG5cbiAgICAvKiBUdXJib3BhY2sgRGFyayAtIFRlbXBvcmFyeSAqL1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmY2ZDkyO1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzQ1YjJmZjtcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjNmUyOTNiO1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjMjg0ZjgwO1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjMjUwZDEyO1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogIzBhMTcyMztcbiAgfVxufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGFyay10aGVtZS5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0UsbUJBQW1CO0VBQ25CLG9DQUFvQztFQUNwQyxpREFBaUQ7O0VBRWpELDRCQUE0QjtFQUM1Qiw0QkFBNEI7O0VBRTVCLG9CQUFvQjtFQUNwQiwrQkFBK0I7RUFDL0IsK0JBQStCOztFQUUvQixnQkFBZ0I7RUFDaEIsK0JBQStCO0VBQy9CLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsK0JBQStCO0VBQy9CLDRCQUE0QjtFQUM1QixpQ0FBaUM7RUFDakMsbUNBQW1DO0VBQ25DLDhCQUE4QjtFQUM5Qix5Q0FBeUM7O0VBRXpDLG9CQUFvQjtFQUNwQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QiwwQkFBMEI7O0VBRTFCLDBCQUEwQjtFQUMxQixrREFB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O0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7O0lBRTNCLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsb0NBQW9DO0lBQ3BDLHFDQUFxQztJQUNyQyxzQ0FBc0M7SUFDdEMseUNBQXlDO0lBQ3pDLDBDQUEwQztFQUM1QztBQUNGXCIsc291cmNlc0NvbnRlbnQ6W1wiOmhvc3QoLmRhcmspIHtcXG4gIC0tY29sb3ItZm9udDogd2hpdGU7XFxuICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xcblxcbiAgLS1jb2xvci10aXRsZS1jb2xvcjogI2ZhZmFmYTtcXG4gIC0tY29sb3Itc3RhY2stbm90ZXM6ICNhOWE5YTk7XFxuXFxuICAvKiBCYWNrZ3JvdW5kIERhcmsgKi9cXG4gIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICMwYTBhMGE7XFxuICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjMDAwMDAwO1xcblxcbiAgLyogU3ludGF4IERhcmsgKi9cXG4gIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICNhMGEwYTA7XFxuICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogI2VkZWRlZDtcXG4gIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjNTJhOWZmO1xcbiAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2Y3NmU5OTtcXG4gIC0tY29sb3Itc3ludGF4LWxpbms6ICMwYWM1YjI7XFxuICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICNmMWExMGQ7XFxuICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogI2VkZWRlZDtcXG4gIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzBhYzViMjtcXG4gIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMGFjNWIyO1xcblxcbiAgLyogR3JheSBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLWdyYXktMTAwOiAjMWExYTFhO1xcbiAgLS1jb2xvci1ncmF5LTIwMDogIzFmMWYxZjtcXG4gIC0tY29sb3ItZ3JheS0zMDA6ICMyOTI5Mjk7XFxuICAtLWNvbG9yLWdyYXktNDAwOiAjMmUyZTJlO1xcbiAgLS1jb2xvci1ncmF5LTUwMDogIzQ1NDU0NTtcXG4gIC0tY29sb3ItZ3JheS02MDA6ICM4Nzg3ODc7XFxuICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xcbiAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcXG4gIC0tY29sb3ItZ3JheS05MDA6ICNhMGEwYTA7XFxuICAtLWNvbG9yLWdyYXktMTAwMDogI2VkZWRlZDtcXG5cXG4gIC8qIEdyYXkgQWxwaGEgU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2Nik7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDg3KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjM5KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MDYpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU0KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nyk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjEpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MjMpO1xcblxcbiAgLyogQmx1ZSBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLWJsdWUtMTAwOiAjMGYxYjJkO1xcbiAgLS1jb2xvci1ibHVlLTIwMDogIzEwMjQzZTtcXG4gIC0tY29sb3ItYmx1ZS0zMDA6ICMwZjMwNTg7XFxuICAtLWNvbG9yLWJsdWUtNDAwOiAjMGQzODY4O1xcbiAgLS1jb2xvci1ibHVlLTUwMDogIzBhNDQ4MTtcXG4gIC0tY29sb3ItYmx1ZS02MDA6ICMwMDkxZmY7XFxuICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xcbiAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcXG4gIC0tY29sb3ItYmx1ZS05MDA6ICM1MmE5ZmY7XFxuICAtLWNvbG9yLWJsdWUtMTAwMDogI2VhZjZmZjtcXG5cXG4gIC8qIFJlZCBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLXJlZC0xMDA6ICMyYTEzMTQ7XFxuICAtLWNvbG9yLXJlZC0yMDA6ICMzZDE3MTk7XFxuICAtLWNvbG9yLXJlZC0zMDA6ICM1NTFhMWU7XFxuICAtLWNvbG9yLXJlZC00MDA6ICM2NzFlMjI7XFxuICAtLWNvbG9yLXJlZC01MDA6ICM4MjIwMjU7XFxuICAtLWNvbG9yLXJlZC02MDA6ICNlNTQ4NGQ7XFxuICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XFxuICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XFxuICAtLWNvbG9yLXJlZC05MDA6ICNmZjYzNjk7XFxuICAtLWNvbG9yLXJlZC0xMDAwOiAjZmZlY2VlO1xcblxcbiAgLyogQW1iZXIgU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1hbWJlci0xMDA6ICMyNzE3MDA7XFxuICAtLWNvbG9yLWFtYmVyLTIwMDogIzM0MWMwMDtcXG4gIC0tY29sb3ItYW1iZXItMzAwOiAjNGEyOTAwO1xcbiAgLS1jb2xvci1hbWJlci00MDA6ICM1NzMzMDA7XFxuICAtLWNvbG9yLWFtYmVyLTUwMDogIzY5M2YwNTtcXG4gIC0tY29sb3ItYW1iZXItNjAwOiAjZTc5YzEzO1xcbiAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XFxuICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcXG4gIC0tY29sb3ItYW1iZXItOTAwOiAjZjFhMTBkO1xcbiAgLS1jb2xvci1hbWJlci0xMDAwOiAjZmVmM2RkO1xcblxcbiAgLyogR3JlZW4gU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1ncmVlbi0xMDA6ICMwYjIyMTE7XFxuICAtLWNvbG9yLWdyZWVuLTIwMDogIzBmMmMxNztcXG4gIC0tY29sb3ItZ3JlZW4tMzAwOiAjMTEzNTFiO1xcbiAgLS1jb2xvci1ncmVlbi00MDA6ICMwYzQ2MWI7XFxuICAtLWNvbG9yLWdyZWVuLTUwMDogIzEyNjQyNztcXG4gIC0tY29sb3ItZ3JlZW4tNjAwOiAjMWE5MzM4O1xcbiAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XFxuICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcXG4gIC0tY29sb3ItZ3JlZW4tOTAwOiAjNjNjMTc0O1xcbiAgLS1jb2xvci1ncmVlbi0xMDAwOiAjZTVmYmViO1xcblxcbiAgLyogVHVyYm9wYWNrIERhcmsgLSBUZW1wb3JhcnkgKi9cXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmY2ZDkyO1xcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjNDViMmZmO1xcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogIzZlMjkzYjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjMjg0ZjgwO1xcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICMyNTBkMTI7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICMwYTE3MjM7XFxufVxcblxcbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcXG4gIDpob3N0KDpub3QoLmxpZ2h0KSkge1xcbiAgICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xcbiAgICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAgIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XFxuXFxuICAgIC0tY29sb3ItdGl0bGUtY29sb3I6ICNmYWZhZmE7XFxuICAgIC0tY29sb3Itc3RhY2stbm90ZXM6ICNhOWE5YTk7XFxuXFxuICAgIC8qIEJhY2tncm91bmQgRGFyayAqL1xcbiAgICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjMGEwYTBhO1xcbiAgICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjMDAwMDAwO1xcblxcbiAgICAvKiBTeW50YXggRGFyayAqL1xcbiAgICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjYTBhMGEwO1xcbiAgICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogI2VkZWRlZDtcXG4gICAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICM1MmE5ZmY7XFxuICAgIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNmNzZlOTk7XFxuICAgIC0tY29sb3Itc3ludGF4LWxpbms6ICMwYWM1YjI7XFxuICAgIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogI2YxYTEwZDtcXG4gICAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICNlZGVkZWQ7XFxuICAgIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzBhYzViMjtcXG4gICAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwYWM1YjI7XFxuXFxuICAgIC8qIEdyYXkgU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLWdyYXktMTAwOiAjMWExYTFhO1xcbiAgICAtLWNvbG9yLWdyYXktMjAwOiAjMWYxZjFmO1xcbiAgICAtLWNvbG9yLWdyYXktMzAwOiAjMjkyOTI5O1xcbiAgICAtLWNvbG9yLWdyYXktNDAwOiAjMmUyZTJlO1xcbiAgICAtLWNvbG9yLWdyYXktNTAwOiAjNDU0NTQ1O1xcbiAgICAtLWNvbG9yLWdyYXktNjAwOiAjODc4Nzg3O1xcbiAgICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xcbiAgICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xcbiAgICAtLWNvbG9yLWdyYXktOTAwOiAjYTBhMGEwO1xcbiAgICAtLWNvbG9yLWdyYXktMTAwMDogI2VkZWRlZDtcXG5cXG4gICAgLyogR3JheSBBbHBoYSBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNjYpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDg3KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjM5KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUwNik7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nyk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42MSk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIzKTtcXG5cXG4gICAgLyogQmx1ZSBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItYmx1ZS0xMDA6ICMwZjFiMmQ7XFxuICAgIC0tY29sb3ItYmx1ZS0yMDA6ICMxMDI0M2U7XFxuICAgIC0tY29sb3ItYmx1ZS0zMDA6ICMwZjMwNTg7XFxuICAgIC0tY29sb3ItYmx1ZS00MDA6ICMwZDM4Njg7XFxuICAgIC0tY29sb3ItYmx1ZS01MDA6ICMwYTQ0ODE7XFxuICAgIC0tY29sb3ItYmx1ZS02MDA6ICMwMDkxZmY7XFxuICAgIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XFxuICAgIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XFxuICAgIC0tY29sb3ItYmx1ZS05MDA6ICM1MmE5ZmY7XFxuICAgIC0tY29sb3ItYmx1ZS0xMDAwOiAjZWFmNmZmO1xcblxcbiAgICAvKiBSZWQgU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLXJlZC0xMDA6ICMyYTEzMTQ7XFxuICAgIC0tY29sb3ItcmVkLTIwMDogIzNkMTcxOTtcXG4gICAgLS1jb2xvci1yZWQtMzAwOiAjNTUxYTFlO1xcbiAgICAtLWNvbG9yLXJlZC00MDA6ICM2NzFlMjI7XFxuICAgIC0tY29sb3ItcmVkLTUwMDogIzgyMjAyNTtcXG4gICAgLS1jb2xvci1yZWQtNjAwOiAjZTU0ODRkO1xcbiAgICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XFxuICAgIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcXG4gICAgLS1jb2xvci1yZWQtOTAwOiAjZmY2MzY5O1xcbiAgICAtLWNvbG9yLXJlZC0xMDAwOiAjZmZlY2VlO1xcblxcbiAgICAvKiBBbWJlciBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItYW1iZXItMTAwOiAjMjcxNzAwO1xcbiAgICAtLWNvbG9yLWFtYmVyLTIwMDogIzM0MWMwMDtcXG4gICAgLS1jb2xvci1hbWJlci0zMDA6ICM0YTI5MDA7XFxuICAgIC0tY29sb3ItYW1iZXItNDAwOiAjNTczMzAwO1xcbiAgICAtLWNvbG9yLWFtYmVyLTUwMDogIzY5M2YwNTtcXG4gICAgLS1jb2xvci1hbWJlci02MDA6ICNlNzljMTM7XFxuICAgIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xcbiAgICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcXG4gICAgLS1jb2xvci1hbWJlci05MDA6ICNmMWExMGQ7XFxuICAgIC0tY29sb3ItYW1iZXItMTAwMDogI2ZlZjNkZDtcXG5cXG4gICAgLyogR3JlZW4gU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLWdyZWVuLTEwMDogIzBiMjIxMTtcXG4gICAgLS1jb2xvci1ncmVlbi0yMDA6ICMwZjJjMTc7XFxuICAgIC0tY29sb3ItZ3JlZW4tMzAwOiAjMTEzNTFiO1xcbiAgICAtLWNvbG9yLWdyZWVuLTQwMDogIzBjNDYxYjtcXG4gICAgLS1jb2xvci1ncmVlbi01MDA6ICMxMjY0Mjc7XFxuICAgIC0tY29sb3ItZ3JlZW4tNjAwOiAjMWE5MzM4O1xcbiAgICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcXG4gICAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XFxuICAgIC0tY29sb3ItZ3JlZW4tOTAwOiAjNjNjMTc0O1xcbiAgICAtLWNvbG9yLWdyZWVuLTEwMDA6ICNlNWZiZWI7XFxuXFxuICAgIC8qIFR1cmJvcGFjayBEYXJrIC0gVGVtcG9yYXJ5ICovXFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmY2ZDkyO1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICM0NWIyZmY7XFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICM2ZTI5M2I7XFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjMjg0ZjgwO1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogIzI1MGQxMjtcXG4gICAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjMGExNzIzO1xcbiAgfVxcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kZWZhdWx0LXRoZW1lLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGA6aG9zdCB7XG4gIC8qIFxuICAgKiBBbHRob3VnaCB0aGUgc3R5bGUgYXBwbGllZCB0byB0aGUgc2hhZG93IGhvc3QgaXMgaXNvbGF0ZWQsXG4gICAqIHRoZSBlbGVtZW50IHRoYXQgYXR0YWNoZWQgdGhlIHNoYWRvdyBob3N0IChpLmUuIFwibmV4dGpzLXBvcnRhbFwiKVxuICAgKiBpcyBzdGlsbCBhZmZlY3RlZCBieSB0aGUgcGFyZW50J3Mgc3R5bGUgKGUuZy4gXCJib2R5XCIpLiBUaGlzIG1heVxuICAgKiBvY2N1ciBzdHlsZSBjb25mbGljdHMgbGlrZSBcImRpc3BsYXk6IGZsZXhcIiwgd2l0aCBvdGhlciBjaGlsZHJlblxuICAgKiBlbGVtZW50cyB0aGVyZWZvcmUgZ2l2ZSB0aGUgc2hhZG93IGhvc3QgYW4gYWJzb2x1dGUgcG9zaXRpb24uXG4gICAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgLS1jb2xvci1mb250OiAjNzU3NTc1O1xuICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDI1MCwgMjUwLCAyNTAsIDAuOCk7XG4gIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE0NSk7XG5cbiAgLS1jb2xvci10aXRsZS1jb2xvcjogIzFmMWYxZjtcbiAgLS1jb2xvci1zdGFjay1ub3RlczogIzc3NztcblxuICAtLWNvbG9yLWFjY2VudHMtMTogIzgwODA4MDtcbiAgLS1jb2xvci1hY2NlbnRzLTI6ICMyMjIyMjI7XG4gIC0tY29sb3ItYWNjZW50cy0zOiAjNDA0MDQwO1xuXG4gIC0tZm9udC1zdGFjay1tb25vc3BhY2U6ICdfX25leHRqcy1HZWlzdCBNb25vJywgJ0dlaXN0IE1vbm8nLCAnU0ZNb25vLVJlZ3VsYXInLFxuICAgIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgTWVubG8sIENvdXJpZXIsIG1vbm9zcGFjZTtcbiAgLS1mb250LXN0YWNrLXNhbnM6ICdfX25leHRqcy1HZWlzdCcsICdHZWlzdCcsIC1hcHBsZS1zeXN0ZW0sICdTb3VyY2UgU2FucyBQcm8nLFxuICAgIHNhbnMtc2VyaWY7XG5cbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XG4gIGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XG5cbiAgLyogVE9ETzogUmVtb3ZlIHJlcGxhY2VkIG9uZXMuICovXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDAuMSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAtLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAwLjEpLFxuICAgIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDAuMSk7XG4gIC0tc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDAuMSksXG4gICAgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDAuMSk7XG4gIC0tc2hhZG93LTJ4bDogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMC4yNSk7XG4gIC0tc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbm9uZTogMCAwICMwMDAwO1xuXG4gIC0tc2hhZG93LXNtYWxsOiAwcHggMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAtLXNoYWRvdy1tZW51OiAwcHggMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDIpLFxuICAgIDBweCA0cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjA0KSwgMHB4IDE2cHggMjRweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG5cbiAgLS1mb2N1cy1jb2xvcjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xuICAtLWZvY3VzLXJpbmc6IDJweCBzb2xpZCB2YXIoLS1mb2N1cy1jb2xvcik7XG5cbiAgLS10aW1pbmctc3dpZnQ6IGN1YmljLWJlemllcigwLjIzLCAwLjg4LCAwLjI2LCAwLjkyKTtcbiAgLS10aW1pbmctb3ZlcmxheTogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4xKTtcbiAgLyogcHJldHRpZXItaWdub3JlICovXG4gIC0tdGltaW5nLWJvdW5jZTogbGluZWFyKDAgMCUsIDAuMDA1ODcxIDElLCAwLjAyMjA1OCAyJSwgMC4wNDY2MTIgMyUsIDAuMDc3ODIzIDQlLCAwLjExNDE5OSA1JSwgMC4xNTQ0NDEgNiUsIDAuMTk3NDMxIDcuMDAwMDAwMDAwMDAwMDAxJSwgMC4yNDIyMDggOCUsIDAuMjg3OTU5IDklLCAwLjMzMzk5NSAxMCUsIDAuMzc5NzQzIDExJSwgMC40MjQ3MzIgMTIlLCAwLjQ2ODU4IDEzJSwgMC41MTA5ODIgMTQuMDAwMDAwMDAwMDAwMDAyJSwgMC41NTE3MDIgMTUlLCAwLjU5MDU2NCAxNiUsIDAuNjI3NDQ1IDE3JSwgMC42NjIyNjEgMTglLCAwLjY5NDk3MSAxOSUsIDAuNzI1NTYxIDIwJSwgMC43NTQwNDcgMjElLCAwLjc4MDQ2MiAyMiUsIDAuODA0ODYxIDIzJSwgMC44MjczMSAyNCUsIDAuODQ3ODg4IDI1JSwgMC44NjY2NzkgMjYlLCAwLjg4Mzc3NSAyNyUsIDAuODk5MjcyIDI4LjAwMDAwMDAwMDAwMDAwNCUsIDAuOTEzMjY3IDI4Ljk5OTk5OTk5OTk5OTk5NiUsIDAuOTI1ODU2IDMwJSwgMC45MzcxMzcgMzElLCAwLjk0NzIwNSAzMiUsIDAuOTU2MTUzIDMzJSwgMC45NjQwNyAzNCUsIDAuOTcxMDQzIDM1JSwgMC45NzcxNTMgMzYlLCAwLjk4MjQ3OSAzNyUsIDAuOTg3MDk0IDM4JSwgMC45OTEwNjYgMzklLCAwLjk5NDQ2MiA0MCUsIDAuOTk3MzM5IDQxJSwgMC45OTk3NTUgNDIlLCAxLjAwMTc2MSA0MyUsIDEuMDAzNDA0IDQ0JSwgMS4wMDQ3MjcgNDUlLCAxLjAwNTc3IDQ2JSwgMS4wMDY1NjkgNDclLCAxLjAwNzE1NyA0OCUsIDEuMDA3NTYzIDQ5JSwgMS4wMDc4MTMgNTAlLCAxLjAwNzkzMSA1MSUsIDEuMDA3OTM5IDUyJSwgMS4wMDc4NTUgNTMlLCAxLjAwNzY5NyA1NCUsIDEuMDA3NDc3IDU1LjAwMDAwMDAwMDAwMDAxJSwgMS4wMDcyMSA1Ni4wMDAwMDAwMDAwMDAwMSUsIDEuMDA2OTA3IDU2Ljk5OTk5OTk5OTk5OTk5JSwgMS4wMDY1NzYgNTcuOTk5OTk5OTk5OTk5OTklLCAxLjAwNjIyOCA1OSUsIDEuMDA1ODY4IDYwJSwgMS4wMDU1MDMgNjElLCAxLjAwNTEzNyA2MiUsIDEuMDA0Nzc2IDYzJSwgMS4wMDQ0MjIgNjQlLCAxLjAwNDA3OCA2NSUsIDEuMDAzNzQ2IDY2JSwgMS4wMDM0MjkgNjclLCAxLjAwMzEyNyA2OCUsIDEuMDAyODQgNjklLCAxLjAwMjU3MSA3MCUsIDEuMDAyMzE4IDcxJSwgMS4wMDIwODIgNzIlLCAxLjAwMTg2MyA3MyUsIDEuMDAxNjYgNzQlLCAxLjAwMTQ3MyA3NSUsIDEuMDAxMzAxIDc2JSwgMS4wMDExNDMgNzclLCAxLjAwMSA3OCUsIDEuMDAwODY5IDc5JSwgMS4wMDA3NTIgODAlLCAxLjAwMDY0NSA4MSUsIDEuMDAwNTUgODIlLCAxLjAwMDQ2NCA4MyUsIDEuMDAwMzg4IDg0JSwgMS4wMDAzMjEgODUlLCAxLjAwMDI2MSA4NiUsIDEuMDAwMjA5IDg3JSwgMS4wMDAxNjMgODglLCAxLjAwMDEyMyA4OSUsIDEuMDAwMDg4IDkwJSk7XG5cbiAgLS1yb3VuZGVkLW5vbmU6IDBweDtcbiAgLS1yb3VuZGVkLXNtOiAycHg7XG4gIC0tcm91bmRlZC1tZDogNHB4O1xuICAtLXJvdW5kZWQtbWQtMjogNnB4O1xuICAtLXJvdW5kZWQtbGc6IDhweDtcbiAgLS1yb3VuZGVkLXhsOiAxMnB4O1xuICAtLXJvdW5kZWQtMnhsOiAxNnB4O1xuICAtLXJvdW5kZWQtM3hsOiAyNHB4O1xuICAtLXJvdW5kZWQtNHhsOiAzMnB4O1xuICAtLXJvdW5kZWQtZnVsbDogOTk5OXB4O1xuXG4gIC8qIFxuICAgIFRoaXMgdmFsdWUgZ2V0cyBzZXQgZnJvbSB0aGUgRGV2IFRvb2xzIHByZWZlcmVuY2VzLFxuICAgIGFuZCB3ZSB1c2UgdGhlIGZvbGxvd2luZyAtLXNpemUtKiB2YXJpYWJsZXMgdG8gXG4gICAgc2NhbGUgdGhlIHJlbGV2YW50IGVsZW1lbnRzLlxuXG4gICAgVGhlIHJlYXNvbiB3aHkgd2UgZG9uJ3QgcmVseSBvbiByZW0gdmFsdWVzIGlzIGJlY2F1c2VcbiAgICBpZiBhbiBhcHAgc2V0cyB0aGVpciByb290IGZvbnQgc2l6ZSB0byBzb21ldGhpbmcgdGlueSwgXG4gICAgaXQgZmVlbHMgdW5leHBlY3RlZCB0byBoYXZlIHRoZSBhcHAgcm9vdCBzaXplIGxlYWsgXG4gICAgaW50byBhIE5leHQuanMgc3VyZmFjZS5cblxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9kaXNjdXNzaW9ucy83NjgxMlxuICAqL1xuICAtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGU6IDE7XG4gIC0tc2l6ZS0xOiBjYWxjKDFweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTI6IGNhbGMoMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzogY2FsYygzcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00OiBjYWxjKDRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTU6IGNhbGMoNXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNjogY2FsYyg2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS03OiBjYWxjKDdweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTg6IGNhbGMoOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtOTogY2FsYyg5cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xMDogY2FsYygxMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTE6IGNhbGMoMTFweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTEyOiBjYWxjKDEycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xMzogY2FsYygxM3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTQ6IGNhbGMoMTRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTE1OiBjYWxjKDE1cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xNjogY2FsYygxNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTc6IGNhbGMoMTdweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTE4OiBjYWxjKDE4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yMDogY2FsYygyMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjI6IGNhbGMoMjJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTI0OiBjYWxjKDI0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yNjogY2FsYygyNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjg6IGNhbGMoMjhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTMwOiBjYWxjKDMwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zMjogY2FsYygzMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzQ6IGNhbGMoMzRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTM2OiBjYWxjKDM2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zODogY2FsYygzOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDA6IGNhbGMoNDBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQyOiBjYWxjKDQycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00NDogY2FsYyg0NHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDY6IGNhbGMoNDZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQ4OiBjYWxjKDQ4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuYSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTkwMCk7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTkwMCk7XG4gIH1cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcbiAgfVxufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGVmYXVsdC10aGVtZS5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0U7Ozs7OztJQU1FO0VBQ0Ysa0JBQWtCOztFQUVsQixxQkFBcUI7RUFDckIsMENBQTBDO0VBQzFDLDJDQUEyQzs7RUFFM0MsNEJBQTRCO0VBQzVCLHlCQUF5Qjs7RUFFekIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7O0VBRTFCOzBEQUN3RDtFQUN4RDtjQUNZOztFQUVaLG1DQUFtQztFQUNuQyw0QkFBNEI7O0VBRTVCLGdDQUFnQztFQUNoQywwQ0FBMEM7RUFDMUMsdUVBQXVFO0VBQ3ZFLDZFQUE2RTtFQUM3RTttQ0FDaUM7RUFDakM7b0NBQ2tDO0VBQ2xDLGlEQUFpRDtFQUNqRCxtREFBbUQ7RUFDbkQsd0JBQXdCOztFQUV4QiwrQ0FBK0M7RUFDL0M7Z0ZBQzhFOztFQUU5RSxvQ0FBb0M7RUFDcEMsMENBQTBDOztFQUUxQyxvREFBb0Q7RUFDcEQsdURBQXVEO0VBQ3ZELG9CQUFvQjtFQUNwQixpM0NBQWkzQzs7RUFFajNDLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLHNCQUFzQjs7RUFFdEI7Ozs7Ozs7Ozs7O0dBV0M7RUFDRCwyQkFBMkI7RUFDM0IsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7O0VBRXJEO0lBQ0UsYUFBYTtFQUNmO0FBQ0Y7O0FBRUE7Ozs7OztFQU1FLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UsNEJBQTRCO0VBQzVCO0lBQ0UsNEJBQTRCO0VBQzlCO0VBQ0E7SUFDRSwwQkFBMEI7RUFDNUI7QUFDRlwiLHNvdXJjZXNDb250ZW50OltcIjpob3N0IHtcXG4gIC8qIFxcbiAgICogQWx0aG91Z2ggdGhlIHN0eWxlIGFwcGxpZWQgdG8gdGhlIHNoYWRvdyBob3N0IGlzIGlzb2xhdGVkLFxcbiAgICogdGhlIGVsZW1lbnQgdGhhdCBhdHRhY2hlZCB0aGUgc2hhZG93IGhvc3QgKGkuZS4gXFxcIm5leHRqcy1wb3J0YWxcXFwiKVxcbiAgICogaXMgc3RpbGwgYWZmZWN0ZWQgYnkgdGhlIHBhcmVudCdzIHN0eWxlIChlLmcuIFxcXCJib2R5XFxcIikuIFRoaXMgbWF5XFxuICAgKiBvY2N1ciBzdHlsZSBjb25mbGljdHMgbGlrZSBcXFwiZGlzcGxheTogZmxleFxcXCIsIHdpdGggb3RoZXIgY2hpbGRyZW5cXG4gICAqIGVsZW1lbnRzIHRoZXJlZm9yZSBnaXZlIHRoZSBzaGFkb3cgaG9zdCBhbiBhYnNvbHV0ZSBwb3NpdGlvbi5cXG4gICAqL1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcblxcbiAgLS1jb2xvci1mb250OiAjNzU3NTc1O1xcbiAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjgpO1xcbiAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTQ1KTtcXG5cXG4gIC0tY29sb3ItdGl0bGUtY29sb3I6ICMxZjFmMWY7XFxuICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjNzc3O1xcblxcbiAgLS1jb2xvci1hY2NlbnRzLTE6ICM4MDgwODA7XFxuICAtLWNvbG9yLWFjY2VudHMtMjogIzIyMjIyMjtcXG4gIC0tY29sb3ItYWNjZW50cy0zOiAjNDA0MDQwO1xcblxcbiAgLS1mb250LXN0YWNrLW1vbm9zcGFjZTogJ19fbmV4dGpzLUdlaXN0IE1vbm8nLCAnR2Vpc3QgTW9ubycsICdTRk1vbm8tUmVndWxhcicsXFxuICAgIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgTWVubG8sIENvdXJpZXIsIG1vbm9zcGFjZTtcXG4gIC0tZm9udC1zdGFjay1zYW5zOiAnX19uZXh0anMtR2Vpc3QnLCAnR2Vpc3QnLCAtYXBwbGUtc3lzdGVtLCAnU291cmNlIFNhbnMgUHJvJyxcXG4gICAgc2Fucy1zZXJpZjtcXG5cXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTtcXG5cXG4gIC8qIFRPRE86IFJlbW92ZSByZXBsYWNlZCBvbmVzLiAqL1xcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xcbiAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcXG4gIC0tc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMSksXFxuICAgIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAtLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAwLjEpLFxcbiAgICAwIDhweCAxMHB4IC02cHggcmdiKDAgMCAwIC8gMC4xKTtcXG4gIC0tc2hhZG93LTJ4bDogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMC4yNSk7XFxuICAtLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XFxuICAtLXNoYWRvdy1ub25lOiAwIDAgIzAwMDA7XFxuXFxuICAtLXNoYWRvdy1zbWFsbDogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gIC0tc2hhZG93LW1lbnU6IDBweCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMiksXFxuICAgIDBweCA0cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjA0KSwgMHB4IDE2cHggMjRweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XFxuXFxuICAtLWZvY3VzLWNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XFxuICAtLWZvY3VzLXJpbmc6IDJweCBzb2xpZCB2YXIoLS1mb2N1cy1jb2xvcik7XFxuXFxuICAtLXRpbWluZy1zd2lmdDogY3ViaWMtYmV6aWVyKDAuMjMsIDAuODgsIDAuMjYsIDAuOTIpO1xcbiAgLS10aW1pbmctb3ZlcmxheTogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4xKTtcXG4gIC8qIHByZXR0aWVyLWlnbm9yZSAqL1xcbiAgLS10aW1pbmctYm91bmNlOiBsaW5lYXIoMCAwJSwgMC4wMDU4NzEgMSUsIDAuMDIyMDU4IDIlLCAwLjA0NjYxMiAzJSwgMC4wNzc4MjMgNCUsIDAuMTE0MTk5IDUlLCAwLjE1NDQ0MSA2JSwgMC4xOTc0MzEgNy4wMDAwMDAwMDAwMDAwMDElLCAwLjI0MjIwOCA4JSwgMC4yODc5NTkgOSUsIDAuMzMzOTk1IDEwJSwgMC4zNzk3NDMgMTElLCAwLjQyNDczMiAxMiUsIDAuNDY4NTggMTMlLCAwLjUxMDk4MiAxNC4wMDAwMDAwMDAwMDAwMDIlLCAwLjU1MTcwMiAxNSUsIDAuNTkwNTY0IDE2JSwgMC42Mjc0NDUgMTclLCAwLjY2MjI2MSAxOCUsIDAuNjk0OTcxIDE5JSwgMC43MjU1NjEgMjAlLCAwLjc1NDA0NyAyMSUsIDAuNzgwNDYyIDIyJSwgMC44MDQ4NjEgMjMlLCAwLjgyNzMxIDI0JSwgMC44NDc4ODggMjUlLCAwLjg2NjY3OSAyNiUsIDAuODgzNzc1IDI3JSwgMC44OTkyNzIgMjguMDAwMDAwMDAwMDAwMDA0JSwgMC45MTMyNjcgMjguOTk5OTk5OTk5OTk5OTk2JSwgMC45MjU4NTYgMzAlLCAwLjkzNzEzNyAzMSUsIDAuOTQ3MjA1IDMyJSwgMC45NTYxNTMgMzMlLCAwLjk2NDA3IDM0JSwgMC45NzEwNDMgMzUlLCAwLjk3NzE1MyAzNiUsIDAuOTgyNDc5IDM3JSwgMC45ODcwOTQgMzglLCAwLjk5MTA2NiAzOSUsIDAuOTk0NDYyIDQwJSwgMC45OTczMzkgNDElLCAwLjk5OTc1NSA0MiUsIDEuMDAxNzYxIDQzJSwgMS4wMDM0MDQgNDQlLCAxLjAwNDcyNyA0NSUsIDEuMDA1NzcgNDYlLCAxLjAwNjU2OSA0NyUsIDEuMDA3MTU3IDQ4JSwgMS4wMDc1NjMgNDklLCAxLjAwNzgxMyA1MCUsIDEuMDA3OTMxIDUxJSwgMS4wMDc5MzkgNTIlLCAxLjAwNzg1NSA1MyUsIDEuMDA3Njk3IDU0JSwgMS4wMDc0NzcgNTUuMDAwMDAwMDAwMDAwMDElLCAxLjAwNzIxIDU2LjAwMDAwMDAwMDAwMDAxJSwgMS4wMDY5MDcgNTYuOTk5OTk5OTk5OTk5OTklLCAxLjAwNjU3NiA1Ny45OTk5OTk5OTk5OTk5OSUsIDEuMDA2MjI4IDU5JSwgMS4wMDU4NjggNjAlLCAxLjAwNTUwMyA2MSUsIDEuMDA1MTM3IDYyJSwgMS4wMDQ3NzYgNjMlLCAxLjAwNDQyMiA2NCUsIDEuMDA0MDc4IDY1JSwgMS4wMDM3NDYgNjYlLCAxLjAwMzQyOSA2NyUsIDEuMDAzMTI3IDY4JSwgMS4wMDI4NCA2OSUsIDEuMDAyNTcxIDcwJSwgMS4wMDIzMTggNzElLCAxLjAwMjA4MiA3MiUsIDEuMDAxODYzIDczJSwgMS4wMDE2NiA3NCUsIDEuMDAxNDczIDc1JSwgMS4wMDEzMDEgNzYlLCAxLjAwMTE0MyA3NyUsIDEuMDAxIDc4JSwgMS4wMDA4NjkgNzklLCAxLjAwMDc1MiA4MCUsIDEuMDAwNjQ1IDgxJSwgMS4wMDA1NSA4MiUsIDEuMDAwNDY0IDgzJSwgMS4wMDAzODggODQlLCAxLjAwMDMyMSA4NSUsIDEuMDAwMjYxIDg2JSwgMS4wMDAyMDkgODclLCAxLjAwMDE2MyA4OCUsIDEuMDAwMTIzIDg5JSwgMS4wMDAwODggOTAlKTtcXG5cXG4gIC0tcm91bmRlZC1ub25lOiAwcHg7XFxuICAtLXJvdW5kZWQtc206IDJweDtcXG4gIC0tcm91bmRlZC1tZDogNHB4O1xcbiAgLS1yb3VuZGVkLW1kLTI6IDZweDtcXG4gIC0tcm91bmRlZC1sZzogOHB4O1xcbiAgLS1yb3VuZGVkLXhsOiAxMnB4O1xcbiAgLS1yb3VuZGVkLTJ4bDogMTZweDtcXG4gIC0tcm91bmRlZC0zeGw6IDI0cHg7XFxuICAtLXJvdW5kZWQtNHhsOiAzMnB4O1xcbiAgLS1yb3VuZGVkLWZ1bGw6IDk5OTlweDtcXG5cXG4gIC8qIFxcbiAgICBUaGlzIHZhbHVlIGdldHMgc2V0IGZyb20gdGhlIERldiBUb29scyBwcmVmZXJlbmNlcyxcXG4gICAgYW5kIHdlIHVzZSB0aGUgZm9sbG93aW5nIC0tc2l6ZS0qIHZhcmlhYmxlcyB0byBcXG4gICAgc2NhbGUgdGhlIHJlbGV2YW50IGVsZW1lbnRzLlxcblxcbiAgICBUaGUgcmVhc29uIHdoeSB3ZSBkb24ndCByZWx5IG9uIHJlbSB2YWx1ZXMgaXMgYmVjYXVzZVxcbiAgICBpZiBhbiBhcHAgc2V0cyB0aGVpciByb290IGZvbnQgc2l6ZSB0byBzb21ldGhpbmcgdGlueSwgXFxuICAgIGl0IGZlZWxzIHVuZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgYXBwIHJvb3Qgc2l6ZSBsZWFrIFxcbiAgICBpbnRvIGEgTmV4dC5qcyBzdXJmYWNlLlxcblxcbiAgICBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvZGlzY3Vzc2lvbnMvNzY4MTJcXG4gICovXFxuICAtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGU6IDE7XFxuICAtLXNpemUtMTogY2FsYygxcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjogY2FsYygycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzogY2FsYygzcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDogY2FsYyg0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNTogY2FsYyg1cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNjogY2FsYyg2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNzogY2FsYyg3cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtODogY2FsYyg4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtOTogY2FsYyg5cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTA6IGNhbGMoMTBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xMTogY2FsYygxMXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTEyOiBjYWxjKDEycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTM6IGNhbGMoMTNweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xNDogY2FsYygxNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTE1OiBjYWxjKDE1cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTY6IGNhbGMoMTZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xNzogY2FsYygxN3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTE4OiBjYWxjKDE4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjA6IGNhbGMoMjBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yMjogY2FsYygyMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTI0OiBjYWxjKDI0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjY6IGNhbGMoMjZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yODogY2FsYygyOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTMwOiBjYWxjKDMwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzI6IGNhbGMoMzJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zNDogY2FsYygzNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTM2OiBjYWxjKDM2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzg6IGNhbGMoMzhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00MDogY2FsYyg0MHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQyOiBjYWxjKDQycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDQ6IGNhbGMoNDRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00NjogY2FsYyg0NnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQ4OiBjYWxjKDQ4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuXFxuICBAbWVkaWEgcHJpbnQge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG5cXG5oMSxcXG5oMixcXG5oMyxcXG5oNCxcXG5oNSxcXG5oNiB7XFxuICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG59XFxuXFxuYSB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xcbiAgJjpob3ZlciB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTkwMCk7XFxuICB9XFxuICAmOmZvY3VzLXZpc2libGUge1xcbiAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gIH1cXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbih0KXt2YXIgbj1cIlwiLHI9dm9pZCAwIT09dFs1XTtyZXR1cm4gdFs0XSYmKG4rPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodFs0XSxcIikge1wiKSksdFsyXSYmKG4rPVwiQG1lZGlhIFwiLmNvbmNhdCh0WzJdLFwiIHtcIikpLHImJihuKz1cIkBsYXllclwiLmNvbmNhdCh0WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh0WzVdKTpcIlwiLFwiIHtcIikpLG4rPWUodCksciYmKG4rPVwifVwiKSx0WzJdJiYobis9XCJ9XCIpLHRbNF0mJihuKz1cIn1cIiksbn0pLmpvaW4oXCJcIil9LHQuaT1mdW5jdGlvbihlLG4scixvLGEpe1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1bW251bGwsZSx2b2lkIDBdXSk7dmFyIGk9e307aWYocilmb3IodmFyIGw9MDtsPHRoaXMubGVuZ3RoO2wrKyl7dmFyIHM9dGhpc1tsXVswXTtudWxsIT1zJiYoaVtzXT0hMCl9Zm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe3ZhciB1PVtdLmNvbmNhdChlW2NdKTtyJiZpW3VbMF1dfHwodm9pZCAwIT09YSYmKHZvaWQgMD09PXVbNV18fCh1WzFdPVwiQGxheWVyXCIuY29uY2F0KHVbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHVbNV0pOlwiXCIsXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIikpLHVbNV09YSksbiYmKHVbMl0mJih1WzFdPVwiQG1lZGlhIFwiLmNvbmNhdCh1WzJdLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpKSx1WzJdPW4pLG8mJih1WzRdPyh1WzFdPVwiQHN1cHBvcnRzIChcIi5jb25jYXQodVs0XSxcIikge1wiKS5jb25jYXQodVsxXSxcIn1cIiksdVs0XT1vKTp1WzRdPVwiXCIuY29uY2F0KG8pKSx0LnB1c2godSkpfX0sdH19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lWzFdLG49ZVszXTtpZighbilyZXR1cm4gdDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBidG9hKXt2YXIgcj1idG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShuKSkpKTtyZXR1cm5bdF0uY29uY2F0KFtcIi8qIyBcIi5jb25jYXQoXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQociksXCIgKi9cIildKS5qb2luKFwiXFxuXCIpfXJldHVyblt0XS5qb2luKFwiXFxuXCIpfX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjt2YXIgdD1bXTtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgbj0tMSxyPTA7cjx0Lmxlbmd0aDtyKyspaWYodFtyXS5pZGVudGlmaWVyPT09ZSl7bj1yO2JyZWFrfXJldHVybiBufWZ1bmN0aW9uIHIoZSxyKXtmb3IodmFyIG89e30sYT1bXSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBsPWVbaV0scz1yLmJhc2U/bFswXStyLmJhc2U6bFswXSxjPW9bc118fDAsdT1cIlwiLmNvbmNhdChzLFwiIFwiKS5jb25jYXQoYyk7b1tzXT1jKzE7dmFyIGQ9bih1KSxmPXtjc3M6bFsxXSxtZWRpYTpsWzJdLHNvdXJjZU1hcDpsWzNdLHN1cHBvcnRzOmxbNF0sbGF5ZXI6bFs1XX07aWYoLTEhPT1kKXRbZF0ucmVmZXJlbmNlcysrLHRbZF0udXBkYXRlcihmKTtlbHNle3ZhciBwPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kb21BUEkodCk7cmV0dXJuIG4udXBkYXRlKGUpLGZ1bmN0aW9uKHQpe3Q/KHQuY3NzIT09ZS5jc3N8fHQubWVkaWEhPT1lLm1lZGlhfHx0LnNvdXJjZU1hcCE9PWUuc291cmNlTWFwfHx0LnN1cHBvcnRzIT09ZS5zdXBwb3J0c3x8dC5sYXllciE9PWUubGF5ZXIpJiZuLnVwZGF0ZShlPXQpOm4ucmVtb3ZlKCl9fShmLHIpO3IuYnlJbmRleD1pLHQuc3BsaWNlKGksMCx7aWRlbnRpZmllcjp1LHVwZGF0ZXI6cCxyZWZlcmVuY2VzOjF9KX1hLnB1c2godSl9cmV0dXJuIGF9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbyl7dmFyIGE9cihlPWV8fFtdLG89b3x8e30pO3JldHVybiBmdW5jdGlvbihlKXtlPWV8fFtdO2Zvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKXt2YXIgbD1uKGFbaV0pO3RbbF0ucmVmZXJlbmNlcy0tfWZvcih2YXIgcz1yKGUsbyksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgdT1uKGFbY10pOzA9PT10W3VdLnJlZmVyZW5jZXMmJih0W3VdLnVwZGF0ZXIoKSx0LnNwbGljZSh1LDEpKX1hPXN9fX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3JldHVybiBlLnNldEF0dHJpYnV0ZXModCxlLmF0dHJpYnV0ZXMpLGUuaW5zZXJ0KHQsZS5vcHRpb25zKSx0fX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4ubmM7dCYmZS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLHQpfX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQpcmV0dXJue3VwZGF0ZTpmdW5jdGlvbigpe30scmVtb3ZlOmZ1bmN0aW9uKCl7fX07dmFyIHQ9ZS5pbnNlcnRTdHlsZUVsZW1lbnQoZSk7cmV0dXJue3VwZGF0ZTpmdW5jdGlvbihuKXt2YXIgcixvLGE7cj1cIlwiLG4uc3VwcG9ydHMmJihyKz1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KG4uc3VwcG9ydHMsXCIpIHtcIikpLG4ubWVkaWEmJihyKz1cIkBtZWRpYSBcIi5jb25jYXQobi5tZWRpYSxcIiB7XCIpKSwobz12b2lkIDAhPT1uLmxheWVyKSYmKHIrPVwiQGxheWVyXCIuY29uY2F0KG4ubGF5ZXIubGVuZ3RoPjA/XCIgXCIuY29uY2F0KG4ubGF5ZXIpOlwiXCIsXCIge1wiKSkscis9bi5jc3MsbyYmKHIrPVwifVwiKSxuLm1lZGlhJiYocis9XCJ9XCIpLG4uc3VwcG9ydHMmJihyKz1cIn1cIiksKGE9bi5zb3VyY2VNYXApJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYnRvYSYmKHIrPVwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYSkpKSksXCIgKi9cIikpLGUuc3R5bGVUYWdUcmFuc2Zvcm0ocix0LGUub3B0aW9ucyl9LHJlbW92ZTpmdW5jdGlvbigpeyFmdW5jdGlvbihlKXtpZihudWxsIT09ZS5wYXJlbnROb2RlKWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0odCl9fX19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZih0LnN0eWxlU2hlZXQpdC5zdHlsZVNoZWV0LmNzc1RleHQ9ZTtlbHNle2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCk7dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSl9fX0sXCIuL2Rpc3QvY29tcGlsZWQvYW5zZXIvaW5kZXguanNcIjpmdW5jdGlvbihlKXsoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgdD17MjExOmU9Pnt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLG49W1t7Y29sb3I6XCIwLCAwLCAwXCIsY2xhc3M6XCJhbnNpLWJsYWNrXCJ9LHtjb2xvcjpcIjE4NywgMCwgMFwiLGNsYXNzOlwiYW5zaS1yZWRcIn0se2NvbG9yOlwiMCwgMTg3LCAwXCIsY2xhc3M6XCJhbnNpLWdyZWVuXCJ9LHtjb2xvcjpcIjE4NywgMTg3LCAwXCIsY2xhc3M6XCJhbnNpLXllbGxvd1wifSx7Y29sb3I6XCIwLCAwLCAxODdcIixjbGFzczpcImFuc2ktYmx1ZVwifSx7Y29sb3I6XCIxODcsIDAsIDE4N1wiLGNsYXNzOlwiYW5zaS1tYWdlbnRhXCJ9LHtjb2xvcjpcIjAsIDE4NywgMTg3XCIsY2xhc3M6XCJhbnNpLWN5YW5cIn0se2NvbG9yOlwiMjU1LDI1NSwyNTVcIixjbGFzczpcImFuc2ktd2hpdGVcIn1dLFt7Y29sb3I6XCI4NSwgODUsIDg1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC1ibGFja1wifSx7Y29sb3I6XCIyNTUsIDg1LCA4NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtcmVkXCJ9LHtjb2xvcjpcIjAsIDI1NSwgMFwiLGNsYXNzOlwiYW5zaS1icmlnaHQtZ3JlZW5cIn0se2NvbG9yOlwiMjU1LCAyNTUsIDg1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC15ZWxsb3dcIn0se2NvbG9yOlwiODUsIDg1LCAyNTVcIixjbGFzczpcImFuc2ktYnJpZ2h0LWJsdWVcIn0se2NvbG9yOlwiMjU1LCA4NSwgMjU1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC1tYWdlbnRhXCJ9LHtjb2xvcjpcIjg1LCAyNTUsIDI1NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtY3lhblwifSx7Y29sb3I6XCIyNTUsIDI1NSwgMjU1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC13aGl0ZVwifV1dO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBlKSl0aHJvdyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7dGhpcy5mZz10aGlzLmJnPXRoaXMuZmdfdHJ1ZWNvbG9yPXRoaXMuYmdfdHJ1ZWNvbG9yPW51bGwsdGhpcy5icmlnaHQ9MH1yZXR1cm4gdChlLG51bGwsW3trZXk6XCJlc2NhcGVGb3JIdG1sXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKG5ldyBlKS5lc2NhcGVGb3JIdG1sKHQpfX0se2tleTpcImxpbmtpZnlcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4obmV3IGUpLmxpbmtpZnkodCl9fSx7a2V5OlwiYW5zaVRvSHRtbFwiLHZhbHVlOmZ1bmN0aW9uKHQsbil7cmV0dXJuKG5ldyBlKS5hbnNpVG9IdG1sKHQsbil9fSx7a2V5OlwiYW5zaVRvSnNvblwiLHZhbHVlOmZ1bmN0aW9uKHQsbil7cmV0dXJuKG5ldyBlKS5hbnNpVG9Kc29uKHQsbil9fSx7a2V5OlwiYW5zaVRvVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybihuZXcgZSkuYW5zaVRvVGV4dCh0KX19XSksdChlLFt7a2V5Olwic2V0dXBQYWxldHRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLlBBTEVUVEVfQ09MT1JTPVtdO2Zvcih2YXIgZT0wO2U8MjsrK2UpZm9yKHZhciB0PTA7dDw4OysrdCl0aGlzLlBBTEVUVEVfQ09MT1JTLnB1c2gobltlXVt0XS5jb2xvcik7Zm9yKHZhciByPVswLDk1LDEzNSwxNzUsMjE1LDI1NV0sbz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHJbZV0rXCIsIFwiK3JbdF0rXCIsIFwiK3Jbbl19LGE9MDthPDY7KythKWZvcih2YXIgaT0wO2k8NjsrK2kpZm9yKHZhciBsPTA7bDw2OysrbCl0aGlzLlBBTEVUVEVfQ09MT1JTLnB1c2gobyhhLGksbCkpO2Zvcih2YXIgcz04LGM9MDtjPDI0OysrYyxzKz0xMCl0aGlzLlBBTEVUVEVfQ09MT1JTLnB1c2gobyhzLHMscykpfX0se2tleTpcImVzY2FwZUZvckh0bWxcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bJjw+XS9nbSxmdW5jdGlvbihlKXtyZXR1cm5cIiZcIj09ZT9cIiZhbXA7XCI6XCI8XCI9PWU/XCImbHQ7XCI6XCI+XCI9PWU/XCImZ3Q7XCI6XCJcIn0pfX0se2tleTpcImxpbmtpZnlcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oaHR0cHM/OlxcL1xcL1teXFxzXSspL2dtLGZ1bmN0aW9uKGUpe3JldHVybic8YSBocmVmPVwiJytlKydcIj4nK2UrXCI8L2E+XCJ9KX19LHtrZXk6XCJhbnNpVG9IdG1sXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wcm9jZXNzKGUsdCwhMCl9fSx7a2V5OlwiYW5zaVRvSnNvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLmpzb249ITAsdC5jbGVhckxpbmU9ITEsdGhpcy5wcm9jZXNzKGUsdCwhMCl9fSx7a2V5OlwiYW5zaVRvVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnByb2Nlc3MoZSx7fSwhMSl9fSx7a2V5OlwicHJvY2Vzc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89ZS5zcGxpdCgvXFwwMzNcXFsvKSxhPW8uc2hpZnQoKTtudWxsPT10JiYodD17fSksdC5jbGVhckxpbmU9L1xcci8udGVzdChlKTt2YXIgaT1vLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gci5wcm9jZXNzQ2h1bmsoZSx0LG4pfSk7aWYodCYmdC5qc29uKXt2YXIgbD10aGlzLnByb2Nlc3NDaHVua0pzb24oXCJcIik7cmV0dXJuIGwuY29udGVudD1hLGwuY2xlYXJMaW5lPXQuY2xlYXJMaW5lLGkudW5zaGlmdChsKSx0LnJlbW92ZV9lbXB0eSYmKGk9aS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuaXNFbXB0eSgpfSkpLGl9cmV0dXJuIGkudW5zaGlmdChhKSxpLmpvaW4oXCJcIil9fSx7a2V5OlwicHJvY2Vzc0NodW5rSnNvblwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbz0odD12b2lkIDA9PT10P3t9OnQpLnVzZV9jbGFzc2VzPXZvaWQgMCE9PXQudXNlX2NsYXNzZXMmJnQudXNlX2NsYXNzZXMsYT10LmtleT1vP1wiY2xhc3NcIjpcImNvbG9yXCIsaT17Y29udGVudDplLGZnOm51bGwsYmc6bnVsbCxmZ190cnVlY29sb3I6bnVsbCxiZ190cnVlY29sb3I6bnVsbCxjbGVhckxpbmU6dC5jbGVhckxpbmUsZGVjb3JhdGlvbjpudWxsLHdhc19wcm9jZXNzZWQ6ITEsaXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiFpLmNvbnRlbnR9fSxsPWUubWF0Y2goL14oWyFcXHgzYy1cXHgzZl0qKShbXFxkO10qKShbXFx4MjAtXFx4MmNdKltcXHg0MC1cXHg3ZV0pKFtcXHNcXFNdKikvbSk7aWYoIWwpcmV0dXJuIGk7aS5jb250ZW50PWxbNF07dmFyIHM9bFsyXS5zcGxpdChcIjtcIik7aWYoXCJcIiE9PWxbMV18fFwibVwiIT09bFszXXx8IXIpcmV0dXJuIGk7Zm9yKHRoaXMuZGVjb3JhdGlvbj1udWxsO3MubGVuZ3RoPjA7KXt2YXIgYz1wYXJzZUludChzLnNoaWZ0KCkpO2lmKGlzTmFOKGMpfHwwPT09Yyl0aGlzLmZnPXRoaXMuYmc9dGhpcy5kZWNvcmF0aW9uPW51bGw7ZWxzZSBpZigxPT09Yyl0aGlzLmRlY29yYXRpb249XCJib2xkXCI7ZWxzZSBpZigyPT09Yyl0aGlzLmRlY29yYXRpb249XCJkaW1cIjtlbHNlIGlmKDM9PWMpdGhpcy5kZWNvcmF0aW9uPVwiaXRhbGljXCI7ZWxzZSBpZig0PT1jKXRoaXMuZGVjb3JhdGlvbj1cInVuZGVybGluZVwiO2Vsc2UgaWYoNT09Yyl0aGlzLmRlY29yYXRpb249XCJibGlua1wiO2Vsc2UgaWYoNz09PWMpdGhpcy5kZWNvcmF0aW9uPVwicmV2ZXJzZVwiO2Vsc2UgaWYoOD09PWMpdGhpcy5kZWNvcmF0aW9uPVwiaGlkZGVuXCI7ZWxzZSBpZig5PT09Yyl0aGlzLmRlY29yYXRpb249XCJzdHJpa2V0aHJvdWdoXCI7ZWxzZSBpZigzOT09Yyl0aGlzLmZnPW51bGw7ZWxzZSBpZig0OT09Yyl0aGlzLmJnPW51bGw7ZWxzZSBpZihjPj0zMCYmYzwzOCl0aGlzLmZnPW5bMF1bYyUxMF1bYV07ZWxzZSBpZihjPj05MCYmYzw5OCl0aGlzLmZnPW5bMV1bYyUxMF1bYV07ZWxzZSBpZihjPj00MCYmYzw0OCl0aGlzLmJnPW5bMF1bYyUxMF1bYV07ZWxzZSBpZihjPj0xMDAmJmM8MTA4KXRoaXMuYmc9blsxXVtjJTEwXVthXTtlbHNlIGlmKDM4PT09Y3x8NDg9PT1jKXt2YXIgdT0zOD09PWM7aWYocy5sZW5ndGg+PTEpe3ZhciBkPXMuc2hpZnQoKTtpZihcIjVcIj09PWQmJnMubGVuZ3RoPj0xKXt2YXIgZj1wYXJzZUludChzLnNoaWZ0KCkpO2lmKGY+PTAmJmY8PTI1NSlpZihvKXt2YXIgcD1mPj0xNj9cImFuc2ktcGFsZXR0ZS1cIitmOm5bKyhmPjcpXVtmJThdLmNsYXNzO3U/dGhpcy5mZz1wOnRoaXMuYmc9cH1lbHNlIHRoaXMuUEFMRVRURV9DT0xPUlN8fHRoaXMuc2V0dXBQYWxldHRlKCksdT90aGlzLmZnPXRoaXMuUEFMRVRURV9DT0xPUlNbZl06dGhpcy5iZz10aGlzLlBBTEVUVEVfQ09MT1JTW2ZdfWVsc2UgaWYoXCIyXCI9PT1kJiZzLmxlbmd0aD49Myl7dmFyIGg9cGFyc2VJbnQocy5zaGlmdCgpKSxtPXBhcnNlSW50KHMuc2hpZnQoKSksZz1wYXJzZUludChzLnNoaWZ0KCkpO2lmKGg+PTAmJmg8PTI1NSYmbT49MCYmbTw9MjU1JiZnPj0wJiZnPD0yNTUpe3ZhciB5PWgrXCIsIFwiK20rXCIsIFwiK2c7bz91Pyh0aGlzLmZnPVwiYW5zaS10cnVlY29sb3JcIix0aGlzLmZnX3RydWVjb2xvcj15KToodGhpcy5iZz1cImFuc2ktdHJ1ZWNvbG9yXCIsdGhpcy5iZ190cnVlY29sb3I9eSk6dT90aGlzLmZnPXk6dGhpcy5iZz15fX19fX1yZXR1cm4gbnVsbD09PXRoaXMuZmcmJm51bGw9PT10aGlzLmJnJiZudWxsPT09dGhpcy5kZWNvcmF0aW9ufHwoaS5mZz10aGlzLmZnLGkuYmc9dGhpcy5iZyxpLmZnX3RydWVjb2xvcj10aGlzLmZnX3RydWVjb2xvcixpLmJnX3RydWVjb2xvcj10aGlzLmJnX3RydWVjb2xvcixpLmRlY29yYXRpb249dGhpcy5kZWNvcmF0aW9uLGkud2FzX3Byb2Nlc3NlZD0hMCksaX19LHtrZXk6XCJwcm9jZXNzQ2h1bmtcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpczt0PXR8fHt9O3ZhciBvPXRoaXMucHJvY2Vzc0NodW5rSnNvbihlLHQsbik7aWYodC5qc29uKXJldHVybiBvO2lmKG8uaXNFbXB0eSgpKXJldHVyblwiXCI7aWYoIW8ud2FzX3Byb2Nlc3NlZClyZXR1cm4gby5jb250ZW50O3ZhciBhPXQudXNlX2NsYXNzZXMsaT1bXSxsPVtdLHM9e30sYz1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPXZvaWQgMDtmb3IobiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJnQucHVzaChcImRhdGEtXCIrbisnPVwiJytyLmVzY2FwZUZvckh0bWwoZVtuXSkrJ1wiJyk7cmV0dXJuIHQubGVuZ3RoPjA/XCIgXCIrdC5qb2luKFwiIFwiKTpcIlwifTtyZXR1cm4oby5mZyYmKGE/KGwucHVzaChvLmZnK1wiLWZnXCIpLG51bGwhPT1vLmZnX3RydWVjb2xvciYmKHNbXCJhbnNpLXRydWVjb2xvci1mZ1wiXT1vLmZnX3RydWVjb2xvcixvLmZnX3RydWVjb2xvcj1udWxsKSk6aS5wdXNoKFwiY29sb3I6cmdiKFwiK28uZmcrXCIpXCIpKSxvLmJnJiYoYT8obC5wdXNoKG8uYmcrXCItYmdcIiksbnVsbCE9PW8uYmdfdHJ1ZWNvbG9yJiYoc1tcImFuc2ktdHJ1ZWNvbG9yLWJnXCJdPW8uYmdfdHJ1ZWNvbG9yLG8uYmdfdHJ1ZWNvbG9yPW51bGwpKTppLnB1c2goXCJiYWNrZ3JvdW5kLWNvbG9yOnJnYihcIitvLmJnK1wiKVwiKSksby5kZWNvcmF0aW9uJiYoYT9sLnB1c2goXCJhbnNpLVwiK28uZGVjb3JhdGlvbik6XCJib2xkXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwiZm9udC13ZWlnaHQ6Ym9sZFwiKTpcImRpbVwiPT09by5kZWNvcmF0aW9uP2kucHVzaChcIm9wYWNpdHk6MC41XCIpOlwiaXRhbGljXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwiZm9udC1zdHlsZTppdGFsaWNcIik6XCJyZXZlcnNlXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwiZmlsdGVyOmludmVydCgxMDAlKVwiKTpcImhpZGRlblwiPT09by5kZWNvcmF0aW9uP2kucHVzaChcInZpc2liaWxpdHk6aGlkZGVuXCIpOlwic3RyaWtldGhyb3VnaFwiPT09by5kZWNvcmF0aW9uP2kucHVzaChcInRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2hcIik6aS5wdXNoKFwidGV4dC1kZWNvcmF0aW9uOlwiK28uZGVjb3JhdGlvbikpLGEpPyc8c3BhbiBjbGFzcz1cIicrbC5qb2luKFwiIFwiKSsnXCInK2MocykrXCI+XCIrby5jb250ZW50K1wiPC9zcGFuPlwiOic8c3BhbiBzdHlsZT1cIicraS5qb2luKFwiO1wiKSsnXCInK2MocykrXCI+XCIrby5jb250ZW50K1wiPC9zcGFuPlwifX1dKSxlfSgpfX0sbj17fTtmdW5jdGlvbiByKGUpe3ZhciBvPW5bZV07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBhPW5bZV09e2V4cG9ydHM6e319LGk9ITA7dHJ5e3RbZV0oYSxhLmV4cG9ydHMsciksaT0hMX1maW5hbGx5e2kmJmRlbGV0ZSBuW2VdfXJldHVybiBhLmV4cG9ydHN9ci5hYj1cIi8vXCIsZS5leHBvcnRzPXIoMjExKX0pKCl9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLWNsaWVudC5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByLG89bihcIi4vZGlzdC9jb21waWxlZC9zY2hlZHVsZXIvaW5kZXguanNcIiksYT1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCIpLGk9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vaW5kZXguanNcIik7ZnVuY3Rpb24gbChlKXt2YXIgdD1cImh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy9cIitlO2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7dCs9XCI/YXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbMV0pO2Zvcih2YXIgbj0yO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pfXJldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0IFwiK3QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZSxuPWU7aWYoZS5hbHRlcm5hdGUpZm9yKDt0LnJldHVybjspdD10LnJldHVybjtlbHNle2U9dDtkbyAwIT0oNDA5OCYodD1lKS5mbGFncykmJihuPXQucmV0dXJuKSxlPXQucmV0dXJuO3doaWxlKGUpfXJldHVybiAzPT09dC50YWc/bjpudWxsfWZ1bmN0aW9uIGMoZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT10JiZudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYodD1lLm1lbW9pemVkU3RhdGUpLG51bGwhPT10KXJldHVybiB0LmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdShlKXtpZigzMT09PWUudGFnKXt2YXIgdD1lLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PXQmJm51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJih0PWUubWVtb2l6ZWRTdGF0ZSksbnVsbCE9PXQpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGUpe2lmKHMoZSkhPT1lKXRocm93IEVycm9yKGwoMTg4KSl9dmFyIGY9T2JqZWN0LmFzc2lnbixwPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGg9U3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpLG09U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxnPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSx2PVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxiPVN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxBPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLHg9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHc9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLEM9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksXz1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTt2YXIgRT1TeW1ib2wuZm9yKFwicmVhY3QuYWN0aXZpdHlcIik7U3ltYm9sLmZvcihcInJlYWN0LmxlZ2FjeV9oaWRkZW5cIiksU3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBqPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC52aWV3X3RyYW5zaXRpb25cIik7dmFyIFM9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIE8oZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9UyYmZVtTXXx8ZVtcIkBAaXRlcmF0b3JcIl0pP2U6bnVsbH12YXIgQj1TeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxQPUFycmF5LmlzQXJyYXksST1hLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxUPWkuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLHo9e3BlbmRpbmc6ITEsZGF0YTpudWxsLG1ldGhvZDpudWxsLGFjdGlvbjpudWxsfSxEPVtdLEw9LTE7ZnVuY3Rpb24gTihlKXtyZXR1cm57Y3VycmVudDplfX1mdW5jdGlvbiBSKGUpezA+THx8KGUuY3VycmVudD1EW0xdLERbTF09bnVsbCxMLS0pfWZ1bmN0aW9uIE0oZSx0KXtEWysrTF09ZS5jdXJyZW50LGUuY3VycmVudD10fXZhciBaPU4obnVsbCksVT1OKG51bGwpLEY9TihudWxsKSxxPU4obnVsbCk7ZnVuY3Rpb24gSChlLHQpe3N3aXRjaChNKEYsdCksTShVLGUpLE0oWixudWxsKSx0Lm5vZGVUeXBlKXtjYXNlIDk6Y2FzZSAxMTplPShlPXQuZG9jdW1lbnRFbGVtZW50KSYmKGU9ZS5uYW1lc3BhY2VVUkkpP2NoKGUpOjA7YnJlYWs7ZGVmYXVsdDppZihlPXQudGFnTmFtZSx0PXQubmFtZXNwYWNlVVJJKWU9Y20odD1jaCh0KSxlKTtlbHNlIHN3aXRjaChlKXtjYXNlXCJzdmdcIjplPTE7YnJlYWs7Y2FzZVwibWF0aFwiOmU9MjticmVhaztkZWZhdWx0OmU9MH19UihaKSxNKFosZSl9ZnVuY3Rpb24gVigpe1IoWiksUihVKSxSKEYpfWZ1bmN0aW9uICQoZSl7bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmTShxLGUpO3ZhciB0PVouY3VycmVudCxuPWNtKHQsZS50eXBlKTt0IT09biYmKE0oVSxlKSxNKFosbikpfWZ1bmN0aW9uIFcoZSl7VS5jdXJyZW50PT09ZSYmKFIoWiksUihVKSkscS5jdXJyZW50PT09ZSYmKFIocSksYzkuX2N1cnJlbnRWYWx1ZT16KX1mdW5jdGlvbiBZKGUpe2lmKHZvaWQgMD09PXRMKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3ZhciB0PWUuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7dEw9dCYmdFsxXXx8XCJcIix0Tj0tMTxlLnN0YWNrLmluZGV4T2YoXCJcXG4gICAgYXRcIik/XCIgKDxhbm9ueW1vdXM+KVwiOi0xPGUuc3RhY2suaW5kZXhPZihcIkBcIik/XCJAdW5rbm93bjowOjBcIjpcIlwifXJldHVyblwiXFxuXCIrdEwrZSt0Tn12YXIgSz0hMTtmdW5jdGlvbiBYKGUsdCl7aWYoIWV8fEspcmV0dXJuXCJcIjtLPSEwO3ZhciBuPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7dmFyIHI9e0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdDpmdW5jdGlvbigpe3RyeXtpZih0KXt2YXIgbj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCl9O2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxcInByb3BzXCIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QobixbXSl9Y2F0Y2goZSl7dmFyIHI9ZX1SZWZsZWN0LmNvbnN0cnVjdChlLFtdLG4pfWVsc2V7dHJ5e24uY2FsbCgpfWNhdGNoKGUpe3I9ZX1lLmNhbGwobi5wcm90b3R5cGUpfX1lbHNle3RyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3I9ZX0obj1lKCkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmNhdGNoJiZuLmNhdGNoKGZ1bmN0aW9uKCl7fSl9fWNhdGNoKGUpe2lmKGUmJnImJlwic3RyaW5nXCI9PXR5cGVvZiBlLnN0YWNrKXJldHVybltlLnN0YWNrLHIuc3RhY2tdfXJldHVybltudWxsLG51bGxdfX07ci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWU9XCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFwibmFtZVwiKTtvJiZvLmNvbmZpZ3VyYWJsZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFwibmFtZVwiLHt2YWx1ZTpcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwifSk7dmFyIGE9ci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QoKSxpPWFbMF0sbD1hWzFdO2lmKGkmJmwpe3ZhciBzPWkuc3BsaXQoXCJcXG5cIiksYz1sLnNwbGl0KFwiXFxuXCIpO2ZvcihvPXI9MDtyPHMubGVuZ3RoJiYhc1tyXS5pbmNsdWRlcyhcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiKTspcisrO2Zvcig7bzxjLmxlbmd0aCYmIWNbb10uaW5jbHVkZXMoXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIik7KW8rKztpZihyPT09cy5sZW5ndGh8fG89PT1jLmxlbmd0aClmb3Iocj1zLmxlbmd0aC0xLG89Yy5sZW5ndGgtMTsxPD1yJiYwPD1vJiZzW3JdIT09Y1tvXTspby0tO2Zvcig7MTw9ciYmMDw9bztyLS0sby0tKWlmKHNbcl0hPT1jW29dKXtpZigxIT09cnx8MSE9PW8pZG8gaWYoci0tLG8tLSwwPm98fHNbcl0hPT1jW29dKXt2YXIgdT1cIlxcblwiK3Nbcl0ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO3JldHVybiBlLmRpc3BsYXlOYW1lJiZ1LmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJih1PXUucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsZS5kaXNwbGF5TmFtZSkpLHV9d2hpbGUoMTw9ciYmMDw9byk7YnJlYWt9fX1maW5hbGx5e0s9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9bn1yZXR1cm4obj1lP2UuZGlzcGxheU5hbWV8fGUubmFtZTpcIlwiKT9ZKG4pOlwiXCJ9ZnVuY3Rpb24gRyhlKXt0cnl7dmFyIHQ9XCJcIixuPW51bGw7ZG8gdCs9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6cmV0dXJuIFkoZS50eXBlKTtjYXNlIDE2OnJldHVybiBZKFwiTGF6eVwiKTtjYXNlIDEzOnJldHVybiBlLmNoaWxkIT09dCYmbnVsbCE9PXQ/WShcIlN1c3BlbnNlIEZhbGxiYWNrXCIpOlkoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBZKFwiU3VzcGVuc2VMaXN0XCIpO2Nhc2UgMDpjYXNlIDE1OnJldHVybiBYKGUudHlwZSwhMSk7Y2FzZSAxMTpyZXR1cm4gWChlLnR5cGUucmVuZGVyLCExKTtjYXNlIDE6cmV0dXJuIFgoZS50eXBlLCEwKTtjYXNlIDMxOnJldHVybiBZKFwiQWN0aXZpdHlcIik7ZGVmYXVsdDpyZXR1cm5cIlwifX0oZSxuKSxuPWUsZT1lLnJldHVybjt3aGlsZShlKTtyZXR1cm4gdH1jYXRjaChlKXtyZXR1cm5cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2UubWVzc2FnZStcIlxcblwiK2Uuc3RhY2t9fXZhciBRPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSj1vLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssZWU9by51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxldD1vLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGVuPW8udW5zdGFibGVfcmVxdWVzdFBhaW50LGVyPW8udW5zdGFibGVfbm93LGVvPW8udW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZWE9by51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxlaT1vLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGVsPW8udW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZXM9by51bnN0YWJsZV9Mb3dQcmlvcml0eSxlYz1vLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxldT1vLmxvZyxlZD1vLnVuc3RhYmxlX3NldERpc2FibGVZaWVsZFZhbHVlLGVmPW51bGwsZXA9bnVsbDtmdW5jdGlvbiBlaChlKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBldSYmZWQoZSksZXAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGVwLnNldFN0cmljdE1vZGUpdHJ5e2VwLnNldFN0cmljdE1vZGUoZWYsZSl9Y2F0Y2goZSl7fX12YXIgZW09TWF0aC5jbHozMj9NYXRoLmNsejMyOmZ1bmN0aW9uKGUpe3JldHVybiAwPT0oZT4+Pj0wKT8zMjozMS0oZWcoZSkvZXl8MCl8MH0sZWc9TWF0aC5sb2csZXk9TWF0aC5MTjIsZXY9MjU2LGViPTQxOTQzMDQ7ZnVuY3Rpb24gZUEoZSl7dmFyIHQ9NDImZTtpZigwIT09dClyZXR1cm4gdDtzd2l0Y2goZSYtZSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6cmV0dXJuIDY0O2Nhc2UgMTI4OnJldHVybiAxMjg7Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIDQxOTQwNDgmZTtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMHgxMDAwMDAwOmNhc2UgMHgyMDAwMDAwOnJldHVybiAweDNjMDAwMDAmZTtjYXNlIDB4NDAwMDAwMDpyZXR1cm4gMHg0MDAwMDAwO2Nhc2UgMHg4MDAwMDAwOnJldHVybiAweDgwMDAwMDA7Y2FzZSAweDEwMDAwMDAwOnJldHVybiAweDEwMDAwMDAwO2Nhc2UgMHgyMDAwMDAwMDpyZXR1cm4gMHgyMDAwMDAwMDtjYXNlIDB4NDAwMDAwMDA6cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4gZX19ZnVuY3Rpb24gZXgoZSx0LG4pe3ZhciByPWUucGVuZGluZ0xhbmVzO2lmKDA9PT1yKXJldHVybiAwO3ZhciBvPTAsYT1lLnN1c3BlbmRlZExhbmVzLGk9ZS5waW5nZWRMYW5lcztlPWUud2FybUxhbmVzO3ZhciBsPTB4N2ZmZmZmZiZyO3JldHVybiAwIT09bD8wIT0ocj1sJn5hKT9vPWVBKHIpOjAhPShpJj1sKT9vPWVBKGkpOm58fDAhPShuPWwmfmUpJiYobz1lQShuKSk6MCE9KGw9ciZ+YSk/bz1lQShsKTowIT09aT9vPWVBKGkpOm58fDAhPShuPXImfmUpJiYobz1lQShuKSksMD09PW8/MDowIT09dCYmdCE9PW8mJjA9PSh0JmEpJiYoKGE9byYtbyk+PShuPXQmLXQpfHwzMj09PWEmJjAhPSg0MTk0MDQ4Jm4pKT90Om99ZnVuY3Rpb24gZXcoZSx0KXtyZXR1cm4gMD09KGUucGVuZGluZ0xhbmVzJn4oZS5zdXNwZW5kZWRMYW5lcyZ+ZS5waW5nZWRMYW5lcykmdCl9ZnVuY3Rpb24gZUMoKXt2YXIgZT1ldjtyZXR1cm4gMD09KDQxOTQwNDgmKGV2PDw9MSkpJiYoZXY9MjU2KSxlfWZ1bmN0aW9uIGVfKCl7dmFyIGU9ZWI7cmV0dXJuIDA9PSgweDNjMDAwMDAmKGViPDw9MSkpJiYoZWI9NDE5NDMwNCksZX1mdW5jdGlvbiBlayhlKXtmb3IodmFyIHQ9W10sbj0wOzMxPm47bisrKXQucHVzaChlKTtyZXR1cm4gdH1mdW5jdGlvbiBlRShlLHQpe2UucGVuZGluZ0xhbmVzfD10LDB4MTAwMDAwMDAhPT10JiYoZS5zdXNwZW5kZWRMYW5lcz0wLGUucGluZ2VkTGFuZXM9MCxlLndhcm1MYW5lcz0wKX1mdW5jdGlvbiBlaihlLHQsbil7ZS5wZW5kaW5nTGFuZXN8PXQsZS5zdXNwZW5kZWRMYW5lcyY9fnQ7dmFyIHI9MzEtZW0odCk7ZS5lbnRhbmdsZWRMYW5lc3w9dCxlLmVudGFuZ2xlbWVudHNbcl09MHg0MDAwMDAwMHxlLmVudGFuZ2xlbWVudHNbcl18NDE5NDA5MCZufWZ1bmN0aW9uIGVTKGUsdCl7dmFyIG49ZS5lbnRhbmdsZWRMYW5lc3w9dDtmb3IoZT1lLmVudGFuZ2xlbWVudHM7bjspe3ZhciByPTMxLWVtKG4pLG89MTw8cjtvJnR8ZVtyXSZ0JiYoZVtyXXw9dCksbiY9fm99fWZ1bmN0aW9uIGVPKGUsdCl7dmFyIG49dCYtdDtyZXR1cm4gMCE9KChuPTAhPSg0MiZuKT8xOmVCKG4pKSYoZS5zdXNwZW5kZWRMYW5lc3x0KSk/MDpufWZ1bmN0aW9uIGVCKGUpe3N3aXRjaChlKXtjYXNlIDI6ZT0xO2JyZWFrO2Nhc2UgODplPTQ7YnJlYWs7Y2FzZSAzMjplPTE2O2JyZWFrO2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAweDEwMDAwMDA6Y2FzZSAweDIwMDAwMDA6ZT0xMjg7YnJlYWs7Y2FzZSAweDEwMDAwMDAwOmU9MHg4MDAwMDAwO2JyZWFrO2RlZmF1bHQ6ZT0wfXJldHVybiBlfWZ1bmN0aW9uIGVQKGUpe3JldHVybiAyPChlJj0tZSk/ODxlPzAhPSgweDdmZmZmZmYmZSk/MzI6MHgxMDAwMDAwMDo4OjJ9ZnVuY3Rpb24gZUkoKXt2YXIgZT1ULnA7cmV0dXJuIDAhPT1lP2U6dm9pZCAwPT09KGU9d2luZG93LmV2ZW50KT8zMjp1ZChlLnR5cGUpfWZ1bmN0aW9uIGVUKGUsdCl7dmFyIG49VC5wO3RyeXtyZXR1cm4gVC5wPWUsdCgpfWZpbmFsbHl7VC5wPW59fXZhciBlej1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxlRD1cIl9fcmVhY3RGaWJlciRcIitleixlTD1cIl9fcmVhY3RQcm9wcyRcIitleixlTj1cIl9fcmVhY3RDb250YWluZXIkXCIrZXosZVI9XCJfX3JlYWN0RXZlbnRzJFwiK2V6LGVNPVwiX19yZWFjdExpc3RlbmVycyRcIitleixlWj1cIl9fcmVhY3RIYW5kbGVzJFwiK2V6LGVVPVwiX19yZWFjdFJlc291cmNlcyRcIitleixlRj1cIl9fcmVhY3RNYXJrZXIkXCIrZXo7ZnVuY3Rpb24gZXEoZSl7ZGVsZXRlIGVbZURdLGRlbGV0ZSBlW2VMXSxkZWxldGUgZVtlUl0sZGVsZXRlIGVbZU1dLGRlbGV0ZSBlW2VaXX1mdW5jdGlvbiBlSChlKXt2YXIgdD1lW2VEXTtpZih0KXJldHVybiB0O2Zvcih2YXIgbj1lLnBhcmVudE5vZGU7bjspe2lmKHQ9bltlTl18fG5bZURdKXtpZihuPXQuYWx0ZXJuYXRlLG51bGwhPT10LmNoaWxkfHxudWxsIT09biYmbnVsbCE9PW4uY2hpbGQpZm9yKGU9Y1QoZSk7bnVsbCE9PWU7KXtpZihuPWVbZURdKXJldHVybiBuO2U9Y1QoZSl9cmV0dXJuIHR9bj0oZT1uKS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIGVWKGUpe2lmKGU9ZVtlRF18fGVbZU5dKXt2YXIgdD1lLnRhZztpZig1PT09dHx8Nj09PXR8fDEzPT09dHx8MzE9PT10fHwyNj09PXR8fDI3PT09dHx8Mz09PXQpcmV0dXJuIGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZSQoZSl7dmFyIHQ9ZS50YWc7aWYoNT09PXR8fDI2PT09dHx8Mjc9PT10fHw2PT09dClyZXR1cm4gZS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IobCgzMykpfWZ1bmN0aW9uIGVXKGUpe3ZhciB0PWVbZVVdO3JldHVybiB0fHwodD1lW2VVXT17aG9pc3RhYmxlU3R5bGVzOm5ldyBNYXAsaG9pc3RhYmxlU2NyaXB0czpuZXcgTWFwfSksdH1mdW5jdGlvbiBlWShlKXtlW2VGXT0hMH12YXIgZUs9bmV3IFNldCxlWD17fTtmdW5jdGlvbiBlRyhlLHQpe2VRKGUsdCksZVEoZStcIkNhcHR1cmVcIix0KX1mdW5jdGlvbiBlUShlLHQpe2ZvcihlWFtlXT10LGU9MDtlPHQubGVuZ3RoO2UrKyllSy5hZGQodFtlXSl9dmFyIGVKPVJlZ0V4cChcIl5bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRF1bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFxcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQwXSokXCIpLGUwPXt9LGUxPXt9O2Z1bmN0aW9uIGUyKGUsdCxuKXtpZihRLmNhbGwoZTEsdCl8fCFRLmNhbGwoZTAsdCkmJihlSi50ZXN0KHQpP2UxW3RdPSEwOihlMFt0XT0hMCwhMSkpKWlmKG51bGw9PT1uKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7c3dpdGNoKHR5cGVvZiBuKXtjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJmdW5jdGlvblwiOmNhc2VcInN5bWJvbFwiOmUucmVtb3ZlQXR0cmlidXRlKHQpO3JldHVybjtjYXNlXCJib29sZWFuXCI6dmFyIHI9dC50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7aWYoXCJkYXRhLVwiIT09ciYmXCJhcmlhLVwiIT09cilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSh0KX1lLnNldEF0dHJpYnV0ZSh0LFwiXCIrbil9fWZ1bmN0aW9uIGU0KGUsdCxuKXtpZihudWxsPT09billLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle3N3aXRjaCh0eXBlb2Ygbil7Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJzeW1ib2xcIjpjYXNlXCJib29sZWFuXCI6ZS5yZW1vdmVBdHRyaWJ1dGUodCk7cmV0dXJufWUuc2V0QXR0cmlidXRlKHQsXCJcIituKX19ZnVuY3Rpb24gZTUoZSx0LG4scil7aWYobnVsbD09PXIpZS5yZW1vdmVBdHRyaWJ1dGUobik7ZWxzZXtzd2l0Y2godHlwZW9mIHIpe2Nhc2VcInVuZGVmaW5lZFwiOmNhc2VcImZ1bmN0aW9uXCI6Y2FzZVwic3ltYm9sXCI6Y2FzZVwiYm9vbGVhblwiOmUucmVtb3ZlQXR0cmlidXRlKG4pO3JldHVybn1lLnNldEF0dHJpYnV0ZU5TKHQsbixcIlwiK3IpfX1mdW5jdGlvbiBlMyhlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2VcImJpZ2ludFwiOmNhc2VcImJvb2xlYW5cIjpjYXNlXCJudW1iZXJcIjpjYXNlXCJzdHJpbmdcIjpjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJvYmplY3RcIjpyZXR1cm4gZTtkZWZhdWx0OnJldHVyblwiXCJ9fWZ1bmN0aW9uIGU2KGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09ZS50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09dHx8XCJyYWRpb1wiPT09dCl9ZnVuY3Rpb24gZTkoZSl7aWYoIWUuX3ZhbHVlVHJhY2tlcil7dmFyIHQ9ZTYoZSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiO2UuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx0KTtpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSYmdm9pZCAwIT09ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5nZXQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIuc2V0KXt2YXIgbz1yLmdldCxhPXIuc2V0O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUpe249XCJcIitlLGEuY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ci5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldFZhbHVlOmZ1bmN0aW9uKGUpe249XCJcIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVt0XX19fX0oZSx0LFwiXCIrZVt0XSl9fWZ1bmN0aW9uIGU4KGUpe2lmKCFlKXJldHVybiExO3ZhciB0PWUuX3ZhbHVlVHJhY2tlcjtpZighdClyZXR1cm4hMDt2YXIgbj10LmdldFZhbHVlKCkscj1cIlwiO3JldHVybiBlJiYocj1lNihlKT9lLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmUudmFsdWUpLChlPXIpIT09biYmKHQuc2V0VmFsdWUoZSksITApfWZ1bmN0aW9uIGU3KGUpe2lmKHZvaWQgMD09PShlPWV8fChcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaCh0KXtyZXR1cm4gZS5ib2R5fX12YXIgdGU9L1tcXG5cIlxcXFxdL2c7ZnVuY3Rpb24gdHQoZSl7cmV0dXJuIGUucmVwbGFjZSh0ZSxmdW5jdGlvbihlKXtyZXR1cm5cIlxcXFxcIitlLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpK1wiIFwifSl9ZnVuY3Rpb24gdG4oZSx0LG4scixvLGEsaSxsKXtlLm5hbWU9XCJcIixudWxsIT1pJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpJiZcInN5bWJvbFwiIT10eXBlb2YgaSYmXCJib29sZWFuXCIhPXR5cGVvZiBpP2UudHlwZT1pOmUucmVtb3ZlQXR0cmlidXRlKFwidHlwZVwiKSxudWxsIT10P1wibnVtYmVyXCI9PT1pPygwPT09dCYmXCJcIj09PWUudmFsdWV8fGUudmFsdWUhPXQpJiYoZS52YWx1ZT1cIlwiK2UzKHQpKTplLnZhbHVlIT09XCJcIitlMyh0KSYmKGUudmFsdWU9XCJcIitlMyh0KSk6XCJzdWJtaXRcIiE9PWkmJlwicmVzZXRcIiE9PWl8fGUucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIiksbnVsbCE9dD90byhlLGksZTModCkpOm51bGwhPW4/dG8oZSxpLGUzKG4pKTpudWxsIT1yJiZlLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpLG51bGw9PW8mJm51bGwhPWEmJihlLmRlZmF1bHRDaGVja2VkPSEhYSksbnVsbCE9byYmKGUuY2hlY2tlZD1vJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBvJiZcInN5bWJvbFwiIT10eXBlb2YgbyksbnVsbCE9bCYmXCJmdW5jdGlvblwiIT10eXBlb2YgbCYmXCJzeW1ib2xcIiE9dHlwZW9mIGwmJlwiYm9vbGVhblwiIT10eXBlb2YgbD9lLm5hbWU9XCJcIitlMyhsKTplLnJlbW92ZUF0dHJpYnV0ZShcIm5hbWVcIil9ZnVuY3Rpb24gdHIoZSx0LG4scixvLGEsaSxsKXtpZihudWxsIT1hJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhJiZcInN5bWJvbFwiIT10eXBlb2YgYSYmXCJib29sZWFuXCIhPXR5cGVvZiBhJiYoZS50eXBlPWEpLG51bGwhPXR8fG51bGwhPW4pe2lmKChcInN1Ym1pdFwiPT09YXx8XCJyZXNldFwiPT09YSkmJm51bGw9PXQpcmV0dXJuIHZvaWQgZTkoZSk7bj1udWxsIT1uP1wiXCIrZTMobik6XCJcIix0PW51bGwhPXQ/XCJcIitlMyh0KTpuLGx8fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fXI9XCJmdW5jdGlvblwiIT10eXBlb2Yocj1udWxsIT1yP3I6bykmJlwic3ltYm9sXCIhPXR5cGVvZiByJiYhIXIsZS5jaGVja2VkPWw/ZS5jaGVja2VkOiEhcixlLmRlZmF1bHRDaGVja2VkPSEhcixudWxsIT1pJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpJiZcInN5bWJvbFwiIT10eXBlb2YgaSYmXCJib29sZWFuXCIhPXR5cGVvZiBpJiYoZS5uYW1lPWkpLGU5KGUpfWZ1bmN0aW9uIHRvKGUsdCxuKXtcIm51bWJlclwiPT09dCYmZTcoZS5vd25lckRvY3VtZW50KT09PWV8fGUuZGVmYXVsdFZhbHVlPT09XCJcIitufHwoZS5kZWZhdWx0VmFsdWU9XCJcIituKX1mdW5jdGlvbiB0YShlLHQsbixyKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXRbXCIkXCIrbltvXV09ITA7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylvPXQuaGFzT3duUHJvcGVydHkoXCIkXCIrZVtuXS52YWx1ZSksZVtuXS5zZWxlY3RlZCE9PW8mJihlW25dLnNlbGVjdGVkPW8pLG8mJnImJihlW25dLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtmb3Iobz0wLG49XCJcIitlMyhuKSx0PW51bGw7bzxlLmxlbmd0aDtvKyspe2lmKGVbb10udmFsdWU9PT1uKXtlW29dLnNlbGVjdGVkPSEwLHImJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT10fHxlW29dLmRpc2FibGVkfHwodD1lW29dKX1udWxsIT09dCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiB0aShlLHQsbil7aWYobnVsbCE9dCYmKCh0PVwiXCIrZTModCkpIT09ZS52YWx1ZSYmKGUudmFsdWU9dCksbnVsbD09bikpe2UuZGVmYXVsdFZhbHVlIT09dCYmKGUuZGVmYXVsdFZhbHVlPXQpO3JldHVybn1lLmRlZmF1bHRWYWx1ZT1udWxsIT1uP1wiXCIrZTMobik6XCJcIn1mdW5jdGlvbiB0bChlLHQsbixyKXtpZihudWxsPT10KXtpZihudWxsIT1yKXtpZihudWxsIT1uKXRocm93IEVycm9yKGwoOTIpKTtpZihQKHIpKXtpZigxPHIubGVuZ3RoKXRocm93IEVycm9yKGwoOTMpKTtyPXJbMF19bj1yfW51bGw9PW4mJihuPVwiXCIpLHQ9bn1lLmRlZmF1bHRWYWx1ZT1uPWUzKHQpLChyPWUudGV4dENvbnRlbnQpPT09biYmXCJcIiE9PXImJm51bGwhPT1yJiYoZS52YWx1ZT1yKSxlOShlKX1mdW5jdGlvbiB0cyhlLHQpe2lmKHQpe3ZhciBuPWUuZmlyc3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXtuLm5vZGVWYWx1ZT10O3JldHVybn19ZS50ZXh0Q29udGVudD10fXZhciB0Yz1uZXcgU2V0KFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgYXNwZWN0UmF0aW8gYm9yZGVySW1hZ2VPdXRzZXQgYm9yZGVySW1hZ2VTbGljZSBib3JkZXJJbWFnZVdpZHRoIGJveEZsZXggYm94RmxleEdyb3VwIGJveE9yZGluYWxHcm91cCBjb2x1bW5Db3VudCBjb2x1bW5zIGZsZXggZmxleEdyb3cgZmxleFBvc2l0aXZlIGZsZXhTaHJpbmsgZmxleE5lZ2F0aXZlIGZsZXhPcmRlciBncmlkQXJlYSBncmlkUm93IGdyaWRSb3dFbmQgZ3JpZFJvd1NwYW4gZ3JpZFJvd1N0YXJ0IGdyaWRDb2x1bW4gZ3JpZENvbHVtbkVuZCBncmlkQ29sdW1uU3BhbiBncmlkQ29sdW1uU3RhcnQgZm9udFdlaWdodCBsaW5lQ2xhbXAgbGluZUhlaWdodCBvcGFjaXR5IG9yZGVyIG9ycGhhbnMgc2NhbGUgdGFiU2l6ZSB3aWRvd3MgekluZGV4IHpvb20gZmlsbE9wYWNpdHkgZmxvb2RPcGFjaXR5IHN0b3BPcGFjaXR5IHN0cm9rZURhc2hhcnJheSBzdHJva2VEYXNob2Zmc2V0IHN0cm9rZU1pdGVybGltaXQgc3Ryb2tlT3BhY2l0eSBzdHJva2VXaWR0aCBNb3pBbmltYXRpb25JdGVyYXRpb25Db3VudCBNb3pCb3hGbGV4IE1vekJveEZsZXhHcm91cCBNb3pMaW5lQ2xhbXAgbXNBbmltYXRpb25JdGVyYXRpb25Db3VudCBtc0ZsZXggbXNab29tIG1zRmxleEdyb3cgbXNGbGV4TmVnYXRpdmUgbXNGbGV4T3JkZXIgbXNGbGV4UG9zaXRpdmUgbXNGbGV4U2hyaW5rIG1zR3JpZENvbHVtbiBtc0dyaWRDb2x1bW5TcGFuIG1zR3JpZFJvdyBtc0dyaWRSb3dTcGFuIFdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IFdlYmtpdEJveEZsZXggV2ViS2l0Qm94RmxleEdyb3VwIFdlYmtpdEJveE9yZGluYWxHcm91cCBXZWJraXRDb2x1bW5Db3VudCBXZWJraXRDb2x1bW5zIFdlYmtpdEZsZXggV2Via2l0RmxleEdyb3cgV2Via2l0RmxleFBvc2l0aXZlIFdlYmtpdEZsZXhTaHJpbmsgV2Via2l0TGluZUNsYW1wXCIuc3BsaXQoXCIgXCIpKTtmdW5jdGlvbiB0dShlLHQsbil7dmFyIHI9MD09PXQuaW5kZXhPZihcIi0tXCIpO251bGw9PW58fFwiYm9vbGVhblwiPT10eXBlb2Ygbnx8XCJcIj09PW4/cj9lLnNldFByb3BlcnR5KHQsXCJcIik6XCJmbG9hdFwiPT09dD9lLmNzc0Zsb2F0PVwiXCI6ZVt0XT1cIlwiOnI/ZS5zZXRQcm9wZXJ0eSh0LG4pOlwibnVtYmVyXCIhPXR5cGVvZiBufHwwPT09bnx8dGMuaGFzKHQpP1wiZmxvYXRcIj09PXQ/ZS5jc3NGbG9hdD1uOmVbdF09KFwiXCIrbikudHJpbSgpOmVbdF09bitcInB4XCJ9ZnVuY3Rpb24gdGQoZSx0LG4pe2lmKG51bGwhPXQmJlwib2JqZWN0XCIhPXR5cGVvZiB0KXRocm93IEVycm9yKGwoNjIpKTtpZihlPWUuc3R5bGUsbnVsbCE9bil7Zm9yKHZhciByIGluIG4pIW4uaGFzT3duUHJvcGVydHkocil8fG51bGwhPXQmJnQuaGFzT3duUHJvcGVydHkocil8fCgwPT09ci5pbmRleE9mKFwiLS1cIik/ZS5zZXRQcm9wZXJ0eShyLFwiXCIpOlwiZmxvYXRcIj09PXI/ZS5jc3NGbG9hdD1cIlwiOmVbcl09XCJcIik7Zm9yKHZhciBvIGluIHQpcj10W29dLHQuaGFzT3duUHJvcGVydHkobykmJm5bb10hPT1yJiZ0dShlLG8scil9ZWxzZSBmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiZ0dShlLGEsdFthXSl9ZnVuY3Rpb24gdGYoZSl7aWYoLTE9PT1lLmluZGV4T2YoXCItXCIpKXJldHVybiExO3N3aXRjaChlKXtjYXNlXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2VcImNvbG9yLXByb2ZpbGVcIjpjYXNlXCJmb250LWZhY2VcIjpjYXNlXCJmb250LWZhY2Utc3JjXCI6Y2FzZVwiZm9udC1mYWNlLXVyaVwiOmNhc2VcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlXCJmb250LWZhY2UtbmFtZVwiOmNhc2VcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgdHA9bmV3IE1hcChbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXSxbXCJjcm9zc09yaWdpblwiLFwiY3Jvc3NvcmlnaW5cIl0sW1wiYWNjZW50SGVpZ2h0XCIsXCJhY2NlbnQtaGVpZ2h0XCJdLFtcImFsaWdubWVudEJhc2VsaW5lXCIsXCJhbGlnbm1lbnQtYmFzZWxpbmVcIl0sW1wiYXJhYmljRm9ybVwiLFwiYXJhYmljLWZvcm1cIl0sW1wiYmFzZWxpbmVTaGlmdFwiLFwiYmFzZWxpbmUtc2hpZnRcIl0sW1wiY2FwSGVpZ2h0XCIsXCJjYXAtaGVpZ2h0XCJdLFtcImNsaXBQYXRoXCIsXCJjbGlwLXBhdGhcIl0sW1wiY2xpcFJ1bGVcIixcImNsaXAtcnVsZVwiXSxbXCJjb2xvckludGVycG9sYXRpb25cIixcImNvbG9yLWludGVycG9sYXRpb25cIl0sW1wiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc1wiLFwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzXCJdLFtcImNvbG9yUHJvZmlsZVwiLFwiY29sb3ItcHJvZmlsZVwiXSxbXCJjb2xvclJlbmRlcmluZ1wiLFwiY29sb3ItcmVuZGVyaW5nXCJdLFtcImRvbWluYW50QmFzZWxpbmVcIixcImRvbWluYW50LWJhc2VsaW5lXCJdLFtcImVuYWJsZUJhY2tncm91bmRcIixcImVuYWJsZS1iYWNrZ3JvdW5kXCJdLFtcImZpbGxPcGFjaXR5XCIsXCJmaWxsLW9wYWNpdHlcIl0sW1wiZmlsbFJ1bGVcIixcImZpbGwtcnVsZVwiXSxbXCJmbG9vZENvbG9yXCIsXCJmbG9vZC1jb2xvclwiXSxbXCJmbG9vZE9wYWNpdHlcIixcImZsb29kLW9wYWNpdHlcIl0sW1wiZm9udEZhbWlseVwiLFwiZm9udC1mYW1pbHlcIl0sW1wiZm9udFNpemVcIixcImZvbnQtc2l6ZVwiXSxbXCJmb250U2l6ZUFkanVzdFwiLFwiZm9udC1zaXplLWFkanVzdFwiXSxbXCJmb250U3RyZXRjaFwiLFwiZm9udC1zdHJldGNoXCJdLFtcImZvbnRTdHlsZVwiLFwiZm9udC1zdHlsZVwiXSxbXCJmb250VmFyaWFudFwiLFwiZm9udC12YXJpYW50XCJdLFtcImZvbnRXZWlnaHRcIixcImZvbnQtd2VpZ2h0XCJdLFtcImdseXBoTmFtZVwiLFwiZ2x5cGgtbmFtZVwiXSxbXCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbFwiLFwiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbFwiXSxbXCJnbHlwaE9yaWVudGF0aW9uVmVydGljYWxcIixcImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsXCJdLFtcImhvcml6QWR2WFwiLFwiaG9yaXotYWR2LXhcIl0sW1wiaG9yaXpPcmlnaW5YXCIsXCJob3Jpei1vcmlnaW4teFwiXSxbXCJpbWFnZVJlbmRlcmluZ1wiLFwiaW1hZ2UtcmVuZGVyaW5nXCJdLFtcImxldHRlclNwYWNpbmdcIixcImxldHRlci1zcGFjaW5nXCJdLFtcImxpZ2h0aW5nQ29sb3JcIixcImxpZ2h0aW5nLWNvbG9yXCJdLFtcIm1hcmtlckVuZFwiLFwibWFya2VyLWVuZFwiXSxbXCJtYXJrZXJNaWRcIixcIm1hcmtlci1taWRcIl0sW1wibWFya2VyU3RhcnRcIixcIm1hcmtlci1zdGFydFwiXSxbXCJvdmVybGluZVBvc2l0aW9uXCIsXCJvdmVybGluZS1wb3NpdGlvblwiXSxbXCJvdmVybGluZVRoaWNrbmVzc1wiLFwib3ZlcmxpbmUtdGhpY2tuZXNzXCJdLFtcInBhaW50T3JkZXJcIixcInBhaW50LW9yZGVyXCJdLFtcInBhbm9zZS0xXCIsXCJwYW5vc2UtMVwiXSxbXCJwb2ludGVyRXZlbnRzXCIsXCJwb2ludGVyLWV2ZW50c1wiXSxbXCJyZW5kZXJpbmdJbnRlbnRcIixcInJlbmRlcmluZy1pbnRlbnRcIl0sW1wic2hhcGVSZW5kZXJpbmdcIixcInNoYXBlLXJlbmRlcmluZ1wiXSxbXCJzdG9wQ29sb3JcIixcInN0b3AtY29sb3JcIl0sW1wic3RvcE9wYWNpdHlcIixcInN0b3Atb3BhY2l0eVwiXSxbXCJzdHJpa2V0aHJvdWdoUG9zaXRpb25cIixcInN0cmlrZXRocm91Z2gtcG9zaXRpb25cIl0sW1wic3RyaWtldGhyb3VnaFRoaWNrbmVzc1wiLFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIl0sW1wic3Ryb2tlRGFzaGFycmF5XCIsXCJzdHJva2UtZGFzaGFycmF5XCJdLFtcInN0cm9rZURhc2hvZmZzZXRcIixcInN0cm9rZS1kYXNob2Zmc2V0XCJdLFtcInN0cm9rZUxpbmVjYXBcIixcInN0cm9rZS1saW5lY2FwXCJdLFtcInN0cm9rZUxpbmVqb2luXCIsXCJzdHJva2UtbGluZWpvaW5cIl0sW1wic3Ryb2tlTWl0ZXJsaW1pdFwiLFwic3Ryb2tlLW1pdGVybGltaXRcIl0sW1wic3Ryb2tlT3BhY2l0eVwiLFwic3Ryb2tlLW9wYWNpdHlcIl0sW1wic3Ryb2tlV2lkdGhcIixcInN0cm9rZS13aWR0aFwiXSxbXCJ0ZXh0QW5jaG9yXCIsXCJ0ZXh0LWFuY2hvclwiXSxbXCJ0ZXh0RGVjb3JhdGlvblwiLFwidGV4dC1kZWNvcmF0aW9uXCJdLFtcInRleHRSZW5kZXJpbmdcIixcInRleHQtcmVuZGVyaW5nXCJdLFtcInRyYW5zZm9ybU9yaWdpblwiLFwidHJhbnNmb3JtLW9yaWdpblwiXSxbXCJ1bmRlcmxpbmVQb3NpdGlvblwiLFwidW5kZXJsaW5lLXBvc2l0aW9uXCJdLFtcInVuZGVybGluZVRoaWNrbmVzc1wiLFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiXSxbXCJ1bmljb2RlQmlkaVwiLFwidW5pY29kZS1iaWRpXCJdLFtcInVuaWNvZGVSYW5nZVwiLFwidW5pY29kZS1yYW5nZVwiXSxbXCJ1bml0c1BlckVtXCIsXCJ1bml0cy1wZXItZW1cIl0sW1widkFscGhhYmV0aWNcIixcInYtYWxwaGFiZXRpY1wiXSxbXCJ2SGFuZ2luZ1wiLFwidi1oYW5naW5nXCJdLFtcInZJZGVvZ3JhcGhpY1wiLFwidi1pZGVvZ3JhcGhpY1wiXSxbXCJ2TWF0aGVtYXRpY2FsXCIsXCJ2LW1hdGhlbWF0aWNhbFwiXSxbXCJ2ZWN0b3JFZmZlY3RcIixcInZlY3Rvci1lZmZlY3RcIl0sW1widmVydEFkdllcIixcInZlcnQtYWR2LXlcIl0sW1widmVydE9yaWdpblhcIixcInZlcnQtb3JpZ2luLXhcIl0sW1widmVydE9yaWdpbllcIixcInZlcnQtb3JpZ2luLXlcIl0sW1wid29yZFNwYWNpbmdcIixcIndvcmQtc3BhY2luZ1wiXSxbXCJ3cml0aW5nTW9kZVwiLFwid3JpdGluZy1tb2RlXCJdLFtcInhtbG5zWGxpbmtcIixcInhtbG5zOnhsaW5rXCJdLFtcInhIZWlnaHRcIixcIngtaGVpZ2h0XCJdXSksdGg9L15bXFx1MDAwMC1cXHUwMDFGIF0qaltcXHJcXG5cXHRdKmFbXFxyXFxuXFx0XSp2W1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnNbXFxyXFxuXFx0XSpjW1xcclxcblxcdF0qcltcXHJcXG5cXHRdKmlbXFxyXFxuXFx0XSpwW1xcclxcblxcdF0qdFtcXHJcXG5cXHRdKjovaTtmdW5jdGlvbiB0bShlKXtyZXR1cm4gdGgudGVzdChcIlwiK2UpP1wiamF2YXNjcmlwdDp0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0IGhhcyBibG9ja2VkIGEgamF2YXNjcmlwdDogVVJMIGFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbi4nKVwiOmV9ZnVuY3Rpb24gdGcoKXt9dmFyIHR5PW51bGw7ZnVuY3Rpb24gdHYoZSl7cmV0dXJuKGU9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93KS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGU9ZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmV9dmFyIHRiPW51bGwsdEE9bnVsbDtmdW5jdGlvbiB0eChlKXt2YXIgdD1lVihlKTtpZih0JiYoZT10LnN0YXRlTm9kZSkpe3ZhciBuPWVbZUxdfHxudWxsO3N3aXRjaChlPXQuc3RhdGVOb2RlLHQudHlwZSl7Y2FzZVwiaW5wdXRcIjppZih0bihlLG4udmFsdWUsbi5kZWZhdWx0VmFsdWUsbi5kZWZhdWx0VmFsdWUsbi5jaGVja2VkLG4uZGVmYXVsdENoZWNrZWQsbi50eXBlLG4ubmFtZSksdD1uLm5hbWUsXCJyYWRpb1wiPT09bi50eXBlJiZudWxsIT10KXtmb3Iobj1lO24ucGFyZW50Tm9kZTspbj1uLnBhcmVudE5vZGU7Zm9yKG49bi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPVwiJyt0dChcIlwiK3QpKydcIl1bdHlwZT1cInJhZGlvXCJdJyksdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3RdO2lmKHIhPT1lJiZyLmZvcm09PT1lLmZvcm0pe3ZhciBvPXJbZUxdfHxudWxsO2lmKCFvKXRocm93IEVycm9yKGwoOTApKTt0bihyLG8udmFsdWUsby5kZWZhdWx0VmFsdWUsby5kZWZhdWx0VmFsdWUsby5jaGVja2VkLG8uZGVmYXVsdENoZWNrZWQsby50eXBlLG8ubmFtZSl9fWZvcih0PTA7dDxuLmxlbmd0aDt0KyspKHI9blt0XSkuZm9ybT09PWUuZm9ybSYmZTgocil9YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjp0aShlLG4udmFsdWUsbi5kZWZhdWx0VmFsdWUpO2JyZWFrO2Nhc2VcInNlbGVjdFwiOm51bGwhPSh0PW4udmFsdWUpJiZ0YShlLCEhbi5tdWx0aXBsZSx0LCExKX19fXZhciB0dz0hMTtmdW5jdGlvbiB0QyhlLHQsbil7aWYodHcpcmV0dXJuIGUodCxuKTt0dz0hMDt0cnl7cmV0dXJuIGUodCl9ZmluYWxseXtpZih0dz0hMSwobnVsbCE9PXRifHxudWxsIT09dEEpJiYoc2MoKSx0YiYmKHQ9dGIsZT10QSx0QT10Yj1udWxsLHR4KHQpLGUpKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKXR4KGVbdF0pfX1mdW5jdGlvbiB0XyhlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKG51bGw9PT1uKXJldHVybiBudWxsO3ZhciByPW5bZUxdfHxudWxsO2lmKG51bGw9PT1yKXJldHVybiBudWxsO3N3aXRjaChuPXJbdF0sdCl7Y2FzZVwib25DbGlja1wiOmNhc2VcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZVwib25Eb3VibGVDbGlja1wiOmNhc2VcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZVwib25Nb3VzZURvd25cIjpjYXNlXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlXCJvbk1vdXNlTW92ZVwiOmNhc2VcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VVcFwiOmNhc2VcIm9uTW91c2VVcENhcHR1cmVcIjpjYXNlXCJvbk1vdXNlRW50ZXJcIjoocj0hci5kaXNhYmxlZCl8fChyPVwiYnV0dG9uXCIhPT0oZT1lLnR5cGUpJiZcImlucHV0XCIhPT1lJiZcInNlbGVjdFwiIT09ZSYmXCJ0ZXh0YXJlYVwiIT09ZSksZT0hcjticmVhaztkZWZhdWx0OmU9ITF9aWYoZSlyZXR1cm4gbnVsbDtpZihuJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXRocm93IEVycm9yKGwoMjMxLHQsdHlwZW9mIG4pKTtyZXR1cm4gbn12YXIgdGs9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCx0RT0hMTtpZih0ayl0cnl7dmFyIHRqPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aixcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7dEU9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsdGosdGopLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidGVzdFwiLHRqLHRqKX1jYXRjaChlKXt0RT0hMX12YXIgdFM9bnVsbCx0Tz1udWxsLHRCPW51bGw7ZnVuY3Rpb24gdFAoKXtpZih0QilyZXR1cm4gdEI7dmFyIGUsdCxuPXRPLHI9bi5sZW5ndGgsbz1cInZhbHVlXCJpbiB0Uz90Uy52YWx1ZTp0Uy50ZXh0Q29udGVudCxhPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBpPXItZTtmb3IodD0xO3Q8PWkmJm5bci10XT09PW9bYS10XTt0KyspO3JldHVybiB0Qj1vLnNsaWNlKGUsMTx0PzEtdDp2b2lkIDApfWZ1bmN0aW9uIHRJKGUpe3ZhciB0PWUua2V5Q29kZTtyZXR1cm5cImNoYXJDb2RlXCJpbiBlPzA9PT0oZT1lLmNoYXJDb2RlKSYmMTM9PT10JiYoZT0xMyk6ZT10LDEwPT09ZSYmKGU9MTMpLDMyPD1lfHwxMz09PWU/ZTowfWZ1bmN0aW9uIHRUKCl7cmV0dXJuITB9ZnVuY3Rpb24gdHooKXtyZXR1cm4hMX1mdW5jdGlvbiB0RChlKXtmdW5jdGlvbiB0KHQsbixyLG8sYSl7Zm9yKHZhciBpIGluIHRoaXMuX3JlYWN0TmFtZT10LHRoaXMuX3RhcmdldEluc3Q9cix0aGlzLnR5cGU9bix0aGlzLm5hdGl2ZUV2ZW50PW8sdGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbCxlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0PWVbaV0sdGhpc1tpXT10P3Qobyk6b1tpXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1vLmRlZmF1bHRQcmV2ZW50ZWQ/by5kZWZhdWx0UHJldmVudGVkOiExPT09by5yZXR1cm5WYWx1ZSk/dFQ6dHosdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10eix0aGlzfXJldHVybiBmKHQucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD10VCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRUKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnRUfSksdH12YXIgdEwsdE4sdFIsdE0sdFosdFU9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdEY9dEQodFUpLHRxPWYoe30sdFUse3ZpZXc6MCxkZXRhaWw6MH0pLHRIPXREKHRxKSx0Vj1mKHt9LHRxLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnQyLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lLnJlbGF0ZWRUYXJnZXQ/ZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50OmUucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGUpe3JldHVyblwibW92ZW1lbnRYXCJpbiBlP2UubW92ZW1lbnRYOihlIT09dFomJih0WiYmXCJtb3VzZW1vdmVcIj09PWUudHlwZT8odFI9ZS5zY3JlZW5YLXRaLnNjcmVlblgsdE09ZS5zY3JlZW5ZLXRaLnNjcmVlblkpOnRNPXRSPTAsdFo9ZSksdFIpfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuXCJtb3ZlbWVudFlcImluIGU/ZS5tb3ZlbWVudFk6dE19fSksdCQ9dEQodFYpLHRXPXREKGYoe30sdFYse2RhdGFUcmFuc2ZlcjowfSkpLHRZPXREKGYoe30sdHEse3JlbGF0ZWRUYXJnZXQ6MH0pKSx0Sz10RChmKHt9LHRVLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSksdFg9dEQoZih7fSx0VSx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihlKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pKSx0Rz10RChmKHt9LHRVLHtkYXRhOjB9KSksdFE9e0VzYzpcIkVzY2FwZVwiLFNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LHRKPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLDExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sdDA9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIHQxKGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT10MFtlXSkmJiEhdFtlXX1mdW5jdGlvbiB0Migpe3JldHVybiB0MX12YXIgdDQ9dEQoZih7fSx0cSx7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD10UVtlLmtleV18fGUua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT10KXJldHVybiB0fXJldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT8xMz09PShlPXRJKGUpKT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShlKTpcImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP3RKW2Uua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6dDIsY2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlP3RJKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlP3RJKGUpOlwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9fSkpLHQ1PXREKGYoe30sdFYse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSkpLHQzPXREKGYoe30sdHEse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp0Mn0pKSx0Nj10RChmKHt9LHRVLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pKSx0OT10RChmKHt9LHRWLHtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuXCJkZWx0YVhcImluIGU/ZS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuXCJkZWx0YVlcImluIGU/ZS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gZT8tZS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pKSx0OD10RChmKHt9LHRVLHtuZXdTdGF0ZTowLG9sZFN0YXRlOjB9KSksdDc9WzksMTMsMjcsMzJdLG5lPXRrJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxudD1udWxsO3RrJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihudD1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBubj10ayYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIW50LG5yPXRrJiYoIW5lfHxudCYmODxudCYmMTE+PW50KSxubz0hMTtmdW5jdGlvbiBuYShlLHQpe3N3aXRjaChlKXtjYXNlXCJrZXl1cFwiOnJldHVybiAtMSE9PXQ3LmluZGV4T2YodC5rZXlDb2RlKTtjYXNlXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PXQua2V5Q29kZTtjYXNlXCJrZXlwcmVzc1wiOmNhc2VcIm1vdXNlZG93blwiOmNhc2VcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gbmkoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mKGU9ZS5kZXRhaWwpJiZcImRhdGFcImluIGU/ZS5kYXRhOm51bGx9dmFyIG5sPSExLG5zPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG5jKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT10PyEhbnNbZS50eXBlXTpcInRleHRhcmVhXCI9PT10fWZ1bmN0aW9uIG51KGUsdCxuLHIpe3RiP3RBP3RBLnB1c2gocik6dEE9W3JdOnRiPXIsMDwodD1jdCh0LFwib25DaGFuZ2VcIikpLmxlbmd0aCYmKG49bmV3IHRGKFwib25DaGFuZ2VcIixcImNoYW5nZVwiLG51bGwsbixyKSxlLnB1c2goe2V2ZW50Om4sbGlzdGVuZXJzOnR9KSl9dmFyIG5kPW51bGwsbmY9bnVsbDtmdW5jdGlvbiBucChlKXtzNChlLDApfWZ1bmN0aW9uIG5oKGUpe2lmKGU4KGUkKGUpKSlyZXR1cm4gZX1mdW5jdGlvbiBubShlLHQpe2lmKFwiY2hhbmdlXCI9PT1lKXJldHVybiB0fXZhciBuZz0hMTtpZih0ayl7aWYodGspe3ZhciBueT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCFueSl7dmFyIG52PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bnYuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKSxueT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBudi5vbmlucHV0fXI9bnl9ZWxzZSByPSExO25nPXImJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gbmIoKXtuZCYmKG5kLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLG5BKSxuZj1uZD1udWxsKX1mdW5jdGlvbiBuQShlKXtpZihcInZhbHVlXCI9PT1lLnByb3BlcnR5TmFtZSYmbmgobmYpKXt2YXIgdD1bXTtudSh0LG5mLGUsdHYoZSkpLHRDKG5wLHQpfX1mdW5jdGlvbiBueChlLHQsbil7XCJmb2N1c2luXCI9PT1lPyhuYigpLG5kPXQsbmY9bixuZC5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixuQSkpOlwiZm9jdXNvdXRcIj09PWUmJm5iKCl9ZnVuY3Rpb24gbncoZSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWV8fFwia2V5dXBcIj09PWV8fFwia2V5ZG93blwiPT09ZSlyZXR1cm4gbmgobmYpfWZ1bmN0aW9uIG5DKGUsdCl7aWYoXCJjbGlja1wiPT09ZSlyZXR1cm4gbmgodCl9ZnVuY3Rpb24gbl8oZSx0KXtpZihcImlucHV0XCI9PT1lfHxcImNoYW5nZVwiPT09ZSlyZXR1cm4gbmgodCl9dmFyIG5rPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJigwIT09ZXx8MS9lPT0xL3QpfHxlIT1lJiZ0IT10fTtmdW5jdGlvbiBuRShlLHQpe2lmKG5rKGUsdCkpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV8fG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoIVEuY2FsbCh0LG8pfHwhbmsoZVtvXSx0W29dKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBuaihlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gblMoZSx0KXt2YXIgbixyPW5qKGUpO2ZvcihlPTA7cjspe2lmKDM9PT1yLm5vZGVUeXBlKXtpZihuPWUrci50ZXh0Q29udGVudC5sZW5ndGgsZTw9dCYmbj49dClyZXR1cm57bm9kZTpyLG9mZnNldDp0LWV9O2U9bn1lOntmb3IoO3I7KXtpZihyLm5leHRTaWJsaW5nKXtyPXIubmV4dFNpYmxpbmc7YnJlYWsgZX1yPXIucGFyZW50Tm9kZX1yPXZvaWQgMH1yPW5qKHIpfX1mdW5jdGlvbiBuTyhlKXtlPW51bGwhPWUmJm51bGwhPWUub3duZXJEb2N1bWVudCYmbnVsbCE9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P2Uub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp3aW5kb3c7Zm9yKHZhciB0PWU3KGUuZG9jdW1lbnQpO3QgaW5zdGFuY2VvZiBlLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBuPVwic3RyaW5nXCI9PXR5cGVvZiB0LmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChlKXtuPSExfWlmKG4pZT10LmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhazt0PWU3KGUuZG9jdW1lbnQpfXJldHVybiB0fWZ1bmN0aW9uIG5CKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKFwiaW5wdXRcIj09PXQmJihcInRleHRcIj09PWUudHlwZXx8XCJzZWFyY2hcIj09PWUudHlwZXx8XCJ0ZWxcIj09PWUudHlwZXx8XCJ1cmxcIj09PWUudHlwZXx8XCJwYXNzd29yZFwiPT09ZS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09dHx8XCJ0cnVlXCI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9dmFyIG5QPXRrJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsbkk9bnVsbCxuVD1udWxsLG56PW51bGwsbkQ9ITE7ZnVuY3Rpb24gbkwoZSx0LG4pe3ZhciByPW4ud2luZG93PT09bj9uLmRvY3VtZW50Ojk9PT1uLm5vZGVUeXBlP246bi5vd25lckRvY3VtZW50O25EfHxudWxsPT1uSXx8bkkhPT1lNyhyKXx8KHI9XCJzZWxlY3Rpb25TdGFydFwiaW4ocj1uSSkmJm5CKHIpP3tzdGFydDpyLnNlbGVjdGlvblN0YXJ0LGVuZDpyLnNlbGVjdGlvbkVuZH06e2FuY2hvck5vZGU6KHI9KHIub3duZXJEb2N1bWVudCYmci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpKS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpyLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ci5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ci5mb2N1c09mZnNldH0sbnomJm5FKG56LHIpfHwobno9ciwwPChyPWN0KG5ULFwib25TZWxlY3RcIikpLmxlbmd0aCYmKHQ9bmV3IHRGKFwib25TZWxlY3RcIixcInNlbGVjdFwiLG51bGwsdCxuKSxlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOnJ9KSx0LnRhcmdldD1uSSkpKX1mdW5jdGlvbiBuTihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bXCJXZWJraXRcIitlXT1cIndlYmtpdFwiK3QsbltcIk1velwiK2VdPVwibW96XCIrdCxufXZhciBuUj17YW5pbWF0aW9uZW5kOm5OKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOm5OKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6bk4oXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25ydW46bk4oXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uUnVuXCIpLHRyYW5zaXRpb25zdGFydDpuTihcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25TdGFydFwiKSx0cmFuc2l0aW9uY2FuY2VsOm5OKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkNhbmNlbFwiKSx0cmFuc2l0aW9uZW5kOm5OKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sbk09e30sblo9e307ZnVuY3Rpb24gblUoZSl7aWYobk1bZV0pcmV0dXJuIG5NW2VdO2lmKCFuUltlXSlyZXR1cm4gZTt2YXIgdCxuPW5SW2VdO2Zvcih0IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBuWilyZXR1cm4gbk1bZV09blt0XTtyZXR1cm4gZX10ayYmKG5aPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIG5SLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIG5SLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIG5SLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIG5SLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7dmFyIG5GPW5VKFwiYW5pbWF0aW9uZW5kXCIpLG5xPW5VKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLG5IPW5VKFwiYW5pbWF0aW9uc3RhcnRcIiksblY9blUoXCJ0cmFuc2l0aW9ucnVuXCIpLG4kPW5VKFwidHJhbnNpdGlvbnN0YXJ0XCIpLG5XPW5VKFwidHJhbnNpdGlvbmNhbmNlbFwiKSxuWT1uVShcInRyYW5zaXRpb25lbmRcIiksbks9bmV3IE1hcCxuWD1cImFib3J0IGF1eENsaWNrIGJlZm9yZVRvZ2dsZSBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbFwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiBuRyhlLHQpe25LLnNldChlLHQpLGVHKHQsW2VdKX1uWC5wdXNoKFwic2Nyb2xsRW5kXCIpO3ZhciBuUT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudCl7dmFyIHQ9bmV3IHdpbmRvdy5FcnJvckV2ZW50KFwiZXJyb3JcIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLG1lc3NhZ2U6XCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZcInN0cmluZ1wiPT10eXBlb2YgZS5tZXNzYWdlP1N0cmluZyhlLm1lc3NhZ2UpOlN0cmluZyhlKSxlcnJvcjplfSk7aWYoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KHQpKXJldHVybn1lbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBwcm9jZXNzJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwcm9jZXNzLmVtaXQpcmV0dXJuIHZvaWQgcHJvY2Vzcy5lbWl0KFwidW5jYXVnaHRFeGNlcHRpb25cIixlKTtjb25zb2xlLmVycm9yKGUpfSxuSj1bXSxuMD0wLG4xPTA7ZnVuY3Rpb24gbjIoKXtmb3IodmFyIGU9bjAsdD1uMT1uMD0wO3Q8ZTspe3ZhciBuPW5KW3RdO25KW3QrK109bnVsbDt2YXIgcj1uSlt0XTtuSlt0KytdPW51bGw7dmFyIG89bkpbdF07bkpbdCsrXT1udWxsO3ZhciBhPW5KW3RdO2lmKG5KW3QrK109bnVsbCxudWxsIT09ciYmbnVsbCE9PW8pe3ZhciBpPXIucGVuZGluZztudWxsPT09aT9vLm5leHQ9bzooby5uZXh0PWkubmV4dCxpLm5leHQ9byksci5wZW5kaW5nPW99MCE9PWEmJm42KG4sbyxhKX19ZnVuY3Rpb24gbjQoZSx0LG4scil7bkpbbjArK109ZSxuSltuMCsrXT10LG5KW24wKytdPW4sbkpbbjArK109cixuMXw9cixlLmxhbmVzfD1yLG51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJihlLmxhbmVzfD1yKX1mdW5jdGlvbiBuNShlLHQsbixyKXtyZXR1cm4gbjQoZSx0LG4sciksbjkoZSl9ZnVuY3Rpb24gbjMoZSx0KXtyZXR1cm4gbjQoZSxudWxsLG51bGwsdCksbjkoZSl9ZnVuY3Rpb24gbjYoZSx0LG4pe2UubGFuZXN8PW47dmFyIHI9ZS5hbHRlcm5hdGU7bnVsbCE9PXImJihyLmxhbmVzfD1uKTtmb3IodmFyIG89ITEsYT1lLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1uLG51bGwhPT0ocj1hLmFsdGVybmF0ZSkmJihyLmNoaWxkTGFuZXN8PW4pLDIyPT09YS50YWcmJihudWxsPT09KGU9YS5zdGF0ZU5vZGUpfHwxJmUuX3Zpc2liaWxpdHl8fChvPSEwKSksZT1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1lLnRhZz8oYT1lLnN0YXRlTm9kZSxvJiZudWxsIT09dCYmKG89MzEtZW0obiksbnVsbD09PShyPShlPWEuaGlkZGVuVXBkYXRlcylbb10pP2Vbb109W3RdOnIucHVzaCh0KSx0LmxhbmU9MHgyMDAwMDAwMHxuKSxhKTpudWxsfWZ1bmN0aW9uIG45KGUpe2lmKDUwPHN0KXRocm93IHN0PTAsc249bnVsbCxFcnJvcihsKDE4NSkpO2Zvcih2YXIgdD1lLnJldHVybjtudWxsIT09dDspdD0oZT10KS5yZXR1cm47cmV0dXJuIDM9PT1lLnRhZz9lLnN0YXRlTm9kZTpudWxsfXZhciBuOD17fTtmdW5jdGlvbiBuNyhlLHQsbixyKXt0aGlzLnRhZz1lLHRoaXMua2V5PW4sdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWZDbGVhbnVwPXRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9dCx0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbCx0aGlzLm1vZGU9cix0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTAsdGhpcy5kZWxldGlvbnM9bnVsbCx0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gcmUoZSx0LG4scil7cmV0dXJuIG5ldyBuNyhlLHQsbixyKX1mdW5jdGlvbiBydChlKXtyZXR1cm4hKCEoZT1lLnByb3RvdHlwZSl8fCFlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIHJuKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIG51bGw9PT1uPygobj1yZShlLnRhZyx0LGUua2V5LGUubW9kZSkpLmVsZW1lbnRUeXBlPWUuZWxlbWVudFR5cGUsbi50eXBlPWUudHlwZSxuLnN0YXRlTm9kZT1lLnN0YXRlTm9kZSxuLmFsdGVybmF0ZT1lLGUuYWx0ZXJuYXRlPW4pOihuLnBlbmRpbmdQcm9wcz10LG4udHlwZT1lLnR5cGUsbi5mbGFncz0wLG4uc3VidHJlZUZsYWdzPTAsbi5kZWxldGlvbnM9bnVsbCksbi5mbGFncz0weDNlMDAwMDAmZS5mbGFncyxuLmNoaWxkTGFuZXM9ZS5jaGlsZExhbmVzLG4ubGFuZXM9ZS5sYW5lcyxuLmNoaWxkPWUuY2hpbGQsbi5tZW1vaXplZFByb3BzPWUubWVtb2l6ZWRQcm9wcyxuLm1lbW9pemVkU3RhdGU9ZS5tZW1vaXplZFN0YXRlLG4udXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0PWUuZGVwZW5kZW5jaWVzLG4uZGVwZW5kZW5jaWVzPW51bGw9PT10P251bGw6e2xhbmVzOnQubGFuZXMsZmlyc3RDb250ZXh0OnQuZmlyc3RDb250ZXh0fSxuLnNpYmxpbmc9ZS5zaWJsaW5nLG4uaW5kZXg9ZS5pbmRleCxuLnJlZj1lLnJlZixuLnJlZkNsZWFudXA9ZS5yZWZDbGVhbnVwLG59ZnVuY3Rpb24gcnIoZSx0KXtlLmZsYWdzJj0weDNlMDAwMDI7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIG51bGw9PT1uPyhlLmNoaWxkTGFuZXM9MCxlLmxhbmVzPXQsZS5jaGlsZD1udWxsLGUuc3VidHJlZUZsYWdzPTAsZS5tZW1vaXplZFByb3BzPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS51cGRhdGVRdWV1ZT1udWxsLGUuZGVwZW5kZW5jaWVzPW51bGwsZS5zdGF0ZU5vZGU9bnVsbCk6KGUuY2hpbGRMYW5lcz1uLmNoaWxkTGFuZXMsZS5sYW5lcz1uLmxhbmVzLGUuY2hpbGQ9bi5jaGlsZCxlLnN1YnRyZWVGbGFncz0wLGUuZGVsZXRpb25zPW51bGwsZS5tZW1vaXplZFByb3BzPW4ubWVtb2l6ZWRQcm9wcyxlLm1lbW9pemVkU3RhdGU9bi5tZW1vaXplZFN0YXRlLGUudXBkYXRlUXVldWU9bi51cGRhdGVRdWV1ZSxlLnR5cGU9bi50eXBlLGUuZGVwZW5kZW5jaWVzPW51bGw9PT0odD1uLmRlcGVuZGVuY2llcyk/bnVsbDp7bGFuZXM6dC5sYW5lcyxmaXJzdENvbnRleHQ6dC5maXJzdENvbnRleHR9KSxlfWZ1bmN0aW9uIHJvKGUsdCxuLHIsbyxhKXt2YXIgaT0wO2lmKHI9ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJ0KGUpJiYoaT0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWk9IWZ1bmN0aW9uKGUsdCxuKXtpZigxPT09bnx8bnVsbCE9dC5pdGVtUHJvcClyZXR1cm4hMTtzd2l0Y2goZSl7Y2FzZVwibWV0YVwiOmNhc2VcInRpdGxlXCI6cmV0dXJuITA7Y2FzZVwic3R5bGVcIjppZihcInN0cmluZ1wiIT10eXBlb2YgdC5wcmVjZWRlbmNlfHxcInN0cmluZ1wiIT10eXBlb2YgdC5ocmVmfHxcIlwiPT09dC5ocmVmKWJyZWFrO3JldHVybiEwO2Nhc2VcImxpbmtcIjppZihcInN0cmluZ1wiIT10eXBlb2YgdC5yZWx8fFwic3RyaW5nXCIhPXR5cGVvZiB0LmhyZWZ8fFwiXCI9PT10LmhyZWZ8fHQub25Mb2FkfHx0Lm9uRXJyb3IpYnJlYWs7aWYoXCJzdHlsZXNoZWV0XCI9PT10LnJlbClyZXR1cm4gZT10LmRpc2FibGVkLFwic3RyaW5nXCI9PXR5cGVvZiB0LnByZWNlZGVuY2UmJm51bGw9PWU7cmV0dXJuITA7Y2FzZVwic2NyaXB0XCI6aWYodC5hc3luYyYmXCJmdW5jdGlvblwiIT10eXBlb2YgdC5hc3luYyYmXCJzeW1ib2xcIiE9dHlwZW9mIHQuYXN5bmMmJiF0Lm9uTG9hZCYmIXQub25FcnJvciYmdC5zcmMmJlwic3RyaW5nXCI9PXR5cGVvZiB0LnNyYylyZXR1cm4hMH1yZXR1cm4hMX0oZSxuLFouY3VycmVudCk/XCJodG1sXCI9PT1lfHxcImhlYWRcIj09PWV8fFwiYm9keVwiPT09ZT8yNzo1OjI2O2Vsc2UgZTpzd2l0Y2goZSl7Y2FzZSBFOnJldHVybihlPXJlKDMxLG4sdCxvKSkuZWxlbWVudFR5cGU9RSxlLmxhbmVzPWEsZTtjYXNlIGc6cmV0dXJuIHJhKG4uY2hpbGRyZW4sbyxhLHQpO2Nhc2UgeTppPTgsb3w9MjQ7YnJlYWs7Y2FzZSB2OnJldHVybihlPXJlKDEyLG4sdCwyfG8pKS5lbGVtZW50VHlwZT12LGUubGFuZXM9YSxlO2Nhc2UgdzpyZXR1cm4oZT1yZSgxMyxuLHQsbykpLmVsZW1lbnRUeXBlPXcsZS5sYW5lcz1hLGU7Y2FzZSBDOnJldHVybihlPXJlKDE5LG4sdCxvKSkuZWxlbWVudFR5cGU9QyxlLmxhbmVzPWEsZTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSlzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBBOmk9MTA7YnJlYWsgZTtjYXNlIGI6aT05O2JyZWFrIGU7Y2FzZSB4Omk9MTE7YnJlYWsgZTtjYXNlIF86aT0xNDticmVhayBlO2Nhc2UgazppPTE2LHI9bnVsbDticmVhayBlfWk9Mjksbj1FcnJvcihsKDEzMCxudWxsPT09ZT9cIm51bGxcIjp0eXBlb2YgZSxcIlwiKSkscj1udWxsfXJldHVybih0PXJlKGksbix0LG8pKS5lbGVtZW50VHlwZT1lLHQudHlwZT1yLHQubGFuZXM9YSx0fWZ1bmN0aW9uIHJhKGUsdCxuLHIpe3JldHVybihlPXJlKDcsZSxyLHQpKS5sYW5lcz1uLGV9ZnVuY3Rpb24gcmkoZSx0LG4pe3JldHVybihlPXJlKDYsZSxudWxsLHQpKS5sYW5lcz1uLGV9ZnVuY3Rpb24gcmwoZSl7dmFyIHQ9cmUoMTgsbnVsbCxudWxsLDApO3JldHVybiB0LnN0YXRlTm9kZT1lLHR9ZnVuY3Rpb24gcnMoZSx0LG4pe3JldHVybih0PXJlKDQsbnVsbCE9PWUuY2hpbGRyZW4/ZS5jaGlsZHJlbjpbXSxlLmtleSx0KSkubGFuZXM9bix0LnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzplLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246ZS5pbXBsZW1lbnRhdGlvbn0sdH12YXIgcmM9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcnUoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUpe3ZhciBuPXJjLmdldChlKTtyZXR1cm4gdm9pZCAwIT09bj9uOih0PXt2YWx1ZTplLHNvdXJjZTp0LHN0YWNrOkcodCl9LHJjLnNldChlLHQpLHQpfXJldHVybnt2YWx1ZTplLHNvdXJjZTp0LHN0YWNrOkcodCl9fXZhciByZD1bXSxyZj0wLHJwPW51bGwscmg9MCxybT1bXSxyZz0wLHJ5PW51bGwscnY9MSxyYj1cIlwiO2Z1bmN0aW9uIHJBKGUsdCl7cmRbcmYrK109cmgscmRbcmYrK109cnAscnA9ZSxyaD10fWZ1bmN0aW9uIHJ4KGUsdCxuKXtybVtyZysrXT1ydixybVtyZysrXT1yYixybVtyZysrXT1yeSxyeT1lO3ZhciByPXJ2O2U9cmI7dmFyIG89MzItZW0ociktMTtyJj1+KDE8PG8pLG4rPTE7dmFyIGE9MzItZW0odCkrbztpZigzMDxhKXt2YXIgaT1vLW8lNTthPShyJigxPDxpKS0xKS50b1N0cmluZygzMikscj4+PWksby09aSxydj0xPDwzMi1lbSh0KStvfG48PG98cixyYj1hK2V9ZWxzZSBydj0xPDxhfG48PG98cixyYj1lfWZ1bmN0aW9uIHJ3KGUpe251bGwhPT1lLnJldHVybiYmKHJBKGUsMSkscngoZSwxLDApKX1mdW5jdGlvbiByQyhlKXtmb3IoO2U9PT1ycDspcnA9cmRbLS1yZl0scmRbcmZdPW51bGwscmg9cmRbLS1yZl0scmRbcmZdPW51bGw7Zm9yKDtlPT09cnk7KXJ5PXJtWy0tcmddLHJtW3JnXT1udWxsLHJiPXJtWy0tcmddLHJtW3JnXT1udWxsLHJ2PXJtWy0tcmddLHJtW3JnXT1udWxsfWZ1bmN0aW9uIHJfKGUsdCl7cm1bcmcrK109cnYscm1bcmcrK109cmIscm1bcmcrK109cnkscnY9dC5pZCxyYj10Lm92ZXJmbG93LHJ5PWV9dmFyIHJrPW51bGwsckU9bnVsbCxyaj0hMSxyUz1udWxsLHJPPSExLHJCPUVycm9yKGwoNTE5KSk7ZnVuY3Rpb24gclAoZSl7dmFyIHQ9RXJyb3IobCg0MTgsMTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXT9cInRleHRcIjpcIkhUTUxcIixcIlwiKSk7dGhyb3cgck4ocnUodCxlKSksckJ9ZnVuY3Rpb24gckkoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGUsbj1lLnR5cGUscj1lLm1lbW9pemVkUHJvcHM7c3dpdGNoKHRbZURdPWUsdFtlTF09cixuKXtjYXNlXCJkaWFsb2dcIjpzNShcImNhbmNlbFwiLHQpLHM1KFwiY2xvc2VcIix0KTticmVhaztjYXNlXCJpZnJhbWVcIjpjYXNlXCJvYmplY3RcIjpjYXNlXCJlbWJlZFwiOnM1KFwibG9hZFwiLHQpO2JyZWFrO2Nhc2VcInZpZGVvXCI6Y2FzZVwiYXVkaW9cIjpmb3Iobj0wO248czEubGVuZ3RoO24rKylzNShzMVtuXSx0KTticmVhaztjYXNlXCJzb3VyY2VcIjpzNShcImVycm9yXCIsdCk7YnJlYWs7Y2FzZVwiaW1nXCI6Y2FzZVwiaW1hZ2VcIjpjYXNlXCJsaW5rXCI6czUoXCJlcnJvclwiLHQpLHM1KFwibG9hZFwiLHQpO2JyZWFrO2Nhc2VcImRldGFpbHNcIjpzNShcInRvZ2dsZVwiLHQpO2JyZWFrO2Nhc2VcImlucHV0XCI6czUoXCJpbnZhbGlkXCIsdCksdHIodCxyLnZhbHVlLHIuZGVmYXVsdFZhbHVlLHIuY2hlY2tlZCxyLmRlZmF1bHRDaGVja2VkLHIudHlwZSxyLm5hbWUsITApO2JyZWFrO2Nhc2VcInNlbGVjdFwiOnM1KFwiaW52YWxpZFwiLHQpO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6czUoXCJpbnZhbGlkXCIsdCksdGwodCxyLnZhbHVlLHIuZGVmYXVsdFZhbHVlLHIuY2hpbGRyZW4pfVwic3RyaW5nXCIhPXR5cGVvZihuPXIuY2hpbGRyZW4pJiZcIm51bWJlclwiIT10eXBlb2YgbiYmXCJiaWdpbnRcIiE9dHlwZW9mIG58fHQudGV4dENvbnRlbnQ9PT1cIlwiK258fCEwPT09ci5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8fGNsKHQudGV4dENvbnRlbnQsbik/KG51bGwhPXIucG9wb3ZlciYmKHM1KFwiYmVmb3JldG9nZ2xlXCIsdCksczUoXCJ0b2dnbGVcIix0KSksbnVsbCE9ci5vblNjcm9sbCYmczUoXCJzY3JvbGxcIix0KSxudWxsIT1yLm9uU2Nyb2xsRW5kJiZzNShcInNjcm9sbGVuZFwiLHQpLG51bGwhPXIub25DbGljayYmKHQub25jbGljaz10ZyksdD0hMCk6dD0hMSx0fHxyUChlLCEwKX1mdW5jdGlvbiByVChlKXtmb3Iocms9ZS5yZXR1cm47cms7KXN3aXRjaChyay50YWcpe2Nhc2UgNTpjYXNlIDMxOmNhc2UgMTM6ck89ITE7cmV0dXJuO2Nhc2UgMjc6Y2FzZSAzOnJPPSEwO3JldHVybjtkZWZhdWx0OnJrPXJrLnJldHVybn19ZnVuY3Rpb24gcnooZSl7aWYoZSE9PXJrKXJldHVybiExO2lmKCFyailyZXR1cm4gclQoZSkscmo9ITAsITE7dmFyIHQsbj1lLnRhZztpZigodD0zIT09biYmMjchPT1uKSYmKCh0PTU9PT1uKSYmKHQ9XCJmb3JtXCI9PT0odD1lLnR5cGUpfHxcImJ1dHRvblwiPT09dHx8Y2coZS50eXBlLGUubWVtb2l6ZWRQcm9wcykpLHQ9IXQpLHQmJnJFJiZyUChlKSxyVChlKSwxMz09PW4pe2lmKCEoZT1udWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKT9lLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IobCgzMTcpKTtyRT1jSShlKX1lbHNlIGlmKDMxPT09bil7aWYoIShlPW51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpP2UuZGVoeWRyYXRlZDpudWxsKSl0aHJvdyBFcnJvcihsKDMxNykpO3JFPWNJKGUpfWVsc2UgMjc9PT1uPyhuPXJFLGNDKGUudHlwZSk/KGU9Y1AsY1A9bnVsbCxyRT1lKTpyRT1uKTpyRT1yaz9jQihlLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiByRCgpe3JFPXJrPW51bGwscmo9ITF9ZnVuY3Rpb24gckwoKXt2YXIgZT1yUztyZXR1cm4gbnVsbCE9PWUmJihudWxsPT09bFE/bFE9ZTpsUS5wdXNoLmFwcGx5KGxRLGUpLHJTPW51bGwpLGV9ZnVuY3Rpb24gck4oZSl7bnVsbD09PXJTP3JTPVtlXTpyUy5wdXNoKGUpfXZhciByUj1OKG51bGwpLHJNPW51bGwsclo9bnVsbDtmdW5jdGlvbiByVShlLHQsbil7TShyUix0Ll9jdXJyZW50VmFsdWUpLHQuX2N1cnJlbnRWYWx1ZT1ufWZ1bmN0aW9uIHJGKGUpe2UuX2N1cnJlbnRWYWx1ZT1yUi5jdXJyZW50LFIoclIpfWZ1bmN0aW9uIHJxKGUsdCxuKXtmb3IoO251bGwhPT1lOyl7dmFyIHI9ZS5hbHRlcm5hdGU7aWYoKGUuY2hpbGRMYW5lcyZ0KSE9PXQ/KGUuY2hpbGRMYW5lc3w9dCxudWxsIT09ciYmKHIuY2hpbGRMYW5lc3w9dCkpOm51bGwhPT1yJiYoci5jaGlsZExhbmVzJnQpIT09dCYmKHIuY2hpbGRMYW5lc3w9dCksZT09PW4pYnJlYWs7ZT1lLnJldHVybn19ZnVuY3Rpb24gckgoZSx0LG4scil7dmFyIG89ZS5jaGlsZDtmb3IobnVsbCE9PW8mJihvLnJldHVybj1lKTtudWxsIT09bzspe3ZhciBhPW8uZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1hKXt2YXIgaT1vLmNoaWxkO2E9YS5maXJzdENvbnRleHQ7ZTpmb3IoO251bGwhPT1hOyl7dmFyIHM9YTthPW87Zm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKyspaWYocy5jb250ZXh0PT09dFtjXSl7YS5sYW5lc3w9bixudWxsIT09KHM9YS5hbHRlcm5hdGUpJiYocy5sYW5lc3w9bikscnEoYS5yZXR1cm4sbixlKSxyfHwoaT1udWxsKTticmVhayBlfWE9cy5uZXh0fX1lbHNlIGlmKDE4PT09by50YWcpe2lmKG51bGw9PT0oaT1vLnJldHVybikpdGhyb3cgRXJyb3IobCgzNDEpKTtpLmxhbmVzfD1uLG51bGwhPT0oYT1pLmFsdGVybmF0ZSkmJihhLmxhbmVzfD1uKSxycShpLG4sZSksaT1udWxsfWVsc2UgaT1vLmNoaWxkO2lmKG51bGwhPT1pKWkucmV0dXJuPW87ZWxzZSBmb3IoaT1vO251bGwhPT1pOyl7aWYoaT09PWUpe2k9bnVsbDticmVha31pZihudWxsIT09KG89aS5zaWJsaW5nKSl7by5yZXR1cm49aS5yZXR1cm4saT1vO2JyZWFrfWk9aS5yZXR1cm59bz1pfX1mdW5jdGlvbiByVihlLHQsbixyKXtlPW51bGw7Zm9yKHZhciBvPXQsYT0hMTtudWxsIT09bzspe2lmKCFhKXtpZigwIT0oNTI0Mjg4Jm8uZmxhZ3MpKWE9ITA7ZWxzZSBpZigwIT0oMjYyMTQ0Jm8uZmxhZ3MpKWJyZWFrfWlmKDEwPT09by50YWcpe3ZhciBpPW8uYWx0ZXJuYXRlO2lmKG51bGw9PT1pKXRocm93IEVycm9yKGwoMzg3KSk7aWYobnVsbCE9PShpPWkubWVtb2l6ZWRQcm9wcykpe3ZhciBzPW8udHlwZTtuayhvLnBlbmRpbmdQcm9wcy52YWx1ZSxpLnZhbHVlKXx8KG51bGwhPT1lP2UucHVzaChzKTplPVtzXSl9fWVsc2UgaWYobz09PXEuY3VycmVudCl7aWYobnVsbD09PShpPW8uYWx0ZXJuYXRlKSl0aHJvdyBFcnJvcihsKDM4NykpO2kubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlIT09by5tZW1vaXplZFN0YXRlLm1lbW9pemVkU3RhdGUmJihudWxsIT09ZT9lLnB1c2goYzkpOmU9W2M5XSl9bz1vLnJldHVybn1udWxsIT09ZSYmckgodCxlLG4sciksdC5mbGFnc3w9MjYyMTQ0fWZ1bmN0aW9uIHIkKGUpe2ZvcihlPWUuZmlyc3RDb250ZXh0O251bGwhPT1lOyl7aWYoIW5rKGUuY29udGV4dC5fY3VycmVudFZhbHVlLGUubWVtb2l6ZWRWYWx1ZSkpcmV0dXJuITA7ZT1lLm5leHR9cmV0dXJuITF9ZnVuY3Rpb24gclcoZSl7ck09ZSxyWj1udWxsLG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJihlLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiByWShlKXtyZXR1cm4gclgock0sZSl9ZnVuY3Rpb24gcksoZSx0KXtyZXR1cm4gbnVsbD09PXJNJiZyVyhlKSxyWChlLHQpfWZ1bmN0aW9uIHJYKGUsdCl7dmFyIG49dC5fY3VycmVudFZhbHVlO2lmKHQ9e2NvbnRleHQ6dCxtZW1vaXplZFZhbHVlOm4sbmV4dDpudWxsfSxudWxsPT09clope2lmKG51bGw9PT1lKXRocm93IEVycm9yKGwoMzA4KSk7clo9dCxlLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6dH0sZS5mbGFnc3w9NTI0Mjg4fWVsc2Ugclo9cloubmV4dD10O3JldHVybiBufXZhciByRz1cInVuZGVmaW5lZFwiIT10eXBlb2YgQWJvcnRDb250cm9sbGVyP0Fib3J0Q29udHJvbGxlcjpmdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zaWduYWw9e2Fib3J0ZWQ6ITEsYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LG4pe2UucHVzaChuKX19O3RoaXMuYWJvcnQ9ZnVuY3Rpb24oKXt0LmFib3J0ZWQ9ITAsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KX19LHJRPW8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxySj1vLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LHIwPXskJHR5cGVvZjpBLENvbnN1bWVyOm51bGwsUHJvdmlkZXI6bnVsbCxfY3VycmVudFZhbHVlOm51bGwsX2N1cnJlbnRWYWx1ZTI6bnVsbCxfdGhyZWFkQ291bnQ6MH07ZnVuY3Rpb24gcjEoKXtyZXR1cm57Y29udHJvbGxlcjpuZXcgckcsZGF0YTpuZXcgTWFwLHJlZkNvdW50OjB9fWZ1bmN0aW9uIHIyKGUpe2UucmVmQ291bnQtLSwwPT09ZS5yZWZDb3VudCYmclEockosZnVuY3Rpb24oKXtlLmNvbnRyb2xsZXIuYWJvcnQoKX0pfXZhciByND1udWxsLHI1PTAscjM9MCxyNj1udWxsO2Z1bmN0aW9uIHI5KCl7aWYoMD09LS1yNSYmbnVsbCE9PXI0KXtudWxsIT09cjYmJihyNi5zdGF0dXM9XCJmdWxmaWxsZWRcIik7dmFyIGU9cjQ7cjQ9bnVsbCxyMz0wLHI2PW51bGw7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspKDAsZVt0XSkoKX19dmFyIHI4PUkuUztJLlM9ZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbiYmZnVuY3Rpb24oZSx0KXtpZihudWxsPT09cjQpe3ZhciBuPXI0PVtdO3I1PTAscjM9c1goKSxyNj17c3RhdHVzOlwicGVuZGluZ1wiLHZhbHVlOnZvaWQgMCx0aGVuOmZ1bmN0aW9uKGUpe24ucHVzaChlKX19fXI1KyssdC50aGVuKHI5LHI5KX0oMCx0KSxudWxsIT09cjgmJnI4KGUsdCl9O3ZhciByNz1OKG51bGwpO2Z1bmN0aW9uIG9lKCl7dmFyIGU9cjcuY3VycmVudDtyZXR1cm4gbnVsbCE9PWU/ZTpsTC5wb29sZWRDYWNoZX1mdW5jdGlvbiBvdChlLHQpe251bGw9PT10P00ocjcscjcuY3VycmVudCk6TShyNyx0LnBvb2wpfWZ1bmN0aW9uIG9uKCl7dmFyIGU9b2UoKTtyZXR1cm4gbnVsbD09PWU/bnVsbDp7cGFyZW50OnIwLl9jdXJyZW50VmFsdWUscG9vbDplfX12YXIgb3I9RXJyb3IobCg0NjApKSxvbz1FcnJvcihsKDQ3NCkpLG9hPUVycm9yKGwoNTQyKSksb2k9e3RoZW46ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBvbChlKXtyZXR1cm5cImZ1bGZpbGxlZFwiPT09KGU9ZS5zdGF0dXMpfHxcInJlamVjdGVkXCI9PT1lfWZ1bmN0aW9uIG9zKGUsdCxuKXtzd2l0Y2godm9pZCAwPT09KG49ZVtuXSk/ZS5wdXNoKHQpOm4hPT10JiYodC50aGVuKHRnLHRnKSx0PW4pLHQuc3RhdHVzKXtjYXNlXCJmdWxmaWxsZWRcIjpyZXR1cm4gdC52YWx1ZTtjYXNlXCJyZWplY3RlZFwiOnRocm93IG9mKGU9dC5yZWFzb24pLGU7ZGVmYXVsdDppZihcInN0cmluZ1wiPT10eXBlb2YgdC5zdGF0dXMpdC50aGVuKHRnLHRnKTtlbHNle2lmKG51bGwhPT0oZT1sTCkmJjEwMDxlLnNoZWxsU3VzcGVuZENvdW50ZXIpdGhyb3cgRXJyb3IobCg0ODIpKTsoZT10KS5zdGF0dXM9XCJwZW5kaW5nXCIsZS50aGVuKGZ1bmN0aW9uKGUpe2lmKFwicGVuZGluZ1wiPT09dC5zdGF0dXMpe3ZhciBuPXQ7bi5zdGF0dXM9XCJmdWxmaWxsZWRcIixuLnZhbHVlPWV9fSxmdW5jdGlvbihlKXtpZihcInBlbmRpbmdcIj09PXQuc3RhdHVzKXt2YXIgbj10O24uc3RhdHVzPVwicmVqZWN0ZWRcIixuLnJlYXNvbj1lfX0pfXN3aXRjaCh0LnN0YXR1cyl7Y2FzZVwiZnVsZmlsbGVkXCI6cmV0dXJuIHQudmFsdWU7Y2FzZVwicmVqZWN0ZWRcIjp0aHJvdyBvZihlPXQucmVhc29uKSxlfXRocm93IG91PXQsb3J9fWZ1bmN0aW9uIG9jKGUpe3RyeXtyZXR1cm4oMCxlLl9pbml0KShlLl9wYXlsb2FkKX1jYXRjaChlKXtpZihudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUudGhlbil0aHJvdyBvdT1lLG9yO3Rocm93IGV9fXZhciBvdT1udWxsO2Z1bmN0aW9uIG9kKCl7aWYobnVsbD09PW91KXRocm93IEVycm9yKGwoNDU5KSk7dmFyIGU9b3U7cmV0dXJuIG91PW51bGwsZX1mdW5jdGlvbiBvZihlKXtpZihlPT09b3J8fGU9PT1vYSl0aHJvdyBFcnJvcihsKDQ4MykpfXZhciBvcD1udWxsLG9oPTA7ZnVuY3Rpb24gb20oZSl7dmFyIHQ9b2g7cmV0dXJuIG9oKz0xLG51bGw9PT1vcCYmKG9wPVtdKSxvcyhvcCxlLHQpfWZ1bmN0aW9uIG9nKGUsdCl7ZS5yZWY9dm9pZCAwIT09KHQ9dC5wcm9wcy5yZWYpP3Q6bnVsbH1mdW5jdGlvbiBveShlLHQpe2lmKHQuJCR0eXBlb2Y9PT1wKXRocm93IEVycm9yKGwoNTI1KSk7dGhyb3cgRXJyb3IobCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09KGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKHQpLmpvaW4oXCIsIFwiKStcIn1cIjplKSl9ZnVuY3Rpb24gb3YoZSl7ZnVuY3Rpb24gdCh0LG4pe2lmKGUpe3ZhciByPXQuZGVsZXRpb25zO251bGw9PT1yPyh0LmRlbGV0aW9ucz1bbl0sdC5mbGFnc3w9MTYpOnIucHVzaChuKX19ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PXI7KXQobixyKSxyPXIuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiByKGUpe2Zvcih2YXIgdD1uZXcgTWFwO251bGwhPT1lOyludWxsIT09ZS5rZXk/dC5zZXQoZS5rZXksZSk6dC5zZXQoZS5pbmRleCxlKSxlPWUuc2libGluZztyZXR1cm4gdH1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuKGU9cm4oZSx0KSkuaW5kZXg9MCxlLnNpYmxpbmc9bnVsbCxlfWZ1bmN0aW9uIGEodCxuLHIpe3JldHVybih0LmluZGV4PXIsZSk/bnVsbCE9PShyPXQuYWx0ZXJuYXRlKT8ocj1yLmluZGV4KTxuPyh0LmZsYWdzfD0weDQwMDAwMDIsbik6cjoodC5mbGFnc3w9MHg0MDAwMDAyLG4pOih0LmZsYWdzfD0xMDQ4NTc2LG4pfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGUmJm51bGw9PT10LmFsdGVybmF0ZSYmKHQuZmxhZ3N8PTB4NDAwMDAwMiksdH1mdW5jdGlvbiBzKGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NiE9PXQudGFnPyh0PXJpKG4sZS5tb2RlLHIpKS5yZXR1cm49ZToodD1vKHQsbikpLnJldHVybj1lLHR9ZnVuY3Rpb24gYyhlLHQsbixyKXt2YXIgYT1uLnR5cGU7cmV0dXJuIGE9PT1nP2QoZSx0LG4ucHJvcHMuY2hpbGRyZW4scixuLmtleSk6KG51bGwhPT10JiYodC5lbGVtZW50VHlwZT09PWF8fFwib2JqZWN0XCI9PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWsmJm9jKGEpPT09dC50eXBlKT9vZyh0PW8odCxuLnByb3BzKSxuKTpvZyh0PXJvKG4udHlwZSxuLmtleSxuLnByb3BzLG51bGwsZS5tb2RlLHIpLG4pLHQucmV0dXJuPWUsdCl9ZnVuY3Rpb24gdShlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDQhPT10LnRhZ3x8dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PW4uY29udGFpbmVySW5mb3x8dC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1uLmltcGxlbWVudGF0aW9uPyh0PXJzKG4sZS5tb2RlLHIpKS5yZXR1cm49ZToodD1vKHQsbi5jaGlsZHJlbnx8W10pKS5yZXR1cm49ZSx0fWZ1bmN0aW9uIGQoZSx0LG4scixhKXtyZXR1cm4gbnVsbD09PXR8fDchPT10LnRhZz8odD1yYShuLGUubW9kZSxyLGEpKS5yZXR1cm49ZToodD1vKHQsbikpLnJldHVybj1lLHR9ZnVuY3Rpb24gZihlLHQsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJlwiXCIhPT10fHxcIm51bWJlclwiPT10eXBlb2YgdHx8XCJiaWdpbnRcIj09dHlwZW9mIHQpcmV0dXJuKHQ9cmkoXCJcIit0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtpZihcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQpe3N3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIGg6cmV0dXJuIG9nKG49cm8odC50eXBlLHQua2V5LHQucHJvcHMsbnVsbCxlLm1vZGUsbiksdCksbi5yZXR1cm49ZSxuO2Nhc2UgbTpyZXR1cm4odD1ycyh0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtjYXNlIGs6cmV0dXJuIGYoZSx0PW9jKHQpLG4pfWlmKFAodCl8fE8odCkpcmV0dXJuKHQ9cmEodCxlLm1vZGUsbixudWxsKSkucmV0dXJuPWUsdDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4pcmV0dXJuIGYoZSxvbSh0KSxuKTtpZih0LiQkdHlwZW9mPT09QSlyZXR1cm4gZihlLHJLKGUsdCksbik7b3koZSx0KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBwKGUsdCxuLHIpe3ZhciBvPW51bGwhPT10P3Qua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJlwiXCIhPT1ufHxcIm51bWJlclwiPT10eXBlb2Ygbnx8XCJiaWdpbnRcIj09dHlwZW9mIG4pcmV0dXJuIG51bGwhPT1vP251bGw6cyhlLHQsXCJcIituLHIpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBuJiZudWxsIT09bil7c3dpdGNoKG4uJCR0eXBlb2Ype2Nhc2UgaDpyZXR1cm4gbi5rZXk9PT1vP2MoZSx0LG4scik6bnVsbDtjYXNlIG06cmV0dXJuIG4ua2V5PT09bz91KGUsdCxuLHIpOm51bGw7Y2FzZSBrOnJldHVybiBwKGUsdCxuPW9jKG4pLHIpfWlmKFAobil8fE8obikpcmV0dXJuIG51bGwhPT1vP251bGw6ZChlLHQsbixyLG51bGwpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4udGhlbilyZXR1cm4gcChlLHQsb20obikscik7aWYobi4kJHR5cGVvZj09PUEpcmV0dXJuIHAoZSx0LHJLKGUsbikscik7b3koZSxuKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGUsdCxuLHIsbyl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHImJlwiXCIhPT1yfHxcIm51bWJlclwiPT10eXBlb2Ygcnx8XCJiaWdpbnRcIj09dHlwZW9mIHIpcmV0dXJuIHModCxlPWUuZ2V0KG4pfHxudWxsLFwiXCIrcixvKTtpZihcIm9iamVjdFwiPT10eXBlb2YgciYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIGg6cmV0dXJuIGModCxlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLG8pO2Nhc2UgbTpyZXR1cm4gdSh0LGU9ZS5nZXQobnVsbD09PXIua2V5P246ci5rZXkpfHxudWxsLHIsbyk7Y2FzZSBrOnJldHVybiB5KGUsdCxuLHI9b2Mociksbyl9aWYoUChyKXx8TyhyKSlyZXR1cm4gZCh0LGU9ZS5nZXQobil8fG51bGwscixvLG51bGwpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIudGhlbilyZXR1cm4geShlLHQsbixvbShyKSxvKTtpZihyLiQkdHlwZW9mPT09QSlyZXR1cm4geShlLHQsbixySyh0LHIpLG8pO295KHQscil9cmV0dXJuIG51bGx9cmV0dXJuIGZ1bmN0aW9uKHMsYyx1LGQpe3RyeXtvaD0wO3ZhciB2PWZ1bmN0aW9uIHMoYyx1LGQsdil7aWYoXCJvYmplY3RcIj09dHlwZW9mIGQmJm51bGwhPT1kJiZkLnR5cGU9PT1nJiZudWxsPT09ZC5rZXkmJihkPWQucHJvcHMuY2hpbGRyZW4pLFwib2JqZWN0XCI9PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgaDplOntmb3IodmFyIGI9ZC5rZXk7bnVsbCE9PXU7KXtpZih1LmtleT09PWIpe2lmKChiPWQudHlwZSk9PT1nKXtpZig3PT09dS50YWcpe24oYyx1LnNpYmxpbmcpLCh2PW8odSxkLnByb3BzLmNoaWxkcmVuKSkucmV0dXJuPWMsYz12O2JyZWFrIGV9fWVsc2UgaWYodS5lbGVtZW50VHlwZT09PWJ8fFwib2JqZWN0XCI9PXR5cGVvZiBiJiZudWxsIT09YiYmYi4kJHR5cGVvZj09PWsmJm9jKGIpPT09dS50eXBlKXtuKGMsdS5zaWJsaW5nKSxvZyh2PW8odSxkLnByb3BzKSxkKSx2LnJldHVybj1jLGM9djticmVhayBlfW4oYyx1KTticmVha310KGMsdSksdT11LnNpYmxpbmd9ZC50eXBlPT09Zz8odj1yYShkLnByb3BzLmNoaWxkcmVuLGMubW9kZSx2LGQua2V5KSkucmV0dXJuPWM6KG9nKHY9cm8oZC50eXBlLGQua2V5LGQucHJvcHMsbnVsbCxjLm1vZGUsdiksZCksdi5yZXR1cm49YyksYz12fXJldHVybiBpKGMpO2Nhc2UgbTplOntmb3IoYj1kLmtleTtudWxsIT09dTspe2lmKHUua2V5PT09YilpZig0PT09dS50YWcmJnUuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1kLmNvbnRhaW5lckluZm8mJnUuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09ZC5pbXBsZW1lbnRhdGlvbil7bihjLHUuc2libGluZyksKHY9byh1LGQuY2hpbGRyZW58fFtdKSkucmV0dXJuPWMsYz12O2JyZWFrIGV9ZWxzZXtuKGMsdSk7YnJlYWt9dChjLHUpLHU9dS5zaWJsaW5nfSh2PXJzKGQsYy5tb2RlLHYpKS5yZXR1cm49YyxjPXZ9cmV0dXJuIGkoYyk7Y2FzZSBrOnJldHVybiBzKGMsdSxkPW9jKGQpLHYpfWlmKFAoZCkpcmV0dXJuIGZ1bmN0aW9uKG8saSxsLHMpe2Zvcih2YXIgYz1udWxsLHU9bnVsbCxkPWksaD1pPTAsbT1udWxsO251bGwhPT1kJiZoPGwubGVuZ3RoO2grKyl7ZC5pbmRleD5oPyhtPWQsZD1udWxsKTptPWQuc2libGluZzt2YXIgZz1wKG8sZCxsW2hdLHMpO2lmKG51bGw9PT1nKXtudWxsPT09ZCYmKGQ9bSk7YnJlYWt9ZSYmZCYmbnVsbD09PWcuYWx0ZXJuYXRlJiZ0KG8sZCksaT1hKGcsaSxoKSxudWxsPT09dT9jPWc6dS5zaWJsaW5nPWcsdT1nLGQ9bX1pZihoPT09bC5sZW5ndGgpcmV0dXJuIG4obyxkKSxyaiYmckEobyxoKSxjO2lmKG51bGw9PT1kKXtmb3IoO2g8bC5sZW5ndGg7aCsrKW51bGwhPT0oZD1mKG8sbFtoXSxzKSkmJihpPWEoZCxpLGgpLG51bGw9PT11P2M9ZDp1LnNpYmxpbmc9ZCx1PWQpO3JldHVybiByaiYmckEobyxoKSxjfWZvcihkPXIoZCk7aDxsLmxlbmd0aDtoKyspbnVsbCE9PShtPXkoZCxvLGgsbFtoXSxzKSkmJihlJiZudWxsIT09bS5hbHRlcm5hdGUmJmQuZGVsZXRlKG51bGw9PT1tLmtleT9oOm0ua2V5KSxpPWEobSxpLGgpLG51bGw9PT11P2M9bTp1LnNpYmxpbmc9bSx1PW0pO3JldHVybiBlJiZkLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pLHJqJiZyQShvLGgpLGN9KGMsdSxkLHYpO2lmKE8oZCkpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mKGI9TyhkKSkpdGhyb3cgRXJyb3IobCgxNTApKTtyZXR1cm4gZnVuY3Rpb24obyxpLHMsYyl7aWYobnVsbD09cyl0aHJvdyBFcnJvcihsKDE1MSkpO2Zvcih2YXIgdT1udWxsLGQ9bnVsbCxoPWksbT1pPTAsZz1udWxsLHY9cy5uZXh0KCk7bnVsbCE9PWgmJiF2LmRvbmU7bSsrLHY9cy5uZXh0KCkpe2guaW5kZXg+bT8oZz1oLGg9bnVsbCk6Zz1oLnNpYmxpbmc7dmFyIGI9cChvLGgsdi52YWx1ZSxjKTtpZihudWxsPT09Yil7bnVsbD09PWgmJihoPWcpO2JyZWFrfWUmJmgmJm51bGw9PT1iLmFsdGVybmF0ZSYmdChvLGgpLGk9YShiLGksbSksbnVsbD09PWQ/dT1iOmQuc2libGluZz1iLGQ9YixoPWd9aWYodi5kb25lKXJldHVybiBuKG8saCkscmomJnJBKG8sbSksdTtpZihudWxsPT09aCl7Zm9yKDshdi5kb25lO20rKyx2PXMubmV4dCgpKW51bGwhPT0odj1mKG8sdi52YWx1ZSxjKSkmJihpPWEodixpLG0pLG51bGw9PT1kP3U9djpkLnNpYmxpbmc9dixkPXYpO3JldHVybiByaiYmckEobyxtKSx1fWZvcihoPXIoaCk7IXYuZG9uZTttKyssdj1zLm5leHQoKSludWxsIT09KHY9eShoLG8sbSx2LnZhbHVlLGMpKSYmKGUmJm51bGwhPT12LmFsdGVybmF0ZSYmaC5kZWxldGUobnVsbD09PXYua2V5P206di5rZXkpLGk9YSh2LGksbSksbnVsbD09PWQ/dT12OmQuc2libGluZz12LGQ9dik7cmV0dXJuIGUmJmguZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdChvLGUpfSkscmomJnJBKG8sbSksdX0oYyx1LGQ9Yi5jYWxsKGQpLHYpfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGQudGhlbilyZXR1cm4gcyhjLHUsb20oZCksdik7aWYoZC4kJHR5cGVvZj09PUEpcmV0dXJuIHMoYyx1LHJLKGMsZCksdik7b3koYyxkKX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PXR5cGVvZiBkfHxcImJpZ2ludFwiPT10eXBlb2YgZD8oZD1cIlwiK2QsbnVsbCE9PXUmJjY9PT11LnRhZz8obihjLHUuc2libGluZyksKHY9byh1LGQpKS5yZXR1cm49Yyk6KG4oYyx1KSwodj1yaShkLGMubW9kZSx2KSkucmV0dXJuPWMpLGkoYz12KSk6bihjLHUpfShzLGMsdSxkKTtyZXR1cm4gb3A9bnVsbCx2fWNhdGNoKGUpe2lmKGU9PT1vcnx8ZT09PW9hKXRocm93IGU7dmFyIGI9cmUoMjksZSxudWxsLHMubW9kZSk7cmV0dXJuIGIubGFuZXM9ZCxiLnJldHVybj1zLGJ9ZmluYWxseXt9fX12YXIgb2I9b3YoITApLG9BPW92KCExKSxveD0hMTtmdW5jdGlvbiBvdyhlKXtlLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsbGFuZXM6MCxoaWRkZW5DYWxsYmFja3M6bnVsbH0sY2FsbGJhY2tzOm51bGx9fWZ1bmN0aW9uIG9DKGUsdCl7ZT1lLnVwZGF0ZVF1ZXVlLHQudXBkYXRlUXVldWU9PT1lJiYodC51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTplLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDplLnNoYXJlZCxjYWxsYmFja3M6bnVsbH0pfWZ1bmN0aW9uIG9fKGUpe3JldHVybntsYW5lOmUsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBvayhlLHQsbil7dmFyIHI9ZS51cGRhdGVRdWV1ZTtpZihudWxsPT09cilyZXR1cm4gbnVsbDtpZihyPXIuc2hhcmVkLDAhPSgyJmxEKSl7dmFyIG89ci5wZW5kaW5nO3JldHVybiBudWxsPT09bz90Lm5leHQ9dDoodC5uZXh0PW8ubmV4dCxvLm5leHQ9dCksci5wZW5kaW5nPXQsdD1uOShlKSxuNihlLG51bGwsbiksdH1yZXR1cm4gbjQoZSxyLHQsbiksbjkoZSl9ZnVuY3Rpb24gb0UoZSx0LG4pe2lmKG51bGwhPT0odD10LnVwZGF0ZVF1ZXVlKSYmKHQ9dC5zaGFyZWQsMCE9KDQxOTQwNDgmbikpKXt2YXIgcj10LmxhbmVzO3ImPWUucGVuZGluZ0xhbmVzLG58PXIsdC5sYW5lcz1uLGVTKGUsbil9fWZ1bmN0aW9uIG9qKGUsdCl7dmFyIG49ZS51cGRhdGVRdWV1ZSxyPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1yJiZuPT09KHI9ci51cGRhdGVRdWV1ZSkpe3ZhciBvPW51bGwsYT1udWxsO2lmKG51bGwhPT0obj1uLmZpcnN0QmFzZVVwZGF0ZSkpe2Rve3ZhciBpPXtsYW5lOm4ubGFuZSx0YWc6bi50YWcscGF5bG9hZDpuLnBheWxvYWQsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9O251bGw9PT1hP289YT1pOmE9YS5uZXh0PWksbj1uLm5leHR9d2hpbGUobnVsbCE9PW4pO251bGw9PT1hP289YT10OmE9YS5uZXh0PXR9ZWxzZSBvPWE9dDtuPXtiYXNlU3RhdGU6ci5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm8sbGFzdEJhc2VVcGRhdGU6YSxzaGFyZWQ6ci5zaGFyZWQsY2FsbGJhY2tzOnIuY2FsbGJhY2tzfSxlLnVwZGF0ZVF1ZXVlPW47cmV0dXJufW51bGw9PT0oZT1uLmxhc3RCYXNlVXBkYXRlKT9uLmZpcnN0QmFzZVVwZGF0ZT10OmUubmV4dD10LG4ubGFzdEJhc2VVcGRhdGU9dH12YXIgb1M9ITE7ZnVuY3Rpb24gb08oKXtpZihvUyl7dmFyIGU9cjY7aWYobnVsbCE9PWUpdGhyb3cgZX19ZnVuY3Rpb24gb0IoZSx0LG4scil7b1M9ITE7dmFyIG89ZS51cGRhdGVRdWV1ZTtveD0hMTt2YXIgYT1vLmZpcnN0QmFzZVVwZGF0ZSxpPW8ubGFzdEJhc2VVcGRhdGUsbD1vLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1sKXtvLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIHM9bCxjPXMubmV4dDtzLm5leHQ9bnVsbCxudWxsPT09aT9hPWM6aS5uZXh0PWMsaT1zO3ZhciB1PWUuYWx0ZXJuYXRlO251bGwhPT11JiYobD0odT11LnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkhPT1pJiYobnVsbD09PWw/dS5maXJzdEJhc2VVcGRhdGU9YzpsLm5leHQ9Yyx1Lmxhc3RCYXNlVXBkYXRlPXMpfWlmKG51bGwhPT1hKXt2YXIgZD1vLmJhc2VTdGF0ZTtmb3IoaT0wLHU9Yz1zPW51bGwsbD1hOzspe3ZhciBwPS0weDIwMDAwMDAxJmwubGFuZSxoPXAhPT1sLmxhbmU7aWYoaD8obFImcCk9PT1wOihyJnApPT09cCl7MCE9PXAmJnA9PT1yMyYmKG9TPSEwKSxudWxsIT09dSYmKHU9dS5uZXh0PXtsYW5lOjAsdGFnOmwudGFnLHBheWxvYWQ6bC5wYXlsb2FkLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfSk7ZTp7dmFyIG09ZSxnPWw7c3dpdGNoKHA9dCxnLnRhZyl7Y2FzZSAxOmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKG09Zy5wYXlsb2FkKSl7ZD1tLmNhbGwobixkLHApO2JyZWFrIGV9ZD1tO2JyZWFrIGU7Y2FzZSAzOm0uZmxhZ3M9LTY1NTM3Jm0uZmxhZ3N8MTI4O2Nhc2UgMDppZihudWxsPT0ocD1cImZ1bmN0aW9uXCI9PXR5cGVvZihtPWcucGF5bG9hZCk/bS5jYWxsKG4sZCxwKTptKSlicmVhayBlO2Q9Zih7fSxkLHApO2JyZWFrIGU7Y2FzZSAyOm94PSEwfX1udWxsIT09KHA9bC5jYWxsYmFjaykmJihlLmZsYWdzfD02NCxoJiYoZS5mbGFnc3w9ODE5MiksbnVsbD09PShoPW8uY2FsbGJhY2tzKT9vLmNhbGxiYWNrcz1bcF06aC5wdXNoKHApKX1lbHNlIGg9e2xhbmU6cCx0YWc6bC50YWcscGF5bG9hZDpsLnBheWxvYWQsY2FsbGJhY2s6bC5jYWxsYmFjayxuZXh0Om51bGx9LG51bGw9PT11PyhjPXU9aCxzPWQpOnU9dS5uZXh0PWgsaXw9cDtpZihudWxsPT09KGw9bC5uZXh0KSlpZihudWxsPT09KGw9by5zaGFyZWQucGVuZGluZykpYnJlYWs7ZWxzZSBsPShoPWwpLm5leHQsaC5uZXh0PW51bGwsby5sYXN0QmFzZVVwZGF0ZT1oLG8uc2hhcmVkLnBlbmRpbmc9bnVsbH1udWxsPT09dSYmKHM9ZCksby5iYXNlU3RhdGU9cyxvLmZpcnN0QmFzZVVwZGF0ZT1jLG8ubGFzdEJhc2VVcGRhdGU9dSxudWxsPT09YSYmKG8uc2hhcmVkLmxhbmVzPTApLGwkfD1pLGUubGFuZXM9aSxlLm1lbW9pemVkU3RhdGU9ZH19ZnVuY3Rpb24gb1AoZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IEVycm9yKGwoMTkxLGUpKTtlLmNhbGwodCl9ZnVuY3Rpb24gb0koZSx0KXt2YXIgbj1lLmNhbGxiYWNrcztpZihudWxsIT09bilmb3IoZS5jYWxsYmFja3M9bnVsbCxlPTA7ZTxuLmxlbmd0aDtlKyspb1AobltlXSx0KX12YXIgb1Q9TihudWxsKSxvej1OKDApO2Z1bmN0aW9uIG9EKGUsdCl7TShveixlPWxIKSxNKG9ULHQpLGxIPWV8dC5iYXNlTGFuZXN9ZnVuY3Rpb24gb0woKXtNKG96LGxIKSxNKG9ULG9ULmN1cnJlbnQpfWZ1bmN0aW9uIG9OKCl7bEg9b3ouY3VycmVudCxSKG9UKSxSKG96KX12YXIgb1I9TihudWxsKSxvTT1udWxsO2Z1bmN0aW9uIG9aKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO00ob1YsMSZvVi5jdXJyZW50KSxNKG9SLGUpLG51bGw9PT1vTSYmKG51bGw9PT10fHxudWxsIT09b1QuY3VycmVudD9vTT1lOm51bGwhPT10Lm1lbW9pemVkU3RhdGUmJihvTT1lKSl9ZnVuY3Rpb24gb1UoZSl7TShvVixvVi5jdXJyZW50KSxNKG9SLGUpLG51bGw9PT1vTSYmKG9NPWUpfWZ1bmN0aW9uIG9GKGUpezIyPT09ZS50YWc/KE0ob1Ysb1YuY3VycmVudCksTShvUixlKSxudWxsPT09b00mJihvTT1lKSk6b3EoZSl9ZnVuY3Rpb24gb3EoKXtNKG9WLG9WLmN1cnJlbnQpLE0ob1Isb1IuY3VycmVudCl9ZnVuY3Rpb24gb0goZSl7UihvUiksb009PT1lJiYob009bnVsbCksUihvVil9dmFyIG9WPU4oMCk7ZnVuY3Rpb24gbyQoZSl7Zm9yKHZhciB0PWU7bnVsbCE9PXQ7KXtpZigxMz09PXQudGFnKXt2YXIgbj10Lm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW4mJihudWxsPT09KG49bi5kZWh5ZHJhdGVkKXx8Y1Mobil8fGNPKG4pKSlyZXR1cm4gdH1lbHNlIGlmKDE5PT09dC50YWcmJihcImZvcndhcmRzXCI9PT10Lm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXJ8fFwiYmFja3dhcmRzXCI9PT10Lm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXJ8fFwidW5zdGFibGVfbGVnYWN5LWJhY2t3YXJkc1wiPT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyfHxcInRvZ2V0aGVyXCI9PT10Lm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpKXtpZigwIT0oMTI4JnQuZmxhZ3MpKXJldHVybiB0fWVsc2UgaWYobnVsbCE9PXQuY2hpbGQpe3QuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2NvbnRpbnVlfWlmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiBudWxsO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ31yZXR1cm4gbnVsbH12YXIgb1c9MCxvWT1udWxsLG9LPW51bGwsb1g9bnVsbCxvRz0hMSxvUT0hMSxvSj0hMSxvMD0wLG8xPTAsbzI9bnVsbCxvND0wO2Z1bmN0aW9uIG81KCl7dGhyb3cgRXJyb3IobCgzMjEpKX1mdW5jdGlvbiBvMyhlLHQpe2lmKG51bGw9PT10KXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFuayhlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG82KGUsdCxuLHIsbyxhKXtyZXR1cm4gb1c9YSxvWT10LHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCx0LmxhbmVzPTAsSS5IPW51bGw9PT1lfHxudWxsPT09ZS5tZW1vaXplZFN0YXRlP2l0OmlyLG9KPSExLGE9bihyLG8pLG9KPSExLG9RJiYoYT1vOCh0LG4scixvKSksbzkoZSksYX1mdW5jdGlvbiBvOShlKXtJLkg9aWU7dmFyIHQ9bnVsbCE9PW9LJiZudWxsIT09b0submV4dDtpZihvVz0wLG9YPW9LPW9ZPW51bGwsb0c9ITEsbzE9MCxvMj1udWxsLHQpdGhyb3cgRXJyb3IobCgzMDApKTtudWxsPT09ZXx8aUF8fG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJnIkKGUpJiYoaUE9ITApfWZ1bmN0aW9uIG84KGUsdCxuLHIpe29ZPWU7dmFyIG89MDtkb3tpZihvUSYmKG8yPW51bGwpLG8xPTAsb1E9ITEsMjU8PW8pdGhyb3cgRXJyb3IobCgzMDEpKTtpZihvKz0xLG9YPW9LPW51bGwsbnVsbCE9ZS51cGRhdGVRdWV1ZSl7dmFyIGE9ZS51cGRhdGVRdWV1ZTthLmxhc3RFZmZlY3Q9bnVsbCxhLmV2ZW50cz1udWxsLGEuc3RvcmVzPW51bGwsbnVsbCE9YS5tZW1vQ2FjaGUmJihhLm1lbW9DYWNoZS5pbmRleD0wKX1JLkg9aW8sYT10KG4scil9d2hpbGUob1EpO3JldHVybiBhfWZ1bmN0aW9uIG83KCl7dmFyIGU9SS5ILHQ9ZS51c2VTdGF0ZSgpWzBdO3JldHVybiB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbj9haSh0KTp0LGU9ZS51c2VTdGF0ZSgpWzBdLChudWxsIT09b0s/b0subWVtb2l6ZWRTdGF0ZTpudWxsKSE9PWUmJihvWS5mbGFnc3w9MTAyNCksdH1mdW5jdGlvbiBhZSgpe3ZhciBlPTAhPT1vMDtyZXR1cm4gbzA9MCxlfWZ1bmN0aW9uIGF0KGUsdCxuKXt0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5mbGFncyY9LTIwNTMsZS5sYW5lcyY9fm59ZnVuY3Rpb24gYW4oZSl7aWYob0cpe2ZvcihlPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZTspe3ZhciB0PWUucXVldWU7bnVsbCE9PXQmJih0LnBlbmRpbmc9bnVsbCksZT1lLm5leHR9b0c9ITF9b1c9MCxvWD1vSz1vWT1udWxsLG9RPSExLG8xPW8wPTAsbzI9bnVsbH1mdW5jdGlvbiBhcigpe3ZhciBlPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O3JldHVybiBudWxsPT09b1g/b1kubWVtb2l6ZWRTdGF0ZT1vWD1lOm9YPW9YLm5leHQ9ZSxvWH1mdW5jdGlvbiBhbygpe2lmKG51bGw9PT1vSyl7dmFyIGU9b1kuYWx0ZXJuYXRlO2U9bnVsbCE9PWU/ZS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBlPW9LLm5leHQ7dmFyIHQ9bnVsbD09PW9YP29ZLm1lbW9pemVkU3RhdGU6b1gubmV4dDtpZihudWxsIT09dClvWD10LG9LPWU7ZWxzZXtpZihudWxsPT09ZSl7aWYobnVsbD09PW9ZLmFsdGVybmF0ZSl0aHJvdyBFcnJvcihsKDQ2NykpO3Rocm93IEVycm9yKGwoMzEwKSl9ZT17bWVtb2l6ZWRTdGF0ZToob0s9ZSkubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6b0suYmFzZVN0YXRlLGJhc2VRdWV1ZTpvSy5iYXNlUXVldWUscXVldWU6b0sucXVldWUsbmV4dDpudWxsfSxudWxsPT09b1g/b1kubWVtb2l6ZWRTdGF0ZT1vWD1lOm9YPW9YLm5leHQ9ZX1yZXR1cm4gb1h9ZnVuY3Rpb24gYWEoKXtyZXR1cm57bGFzdEVmZmVjdDpudWxsLGV2ZW50czpudWxsLHN0b3JlczpudWxsLG1lbW9DYWNoZTpudWxsfX1mdW5jdGlvbiBhaShlKXt2YXIgdD1vMTtyZXR1cm4gbzErPTEsbnVsbD09PW8yJiYobzI9W10pLGU9b3MobzIsZSx0KSx0PW9ZLG51bGw9PT0obnVsbD09PW9YP3QubWVtb2l6ZWRTdGF0ZTpvWC5uZXh0KSYmKEkuSD1udWxsPT09KHQ9dC5hbHRlcm5hdGUpfHxudWxsPT09dC5tZW1vaXplZFN0YXRlP2l0OmlyKSxlfWZ1bmN0aW9uIGFsKGUpe2lmKG51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuKXJldHVybiBhaShlKTtpZihlLiQkdHlwZW9mPT09QSlyZXR1cm4gclkoZSl9dGhyb3cgRXJyb3IobCg0MzgsU3RyaW5nKGUpKSl9ZnVuY3Rpb24gYXMoZSl7dmFyIHQ9bnVsbCxuPW9ZLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1uJiYodD1uLm1lbW9DYWNoZSksbnVsbD09dCl7dmFyIHI9b1kuYWx0ZXJuYXRlO251bGwhPT1yJiZudWxsIT09KHI9ci51cGRhdGVRdWV1ZSkmJm51bGwhPShyPXIubWVtb0NhY2hlKSYmKHQ9e2RhdGE6ci5kYXRhLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgpfSksaW5kZXg6MH0pfWlmKG51bGw9PXQmJih0PXtkYXRhOltdLGluZGV4OjB9KSxudWxsPT09biYmKG49YWEoKSxvWS51cGRhdGVRdWV1ZT1uKSxuLm1lbW9DYWNoZT10LHZvaWQgMD09PShuPXQuZGF0YVt0LmluZGV4XSkpZm9yKG49dC5kYXRhW3QuaW5kZXhdPUFycmF5KGUpLHI9MDtyPGU7cisrKW5bcl09ajtyZXR1cm4gdC5pbmRleCsrLG59ZnVuY3Rpb24gYWMoZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QoZSk6dH1mdW5jdGlvbiBhdShlKXtyZXR1cm4gYWQoYW8oKSxvSyxlKX1mdW5jdGlvbiBhZChlLHQsbil7dmFyIHI9ZS5xdWV1ZTtpZihudWxsPT09cil0aHJvdyBFcnJvcihsKDMxMSkpO3IubGFzdFJlbmRlcmVkUmVkdWNlcj1uO3ZhciBvPWUuYmFzZVF1ZXVlLGE9ci5wZW5kaW5nO2lmKG51bGwhPT1hKXtpZihudWxsIT09byl7dmFyIGk9by5uZXh0O28ubmV4dD1hLm5leHQsYS5uZXh0PWl9dC5iYXNlUXVldWU9bz1hLHIucGVuZGluZz1udWxsfWlmKGE9ZS5iYXNlU3RhdGUsbnVsbD09PW8pZS5tZW1vaXplZFN0YXRlPWE7ZWxzZXt0PW8ubmV4dDt2YXIgcz1pPW51bGwsYz1udWxsLHU9dCxkPSExO2Rve3ZhciBmPS0weDIwMDAwMDAxJnUubGFuZTtpZihmIT09dS5sYW5lPyhsUiZmKT09PWY6KG9XJmYpPT09Zil7dmFyIHA9dS5yZXZlcnRMYW5lO2lmKDA9PT1wKW51bGwhPT1jJiYoYz1jLm5leHQ9e2xhbmU6MCxyZXZlcnRMYW5lOjAsZ2VzdHVyZTpudWxsLGFjdGlvbjp1LmFjdGlvbixoYXNFYWdlclN0YXRlOnUuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOnUuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxmPT09cjMmJihkPSEwKTtlbHNlIGlmKChvVyZwKT09PXApe3U9dS5uZXh0LHA9PT1yMyYmKGQ9ITApO2NvbnRpbnVlfWVsc2UgZj17bGFuZTowLHJldmVydExhbmU6dS5yZXZlcnRMYW5lLGdlc3R1cmU6bnVsbCxhY3Rpb246dS5hY3Rpb24saGFzRWFnZXJTdGF0ZTp1Lmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTp1LmVhZ2VyU3RhdGUsbmV4dDpudWxsfSxudWxsPT09Yz8ocz1jPWYsaT1hKTpjPWMubmV4dD1mLG9ZLmxhbmVzfD1wLGwkfD1wO2Y9dS5hY3Rpb24sb0omJm4oYSxmKSxhPXUuaGFzRWFnZXJTdGF0ZT91LmVhZ2VyU3RhdGU6bihhLGYpfWVsc2UgcD17bGFuZTpmLHJldmVydExhbmU6dS5yZXZlcnRMYW5lLGdlc3R1cmU6dS5nZXN0dXJlLGFjdGlvbjp1LmFjdGlvbixoYXNFYWdlclN0YXRlOnUuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOnUuZWFnZXJTdGF0ZSxuZXh0Om51bGx9LG51bGw9PT1jPyhzPWM9cCxpPWEpOmM9Yy5uZXh0PXAsb1kubGFuZXN8PWYsbCR8PWY7dT11Lm5leHR9d2hpbGUobnVsbCE9PXUmJnUhPT10KTtpZihudWxsPT09Yz9pPWE6Yy5uZXh0PXMsIW5rKGEsZS5tZW1vaXplZFN0YXRlKSYmKGlBPSEwLGQmJm51bGwhPT0obj1yNikpKXRocm93IG47ZS5tZW1vaXplZFN0YXRlPWEsZS5iYXNlU3RhdGU9aSxlLmJhc2VRdWV1ZT1jLHIubGFzdFJlbmRlcmVkU3RhdGU9YX1yZXR1cm4gbnVsbD09PW8mJihyLmxhbmVzPTApLFtlLm1lbW9pemVkU3RhdGUsci5kaXNwYXRjaF19ZnVuY3Rpb24gYWYoZSl7dmFyIHQ9YW8oKSxuPXQucXVldWU7aWYobnVsbD09PW4pdGhyb3cgRXJyb3IobCgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgcj1uLmRpc3BhdGNoLG89bi5wZW5kaW5nLGE9dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1vKXtuLnBlbmRpbmc9bnVsbDt2YXIgaT1vPW8ubmV4dDtkbyBhPWUoYSxpLmFjdGlvbiksaT1pLm5leHQ7d2hpbGUoaSE9PW8pO25rKGEsdC5tZW1vaXplZFN0YXRlKXx8KGlBPSEwKSx0Lm1lbW9pemVkU3RhdGU9YSxudWxsPT09dC5iYXNlUXVldWUmJih0LmJhc2VTdGF0ZT1hKSxuLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuW2Escl19ZnVuY3Rpb24gYXAoZSx0LG4pe3ZhciByPW9ZLG89YW8oKSxhPXJqO2lmKGEpe2lmKHZvaWQgMD09PW4pdGhyb3cgRXJyb3IobCg0MDcpKTtuPW4oKX1lbHNlIG49dCgpO3ZhciBpPSFuaygob0t8fG8pLm1lbW9pemVkU3RhdGUsbik7aWYoaSYmKG8ubWVtb2l6ZWRTdGF0ZT1uLGlBPSEwKSxvPW8ucXVldWUsYVIoYWcuYmluZChudWxsLHIsbyxlKSxbZV0pLG8uZ2V0U25hcHNob3QhPT10fHxpfHxudWxsIT09b1gmJjEmb1gubWVtb2l6ZWRTdGF0ZS50YWcpe2lmKHIuZmxhZ3N8PTIwNDgsYVQoOSx7ZGVzdHJveTp2b2lkIDB9LGFtLmJpbmQobnVsbCxyLG8sbix0KSxudWxsKSxudWxsPT09bEwpdGhyb3cgRXJyb3IobCgzNDkpKTthfHwwIT0oMTI0Jm9XKXx8YWgocix0LG4pfXJldHVybiBufWZ1bmN0aW9uIGFoKGUsdCxuKXtlLmZsYWdzfD0xNjM4NCxlPXtnZXRTbmFwc2hvdDp0LHZhbHVlOm59LG51bGw9PT0odD1vWS51cGRhdGVRdWV1ZSk/KHQ9YWEoKSxvWS51cGRhdGVRdWV1ZT10LHQuc3RvcmVzPVtlXSk6bnVsbD09PShuPXQuc3RvcmVzKT90LnN0b3Jlcz1bZV06bi5wdXNoKGUpfWZ1bmN0aW9uIGFtKGUsdCxuLHIpe3QudmFsdWU9bix0LmdldFNuYXBzaG90PXIsYXkodCkmJmF2KGUpfWZ1bmN0aW9uIGFnKGUsdCxuKXtyZXR1cm4gbihmdW5jdGlvbigpe2F5KHQpJiZhdihlKX0pfWZ1bmN0aW9uIGF5KGUpe3ZhciB0PWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXt2YXIgbj10KCk7cmV0dXJuIW5rKGUsbil9Y2F0Y2goZSl7cmV0dXJuITB9fWZ1bmN0aW9uIGF2KGUpe3ZhciB0PW4zKGUsMik7bnVsbCE9PXQmJnNhKHQsZSwyKX1mdW5jdGlvbiBhYihlKXt2YXIgdD1hcigpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpe3ZhciBuPWU7aWYoZT1uKCksb0ope2VoKCEwKTt0cnl7bigpfWZpbmFsbHl7ZWgoITEpfX19cmV0dXJuIHQubWVtb2l6ZWRTdGF0ZT10LmJhc2VTdGF0ZT1lLHQucXVldWU9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphYyxsYXN0UmVuZGVyZWRTdGF0ZTplfSx0fWZ1bmN0aW9uIGFBKGUsdCxuLHIpe3JldHVybiBlLmJhc2VTdGF0ZT1uLGFkKGUsb0ssXCJmdW5jdGlvblwiPT10eXBlb2Ygcj9yOmFjKX1mdW5jdGlvbiBheChlLHQsbixyLG8pe2lmKGE5KGUpKXRocm93IEVycm9yKGwoNDg1KSk7aWYobnVsbCE9PShlPXQuYWN0aW9uKSl7dmFyIGE9e3BheWxvYWQ6byxhY3Rpb246ZSxuZXh0Om51bGwsaXNUcmFuc2l0aW9uOiEwLHN0YXR1czpcInBlbmRpbmdcIix2YWx1ZTpudWxsLHJlYXNvbjpudWxsLGxpc3RlbmVyczpbXSx0aGVuOmZ1bmN0aW9uKGUpe2EubGlzdGVuZXJzLnB1c2goZSl9fTtudWxsIT09SS5UP24oITApOmEuaXNUcmFuc2l0aW9uPSExLHIoYSksbnVsbD09PShuPXQucGVuZGluZyk/KGEubmV4dD10LnBlbmRpbmc9YSxhdyh0LGEpKTooYS5uZXh0PW4ubmV4dCx0LnBlbmRpbmc9bi5uZXh0PWEpfX1mdW5jdGlvbiBhdyhlLHQpe3ZhciBuPXQuYWN0aW9uLHI9dC5wYXlsb2FkLG89ZS5zdGF0ZTtpZih0LmlzVHJhbnNpdGlvbil7dmFyIGE9SS5ULGk9e307SS5UPWk7dHJ5e3ZhciBsPW4obyxyKSxzPUkuUztudWxsIT09cyYmcyhpLGwpLGFDKGUsdCxsKX1jYXRjaChuKXthayhlLHQsbil9ZmluYWxseXtudWxsIT09YSYmbnVsbCE9PWkudHlwZXMmJihhLnR5cGVzPWkudHlwZXMpLEkuVD1hfX1lbHNlIHRyeXthPW4obyxyKSxhQyhlLHQsYSl9Y2F0Y2gobil7YWsoZSx0LG4pfX1mdW5jdGlvbiBhQyhlLHQsbil7bnVsbCE9PW4mJlwib2JqZWN0XCI9PXR5cGVvZiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnRoZW4/bi50aGVuKGZ1bmN0aW9uKG4pe2FfKGUsdCxuKX0sZnVuY3Rpb24obil7cmV0dXJuIGFrKGUsdCxuKX0pOmFfKGUsdCxuKX1mdW5jdGlvbiBhXyhlLHQsbil7dC5zdGF0dXM9XCJmdWxmaWxsZWRcIix0LnZhbHVlPW4sYUUodCksZS5zdGF0ZT1uLG51bGwhPT0odD1lLnBlbmRpbmcpJiYoKG49dC5uZXh0KT09PXQ/ZS5wZW5kaW5nPW51bGw6KG49bi5uZXh0LHQubmV4dD1uLGF3KGUsbikpKX1mdW5jdGlvbiBhayhlLHQsbil7dmFyIHI9ZS5wZW5kaW5nO2lmKGUucGVuZGluZz1udWxsLG51bGwhPT1yKXtyPXIubmV4dDtkbyB0LnN0YXR1cz1cInJlamVjdGVkXCIsdC5yZWFzb249bixhRSh0KSx0PXQubmV4dDt3aGlsZSh0IT09cil9ZS5hY3Rpb249bnVsbH1mdW5jdGlvbiBhRShlKXtlPWUubGlzdGVuZXJzO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKSgwLGVbdF0pKCl9ZnVuY3Rpb24gYWooZSx0KXtyZXR1cm4gdH1mdW5jdGlvbiBhUyhlLHQpe2lmKHJqKXt2YXIgbj1sTC5mb3JtU3RhdGU7aWYobnVsbCE9PW4pe2U6e3ZhciByPW9ZO2lmKHJqKXtpZihyRSl7dDp7Zm9yKHZhciBvPXJFLGE9ck87OCE9PW8ubm9kZVR5cGU7KWlmKCFhfHxudWxsPT09KG89Y0Ioby5uZXh0U2libGluZykpKXtvPW51bGw7YnJlYWsgdH1vPVwiRiFcIj09PShhPW8uZGF0YSl8fFwiRlwiPT09YT9vOm51bGx9aWYobyl7ckU9Y0Ioby5uZXh0U2libGluZykscj1cIkYhXCI9PT1vLmRhdGE7YnJlYWsgZX19clAocil9cj0hMX1yJiYodD1uWzBdKX19cmV0dXJuKG49YXIoKSkubWVtb2l6ZWRTdGF0ZT1uLmJhc2VTdGF0ZT10LHI9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphaixsYXN0UmVuZGVyZWRTdGF0ZTp0fSxuLnF1ZXVlPXIsbj1hNS5iaW5kKG51bGwsb1ksciksci5kaXNwYXRjaD1uLHI9YWIoITEpLGE9YTYuYmluZChudWxsLG9ZLCExLHIucXVldWUpLHI9YXIoKSxvPXtzdGF0ZTp0LGRpc3BhdGNoOm51bGwsYWN0aW9uOmUscGVuZGluZzpudWxsfSxyLnF1ZXVlPW8sbj1heC5iaW5kKG51bGwsb1ksbyxhLG4pLG8uZGlzcGF0Y2g9bixyLm1lbW9pemVkU3RhdGU9ZSxbdCxuLCExXX1mdW5jdGlvbiBhTyhlKXtyZXR1cm4gYUIoYW8oKSxvSyxlKX1mdW5jdGlvbiBhQihlLHQsbil7aWYodD1hZChlLHQsYWopWzBdLGU9YXUoYWMpWzBdLFwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuKXRyeXt2YXIgcj1haSh0KX1jYXRjaChlKXtpZihlPT09b3IpdGhyb3cgb2E7dGhyb3cgZX1lbHNlIHI9dDt2YXIgbz0odD1hbygpKS5xdWV1ZSxhPW8uZGlzcGF0Y2g7cmV0dXJuIG4hPT10Lm1lbW9pemVkU3RhdGUmJihvWS5mbGFnc3w9MjA0OCxhVCg5LHtkZXN0cm95OnZvaWQgMH0sYVAuYmluZChudWxsLG8sbiksbnVsbCkpLFtyLGEsZV19ZnVuY3Rpb24gYVAoZSx0KXtlLmFjdGlvbj10fWZ1bmN0aW9uIGFJKGUpe3ZhciB0PWFvKCksbj1vSztpZihudWxsIT09bilyZXR1cm4gYUIodCxuLGUpO2FvKCksdD10Lm1lbW9pemVkU3RhdGU7dmFyIHI9KG49YW8oKSkucXVldWUuZGlzcGF0Y2g7cmV0dXJuIG4ubWVtb2l6ZWRTdGF0ZT1lLFt0LHIsITFdfWZ1bmN0aW9uIGFUKGUsdCxuLHIpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6bixkZXBzOnIsaW5zdDp0LG5leHQ6bnVsbH0sbnVsbD09PSh0PW9ZLnVwZGF0ZVF1ZXVlKSYmKHQ9YWEoKSxvWS51cGRhdGVRdWV1ZT10KSxudWxsPT09KG49dC5sYXN0RWZmZWN0KT90Lmxhc3RFZmZlY3Q9ZS5uZXh0PWU6KHI9bi5uZXh0LG4ubmV4dD1lLGUubmV4dD1yLHQubGFzdEVmZmVjdD1lKSxlfWZ1bmN0aW9uIGF6KCl7cmV0dXJuIGFvKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBhRChlLHQsbixyKXt2YXIgbz1hcigpO29ZLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1hVCgxfHQse2Rlc3Ryb3k6dm9pZCAwfSxuLHZvaWQgMD09PXI/bnVsbDpyKX1mdW5jdGlvbiBhTChlLHQsbixyKXt2YXIgbz1hbygpO3I9dm9pZCAwPT09cj9udWxsOnI7dmFyIGE9by5tZW1vaXplZFN0YXRlLmluc3Q7bnVsbCE9PW9LJiZudWxsIT09ciYmbzMocixvSy5tZW1vaXplZFN0YXRlLmRlcHMpP28ubWVtb2l6ZWRTdGF0ZT1hVCh0LGEsbixyKToob1kuZmxhZ3N8PWUsby5tZW1vaXplZFN0YXRlPWFUKDF8dCxhLG4scikpfWZ1bmN0aW9uIGFOKGUsdCl7YUQoODM5MDY1Niw4LGUsdCl9ZnVuY3Rpb24gYVIoZSx0KXthTCgyMDQ4LDgsZSx0KX1mdW5jdGlvbiBhTShlLHQpe3JldHVybiBhTCg0LDIsZSx0KX1mdW5jdGlvbiBhWihlLHQpe3JldHVybiBhTCg0LDQsZSx0KX1mdW5jdGlvbiBhVShlLHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpe3ZhciBuPXQoZT1lKCkpO3JldHVybiBmdW5jdGlvbigpe1wiZnVuY3Rpb25cIj09dHlwZW9mIG4/bigpOnQobnVsbCl9fWlmKG51bGwhPXQpcmV0dXJuIHQuY3VycmVudD1lPWUoKSxmdW5jdGlvbigpe3QuY3VycmVudD1udWxsfX1mdW5jdGlvbiBhRihlLHQsbil7bj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCxhTCg0LDQsYVUuYmluZChudWxsLHQsZSksbil9ZnVuY3Rpb24gYXEoKXt9ZnVuY3Rpb24gYUgoZSx0KXt2YXIgbj1hbygpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09dCYmbzModCxyWzFdKT9yWzBdOihuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gYVYoZSx0KXt2YXIgbj1hbygpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT10JiZvMyh0LHJbMV0pKXJldHVybiByWzBdO2lmKHI9ZSgpLG9KKXtlaCghMCk7dHJ5e2UoKX1maW5hbGx5e2VoKCExKX19cmV0dXJuIG4ubWVtb2l6ZWRTdGF0ZT1bcix0XSxyfWZ1bmN0aW9uIGEkKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09bnx8MCE9KDB4NDAwMDAwMDAmb1cpP2UubWVtb2l6ZWRTdGF0ZT10OihlLm1lbW9pemVkU3RhdGU9bixlPXNvKCksb1kubGFuZXN8PWUsbCR8PWUsbil9ZnVuY3Rpb24gYVcoZSx0LG4scil7cmV0dXJuIG5rKG4sdCk/bjpudWxsIT09b1QuY3VycmVudD8obmsoZT1hJChlLG4sciksdCl8fChpQT0hMCksZSk6MD09KDQyJm9XKXx8MCE9KDB4NDAwMDAwMDAmb1cpPyhpQT0hMCxlLm1lbW9pemVkU3RhdGU9bik6KGU9c28oKSxvWS5sYW5lc3w9ZSxsJHw9ZSx0KX1mdW5jdGlvbiBhWShlLHQsbixyLG8pe3ZhciBhPVQucDtULnA9MCE9PWEmJjg+YT9hOjg7dmFyIGk9SS5ULGw9e307SS5UPWwsYTYoZSwhMSx0LG4pO3RyeXt2YXIgcz1vKCksYz1JLlM7aWYobnVsbCE9PWMmJmMobCxzKSxudWxsIT09cyYmXCJvYmplY3RcIj09dHlwZW9mIHMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMudGhlbil7dmFyIHUsZCxmPSh1PVtdLGQ9e3N0YXR1czpcInBlbmRpbmdcIix2YWx1ZTpudWxsLHJlYXNvbjpudWxsLHRoZW46ZnVuY3Rpb24oZSl7dS5wdXNoKGUpfX0scy50aGVuKGZ1bmN0aW9uKCl7ZC5zdGF0dXM9XCJmdWxmaWxsZWRcIixkLnZhbHVlPXI7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspKDAsdVtlXSkocil9LGZ1bmN0aW9uKGUpe2ZvcihkLnN0YXR1cz1cInJlamVjdGVkXCIsZC5yZWFzb249ZSxlPTA7ZTx1Lmxlbmd0aDtlKyspKDAsdVtlXSkodm9pZCAwKX0pLGQpO2EzKGUsdCxmLHNyKGUpKX1lbHNlIGEzKGUsdCxyLHNyKGUpKX1jYXRjaChuKXthMyhlLHQse3RoZW46ZnVuY3Rpb24oKXt9LHN0YXR1czpcInJlamVjdGVkXCIscmVhc29uOm59LHNyKCkpfWZpbmFsbHl7VC5wPWEsbnVsbCE9PWkmJm51bGwhPT1sLnR5cGVzJiYoaS50eXBlcz1sLnR5cGVzKSxJLlQ9aX19ZnVuY3Rpb24gYUsoKXt9ZnVuY3Rpb24gYVgoZSx0LG4scil7aWYoNSE9PWUudGFnKXRocm93IEVycm9yKGwoNDc2KSk7dmFyIG89YUcoZSkucXVldWU7YVkoZSxvLHQseixudWxsPT09bj9hSzpmdW5jdGlvbigpe3JldHVybiBhUShlKSxuKHIpfSl9ZnVuY3Rpb24gYUcoZSl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT10KXJldHVybiB0O3ZhciBuPXt9O3JldHVybih0PXttZW1vaXplZFN0YXRlOnosYmFzZVN0YXRlOnosYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphYyxsYXN0UmVuZGVyZWRTdGF0ZTp6fSxuZXh0Om51bGx9KS5uZXh0PXttZW1vaXplZFN0YXRlOm4sYmFzZVN0YXRlOm4sYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphYyxsYXN0UmVuZGVyZWRTdGF0ZTpufSxuZXh0Om51bGx9LGUubWVtb2l6ZWRTdGF0ZT10LG51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJihlLm1lbW9pemVkU3RhdGU9dCksdH1mdW5jdGlvbiBhUShlKXt2YXIgdD1hRyhlKTtudWxsPT09dC5uZXh0JiYodD1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlKSxhMyhlLHQubmV4dC5xdWV1ZSx7fSxzcigpKX1mdW5jdGlvbiBhSigpe3JldHVybiByWShjOSl9ZnVuY3Rpb24gYTAoKXtyZXR1cm4gYW8oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGExKCl7cmV0dXJuIGFvKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBhMihlKXtmb3IodmFyIHQ9ZS5yZXR1cm47bnVsbCE9PXQ7KXtzd2l0Y2godC50YWcpe2Nhc2UgMjQ6Y2FzZSAzOnZhciBuPXNyKCkscj1vayh0LGU9b18obiksbik7bnVsbCE9PXImJihzYShyLHQsbiksb0Uocix0LG4pKSx0PXtjYWNoZTpyMSgpfSxlLnBheWxvYWQ9dDtyZXR1cm59dD10LnJldHVybn19ZnVuY3Rpb24gYTQoZSx0LG4pe3ZhciByPXNyKCk7bj17bGFuZTpyLHJldmVydExhbmU6MCxnZXN0dXJlOm51bGwsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxhOShlKT9hOCh0LG4pOm51bGwhPT0obj1uNShlLHQsbixyKSkmJihzYShuLGUsciksYTcobix0LHIpKX1mdW5jdGlvbiBhNShlLHQsbil7YTMoZSx0LG4sc3IoKSl9ZnVuY3Rpb24gYTMoZSx0LG4scil7dmFyIG89e2xhbmU6cixyZXZlcnRMYW5lOjAsZ2VzdHVyZTpudWxsLGFjdGlvbjpuLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoYTkoZSkpYTgodCxvKTtlbHNle3ZhciBhPWUuYWx0ZXJuYXRlO2lmKDA9PT1lLmxhbmVzJiYobnVsbD09PWF8fDA9PT1hLmxhbmVzKSYmbnVsbCE9PShhPXQubGFzdFJlbmRlcmVkUmVkdWNlcikpdHJ5e3ZhciBpPXQubGFzdFJlbmRlcmVkU3RhdGUsbD1hKGksbik7aWYoby5oYXNFYWdlclN0YXRlPSEwLG8uZWFnZXJTdGF0ZT1sLG5rKGwsaSkpcmV0dXJuIG40KGUsdCxvLDApLG51bGw9PT1sTCYmbjIoKSwhMX1jYXRjaChlKXt9ZmluYWxseXt9aWYobnVsbCE9PShuPW41KGUsdCxvLHIpKSlyZXR1cm4gc2EobixlLHIpLGE3KG4sdCxyKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhNihlLHQsbixyKXtpZihyPXtsYW5lOjIscmV2ZXJ0TGFuZTpzWCgpLGdlc3R1cmU6bnVsbCxhY3Rpb246cixoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LGE5KGUpKXtpZih0KXRocm93IEVycm9yKGwoNDc5KSl9ZWxzZSBudWxsIT09KHQ9bjUoZSxuLHIsMikpJiZzYSh0LGUsMil9ZnVuY3Rpb24gYTkoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7cmV0dXJuIGU9PT1vWXx8bnVsbCE9PXQmJnQ9PT1vWX1mdW5jdGlvbiBhOChlLHQpe29RPW9HPSEwO3ZhciBuPWUucGVuZGluZztudWxsPT09bj90Lm5leHQ9dDoodC5uZXh0PW4ubmV4dCxuLm5leHQ9dCksZS5wZW5kaW5nPXR9ZnVuY3Rpb24gYTcoZSx0LG4pe2lmKDAhPSg0MTk0MDQ4Jm4pKXt2YXIgcj10LmxhbmVzO3ImPWUucGVuZGluZ0xhbmVzLHQubGFuZXM9bnw9cixlUyhlLG4pfX12YXIgaWU9e3JlYWRDb250ZXh0OnJZLHVzZTphbCx1c2VDYWxsYmFjazpvNSx1c2VDb250ZXh0Om81LHVzZUVmZmVjdDpvNSx1c2VJbXBlcmF0aXZlSGFuZGxlOm81LHVzZUxheW91dEVmZmVjdDpvNSx1c2VJbnNlcnRpb25FZmZlY3Q6bzUsdXNlTWVtbzpvNSx1c2VSZWR1Y2VyOm81LHVzZVJlZjpvNSx1c2VTdGF0ZTpvNSx1c2VEZWJ1Z1ZhbHVlOm81LHVzZURlZmVycmVkVmFsdWU6bzUsdXNlVHJhbnNpdGlvbjpvNSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpvNSx1c2VJZDpvNSx1c2VIb3N0VHJhbnNpdGlvblN0YXR1czpvNSx1c2VGb3JtU3RhdGU6bzUsdXNlQWN0aW9uU3RhdGU6bzUsdXNlT3B0aW1pc3RpYzpvNSx1c2VNZW1vQ2FjaGU6bzUsdXNlQ2FjaGVSZWZyZXNoOm81fSxpdD17cmVhZENvbnRleHQ6clksdXNlOmFsLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT10P251bGw6dF0sZX0sdXNlQ29udGV4dDpyWSx1c2VFZmZlY3Q6YU4sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7bj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCxhRCg0MTk0MzA4LDQsYVUuYmluZChudWxsLHQsZSksbil9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBhRCg0MTk0MzA4LDQsZSx0KX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKGUsdCl7YUQoNCwyLGUsdCl9LHVzZU1lbW86ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcigpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9ZSgpO2lmKG9KKXtlaCghMCk7dHJ5e2UoKX1maW5hbGx5e2VoKCExKX19cmV0dXJuIG4ubWVtb2l6ZWRTdGF0ZT1bcix0XSxyfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1hcigpO2lmKHZvaWQgMCE9PW4pe3ZhciBvPW4odCk7aWYob0ope2VoKCEwKTt0cnl7bih0KX1maW5hbGx5e2VoKCExKX19fWVsc2Ugbz10O3JldHVybiByLm1lbW9pemVkU3RhdGU9ci5iYXNlU3RhdGU9byxyLnF1ZXVlPWU9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplLGxhc3RSZW5kZXJlZFN0YXRlOm99LGU9ZS5kaXNwYXRjaD1hNC5iaW5kKG51bGwsb1ksZSksW3IubWVtb2l6ZWRTdGF0ZSxlXX0sdXNlUmVmOmZ1bmN0aW9uKGUpe3JldHVybiBhcigpLm1lbW9pemVkU3RhdGU9ZT17Y3VycmVudDplfX0sdXNlU3RhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9KGU9YWIoZSkpLnF1ZXVlLG49YTUuYmluZChudWxsLG9ZLHQpO3JldHVybiB0LmRpc3BhdGNoPW4sW2UubWVtb2l6ZWRTdGF0ZSxuXX0sdXNlRGVidWdWYWx1ZTphcSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEkKGFyKCksZSx0KX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWFiKCExKTtyZXR1cm4gZT1hWS5iaW5kKG51bGwsb1ksZS5xdWV1ZSwhMCwhMSksYXIoKS5tZW1vaXplZFN0YXRlPWUsWyExLGVdfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9b1ksbz1hcigpO2lmKHJqKXtpZih2b2lkIDA9PT1uKXRocm93IEVycm9yKGwoNDA3KSk7bj1uKCl9ZWxzZXtpZihuPXQoKSxudWxsPT09bEwpdGhyb3cgRXJyb3IobCgzNDkpKTswIT0oMTI0JmxSKXx8YWgocix0LG4pfW8ubWVtb2l6ZWRTdGF0ZT1uO3ZhciBhPXt2YWx1ZTpuLGdldFNuYXBzaG90OnR9O3JldHVybiBvLnF1ZXVlPWEsYU4oYWcuYmluZChudWxsLHIsYSxlKSxbZV0pLHIuZmxhZ3N8PTIwNDgsYVQoOSx7ZGVzdHJveTp2b2lkIDB9LGFtLmJpbmQobnVsbCxyLGEsbix0KSxudWxsKSxufSx1c2VJZDpmdW5jdGlvbigpe3ZhciBlPWFyKCksdD1sTC5pZGVudGlmaWVyUHJlZml4O2lmKHJqKXt2YXIgbj1yYixyPXJ2O3Q9XCJfXCIrdCtcIlJfXCIrKG49KHImfigxPDwzMi1lbShyKS0xKSkudG9TdHJpbmcoMzIpK24pLDA8KG49bzArKykmJih0Kz1cIkhcIituLnRvU3RyaW5nKDMyKSksdCs9XCJfXCJ9ZWxzZSB0PVwiX1wiK3QrXCJyX1wiKyhuPW80KyspLnRvU3RyaW5nKDMyKStcIl9cIjtyZXR1cm4gZS5tZW1vaXplZFN0YXRlPXR9LHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOmFKLHVzZUZvcm1TdGF0ZTphUyx1c2VBY3Rpb25TdGF0ZTphUyx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKGUpe3ZhciB0PWFyKCk7dC5tZW1vaXplZFN0YXRlPXQuYmFzZVN0YXRlPWU7dmFyIG49e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpudWxsLGxhc3RSZW5kZXJlZFN0YXRlOm51bGx9O3JldHVybiB0LnF1ZXVlPW4sdD1hNi5iaW5kKG51bGwsb1ksITAsbiksbi5kaXNwYXRjaD10LFtlLHRdfSx1c2VNZW1vQ2FjaGU6YXMsdXNlQ2FjaGVSZWZyZXNoOmZ1bmN0aW9uKCl7cmV0dXJuIGFyKCkubWVtb2l6ZWRTdGF0ZT1hMi5iaW5kKG51bGwsb1kpfX0saXI9e3JlYWRDb250ZXh0OnJZLHVzZTphbCx1c2VDYWxsYmFjazphSCx1c2VDb250ZXh0OnJZLHVzZUVmZmVjdDphUix1c2VJbXBlcmF0aXZlSGFuZGxlOmFGLHVzZUluc2VydGlvbkVmZmVjdDphTSx1c2VMYXlvdXRFZmZlY3Q6YVosdXNlTWVtbzphVix1c2VSZWR1Y2VyOmF1LHVzZVJlZjpheix1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBhdShhYyl9LHVzZURlYnVnVmFsdWU6YXEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBhVyhhbygpLG9LLm1lbW9pemVkU3RhdGUsZSx0KX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWF1KGFjKVswXSx0PWFvKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bXCJib29sZWFuXCI9PXR5cGVvZiBlP2U6YWkoZSksdF19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmFwLHVzZUlkOmEwLHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOmFKLHVzZUZvcm1TdGF0ZTphTyx1c2VBY3Rpb25TdGF0ZTphTyx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFBKGFvKCksb0ssZSx0KX0sdXNlTWVtb0NhY2hlOmFzLHVzZUNhY2hlUmVmcmVzaDphMX0saW89e3JlYWRDb250ZXh0OnJZLHVzZTphbCx1c2VDYWxsYmFjazphSCx1c2VDb250ZXh0OnJZLHVzZUVmZmVjdDphUix1c2VJbXBlcmF0aXZlSGFuZGxlOmFGLHVzZUluc2VydGlvbkVmZmVjdDphTSx1c2VMYXlvdXRFZmZlY3Q6YVosdXNlTWVtbzphVix1c2VSZWR1Y2VyOmFmLHVzZVJlZjpheix1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBhZihhYyl9LHVzZURlYnVnVmFsdWU6YXEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWFvKCk7cmV0dXJuIG51bGw9PT1vSz9hJChuLGUsdCk6YVcobixvSy5tZW1vaXplZFN0YXRlLGUsdCl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1hZihhYylbMF0sdD1hbygpLm1lbW9pemVkU3RhdGU7cmV0dXJuW1wiYm9vbGVhblwiPT10eXBlb2YgZT9lOmFpKGUpLHRdfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTphcCx1c2VJZDphMCx1c2VIb3N0VHJhbnNpdGlvblN0YXR1czphSix1c2VGb3JtU3RhdGU6YUksdXNlQWN0aW9uU3RhdGU6YUksdXNlT3B0aW1pc3RpYzpmdW5jdGlvbihlLHQpe3ZhciBuPWFvKCk7cmV0dXJuIG51bGwhPT1vSz9hQShuLG9LLGUsdCk6KG4uYmFzZVN0YXRlPWUsW2Usbi5xdWV1ZS5kaXNwYXRjaF0pfSx1c2VNZW1vQ2FjaGU6YXMsdXNlQ2FjaGVSZWZyZXNoOmExfTtmdW5jdGlvbiBpYShlLHQsbixyKXtuPW51bGw9PShuPW4ocix0PWUubWVtb2l6ZWRTdGF0ZSkpP3Q6Zih7fSx0LG4pLGUubWVtb2l6ZWRTdGF0ZT1uLDA9PT1lLmxhbmVzJiYoZS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9bil9dmFyIGlpPXtlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIHI9c3IoKSxvPW9fKHIpO28ucGF5bG9hZD10LG51bGwhPW4mJihvLmNhbGxiYWNrPW4pLG51bGwhPT0odD1vayhlLG8scikpJiYoc2EodCxlLHIpLG9FKHQsZSxyKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIHI9c3IoKSxvPW9fKHIpO28udGFnPTEsby5wYXlsb2FkPXQsbnVsbCE9biYmKG8uY2FsbGJhY2s9biksbnVsbCE9PSh0PW9rKGUsbyxyKSkmJihzYSh0LGUsciksb0UodCxlLHIpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgbj1zcigpLHI9b18obik7ci50YWc9MixudWxsIT10JiYoci5jYWxsYmFjaz10KSxudWxsIT09KHQ9b2soZSxyLG4pKSYmKHNhKHQsZSxuKSxvRSh0LGUsbikpfX07ZnVuY3Rpb24gaWwoZSx0LG4scixvLGEsaSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YoZT1lLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKHIsYSxpKTohdC5wcm90b3R5cGV8fCF0LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudHx8IW5FKG4scil8fCFuRShvLGEpfWZ1bmN0aW9uIGlzKGUsdCxuLHIpe2U9dC5zdGF0ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJnQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSx0LnN0YXRlIT09ZSYmaWkuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0LHQuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gaWMoZSx0KXt2YXIgbj10O2lmKFwicmVmXCJpbiB0KWZvcih2YXIgciBpbiBuPXt9LHQpXCJyZWZcIiE9PXImJihuW3JdPXRbcl0pO2lmKGU9ZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBvIGluIG49PT10JiYobj1mKHt9LG4pKSxlKXZvaWQgMD09PW5bb10mJihuW29dPWVbb10pO3JldHVybiBufWZ1bmN0aW9uIGl1KGUpe25RKGUpfWZ1bmN0aW9uIGlkKGUpe2NvbnNvbGUuZXJyb3IoZSl9ZnVuY3Rpb24gaXAoZSl7blEoZSl9ZnVuY3Rpb24gaWgoZSx0KXt0cnl7KDAsZS5vblVuY2F1Z2h0RXJyb3IpKHQudmFsdWUse2NvbXBvbmVudFN0YWNrOnQuc3RhY2t9KX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfX1mdW5jdGlvbiBpbShlLHQsbil7dHJ5eygwLGUub25DYXVnaHRFcnJvcikobi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bi5zdGFjayxlcnJvckJvdW5kYXJ5OjE9PT10LnRhZz90LnN0YXRlTm9kZTpudWxsfSl9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX19ZnVuY3Rpb24gaWcoZSx0LG4pe3JldHVybihuPW9fKG4pKS50YWc9MyxuLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH0sbi5jYWxsYmFjaz1mdW5jdGlvbigpe2loKGUsdCl9LG59ZnVuY3Rpb24gaXkoZSl7cmV0dXJuKGU9b18oZSkpLnRhZz0zLGV9ZnVuY3Rpb24gaXYoZSx0LG4scil7dmFyIG89bi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvKXt2YXIgYT1yLnZhbHVlO2UucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBvKGEpfSxlLmNhbGxiYWNrPWZ1bmN0aW9uKCl7aW0odCxuLHIpfX12YXIgaT1uLnN0YXRlTm9kZTtudWxsIT09aSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb21wb25lbnREaWRDYXRjaCYmKGUuY2FsbGJhY2s9ZnVuY3Rpb24oKXtpbSh0LG4sciksXCJmdW5jdGlvblwiIT10eXBlb2YgbyYmKG51bGw9PT1sND9sND1uZXcgU2V0KFt0aGlzXSk6bDQuYWRkKHRoaXMpKTt2YXIgZT1yLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goci52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWU/ZTpcIlwifSl9KX12YXIgaWI9RXJyb3IobCg0NjEpKSxpQT0hMTtmdW5jdGlvbiBpeChlLHQsbixyKXt0LmNoaWxkPW51bGw9PT1lP29BKHQsbnVsbCxuLHIpOm9iKHQsZS5jaGlsZCxuLHIpfWZ1bmN0aW9uIGl3KGUsdCxuLHIsbyl7bj1uLnJlbmRlcjt2YXIgYT10LnJlZjtpZihcInJlZlwiaW4gcil7dmFyIGk9e307Zm9yKHZhciBsIGluIHIpXCJyZWZcIiE9PWwmJihpW2xdPXJbbF0pfWVsc2UgaT1yO3JldHVybihyVyh0KSxyPW82KGUsdCxuLGksYSxvKSxsPWFlKCksbnVsbD09PWV8fGlBKT8ocmomJmwmJnJ3KHQpLHQuZmxhZ3N8PTEsaXgoZSx0LHIsbyksdC5jaGlsZCk6KGF0KGUsdCxvKSxpVihlLHQsbykpfWZ1bmN0aW9uIGlDKGUsdCxuLHIsbyl7aWYobnVsbD09PWUpe3ZhciBhPW4udHlwZTtyZXR1cm5cImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHxydChhKXx8dm9pZCAwIT09YS5kZWZhdWx0UHJvcHN8fG51bGwhPT1uLmNvbXBhcmU/KChlPXJvKG4udHlwZSxudWxsLHIsdCx0Lm1vZGUsbykpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSk6KHQudGFnPTE1LHQudHlwZT1hLGlfKGUsdCxhLHIsbykpfWlmKGE9ZS5jaGlsZCwhaSQoZSxvKSl7dmFyIGk9YS5tZW1vaXplZFByb3BzO2lmKChuPW51bGwhPT0obj1uLmNvbXBhcmUpP246bkUpKGkscikmJmUucmVmPT09dC5yZWYpcmV0dXJuIGlWKGUsdCxvKX1yZXR1cm4gdC5mbGFnc3w9MSwoZT1ybihhLHIpKS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWV9ZnVuY3Rpb24gaV8oZSx0LG4scixvKXtpZihudWxsIT09ZSl7dmFyIGE9ZS5tZW1vaXplZFByb3BzO2lmKG5FKGEscikmJmUucmVmPT09dC5yZWYpaWYoaUE9ITEsdC5wZW5kaW5nUHJvcHM9cj1hLCFpJChlLG8pKXJldHVybiB0LmxhbmVzPWUubGFuZXMsaVYoZSx0LG8pO2Vsc2UgMCE9KDEzMTA3MiZlLmZsYWdzKSYmKGlBPSEwKX1yZXR1cm4gaVAoZSx0LG4scixvKX1mdW5jdGlvbiBpayhlLHQsbixyKXt2YXIgbz1yLmNoaWxkcmVuLGE9bnVsbCE9PWU/ZS5tZW1vaXplZFN0YXRlOm51bGw7aWYobnVsbD09PWUmJm51bGw9PT10LnN0YXRlTm9kZSYmKHQuc3RhdGVOb2RlPXtfdmlzaWJpbGl0eToxLF9wZW5kaW5nTWFya2VyczpudWxsLF9yZXRyeUNhY2hlOm51bGwsX3RyYW5zaXRpb25zOm51bGx9KSxcImhpZGRlblwiPT09ci5tb2RlKXtpZigwIT0oMTI4JnQuZmxhZ3MpKXtpZihyPW51bGwhPT1hP2EuYmFzZUxhbmVzfG46bixudWxsIT09ZSl7Zm9yKGE9MCxvPXQuY2hpbGQ9ZS5jaGlsZDtudWxsIT09bzspYT1hfG8ubGFuZXN8by5jaGlsZExhbmVzLG89by5zaWJsaW5nO3QuY2hpbGRMYW5lcz1hJn5yfWVsc2UgdC5jaGlsZExhbmVzPTAsdC5jaGlsZD1udWxsO3JldHVybiBpaihlLHQscixuKX1pZigwPT0oMHgyMDAwMDAwMCZuKSlyZXR1cm4gdC5sYW5lcz10LmNoaWxkTGFuZXM9MHgyMDAwMDAwMCxpaihlLHQsbnVsbCE9PWE/YS5iYXNlTGFuZXN8bjpuLG4pO3QubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGx9LG51bGwhPT1lJiZvdCh0LG51bGwhPT1hP2EuY2FjaGVQb29sOm51bGwpLG51bGwhPT1hP29EKHQsYSk6b0woKSxvRih0KX1lbHNlIG51bGwhPT1hPyhvdCh0LGEuY2FjaGVQb29sKSxvRCh0LGEpLG9xKHQpLHQubWVtb2l6ZWRTdGF0ZT1udWxsKToobnVsbCE9PWUmJm90KHQsbnVsbCksb0woKSxvcSh0KSk7cmV0dXJuIGl4KGUsdCxvLG4pLHQuY2hpbGR9ZnVuY3Rpb24gaUUoZSx0KXtyZXR1cm4gbnVsbCE9PWUmJjIyPT09ZS50YWd8fG51bGwhPT10LnN0YXRlTm9kZXx8KHQuc3RhdGVOb2RlPXtfdmlzaWJpbGl0eToxLF9wZW5kaW5nTWFya2VyczpudWxsLF9yZXRyeUNhY2hlOm51bGwsX3RyYW5zaXRpb25zOm51bGx9KSx0LnNpYmxpbmd9ZnVuY3Rpb24gaWooZSx0LG4scil7dmFyIG89b2UoKTtyZXR1cm4gdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6bixjYWNoZVBvb2w6bz1udWxsPT09bz9udWxsOntwYXJlbnQ6cjAuX2N1cnJlbnRWYWx1ZSxwb29sOm99fSxudWxsIT09ZSYmb3QodCxudWxsKSxvTCgpLG9GKHQpLG51bGwhPT1lJiZyVihlLHQsciwhMCksbnVsbH1mdW5jdGlvbiBpUyhlLHQpe3JldHVybih0PWlaKHttb2RlOnQubW9kZSxjaGlsZHJlbjp0LmNoaWxkcmVufSxlLm1vZGUpKS5yZWY9ZS5yZWYsZS5jaGlsZD10LHQucmV0dXJuPWUsdH1mdW5jdGlvbiBpTyhlLHQsbil7cmV0dXJuIG9iKHQsZS5jaGlsZCxudWxsLG4pLGU9aVModCx0LnBlbmRpbmdQcm9wcyksZS5mbGFnc3w9MixvSCh0KSx0Lm1lbW9pemVkU3RhdGU9bnVsbCxlfWZ1bmN0aW9uIGlCKGUsdCl7dmFyIG49dC5yZWY7aWYobnVsbD09PW4pbnVsbCE9PWUmJm51bGwhPT1lLnJlZiYmKHQuZmxhZ3N8PTQxOTQ4MTYpO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgbiYmXCJvYmplY3RcIiE9dHlwZW9mIG4pdGhyb3cgRXJyb3IobCgyODQpKTsobnVsbD09PWV8fGUucmVmIT09bikmJih0LmZsYWdzfD00MTk0ODE2KX19ZnVuY3Rpb24gaVAoZSx0LG4scixvKXtyZXR1cm4oclcodCksbj1vNihlLHQsbixyLHZvaWQgMCxvKSxyPWFlKCksbnVsbD09PWV8fGlBKT8ocmomJnImJnJ3KHQpLHQuZmxhZ3N8PTEsaXgoZSx0LG4sbyksdC5jaGlsZCk6KGF0KGUsdCxvKSxpVihlLHQsbykpfWZ1bmN0aW9uIGlJKGUsdCxuLHIsbyxhKXtyZXR1cm4oclcodCksdC51cGRhdGVRdWV1ZT1udWxsLG49bzgodCxyLG4sbyksbzkoZSkscj1hZSgpLG51bGw9PT1lfHxpQSk/KHJqJiZyJiZydyh0KSx0LmZsYWdzfD0xLGl4KGUsdCxuLGEpLHQuY2hpbGQpOihhdChlLHQsYSksaVYoZSx0LGEpKX1mdW5jdGlvbiBpVChlLHQsbixyLG8pe2lmKHJXKHQpLG51bGw9PT10LnN0YXRlTm9kZSl7dmFyIGE9bjgsaT1uLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PXR5cGVvZiBpJiZudWxsIT09aSYmKGE9clkoaSkpLHQubWVtb2l6ZWRTdGF0ZT1udWxsIT09KGE9bmV3IG4ocixhKSkuc3RhdGUmJnZvaWQgMCE9PWEuc3RhdGU/YS5zdGF0ZTpudWxsLGEudXBkYXRlcj1paSx0LnN0YXRlTm9kZT1hLGEuX3JlYWN0SW50ZXJuYWxzPXQsKGE9dC5zdGF0ZU5vZGUpLnByb3BzPXIsYS5zdGF0ZT10Lm1lbW9pemVkU3RhdGUsYS5yZWZzPXt9LG93KHQpLGk9bi5jb250ZXh0VHlwZSxhLmNvbnRleHQ9XCJvYmplY3RcIj09dHlwZW9mIGkmJm51bGwhPT1pP3JZKGkpOm44LGEuc3RhdGU9dC5tZW1vaXplZFN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mKGk9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoaWEodCxuLGksciksYS5zdGF0ZT10Lm1lbW9pemVkU3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50fHwoaT1hLnN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50JiZhLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksaSE9PWEuc3RhdGUmJmlpLmVucXVldWVSZXBsYWNlU3RhdGUoYSxhLnN0YXRlLG51bGwpLG9CKHQscixhLG8pLG9PKCksYS5zdGF0ZT10Lm1lbW9pemVkU3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSxyPSEwfWVsc2UgaWYobnVsbD09PWUpe2E9dC5zdGF0ZU5vZGU7dmFyIGw9dC5tZW1vaXplZFByb3BzLHM9aWMobixsKTthLnByb3BzPXM7dmFyIGM9YS5jb250ZXh0LHU9bi5jb250ZXh0VHlwZTtpPW44LFwib2JqZWN0XCI9PXR5cGVvZiB1JiZudWxsIT09dSYmKGk9clkodSkpO3ZhciBkPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO3U9XCJmdW5jdGlvblwiPT10eXBlb2YgZHx8XCJmdW5jdGlvblwiPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSxsPXQucGVuZGluZ1Byb3BzIT09bCx1fHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChsfHxjIT09aSkmJmlzKHQsYSxyLGkpLG94PSExO3ZhciBmPXQubWVtb2l6ZWRTdGF0ZTthLnN0YXRlPWYsb0IodCxyLGEsbyksb08oKSxjPXQubWVtb2l6ZWRTdGF0ZSxsfHxmIT09Y3x8b3g/KFwiZnVuY3Rpb25cIj09dHlwZW9mIGQmJihpYSh0LG4sZCxyKSxjPXQubWVtb2l6ZWRTdGF0ZSksKHM9b3h8fGlsKHQsbixzLHIsZixjLGkpKT8odXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50JiZhLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSk6KFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSx0Lm1lbW9pemVkUHJvcHM9cix0Lm1lbW9pemVkU3RhdGU9YyksYS5wcm9wcz1yLGEuc3RhdGU9YyxhLmNvbnRleHQ9aSxyPXMpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCkscj0hMSl9ZWxzZXthPXQuc3RhdGVOb2RlLG9DKGUsdCksdT1pYyhuLGk9dC5tZW1vaXplZFByb3BzKSxhLnByb3BzPXUsZD10LnBlbmRpbmdQcm9wcyxmPWEuY29udGV4dCxjPW4uY29udGV4dFR5cGUscz1uOCxcIm9iamVjdFwiPT10eXBlb2YgYyYmbnVsbCE9PWMmJihzPXJZKGMpKSwoYz1cImZ1bmN0aW9uXCI9PXR5cGVvZihsPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKXx8XCJmdW5jdGlvblwiPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGkhPT1kfHxmIT09cykmJmlzKHQsYSxyLHMpLG94PSExLGY9dC5tZW1vaXplZFN0YXRlLGEuc3RhdGU9ZixvQih0LHIsYSxvKSxvTygpO3ZhciBwPXQubWVtb2l6ZWRTdGF0ZTtpIT09ZHx8ZiE9PXB8fG94fHxudWxsIT09ZSYmbnVsbCE9PWUuZGVwZW5kZW5jaWVzJiZyJChlLmRlcGVuZGVuY2llcyk/KFwiZnVuY3Rpb25cIj09dHlwZW9mIGwmJihpYSh0LG4sbCxyKSxwPXQubWVtb2l6ZWRTdGF0ZSksKHU9b3h8fGlsKHQsbix1LHIsZixwLHMpfHxudWxsIT09ZSYmbnVsbCE9PWUuZGVwZW5kZW5jaWVzJiZyJChlLmRlcGVuZGVuY2llcykpPyhjfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudFdpbGxVcGRhdGUmJmEuY29tcG9uZW50V2lsbFVwZGF0ZShyLHAscyksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShyLHAscykpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkVXBkYXRlJiYodC5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKHQuZmxhZ3N8PTEwMjQpKTooXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGV8fGk9PT1lLm1lbW9pemVkUHJvcHMmJmY9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxpPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPXApLGEucHJvcHM9cixhLnN0YXRlPXAsYS5jb250ZXh0PXMscj11KTooXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGV8fGk9PT1lLm1lbW9pemVkUHJvcHMmJmY9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxpPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCkscj0hMSl9cmV0dXJuIGE9cixpQihlLHQpLHI9MCE9KDEyOCZ0LmZsYWdzKSxhfHxyPyhhPXQuc3RhdGVOb2RlLG49ciYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDphLnJlbmRlcigpLHQuZmxhZ3N8PTEsbnVsbCE9PWUmJnI/KHQuY2hpbGQ9b2IodCxlLmNoaWxkLG51bGwsbyksdC5jaGlsZD1vYih0LG51bGwsbixvKSk6aXgoZSx0LG4sbyksdC5tZW1vaXplZFN0YXRlPWEuc3RhdGUsZT10LmNoaWxkKTplPWlWKGUsdCxvKSxlfWZ1bmN0aW9uIGl6KGUsdCxuLHIpe3JldHVybiByRCgpLHQuZmxhZ3N8PTI1NixpeChlLHQsbixyKSx0LmNoaWxkfXZhciBpRD17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjAsaHlkcmF0aW9uRXJyb3JzOm51bGx9O2Z1bmN0aW9uIGlMKGUpe3JldHVybntiYXNlTGFuZXM6ZSxjYWNoZVBvb2w6b24oKX19ZnVuY3Rpb24gaU4oZSx0LG4pe3JldHVybiBlPW51bGwhPT1lP2UuY2hpbGRMYW5lcyZ+bjowLHQmJihlfD1sSyksZX1mdW5jdGlvbiBpUihlLHQsbil7dmFyIHIsbz10LnBlbmRpbmdQcm9wcyxhPSExLGk9MCE9KDEyOCZ0LmZsYWdzKTtpZigocj1pKXx8KHI9KG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlKSYmMCE9KDImb1YuY3VycmVudCkpLHImJihhPSEwLHQuZmxhZ3MmPS0xMjkpLHI9MCE9KDMyJnQuZmxhZ3MpLHQuZmxhZ3MmPS0zMyxudWxsPT09ZSl7aWYocmope2lmKGE/b1oodCk6b3EodCksKGU9ckUpP251bGwhPT0oZT1udWxsIT09KGU9Y2ooZSxyTykpJiZcIiZcIiE9PWUuZGF0YT9lOm51bGwpJiYodC5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmUsdHJlZUNvbnRleHQ6bnVsbCE9PXJ5P3tpZDpydixvdmVyZmxvdzpyYn06bnVsbCxyZXRyeUxhbmU6MHgyMDAwMDAwMCxoeWRyYXRpb25FcnJvcnM6bnVsbH0sKG49cmwoZSkpLnJldHVybj10LHQuY2hpbGQ9bixyaz10LHJFPW51bGwpOmU9bnVsbCxudWxsPT09ZSl0aHJvdyByUCh0KTtyZXR1cm4gY08oZSk/dC5sYW5lcz0zMjp0LmxhbmVzPTB4MjAwMDAwMDAsbnVsbH12YXIgcz1vLmNoaWxkcmVuO3JldHVybihvPW8uZmFsbGJhY2ssYSk/KG9xKHQpLHM9aVooe21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpzfSxhPXQubW9kZSksbz1yYShvLGEsbixudWxsKSxzLnJldHVybj10LG8ucmV0dXJuPXQscy5zaWJsaW5nPW8sdC5jaGlsZD1zLChvPXQuY2hpbGQpLm1lbW9pemVkU3RhdGU9aUwobiksby5jaGlsZExhbmVzPWlOKGUscixuKSx0Lm1lbW9pemVkU3RhdGU9aUQsaUUobnVsbCxvKSk6KG9aKHQpLGlNKHQscykpfXZhciBjPWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmbnVsbCE9PShzPWMuZGVoeWRyYXRlZCkpe2lmKGkpMjU2JnQuZmxhZ3M/KG9aKHQpLHQuZmxhZ3MmPS0yNTcsdD1pVShlLHQsbikpOm51bGwhPT10Lm1lbW9pemVkU3RhdGU/KG9xKHQpLHQuY2hpbGQ9ZS5jaGlsZCx0LmZsYWdzfD0xMjgsdD1udWxsKToob3EodCkscz1vLmZhbGxiYWNrLGE9dC5tb2RlLG89aVooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46by5jaGlsZHJlbn0sYSkscz1yYShzLGEsbixudWxsKSxzLmZsYWdzfD0yLG8ucmV0dXJuPXQscy5yZXR1cm49dCxvLnNpYmxpbmc9cyx0LmNoaWxkPW8sb2IodCxlLmNoaWxkLG51bGwsbiksKG89dC5jaGlsZCkubWVtb2l6ZWRTdGF0ZT1pTChuKSxvLmNoaWxkTGFuZXM9aU4oZSxyLG4pLHQubWVtb2l6ZWRTdGF0ZT1pRCx0PWlFKG51bGwsbykpO2Vsc2UgaWYob1oodCksY08ocykpe2lmKHI9cy5uZXh0U2libGluZyYmcy5uZXh0U2libGluZy5kYXRhc2V0KXZhciB1PXIuZGdzdDtyPXUsKG89RXJyb3IobCg0MTkpKSkuc3RhY2s9XCJcIixvLmRpZ2VzdD1yLHJOKHt2YWx1ZTpvLHNvdXJjZTpudWxsLHN0YWNrOm51bGx9KSx0PWlVKGUsdCxuKX1lbHNlIGlmKGlBfHxyVihlLHQsbiwhMSkscj0wIT0obiZlLmNoaWxkTGFuZXMpLGlBfHxyKXtpZihudWxsIT09KHI9bEwpJiYwIT09KG89ZU8ocixuKSkmJm8hPT1jLnJldHJ5TGFuZSl0aHJvdyBjLnJldHJ5TGFuZT1vLG4zKGUsbyksc2EocixlLG8pLGliO2NTKHMpfHxzZygpLHQ9aVUoZSx0LG4pfWVsc2UgY1Mocyk/KHQuZmxhZ3N8PTE5Mix0LmNoaWxkPWUuY2hpbGQsdD1udWxsKTooZT1jLnRyZWVDb250ZXh0LHJFPWNCKHMubmV4dFNpYmxpbmcpLHJrPXQscmo9ITAsclM9bnVsbCxyTz0hMSxudWxsIT09ZSYmcl8odCxlKSx0PWlNKHQsby5jaGlsZHJlbiksdC5mbGFnc3w9NDA5Nik7cmV0dXJuIHR9cmV0dXJuIGE/KG9xKHQpLHM9by5mYWxsYmFjayxhPXQubW9kZSx1PShjPWUuY2hpbGQpLnNpYmxpbmcsKG89cm4oYyx7bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOm8uY2hpbGRyZW59KSkuc3VidHJlZUZsYWdzPTB4M2UwMDAwMCZjLnN1YnRyZWVGbGFncyxudWxsIT09dT9zPXJuKHUscyk6KHM9cmEocyxhLG4sbnVsbCkscy5mbGFnc3w9Mikscy5yZXR1cm49dCxvLnJldHVybj10LG8uc2libGluZz1zLHQuY2hpbGQ9byxpRShudWxsLG8pLG89dC5jaGlsZCxudWxsPT09KHM9ZS5jaGlsZC5tZW1vaXplZFN0YXRlKT9zPWlMKG4pOihudWxsIT09KGE9cy5jYWNoZVBvb2wpPyhjPXIwLl9jdXJyZW50VmFsdWUsYT1hLnBhcmVudCE9PWM/e3BhcmVudDpjLHBvb2w6Y306YSk6YT1vbigpLHM9e2Jhc2VMYW5lczpzLmJhc2VMYW5lc3xuLGNhY2hlUG9vbDphfSksby5tZW1vaXplZFN0YXRlPXMsby5jaGlsZExhbmVzPWlOKGUscixuKSx0Lm1lbW9pemVkU3RhdGU9aUQsaUUoZS5jaGlsZCxvKSk6KG9aKHQpLGU9KG49ZS5jaGlsZCkuc2libGluZywobj1ybihuLHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOm8uY2hpbGRyZW59KSkucmV0dXJuPXQsbi5zaWJsaW5nPW51bGwsbnVsbCE9PWUmJihudWxsPT09KHI9dC5kZWxldGlvbnMpPyh0LmRlbGV0aW9ucz1bZV0sdC5mbGFnc3w9MTYpOnIucHVzaChlKSksdC5jaGlsZD1uLHQubWVtb2l6ZWRTdGF0ZT1udWxsLG4pfWZ1bmN0aW9uIGlNKGUsdCl7cmV0dXJuKHQ9aVooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46dH0sZS5tb2RlKSkucmV0dXJuPWUsZS5jaGlsZD10fWZ1bmN0aW9uIGlaKGUsdCl7cmV0dXJuKGU9cmUoMjIsZSxudWxsLHQpKS5sYW5lcz0wLGV9ZnVuY3Rpb24gaVUoZSx0LG4pe3JldHVybiBvYih0LGUuY2hpbGQsbnVsbCxuKSxlPWlNKHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pLGUuZmxhZ3N8PTIsdC5tZW1vaXplZFN0YXRlPW51bGwsZX1mdW5jdGlvbiBpRihlLHQsbil7ZS5sYW5lc3w9dDt2YXIgcj1lLmFsdGVybmF0ZTtudWxsIT09ciYmKHIubGFuZXN8PXQpLHJxKGUucmV0dXJuLHQsbil9ZnVuY3Rpb24gaXEoZSx0LG4scixvLGEpe3ZhciBpPWUubWVtb2l6ZWRTdGF0ZTtudWxsPT09aT9lLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOnQscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpyLHRhaWw6bix0YWlsTW9kZTpvLHRyZWVGb3JrQ291bnQ6YX06KGkuaXNCYWNrd2FyZHM9dCxpLnJlbmRlcmluZz1udWxsLGkucmVuZGVyaW5nU3RhcnRUaW1lPTAsaS5sYXN0PXIsaS50YWlsPW4saS50YWlsTW9kZT1vLGkudHJlZUZvcmtDb3VudD1hKX1mdW5jdGlvbiBpSChlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHMsbz1yLnJldmVhbE9yZGVyLGE9ci50YWlsO3I9ci5jaGlsZHJlbjt2YXIgaT1vVi5jdXJyZW50LGw9MCE9KDImaSk7aWYobD8oaT0xJml8Mix0LmZsYWdzfD0xMjgpOmkmPTEsTShvVixpKSxpeChlLHQscixuKSxyPXJqP3JoOjAsIWwmJm51bGwhPT1lJiYwIT0oMTI4JmUuZmxhZ3MpKWU6Zm9yKGU9dC5jaGlsZDtudWxsIT09ZTspe2lmKDEzPT09ZS50YWcpbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmaUYoZSxuLHQpO2Vsc2UgaWYoMTk9PT1lLnRhZylpRihlLG4sdCk7ZWxzZSBpZihudWxsIT09ZS5jaGlsZCl7ZS5jaGlsZC5yZXR1cm49ZSxlPWUuY2hpbGQ7Y29udGludWV9aWYoZT09PXQpYnJlYWs7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxlLnJldHVybj09PXQpYnJlYWsgZTtlPWUucmV0dXJufWUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9c3dpdGNoKG8pe2Nhc2VcImZvcndhcmRzXCI6Zm9yKG89bnVsbCxuPXQuY2hpbGQ7bnVsbCE9PW47KW51bGwhPT0oZT1uLmFsdGVybmF0ZSkmJm51bGw9PT1vJChlKSYmKG89biksbj1uLnNpYmxpbmc7bnVsbD09PShuPW8pPyhvPXQuY2hpbGQsdC5jaGlsZD1udWxsKToobz1uLnNpYmxpbmcsbi5zaWJsaW5nPW51bGwpLGlxKHQsITEsbyxuLGEscik7YnJlYWs7Y2FzZVwiYmFja3dhcmRzXCI6Y2FzZVwidW5zdGFibGVfbGVnYWN5LWJhY2t3YXJkc1wiOmZvcihuPW51bGwsbz10LmNoaWxkLHQuY2hpbGQ9bnVsbDtudWxsIT09bzspe2lmKG51bGwhPT0oZT1vLmFsdGVybmF0ZSkmJm51bGw9PT1vJChlKSl7dC5jaGlsZD1vO2JyZWFrfWU9by5zaWJsaW5nLG8uc2libGluZz1uLG49byxvPWV9aXEodCwhMCxuLG51bGwsYSxyKTticmVhaztjYXNlXCJ0b2dldGhlclwiOmlxKHQsITEsbnVsbCxudWxsLHZvaWQgMCxyKTticmVhaztkZWZhdWx0OnQubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIGlWKGUsdCxuKXtpZihudWxsIT09ZSYmKHQuZGVwZW5kZW5jaWVzPWUuZGVwZW5kZW5jaWVzKSxsJHw9dC5sYW5lcywwPT0obiZ0LmNoaWxkTGFuZXMpKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtlbHNlIGlmKHJWKGUsdCxuLCExKSwwPT0obiZ0LmNoaWxkTGFuZXMpKXJldHVybiBudWxsfWlmKG51bGwhPT1lJiZ0LmNoaWxkIT09ZS5jaGlsZCl0aHJvdyBFcnJvcihsKDE1MykpO2lmKG51bGwhPT10LmNoaWxkKXtmb3Iobj1ybihlPXQuY2hpbGQsZS5wZW5kaW5nUHJvcHMpLHQuY2hpbGQ9bixuLnJldHVybj10O251bGwhPT1lLnNpYmxpbmc7KWU9ZS5zaWJsaW5nLChuPW4uc2libGluZz1ybihlLGUucGVuZGluZ1Byb3BzKSkucmV0dXJuPXQ7bi5zaWJsaW5nPW51bGx9cmV0dXJuIHQuY2hpbGR9ZnVuY3Rpb24gaSQoZSx0KXtyZXR1cm4gMCE9KGUubGFuZXMmdCl8fCEhKG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJnIkKGUpKX1mdW5jdGlvbiBpVyhlLHQsbil7aWYobnVsbCE9PWUpaWYoZS5tZW1vaXplZFByb3BzIT09dC5wZW5kaW5nUHJvcHMpaUE9ITA7ZWxzZXtpZighaSQoZSxuKSYmMD09KDEyOCZ0LmZsYWdzKSlyZXR1cm4gaUE9ITEsZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0LnRhZyl7Y2FzZSAzOkgodCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxyVSh0LHIwLGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksckQoKTticmVhaztjYXNlIDI3OmNhc2UgNTokKHQpO2JyZWFrO2Nhc2UgNDpIKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDpyVSh0LHQudHlwZSx0Lm1lbW9pemVkUHJvcHMudmFsdWUpO2JyZWFrO2Nhc2UgMzE6aWYobnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gdC5mbGFnc3w9MTI4LG9VKHQpLG51bGw7YnJlYWs7Y2FzZSAxMzp2YXIgcj10Lm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXIpe2lmKG51bGwhPT1yLmRlaHlkcmF0ZWQpcmV0dXJuIG9aKHQpLHQuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPShuJnQuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIGlSKGUsdCxuKTtyZXR1cm4gb1oodCksbnVsbCE9PShlPWlWKGUsdCxuKSk/ZS5zaWJsaW5nOm51bGx9b1oodCk7YnJlYWs7Y2FzZSAxOTp2YXIgbz0wIT0oMTI4JmUuZmxhZ3MpO2lmKChyPTAhPShuJnQuY2hpbGRMYW5lcykpfHwoclYoZSx0LG4sITEpLHI9MCE9KG4mdC5jaGlsZExhbmVzKSksbyl7aWYocilyZXR1cm4gaUgoZSx0LG4pO3QuZmxhZ3N8PTEyOH1pZihudWxsIT09KG89dC5tZW1vaXplZFN0YXRlKSYmKG8ucmVuZGVyaW5nPW51bGwsby50YWlsPW51bGwsby5sYXN0RWZmZWN0PW51bGwpLE0ob1Ysb1YuY3VycmVudCksIXIpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSAyMjpyZXR1cm4gdC5sYW5lcz0wLGlrKGUsdCxuLHQucGVuZGluZ1Byb3BzKTtjYXNlIDI0OnJVKHQscjAsZS5tZW1vaXplZFN0YXRlLmNhY2hlKX1yZXR1cm4gaVYoZSx0LG4pfShlLHQsbik7aUE9MCE9KDEzMTA3MiZlLmZsYWdzKX1lbHNlIGlBPSExLHJqJiYwIT0oMTA0ODU3NiZ0LmZsYWdzKSYmcngodCxyaCx0LmluZGV4KTtzd2l0Y2godC5sYW5lcz0wLHQudGFnKXtjYXNlIDE2OmU6e3ZhciByPXQucGVuZGluZ1Byb3BzO2lmKGU9b2ModC5lbGVtZW50VHlwZSksdC50eXBlPWUsXCJmdW5jdGlvblwiPT10eXBlb2YgZSlydChlKT8ocj1pYyhlLHIpLHQudGFnPTEsdD1pVChudWxsLHQsZSxyLG4pKToodC50YWc9MCx0PWlQKG51bGwsdCxlLHIsbikpO2Vsc2V7aWYobnVsbCE9ZSl7dmFyIG89ZS4kJHR5cGVvZjtpZihvPT09eCl7dC50YWc9MTEsdD1pdyhudWxsLHQsZSxyLG4pO2JyZWFrIGV9aWYobz09PV8pe3QudGFnPTE0LHQ9aUMobnVsbCx0LGUscixuKTticmVhayBlfX10aHJvdyBFcnJvcihsKDMwNix0PWZ1bmN0aW9uIGUodCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXJldHVybiB0LiQkdHlwZW9mPT09Qj9udWxsOnQuZGlzcGxheU5hbWV8fHQubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gdDtzd2l0Y2godCl7Y2FzZSBnOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHY6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgeTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIHc6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgQzpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgRTpyZXR1cm5cIkFjdGl2aXR5XCJ9aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpc3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgbTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgQTpyZXR1cm4gdC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCI7Y2FzZSBiOnJldHVybih0Ll9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIHg6dmFyIG49dC5yZW5kZXI7cmV0dXJuKHQ9dC5kaXNwbGF5TmFtZSl8fCh0PVwiXCIhPT0odD1uLmRpc3BsYXlOYW1lfHxuLm5hbWV8fFwiXCIpP1wiRm9yd2FyZFJlZihcIit0K1wiKVwiOlwiRm9yd2FyZFJlZlwiKSx0O2Nhc2UgXzpyZXR1cm4gbnVsbCE9PShuPXQuZGlzcGxheU5hbWV8fG51bGwpP246ZSh0LnR5cGUpfHxcIk1lbW9cIjtjYXNlIGs6bj10Ll9wYXlsb2FkLHQ9dC5faW5pdDt0cnl7cmV0dXJuIGUodChuKSl9Y2F0Y2goZSl7fX1yZXR1cm4gbnVsbH0oZSl8fGUsXCJcIikpfX1yZXR1cm4gdDtjYXNlIDA6cmV0dXJuIGlQKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxOnJldHVybiBvPWljKHI9dC50eXBlLHQucGVuZGluZ1Byb3BzKSxpVChlLHQscixvLG4pO2Nhc2UgMzplOntpZihIKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbnVsbD09PWUpdGhyb3cgRXJyb3IobCgzODcpKTtyPXQucGVuZGluZ1Byb3BzO3ZhciBhPXQubWVtb2l6ZWRTdGF0ZTtvPWEuZWxlbWVudCxvQyhlLHQpLG9CKHQscixudWxsLG4pO3ZhciBpPXQubWVtb2l6ZWRTdGF0ZTtpZihyVSh0LHIwLHI9aS5jYWNoZSksciE9PWEuY2FjaGUmJnJIKHQsW3IwXSxuLCEwKSxvTygpLHI9aS5lbGVtZW50LGEuaXNEZWh5ZHJhdGVkKWlmKGE9e2VsZW1lbnQ6cixpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6aS5jYWNoZX0sdC51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9YSx0Lm1lbW9pemVkU3RhdGU9YSwyNTYmdC5mbGFncyl7dD1peihlLHQscixuKTticmVhayBlfWVsc2UgaWYociE9PW8pe3JOKG89cnUoRXJyb3IobCg0MjQpKSx0KSksdD1peihlLHQscixuKTticmVhayBlfWVsc2UgZm9yKHJFPWNCKChlPTk9PT0oZT10LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKS5ub2RlVHlwZT9lLmJvZHk6XCJIVE1MXCI9PT1lLm5vZGVOYW1lP2Uub3duZXJEb2N1bWVudC5ib2R5OmUpLmZpcnN0Q2hpbGQpLHJrPXQscmo9ITAsclM9bnVsbCxyTz0hMCxuPW9BKHQsbnVsbCxyLG4pLHQuY2hpbGQ9bjtuOyluLmZsYWdzPS0zJm4uZmxhZ3N8NDA5NixuPW4uc2libGluZztlbHNle2lmKHJEKCkscj09PW8pe3Q9aVYoZSx0LG4pO2JyZWFrIGV9aXgoZSx0LHIsbil9dD10LmNoaWxkfXJldHVybiB0O2Nhc2UgMjY6cmV0dXJuIGlCKGUsdCksbnVsbD09PWU/KG49Y0YodC50eXBlLG51bGwsdC5wZW5kaW5nUHJvcHMsbnVsbCkpP3QubWVtb2l6ZWRTdGF0ZT1uOnJqfHwobj10LnR5cGUsZT10LnBlbmRpbmdQcm9wcywocj1jcChGLmN1cnJlbnQpLmNyZWF0ZUVsZW1lbnQobikpW2VEXT10LHJbZUxdPWUsY3UocixuLGUpLGVZKHIpLHQuc3RhdGVOb2RlPXIpOnQubWVtb2l6ZWRTdGF0ZT1jRih0LnR5cGUsZS5tZW1vaXplZFByb3BzLHQucGVuZGluZ1Byb3BzLGUubWVtb2l6ZWRTdGF0ZSksbnVsbDtjYXNlIDI3OnJldHVybiAkKHQpLG51bGw9PT1lJiZyaiYmKHI9dC5zdGF0ZU5vZGU9Y3oodC50eXBlLHQucGVuZGluZ1Byb3BzLEYuY3VycmVudCkscms9dCxyTz0hMCxvPXJFLGNDKHQudHlwZSk/KGNQPW8sckU9Y0Ioci5maXJzdENoaWxkKSk6ckU9byksaXgoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLGlCKGUsdCksbnVsbD09PWUmJih0LmZsYWdzfD00MTk0MzA0KSx0LmNoaWxkO2Nhc2UgNTpyZXR1cm4gbnVsbD09PWUmJnJqJiYoKG89cj1yRSkmJihudWxsIT09KHI9ZnVuY3Rpb24oZSx0LG4scil7Zm9yKDsxPT09ZS5ub2RlVHlwZTspe2lmKGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSl7aWYoIXImJihcIklOUFVUXCIhPT1lLm5vZGVOYW1lfHxcImhpZGRlblwiIT09ZS50eXBlKSlicmVha31lbHNlIGlmKHIpe2lmKCFlW2VGXSlzd2l0Y2godCl7Y2FzZVwibWV0YVwiOmlmKCFlLmhhc0F0dHJpYnV0ZShcIml0ZW1wcm9wXCIpKWJyZWFrO3JldHVybiBlO2Nhc2VcImxpbmtcIjppZihcInN0eWxlc2hlZXRcIj09PShvPWUuZ2V0QXR0cmlidXRlKFwicmVsXCIpKSYmZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXByZWNlZGVuY2VcIil8fG8hPT1uLnJlbHx8ZS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpIT09KG51bGw9PW4uaHJlZnx8XCJcIj09PW4uaHJlZj9udWxsOm4uaHJlZil8fGUuZ2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIikhPT0obnVsbD09bi5jcm9zc09yaWdpbj9udWxsOm4uY3Jvc3NPcmlnaW4pfHxlLmdldEF0dHJpYnV0ZShcInRpdGxlXCIpIT09KG51bGw9PW4udGl0bGU/bnVsbDpuLnRpdGxlKSlicmVhaztyZXR1cm4gZTtjYXNlXCJzdHlsZVwiOmlmKGUuaGFzQXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpKWJyZWFrO3JldHVybiBlO2Nhc2VcInNjcmlwdFwiOmlmKCgobz1lLmdldEF0dHJpYnV0ZShcInNyY1wiKSkhPT0obnVsbD09bi5zcmM/bnVsbDpuLnNyYyl8fGUuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSE9PShudWxsPT1uLnR5cGU/bnVsbDpuLnR5cGUpfHxlLmdldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIpIT09KG51bGw9PW4uY3Jvc3NPcmlnaW4/bnVsbDpuLmNyb3NzT3JpZ2luKSkmJm8mJmUuaGFzQXR0cmlidXRlKFwiYXN5bmNcIikmJiFlLmhhc0F0dHJpYnV0ZShcIml0ZW1wcm9wXCIpKWJyZWFrO3JldHVybiBlO2RlZmF1bHQ6cmV0dXJuIGV9fWVsc2V7aWYoXCJpbnB1dFwiIT09dHx8XCJoaWRkZW5cIiE9PWUudHlwZSlyZXR1cm4gZTt2YXIgbz1udWxsPT1uLm5hbWU/bnVsbDpcIlwiK24ubmFtZTtpZihcImhpZGRlblwiPT09bi50eXBlJiZlLmdldEF0dHJpYnV0ZShcIm5hbWVcIik9PT1vKXJldHVybiBlfWlmKG51bGw9PT0oZT1jQihlLm5leHRTaWJsaW5nKSkpYnJlYWt9cmV0dXJuIG51bGx9KHIsdC50eXBlLHQucGVuZGluZ1Byb3BzLHJPKSk/KHQuc3RhdGVOb2RlPXIscms9dCxyRT1jQihyLmZpcnN0Q2hpbGQpLHJPPSExLG89ITApOm89ITEpLG98fHJQKHQpKSwkKHQpLG89dC50eXBlLGE9dC5wZW5kaW5nUHJvcHMsaT1udWxsIT09ZT9lLm1lbW9pemVkUHJvcHM6bnVsbCxyPWEuY2hpbGRyZW4sY2cobyxhKT9yPW51bGw6bnVsbCE9PWkmJmNnKG8saSkmJih0LmZsYWdzfD0zMiksbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSYmKGM5Ll9jdXJyZW50VmFsdWU9bz1vNihlLHQsbzcsbnVsbCxudWxsLG4pKSxpQihlLHQpLGl4KGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09ZSYmcmomJigoZT1uPXJFKSYmKG51bGwhPT0obj1mdW5jdGlvbihlLHQsbil7aWYoXCJcIj09PXQpcmV0dXJuIG51bGw7Zm9yKDszIT09ZS5ub2RlVHlwZTspaWYoKDEhPT1lLm5vZGVUeXBlfHxcIklOUFVUXCIhPT1lLm5vZGVOYW1lfHxcImhpZGRlblwiIT09ZS50eXBlKSYmIW58fG51bGw9PT0oZT1jQihlLm5leHRTaWJsaW5nKSkpcmV0dXJuIG51bGw7cmV0dXJuIGV9KG4sdC5wZW5kaW5nUHJvcHMsck8pKT8odC5zdGF0ZU5vZGU9bixyaz10LHJFPW51bGwsZT0hMCk6ZT0hMSksZXx8clAodCkpLG51bGw7Y2FzZSAxMzpyZXR1cm4gaVIoZSx0LG4pO2Nhc2UgNDpyZXR1cm4gSCh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHI9dC5wZW5kaW5nUHJvcHMsbnVsbD09PWU/dC5jaGlsZD1vYih0LG51bGwscixuKTppeChlLHQscixuKSx0LmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGl3KGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSA3OnJldHVybiBpeChlLHQsdC5wZW5kaW5nUHJvcHMsbiksdC5jaGlsZDtjYXNlIDg6Y2FzZSAxMjpyZXR1cm4gaXgoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAxMDpyZXR1cm4gcj10LnBlbmRpbmdQcm9wcyxyVSh0LHQudHlwZSxyLnZhbHVlKSxpeChlLHQsci5jaGlsZHJlbixuKSx0LmNoaWxkO2Nhc2UgOTpyZXR1cm4gbz10LnR5cGUuX2NvbnRleHQscj10LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixyVyh0KSxyPXIobz1yWShvKSksdC5mbGFnc3w9MSxpeChlLHQscixuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGlDKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxNTpyZXR1cm4gaV8oZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxuKTtjYXNlIDE5OnJldHVybiBpSChlLHQsbik7Y2FzZSAzMTp2YXIgcz1lLGM9dCx1PW4sZD1jLnBlbmRpbmdQcm9wcyxmPTAhPSgxMjgmYy5mbGFncyk7aWYoYy5mbGFncyY9LTEyOSxudWxsPT09cyl7aWYocmope2lmKFwiaGlkZGVuXCI9PT1kLm1vZGUpcmV0dXJuIHM9aVMoYyxkKSxjLmxhbmVzPTB4MjAwMDAwMDAsaUUobnVsbCxzKTtpZihvVShjKSwocz1yRSk/bnVsbCE9PShzPW51bGwhPT0ocz1jaihzLHJPKSkmJlwiJlwiPT09cy5kYXRhP3M6bnVsbCkmJihjLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6cyx0cmVlQ29udGV4dDpudWxsIT09cnk/e2lkOnJ2LG92ZXJmbG93OnJifTpudWxsLHJldHJ5TGFuZToweDIwMDAwMDAwLGh5ZHJhdGlvbkVycm9yczpudWxsfSwodT1ybChzKSkucmV0dXJuPWMsYy5jaGlsZD11LHJrPWMsckU9bnVsbCk6cz1udWxsLG51bGw9PT1zKXRocm93IHJQKGMpO3JldHVybiBjLmxhbmVzPTB4MjAwMDAwMDAsbnVsbH1yZXR1cm4gaVMoYyxkKX12YXIgcD1zLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXApe3ZhciBoPXAuZGVoeWRyYXRlZDtpZihvVShjKSxmKWlmKDI1NiZjLmZsYWdzKWMuZmxhZ3MmPS0yNTcsYz1pTyhzLGMsdSk7ZWxzZSBpZihudWxsIT09Yy5tZW1vaXplZFN0YXRlKWMuY2hpbGQ9cy5jaGlsZCxjLmZsYWdzfD0xMjgsYz1udWxsO2Vsc2UgdGhyb3cgRXJyb3IobCg1NTgpKTtlbHNlIGlmKGlBfHxyVihzLGMsdSwhMSksZj0wIT0odSZzLmNoaWxkTGFuZXMpLGlBfHxmKXtpZihudWxsIT09KGQ9bEwpJiYwIT09KGg9ZU8oZCx1KSkmJmghPT1wLnJldHJ5TGFuZSl0aHJvdyBwLnJldHJ5TGFuZT1oLG4zKHMsaCksc2EoZCxzLGgpLGliO3NnKCksYz1pTyhzLGMsdSl9ZWxzZSBzPXAudHJlZUNvbnRleHQsckU9Y0IoaC5uZXh0U2libGluZykscms9Yyxyaj0hMCxyUz1udWxsLHJPPSExLG51bGwhPT1zJiZyXyhjLHMpLGM9aVMoYyxkKSxjLmZsYWdzfD00MDk2O3JldHVybiBjfXJldHVybihzPXJuKHMuY2hpbGQse21vZGU6ZC5tb2RlLGNoaWxkcmVuOmQuY2hpbGRyZW59KSkucmVmPWMucmVmLGMuY2hpbGQ9cyxzLnJldHVybj1jLHM7Y2FzZSAyMjpyZXR1cm4gaWsoZSx0LG4sdC5wZW5kaW5nUHJvcHMpO2Nhc2UgMjQ6cmV0dXJuIHJXKHQpLHI9clkocjApLG51bGw9PT1lPyhudWxsPT09KG89b2UoKSkmJihvPWxMLGE9cjEoKSxvLnBvb2xlZENhY2hlPWEsYS5yZWZDb3VudCsrLG51bGwhPT1hJiYoby5wb29sZWRDYWNoZUxhbmVzfD1uKSxvPWEpLHQubWVtb2l6ZWRTdGF0ZT17cGFyZW50OnIsY2FjaGU6b30sb3codCksclUodCxyMCxvKSk6KDAhPShlLmxhbmVzJm4pJiYob0MoZSx0KSxvQih0LG51bGwsbnVsbCxuKSxvTygpKSxvPWUubWVtb2l6ZWRTdGF0ZSxhPXQubWVtb2l6ZWRTdGF0ZSxvLnBhcmVudCE9PXI/KG89e3BhcmVudDpyLGNhY2hlOnJ9LHQubWVtb2l6ZWRTdGF0ZT1vLDA9PT10LmxhbmVzJiYodC5tZW1vaXplZFN0YXRlPXQudXBkYXRlUXVldWUuYmFzZVN0YXRlPW8pLHJVKHQscjAscikpOihyVSh0LHIwLHI9YS5jYWNoZSksciE9PW8uY2FjaGUmJnJIKHQsW3IwXSxuLCEwKSkpLGl4KGUsdCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixuKSx0LmNoaWxkO2Nhc2UgMjk6dGhyb3cgdC5wZW5kaW5nUHJvcHN9dGhyb3cgRXJyb3IobCgxNTYsdC50YWcpKX1mdW5jdGlvbiBpWShlKXtlLmZsYWdzfD00fWZ1bmN0aW9uIGlLKGUsdCxuLHIsbyl7aWYoKHQ9MCE9KDMyJmUubW9kZSkpJiYodD0hMSksdCl7aWYoZS5mbGFnc3w9MHgxMDAwMDAwLCgweDEzZmZmZjQwJm8pPT09bylpZihlLnN0YXRlTm9kZS5jb21wbGV0ZSllLmZsYWdzfD04MTkyO2Vsc2UgaWYoc3AoKSllLmZsYWdzfD04MTkyO2Vsc2UgdGhyb3cgb3U9b2ksb299ZWxzZSBlLmZsYWdzJj0tMHgxMDAwMDAxfWZ1bmN0aW9uIGlYKGUsdCl7aWYoXCJzdHlsZXNoZWV0XCIhPT10LnR5cGV8fDAhPSg0JnQuc3RhdGUubG9hZGluZykpZS5mbGFncyY9LTB4MTAwMDAwMTtlbHNlIGlmKGUuZmxhZ3N8PTB4MTAwMDAwMCwhYzEodCkpaWYoc3AoKSllLmZsYWdzfD04MTkyO2Vsc2UgdGhyb3cgb3U9b2ksb299ZnVuY3Rpb24gaUcoZSx0KXtudWxsIT09dCYmKGUuZmxhZ3N8PTQpLDE2Mzg0JmUuZmxhZ3MmJih0PTIyIT09ZS50YWc/ZV8oKToweDIwMDAwMDAwLGUubGFuZXN8PXQsbFh8PXQpfWZ1bmN0aW9uIGlRKGUsdCl7aWYoIXJqKXN3aXRjaChlLnRhaWxNb2RlKXtjYXNlXCJoaWRkZW5cIjp0PWUudGFpbDtmb3IodmFyIG49bnVsbDtudWxsIT09dDspbnVsbCE9PXQuYWx0ZXJuYXRlJiYobj10KSx0PXQuc2libGluZztudWxsPT09bj9lLnRhaWw9bnVsbDpuLnNpYmxpbmc9bnVsbDticmVhaztjYXNlXCJjb2xsYXBzZWRcIjpuPWUudGFpbDtmb3IodmFyIHI9bnVsbDtudWxsIT09bjspbnVsbCE9PW4uYWx0ZXJuYXRlJiYocj1uKSxuPW4uc2libGluZztudWxsPT09cj90fHxudWxsPT09ZS50YWlsP2UudGFpbD1udWxsOmUudGFpbC5zaWJsaW5nPW51bGw6ci5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIGlKKGUpe3ZhciB0PW51bGwhPT1lLmFsdGVybmF0ZSYmZS5hbHRlcm5hdGUuY2hpbGQ9PT1lLmNoaWxkLG49MCxyPTA7aWYodClmb3IodmFyIG89ZS5jaGlsZDtudWxsIT09bzspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMscnw9MHgzZTAwMDAwJm8uc3VidHJlZUZsYWdzLHJ8PTB4M2UwMDAwMCZvLmZsYWdzLG8ucmV0dXJuPWUsbz1vLnNpYmxpbmc7ZWxzZSBmb3Iobz1lLmNoaWxkO251bGwhPT1vOylufD1vLmxhbmVzfG8uY2hpbGRMYW5lcyxyfD1vLnN1YnRyZWVGbGFncyxyfD1vLmZsYWdzLG8ucmV0dXJuPWUsbz1vLnNpYmxpbmc7cmV0dXJuIGUuc3VidHJlZUZsYWdzfD1yLGUuY2hpbGRMYW5lcz1uLHR9ZnVuY3Rpb24gaTAoZSx0KXtzd2l0Y2gockModCksdC50YWcpe2Nhc2UgMzpyRihyMCksVigpO2JyZWFrO2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6Vyh0KTticmVhaztjYXNlIDQ6VigpO2JyZWFrO2Nhc2UgMzE6bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSYmb0godCk7YnJlYWs7Y2FzZSAxMzpvSCh0KTticmVhaztjYXNlIDE5OlIob1YpO2JyZWFrO2Nhc2UgMTA6ckYodC50eXBlKTticmVhaztjYXNlIDIyOmNhc2UgMjM6b0godCksb04oKSxudWxsIT09ZSYmUihyNyk7YnJlYWs7Y2FzZSAyNDpyRihyMCl9fWZ1bmN0aW9uIGkxKGUsdCl7dHJ5e3ZhciBuPXQudXBkYXRlUXVldWUscj1udWxsIT09bj9uLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09cil7dmFyIG89ci5uZXh0O249bztkb3tpZigobi50YWcmZSk9PT1lKXtyPXZvaWQgMDt2YXIgYT1uLmNyZWF0ZTtuLmluc3QuZGVzdHJveT1yPWEoKX1uPW4ubmV4dH13aGlsZShuIT09byl9fWNhdGNoKGUpe3NQKHQsdC5yZXR1cm4sZSl9fWZ1bmN0aW9uIGkyKGUsdCxuKXt0cnl7dmFyIHI9dC51cGRhdGVRdWV1ZSxvPW51bGwhPT1yP3IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1vKXt2YXIgYT1vLm5leHQ7cj1hO2Rve2lmKChyLnRhZyZlKT09PWUpe3ZhciBpPXIuaW5zdCxsPWkuZGVzdHJveTtpZih2b2lkIDAhPT1sKXtpLmRlc3Ryb3k9dm9pZCAwLG89dDt0cnl7bCgpfWNhdGNoKGUpe3NQKG8sbixlKX19fXI9ci5uZXh0fXdoaWxlKHIhPT1hKX19Y2F0Y2goZSl7c1AodCx0LnJldHVybixlKX19ZnVuY3Rpb24gaTQoZSl7dmFyIHQ9ZS51cGRhdGVRdWV1ZTtpZihudWxsIT09dCl7dmFyIG49ZS5zdGF0ZU5vZGU7dHJ5e29JKHQsbil9Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19fWZ1bmN0aW9uIGk1KGUsdCxuKXtuLnByb3BzPWljKGUudHlwZSxlLm1lbW9pemVkUHJvcHMpLG4uc3RhdGU9ZS5tZW1vaXplZFN0YXRlO3RyeXtuLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2gobil7c1AoZSx0LG4pfX1mdW5jdGlvbiBpMyhlLHQpe3RyeXt2YXIgbj1lLnJlZjtpZihudWxsIT09bil7c3dpdGNoKGUudGFnKXtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnZhciByPWUuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6cj1lLnN0YXRlTm9kZX1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP2UucmVmQ2xlYW51cD1uKHIpOm4uY3VycmVudD1yfX1jYXRjaChuKXtzUChlLHQsbil9fWZ1bmN0aW9uIGk2KGUsdCl7dmFyIG49ZS5yZWYscj1lLnJlZkNsZWFudXA7aWYobnVsbCE9PW4paWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil0cnl7cigpfWNhdGNoKG4pe3NQKGUsdCxuKX1maW5hbGx5e2UucmVmQ2xlYW51cD1udWxsLG51bGwhPShlPWUuYWx0ZXJuYXRlKSYmKGUucmVmQ2xlYW51cD1udWxsKX1lbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pdHJ5e24obnVsbCl9Y2F0Y2gobil7c1AoZSx0LG4pfWVsc2Ugbi5jdXJyZW50PW51bGx9ZnVuY3Rpb24gaTkoZSl7dmFyIHQ9ZS50eXBlLG49ZS5tZW1vaXplZFByb3BzLHI9ZS5zdGF0ZU5vZGU7dHJ5e3N3aXRjaCh0KXtjYXNlXCJidXR0b25cIjpjYXNlXCJpbnB1dFwiOmNhc2VcInNlbGVjdFwiOmNhc2VcInRleHRhcmVhXCI6bi5hdXRvRm9jdXMmJnIuZm9jdXMoKTticmVhaztjYXNlXCJpbWdcIjpuLnNyYz9yLnNyYz1uLnNyYzpuLnNyY1NldCYmKHIuc3Jjc2V0PW4uc3JjU2V0KX19Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19ZnVuY3Rpb24gaTgoZSx0LG4pe3RyeXt2YXIgcj1lLnN0YXRlTm9kZTsoZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHQpe2Nhc2VcImRpdlwiOmNhc2VcInNwYW5cIjpjYXNlXCJzdmdcIjpjYXNlXCJwYXRoXCI6Y2FzZVwiYVwiOmNhc2VcImdcIjpjYXNlXCJwXCI6Y2FzZVwibGlcIjpicmVhaztjYXNlXCJpbnB1dFwiOnZhciBvPW51bGwsYT1udWxsLGk9bnVsbCxzPW51bGwsYz1udWxsLHU9bnVsbCxkPW51bGw7Zm9yKGggaW4gbil7dmFyIGY9bltoXTtpZihuLmhhc093blByb3BlcnR5KGgpJiZudWxsIT1mKXN3aXRjaChoKXtjYXNlXCJjaGVja2VkXCI6Y2FzZVwidmFsdWVcIjpicmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjpjPWY7ZGVmYXVsdDpyLmhhc093blByb3BlcnR5KGgpfHxjcyhlLHQsaCxudWxsLHIsZil9fWZvcih2YXIgcCBpbiByKXt2YXIgaD1yW3BdO2lmKGY9bltwXSxyLmhhc093blByb3BlcnR5KHApJiYobnVsbCE9aHx8bnVsbCE9Zikpc3dpdGNoKHApe2Nhc2VcInR5cGVcIjphPWg7YnJlYWs7Y2FzZVwibmFtZVwiOm89aDticmVhaztjYXNlXCJjaGVja2VkXCI6dT1oO2JyZWFrO2Nhc2VcImRlZmF1bHRDaGVja2VkXCI6ZD1oO2JyZWFrO2Nhc2VcInZhbHVlXCI6aT1oO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOnM9aDticmVhaztjYXNlXCJjaGlsZHJlblwiOmNhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9aCl0aHJvdyBFcnJvcihsKDEzNyx0KSk7YnJlYWs7ZGVmYXVsdDpoIT09ZiYmY3MoZSx0LHAsaCxyLGYpfX10bihlLGkscyxjLHUsZCxhLG8pO3JldHVybjtjYXNlXCJzZWxlY3RcIjpmb3IoYSBpbiBoPWk9cz1wPW51bGwsbilpZihjPW5bYV0sbi5oYXNPd25Qcm9wZXJ0eShhKSYmbnVsbCE9Yylzd2l0Y2goYSl7Y2FzZVwidmFsdWVcIjpicmVhaztjYXNlXCJtdWx0aXBsZVwiOmg9YztkZWZhdWx0OnIuaGFzT3duUHJvcGVydHkoYSl8fGNzKGUsdCxhLG51bGwscixjKX1mb3IobyBpbiByKWlmKGE9cltvXSxjPW5bb10sci5oYXNPd25Qcm9wZXJ0eShvKSYmKG51bGwhPWF8fG51bGwhPWMpKXN3aXRjaChvKXtjYXNlXCJ2YWx1ZVwiOnA9YTticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjpzPWE7YnJlYWs7Y2FzZVwibXVsdGlwbGVcIjppPWE7ZGVmYXVsdDphIT09YyYmY3MoZSx0LG8sYSxyLGMpfXQ9cyxuPWkscj1oLG51bGwhPXA/dGEoZSwhIW4scCwhMSk6ISFyIT0hIW4mJihudWxsIT10P3RhKGUsISFuLHQsITApOnRhKGUsISFuLG4/W106XCJcIiwhMSkpO3JldHVybjtjYXNlXCJ0ZXh0YXJlYVwiOmZvcihzIGluIGg9cD1udWxsLG4paWYobz1uW3NdLG4uaGFzT3duUHJvcGVydHkocykmJm51bGwhPW8mJiFyLmhhc093blByb3BlcnR5KHMpKXN3aXRjaChzKXtjYXNlXCJ2YWx1ZVwiOmNhc2VcImNoaWxkcmVuXCI6YnJlYWs7ZGVmYXVsdDpjcyhlLHQscyxudWxsLHIsbyl9Zm9yKGkgaW4gcilpZihvPXJbaV0sYT1uW2ldLHIuaGFzT3duUHJvcGVydHkoaSkmJihudWxsIT1vfHxudWxsIT1hKSlzd2l0Y2goaSl7Y2FzZVwidmFsdWVcIjpwPW87YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6aD1vO2JyZWFrO2Nhc2VcImNoaWxkcmVuXCI6YnJlYWs7Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1vKXRocm93IEVycm9yKGwoOTEpKTticmVhaztkZWZhdWx0Om8hPT1hJiZjcyhlLHQsaSxvLHIsYSl9dGkoZSxwLGgpO3JldHVybjtjYXNlXCJvcHRpb25cIjpmb3IodmFyIG0gaW4gbilwPW5bbV0sbi5oYXNPd25Qcm9wZXJ0eShtKSYmbnVsbCE9cCYmIXIuaGFzT3duUHJvcGVydHkobSkmJihcInNlbGVjdGVkXCI9PT1tP2Uuc2VsZWN0ZWQ9ITE6Y3MoZSx0LG0sbnVsbCxyLHApKTtmb3IoYyBpbiByKXA9cltjXSxoPW5bY10sci5oYXNPd25Qcm9wZXJ0eShjKSYmcCE9PWgmJihudWxsIT1wfHxudWxsIT1oKSYmKFwic2VsZWN0ZWRcIj09PWM/ZS5zZWxlY3RlZD1wJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBwJiZcInN5bWJvbFwiIT10eXBlb2YgcDpjcyhlLHQsYyxwLHIsaCkpO3JldHVybjtjYXNlXCJpbWdcIjpjYXNlXCJsaW5rXCI6Y2FzZVwiYXJlYVwiOmNhc2VcImJhc2VcIjpjYXNlXCJiclwiOmNhc2VcImNvbFwiOmNhc2VcImVtYmVkXCI6Y2FzZVwiaHJcIjpjYXNlXCJrZXlnZW5cIjpjYXNlXCJtZXRhXCI6Y2FzZVwicGFyYW1cIjpjYXNlXCJzb3VyY2VcIjpjYXNlXCJ0cmFja1wiOmNhc2VcIndiclwiOmNhc2VcIm1lbnVpdGVtXCI6Zm9yKHZhciBnIGluIG4pcD1uW2ddLG4uaGFzT3duUHJvcGVydHkoZykmJm51bGwhPXAmJiFyLmhhc093blByb3BlcnR5KGcpJiZjcyhlLHQsZyxudWxsLHIscCk7Zm9yKHUgaW4gcilpZihwPXJbdV0saD1uW3VdLHIuaGFzT3duUHJvcGVydHkodSkmJnAhPT1oJiYobnVsbCE9cHx8bnVsbCE9aCkpc3dpdGNoKHUpe2Nhc2VcImNoaWxkcmVuXCI6Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1wKXRocm93IEVycm9yKGwoMTM3LHQpKTticmVhaztkZWZhdWx0OmNzKGUsdCx1LHAscixoKX1yZXR1cm47ZGVmYXVsdDppZih0Zih0KSl7Zm9yKHZhciB5IGluIG4pcD1uW3ldLG4uaGFzT3duUHJvcGVydHkoeSkmJnZvaWQgMCE9PXAmJiFyLmhhc093blByb3BlcnR5KHkpJiZjYyhlLHQseSx2b2lkIDAscixwKTtmb3IoZCBpbiByKXA9cltkXSxoPW5bZF0sci5oYXNPd25Qcm9wZXJ0eShkKSYmcCE9PWgmJih2b2lkIDAhPT1wfHx2b2lkIDAhPT1oKSYmY2MoZSx0LGQscCxyLGgpO3JldHVybn19Zm9yKHZhciB2IGluIG4pcD1uW3ZdLG4uaGFzT3duUHJvcGVydHkodikmJm51bGwhPXAmJiFyLmhhc093blByb3BlcnR5KHYpJiZjcyhlLHQsdixudWxsLHIscCk7Zm9yKGYgaW4gcilwPXJbZl0saD1uW2ZdLHIuaGFzT3duUHJvcGVydHkoZikmJnAhPT1oJiYobnVsbCE9cHx8bnVsbCE9aCkmJmNzKGUsdCxmLHAscixoKX0pKHIsZS50eXBlLG4sdCkscltlTF09dH1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX1mdW5jdGlvbiBpNyhlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDI2PT09ZS50YWd8fDI3PT09ZS50YWcmJmNDKGUudHlwZSl8fDQ9PT1lLnRhZ31mdW5jdGlvbiBsZShlKXtlOmZvcig7Oyl7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxpNyhlLnJldHVybikpcmV0dXJuIG51bGw7ZT1lLnJldHVybn1mb3IoZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZzs1IT09ZS50YWcmJjYhPT1lLnRhZyYmMTghPT1lLnRhZzspe2lmKDI3PT09ZS50YWcmJmNDKGUudHlwZSl8fDImZS5mbGFnc3x8bnVsbD09PWUuY2hpbGR8fDQ9PT1lLnRhZyljb250aW51ZSBlO2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkfWlmKCEoMiZlLmZsYWdzKSlyZXR1cm4gZS5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGx0KGUsdCxuKXt2YXIgcj1lLnRhZztpZig1PT09cnx8Nj09PXIpZT1lLnN0YXRlTm9kZSx0P24uaW5zZXJ0QmVmb3JlKGUsdCk6bi5hcHBlbmRDaGlsZChlKTtlbHNlIGlmKDQhPT1yJiYoMjc9PT1yJiZjQyhlLnR5cGUpJiYobj1lLnN0YXRlTm9kZSksbnVsbCE9PShlPWUuY2hpbGQpKSlmb3IobHQoZSx0LG4pLGU9ZS5zaWJsaW5nO251bGwhPT1lOylsdChlLHQsbiksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gbG4oZSl7dmFyIHQ9ZS5zdGF0ZU5vZGUsbj1lLm1lbW9pemVkUHJvcHM7dHJ5e2Zvcih2YXIgcj1lLnR5cGUsbz10LmF0dHJpYnV0ZXM7by5sZW5ndGg7KXQucmVtb3ZlQXR0cmlidXRlTm9kZShvWzBdKTtjdSh0LHIsbiksdFtlRF09ZSx0W2VMXT1ufWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fXZhciBscj0hMSxsbz0hMSxsYT0hMSxsaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LGxsPW51bGw7ZnVuY3Rpb24gbHMoZSx0LG4pe3ZhciByPW4uZmxhZ3M7c3dpdGNoKG4udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmxBKGUsbiksNCZyJiZpMSg1LG4pO2JyZWFrO2Nhc2UgMTppZihsQShlLG4pLDQmcilpZihlPW4uc3RhdGVOb2RlLG51bGw9PT10KXRyeXtlLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goZSl7c1AobixuLnJldHVybixlKX1lbHNle3ZhciBvPWljKG4udHlwZSx0Lm1lbW9pemVkUHJvcHMpO3Q9dC5tZW1vaXplZFN0YXRlO3RyeXtlLmNvbXBvbmVudERpZFVwZGF0ZShvLHQsZS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9Y2F0Y2goZSl7c1AobixuLnJldHVybixlKX19NjQmciYmaTQobiksNTEyJnImJmkzKG4sbi5yZXR1cm4pO2JyZWFrO2Nhc2UgMzppZihsQShlLG4pLDY0JnImJm51bGwhPT0oZT1uLnVwZGF0ZVF1ZXVlKSl7aWYodD1udWxsLG51bGwhPT1uLmNoaWxkKXN3aXRjaChuLmNoaWxkLnRhZyl7Y2FzZSAyNzpjYXNlIDU6Y2FzZSAxOnQ9bi5jaGlsZC5zdGF0ZU5vZGV9dHJ5e29JKGUsdCl9Y2F0Y2goZSl7c1AobixuLnJldHVybixlKX19YnJlYWs7Y2FzZSAyNzpudWxsPT09dCYmNCZyJiZsbihuKTtjYXNlIDI2OmNhc2UgNTpsQShlLG4pLG51bGw9PT10JiY0JnImJmk5KG4pLDUxMiZyJiZpMyhuLG4ucmV0dXJuKTticmVhaztjYXNlIDEyOmRlZmF1bHQ6bEEoZSxuKTticmVhaztjYXNlIDMxOmxBKGUsbiksNCZyJiZscChlLG4pO2JyZWFrO2Nhc2UgMTM6bEEoZSxuKSw0JnImJmxoKGUsbiksNjQmciYmbnVsbCE9PShlPW4ubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT0oZT1lLmRlaHlkcmF0ZWQpJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUub3duZXJEb2N1bWVudDtpZihcIiR+XCI9PT1lLmRhdGEpZS5fcmVhY3RSZXRyeT10O2Vsc2UgaWYoXCIkP1wiIT09ZS5kYXRhfHxcImxvYWRpbmdcIiE9PW4ucmVhZHlTdGF0ZSl0KCk7ZWxzZXt2YXIgcj1mdW5jdGlvbigpe3QoKSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIscil9O24uYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixyKSxlLl9yZWFjdFJldHJ5PXJ9fShlLG49c0QuYmluZChudWxsLG4pKTticmVhaztjYXNlIDIyOmlmKCEocj1udWxsIT09bi5tZW1vaXplZFN0YXRlfHxscikpe3Q9bnVsbCE9PXQmJm51bGwhPT10Lm1lbW9pemVkU3RhdGV8fGxvLG89bHI7dmFyIGE9bG87bHI9ciwobG89dCkmJiFhP2Z1bmN0aW9uIGUodCxuLHIpe2ZvcihyPXImJjAhPSg4NzcyJm4uc3VidHJlZUZsYWdzKSxuPW4uY2hpbGQ7bnVsbCE9PW47KXt2YXIgbz1uLmFsdGVybmF0ZSxhPXQsaT1uLGw9aS5mbGFncztzd2l0Y2goaS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6ZShhLGksciksaTEoNCxpKTticmVhaztjYXNlIDE6aWYoZShhLGksciksXCJmdW5jdGlvblwiPT10eXBlb2YoYT0obz1pKS5zdGF0ZU5vZGUpLmNvbXBvbmVudERpZE1vdW50KXRyeXthLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goZSl7c1AobyxvLnJldHVybixlKX1pZihudWxsIT09KGE9KG89aSkudXBkYXRlUXVldWUpKXt2YXIgcz1vLnN0YXRlTm9kZTt0cnl7dmFyIGM9YS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzO2lmKG51bGwhPT1jKWZvcihhLnNoYXJlZC5oaWRkZW5DYWxsYmFja3M9bnVsbCxhPTA7YTxjLmxlbmd0aDthKyspb1AoY1thXSxzKX1jYXRjaChlKXtzUChvLG8ucmV0dXJuLGUpfX1yJiY2NCZsJiZpNChpKSxpMyhpLGkucmV0dXJuKTticmVhaztjYXNlIDI3OmxuKGkpO2Nhc2UgMjY6Y2FzZSA1OmUoYSxpLHIpLHImJm51bGw9PT1vJiY0JmwmJmk5KGkpLGkzKGksaS5yZXR1cm4pO2JyZWFrO2Nhc2UgMTI6ZGVmYXVsdDplKGEsaSxyKTticmVhaztjYXNlIDMxOmUoYSxpLHIpLHImJjQmbCYmbHAoYSxpKTticmVhaztjYXNlIDEzOmUoYSxpLHIpLHImJjQmbCYmbGgoYSxpKTticmVhaztjYXNlIDIyOm51bGw9PT1pLm1lbW9pemVkU3RhdGUmJmUoYSxpLHIpLGkzKGksaS5yZXR1cm4pO2Nhc2UgMzA6fW49bi5zaWJsaW5nfX0oZSxuLDAhPSg4NzcyJm4uc3VidHJlZUZsYWdzKSk6bEEoZSxuKSxscj1vLGxvPWF9Y2FzZSAzMDp9fXZhciBsYz1udWxsLGx1PSExO2Z1bmN0aW9uIGxkKGUsdCxuKXtmb3Iobj1uLmNoaWxkO251bGwhPT1uOylsZihlLHQsbiksbj1uLnNpYmxpbmd9ZnVuY3Rpb24gbGYoZSx0LG4pe2lmKGVwJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlcC5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7ZXAub25Db21taXRGaWJlclVubW91bnQoZWYsbil9Y2F0Y2goZSl7fXN3aXRjaChuLnRhZyl7Y2FzZSAyNjpsb3x8aTYobix0KSxsZChlLHQsbiksbi5tZW1vaXplZFN0YXRlP24ubWVtb2l6ZWRTdGF0ZS5jb3VudC0tOm4uc3RhdGVOb2RlJiYobj1uLnN0YXRlTm9kZSkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTticmVhaztjYXNlIDI3OmxvfHxpNihuLHQpO3ZhciByPWxjLG89bHU7Y0Mobi50eXBlKSYmKGxjPW4uc3RhdGVOb2RlLGx1PSExKSxsZChlLHQsbiksY0Qobi5zdGF0ZU5vZGUpLGxjPXIsbHU9bzticmVhaztjYXNlIDU6bG98fGk2KG4sdCk7Y2FzZSA2OmlmKHI9bGMsbz1sdSxsYz1udWxsLGxkKGUsdCxuKSxsYz1yLGx1PW8sbnVsbCE9PWxjKWlmKGx1KXRyeXsoOT09PWxjLm5vZGVUeXBlP2xjLmJvZHk6XCJIVE1MXCI9PT1sYy5ub2RlTmFtZT9sYy5vd25lckRvY3VtZW50LmJvZHk6bGMpLnJlbW92ZUNoaWxkKG4uc3RhdGVOb2RlKX1jYXRjaChlKXtzUChuLHQsZSl9ZWxzZSB0cnl7bGMucmVtb3ZlQ2hpbGQobi5zdGF0ZU5vZGUpfWNhdGNoKGUpe3NQKG4sdCxlKX1icmVhaztjYXNlIDE4Om51bGwhPT1sYyYmKGx1PyhjXyg5PT09KGU9bGMpLm5vZGVUeXBlP2UuYm9keTpcIkhUTUxcIj09PWUubm9kZU5hbWU/ZS5vd25lckRvY3VtZW50LmJvZHk6ZSxuLnN0YXRlTm9kZSksdU8oZSkpOmNfKGxjLG4uc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OnI9bGMsbz1sdSxsYz1uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGx1PSEwLGxkKGUsdCxuKSxsYz1yLGx1PW87YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmxvfHxpMigyLG4sdCksbG98fGkyKDQsbix0KSxsZChlLHQsbik7YnJlYWs7Y2FzZSAxOmxvfHwoaTYobix0KSxcImZ1bmN0aW9uXCI9PXR5cGVvZihyPW4uc3RhdGVOb2RlKS5jb21wb25lbnRXaWxsVW5tb3VudCYmaTUobix0LHIpKSxsZChlLHQsbik7YnJlYWs7Y2FzZSAyMTpkZWZhdWx0OmxkKGUsdCxuKTticmVhaztjYXNlIDIyOmxvPShyPWxvKXx8bnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSxsZChlLHQsbiksbG89cn19ZnVuY3Rpb24gbHAoZSx0KXtpZihudWxsPT09dC5tZW1vaXplZFN0YXRlJiZudWxsIT09KGU9dC5hbHRlcm5hdGUpJiZudWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKSl7ZT1lLmRlaHlkcmF0ZWQ7dHJ5e3VPKGUpfWNhdGNoKGUpe3NQKHQsdC5yZXR1cm4sZSl9fX1mdW5jdGlvbiBsaChlLHQpe2lmKG51bGw9PT10Lm1lbW9pemVkU3RhdGUmJm51bGwhPT0oZT10LmFsdGVybmF0ZSkmJm51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09KGU9ZS5kZWh5ZHJhdGVkKSl0cnl7dU8oZSl9Y2F0Y2goZSl7c1AodCx0LnJldHVybixlKX19ZnVuY3Rpb24gbG0oZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtzd2l0Y2goZS50YWcpe2Nhc2UgMzE6Y2FzZSAxMzpjYXNlIDE5OnZhciB0PWUuc3RhdGVOb2RlO3JldHVybiBudWxsPT09dCYmKHQ9ZS5zdGF0ZU5vZGU9bmV3IGxpKSx0O2Nhc2UgMjI6cmV0dXJuIG51bGw9PT0odD0oZT1lLnN0YXRlTm9kZSkuX3JldHJ5Q2FjaGUpJiYodD1lLl9yZXRyeUNhY2hlPW5ldyBsaSksdDtkZWZhdWx0OnRocm93IEVycm9yKGwoNDM1LGUudGFnKSl9fShlKTt0LmZvckVhY2goZnVuY3Rpb24odCl7aWYoIW4uaGFzKHQpKXtuLmFkZCh0KTt2YXIgcj1zTC5iaW5kKG51bGwsZSx0KTt0LnRoZW4ocixyKX19KX1mdW5jdGlvbiBsZyhlLHQpe3ZhciBuPXQuZGVsZXRpb25zO2lmKG51bGwhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdLGE9ZSxpPXQscz1pO2U6Zm9yKDtudWxsIT09czspe3N3aXRjaChzLnRhZyl7Y2FzZSAyNzppZihjQyhzLnR5cGUpKXtsYz1zLnN0YXRlTm9kZSxsdT0hMTticmVhayBlfWJyZWFrO2Nhc2UgNTpsYz1zLnN0YXRlTm9kZSxsdT0hMTticmVhayBlO2Nhc2UgMzpjYXNlIDQ6bGM9cy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxsdT0hMDticmVhayBlfXM9cy5yZXR1cm59aWYobnVsbD09PWxjKXRocm93IEVycm9yKGwoMTYwKSk7bGYoYSxpLG8pLGxjPW51bGwsbHU9ITEsbnVsbCE9PShhPW8uYWx0ZXJuYXRlKSYmKGEucmV0dXJuPW51bGwpLG8ucmV0dXJuPW51bGx9aWYoMTM4NzgmdC5zdWJ0cmVlRmxhZ3MpZm9yKHQ9dC5jaGlsZDtudWxsIT09dDspbHYodCxlKSx0PXQuc2libGluZ312YXIgbHk9bnVsbDtmdW5jdGlvbiBsdihlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlLHI9ZS5mbGFncztzd2l0Y2goZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpsZyh0LGUpLGxiKGUpLDQmciYmKGkyKDMsZSxlLnJldHVybiksaTEoMyxlKSxpMig1LGUsZS5yZXR1cm4pKTticmVhaztjYXNlIDE6bGcodCxlKSxsYihlKSw1MTImciYmKGxvfHxudWxsPT09bnx8aTYobixuLnJldHVybikpLDY0JnImJmxyJiZudWxsIT09KGU9ZS51cGRhdGVRdWV1ZSkmJm51bGwhPT0ocj1lLmNhbGxiYWNrcykmJihuPWUuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcyxlLnNoYXJlZC5oaWRkZW5DYWxsYmFja3M9bnVsbD09PW4/cjpuLmNvbmNhdChyKSk7YnJlYWs7Y2FzZSAyNjp2YXIgbz1seTtpZihsZyh0LGUpLGxiKGUpLDUxMiZyJiYobG98fG51bGw9PT1ufHxpNihuLG4ucmV0dXJuKSksNCZyKXt2YXIgYT1udWxsIT09bj9uLm1lbW9pemVkU3RhdGU6bnVsbDtpZihyPWUubWVtb2l6ZWRTdGF0ZSxudWxsPT09bilpZihudWxsPT09cilpZihudWxsPT09ZS5zdGF0ZU5vZGUpe2U6e3I9ZS50eXBlLG49ZS5tZW1vaXplZFByb3BzLG89by5vd25lckRvY3VtZW50fHxvO3Q6c3dpdGNoKHIpe2Nhc2VcInRpdGxlXCI6KCEoYT1vLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGl0bGVcIilbMF0pfHxhW2VGXXx8YVtlRF18fFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEubmFtZXNwYWNlVVJJfHxhLmhhc0F0dHJpYnV0ZShcIml0ZW1wcm9wXCIpKSYmKGE9by5jcmVhdGVFbGVtZW50KHIpLG8uaGVhZC5pbnNlcnRCZWZvcmUoYSxvLnF1ZXJ5U2VsZWN0b3IoXCJoZWFkID4gdGl0bGVcIikpKSxjdShhLHIsbiksYVtlRF09ZSxlWShhKSxyPWE7YnJlYWsgZTtjYXNlXCJsaW5rXCI6dmFyIGk9Y0ooXCJsaW5rXCIsXCJocmVmXCIsbykuZ2V0KHIrKG4uaHJlZnx8XCJcIikpO2lmKGkpe2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKWlmKChhPWlbc10pLmdldEF0dHJpYnV0ZShcImhyZWZcIik9PT0obnVsbD09bi5ocmVmfHxcIlwiPT09bi5ocmVmP251bGw6bi5ocmVmKSYmYS5nZXRBdHRyaWJ1dGUoXCJyZWxcIik9PT0obnVsbD09bi5yZWw/bnVsbDpuLnJlbCkmJmEuZ2V0QXR0cmlidXRlKFwidGl0bGVcIik9PT0obnVsbD09bi50aXRsZT9udWxsOm4udGl0bGUpJiZhLmdldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIpPT09KG51bGw9PW4uY3Jvc3NPcmlnaW4/bnVsbDpuLmNyb3NzT3JpZ2luKSl7aS5zcGxpY2UocywxKTticmVhayB0fX1jdShhPW8uY3JlYXRlRWxlbWVudChyKSxyLG4pLG8uaGVhZC5hcHBlbmRDaGlsZChhKTticmVhaztjYXNlXCJtZXRhXCI6aWYoaT1jSihcIm1ldGFcIixcImNvbnRlbnRcIixvKS5nZXQocisobi5jb250ZW50fHxcIlwiKSkpe2ZvcihzPTA7czxpLmxlbmd0aDtzKyspaWYoKGE9aVtzXSkuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKT09PShudWxsPT1uLmNvbnRlbnQ/bnVsbDpcIlwiK24uY29udGVudCkmJmEuZ2V0QXR0cmlidXRlKFwibmFtZVwiKT09PShudWxsPT1uLm5hbWU/bnVsbDpuLm5hbWUpJiZhLmdldEF0dHJpYnV0ZShcInByb3BlcnR5XCIpPT09KG51bGw9PW4ucHJvcGVydHk/bnVsbDpuLnByb3BlcnR5KSYmYS5nZXRBdHRyaWJ1dGUoXCJodHRwLWVxdWl2XCIpPT09KG51bGw9PW4uaHR0cEVxdWl2P251bGw6bi5odHRwRXF1aXYpJiZhLmdldEF0dHJpYnV0ZShcImNoYXJzZXRcIik9PT0obnVsbD09bi5jaGFyU2V0P251bGw6bi5jaGFyU2V0KSl7aS5zcGxpY2UocywxKTticmVhayB0fX1jdShhPW8uY3JlYXRlRWxlbWVudChyKSxyLG4pLG8uaGVhZC5hcHBlbmRDaGlsZChhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoNDY4LHIpKX1hW2VEXT1lLGVZKGEpLHI9YX1lLnN0YXRlTm9kZT1yfWVsc2UgYzAobyxlLnR5cGUsZS5zdGF0ZU5vZGUpO2Vsc2UgZS5zdGF0ZU5vZGU9Y1kobyxyLGUubWVtb2l6ZWRQcm9wcyk7ZWxzZSBhIT09cj8obnVsbD09PWE/bnVsbCE9PW4uc3RhdGVOb2RlJiYobj1uLnN0YXRlTm9kZSkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTphLmNvdW50LS0sbnVsbD09PXI/YzAobyxlLnR5cGUsZS5zdGF0ZU5vZGUpOmNZKG8scixlLm1lbW9pemVkUHJvcHMpKTpudWxsPT09ciYmbnVsbCE9PWUuc3RhdGVOb2RlJiZpOChlLGUubWVtb2l6ZWRQcm9wcyxuLm1lbW9pemVkUHJvcHMpfWJyZWFrO2Nhc2UgMjc6bGcodCxlKSxsYihlKSw1MTImciYmKGxvfHxudWxsPT09bnx8aTYobixuLnJldHVybikpLG51bGwhPT1uJiY0JnImJmk4KGUsZS5tZW1vaXplZFByb3BzLG4ubWVtb2l6ZWRQcm9wcyk7YnJlYWs7Y2FzZSA1OmlmKGxnKHQsZSksbGIoZSksNTEyJnImJihsb3x8bnVsbD09PW58fGk2KG4sbi5yZXR1cm4pKSwzMiZlLmZsYWdzKXtvPWUuc3RhdGVOb2RlO3RyeXt0cyhvLFwiXCIpfWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fTQmciYmbnVsbCE9ZS5zdGF0ZU5vZGUmJihvPWUubWVtb2l6ZWRQcm9wcyxpOChlLG8sbnVsbCE9PW4/bi5tZW1vaXplZFByb3BzOm8pKSwxMDI0JnImJihsYT0hMCk7YnJlYWs7Y2FzZSA2OmlmKGxnKHQsZSksbGIoZSksNCZyKXtpZihudWxsPT09ZS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjIpKTtyPWUubWVtb2l6ZWRQcm9wcyxuPWUuc3RhdGVOb2RlO3RyeXtuLm5vZGVWYWx1ZT1yfWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzppZihjUT1udWxsLG89bHksbHk9Y1IodC5jb250YWluZXJJbmZvKSxsZyh0LGUpLGx5PW8sbGIoZSksNCZyJiZudWxsIT09biYmbi5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7dU8odC5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfWxhJiYobGE9ITEsZnVuY3Rpb24gZSh0KXtpZigxMDI0JnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXt2YXIgbj10O2UobiksNT09PW4udGFnJiYxMDI0Jm4uZmxhZ3MmJm4uc3RhdGVOb2RlLnJlc2V0KCksdD10LnNpYmxpbmd9fShlKSk7YnJlYWs7Y2FzZSA0OnI9bHksbHk9Y1IoZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbGcodCxlKSxsYihlKSxseT1yO2JyZWFrO2Nhc2UgMTI6ZGVmYXVsdDpsZyh0LGUpLGxiKGUpO2JyZWFrO2Nhc2UgMzE6Y2FzZSAxOTpsZyh0LGUpLGxiKGUpLDQmciYmbnVsbCE9PShyPWUudXBkYXRlUXVldWUpJiYoZS51cGRhdGVRdWV1ZT1udWxsLGxtKGUscikpO2JyZWFrO2Nhc2UgMTM6bGcodCxlKSxsYihlKSw4MTkyJmUuY2hpbGQuZmxhZ3MmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUhPShudWxsIT09biYmbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSkmJihsMD1lcigpKSw0JnImJm51bGwhPT0ocj1lLnVwZGF0ZVF1ZXVlKSYmKGUudXBkYXRlUXVldWU9bnVsbCxsbShlLHIpKTticmVhaztjYXNlIDIyOm89bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZTt2YXIgYz1udWxsIT09biYmbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSx1PWxyLGQ9bG87aWYobHI9dXx8byxsbz1kfHxjLGxnKHQsZSksbG89ZCxscj11LGxiKGUpLDgxOTImcillOmZvcigodD1lLnN0YXRlTm9kZSkuX3Zpc2liaWxpdHk9bz8tMiZ0Ll92aXNpYmlsaXR5OjF8dC5fdmlzaWJpbGl0eSxvJiYobnVsbD09PW58fGN8fGxyfHxsb3x8ZnVuY3Rpb24gZSh0KXtmb3IodD10LmNoaWxkO251bGwhPT10Oyl7dmFyIG49dDtzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppMig0LG4sbi5yZXR1cm4pLGUobik7YnJlYWs7Y2FzZSAxOmk2KG4sbi5yZXR1cm4pO3ZhciByPW4uc3RhdGVOb2RlO1wiZnVuY3Rpb25cIj09dHlwZW9mIHIuY29tcG9uZW50V2lsbFVubW91bnQmJmk1KG4sbi5yZXR1cm4sciksZShuKTticmVhaztjYXNlIDI3OmNEKG4uc3RhdGVOb2RlKTtjYXNlIDI2OmNhc2UgNTppNihuLG4ucmV0dXJuKSxlKG4pO2JyZWFrO2Nhc2UgMjI6bnVsbD09PW4ubWVtb2l6ZWRTdGF0ZSYmZShuKTticmVhaztkZWZhdWx0OmUobil9dD10LnNpYmxpbmd9fShlKSksbj1udWxsLHQ9ZTs7KXtpZig1PT09dC50YWd8fDI2PT09dC50YWcpe2lmKG51bGw9PT1uKXtjPW49dDt0cnl7aWYoYT1jLnN0YXRlTm9kZSxvKWk9YS5zdHlsZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLnNldFByb3BlcnR5P2kuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6aS5kaXNwbGF5PVwibm9uZVwiO2Vsc2V7cz1jLnN0YXRlTm9kZTt2YXIgZj1jLm1lbW9pemVkUHJvcHMuc3R5bGUscD1udWxsIT1mJiZmLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9mLmRpc3BsYXk6bnVsbDtzLnN0eWxlLmRpc3BsYXk9bnVsbD09cHx8XCJib29sZWFuXCI9PXR5cGVvZiBwP1wiXCI6KFwiXCIrcCkudHJpbSgpfX1jYXRjaChlKXtzUChjLGMucmV0dXJuLGUpfX19ZWxzZSBpZig2PT09dC50YWcpe2lmKG51bGw9PT1uKXtjPXQ7dHJ5e2Muc3RhdGVOb2RlLm5vZGVWYWx1ZT1vP1wiXCI6Yy5tZW1vaXplZFByb3BzfWNhdGNoKGUpe3NQKGMsYy5yZXR1cm4sZSl9fX1lbHNlIGlmKDE4PT09dC50YWcpe2lmKG51bGw9PT1uKXtjPXQ7dHJ5e3ZhciBoPWMuc3RhdGVOb2RlO28/Y2soaCwhMCk6Y2soYy5zdGF0ZU5vZGUsITEpfWNhdGNoKGUpe3NQKGMsYy5yZXR1cm4sZSl9fX1lbHNlIGlmKCgyMiE9PXQudGFnJiYyMyE9PXQudGFnfHxudWxsPT09dC5tZW1vaXplZFN0YXRlfHx0PT09ZSkmJm51bGwhPT10LmNoaWxkKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlicmVhayBlO249PT10JiYobj1udWxsKSx0PXQucmV0dXJufW49PT10JiYobj1udWxsKSx0LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfTQmciYmbnVsbCE9PShyPWUudXBkYXRlUXVldWUpJiZudWxsIT09KG49ci5yZXRyeVF1ZXVlKSYmKHIucmV0cnlRdWV1ZT1udWxsLGxtKGUsbikpO2Nhc2UgMzA6Y2FzZSAyMTp9fWZ1bmN0aW9uIGxiKGUpe3ZhciB0PWUuZmxhZ3M7aWYoMiZ0KXt0cnl7Zm9yKHZhciBuLHI9ZS5yZXR1cm47bnVsbCE9PXI7KXtpZihpNyhyKSl7bj1yO2JyZWFrfXI9ci5yZXR1cm59aWYobnVsbD09bil0aHJvdyBFcnJvcihsKDE2MCkpO3N3aXRjaChuLnRhZyl7Y2FzZSAyNzp2YXIgbz1uLnN0YXRlTm9kZSxhPWxlKGUpO2x0KGUsYSxvKTticmVhaztjYXNlIDU6dmFyIGk9bi5zdGF0ZU5vZGU7MzImbi5mbGFncyYmKHRzKGksXCJcIiksbi5mbGFncyY9LTMzKTt2YXIgcz1sZShlKTtsdChlLHMsaSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgYz1uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLHU9bGUoZSk7IWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBvPXQudGFnO2lmKDU9PT1vfHw2PT09byl0PXQuc3RhdGVOb2RlLG4/KDk9PT1yLm5vZGVUeXBlP3IuYm9keTpcIkhUTUxcIj09PXIubm9kZU5hbWU/ci5vd25lckRvY3VtZW50LmJvZHk6cikuaW5zZXJ0QmVmb3JlKHQsbik6KChuPTk9PT1yLm5vZGVUeXBlP3IuYm9keTpcIkhUTUxcIj09PXIubm9kZU5hbWU/ci5vd25lckRvY3VtZW50LmJvZHk6cikuYXBwZW5kQ2hpbGQodCksbnVsbCE9KHI9ci5fcmVhY3RSb290Q29udGFpbmVyKXx8bnVsbCE9PW4ub25jbGlja3x8KG4ub25jbGljaz10ZykpO2Vsc2UgaWYoNCE9PW8mJigyNz09PW8mJmNDKHQudHlwZSkmJihyPXQuc3RhdGVOb2RlLG49bnVsbCksbnVsbCE9PSh0PXQuY2hpbGQpKSlmb3IoZSh0LG4sciksdD10LnNpYmxpbmc7bnVsbCE9PXQ7KWUodCxuLHIpLHQ9dC5zaWJsaW5nfShlLHUsYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDE2MSkpfX1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfWUuZmxhZ3MmPS0zfTQwOTYmdCYmKGUuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBsQShlLHQpe2lmKDg3NzImdC5zdWJ0cmVlRmxhZ3MpZm9yKHQ9dC5jaGlsZDtudWxsIT09dDspbHMoZSx0LmFsdGVybmF0ZSx0KSx0PXQuc2libGluZ31mdW5jdGlvbiBseChlLHQpe3ZhciBuPW51bGw7bnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYobj1lLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGU9bnVsbCxudWxsIT09dC5tZW1vaXplZFN0YXRlJiZudWxsIT09dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKGU9dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxlIT09biYmKG51bGwhPWUmJmUucmVmQ291bnQrKyxudWxsIT1uJiZyMihuKSl9ZnVuY3Rpb24gbHcoZSx0KXtlPW51bGwsbnVsbCE9PXQuYWx0ZXJuYXRlJiYoZT10LmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSwodD10Lm1lbW9pemVkU3RhdGUuY2FjaGUpIT09ZSYmKHQucmVmQ291bnQrKyxudWxsIT1lJiZyMihlKSl9ZnVuY3Rpb24gbEMoZSx0LG4scil7aWYoMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpZm9yKHQ9dC5jaGlsZDtudWxsIT09dDspbF8oZSx0LG4sciksdD10LnNpYmxpbmd9ZnVuY3Rpb24gbF8oZSx0LG4scil7dmFyIG89dC5mbGFncztzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bEMoZSx0LG4sciksMjA0OCZvJiZpMSg5LHQpO2JyZWFrO2Nhc2UgMTpjYXNlIDMxOmNhc2UgMTM6ZGVmYXVsdDpsQyhlLHQsbixyKTticmVhaztjYXNlIDM6bEMoZSx0LG4sciksMjA0OCZvJiYoZT1udWxsLG51bGwhPT10LmFsdGVybmF0ZSYmKGU9dC5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksKHQ9dC5tZW1vaXplZFN0YXRlLmNhY2hlKSE9PWUmJih0LnJlZkNvdW50KyssbnVsbCE9ZSYmcjIoZSkpKTticmVhaztjYXNlIDEyOmlmKDIwNDgmbyl7bEMoZSx0LG4sciksZT10LnN0YXRlTm9kZTt0cnl7dmFyIGE9dC5tZW1vaXplZFByb3BzLGk9YS5pZCxsPWEub25Qb3N0Q29tbWl0O1wiZnVuY3Rpb25cIj09dHlwZW9mIGwmJmwoaSxudWxsPT09dC5hbHRlcm5hdGU/XCJtb3VudFwiOlwidXBkYXRlXCIsZS5wYXNzaXZlRWZmZWN0RHVyYXRpb24sLTApfWNhdGNoKGUpe3NQKHQsdC5yZXR1cm4sZSl9fWVsc2UgbEMoZSx0LG4scik7YnJlYWs7Y2FzZSAyMzpicmVhaztjYXNlIDIyOmE9dC5zdGF0ZU5vZGUsaT10LmFsdGVybmF0ZSxudWxsIT09dC5tZW1vaXplZFN0YXRlPzImYS5fdmlzaWJpbGl0eT9sQyhlLHQsbixyKTpsayhlLHQpOjImYS5fdmlzaWJpbGl0eT9sQyhlLHQsbixyKTooYS5fdmlzaWJpbGl0eXw9MixmdW5jdGlvbiBlKHQsbixyLG8sYSl7Zm9yKGE9YSYmMCE9KDEwMjU2Jm4uc3VidHJlZUZsYWdzKSxuPW4uY2hpbGQ7bnVsbCE9PW47KXt2YXIgaT1uLGw9aS5mbGFncztzd2l0Y2goaS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6ZSh0LGkscixvLGEpLGkxKDgsaSk7YnJlYWs7Y2FzZSAyMzpicmVhaztjYXNlIDIyOnZhciBzPWkuc3RhdGVOb2RlO251bGwhPT1pLm1lbW9pemVkU3RhdGU/MiZzLl92aXNpYmlsaXR5P2UodCxpLHIsbyxhKTpsayh0LGkpOihzLl92aXNpYmlsaXR5fD0yLGUodCxpLHIsbyxhKSksYSYmMjA0OCZsJiZseChpLmFsdGVybmF0ZSxpKTticmVhaztjYXNlIDI0OmUodCxpLHIsbyxhKSxhJiYyMDQ4JmwmJmx3KGkuYWx0ZXJuYXRlLGkpO2JyZWFrO2RlZmF1bHQ6ZSh0LGkscixvLGEpfW49bi5zaWJsaW5nfX0oZSx0LG4sciwwIT0oMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpKSksMjA0OCZvJiZseChpLHQpO2JyZWFrO2Nhc2UgMjQ6bEMoZSx0LG4sciksMjA0OCZvJiZsdyh0LmFsdGVybmF0ZSx0KX19ZnVuY3Rpb24gbGsoZSx0KXtpZigxMDI1NiZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10Oyl7dmFyIG49dCxyPW4uZmxhZ3M7c3dpdGNoKG4udGFnKXtjYXNlIDIyOmxrKGUsbiksMjA0OCZyJiZseChuLmFsdGVybmF0ZSxuKTticmVhaztjYXNlIDI0OmxrKGUsbiksMjA0OCZyJiZsdyhuLmFsdGVybmF0ZSxuKTticmVhaztkZWZhdWx0OmxrKGUsbil9dD10LnNpYmxpbmd9fXZhciBsRT04MTkyO2Z1bmN0aW9uIGxqKGUpe2lmKGUuc3VidHJlZUZsYWdzJmxFKWZvcihlPWUuY2hpbGQ7bnVsbCE9PWU7KWxTKGUpLGU9ZS5zaWJsaW5nfWZ1bmN0aW9uIGxTKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAyNjpsaihlKSxlLmZsYWdzJmxFJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZmdW5jdGlvbihlLHQsbil7aWYobnVsbD09PWMyKXRocm93IEVycm9yKGwoNDc1KSk7dmFyIHI9YzI7aWYoXCJzdHlsZXNoZWV0XCI9PT10LnR5cGUmJihcInN0cmluZ1wiIT10eXBlb2Ygbi5tZWRpYXx8ITEhPT1tYXRjaE1lZGlhKG4ubWVkaWEpLm1hdGNoZXMpJiYwPT0oNCZ0LnN0YXRlLmxvYWRpbmcpKXtpZihudWxsPT09dC5pbnN0YW5jZSl7dmFyIG89Y3Eobi5ocmVmKSxhPWUucXVlcnlTZWxlY3RvcihjSChvKSk7aWYoYSl7bnVsbCE9PShlPWEuX3ApJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuJiYoci5jb3VudCsrLHI9YzQuYmluZChyKSxlLnRoZW4ocixyKSksdC5zdGF0ZS5sb2FkaW5nfD00LHQuaW5zdGFuY2U9YSxlWShhKTtyZXR1cm59YT1lLm93bmVyRG9jdW1lbnR8fGUsbj1jVihuKSwobz1jTC5nZXQobykpJiZjWChuLG8pLGVZKGE9YS5jcmVhdGVFbGVtZW50KFwibGlua1wiKSk7dmFyIGk9YTtpLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aS5vbmxvYWQ9ZSxpLm9uZXJyb3I9dH0pLGN1KGEsXCJsaW5rXCIsbiksdC5pbnN0YW5jZT1hfW51bGw9PT1yLnN0eWxlc2hlZXRzJiYoci5zdHlsZXNoZWV0cz1uZXcgTWFwKSxyLnN0eWxlc2hlZXRzLnNldCh0LGUpLChlPXQuc3RhdGUucHJlbG9hZCkmJjA9PSgzJnQuc3RhdGUubG9hZGluZykmJihyLmNvdW50KyssdD1jNC5iaW5kKHIpLGUuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIix0KSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLHQpKX19KGx5LGUubWVtb2l6ZWRTdGF0ZSxlLm1lbW9pemVkUHJvcHMpO2JyZWFrO2Nhc2UgNTpkZWZhdWx0OmxqKGUpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIHQ9bHk7bHk9Y1IoZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbGooZSksbHk9dDticmVhaztjYXNlIDIyOm51bGw9PT1lLm1lbW9pemVkU3RhdGUmJihudWxsIT09KHQ9ZS5hbHRlcm5hdGUpJiZudWxsIT09dC5tZW1vaXplZFN0YXRlPyh0PWxFLGxFPTB4MTAwMDAwMCxsaihlKSxsRT10KTpsaihlKSl9fWZ1bmN0aW9uIGxPKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO2lmKG51bGwhPT10JiZudWxsIT09KGU9dC5jaGlsZCkpe3QuY2hpbGQ9bnVsbDtkbyB0PWUuc2libGluZyxlLnNpYmxpbmc9bnVsbCxlPXQ7d2hpbGUobnVsbCE9PWUpfX1mdW5jdGlvbiBsQihlKXt2YXIgdD1lLmRlbGV0aW9ucztpZigwIT0oMTYmZS5mbGFncykpe2lmKG51bGwhPT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2xsPXIsbEkocixlKX1sTyhlKX1pZigxMDI1NiZlLnN1YnRyZWVGbGFncylmb3IoZT1lLmNoaWxkO251bGwhPT1lOylsUChlKSxlPWUuc2libGluZ31mdW5jdGlvbiBsUChlKXtzd2l0Y2goZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bEIoZSksMjA0OCZlLmZsYWdzJiZpMig5LGUsZS5yZXR1cm4pO2JyZWFrO2Nhc2UgMzpjYXNlIDEyOmRlZmF1bHQ6bEIoZSk7YnJlYWs7Y2FzZSAyMjp2YXIgdD1lLnN0YXRlTm9kZTtudWxsIT09ZS5tZW1vaXplZFN0YXRlJiYyJnQuX3Zpc2liaWxpdHkmJihudWxsPT09ZS5yZXR1cm58fDEzIT09ZS5yZXR1cm4udGFnKT8odC5fdmlzaWJpbGl0eSY9LTMsZnVuY3Rpb24gZSh0KXt2YXIgbj10LmRlbGV0aW9ucztpZigwIT0oMTYmdC5mbGFncykpe2lmKG51bGwhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdO2xsPW8sbEkobyx0KX1sTyh0KX1mb3IodD10LmNoaWxkO251bGwhPT10Oyl7c3dpdGNoKChuPXQpLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTppMig4LG4sbi5yZXR1cm4pLGUobik7YnJlYWs7Y2FzZSAyMjoyJihyPW4uc3RhdGVOb2RlKS5fdmlzaWJpbGl0eSYmKHIuX3Zpc2liaWxpdHkmPS0zLGUobikpO2JyZWFrO2RlZmF1bHQ6ZShuKX10PXQuc2libGluZ319KGUpKTpsQihlKX19ZnVuY3Rpb24gbEkoZSx0KXtmb3IoO251bGwhPT1sbDspe3ZhciBuPWxsO3N3aXRjaChuLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTppMig4LG4sdCk7YnJlYWs7Y2FzZSAyMzpjYXNlIDIyOmlmKG51bGwhPT1uLm1lbW9pemVkU3RhdGUmJm51bGwhPT1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sKXt2YXIgcj1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2w7bnVsbCE9ciYmci5yZWZDb3VudCsrfWJyZWFrO2Nhc2UgMjQ6cjIobi5tZW1vaXplZFN0YXRlLmNhY2hlKX1pZihudWxsIT09KHI9bi5jaGlsZCkpci5yZXR1cm49bixsbD1yO2Vsc2UgZm9yKG49ZTtudWxsIT09bGw7KXt2YXIgbz0ocj1sbCkuc2libGluZyxhPXIucmV0dXJuO2lmKCFmdW5jdGlvbiBlKHQpe3ZhciBuPXQuYWx0ZXJuYXRlO251bGwhPT1uJiYodC5hbHRlcm5hdGU9bnVsbCxlKG4pKSx0LmNoaWxkPW51bGwsdC5kZWxldGlvbnM9bnVsbCx0LnNpYmxpbmc9bnVsbCw1PT09dC50YWcmJm51bGwhPT0obj10LnN0YXRlTm9kZSkmJmVxKG4pLHQuc3RhdGVOb2RlPW51bGwsdC5yZXR1cm49bnVsbCx0LmRlcGVuZGVuY2llcz1udWxsLHQubWVtb2l6ZWRQcm9wcz1udWxsLHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQucGVuZGluZ1Byb3BzPW51bGwsdC5zdGF0ZU5vZGU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGx9KHIpLHI9PT1uKXtsbD1udWxsO2JyZWFrfWlmKG51bGwhPT1vKXtvLnJldHVybj1hLGxsPW87YnJlYWt9bGw9YX19fXZhciBsVD17Z2V0Q2FjaGVGb3JUeXBlOmZ1bmN0aW9uKGUpe3ZhciB0PXJZKHIwKSxuPXQuZGF0YS5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PW4mJihuPWUoKSx0LmRhdGEuc2V0KGUsbikpLG59LGNhY2hlU2lnbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIHJZKHIwKS5jb250cm9sbGVyLnNpZ25hbH19LGx6PVwiZnVuY3Rpb25cIj09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXAsbEQ9MCxsTD1udWxsLGxOPW51bGwsbFI9MCxsTT0wLGxaPW51bGwsbFU9ITEsbEY9ITEsbHE9ITEsbEg9MCxsVj0wLGwkPTAsbFc9MCxsWT0wLGxLPTAsbFg9MCxsRz1udWxsLGxRPW51bGwsbEo9ITEsbDA9MCxsMT0xLzAsbDI9bnVsbCxsND1udWxsLGw1PTAsbDM9bnVsbCxsNj1udWxsLGw5PTAsbDg9MCxsNz1udWxsLHNlPW51bGwsc3Q9MCxzbj1udWxsO2Z1bmN0aW9uIHNyKCl7cmV0dXJuIDAhPSgyJmxEKSYmMCE9PWxSP2xSJi1sUjpudWxsIT09SS5UP3NYKCk6ZUkoKX1mdW5jdGlvbiBzbygpezA9PT1sSyYmKGxLPTA9PSgweDIwMDAwMDAwJmxSKXx8cmo/ZUMoKToweDIwMDAwMDAwKTt2YXIgZT1vUi5jdXJyZW50O3JldHVybiBudWxsIT09ZSYmKGUuZmxhZ3N8PTMyKSxsS31mdW5jdGlvbiBzYShlLHQsbil7KGU9PT1sTCYmKDI9PT1sTXx8OT09PWxNKXx8bnVsbCE9PWUuY2FuY2VsUGVuZGluZ0NvbW1pdCkmJihzZChlLDApLHNzKGUsbFIsbEssITEpKSxlRShlLG4pLCgwPT0oMiZsRCl8fGUhPT1sTCkmJihlPT09bEwmJigwPT0oMiZsRCkmJihsV3w9biksND09PWxWJiZzcyhlLGxSLGxLLCExKSksc3EoZSkpfWZ1bmN0aW9uIHNpKGUsdCxuKXtpZigwIT0oNiZsRCkpdGhyb3cgRXJyb3IobCgzMjcpKTtmb3IodmFyIHI9IW4mJjA9PSgxMjQmdCkmJjA9PSh0JmUuZXhwaXJlZExhbmVzKXx8ZXcoZSx0KSxvPXI/ZnVuY3Rpb24oZSx0KXt2YXIgbj1sRDtsRHw9Mjt2YXIgcj1zaCgpLG89c20oKTtsTCE9PWV8fGxSIT09dD8obDI9bnVsbCxsMT1lcigpKzUwMCxzZChlLHQpKTpsRj1ldyhlLHQpO2U6Zm9yKDs7KXRyeXtpZigwIT09bE0mJm51bGwhPT1sTil7dD1sTjt2YXIgYT1sWjt0OnN3aXRjaChsTSl7Y2FzZSAxOmxNPTAsbFo9bnVsbCxzQShlLHQsYSwxKTticmVhaztjYXNlIDI6Y2FzZSA5OmlmKG9sKGEpKXtsTT0wLGxaPW51bGwsc2IodCk7YnJlYWt9dD1mdW5jdGlvbigpezIhPT1sTSYmOSE9PWxNfHxsTCE9PWV8fChsTT03KSxzcShlKX0sYS50aGVuKHQsdCk7YnJlYWsgZTtjYXNlIDM6bE09NzticmVhayBlO2Nhc2UgNDpsTT01O2JyZWFrIGU7Y2FzZSA3Om9sKGEpPyhsTT0wLGxaPW51bGwsc2IodCkpOihsTT0wLGxaPW51bGwsc0EoZSx0LGEsNykpO2JyZWFrO2Nhc2UgNTp2YXIgaT1udWxsO3N3aXRjaChsTi50YWcpe2Nhc2UgMjY6aT1sTi5tZW1vaXplZFN0YXRlO2Nhc2UgNTpjYXNlIDI3OnZhciBzPWxOO2lmKGk/YzEoaSk6cy5zdGF0ZU5vZGUuY29tcGxldGUpe2xNPTAsbFo9bnVsbDt2YXIgYz1zLnNpYmxpbmc7aWYobnVsbCE9PWMpbE49YztlbHNle3ZhciB1PXMucmV0dXJuO251bGwhPT11PyhsTj11LHN4KHUpKTpsTj1udWxsfWJyZWFrIHR9fWxNPTAsbFo9bnVsbCxzQShlLHQsYSw1KTticmVhaztjYXNlIDY6bE09MCxsWj1udWxsLHNBKGUsdCxhLDYpO2JyZWFrO2Nhc2UgODpzdSgpLGxWPTY7YnJlYWsgZTtkZWZhdWx0OnRocm93IEVycm9yKGwoNDYyKSl9fWZvcig7bnVsbCE9PWxOJiYhZXQoKTspc3YobE4pO2JyZWFrfWNhdGNoKHQpe3NmKGUsdCl9cmV0dXJuKHJaPXJNPW51bGwsSS5IPXIsSS5BPW8sbEQ9bixudWxsIT09bE4pPzA6KGxMPW51bGwsbFI9MCxuMigpLGxWKX0oZSx0KTpzeShlLHQsITApLGE9cjs7KXtpZigwPT09bylsRiYmIXImJnNzKGUsdCwwLCExKTtlbHNle2lmKG49ZS5jdXJyZW50LmFsdGVybmF0ZSxhJiYhZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWU7Oyl7dmFyIG49dC50YWc7aWYoKDA9PT1ufHwxMT09PW58fDE1PT09bikmJjE2Mzg0JnQuZmxhZ3MmJm51bGwhPT0obj10LnVwZGF0ZVF1ZXVlKSYmbnVsbCE9PShuPW4uc3RvcmVzKSlmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXSxhPW8uZ2V0U25hcHNob3Q7bz1vLnZhbHVlO3RyeXtpZighbmsoYSgpLG8pKXJldHVybiExfWNhdGNoKGUpe3JldHVybiExfX1pZihuPXQuY2hpbGQsMTYzODQmdC5zdWJ0cmVlRmxhZ3MmJm51bGwhPT1uKW4ucmV0dXJuPXQsdD1uO2Vsc2V7aWYodD09PWUpYnJlYWs7Zm9yKDtudWxsPT09dC5zaWJsaW5nOyl7aWYobnVsbD09PXQucmV0dXJufHx0LnJldHVybj09PWUpcmV0dXJuITA7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfX1yZXR1cm4hMH0obikpe289c3koZSx0LCExKSxhPSExO2NvbnRpbnVlfWlmKDI9PT1vKXtpZihhPXQsZS5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyZhKXZhciBpPTA7ZWxzZSBpPTAhPShpPS0weDIwMDAwMDAxJmUucGVuZGluZ0xhbmVzKT9pOjB4MjAwMDAwMDAmaT8weDIwMDAwMDAwOjA7aWYoMCE9PWkpe3Q9aTtlOntvPWxHO3ZhciBzPWUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZDtpZihzJiYoc2QoZSxpKS5mbGFnc3w9MjU2KSwyIT09KGk9c3koZSxpLCExKSkpe2lmKGxxJiYhcyl7ZS5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lc3w9YSxsV3w9YSxvPTQ7YnJlYWsgZX1hPWxRLGxRPW8sbnVsbCE9PWEmJihudWxsPT09bFE/bFE9YTpsUS5wdXNoLmFwcGx5KGxRLGEpKX1vPWl9aWYoYT0hMSwyIT09byljb250aW51ZX19aWYoMT09PW8pe3NkKGUsMCksc3MoZSx0LDAsITApO2JyZWFrfWU6e3N3aXRjaChyPWUsYT1vKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKGwoMzQ1KSk7Y2FzZSA0OmlmKCg0MTk0MDQ4JnQpIT09dClicmVhaztjYXNlIDY6c3Mocix0LGxLLCFsVSk7YnJlYWsgZTtjYXNlIDI6bFE9bnVsbDticmVhaztjYXNlIDM6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMjkpKX1pZigoMHgzYzAwMDAwJnQpPT09dCYmMTA8KG89bDArMzAwLWVyKCkpKXtpZihzcyhyLHQsbEssIWxVKSwwIT09ZXgociwwLCEwKSlicmVhayBlO3IudGltZW91dEhhbmRsZT1jdihzbC5iaW5kKG51bGwscixuLGxRLGwyLGxKLHQsbEssbFcsbFgsbFUsYSwyLC0wLDApLG8pO2JyZWFrIGV9c2wocixuLGxRLGwyLGxKLHQsbEssbFcsbFgsbFUsYSwwLC0wLDApfX1icmVha31zcShlKX1mdW5jdGlvbiBzbChlLHQsbixyLG8sYSxpLHMsYyx1LGQsZixwLGgpe2lmKGUudGltZW91dEhhbmRsZT0tMSwoODE5MiYoZj10LnN1YnRyZWVGbGFncyl8fDB4MTAwMjAwMD09KDB4MTAwMjAwMCZmKSkmJihjMj17c3R5bGVzaGVldHM6bnVsbCxjb3VudDowLHVuc3VzcGVuZDp0Z30sbFModCksbnVsbCE9PShmPWZ1bmN0aW9uKCl7aWYobnVsbD09PWMyKXRocm93IEVycm9yKGwoNDc1KSk7dmFyIGU9YzI7cmV0dXJuIGUuc3R5bGVzaGVldHMmJjA9PT1lLmNvdW50JiZjMyhlLGUuc3R5bGVzaGVldHMpLDA8ZS5jb3VudD9mdW5jdGlvbih0KXt2YXIgbj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoZS5zdHlsZXNoZWV0cyYmYzMoZSxlLnN0eWxlc2hlZXRzKSxlLnVuc3VzcGVuZCl7dmFyIHQ9ZS51bnN1c3BlbmQ7ZS51bnN1c3BlbmQ9bnVsbCx0KCl9fSw2ZTQpO3JldHVybiBlLnVuc3VzcGVuZD10LGZ1bmN0aW9uKCl7ZS51bnN1c3BlbmQ9bnVsbCxjbGVhclRpbWVvdXQobil9fTpudWxsfSgpKSkpe2UuY2FuY2VsUGVuZGluZ0NvbW1pdD1mKHNDLmJpbmQobnVsbCxlLHQsYSxuLHIsbyxpLHMsYyxkLDEscCxoKSksc3MoZSxhLGksIXUpO3JldHVybn1zQyhlLHQsYSxuLHIsbyxpLHMsYyl9ZnVuY3Rpb24gc3MoZSx0LG4scil7dCY9fmxZLHQmPX5sVyxlLnN1c3BlbmRlZExhbmVzfD10LGUucGluZ2VkTGFuZXMmPX50LHImJihlLndhcm1MYW5lc3w9dCkscj1lLmV4cGlyYXRpb25UaW1lcztmb3IodmFyIG89dDswPG87KXt2YXIgYT0zMS1lbShvKSxpPTE8PGE7clthXT0tMSxvJj1+aX0wIT09biYmZWooZSxuLHQpfWZ1bmN0aW9uIHNjKCl7cmV0dXJuIDAhPSg2JmxEKXx8KHNIKDAsITEpLCExKX1mdW5jdGlvbiBzdSgpe2lmKG51bGwhPT1sTil7aWYoMD09PWxNKXZhciBlPWxOLnJldHVybjtlbHNlIGU9bE4sclo9ck09bnVsbCxhbihlKSxvcD1udWxsLG9oPTAsZT1sTjtmb3IoO251bGwhPT1lOylpMChlLmFsdGVybmF0ZSxlKSxlPWUucmV0dXJuO2xOPW51bGx9fWZ1bmN0aW9uIHNkKGUsdCl7dmFyIG49ZS50aW1lb3V0SGFuZGxlOy0xIT09biYmKGUudGltZW91dEhhbmRsZT0tMSxjYihuKSksbnVsbCE9PShuPWUuY2FuY2VsUGVuZGluZ0NvbW1pdCkmJihlLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbCxuKCkpLHN1KCksbEw9ZSxsTj1uPXJuKGUuY3VycmVudCxudWxsKSxsUj10LGxNPTAsbFo9bnVsbCxsVT0hMSxsRj1ldyhlLHQpLGxxPSExLGxYPWxLPWxZPWxXPWwkPWxWPTAsbFE9bEc9bnVsbCxsSj0hMSwwIT0oOCZ0KSYmKHR8PTMyJnQpO3ZhciByPWUuZW50YW5nbGVkTGFuZXM7aWYoMCE9PXIpZm9yKGU9ZS5lbnRhbmdsZW1lbnRzLHImPXQ7MDxyOyl7dmFyIG89MzEtZW0ociksYT0xPDxvO3R8PWVbb10sciY9fmF9cmV0dXJuIGxIPXQsbjIoKSxufWZ1bmN0aW9uIHNmKGUsdCl7b1k9bnVsbCxJLkg9aWUsdD09PW9yfHx0PT09b2E/KHQ9b2QoKSxsTT0zKTp0PT09b28/KHQ9b2QoKSxsTT00KTpsTT10PT09aWI/ODpudWxsIT09dCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbj82OjEsbFo9dCxudWxsPT09bE4mJihsVj0xLGloKGUscnUodCxlLmN1cnJlbnQpKSl9ZnVuY3Rpb24gc3AoKXt2YXIgZT1vUi5jdXJyZW50O3JldHVybiBudWxsPT09ZXx8KCg0MTk0MDQ4JmxSKT09PWxSP251bGw9PT1vTTooKDB4M2MwMDAwMCZsUik9PT1sUnx8MCE9KDB4MjAwMDAwMDAmbFIpKSYmZT09PW9NKX1mdW5jdGlvbiBzaCgpe3ZhciBlPUkuSDtyZXR1cm4gSS5IPWllLG51bGw9PT1lP2llOmV9ZnVuY3Rpb24gc20oKXt2YXIgZT1JLkE7cmV0dXJuIEkuQT1sVCxlfWZ1bmN0aW9uIHNnKCl7bFY9NCxsVXx8KDQxOTQwNDgmbFIpIT09bFImJm51bGwhPT1vUi5jdXJyZW50fHwobEY9ITApLDA9PSgweDdmZmZmZmYmbCQpJiYwPT0oMHg3ZmZmZmZmJmxXKXx8bnVsbD09PWxMfHxzcyhsTCxsUixsSywhMSl9ZnVuY3Rpb24gc3koZSx0LG4pe3ZhciByPWxEO2xEfD0yO3ZhciBvPXNoKCksYT1zbSgpOyhsTCE9PWV8fGxSIT09dCkmJihsMj1udWxsLHNkKGUsdCkpLHQ9ITE7dmFyIGk9bFY7ZTpmb3IoOzspdHJ5e2lmKDAhPT1sTSYmbnVsbCE9PWxOKXt2YXIgbD1sTixzPWxaO3N3aXRjaChsTSl7Y2FzZSA4OnN1KCksaT02O2JyZWFrIGU7Y2FzZSAzOmNhc2UgMjpjYXNlIDk6Y2FzZSA2Om51bGw9PT1vUi5jdXJyZW50JiYodD0hMCk7dmFyIGM9bE07aWYobE09MCxsWj1udWxsLHNBKGUsbCxzLGMpLG4mJmxGKXtpPTA7YnJlYWsgZX1icmVhaztkZWZhdWx0OmM9bE0sbE09MCxsWj1udWxsLHNBKGUsbCxzLGMpfX0oZnVuY3Rpb24oKXtmb3IoO251bGwhPT1sTjspc3YobE4pfSkoKSxpPWxWO2JyZWFrfWNhdGNoKHQpe3NmKGUsdCl9cmV0dXJuIHQmJmUuc2hlbGxTdXNwZW5kQ291bnRlcisrLHJaPXJNPW51bGwsbEQ9cixJLkg9byxJLkE9YSxudWxsPT09bE4mJihsTD1udWxsLGxSPTAsbjIoKSksaX1mdW5jdGlvbiBzdihlKXt2YXIgdD1pVyhlLmFsdGVybmF0ZSxlLGxIKTtlLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsbnVsbD09PXQ/c3goZSk6bE49dH1mdW5jdGlvbiBzYihlKXt2YXIgdD1lLG49dC5hbHRlcm5hdGU7c3dpdGNoKHQudGFnKXtjYXNlIDE1OmNhc2UgMDp0PWlJKG4sdCx0LnBlbmRpbmdQcm9wcyx0LnR5cGUsdm9pZCAwLGxSKTticmVhaztjYXNlIDExOnQ9aUkobix0LHQucGVuZGluZ1Byb3BzLHQudHlwZS5yZW5kZXIsdC5yZWYsbFIpO2JyZWFrO2Nhc2UgNTphbih0KTtkZWZhdWx0OmkwKG4sdCksdD1pVyhuLHQ9bE49cnIodCxsSCksbEgpfWUubWVtb2l6ZWRQcm9wcz1lLnBlbmRpbmdQcm9wcyxudWxsPT09dD9zeChlKTpsTj10fWZ1bmN0aW9uIHNBKGUsdCxuLHIpe3JaPXJNPW51bGwsYW4odCksb3A9bnVsbCxvaD0wO3ZhciBvPXQucmV0dXJuO3RyeXtpZihmdW5jdGlvbihlLHQsbixyLG8pe2lmKG4uZmxhZ3N8PTMyNzY4LG51bGwhPT1yJiZcIm9iamVjdFwiPT10eXBlb2YgciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci50aGVuKXtpZihudWxsIT09KHQ9bi5hbHRlcm5hdGUpJiZyVih0LG4sbywhMCksbnVsbCE9PShuPW9SLmN1cnJlbnQpKXtzd2l0Y2gobi50YWcpe2Nhc2UgMzE6Y2FzZSAxMzpyZXR1cm4gbnVsbD09PW9NP3NnKCk6bnVsbD09PW4uYWx0ZXJuYXRlJiYwPT09bFYmJihsVj0zKSxuLmZsYWdzJj0tMjU3LG4uZmxhZ3N8PTY1NTM2LG4ubGFuZXM9byxyPT09b2k/bi5mbGFnc3w9MTYzODQ6KG51bGw9PT0odD1uLnVwZGF0ZVF1ZXVlKT9uLnVwZGF0ZVF1ZXVlPW5ldyBTZXQoW3JdKTp0LmFkZChyKSxzSShlLHIsbykpLCExO2Nhc2UgMjI6cmV0dXJuIG4uZmxhZ3N8PTY1NTM2LHI9PT1vaT9uLmZsYWdzfD0xNjM4NDoobnVsbD09PSh0PW4udXBkYXRlUXVldWUpPyh0PXt0cmFuc2l0aW9uczpudWxsLG1hcmtlckluc3RhbmNlczpudWxsLHJldHJ5UXVldWU6bmV3IFNldChbcl0pfSxuLnVwZGF0ZVF1ZXVlPXQpOm51bGw9PT0obj10LnJldHJ5UXVldWUpP3QucmV0cnlRdWV1ZT1uZXcgU2V0KFtyXSk6bi5hZGQociksc0koZSxyLG8pKSwhMX10aHJvdyBFcnJvcihsKDQzNSxuLnRhZykpfXJldHVybiBzSShlLHIsbyksc2coKSwhMX1pZihyailyZXR1cm4gbnVsbCE9PSh0PW9SLmN1cnJlbnQpPygwPT0oNjU1MzYmdC5mbGFncykmJih0LmZsYWdzfD0yNTYpLHQuZmxhZ3N8PTY1NTM2LHQubGFuZXM9byxyIT09ckImJnJOKHJ1KGU9RXJyb3IobCg0MjIpLHtjYXVzZTpyfSksbikpKToociE9PXJCJiZyTihydSh0PUVycm9yKGwoNDIzKSx7Y2F1c2U6cn0pLG4pKSxlPWUuY3VycmVudC5hbHRlcm5hdGUsZS5mbGFnc3w9NjU1MzYsbyY9LW8sZS5sYW5lc3w9byxyPXJ1KHIsbiksbz1pZyhlLnN0YXRlTm9kZSxyLG8pLG9qKGUsbyksNCE9PWxWJiYobFY9MikpLCExO3ZhciBhPUVycm9yKGwoNTIwKSx7Y2F1c2U6cn0pO2lmKGE9cnUoYSxuKSxudWxsPT09bEc/bEc9W2FdOmxHLnB1c2goYSksNCE9PWxWJiYobFY9MiksbnVsbD09PXQpcmV0dXJuITA7cj1ydShyLG4pLG49dDtkb3tzd2l0Y2gobi50YWcpe2Nhc2UgMzpyZXR1cm4gbi5mbGFnc3w9NjU1MzYsZT1vJi1vLG4ubGFuZXN8PWUsZT1pZyhuLnN0YXRlTm9kZSxyLGUpLG9qKG4sZSksITE7Y2FzZSAxOmlmKHQ9bi50eXBlLGE9bi5zdGF0ZU5vZGUsMD09KDEyOCZuLmZsYWdzKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09YSYmXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1sNHx8IWw0LmhhcyhhKSkpKXJldHVybiBuLmZsYWdzfD02NTUzNixvJj0tbyxuLmxhbmVzfD1vLGl2KG89aXkobyksZSxuLHIpLG9qKG4sbyksITF9bj1uLnJldHVybn13aGlsZShudWxsIT09bik7cmV0dXJuITF9KGUsbyx0LG4sbFIpKXtsVj0xLGloKGUscnUobixlLmN1cnJlbnQpKSxsTj1udWxsO3JldHVybn19Y2F0Y2godCl7aWYobnVsbCE9PW8pdGhyb3cgbE49byx0O2xWPTEsaWgoZSxydShuLGUuY3VycmVudCkpLGxOPW51bGw7cmV0dXJufTMyNzY4JnQuZmxhZ3M/KHJqfHwxPT09cj9lPSEwOmxGfHwwIT0oMHgyMDAwMDAwMCZsUik/ZT0hMToobFU9ZT0hMCwoMj09PXJ8fDk9PT1yfHwzPT09cnx8Nj09PXIpJiZudWxsIT09KHI9b1IuY3VycmVudCkmJjEzPT09ci50YWcmJihyLmZsYWdzfD0xNjM4NCkpLHN3KHQsZSkpOnN4KHQpfWZ1bmN0aW9uIHN4KGUpe3ZhciB0PWU7ZG97aWYoMCE9KDMyNzY4JnQuZmxhZ3MpKXJldHVybiB2b2lkIHN3KHQsbFUpO2U9dC5yZXR1cm47dmFyIG49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzO3N3aXRjaChyQyh0KSx0LnRhZyl7Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpjYXNlIDE6cmV0dXJuIGlKKHQpLG51bGw7Y2FzZSAzOnJldHVybiBuPXQuc3RhdGVOb2RlLHI9bnVsbCxudWxsIT09ZSYmKHI9ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSx0Lm1lbW9pemVkU3RhdGUuY2FjaGUhPT1yJiYodC5mbGFnc3w9MjA0OCksckYocjApLFYoKSxuLnBlbmRpbmdDb250ZXh0JiYobi5jb250ZXh0PW4ucGVuZGluZ0NvbnRleHQsbi5wZW5kaW5nQ29udGV4dD1udWxsKSwobnVsbD09PWV8fG51bGw9PT1lLmNoaWxkKSYmKHJ6KHQpP2lZKHQpOm51bGw9PT1lfHxlLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYwPT0oMjU2JnQuZmxhZ3MpfHwodC5mbGFnc3w9MTAyNCxyTCgpKSksaUoodCksbnVsbDtjYXNlIDI2OnZhciBvPXQudHlwZSxhPXQubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbD09PWU/KGlZKHQpLG51bGwhPT1hPyhpSih0KSxpWCh0LGEpKTooaUoodCksaUsodCxvLG51bGwscixuKSkpOmE/YSE9PWUubWVtb2l6ZWRTdGF0ZT8oaVkodCksaUoodCksaVgodCxhKSk6KGlKKHQpLHQuZmxhZ3MmPS0weDEwMDAwMDEpOigoZT1lLm1lbW9pemVkUHJvcHMpIT09ciYmaVkodCksaUoodCksaUsodCxvLGUscixuKSksbnVsbDtjYXNlIDI3OmlmKFcodCksbj1GLmN1cnJlbnQsbz10LnR5cGUsbnVsbCE9PWUmJm51bGwhPXQuc3RhdGVOb2RlKWUubWVtb2l6ZWRQcm9wcyE9PXImJmlZKHQpO2Vsc2V7aWYoIXIpe2lmKG51bGw9PT10LnN0YXRlTm9kZSl0aHJvdyBFcnJvcihsKDE2NikpO3JldHVybiBpSih0KSxudWxsfWU9Wi5jdXJyZW50LHJ6KHQpP3JJKHQsZSk6KHQuc3RhdGVOb2RlPWU9Y3oobyxyLG4pLGlZKHQpKX1yZXR1cm4gaUoodCksbnVsbDtjYXNlIDU6aWYoVyh0KSxvPXQudHlwZSxudWxsIT09ZSYmbnVsbCE9dC5zdGF0ZU5vZGUpZS5tZW1vaXplZFByb3BzIT09ciYmaVkodCk7ZWxzZXtpZighcil7aWYobnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGwoMTY2KSk7cmV0dXJuIGlKKHQpLG51bGx9aWYoYT1aLmN1cnJlbnQscnoodCkpckkodCxhKTtlbHNle3ZhciBpPWNwKEYuY3VycmVudCk7c3dpdGNoKGEpe2Nhc2UgMTphPWkuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixvKTticmVhaztjYXNlIDI6YT1pLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIixvKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlXCJzdmdcIjphPWkuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixvKTticmVhaztjYXNlXCJtYXRoXCI6YT1pLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIixvKTticmVhaztjYXNlXCJzY3JpcHRcIjooYT1pLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLmlubmVySFRNTD1cIjxzY3JpcHQ+PFxcL3NjcmlwdD5cIixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTticmVhaztjYXNlXCJzZWxlY3RcIjphPVwic3RyaW5nXCI9PXR5cGVvZiByLmlzP2kuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLHtpczpyLmlzfSk6aS5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIpLHIubXVsdGlwbGU/YS5tdWx0aXBsZT0hMDpyLnNpemUmJihhLnNpemU9ci5zaXplKTticmVhaztkZWZhdWx0OmE9XCJzdHJpbmdcIj09dHlwZW9mIHIuaXM/aS5jcmVhdGVFbGVtZW50KG8se2lzOnIuaXN9KTppLmNyZWF0ZUVsZW1lbnQobyl9fWFbZURdPXQsYVtlTF09cjtlOmZvcihpPXQuY2hpbGQ7bnVsbCE9PWk7KXtpZig1PT09aS50YWd8fDY9PT1pLnRhZylhLmFwcGVuZENoaWxkKGkuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1pLnRhZyYmMjchPT1pLnRhZyYmbnVsbCE9PWkuY2hpbGQpe2kuY2hpbGQucmV0dXJuPWksaT1pLmNoaWxkO2NvbnRpbnVlfWlmKGk9PT10KWJyZWFrO2Zvcig7bnVsbD09PWkuc2libGluZzspe2lmKG51bGw9PT1pLnJldHVybnx8aS5yZXR1cm49PT10KWJyZWFrIGU7aT1pLnJldHVybn1pLnNpYmxpbmcucmV0dXJuPWkucmV0dXJuLGk9aS5zaWJsaW5nfXN3aXRjaCh0LnN0YXRlTm9kZT1hLGN1KGEsbyxyKSxvKXtjYXNlXCJidXR0b25cIjpjYXNlXCJpbnB1dFwiOmNhc2VcInNlbGVjdFwiOmNhc2VcInRleHRhcmVhXCI6cj0hIXIuYXV0b0ZvY3VzO2JyZWFrO2Nhc2VcImltZ1wiOnI9ITA7YnJlYWs7ZGVmYXVsdDpyPSExfXImJmlZKHQpfX1yZXR1cm4gaUoodCksaUsodCx0LnR5cGUsbnVsbD09PWU/bnVsbDplLm1lbW9pemVkUHJvcHMsdC5wZW5kaW5nUHJvcHMsbiksbnVsbDtjYXNlIDY6aWYoZSYmbnVsbCE9dC5zdGF0ZU5vZGUpZS5tZW1vaXplZFByb3BzIT09ciYmaVkodCk7ZWxzZXtpZihcInN0cmluZ1wiIT10eXBlb2YgciYmbnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGwoMTY2KSk7aWYoZT1GLmN1cnJlbnQscnoodCkpe2lmKGU9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkUHJvcHMscj1udWxsLG51bGwhPT0obz1yaykpc3dpdGNoKG8udGFnKXtjYXNlIDI3OmNhc2UgNTpyPW8ubWVtb2l6ZWRQcm9wc31lW2VEXT10LChlPSEhKGUubm9kZVZhbHVlPT09bnx8bnVsbCE9PXImJiEwPT09ci5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8fGNsKGUubm9kZVZhbHVlLG4pKSl8fHJQKHQsITApfWVsc2UoZT1jcChlKS5jcmVhdGVUZXh0Tm9kZShyKSlbZURdPXQsdC5zdGF0ZU5vZGU9ZX1yZXR1cm4gaUoodCksbnVsbDtjYXNlIDMxOmlmKG49dC5tZW1vaXplZFN0YXRlLG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlKXtpZihyPXJ6KHQpLG51bGwhPT1uKXtpZihudWxsPT09ZSl7aWYoIXIpdGhyb3cgRXJyb3IobCgzMTgpKTtpZighKGU9bnVsbCE9PShlPXQubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGwoNTU3KSk7ZVtlRF09dH1lbHNlIHJEKCksMD09KDEyOCZ0LmZsYWdzKSYmKHQubWVtb2l6ZWRTdGF0ZT1udWxsKSx0LmZsYWdzfD00O2lKKHQpLGU9ITF9ZWxzZSBuPXJMKCksbnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJihlLm1lbW9pemVkU3RhdGUuaHlkcmF0aW9uRXJyb3JzPW4pLGU9ITA7aWYoIWUpe2lmKDI1NiZ0LmZsYWdzKXJldHVybiBvSCh0KSx0O3JldHVybiBvSCh0KSxudWxsfWlmKDAhPSgxMjgmdC5mbGFncykpdGhyb3cgRXJyb3IobCg1NTgpKX1yZXR1cm4gaUoodCksbnVsbDtjYXNlIDEzOmlmKHI9dC5tZW1vaXplZFN0YXRlLG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2lmKG89cnoodCksbnVsbCE9PXImJm51bGwhPT1yLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1lKXtpZighbyl0aHJvdyBFcnJvcihsKDMxOCkpO2lmKCEobz1udWxsIT09KG89dC5tZW1vaXplZFN0YXRlKT9vLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IobCgzMTcpKTtvW2VEXT10fWVsc2UgckQoKSwwPT0oMTI4JnQuZmxhZ3MpJiYodC5tZW1vaXplZFN0YXRlPW51bGwpLHQuZmxhZ3N8PTQ7aUoodCksbz0hMX1lbHNlIG89ckwoKSxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmKGUubWVtb2l6ZWRTdGF0ZS5oeWRyYXRpb25FcnJvcnM9byksbz0hMDtpZighbyl7aWYoMjU2JnQuZmxhZ3MpcmV0dXJuIG9IKHQpLHQ7cmV0dXJuIG9IKHQpLG51bGx9fWlmKG9IKHQpLDAhPSgxMjgmdC5mbGFncykpcmV0dXJuIHQubGFuZXM9bix0O3JldHVybiBuPW51bGwhPT1yLGU9bnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUsbiYmKHI9dC5jaGlsZCxvPW51bGwsbnVsbCE9PXIuYWx0ZXJuYXRlJiZudWxsIT09ci5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXIuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYobz1yLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxhPW51bGwsbnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXIubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihhPXIubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksYSE9PW8mJihyLmZsYWdzfD0yMDQ4KSksbiE9PWUmJm4mJih0LmNoaWxkLmZsYWdzfD04MTkyKSxpRyh0LHQudXBkYXRlUXVldWUpLGlKKHQpLG51bGw7Y2FzZSA0OnJldHVybiBWKCksbnVsbD09PWUmJnM5KHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGlKKHQpLG51bGw7Y2FzZSAxMDpyZXR1cm4gckYodC50eXBlKSxpSih0KSxudWxsO2Nhc2UgMTk6aWYoUihvViksbnVsbD09PShyPXQubWVtb2l6ZWRTdGF0ZSkpcmV0dXJuIGlKKHQpLG51bGw7aWYobz0wIT0oMTI4JnQuZmxhZ3MpLG51bGw9PT0oYT1yLnJlbmRlcmluZykpaWYobylpUShyLCExKTtlbHNle2lmKDAhPT1sVnx8bnVsbCE9PWUmJjAhPSgxMjgmZS5mbGFncykpZm9yKGU9dC5jaGlsZDtudWxsIT09ZTspe2lmKG51bGwhPT0oYT1vJChlKSkpe2Zvcih0LmZsYWdzfD0xMjgsaVEociwhMSksdC51cGRhdGVRdWV1ZT1lPWEudXBkYXRlUXVldWUsaUcodCxlKSx0LnN1YnRyZWVGbGFncz0wLGU9bixuPXQuY2hpbGQ7bnVsbCE9PW47KXJyKG4sZSksbj1uLnNpYmxpbmc7cmV0dXJuIE0ob1YsMSZvVi5jdXJyZW50fDIpLHJqJiZyQSh0LHIudHJlZUZvcmtDb3VudCksdC5jaGlsZH1lPWUuc2libGluZ31udWxsIT09ci50YWlsJiZlcigpPmwxJiYodC5mbGFnc3w9MTI4LG89ITAsaVEociwhMSksdC5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFvKWlmKG51bGwhPT0oZT1vJChhKSkpe2lmKHQuZmxhZ3N8PTEyOCxvPSEwLHQudXBkYXRlUXVldWU9ZT1lLnVwZGF0ZVF1ZXVlLGlHKHQsZSksaVEociwhMCksbnVsbD09PXIudGFpbCYmXCJoaWRkZW5cIj09PXIudGFpbE1vZGUmJiFhLmFsdGVybmF0ZSYmIXJqKXJldHVybiBpSih0KSxudWxsfWVsc2UgMiplcigpLXIucmVuZGVyaW5nU3RhcnRUaW1lPmwxJiYweDIwMDAwMDAwIT09biYmKHQuZmxhZ3N8PTEyOCxvPSEwLGlRKHIsITEpLHQubGFuZXM9NDE5NDMwNCk7ci5pc0JhY2t3YXJkcz8oYS5zaWJsaW5nPXQuY2hpbGQsdC5jaGlsZD1hKToobnVsbCE9PShlPXIubGFzdCk/ZS5zaWJsaW5nPWE6dC5jaGlsZD1hLHIubGFzdD1hKX1pZihudWxsIT09ci50YWlsKXJldHVybiBlPXIudGFpbCxyLnJlbmRlcmluZz1lLHIudGFpbD1lLnNpYmxpbmcsci5yZW5kZXJpbmdTdGFydFRpbWU9ZXIoKSxlLnNpYmxpbmc9bnVsbCxuPW9WLmN1cnJlbnQsTShvVixvPzEmbnwyOjEmbikscmomJnJBKHQsci50cmVlRm9ya0NvdW50KSxlO3JldHVybiBpSih0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gb0godCksb04oKSxyPW51bGwhPT10Lm1lbW9pemVkU3RhdGUsbnVsbCE9PWU/bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSE9PXImJih0LmZsYWdzfD04MTkyKTpyJiYodC5mbGFnc3w9ODE5Mikscj8wIT0oMHgyMDAwMDAwMCZuKSYmMD09KDEyOCZ0LmZsYWdzKSYmKGlKKHQpLDYmdC5zdWJ0cmVlRmxhZ3MmJih0LmZsYWdzfD04MTkyKSk6aUoodCksbnVsbCE9PShuPXQudXBkYXRlUXVldWUpJiZpRyh0LG4ucmV0cnlRdWV1ZSksbj1udWxsLG51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKG49ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxyPW51bGwsbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihyPXQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksciE9PW4mJih0LmZsYWdzfD0yMDQ4KSxudWxsIT09ZSYmUihyNyksbnVsbDtjYXNlIDI0OnJldHVybiBuPW51bGwsbnVsbCE9PWUmJihuPWUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksdC5tZW1vaXplZFN0YXRlLmNhY2hlIT09biYmKHQuZmxhZ3N8PTIwNDgpLHJGKHIwKSxpSih0KSxudWxsO2Nhc2UgMjU6Y2FzZSAzMDpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihsKDE1Nix0LnRhZykpfSh0LmFsdGVybmF0ZSx0LGxIKTtpZihudWxsIT09bil7bE49bjtyZXR1cm59aWYobnVsbCE9PSh0PXQuc2libGluZykpe2xOPXQ7cmV0dXJufWxOPXQ9ZX13aGlsZShudWxsIT09dCk7MD09PWxWJiYobFY9NSl9ZnVuY3Rpb24gc3coZSx0KXtkb3t2YXIgbj1mdW5jdGlvbihlLHQpe3N3aXRjaChyQyh0KSx0LnRhZyl7Y2FzZSAxOnJldHVybiA2NTUzNiYoZT10LmZsYWdzKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDM6cmV0dXJuIHJGKHIwKSxWKCksMCE9KDY1NTM2JihlPXQuZmxhZ3MpKSYmMD09KDEyOCZlKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnJldHVybiBXKHQpLG51bGw7Y2FzZSAzMTppZihudWxsIT09dC5tZW1vaXplZFN0YXRlKXtpZihvSCh0KSxudWxsPT09dC5hbHRlcm5hdGUpdGhyb3cgRXJyb3IobCgzNDApKTtyRCgpfXJldHVybiA2NTUzNiYoZT10LmZsYWdzKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDEzOmlmKG9IKHQpLG51bGwhPT0oZT10Lm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXtpZihudWxsPT09dC5hbHRlcm5hdGUpdGhyb3cgRXJyb3IobCgzNDApKTtyRCgpfXJldHVybiA2NTUzNiYoZT10LmZsYWdzKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDE5OnJldHVybiBSKG9WKSxudWxsO2Nhc2UgNDpyZXR1cm4gVigpLG51bGw7Y2FzZSAxMDpyZXR1cm4gckYodC50eXBlKSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gb0godCksb04oKSxudWxsIT09ZSYmUihyNyksNjU1MzYmKGU9dC5mbGFncyk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAyNDpyZXR1cm4gckYocjApLG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUuYWx0ZXJuYXRlLGUpO2lmKG51bGwhPT1uKXtuLmZsYWdzJj0zMjc2NyxsTj1uO3JldHVybn1pZihudWxsIT09KG49ZS5yZXR1cm4pJiYobi5mbGFnc3w9MzI3Njgsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSwhdCYmbnVsbCE9PShlPWUuc2libGluZykpe2xOPWU7cmV0dXJufWxOPWU9bn13aGlsZShudWxsIT09ZSk7bFY9NixsTj1udWxsfWZ1bmN0aW9uIHNDKGUsdCxuLHIsbyxhLGkscyxjKXtlLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbDtkbyBzUygpO3doaWxlKDAhPT1sNSk7aWYoMCE9KDYmbEQpKXRocm93IEVycm9yKGwoMzI3KSk7aWYobnVsbCE9PXQpe2lmKHQ9PT1lLmN1cnJlbnQpdGhyb3cgRXJyb3IobCgxNzcpKTtpZighZnVuY3Rpb24oZSx0LG4scixvLGEpe3ZhciBpPWUucGVuZGluZ0xhbmVzO2UucGVuZGluZ0xhbmVzPW4sZS5zdXNwZW5kZWRMYW5lcz0wLGUucGluZ2VkTGFuZXM9MCxlLndhcm1MYW5lcz0wLGUuZXhwaXJlZExhbmVzJj1uLGUuZW50YW5nbGVkTGFuZXMmPW4sZS5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyY9bixlLnNoZWxsU3VzcGVuZENvdW50ZXI9MDt2YXIgbD1lLmVudGFuZ2xlbWVudHMscz1lLmV4cGlyYXRpb25UaW1lcyxjPWUuaGlkZGVuVXBkYXRlcztmb3Iobj1pJn5uOzA8bjspe3ZhciB1PTMxLWVtKG4pLGQ9MTw8dTtsW3VdPTAsc1t1XT0tMTt2YXIgZj1jW3VdO2lmKG51bGwhPT1mKWZvcihjW3VdPW51bGwsdT0wO3U8Zi5sZW5ndGg7dSsrKXt2YXIgcD1mW3VdO251bGwhPT1wJiYocC5sYW5lJj0tMHgyMDAwMDAwMSl9biY9fmR9MCE9PXImJmVqKGUsciwwKSwwIT09YSYmMD09PW8mJjAhPT1lLnRhZyYmKGUuc3VzcGVuZGVkTGFuZXN8PWEmfihpJn50KSl9KGUsbixhPXQubGFuZXN8dC5jaGlsZExhbmVzfG4xLGkscyxjKSxlPT09bEwmJihsTj1sTD1udWxsLGxSPTApLGw2PXQsbDM9ZSxsOT1uLGw4PWEsbDc9byxzZT1yLDAhPSgxMDI1NiZ0LnN1YnRyZWVGbGFncyl8fDAhPSgxMDI1NiZ0LmZsYWdzKT8oZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MCxKKGVsLGZ1bmN0aW9uKCl7cmV0dXJuIHNPKCEwKSxudWxsfSkpOihlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wKSxyPTAhPSgxMzg3OCZ0LmZsYWdzKSwwIT0oMTM4NzgmdC5zdWJ0cmVlRmxhZ3MpfHxyKXtyPUkuVCxJLlQ9bnVsbCxvPVQucCxULnA9MixpPWxELGxEfD00O3RyeXshZnVuY3Rpb24oZSx0KXtpZihlPWUuY29udGFpbmVySW5mbyxjZD11byxuQihlPW5PKGUpKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gZSl2YXIgbj17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7dmFyIHI9KG49KG49ZS5vd25lckRvY3VtZW50KSYmbi5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJm4uZ2V0U2VsZWN0aW9uKCk7aWYociYmMCE9PXIucmFuZ2VDb3VudCl7bj1yLmFuY2hvck5vZGU7dmFyIG8sYT1yLmFuY2hvck9mZnNldCxpPXIuZm9jdXNOb2RlO3I9ci5mb2N1c09mZnNldDt0cnl7bi5ub2RlVHlwZSxpLm5vZGVUeXBlfWNhdGNoKGUpe249bnVsbDticmVhayBlfXZhciBzPTAsYz0tMSx1PS0xLGQ9MCxmPTAscD1lLGg9bnVsbDt0OmZvcig7Oyl7Zm9yKDtwIT09bnx8MCE9PWEmJjMhPT1wLm5vZGVUeXBlfHwoYz1zK2EpLHAhPT1pfHwwIT09ciYmMyE9PXAubm9kZVR5cGV8fCh1PXMrciksMz09PXAubm9kZVR5cGUmJihzKz1wLm5vZGVWYWx1ZS5sZW5ndGgpLG51bGwhPT0obz1wLmZpcnN0Q2hpbGQpOyloPXAscD1vO2Zvcig7Oyl7aWYocD09PWUpYnJlYWsgdDtpZihoPT09biYmKytkPT09YSYmKGM9cyksaD09PWkmJisrZj09PXImJih1PXMpLG51bGwhPT0obz1wLm5leHRTaWJsaW5nKSlicmVhaztoPShwPWgpLnBhcmVudE5vZGV9cD1vfW49LTE9PT1jfHwtMT09PXU/bnVsbDp7c3RhcnQ6YyxlbmQ6dX19ZWxzZSBuPW51bGx9bj1ufHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBuPW51bGw7Zm9yKGNmPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOm59LHVvPSExLGxsPXQ7bnVsbCE9PWxsOylpZihlPSh0PWxsKS5jaGlsZCwwIT0oMTAyNCZ0LnN1YnRyZWVGbGFncykmJm51bGwhPT1lKWUucmV0dXJuPXQsbGw9ZTtlbHNlIGZvcig7bnVsbCE9PWxsOyl7c3dpdGNoKGk9KHQ9bGwpLmFsdGVybmF0ZSxlPXQuZmxhZ3MsdC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSA1OmNhc2UgMjY6Y2FzZSAyNzpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7Y2FzZSAxOmlmKDAhPSgxMDI0JmUpJiZudWxsIT09aSl7ZT12b2lkIDAsbj10LGE9aS5tZW1vaXplZFByb3BzLGk9aS5tZW1vaXplZFN0YXRlLHI9bi5zdGF0ZU5vZGU7dHJ5e3ZhciBtPWljKG4udHlwZSxhKTtlPXIuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUobSxpKSxyLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPWV9Y2F0Y2goZSl7c1AobixuLnJldHVybixlKX19YnJlYWs7Y2FzZSAzOmlmKDAhPSgxMDI0JmUpKXtpZig5PT09KG49KGU9dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykubm9kZVR5cGUpKWNFKGUpO2Vsc2UgaWYoMT09PW4pc3dpdGNoKGUubm9kZU5hbWUpe2Nhc2VcIkhFQURcIjpjYXNlXCJIVE1MXCI6Y2FzZVwiQk9EWVwiOmNFKGUpO2JyZWFrO2RlZmF1bHQ6ZS50ZXh0Q29udGVudD1cIlwifX1icmVhaztkZWZhdWx0OmlmKDAhPSgxMDI0JmUpKXRocm93IEVycm9yKGwoMTYzKSl9aWYobnVsbCE9PShlPXQuc2libGluZykpe2UucmV0dXJuPXQucmV0dXJuLGxsPWU7YnJlYWt9bGw9dC5yZXR1cm59fShlLHQsbil9ZmluYWxseXtsRD1pLFQucD1vLEkuVD1yfX1sNT0xLHNfKCksc2soKSxzRSgpfX1mdW5jdGlvbiBzXygpe2lmKDE9PT1sNSl7bDU9MDt2YXIgZT1sMyx0PWw2LG49MCE9KDEzODc4JnQuZmxhZ3MpO2lmKDAhPSgxMzg3OCZ0LnN1YnRyZWVGbGFncyl8fG4pe249SS5ULEkuVD1udWxsO3ZhciByPVQucDtULnA9Mjt2YXIgbz1sRDtsRHw9NDt0cnl7bHYodCxlKTt2YXIgYT1jZixpPW5PKGUuY29udGFpbmVySW5mbyksbD1hLmZvY3VzZWRFbGVtLHM9YS5zZWxlY3Rpb25SYW5nZTtpZihpIT09bCYmbCYmbC5vd25lckRvY3VtZW50JiZmdW5jdGlvbiBlKHQsbil7cmV0dXJuISF0JiYhIW4mJih0PT09bnx8KCF0fHwzIT09dC5ub2RlVHlwZSkmJihuJiYzPT09bi5ub2RlVHlwZT9lKHQsbi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiB0P3QuY29udGFpbnMobik6ISF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4pKSkpfShsLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGwpKXtpZihudWxsIT09cyYmbkIobCkpe3ZhciBjPXMuc3RhcnQsdT1zLmVuZDtpZih2b2lkIDA9PT11JiYodT1jKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBsKWwuc2VsZWN0aW9uU3RhcnQ9YyxsLnNlbGVjdGlvbkVuZD1NYXRoLm1pbih1LGwudmFsdWUubGVuZ3RoKTtlbHNle3ZhciBkPWwub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsZj1kJiZkLmRlZmF1bHRWaWV3fHx3aW5kb3c7aWYoZi5nZXRTZWxlY3Rpb24pe3ZhciBwPWYuZ2V0U2VsZWN0aW9uKCksaD1sLnRleHRDb250ZW50Lmxlbmd0aCxtPU1hdGgubWluKHMuc3RhcnQsaCksZz12b2lkIDA9PT1zLmVuZD9tOk1hdGgubWluKHMuZW5kLGgpOyFwLmV4dGVuZCYmbT5nJiYoaT1nLGc9bSxtPWkpO3ZhciB5PW5TKGwsbSksdj1uUyhsLGcpO2lmKHkmJnYmJigxIT09cC5yYW5nZUNvdW50fHxwLmFuY2hvck5vZGUhPT15Lm5vZGV8fHAuYW5jaG9yT2Zmc2V0IT09eS5vZmZzZXR8fHAuZm9jdXNOb2RlIT09di5ub2RlfHxwLmZvY3VzT2Zmc2V0IT09di5vZmZzZXQpKXt2YXIgYj1kLmNyZWF0ZVJhbmdlKCk7Yi5zZXRTdGFydCh5Lm5vZGUseS5vZmZzZXQpLHAucmVtb3ZlQWxsUmFuZ2VzKCksbT5nPyhwLmFkZFJhbmdlKGIpLHAuZXh0ZW5kKHYubm9kZSx2Lm9mZnNldCkpOihiLnNldEVuZCh2Lm5vZGUsdi5vZmZzZXQpLHAuYWRkUmFuZ2UoYikpfX19fWZvcihkPVtdLHA9bDtwPXAucGFyZW50Tm9kZTspMT09PXAubm9kZVR5cGUmJmQucHVzaCh7ZWxlbWVudDpwLGxlZnQ6cC5zY3JvbGxMZWZ0LHRvcDpwLnNjcm9sbFRvcH0pO2ZvcihcImZ1bmN0aW9uXCI9PXR5cGVvZiBsLmZvY3VzJiZsLmZvY3VzKCksbD0wO2w8ZC5sZW5ndGg7bCsrKXt2YXIgQT1kW2xdO0EuZWxlbWVudC5zY3JvbGxMZWZ0PUEubGVmdCxBLmVsZW1lbnQuc2Nyb2xsVG9wPUEudG9wfX11bz0hIWNkLGNmPWNkPW51bGx9ZmluYWxseXtsRD1vLFQucD1yLEkuVD1ufX1lLmN1cnJlbnQ9dCxsNT0yfX1mdW5jdGlvbiBzaygpe2lmKDI9PT1sNSl7bDU9MDt2YXIgZT1sMyx0PWw2LG49MCE9KDg3NzImdC5mbGFncyk7aWYoMCE9KDg3NzImdC5zdWJ0cmVlRmxhZ3MpfHxuKXtuPUkuVCxJLlQ9bnVsbDt2YXIgcj1ULnA7VC5wPTI7dmFyIG89bEQ7bER8PTQ7dHJ5e2xzKGUsdC5hbHRlcm5hdGUsdCl9ZmluYWxseXtsRD1vLFQucD1yLEkuVD1ufX1sNT0zfX1mdW5jdGlvbiBzRSgpe2lmKDQ9PT1sNXx8Mz09PWw1KXtsNT0wLGVuKCk7dmFyIGU9bDMsdD1sNixuPWw5LHI9c2U7MCE9KDEwMjU2JnQuc3VidHJlZUZsYWdzKXx8MCE9KDEwMjU2JnQuZmxhZ3MpP2w1PTU6KGw1PTAsbDY9bDM9bnVsbCxzaihlLGUucGVuZGluZ0xhbmVzKSk7dmFyIG89ZS5wZW5kaW5nTGFuZXM7aWYoMD09PW8mJihsND1udWxsKSxlUChuKSx0PXQuc3RhdGVOb2RlLGVwJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlcC5vbkNvbW1pdEZpYmVyUm9vdCl0cnl7ZXAub25Db21taXRGaWJlclJvb3QoZWYsdCx2b2lkIDAsMTI4PT0oMTI4JnQuY3VycmVudC5mbGFncykpfWNhdGNoKGUpe31pZihudWxsIT09cil7dD1JLlQsbz1ULnAsVC5wPTIsSS5UPW51bGw7dHJ5e2Zvcih2YXIgYT1lLm9uUmVjb3ZlcmFibGVFcnJvcixpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBsPXJbaV07YShsLnZhbHVlLHtjb21wb25lbnRTdGFjazpsLnN0YWNrfSl9fWZpbmFsbHl7SS5UPXQsVC5wPW99fTAhPSgzJmw5KSYmc1MoKSxzcShlKSxvPWUucGVuZGluZ0xhbmVzLDAhPSg0MTk0MDkwJm4pJiYwIT0oNDImbyk/ZT09PXNuP3N0Kys6KHN0PTAsc249ZSk6c3Q9MCxzSCgwLCExKX19ZnVuY3Rpb24gc2ooZSx0KXswPT0oZS5wb29sZWRDYWNoZUxhbmVzJj10KSYmbnVsbCE9KHQ9ZS5wb29sZWRDYWNoZSkmJihlLnBvb2xlZENhY2hlPW51bGwscjIodCkpfWZ1bmN0aW9uIHNTKGUpe3JldHVybiBzXygpLHNrKCksc0UoKSxzTyhlKX1mdW5jdGlvbiBzTygpe2lmKDUhPT1sNSlyZXR1cm4hMTt2YXIgZT1sMyx0PWw4O2w4PTA7dmFyIG49ZVAobDkpLHI9SS5ULG89VC5wO3RyeXtULnA9MzI+bj8zMjpuLEkuVD1udWxsLG49bDcsbDc9bnVsbDt2YXIgYT1sMyxpPWw5O2lmKGw1PTAsbDY9bDM9bnVsbCxsOT0wLDAhPSg2JmxEKSl0aHJvdyBFcnJvcihsKDMzMSkpO3ZhciBzPWxEO2lmKGxEfD00LGxQKGEuY3VycmVudCksbF8oYSxhLmN1cnJlbnQsaSxuKSxsRD1zLHNIKDAsITEpLGVwJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlcC5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2VwLm9uUG9zdENvbW1pdEZpYmVyUm9vdChlZixhKX1jYXRjaChlKXt9cmV0dXJuITB9ZmluYWxseXtULnA9byxJLlQ9cixzaihlLHQpfX1mdW5jdGlvbiBzQihlLHQsbil7dD1ydShuLHQpLHQ9aWcoZS5zdGF0ZU5vZGUsdCwyKSxudWxsIT09KGU9b2soZSx0LDIpKSYmKGVFKGUsMiksc3EoZSkpfWZ1bmN0aW9uIHNQKGUsdCxuKXtpZigzPT09ZS50YWcpc0IoZSxlLG4pO2Vsc2UgZm9yKDtudWxsIT09dDspe2lmKDM9PT10LnRhZyl7c0IodCxlLG4pO2JyZWFrfWlmKDE9PT10LnRhZyl7dmFyIHI9dC5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT10eXBlb2Ygci5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1sNHx8IWw0LmhhcyhyKSkpe2U9cnUobixlKSxudWxsIT09KHI9b2sodCxuPWl5KDIpLDIpKSYmKGl2KG4scix0LGUpLGVFKHIsMiksc3EocikpO2JyZWFrfX10PXQucmV0dXJufX1mdW5jdGlvbiBzSShlLHQsbil7dmFyIHI9ZS5waW5nQ2FjaGU7aWYobnVsbD09PXIpe3I9ZS5waW5nQ2FjaGU9bmV3IGx6O3ZhciBvPW5ldyBTZXQ7ci5zZXQodCxvKX1lbHNlIHZvaWQgMD09PShvPXIuZ2V0KHQpKSYmKG89bmV3IFNldCxyLnNldCh0LG8pKTtvLmhhcyhuKXx8KGxxPSEwLG8uYWRkKG4pLGU9c1QuYmluZChudWxsLGUsdCxuKSx0LnRoZW4oZSxlKSl9ZnVuY3Rpb24gc1QoZSx0LG4pe3ZhciByPWUucGluZ0NhY2hlO251bGwhPT1yJiZyLmRlbGV0ZSh0KSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJm4sZS53YXJtTGFuZXMmPX5uLGxMPT09ZSYmKGxSJm4pPT09biYmKDQ9PT1sVnx8Mz09PWxWJiYoMHgzYzAwMDAwJmxSKT09PWxSJiYzMDA+ZXIoKS1sMD8wPT0oMiZsRCkmJnNkKGUsMCk6bFl8PW4sbFg9PT1sUiYmKGxYPTApKSxzcShlKX1mdW5jdGlvbiBzeihlLHQpezA9PT10JiYodD1lXygpKSxudWxsIT09KGU9bjMoZSx0KSkmJihlRShlLHQpLHNxKGUpKX1mdW5jdGlvbiBzRChlKXt2YXIgdD1lLm1lbW9pemVkU3RhdGUsbj0wO251bGwhPT10JiYobj10LnJldHJ5TGFuZSksc3ooZSxuKX1mdW5jdGlvbiBzTChlLHQpe3ZhciBuPTA7c3dpdGNoKGUudGFnKXtjYXNlIDMxOmNhc2UgMTM6dmFyIHI9ZS5zdGF0ZU5vZGUsbz1lLm1lbW9pemVkU3RhdGU7bnVsbCE9PW8mJihuPW8ucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OnI9ZS5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAyMjpyPWUuc3RhdGVOb2RlLl9yZXRyeUNhY2hlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMTQpKX1udWxsIT09ciYmci5kZWxldGUodCksc3ooZSxuKX12YXIgc049bnVsbCxzUj1udWxsLHNNPSExLHNaPSExLHNVPSExLHNGPTA7ZnVuY3Rpb24gc3EoZSl7ZSE9PXNSJiZudWxsPT09ZS5uZXh0JiYobnVsbD09PXNSP3NOPXNSPWU6c1I9c1IubmV4dD1lKSxzWj0hMCxzTXx8KHNNPSEwLGN4KGZ1bmN0aW9uKCl7MCE9KDYmbEQpP0ooZWEsc1YpOnMkKCl9KSl9ZnVuY3Rpb24gc0goZSx0KXtpZighc1UmJnNaKXtzVT0hMDtkbyBmb3IodmFyIG49ITEscj1zTjtudWxsIT09cjspe2lmKCF0KWlmKDAhPT1lKXt2YXIgbz1yLnBlbmRpbmdMYW5lcztpZigwPT09byl2YXIgYT0wO2Vsc2V7dmFyIGk9ci5zdXNwZW5kZWRMYW5lcyxsPXIucGluZ2VkTGFuZXM7YT0weGMwMDAwOTUmKGE9KDE8PDMxLWVtKDQyfGUpKzEpLTEmKG8mfihpJn5sKSkpPzB4YzAwMDA5NSZhfDE6YT8yfGE6MH0wIT09YSYmKG49ITAsc0socixhKSl9ZWxzZSBhPWxSLDA9PSgzJihhPWV4KHIscj09PWxMP2E6MCxudWxsIT09ci5jYW5jZWxQZW5kaW5nQ29tbWl0fHwtMSE9PXIudGltZW91dEhhbmRsZSkpKXx8ZXcocixhKXx8KG49ITAsc0socixhKSk7cj1yLm5leHR9d2hpbGUobik7c1U9ITF9fWZ1bmN0aW9uIHNWKCl7cyQoKX1mdW5jdGlvbiBzJCgpe3NaPXNNPSExO3ZhciBlLHQ9MDswPT09c0Z8fCgoZT13aW5kb3cuZXZlbnQpJiZcInBvcHN0YXRlXCI9PT1lLnR5cGU/ZT09PWN5fHwoY3k9ZSwwKTooY3k9bnVsbCwxKSl8fCh0PXNGKTtmb3IodmFyIG49ZXIoKSxyPW51bGwsbz1zTjtudWxsIT09bzspe3ZhciBhPW8ubmV4dCxpPXNXKG8sbik7MD09PWk/KG8ubmV4dD1udWxsLG51bGw9PT1yP3NOPWE6ci5uZXh0PWEsbnVsbD09PWEmJihzUj1yKSk6KHI9bywoMCE9PXR8fDAhPSgzJmkpKSYmKHNaPSEwKSksbz1hfTAhPT1sNSYmNSE9PWw1fHxzSCh0LCExKSwwIT09c0YmJihzRj0wKX1mdW5jdGlvbiBzVyhlLHQpe2Zvcih2YXIgbj1lLnN1c3BlbmRlZExhbmVzLHI9ZS5waW5nZWRMYW5lcyxvPWUuZXhwaXJhdGlvblRpbWVzLGE9LTB4M2MwMDAwMSZlLnBlbmRpbmdMYW5lczswPGE7KXt2YXIgaT0zMS1lbShhKSxsPTE8PGkscz1vW2ldOy0xPT09cz8oMD09KGwmbil8fDAhPShsJnIpKSYmKG9baV09ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA4OmNhc2UgNjQ6cmV0dXJuIHQrMjUwO2Nhc2UgMTY6Y2FzZSAzMjpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gdCs1ZTM7ZGVmYXVsdDpyZXR1cm4gLTF9fShsLHQpKTpzPD10JiYoZS5leHBpcmVkTGFuZXN8PWwpLGEmPX5sfWlmKHQ9bEwsbj1sUixuPWV4KGUsZT09PXQ/bjowLG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXR8fC0xIT09ZS50aW1lb3V0SGFuZGxlKSxyPWUuY2FsbGJhY2tOb2RlLDA9PT1ufHxlPT09dCYmKDI9PT1sTXx8OT09PWxNKXx8bnVsbCE9PWUuY2FuY2VsUGVuZGluZ0NvbW1pdClyZXR1cm4gbnVsbCE9PXImJm51bGwhPT1yJiZlZShyKSxlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO2lmKDA9PSgzJm4pfHxldyhlLG4pKXtpZigodD1uJi1uKT09PWUuY2FsbGJhY2tQcmlvcml0eSlyZXR1cm4gdDtzd2l0Y2gobnVsbCE9PXImJmVlKHIpLGVQKG4pKXtjYXNlIDI6Y2FzZSA4Om49ZWk7YnJlYWs7Y2FzZSAzMjpkZWZhdWx0Om49ZWw7YnJlYWs7Y2FzZSAweDEwMDAwMDAwOm49ZWN9cmV0dXJuIG49SihuLHI9c1kuYmluZChudWxsLGUpKSxlLmNhbGxiYWNrUHJpb3JpdHk9dCxlLmNhbGxiYWNrTm9kZT1uLHR9cmV0dXJuIG51bGwhPT1yJiZudWxsIT09ciYmZWUociksZS5jYWxsYmFja1ByaW9yaXR5PTIsZS5jYWxsYmFja05vZGU9bnVsbCwyfWZ1bmN0aW9uIHNZKGUsdCl7aWYoMCE9PWw1JiY1IT09bDUpcmV0dXJuIGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTAsbnVsbDt2YXIgbj1lLmNhbGxiYWNrTm9kZTtpZihzUyghMCkmJmUuY2FsbGJhY2tOb2RlIT09bilyZXR1cm4gbnVsbDt2YXIgcj1sUjtyZXR1cm4gMD09PShyPWV4KGUsZT09PWxMP3I6MCxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0fHwtMSE9PWUudGltZW91dEhhbmRsZSkpP251bGw6KHNpKGUscix0KSxzVyhlLGVyKCkpLG51bGwhPWUuY2FsbGJhY2tOb2RlJiZlLmNhbGxiYWNrTm9kZT09PW4/c1kuYmluZChudWxsLGUpOm51bGwpfWZ1bmN0aW9uIHNLKGUsdCl7aWYoc1MoKSlyZXR1cm4gbnVsbDtzaShlLHQsITApfWZ1bmN0aW9uIHNYKCl7aWYoMD09PXNGKXt2YXIgZT1yMztzRj0wIT09ZT9lOmVDKCl9cmV0dXJuIHNGfWZ1bmN0aW9uIHNHKGUpe3JldHVybiBudWxsPT1lfHxcInN5bWJvbFwiPT10eXBlb2YgZXx8XCJib29sZWFuXCI9PXR5cGVvZiBlP251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOnRtKFwiXCIrZSl9ZnVuY3Rpb24gc1EoZSx0KXt2YXIgbj10Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO3JldHVybiBuLm5hbWU9dC5uYW1lLG4udmFsdWU9dC52YWx1ZSxlLmlkJiZuLnNldEF0dHJpYnV0ZShcImZvcm1cIixlLmlkKSx0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sdCksZT1uZXcgRm9ybURhdGEoZSksbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLGV9Zm9yKHZhciBzSj0wO3NKPG5YLmxlbmd0aDtzSisrKXt2YXIgczA9blhbc0pdO25HKHMwLnRvTG93ZXJDYXNlKCksXCJvblwiKyhzMFswXS50b1VwcGVyQ2FzZSgpK3MwLnNsaWNlKDEpKSl9bkcobkYsXCJvbkFuaW1hdGlvbkVuZFwiKSxuRyhucSxcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpLG5HKG5ILFwib25BbmltYXRpb25TdGFydFwiKSxuRyhcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpLG5HKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKSxuRyhcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIiksbkcoblYsXCJvblRyYW5zaXRpb25SdW5cIiksbkcobiQsXCJvblRyYW5zaXRpb25TdGFydFwiKSxuRyhuVyxcIm9uVHJhbnNpdGlvbkNhbmNlbFwiKSxuRyhuWSxcIm9uVHJhbnNpdGlvbkVuZFwiKSxlUShcIm9uTW91c2VFbnRlclwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pLGVRKFwib25Nb3VzZUxlYXZlXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSksZVEoXCJvblBvaW50ZXJFbnRlclwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKSxlUShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pLGVHKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKSxlRyhcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpLGVHKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSksZUcoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSksZUcoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpLGVHKFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO3ZhciBzMT1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLHMyPW5ldyBTZXQoXCJiZWZvcmV0b2dnbGUgY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgc2Nyb2xsZW5kIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQoczEpKTtmdW5jdGlvbiBzNChlLHQpe3Q9MCE9KDQmdCk7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0sbz1yLmV2ZW50O3I9ci5saXN0ZW5lcnM7ZTp7dmFyIGE9dm9pZCAwO2lmKHQpZm9yKHZhciBpPXIubGVuZ3RoLTE7MDw9aTtpLS0pe3ZhciBsPXJbaV0scz1sLmluc3RhbmNlLGM9bC5jdXJyZW50VGFyZ2V0O2lmKGw9bC5saXN0ZW5lcixzIT09YSYmby5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7YT1sLG8uY3VycmVudFRhcmdldD1jO3RyeXthKG8pfWNhdGNoKGUpe25RKGUpfW8uY3VycmVudFRhcmdldD1udWxsLGE9c31lbHNlIGZvcihpPTA7aTxyLmxlbmd0aDtpKyspe2lmKHM9KGw9cltpXSkuaW5zdGFuY2UsYz1sLmN1cnJlbnRUYXJnZXQsbD1sLmxpc3RlbmVyLHMhPT1hJiZvLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTthPWwsby5jdXJyZW50VGFyZ2V0PWM7dHJ5e2Eobyl9Y2F0Y2goZSl7blEoZSl9by5jdXJyZW50VGFyZ2V0PW51bGwsYT1zfX19fWZ1bmN0aW9uIHM1KGUsdCl7dmFyIG49dFtlUl07dm9pZCAwPT09biYmKG49dFtlUl09bmV3IFNldCk7dmFyIHI9ZStcIl9fYnViYmxlXCI7bi5oYXMocil8fChzOCh0LGUsMiwhMSksbi5hZGQocikpfWZ1bmN0aW9uIHMzKGUsdCxuKXt2YXIgcj0wO3QmJihyfD00KSxzOChuLGUscix0KX12YXIgczY9XCJfcmVhY3RMaXN0ZW5pbmdcIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBzOShlKXtpZighZVtzNl0pe2VbczZdPSEwLGVLLmZvckVhY2goZnVuY3Rpb24odCl7XCJzZWxlY3Rpb25jaGFuZ2VcIiE9PXQmJihzMi5oYXModCl8fHMzKHQsITEsZSksczModCwhMCxlKSl9KTt2YXIgdD05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtudWxsPT09dHx8dFtzNl18fCh0W3M2XT0hMCxzMyhcInNlbGVjdGlvbmNoYW5nZVwiLCExLHQpKX19ZnVuY3Rpb24gczgoZSx0LG4scil7c3dpdGNoKHVkKHQpKXtjYXNlIDI6dmFyIG89dWE7YnJlYWs7Y2FzZSA4Om89dWk7YnJlYWs7ZGVmYXVsdDpvPXVsfW49by5iaW5kKG51bGwsdCxuLGUpLG89dm9pZCAwLHRFJiYoXCJ0b3VjaHN0YXJ0XCI9PT10fHxcInRvdWNobW92ZVwiPT09dHx8XCJ3aGVlbFwiPT09dCkmJihvPSEwKSxyP3ZvaWQgMCE9PW8/ZS5hZGRFdmVudExpc3RlbmVyKHQsbix7Y2FwdHVyZTohMCxwYXNzaXZlOm99KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKTp2b2lkIDAhPT1vP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se3Bhc3NpdmU6b30pOmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0aW9uIHM3KGUsdCxuLHIsbyl7dmFyIGE9cjtpZigwPT0oMSZ0KSYmMD09KDImdCkmJm51bGwhPT1yKWU6Zm9yKDs7KXtpZihudWxsPT09cilyZXR1cm47dmFyIGk9ci50YWc7aWYoMz09PWl8fDQ9PT1pKXt2YXIgbD1yLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGw9PT1vKWJyZWFrO2lmKDQ9PT1pKWZvcihpPXIucmV0dXJuO251bGwhPT1pOyl7dmFyIGM9aS50YWc7aWYoKDM9PT1jfHw0PT09YykmJmkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1vKXJldHVybjtpPWkucmV0dXJufWZvcig7bnVsbCE9PWw7KXtpZihudWxsPT09KGk9ZUgobCkpKXJldHVybjtpZig1PT09KGM9aS50YWcpfHw2PT09Y3x8MjY9PT1jfHwyNz09PWMpe3I9YT1pO2NvbnRpbnVlIGV9bD1sLnBhcmVudE5vZGV9fXI9ci5yZXR1cm59dEMoZnVuY3Rpb24oKXt2YXIgcj1hLG89dHYobiksaT1bXTtlOnt2YXIgbD1uSy5nZXQoZSk7aWYodm9pZCAwIT09bCl7dmFyIGM9dEYsdT1lO3N3aXRjaChlKXtjYXNlXCJrZXlwcmVzc1wiOmlmKDA9PT10SShuKSlicmVhayBlO2Nhc2VcImtleWRvd25cIjpjYXNlXCJrZXl1cFwiOmM9dDQ7YnJlYWs7Y2FzZVwiZm9jdXNpblwiOnU9XCJmb2N1c1wiLGM9dFk7YnJlYWs7Y2FzZVwiZm9jdXNvdXRcIjp1PVwiYmx1clwiLGM9dFk7YnJlYWs7Y2FzZVwiYmVmb3JlYmx1clwiOmNhc2VcImFmdGVyYmx1clwiOmM9dFk7YnJlYWs7Y2FzZVwiY2xpY2tcIjppZigyPT09bi5idXR0b24pYnJlYWsgZTtjYXNlXCJhdXhjbGlja1wiOmNhc2VcImRibGNsaWNrXCI6Y2FzZVwibW91c2Vkb3duXCI6Y2FzZVwibW91c2Vtb3ZlXCI6Y2FzZVwibW91c2V1cFwiOmNhc2VcIm1vdXNlb3V0XCI6Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwiY29udGV4dG1lbnVcIjpjPXQkO2JyZWFrO2Nhc2VcImRyYWdcIjpjYXNlXCJkcmFnZW5kXCI6Y2FzZVwiZHJhZ2VudGVyXCI6Y2FzZVwiZHJhZ2V4aXRcIjpjYXNlXCJkcmFnbGVhdmVcIjpjYXNlXCJkcmFnb3ZlclwiOmNhc2VcImRyYWdzdGFydFwiOmNhc2VcImRyb3BcIjpjPXRXO2JyZWFrO2Nhc2VcInRvdWNoY2FuY2VsXCI6Y2FzZVwidG91Y2hlbmRcIjpjYXNlXCJ0b3VjaG1vdmVcIjpjYXNlXCJ0b3VjaHN0YXJ0XCI6Yz10MzticmVhaztjYXNlIG5GOmNhc2UgbnE6Y2FzZSBuSDpjPXRLO2JyZWFrO2Nhc2Ugblk6Yz10NjticmVhaztjYXNlXCJzY3JvbGxcIjpjYXNlXCJzY3JvbGxlbmRcIjpjPXRIO2JyZWFrO2Nhc2VcIndoZWVsXCI6Yz10OTticmVhaztjYXNlXCJjb3B5XCI6Y2FzZVwiY3V0XCI6Y2FzZVwicGFzdGVcIjpjPXRYO2JyZWFrO2Nhc2VcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZVwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZVwicG9pbnRlcmNhbmNlbFwiOmNhc2VcInBvaW50ZXJkb3duXCI6Y2FzZVwicG9pbnRlcm1vdmVcIjpjYXNlXCJwb2ludGVyb3V0XCI6Y2FzZVwicG9pbnRlcm92ZXJcIjpjYXNlXCJwb2ludGVydXBcIjpjPXQ1O2JyZWFrO2Nhc2VcInRvZ2dsZVwiOmNhc2VcImJlZm9yZXRvZ2dsZVwiOmM9dDh9dmFyIGQ9MCE9KDQmdCksZj0hZCYmKFwic2Nyb2xsXCI9PT1lfHxcInNjcm9sbGVuZFwiPT09ZSkscD1kP251bGwhPT1sP2wrXCJDYXB0dXJlXCI6bnVsbDpsO2Q9W107Zm9yKHZhciBoLG09cjtudWxsIT09bTspe3ZhciBnPW07aWYoaD1nLnN0YXRlTm9kZSw1IT09KGc9Zy50YWcpJiYyNiE9PWcmJjI3IT09Z3x8bnVsbD09PWh8fG51bGw9PT1wfHxudWxsIT0oZz10XyhtLHApKSYmZC5wdXNoKGNlKG0sZyxoKSksZilicmVhazttPW0ucmV0dXJufTA8ZC5sZW5ndGgmJihsPW5ldyBjKGwsdSxudWxsLG4sbyksaS5wdXNoKHtldmVudDpsLGxpc3RlbmVyczpkfSkpfX1pZigwPT0oNyZ0KSl7aWYoKGw9XCJtb3VzZW92ZXJcIj09PWV8fFwicG9pbnRlcm92ZXJcIj09PWUsYz1cIm1vdXNlb3V0XCI9PT1lfHxcInBvaW50ZXJvdXRcIj09PWUsIShsJiZuIT09dHkmJih1PW4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkmJihlSCh1KXx8dVtlTl0pKSkmJihjfHxsKSYmKGw9by53aW5kb3c9PT1vP286KGw9by5vd25lckRvY3VtZW50KT9sLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvdzp3aW5kb3csYz8odT1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50LGM9cixudWxsIT09KHU9dT9lSCh1KTpudWxsKSYmKGY9cyh1KSxkPXUudGFnLHUhPT1mfHw1IT09ZCYmMjchPT1kJiY2IT09ZCkmJih1PW51bGwpKTooYz1udWxsLHU9ciksYyE9PXUpKXtpZihkPXQkLGc9XCJvbk1vdXNlTGVhdmVcIixwPVwib25Nb3VzZUVudGVyXCIsbT1cIm1vdXNlXCIsKFwicG9pbnRlcm91dFwiPT09ZXx8XCJwb2ludGVyb3ZlclwiPT09ZSkmJihkPXQ1LGc9XCJvblBvaW50ZXJMZWF2ZVwiLHA9XCJvblBvaW50ZXJFbnRlclwiLG09XCJwb2ludGVyXCIpLGY9bnVsbD09Yz9sOmUkKGMpLGg9bnVsbD09dT9sOmUkKHUpLChsPW5ldyBkKGcsbStcImxlYXZlXCIsYyxuLG8pKS50YXJnZXQ9ZixsLnJlbGF0ZWRUYXJnZXQ9aCxnPW51bGwsZUgobyk9PT1yJiYoKGQ9bmV3IGQocCxtK1wiZW50ZXJcIix1LG4sbykpLnRhcmdldD1oLGQucmVsYXRlZFRhcmdldD1mLGc9ZCksZj1nLGMmJnUpdDp7Zm9yKGQ9Y24scD1jLG09dSxoPTAsZz1wO2c7Zz1kKGcpKWgrKztnPTA7Zm9yKHZhciB5LHY9bTt2O3Y9ZCh2KSlnKys7Zm9yKDswPGgtZzspcD1kKHApLGgtLTtmb3IoOzA8Zy1oOyltPWQobSksZy0tO2Zvcig7aC0tOyl7aWYocD09PW18fG51bGwhPT1tJiZwPT09bS5hbHRlcm5hdGUpe2Q9cDticmVhayB0fXA9ZChwKSxtPWQobSl9ZD1udWxsfWVsc2UgZD1udWxsO251bGwhPT1jJiZjcihpLGwsYyxkLCExKSxudWxsIT09dSYmbnVsbCE9PWYmJmNyKGksZix1LGQsITApfWU6e2lmKFwic2VsZWN0XCI9PT0oYz0obD1yP2UkKHIpOndpbmRvdykubm9kZU5hbWUmJmwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl8fFwiaW5wdXRcIj09PWMmJlwiZmlsZVwiPT09bC50eXBlKXZhciBiPW5tO2Vsc2UgaWYobmMobCkpaWYobmcpYj1uXztlbHNle2I9bnc7dmFyIEE9bnh9ZWxzZShjPWwubm9kZU5hbWUpJiZcImlucHV0XCI9PT1jLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1sLnR5cGV8fFwicmFkaW9cIj09PWwudHlwZSk/Yj1uQzpyJiZ0ZihyLmVsZW1lbnRUeXBlKSYmKGI9bm0pO2lmKGImJihiPWIoZSxyKSkpe251KGksYixuLG8pO2JyZWFrIGV9QSYmQShlLGwsciksXCJmb2N1c291dFwiPT09ZSYmciYmXCJudW1iZXJcIj09PWwudHlwZSYmbnVsbCE9ci5tZW1vaXplZFByb3BzLnZhbHVlJiZ0byhsLFwibnVtYmVyXCIsbC52YWx1ZSl9c3dpdGNoKEE9cj9lJChyKTp3aW5kb3csZSl7Y2FzZVwiZm9jdXNpblwiOihuYyhBKXx8XCJ0cnVlXCI9PT1BLmNvbnRlbnRFZGl0YWJsZSkmJihuST1BLG5UPXIsbno9bnVsbCk7YnJlYWs7Y2FzZVwiZm9jdXNvdXRcIjpuej1uVD1uST1udWxsO2JyZWFrO2Nhc2VcIm1vdXNlZG93blwiOm5EPSEwO2JyZWFrO2Nhc2VcImNvbnRleHRtZW51XCI6Y2FzZVwibW91c2V1cFwiOmNhc2VcImRyYWdlbmRcIjpuRD0hMSxuTChpLG4sbyk7YnJlYWs7Y2FzZVwic2VsZWN0aW9uY2hhbmdlXCI6aWYoblApYnJlYWs7Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXVwXCI6bkwoaSxuLG8pfWlmKG5lKXQ6e3N3aXRjaChlKXtjYXNlXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIHg9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIjticmVhayB0O2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6eD1cIm9uQ29tcG9zaXRpb25FbmRcIjticmVhayB0O2Nhc2VcImNvbXBvc2l0aW9udXBkYXRlXCI6eD1cIm9uQ29tcG9zaXRpb25VcGRhdGVcIjticmVhayB0fXg9dm9pZCAwfWVsc2Ugbmw/bmEoZSxuKSYmKHg9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09ZSYmMjI5PT09bi5rZXlDb2RlJiYoeD1cIm9uQ29tcG9zaXRpb25TdGFydFwiKTt4JiYobnImJlwia29cIiE9PW4ubG9jYWxlJiYobmx8fFwib25Db21wb3NpdGlvblN0YXJ0XCIhPT14P1wib25Db21wb3NpdGlvbkVuZFwiPT09eCYmbmwmJih5PXRQKCkpOih0Tz1cInZhbHVlXCJpbih0Uz1vKT90Uy52YWx1ZTp0Uy50ZXh0Q29udGVudCxubD0hMCkpLDA8KEE9Y3Qocix4KSkubGVuZ3RoJiYoeD1uZXcgdEcoeCxlLG51bGwsbixvKSxpLnB1c2goe2V2ZW50OngsbGlzdGVuZXJzOkF9KSx5P3guZGF0YT15Om51bGwhPT0oeT1uaShuKSkmJih4LmRhdGE9eSkpKSwoeT1ubj9mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBuaSh0KTtjYXNlXCJrZXlwcmVzc1wiOmlmKDMyIT09dC53aGljaClyZXR1cm4gbnVsbDtyZXR1cm4gbm89ITAsXCIgXCI7Y2FzZVwidGV4dElucHV0XCI6cmV0dXJuXCIgXCI9PT0oZT10LmRhdGEpJiZubz9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsbik6ZnVuY3Rpb24oZSx0KXtpZihubClyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1lfHwhbmUmJm5hKGUsdCk/KGU9dFAoKSx0Qj10Tz10Uz1udWxsLG5sPSExLGUpOm51bGw7c3dpdGNoKGUpe2Nhc2VcInBhc3RlXCI6ZGVmYXVsdDpyZXR1cm4gbnVsbDtjYXNlXCJrZXlwcmVzc1wiOmlmKCEodC5jdHJsS2V5fHx0LmFsdEtleXx8dC5tZXRhS2V5KXx8dC5jdHJsS2V5JiZ0LmFsdEtleSl7aWYodC5jaGFyJiYxPHQuY2hhci5sZW5ndGgpcmV0dXJuIHQuY2hhcjtpZih0LndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpfXJldHVybiBudWxsO2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIG5yJiZcImtvXCIhPT10LmxvY2FsZT9udWxsOnQuZGF0YX19KGUsbikpJiYwPCh4PWN0KHIsXCJvbkJlZm9yZUlucHV0XCIpKS5sZW5ndGgmJihBPW5ldyB0RyhcIm9uQmVmb3JlSW5wdXRcIixcImJlZm9yZWlucHV0XCIsbnVsbCxuLG8pLGkucHVzaCh7ZXZlbnQ6QSxsaXN0ZW5lcnM6eH0pLEEuZGF0YT15KTt2YXIgdz1lO2lmKFwic3VibWl0XCI9PT13JiZyJiZyLnN0YXRlTm9kZT09PW8pe3ZhciBDPXNHKChvW2VMXXx8bnVsbCkuYWN0aW9uKSxfPW4uc3VibWl0dGVyO18mJm51bGwhPT0odz0odz1fW2VMXXx8bnVsbCk/c0cody5mb3JtQWN0aW9uKTpfLmdldEF0dHJpYnV0ZShcImZvcm1BY3Rpb25cIikpJiYoQz13LF89bnVsbCk7dmFyIGs9bmV3IHRGKFwiYWN0aW9uXCIsXCJhY3Rpb25cIixudWxsLG4sbyk7aS5wdXNoKHtldmVudDprLGxpc3RlbmVyczpbe2luc3RhbmNlOm51bGwsbGlzdGVuZXI6ZnVuY3Rpb24oKXtpZihuLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKDAhPT1zRil7dmFyIGU9Xz9zUShvLF8pOm5ldyBGb3JtRGF0YShvKTthWChyLHtwZW5kaW5nOiEwLGRhdGE6ZSxtZXRob2Q6by5tZXRob2QsYWN0aW9uOkN9LG51bGwsZSl9fWVsc2VcImZ1bmN0aW9uXCI9PXR5cGVvZiBDJiYoay5wcmV2ZW50RGVmYXVsdCgpLGFYKHIse3BlbmRpbmc6ITAsZGF0YTplPV8/c1EobyxfKTpuZXcgRm9ybURhdGEobyksbWV0aG9kOm8ubWV0aG9kLGFjdGlvbjpDfSxDLGUpKX0sY3VycmVudFRhcmdldDpvfV19KX19czQoaSx0KX0pfWZ1bmN0aW9uIGNlKGUsdCxuKXtyZXR1cm57aW5zdGFuY2U6ZSxsaXN0ZW5lcjp0LGN1cnJlbnRUYXJnZXQ6bn19ZnVuY3Rpb24gY3QoZSx0KXtmb3IodmFyIG49dCtcIkNhcHR1cmVcIixyPVtdO251bGwhPT1lOyl7dmFyIG89ZSxhPW8uc3RhdGVOb2RlO2lmKDUhPT0obz1vLnRhZykmJjI2IT09byYmMjchPT1vfHxudWxsPT09YXx8KG51bGwhPShvPXRfKGUsbikpJiZyLnVuc2hpZnQoY2UoZSxvLGEpKSxudWxsIT0obz10XyhlLHQpKSYmci5wdXNoKGNlKGUsbyxhKSkpLDM9PT1lLnRhZylyZXR1cm4gcjtlPWUucmV0dXJufXJldHVybltdfWZ1bmN0aW9uIGNuKGUpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO2RvIGU9ZS5yZXR1cm47d2hpbGUoZSYmNSE9PWUudGFnJiYyNyE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBjcihlLHQsbixyLG8pe2Zvcih2YXIgYT10Ll9yZWFjdE5hbWUsaT1bXTtudWxsIT09biYmbiE9PXI7KXt2YXIgbD1uLHM9bC5hbHRlcm5hdGUsYz1sLnN0YXRlTm9kZTtpZihsPWwudGFnLG51bGwhPT1zJiZzPT09cilicmVhazs1IT09bCYmMjYhPT1sJiYyNyE9PWx8fG51bGw9PT1jfHwocz1jLG8/bnVsbCE9KGM9dF8obixhKSkmJmkudW5zaGlmdChjZShuLGMscykpOm98fG51bGwhPShjPXRfKG4sYSkpJiZpLnB1c2goY2UobixjLHMpKSksbj1uLnJldHVybn0wIT09aS5sZW5ndGgmJmUucHVzaCh7ZXZlbnQ6dCxsaXN0ZW5lcnM6aX0pfXZhciBjbz0vXFxyXFxuPy9nLGNhPS9cXHUwMDAwfFxcdUZGRkQvZztmdW5jdGlvbiBjaShlKXtyZXR1cm4oXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcIlwiK2UpLnJlcGxhY2UoY28sXCJcXG5cIikucmVwbGFjZShjYSxcIlwiKX1mdW5jdGlvbiBjbChlLHQpe3JldHVybiB0PWNpKHQpLGNpKGUpPT09dH1mdW5jdGlvbiBjcyhlLHQsbixyLG8sYSl7c3dpdGNoKG4pe2Nhc2VcImNoaWxkcmVuXCI6XCJzdHJpbmdcIj09dHlwZW9mIHI/XCJib2R5XCI9PT10fHxcInRleHRhcmVhXCI9PT10JiZcIlwiPT09cnx8dHMoZSxyKTooXCJudW1iZXJcIj09dHlwZW9mIHJ8fFwiYmlnaW50XCI9PXR5cGVvZiByKSYmXCJib2R5XCIhPT10JiZ0cyhlLFwiXCIrcik7YnJlYWs7Y2FzZVwiY2xhc3NOYW1lXCI6ZTQoZSxcImNsYXNzXCIscik7YnJlYWs7Y2FzZVwidGFiSW5kZXhcIjplNChlLFwidGFiaW5kZXhcIixyKTticmVhaztjYXNlXCJkaXJcIjpjYXNlXCJyb2xlXCI6Y2FzZVwidmlld0JveFwiOmNhc2VcIndpZHRoXCI6Y2FzZVwiaGVpZ2h0XCI6ZTQoZSxuLHIpO2JyZWFrO2Nhc2VcInN0eWxlXCI6dGQoZSxyLGEpO2JyZWFrO2Nhc2VcImRhdGFcIjppZihcIm9iamVjdFwiIT09dCl7ZTQoZSxcImRhdGFcIixyKTticmVha31jYXNlXCJzcmNcIjpjYXNlXCJocmVmXCI6aWYoXCJcIj09PXImJihcImFcIiE9PXR8fFwiaHJlZlwiIT09bil8fG51bGw9PXJ8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHJ8fFwic3ltYm9sXCI9PXR5cGVvZiByfHxcImJvb2xlYW5cIj09dHlwZW9mIHIpe2UucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrfXI9dG0oXCJcIityKSxlLnNldEF0dHJpYnV0ZShuLHIpO2JyZWFrO2Nhc2VcImFjdGlvblwiOmNhc2VcImZvcm1BY3Rpb25cIjppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXtlLnNldEF0dHJpYnV0ZShuLFwiamF2YXNjcmlwdDp0aHJvdyBuZXcgRXJyb3IoJ0EgUmVhY3QgZm9ybSB3YXMgdW5leHBlY3RlZGx5IHN1Ym1pdHRlZC4gSWYgeW91IGNhbGxlZCBmb3JtLnN1Ym1pdCgpIG1hbnVhbGx5LCBjb25zaWRlciB1c2luZyBmb3JtLnJlcXVlc3RTdWJtaXQoKSBpbnN0ZWFkLiBJZiB5b3VcXFxcJ3JlIHRyeWluZyB0byB1c2UgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgaW4gYSBzdWJtaXQgZXZlbnQgaGFuZGxlciwgY29uc2lkZXIgYWxzbyBjYWxsaW5nIGV2ZW50LnByZXZlbnREZWZhdWx0KCkuJylcIik7YnJlYWt9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYSYmKFwiZm9ybUFjdGlvblwiPT09bj8oXCJpbnB1dFwiIT09dCYmY3MoZSx0LFwibmFtZVwiLG8ubmFtZSxvLG51bGwpLGNzKGUsdCxcImZvcm1FbmNUeXBlXCIsby5mb3JtRW5jVHlwZSxvLG51bGwpLGNzKGUsdCxcImZvcm1NZXRob2RcIixvLmZvcm1NZXRob2QsbyxudWxsKSxjcyhlLHQsXCJmb3JtVGFyZ2V0XCIsby5mb3JtVGFyZ2V0LG8sbnVsbCkpOihjcyhlLHQsXCJlbmNUeXBlXCIsby5lbmNUeXBlLG8sbnVsbCksY3MoZSx0LFwibWV0aG9kXCIsby5tZXRob2QsbyxudWxsKSxjcyhlLHQsXCJ0YXJnZXRcIixvLnRhcmdldCxvLG51bGwpKSksbnVsbD09cnx8XCJzeW1ib2xcIj09dHlwZW9mIHJ8fFwiYm9vbGVhblwiPT10eXBlb2Ygcil7ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWt9cj10bShcIlwiK3IpLGUuc2V0QXR0cmlidXRlKG4scik7YnJlYWs7Y2FzZVwib25DbGlja1wiOm51bGwhPXImJihlLm9uY2xpY2s9dGcpO2JyZWFrO2Nhc2VcIm9uU2Nyb2xsXCI6bnVsbCE9ciYmczUoXCJzY3JvbGxcIixlKTticmVhaztjYXNlXCJvblNjcm9sbEVuZFwiOm51bGwhPXImJnM1KFwic2Nyb2xsZW5kXCIsZSk7YnJlYWs7Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1yKXtpZihcIm9iamVjdFwiIT10eXBlb2Ygcnx8IShcIl9faHRtbFwiaW4gcikpdGhyb3cgRXJyb3IobCg2MSkpO2lmKG51bGwhPShuPXIuX19odG1sKSl7aWYobnVsbCE9by5jaGlsZHJlbil0aHJvdyBFcnJvcihsKDYwKSk7ZS5pbm5lckhUTUw9bn19YnJlYWs7Y2FzZVwibXVsdGlwbGVcIjplLm11bHRpcGxlPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByO2JyZWFrO2Nhc2VcIm11dGVkXCI6ZS5tdXRlZD1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2YgcjticmVhaztjYXNlXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpjYXNlXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpjYXNlXCJkZWZhdWx0VmFsdWVcIjpjYXNlXCJkZWZhdWx0Q2hlY2tlZFwiOmNhc2VcImlubmVySFRNTFwiOmNhc2VcInJlZlwiOmNhc2VcImF1dG9Gb2N1c1wiOmNhc2VcImlubmVyVGV4dFwiOmNhc2VcInRleHRDb250ZW50XCI6YnJlYWs7Y2FzZVwieGxpbmtIcmVmXCI6aWYobnVsbD09cnx8XCJmdW5jdGlvblwiPT10eXBlb2Ygcnx8XCJib29sZWFuXCI9PXR5cGVvZiByfHxcInN5bWJvbFwiPT10eXBlb2Ygcil7ZS5yZW1vdmVBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpO2JyZWFrfW49dG0oXCJcIityKSxlLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6aHJlZlwiLG4pO2JyZWFrO2Nhc2VcImNvbnRlbnRFZGl0YWJsZVwiOmNhc2VcInNwZWxsQ2hlY2tcIjpjYXNlXCJkcmFnZ2FibGVcIjpjYXNlXCJ2YWx1ZVwiOmNhc2VcImF1dG9SZXZlcnNlXCI6Y2FzZVwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiOmNhc2VcImZvY3VzYWJsZVwiOmNhc2VcInByZXNlcnZlQWxwaGFcIjpudWxsIT1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2Ygcj9lLnNldEF0dHJpYnV0ZShuLFwiXCIrcik6ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWs7Y2FzZVwiaW5lcnRcIjpjYXNlXCJhbGxvd0Z1bGxTY3JlZW5cIjpjYXNlXCJhc3luY1wiOmNhc2VcImF1dG9QbGF5XCI6Y2FzZVwiY29udHJvbHNcIjpjYXNlXCJkZWZhdWx0XCI6Y2FzZVwiZGVmZXJcIjpjYXNlXCJkaXNhYmxlZFwiOmNhc2VcImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlXCI6Y2FzZVwiZGlzYWJsZVJlbW90ZVBsYXliYWNrXCI6Y2FzZVwiZm9ybU5vVmFsaWRhdGVcIjpjYXNlXCJoaWRkZW5cIjpjYXNlXCJsb29wXCI6Y2FzZVwibm9Nb2R1bGVcIjpjYXNlXCJub1ZhbGlkYXRlXCI6Y2FzZVwib3BlblwiOmNhc2VcInBsYXlzSW5saW5lXCI6Y2FzZVwicmVhZE9ubHlcIjpjYXNlXCJyZXF1aXJlZFwiOmNhc2VcInJldmVyc2VkXCI6Y2FzZVwic2NvcGVkXCI6Y2FzZVwic2VhbWxlc3NcIjpjYXNlXCJpdGVtU2NvcGVcIjpyJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2Ygcj9lLnNldEF0dHJpYnV0ZShuLFwiXCIpOmUucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrO2Nhc2VcImNhcHR1cmVcIjpjYXNlXCJkb3dubG9hZFwiOiEwPT09cj9lLnNldEF0dHJpYnV0ZShuLFwiXCIpOiExIT09ciYmbnVsbCE9ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHI/ZS5zZXRBdHRyaWJ1dGUobixyKTplLnJlbW92ZUF0dHJpYnV0ZShuKTticmVhaztjYXNlXCJjb2xzXCI6Y2FzZVwicm93c1wiOmNhc2VcInNpemVcIjpjYXNlXCJzcGFuXCI6bnVsbCE9ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHImJiFpc05hTihyKSYmMTw9cj9lLnNldEF0dHJpYnV0ZShuLHIpOmUucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrO2Nhc2VcInJvd1NwYW5cIjpjYXNlXCJzdGFydFwiOm51bGw9PXJ8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHJ8fFwic3ltYm9sXCI9PXR5cGVvZiByfHxpc05hTihyKT9lLnJlbW92ZUF0dHJpYnV0ZShuKTplLnNldEF0dHJpYnV0ZShuLHIpO2JyZWFrO2Nhc2VcInBvcG92ZXJcIjpzNShcImJlZm9yZXRvZ2dsZVwiLGUpLHM1KFwidG9nZ2xlXCIsZSksZTIoZSxcInBvcG92ZXJcIixyKTticmVhaztjYXNlXCJ4bGlua0FjdHVhdGVcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6YWN0dWF0ZVwiLHIpO2JyZWFrO2Nhc2VcInhsaW5rQXJjcm9sZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazphcmNyb2xlXCIscik7YnJlYWs7Y2FzZVwieGxpbmtSb2xlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOnJvbGVcIixyKTticmVhaztjYXNlXCJ4bGlua1Nob3dcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6c2hvd1wiLHIpO2JyZWFrO2Nhc2VcInhsaW5rVGl0bGVcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6dGl0bGVcIixyKTticmVhaztjYXNlXCJ4bGlua1R5cGVcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6dHlwZVwiLHIpO2JyZWFrO2Nhc2VcInhtbEJhc2VcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXCJ4bWw6YmFzZVwiLHIpO2JyZWFrO2Nhc2VcInhtbExhbmdcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXCJ4bWw6bGFuZ1wiLHIpO2JyZWFrO2Nhc2VcInhtbFNwYWNlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFwieG1sOnNwYWNlXCIscik7YnJlYWs7Y2FzZVwiaXNcIjplMihlLFwiaXNcIixyKTticmVhaztkZWZhdWx0OjI8bi5sZW5ndGgmJihcIm9cIj09PW5bMF18fFwiT1wiPT09blswXSkmJihcIm5cIj09PW5bMV18fFwiTlwiPT09blsxXSl8fGUyKGUsbj10cC5nZXQobil8fG4scil9fWZ1bmN0aW9uIGNjKGUsdCxuLHIsbyxhKXtzd2l0Y2gobil7Y2FzZVwic3R5bGVcIjp0ZChlLHIsYSk7YnJlYWs7Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1yKXtpZihcIm9iamVjdFwiIT10eXBlb2Ygcnx8IShcIl9faHRtbFwiaW4gcikpdGhyb3cgRXJyb3IobCg2MSkpO2lmKG51bGwhPShuPXIuX19odG1sKSl7aWYobnVsbCE9by5jaGlsZHJlbil0aHJvdyBFcnJvcihsKDYwKSk7ZS5pbm5lckhUTUw9bn19YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpcInN0cmluZ1wiPT10eXBlb2Ygcj90cyhlLHIpOihcIm51bWJlclwiPT10eXBlb2Ygcnx8XCJiaWdpbnRcIj09dHlwZW9mIHIpJiZ0cyhlLFwiXCIrcik7YnJlYWs7Y2FzZVwib25TY3JvbGxcIjpudWxsIT1yJiZzNShcInNjcm9sbFwiLGUpO2JyZWFrO2Nhc2VcIm9uU2Nyb2xsRW5kXCI6bnVsbCE9ciYmczUoXCJzY3JvbGxlbmRcIixlKTticmVhaztjYXNlXCJvbkNsaWNrXCI6bnVsbCE9ciYmKGUub25jbGljaz10Zyk7YnJlYWs7Y2FzZVwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCI6Y2FzZVwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6Y2FzZVwiaW5uZXJIVE1MXCI6Y2FzZVwicmVmXCI6Y2FzZVwiaW5uZXJUZXh0XCI6Y2FzZVwidGV4dENvbnRlbnRcIjpicmVhaztkZWZhdWx0OmlmKCFlWC5oYXNPd25Qcm9wZXJ0eShuKSllOntpZihcIm9cIj09PW5bMF0mJlwiblwiPT09blsxXSYmKG89bi5lbmRzV2l0aChcIkNhcHR1cmVcIiksdD1uLnNsaWNlKDIsbz9uLmxlbmd0aC03OnZvaWQgMCksXCJmdW5jdGlvblwiPT10eXBlb2YoYT1udWxsIT0oYT1lW2VMXXx8bnVsbCk/YVtuXTpudWxsKSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsYSxvKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiByKSl7XCJmdW5jdGlvblwiIT10eXBlb2YgYSYmbnVsbCE9PWEmJihuIGluIGU/ZVtuXT1udWxsOmUuaGFzQXR0cmlidXRlKG4pJiZlLnJlbW92ZUF0dHJpYnV0ZShuKSksZS5hZGRFdmVudExpc3RlbmVyKHQscixvKTticmVhayBlfW4gaW4gZT9lW25dPXI6ITA9PT1yP2Uuc2V0QXR0cmlidXRlKG4sXCJcIik6ZTIoZSxuLHIpfX19ZnVuY3Rpb24gY3UoZSx0LG4pe3N3aXRjaCh0KXtjYXNlXCJkaXZcIjpjYXNlXCJzcGFuXCI6Y2FzZVwic3ZnXCI6Y2FzZVwicGF0aFwiOmNhc2VcImFcIjpjYXNlXCJnXCI6Y2FzZVwicFwiOmNhc2VcImxpXCI6YnJlYWs7Y2FzZVwiaW1nXCI6czUoXCJlcnJvclwiLGUpLHM1KFwibG9hZFwiLGUpO3ZhciByLG89ITEsYT0hMTtmb3IociBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkocikpe3ZhciBpPW5bcl07aWYobnVsbCE9aSlzd2l0Y2gocil7Y2FzZVwic3JjXCI6bz0hMDticmVhaztjYXNlXCJzcmNTZXRcIjphPSEwO2JyZWFrO2Nhc2VcImNoaWxkcmVuXCI6Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjp0aHJvdyBFcnJvcihsKDEzNyx0KSk7ZGVmYXVsdDpjcyhlLHQscixpLG4sbnVsbCl9fWEmJmNzKGUsdCxcInNyY1NldFwiLG4uc3JjU2V0LG4sbnVsbCksbyYmY3MoZSx0LFwic3JjXCIsbi5zcmMsbixudWxsKTtyZXR1cm47Y2FzZVwiaW5wdXRcIjpzNShcImludmFsaWRcIixlKTt2YXIgcz1yPWk9YT1udWxsLGM9bnVsbCx1PW51bGw7Zm9yKG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXt2YXIgZD1uW29dO2lmKG51bGwhPWQpc3dpdGNoKG8pe2Nhc2VcIm5hbWVcIjphPWQ7YnJlYWs7Y2FzZVwidHlwZVwiOmk9ZDticmVhaztjYXNlXCJjaGVja2VkXCI6Yz1kO2JyZWFrO2Nhc2VcImRlZmF1bHRDaGVja2VkXCI6dT1kO2JyZWFrO2Nhc2VcInZhbHVlXCI6cj1kO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOnM9ZDticmVhaztjYXNlXCJjaGlsZHJlblwiOmNhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9ZCl0aHJvdyBFcnJvcihsKDEzNyx0KSk7YnJlYWs7ZGVmYXVsdDpjcyhlLHQsbyxkLG4sbnVsbCl9fXRyKGUscixzLGMsdSxpLGEsITEpO3JldHVybjtjYXNlXCJzZWxlY3RcIjpmb3IoYSBpbiBzNShcImludmFsaWRcIixlKSxvPWk9cj1udWxsLG4paWYobi5oYXNPd25Qcm9wZXJ0eShhKSYmbnVsbCE9KHM9blthXSkpc3dpdGNoKGEpe2Nhc2VcInZhbHVlXCI6cj1zO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOmk9czticmVhaztjYXNlXCJtdWx0aXBsZVwiOm89cztkZWZhdWx0OmNzKGUsdCxhLHMsbixudWxsKX10PXIsbj1pLGUubXVsdGlwbGU9ISFvLG51bGwhPXQ/dGEoZSwhIW8sdCwhMSk6bnVsbCE9biYmdGEoZSwhIW8sbiwhMCk7cmV0dXJuO2Nhc2VcInRleHRhcmVhXCI6Zm9yKGkgaW4gczUoXCJpbnZhbGlkXCIsZSkscj1hPW89bnVsbCxuKWlmKG4uaGFzT3duUHJvcGVydHkoaSkmJm51bGwhPShzPW5baV0pKXN3aXRjaChpKXtjYXNlXCJ2YWx1ZVwiOm89czticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjphPXM7YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpyPXM7YnJlYWs7Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1zKXRocm93IEVycm9yKGwoOTEpKTticmVhaztkZWZhdWx0OmNzKGUsdCxpLHMsbixudWxsKX10bChlLG8sYSxyKTtyZXR1cm47Y2FzZVwib3B0aW9uXCI6Zm9yKGMgaW4gbiluLmhhc093blByb3BlcnR5KGMpJiZudWxsIT0obz1uW2NdKSYmKFwic2VsZWN0ZWRcIj09PWM/ZS5zZWxlY3RlZD1vJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBvJiZcInN5bWJvbFwiIT10eXBlb2YgbzpjcyhlLHQsYyxvLG4sbnVsbCkpO3JldHVybjtjYXNlXCJkaWFsb2dcIjpzNShcImJlZm9yZXRvZ2dsZVwiLGUpLHM1KFwidG9nZ2xlXCIsZSksczUoXCJjYW5jZWxcIixlKSxzNShcImNsb3NlXCIsZSk7YnJlYWs7Y2FzZVwiaWZyYW1lXCI6Y2FzZVwib2JqZWN0XCI6czUoXCJsb2FkXCIsZSk7YnJlYWs7Y2FzZVwidmlkZW9cIjpjYXNlXCJhdWRpb1wiOmZvcihvPTA7bzxzMS5sZW5ndGg7bysrKXM1KHMxW29dLGUpO2JyZWFrO2Nhc2VcImltYWdlXCI6czUoXCJlcnJvclwiLGUpLHM1KFwibG9hZFwiLGUpO2JyZWFrO2Nhc2VcImRldGFpbHNcIjpzNShcInRvZ2dsZVwiLGUpO2JyZWFrO2Nhc2VcImVtYmVkXCI6Y2FzZVwic291cmNlXCI6Y2FzZVwibGlua1wiOnM1KFwiZXJyb3JcIixlKSxzNShcImxvYWRcIixlKTtjYXNlXCJhcmVhXCI6Y2FzZVwiYmFzZVwiOmNhc2VcImJyXCI6Y2FzZVwiY29sXCI6Y2FzZVwiaHJcIjpjYXNlXCJrZXlnZW5cIjpjYXNlXCJtZXRhXCI6Y2FzZVwicGFyYW1cIjpjYXNlXCJ0cmFja1wiOmNhc2VcIndiclwiOmNhc2VcIm1lbnVpdGVtXCI6Zm9yKHUgaW4gbilpZihuLmhhc093blByb3BlcnR5KHUpJiZudWxsIT0obz1uW3VdKSlzd2l0Y2godSl7Y2FzZVwiY2hpbGRyZW5cIjpjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoMTM3LHQpKTtkZWZhdWx0OmNzKGUsdCx1LG8sbixudWxsKX1yZXR1cm47ZGVmYXVsdDppZih0Zih0KSl7Zm9yKGQgaW4gbiluLmhhc093blByb3BlcnR5KGQpJiZ2b2lkIDAhPT0obz1uW2RdKSYmY2MoZSx0LGQsbyxuLHZvaWQgMCk7cmV0dXJufX1mb3IocyBpbiBuKW4uaGFzT3duUHJvcGVydHkocykmJm51bGwhPShvPW5bc10pJiZjcyhlLHQscyxvLG4sbnVsbCl9dmFyIGNkPW51bGwsY2Y9bnVsbDtmdW5jdGlvbiBjcChlKXtyZXR1cm4gOT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnR9ZnVuY3Rpb24gY2goZSl7c3dpdGNoKGUpe2Nhc2VcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI6cmV0dXJuIDE7Y2FzZVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIGNtKGUsdCl7aWYoMD09PWUpc3dpdGNoKHQpe2Nhc2VcInN2Z1wiOnJldHVybiAxO2Nhc2VcIm1hdGhcIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfXJldHVybiAxPT09ZSYmXCJmb3JlaWduT2JqZWN0XCI9PT10PzA6ZX1mdW5jdGlvbiBjZyhlLHQpe3JldHVyblwidGV4dGFyZWFcIj09PWV8fFwibm9zY3JpcHRcIj09PWV8fFwic3RyaW5nXCI9PXR5cGVvZiB0LmNoaWxkcmVufHxcIm51bWJlclwiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJiaWdpbnRcIj09dHlwZW9mIHQuY2hpbGRyZW58fFwib2JqZWN0XCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9dmFyIGN5PW51bGwsY3Y9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxjYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxjQT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlP1Byb21pc2U6dm9pZCAwLGN4PVwiZnVuY3Rpb25cIj09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOnZvaWQgMCE9PWNBP2Z1bmN0aW9uKGUpe3JldHVybiBjQS5yZXNvbHZlKG51bGwpLnRoZW4oZSkuY2F0Y2goY3cpfTpjdjtmdW5jdGlvbiBjdyhlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfWZ1bmN0aW9uIGNDKGUpe3JldHVyblwiaGVhZFwiPT09ZX1mdW5jdGlvbiBjXyhlLHQpe3ZhciBuPXQscj0wO2Rve3ZhciBvPW4ubmV4dFNpYmxpbmc7aWYoZS5yZW1vdmVDaGlsZChuKSxvJiY4PT09by5ub2RlVHlwZSlpZihcIi8kXCI9PT0obj1vLmRhdGEpfHxcIi8mXCI9PT1uKXtpZigwPT09cil7ZS5yZW1vdmVDaGlsZChvKSx1Tyh0KTtyZXR1cm59ci0tfWVsc2UgaWYoXCIkXCI9PT1ufHxcIiQ/XCI9PT1ufHxcIiR+XCI9PT1ufHxcIiQhXCI9PT1ufHxcIiZcIj09PW4pcisrO2Vsc2UgaWYoXCJodG1sXCI9PT1uKWNEKGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO2Vsc2UgaWYoXCJoZWFkXCI9PT1uKXtjRChuPWUub3duZXJEb2N1bWVudC5oZWFkKTtmb3IodmFyIGE9bi5maXJzdENoaWxkO2E7KXt2YXIgaT1hLm5leHRTaWJsaW5nLGw9YS5ub2RlTmFtZTthW2VGXXx8XCJTQ1JJUFRcIj09PWx8fFwiU1RZTEVcIj09PWx8fFwiTElOS1wiPT09bCYmXCJzdHlsZXNoZWV0XCI9PT1hLnJlbC50b0xvd2VyQ2FzZSgpfHxuLnJlbW92ZUNoaWxkKGEpLGE9aX19ZWxzZVwiYm9keVwiPT09biYmY0QoZS5vd25lckRvY3VtZW50LmJvZHkpO249b313aGlsZShuKTt1Tyh0KX1mdW5jdGlvbiBjayhlLHQpe3ZhciBuPWU7ZT0wO2Rve3ZhciByPW4ubmV4dFNpYmxpbmc7aWYoMT09PW4ubm9kZVR5cGU/dD8obi5fc3Rhc2hlZERpc3BsYXk9bi5zdHlsZS5kaXNwbGF5LG4uc3R5bGUuZGlzcGxheT1cIm5vbmVcIik6KG4uc3R5bGUuZGlzcGxheT1uLl9zdGFzaGVkRGlzcGxheXx8XCJcIixcIlwiPT09bi5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKSYmbi5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKSk6Mz09PW4ubm9kZVR5cGUmJih0PyhuLl9zdGFzaGVkVGV4dD1uLm5vZGVWYWx1ZSxuLm5vZGVWYWx1ZT1cIlwiKTpuLm5vZGVWYWx1ZT1uLl9zdGFzaGVkVGV4dHx8XCJcIiksciYmOD09PXIubm9kZVR5cGUpaWYoXCIvJFwiPT09KG49ci5kYXRhKSlpZigwPT09ZSlicmVhaztlbHNlIGUtLTtlbHNlXCIkXCIhPT1uJiZcIiQ/XCIhPT1uJiZcIiR+XCIhPT1uJiZcIiQhXCIhPT1ufHxlKys7bj1yfXdoaWxlKG4pfWZ1bmN0aW9uIGNFKGUpe3ZhciB0PWUuZmlyc3RDaGlsZDtmb3IodCYmMTA9PT10Lm5vZGVUeXBlJiYodD10Lm5leHRTaWJsaW5nKTt0Oyl7dmFyIG49dDtzd2l0Y2godD10Lm5leHRTaWJsaW5nLG4ubm9kZU5hbWUpe2Nhc2VcIkhUTUxcIjpjYXNlXCJIRUFEXCI6Y2FzZVwiQk9EWVwiOmNFKG4pLGVxKG4pO2NvbnRpbnVlO2Nhc2VcIlNDUklQVFwiOmNhc2VcIlNUWUxFXCI6Y29udGludWU7Y2FzZVwiTElOS1wiOmlmKFwic3R5bGVzaGVldFwiPT09bi5yZWwudG9Mb3dlckNhc2UoKSljb250aW51ZX1lLnJlbW92ZUNoaWxkKG4pfX1mdW5jdGlvbiBjaihlLHQpe2Zvcig7OCE9PWUubm9kZVR5cGU7KWlmKCF0fHxudWxsPT09KGU9Y0IoZS5uZXh0U2libGluZykpKXJldHVybiBudWxsO3JldHVybiBlfWZ1bmN0aW9uIGNTKGUpe3JldHVyblwiJD9cIj09PWUuZGF0YXx8XCIkflwiPT09ZS5kYXRhfWZ1bmN0aW9uIGNPKGUpe3JldHVyblwiJCFcIj09PWUuZGF0YXx8XCIkP1wiPT09ZS5kYXRhJiZcImxvYWRpbmdcIiE9PWUub3duZXJEb2N1bWVudC5yZWFkeVN0YXRlfWZ1bmN0aW9uIGNCKGUpe2Zvcig7bnVsbCE9ZTtlPWUubmV4dFNpYmxpbmcpe3ZhciB0PWUubm9kZVR5cGU7aWYoMT09PXR8fDM9PT10KWJyZWFrO2lmKDg9PT10KXtpZihcIiRcIj09PSh0PWUuZGF0YSl8fFwiJCFcIj09PXR8fFwiJD9cIj09PXR8fFwiJH5cIj09PXR8fFwiJlwiPT09dHx8XCJGIVwiPT09dHx8XCJGXCI9PT10KWJyZWFrO2lmKFwiLyRcIj09PXR8fFwiLyZcIj09PXQpcmV0dXJuIG51bGx9fXJldHVybiBlfXZhciBjUD1udWxsO2Z1bmN0aW9uIGNJKGUpe2U9ZS5uZXh0U2libGluZztmb3IodmFyIHQ9MDtlOyl7aWYoOD09PWUubm9kZVR5cGUpe3ZhciBuPWUuZGF0YTtpZihcIi8kXCI9PT1ufHxcIi8mXCI9PT1uKXtpZigwPT09dClyZXR1cm4gY0IoZS5uZXh0U2libGluZyk7dC0tfWVsc2VcIiRcIiE9PW4mJlwiJCFcIiE9PW4mJlwiJD9cIiE9PW4mJlwiJH5cIiE9PW4mJlwiJlwiIT09bnx8dCsrfWU9ZS5uZXh0U2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBjVChlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIG49ZS5kYXRhO2lmKFwiJFwiPT09bnx8XCIkIVwiPT09bnx8XCIkP1wiPT09bnx8XCIkflwiPT09bnx8XCImXCI9PT1uKXtpZigwPT09dClyZXR1cm4gZTt0LS19ZWxzZVwiLyRcIiE9PW4mJlwiLyZcIiE9PW58fHQrK31lPWUucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIGN6KGUsdCxuKXtzd2l0Y2godD1jcChuKSxlKXtjYXNlXCJodG1sXCI6aWYoIShlPXQuZG9jdW1lbnRFbGVtZW50KSl0aHJvdyBFcnJvcihsKDQ1MikpO3JldHVybiBlO2Nhc2VcImhlYWRcIjppZighKGU9dC5oZWFkKSl0aHJvdyBFcnJvcihsKDQ1MykpO3JldHVybiBlO2Nhc2VcImJvZHlcIjppZighKGU9dC5ib2R5KSl0aHJvdyBFcnJvcihsKDQ1NCkpO3JldHVybiBlO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0NTEpKX19ZnVuY3Rpb24gY0QoZSl7Zm9yKHZhciB0PWUuYXR0cmlidXRlczt0Lmxlbmd0aDspZS5yZW1vdmVBdHRyaWJ1dGVOb2RlKHRbMF0pO2VxKGUpfXZhciBjTD1uZXcgTWFwLGNOPW5ldyBTZXQ7ZnVuY3Rpb24gY1IoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZS5nZXRSb290Tm9kZT9lLmdldFJvb3ROb2RlKCk6OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnR9dmFyIGNNPVQuZDtULmQ9e2Y6ZnVuY3Rpb24oKXt2YXIgZT1jTS5mKCksdD1zYygpO3JldHVybiBlfHx0fSxyOmZ1bmN0aW9uKGUpe3ZhciB0PWVWKGUpO251bGwhPT10JiY1PT09dC50YWcmJlwiZm9ybVwiPT09dC50eXBlP2FRKHQpOmNNLnIoZSl9LEQ6ZnVuY3Rpb24oZSl7Y00uRChlKSxjVShcImRucy1wcmVmZXRjaFwiLGUsbnVsbCl9LEM6ZnVuY3Rpb24oZSx0KXtjTS5DKGUsdCksY1UoXCJwcmVjb25uZWN0XCIsZSx0KX0sTDpmdW5jdGlvbihlLHQsbil7aWYoY00uTChlLHQsbiksY1omJmUmJnQpe3ZhciByPSdsaW5rW3JlbD1cInByZWxvYWRcIl1bYXM9XCInK3R0KHQpKydcIl0nO1wiaW1hZ2VcIj09PXQmJm4mJm4uaW1hZ2VTcmNTZXQ/KHIrPSdbaW1hZ2VzcmNzZXQ9XCInK3R0KG4uaW1hZ2VTcmNTZXQpKydcIl0nLFwic3RyaW5nXCI9PXR5cGVvZiBuLmltYWdlU2l6ZXMmJihyKz0nW2ltYWdlc2l6ZXM9XCInK3R0KG4uaW1hZ2VTaXplcykrJ1wiXScpKTpyKz0nW2hyZWY9XCInK3R0KGUpKydcIl0nO3ZhciBvPXI7c3dpdGNoKHQpe2Nhc2VcInN0eWxlXCI6bz1jcShlKTticmVhaztjYXNlXCJzY3JpcHRcIjpvPWMkKGUpfWNMLmhhcyhvKXx8KGU9Zih7cmVsOlwicHJlbG9hZFwiLGhyZWY6XCJpbWFnZVwiPT09dCYmbiYmbi5pbWFnZVNyY1NldD92b2lkIDA6ZSxhczp0fSxuKSxjTC5zZXQobyxlKSxudWxsIT09Y1oucXVlcnlTZWxlY3RvcihyKXx8XCJzdHlsZVwiPT09dCYmY1oucXVlcnlTZWxlY3RvcihjSChvKSl8fFwic2NyaXB0XCI9PT10JiZjWi5xdWVyeVNlbGVjdG9yKGNXKG8pKXx8KGN1KHQ9Y1ouY3JlYXRlRWxlbWVudChcImxpbmtcIiksXCJsaW5rXCIsZSksZVkodCksY1ouaGVhZC5hcHBlbmRDaGlsZCh0KSkpfX0sbTpmdW5jdGlvbihlLHQpe2lmKGNNLm0oZSx0KSxjWiYmZSl7dmFyIG49dCYmXCJzdHJpbmdcIj09dHlwZW9mIHQuYXM/dC5hczpcInNjcmlwdFwiLHI9J2xpbmtbcmVsPVwibW9kdWxlcHJlbG9hZFwiXVthcz1cIicrdHQobikrJ1wiXVtocmVmPVwiJyt0dChlKSsnXCJdJyxvPXI7c3dpdGNoKG4pe2Nhc2VcImF1ZGlvd29ya2xldFwiOmNhc2VcInBhaW50d29ya2xldFwiOmNhc2VcInNlcnZpY2V3b3JrZXJcIjpjYXNlXCJzaGFyZWR3b3JrZXJcIjpjYXNlXCJ3b3JrZXJcIjpjYXNlXCJzY3JpcHRcIjpvPWMkKGUpfWlmKCFjTC5oYXMobykmJihlPWYoe3JlbDpcIm1vZHVsZXByZWxvYWRcIixocmVmOmV9LHQpLGNMLnNldChvLGUpLG51bGw9PT1jWi5xdWVyeVNlbGVjdG9yKHIpKSl7c3dpdGNoKG4pe2Nhc2VcImF1ZGlvd29ya2xldFwiOmNhc2VcInBhaW50d29ya2xldFwiOmNhc2VcInNlcnZpY2V3b3JrZXJcIjpjYXNlXCJzaGFyZWR3b3JrZXJcIjpjYXNlXCJ3b3JrZXJcIjpjYXNlXCJzY3JpcHRcIjppZihjWi5xdWVyeVNlbGVjdG9yKGNXKG8pKSlyZXR1cm59Y3Uobj1jWi5jcmVhdGVFbGVtZW50KFwibGlua1wiKSxcImxpbmtcIixlKSxlWShuKSxjWi5oZWFkLmFwcGVuZENoaWxkKG4pfX19LFg6ZnVuY3Rpb24oZSx0KXtpZihjTS5YKGUsdCksY1omJmUpe3ZhciBuPWVXKGNaKS5ob2lzdGFibGVTY3JpcHRzLHI9YyQoZSksbz1uLmdldChyKTtvfHwoKG89Y1oucXVlcnlTZWxlY3RvcihjVyhyKSkpfHwoZT1mKHtzcmM6ZSxhc3luYzohMH0sdCksKHQ9Y0wuZ2V0KHIpKSYmY0coZSx0KSxlWShvPWNaLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpLGN1KG8sXCJsaW5rXCIsZSksY1ouaGVhZC5hcHBlbmRDaGlsZChvKSksbz17dHlwZTpcInNjcmlwdFwiLGluc3RhbmNlOm8sY291bnQ6MSxzdGF0ZTpudWxsfSxuLnNldChyLG8pKX19LFM6ZnVuY3Rpb24oZSx0LG4pe2lmKGNNLlMoZSx0LG4pLGNaJiZlKXt2YXIgcj1lVyhjWikuaG9pc3RhYmxlU3R5bGVzLG89Y3EoZSk7dD10fHxcImRlZmF1bHRcIjt2YXIgYT1yLmdldChvKTtpZighYSl7dmFyIGk9e2xvYWRpbmc6MCxwcmVsb2FkOm51bGx9O2lmKGE9Y1oucXVlcnlTZWxlY3RvcihjSChvKSkpaS5sb2FkaW5nPTU7ZWxzZXtlPWYoe3JlbDpcInN0eWxlc2hlZXRcIixocmVmOmUsXCJkYXRhLXByZWNlZGVuY2VcIjp0fSxuKSwobj1jTC5nZXQobykpJiZjWChlLG4pO3ZhciBsPWE9Y1ouY3JlYXRlRWxlbWVudChcImxpbmtcIik7ZVkobCksY3UobCxcImxpbmtcIixlKSxsLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7bC5vbmxvYWQ9ZSxsLm9uZXJyb3I9dH0pLGwuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixmdW5jdGlvbigpe2kubG9hZGluZ3w9MX0pLGwuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsZnVuY3Rpb24oKXtpLmxvYWRpbmd8PTJ9KSxpLmxvYWRpbmd8PTQsY0soYSx0LGNaKX1hPXt0eXBlOlwic3R5bGVzaGVldFwiLGluc3RhbmNlOmEsY291bnQ6MSxzdGF0ZTppfSxyLnNldChvLGEpfX19LE06ZnVuY3Rpb24oZSx0KXtpZihjTS5NKGUsdCksY1omJmUpe3ZhciBuPWVXKGNaKS5ob2lzdGFibGVTY3JpcHRzLHI9YyQoZSksbz1uLmdldChyKTtvfHwoKG89Y1oucXVlcnlTZWxlY3RvcihjVyhyKSkpfHwoZT1mKHtzcmM6ZSxhc3luYzohMCx0eXBlOlwibW9kdWxlXCJ9LHQpLCh0PWNMLmdldChyKSkmJmNHKGUsdCksZVkobz1jWi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSxjdShvLFwibGlua1wiLGUpLGNaLmhlYWQuYXBwZW5kQ2hpbGQobykpLG89e3R5cGU6XCJzY3JpcHRcIixpbnN0YW5jZTpvLGNvdW50OjEsc3RhdGU6bnVsbH0sbi5zZXQocixvKSl9fX07dmFyIGNaPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudD9udWxsOmRvY3VtZW50O2Z1bmN0aW9uIGNVKGUsdCxuKXtpZihjWiYmXCJzdHJpbmdcIj09dHlwZW9mIHQmJnQpe3ZhciByPXR0KHQpO3I9J2xpbmtbcmVsPVwiJytlKydcIl1baHJlZj1cIicrcisnXCJdJyxcInN0cmluZ1wiPT10eXBlb2YgbiYmKHIrPSdbY3Jvc3NvcmlnaW49XCInK24rJ1wiXScpLGNOLmhhcyhyKXx8KGNOLmFkZChyKSxlPXtyZWw6ZSxjcm9zc09yaWdpbjpuLGhyZWY6dH0sbnVsbD09PWNaLnF1ZXJ5U2VsZWN0b3IocikmJihjdSh0PWNaLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpLFwibGlua1wiLGUpLGVZKHQpLGNaLmhlYWQuYXBwZW5kQ2hpbGQodCkpKX19ZnVuY3Rpb24gY0YoZSx0LG4scil7dmFyIG89KG89Ri5jdXJyZW50KT9jUihvKTpudWxsO2lmKCFvKXRocm93IEVycm9yKGwoNDQ2KSk7c3dpdGNoKGUpe2Nhc2VcIm1ldGFcIjpjYXNlXCJ0aXRsZVwiOnJldHVybiBudWxsO2Nhc2VcInN0eWxlXCI6cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIG4ucHJlY2VkZW5jZSYmXCJzdHJpbmdcIj09dHlwZW9mIG4uaHJlZj8odD1jcShuLmhyZWYpLChyPShuPWVXKG8pLmhvaXN0YWJsZVN0eWxlcykuZ2V0KHQpKXx8KHI9e3R5cGU6XCJzdHlsZVwiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfSxuLnNldCh0LHIpKSxyKTp7dHlwZTpcInZvaWRcIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH07Y2FzZVwibGlua1wiOmlmKFwic3R5bGVzaGVldFwiPT09bi5yZWwmJlwic3RyaW5nXCI9PXR5cGVvZiBuLmhyZWYmJlwic3RyaW5nXCI9PXR5cGVvZiBuLnByZWNlZGVuY2Upe2U9Y3Eobi5ocmVmKTt2YXIgYSxpLHMsYyx1PWVXKG8pLmhvaXN0YWJsZVN0eWxlcyxkPXUuZ2V0KGUpO2lmKGR8fChvPW8ub3duZXJEb2N1bWVudHx8byxkPXt0eXBlOlwic3R5bGVzaGVldFwiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTp7bG9hZGluZzowLHByZWxvYWQ6bnVsbH19LHUuc2V0KGUsZCksKHU9by5xdWVyeVNlbGVjdG9yKGNIKGUpKSkmJiF1Ll9wJiYoZC5pbnN0YW5jZT11LGQuc3RhdGUubG9hZGluZz01KSxjTC5oYXMoZSl8fChuPXtyZWw6XCJwcmVsb2FkXCIsYXM6XCJzdHlsZVwiLGhyZWY6bi5ocmVmLGNyb3NzT3JpZ2luOm4uY3Jvc3NPcmlnaW4saW50ZWdyaXR5Om4uaW50ZWdyaXR5LG1lZGlhOm4ubWVkaWEsaHJlZkxhbmc6bi5ocmVmTGFuZyxyZWZlcnJlclBvbGljeTpuLnJlZmVycmVyUG9saWN5fSxjTC5zZXQoZSxuKSx1fHwoYT1vLGk9ZSxzPW4sYz1kLnN0YXRlLGEucXVlcnlTZWxlY3RvcignbGlua1tyZWw9XCJwcmVsb2FkXCJdW2FzPVwic3R5bGVcIl1bJytpK1wiXVwiKT9jLmxvYWRpbmc9MTooYy5wcmVsb2FkPWk9YS5jcmVhdGVFbGVtZW50KFwibGlua1wiKSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5sb2FkaW5nfD0xfSksaS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbigpe3JldHVybiBjLmxvYWRpbmd8PTJ9KSxjdShpLFwibGlua1wiLHMpLGVZKGkpLGEuaGVhZC5hcHBlbmRDaGlsZChpKSkpKSksdCYmbnVsbD09PXIpdGhyb3cgRXJyb3IobCg1MjgsXCJcIikpO3JldHVybiBkfWlmKHQmJm51bGwhPT1yKXRocm93IEVycm9yKGwoNTI5LFwiXCIpKTtyZXR1cm4gbnVsbDtjYXNlXCJzY3JpcHRcIjpyZXR1cm4gdD1uLmFzeW5jLFwic3RyaW5nXCI9PXR5cGVvZihuPW4uc3JjKSYmdCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmXCJzeW1ib2xcIiE9dHlwZW9mIHQ/KHQ9YyQobiksKHI9KG49ZVcobykuaG9pc3RhYmxlU2NyaXB0cykuZ2V0KHQpKXx8KHI9e3R5cGU6XCJzY3JpcHRcIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH0sbi5zZXQodCxyKSkscik6e3R5cGU6XCJ2b2lkXCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9O2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0NDQsZSkpfX1mdW5jdGlvbiBjcShlKXtyZXR1cm4naHJlZj1cIicrdHQoZSkrJ1wiJ31mdW5jdGlvbiBjSChlKXtyZXR1cm4nbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdWycrZStcIl1cIn1mdW5jdGlvbiBjVihlKXtyZXR1cm4gZih7fSxlLHtcImRhdGEtcHJlY2VkZW5jZVwiOmUucHJlY2VkZW5jZSxwcmVjZWRlbmNlOm51bGx9KX1mdW5jdGlvbiBjJChlKXtyZXR1cm4nW3NyYz1cIicrdHQoZSkrJ1wiXSd9ZnVuY3Rpb24gY1coZSl7cmV0dXJuXCJzY3JpcHRbYXN5bmNdXCIrZX1mdW5jdGlvbiBjWShlLHQsbil7aWYodC5jb3VudCsrLG51bGw9PT10Lmluc3RhbmNlKXN3aXRjaCh0LnR5cGUpe2Nhc2VcInN0eWxlXCI6dmFyIHI9ZS5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWhyZWZ+PVwiJyt0dChuLmhyZWYpKydcIl0nKTtpZihyKXJldHVybiB0Lmluc3RhbmNlPXIsZVkocikscjt2YXIgbz1mKHt9LG4se1wiZGF0YS1ocmVmXCI6bi5ocmVmLFwiZGF0YS1wcmVjZWRlbmNlXCI6bi5wcmVjZWRlbmNlLGhyZWY6bnVsbCxwcmVjZWRlbmNlOm51bGx9KTtyZXR1cm4gZVkocj0oZS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVFbGVtZW50KFwic3R5bGVcIikpLGN1KHIsXCJzdHlsZVwiLG8pLGNLKHIsbi5wcmVjZWRlbmNlLGUpLHQuaW5zdGFuY2U9cjtjYXNlXCJzdHlsZXNoZWV0XCI6bz1jcShuLmhyZWYpO3ZhciBhPWUucXVlcnlTZWxlY3RvcihjSChvKSk7aWYoYSlyZXR1cm4gdC5zdGF0ZS5sb2FkaW5nfD00LHQuaW5zdGFuY2U9YSxlWShhKSxhO3I9Y1YobiksKG89Y0wuZ2V0KG8pKSYmY1gocixvKSxlWShhPShlLm93bmVyRG9jdW1lbnR8fGUpLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpKTt2YXIgaT1hO3JldHVybiBpLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aS5vbmxvYWQ9ZSxpLm9uZXJyb3I9dH0pLGN1KGEsXCJsaW5rXCIsciksdC5zdGF0ZS5sb2FkaW5nfD00LGNLKGEsbi5wcmVjZWRlbmNlLGUpLHQuaW5zdGFuY2U9YTtjYXNlXCJzY3JpcHRcIjppZihhPWMkKG4uc3JjKSxvPWUucXVlcnlTZWxlY3RvcihjVyhhKSkpcmV0dXJuIHQuaW5zdGFuY2U9byxlWShvKSxvO3JldHVybiByPW4sKG89Y0wuZ2V0KGEpKSYmY0cocj1mKHt9LG4pLG8pLGVZKG89KGU9ZS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSxjdShvLFwibGlua1wiLHIpLGUuaGVhZC5hcHBlbmRDaGlsZChvKSx0Lmluc3RhbmNlPW87Y2FzZVwidm9pZFwiOnJldHVybiBudWxsO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0NDMsdC50eXBlKSl9cmV0dXJuXCJzdHlsZXNoZWV0XCI9PT10LnR5cGUmJjA9PSg0JnQuc3RhdGUubG9hZGluZykmJihyPXQuaW5zdGFuY2UsdC5zdGF0ZS5sb2FkaW5nfD00LGNLKHIsbi5wcmVjZWRlbmNlLGUpKSx0Lmluc3RhbmNlfWZ1bmN0aW9uIGNLKGUsdCxuKXtmb3IodmFyIHI9bi5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1bZGF0YS1wcmVjZWRlbmNlXSxzdHlsZVtkYXRhLXByZWNlZGVuY2VdJyksbz1yLmxlbmd0aD9yW3IubGVuZ3RoLTFdOm51bGwsYT1vLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGw9cltpXTtpZihsLmRhdGFzZXQucHJlY2VkZW5jZT09PXQpYT1sO2Vsc2UgaWYoYSE9PW8pYnJlYWt9YT9hLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsYS5uZXh0U2libGluZyk6KHQ9OT09PW4ubm9kZVR5cGU/bi5oZWFkOm4pLmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gY1goZSx0KXtudWxsPT1lLmNyb3NzT3JpZ2luJiYoZS5jcm9zc09yaWdpbj10LmNyb3NzT3JpZ2luKSxudWxsPT1lLnJlZmVycmVyUG9saWN5JiYoZS5yZWZlcnJlclBvbGljeT10LnJlZmVycmVyUG9saWN5KSxudWxsPT1lLnRpdGxlJiYoZS50aXRsZT10LnRpdGxlKX1mdW5jdGlvbiBjRyhlLHQpe251bGw9PWUuY3Jvc3NPcmlnaW4mJihlLmNyb3NzT3JpZ2luPXQuY3Jvc3NPcmlnaW4pLG51bGw9PWUucmVmZXJyZXJQb2xpY3kmJihlLnJlZmVycmVyUG9saWN5PXQucmVmZXJyZXJQb2xpY3kpLG51bGw9PWUuaW50ZWdyaXR5JiYoZS5pbnRlZ3JpdHk9dC5pbnRlZ3JpdHkpfXZhciBjUT1udWxsO2Z1bmN0aW9uIGNKKGUsdCxuKXtpZihudWxsPT09Y1Epe3ZhciByPW5ldyBNYXAsbz1jUT1uZXcgTWFwO28uc2V0KG4scil9ZWxzZShyPShvPWNRKS5nZXQobikpfHwocj1uZXcgTWFwLG8uc2V0KG4scikpO2lmKHIuaGFzKGUpKXJldHVybiByO2ZvcihyLnNldChlLG51bGwpLG49bi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSxvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBhPW5bb107aWYoIShhW2VGXXx8YVtlRF18fFwibGlua1wiPT09ZSYmXCJzdHlsZXNoZWV0XCI9PT1hLmdldEF0dHJpYnV0ZShcInJlbFwiKSkmJlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiE9PWEubmFtZXNwYWNlVVJJKXt2YXIgaT1hLmdldEF0dHJpYnV0ZSh0KXx8XCJcIjtpPWUraTt2YXIgbD1yLmdldChpKTtsP2wucHVzaChhKTpyLnNldChpLFthXSl9fXJldHVybiByfWZ1bmN0aW9uIGMwKGUsdCxuKXsoZT1lLm93bmVyRG9jdW1lbnR8fGUpLmhlYWQuaW5zZXJ0QmVmb3JlKG4sXCJ0aXRsZVwiPT09dD9lLnF1ZXJ5U2VsZWN0b3IoXCJoZWFkID4gdGl0bGVcIik6bnVsbCl9ZnVuY3Rpb24gYzEoZSl7cmV0dXJuXCJzdHlsZXNoZWV0XCIhPT1lLnR5cGV8fDAhPSgzJmUuc3RhdGUubG9hZGluZyl9dmFyIGMyPW51bGw7ZnVuY3Rpb24gYzQoKXtpZih0aGlzLmNvdW50LS0sMD09PXRoaXMuY291bnQpe2lmKHRoaXMuc3R5bGVzaGVldHMpYzModGhpcyx0aGlzLnN0eWxlc2hlZXRzKTtlbHNlIGlmKHRoaXMudW5zdXNwZW5kKXt2YXIgZT10aGlzLnVuc3VzcGVuZDt0aGlzLnVuc3VzcGVuZD1udWxsLGUoKX19fXZhciBjNT1udWxsO2Z1bmN0aW9uIGMzKGUsdCl7ZS5zdHlsZXNoZWV0cz1udWxsLG51bGwhPT1lLnVuc3VzcGVuZCYmKGUuY291bnQrKyxjNT1uZXcgTWFwLHQuZm9yRWFjaChjNixlKSxjNT1udWxsLGM0LmNhbGwoZSkpfWZ1bmN0aW9uIGM2KGUsdCl7aWYoISg0JnQuc3RhdGUubG9hZGluZykpe3ZhciBuPWM1LmdldChlKTtpZihuKXZhciByPW4uZ2V0KG51bGwpO2Vsc2V7bj1uZXcgTWFwLGM1LnNldChlLG4pO2Zvcih2YXIgbz1lLnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaW5rW2RhdGEtcHJlY2VkZW5jZV0sc3R5bGVbZGF0YS1wcmVjZWRlbmNlXVwiKSxhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBpPW9bYV07KFwiTElOS1wiPT09aS5ub2RlTmFtZXx8XCJub3QgYWxsXCIhPT1pLmdldEF0dHJpYnV0ZShcIm1lZGlhXCIpKSYmKG4uc2V0KGkuZGF0YXNldC5wcmVjZWRlbmNlLGkpLHI9aSl9ciYmbi5zZXQobnVsbCxyKX1pPShvPXQuaW5zdGFuY2UpLmdldEF0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKSwoYT1uLmdldChpKXx8cik9PT1yJiZuLnNldChudWxsLG8pLG4uc2V0KGksbyksdGhpcy5jb3VudCsrLHI9YzQuYmluZCh0aGlzKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsciksby5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixyKSxhP2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxhLm5leHRTaWJsaW5nKTooZT05PT09ZS5ub2RlVHlwZT9lLmhlYWQ6ZSkuaW5zZXJ0QmVmb3JlKG8sZS5maXJzdENoaWxkKSx0LnN0YXRlLmxvYWRpbmd8PTR9fXZhciBjOT17JCR0eXBlb2Y6QSxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2N1cnJlbnRWYWx1ZTp6LF9jdXJyZW50VmFsdWUyOnosX3RocmVhZENvdW50OjB9O2Z1bmN0aW9uIGM4KGUsdCxuLHIsbyxhLGksbCxzKXt0aGlzLnRhZz0xLHRoaXMuY29udGFpbmVySW5mbz1lLHRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMudGltZW91dEhhbmRsZT0tMSx0aGlzLmNhbGxiYWNrTm9kZT10aGlzLm5leHQ9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9dGhpcy5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGwsdGhpcy5jYWxsYmFja1ByaW9yaXR5PTAsdGhpcy5leHBpcmF0aW9uVGltZXM9ZWsoLTEpLHRoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5zaGVsbFN1c3BlbmRDb3VudGVyPXRoaXMuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy53YXJtTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTAsdGhpcy5lbnRhbmdsZW1lbnRzPWVrKDApLHRoaXMuaGlkZGVuVXBkYXRlcz1layhudWxsKSx0aGlzLmlkZW50aWZpZXJQcmVmaXg9cix0aGlzLm9uVW5jYXVnaHRFcnJvcj1vLHRoaXMub25DYXVnaHRFcnJvcj1hLHRoaXMub25SZWNvdmVyYWJsZUVycm9yPWksdGhpcy5wb29sZWRDYWNoZT1udWxsLHRoaXMucG9vbGVkQ2FjaGVMYW5lcz0wLHRoaXMuZm9ybVN0YXRlPXMsdGhpcy5pbmNvbXBsZXRlVHJhbnNpdGlvbnM9bmV3IE1hcH1mdW5jdGlvbiBjNyhlLHQsbixyLG8sYSl7bz1vP244Om44LG51bGw9PT1yLmNvbnRleHQ/ci5jb250ZXh0PW86ci5wZW5kaW5nQ29udGV4dD1vLChyPW9fKHQpKS5wYXlsb2FkPXtlbGVtZW50Om59LG51bGwhPT0oYT12b2lkIDA9PT1hP251bGw6YSkmJihyLmNhbGxiYWNrPWEpLG51bGwhPT0obj1vayhlLHIsdCkpJiYoc2EobixlLHQpLG9FKG4sZSx0KSl9ZnVuY3Rpb24gdWUoZSx0KXtpZihudWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PWUuZGVoeWRyYXRlZCl7dmFyIG49ZS5yZXRyeUxhbmU7ZS5yZXRyeUxhbmU9MCE9PW4mJm48dD9uOnR9fWZ1bmN0aW9uIHV0KGUsdCl7dWUoZSx0KSwoZT1lLmFsdGVybmF0ZSkmJnVlKGUsdCl9ZnVuY3Rpb24gdW4oZSl7aWYoMTM9PT1lLnRhZ3x8MzE9PT1lLnRhZyl7dmFyIHQ9bjMoZSwweDQwMDAwMDApO251bGwhPT10JiZzYSh0LGUsMHg0MDAwMDAwKSx1dChlLDB4NDAwMDAwMCl9fWZ1bmN0aW9uIHVyKGUpe2lmKDEzPT09ZS50YWd8fDMxPT09ZS50YWcpe3ZhciB0PXNyKCksbj1uMyhlLHQ9ZUIodCkpO251bGwhPT1uJiZzYShuLGUsdCksdXQoZSx0KX19dmFyIHVvPSEwO2Z1bmN0aW9uIHVhKGUsdCxuLHIpe3ZhciBvPUkuVDtJLlQ9bnVsbDt2YXIgYT1ULnA7dHJ5e1QucD0yLHVsKGUsdCxuLHIpfWZpbmFsbHl7VC5wPWEsSS5UPW99fWZ1bmN0aW9uIHVpKGUsdCxuLHIpe3ZhciBvPUkuVDtJLlQ9bnVsbDt2YXIgYT1ULnA7dHJ5e1QucD04LHVsKGUsdCxuLHIpfWZpbmFsbHl7VC5wPWEsSS5UPW99fWZ1bmN0aW9uIHVsKGUsdCxuLHIpe2lmKHVvKXt2YXIgbz11cyhyKTtpZihudWxsPT09bylzNyhlLHQscix1YyxuKSx1QShlLHIpO2Vsc2UgaWYoZnVuY3Rpb24oZSx0LG4scixvKXtzd2l0Y2godCl7Y2FzZVwiZm9jdXNpblwiOnJldHVybiB1cD11eCh1cCxlLHQsbixyLG8pLCEwO2Nhc2VcImRyYWdlbnRlclwiOnJldHVybiB1aD11eCh1aCxlLHQsbixyLG8pLCEwO2Nhc2VcIm1vdXNlb3ZlclwiOnJldHVybiB1bT11eCh1bSxlLHQsbixyLG8pLCEwO2Nhc2VcInBvaW50ZXJvdmVyXCI6dmFyIGE9by5wb2ludGVySWQ7cmV0dXJuIHVnLnNldChhLHV4KHVnLmdldChhKXx8bnVsbCxlLHQsbixyLG8pKSwhMDtjYXNlXCJnb3Rwb2ludGVyY2FwdHVyZVwiOnJldHVybiBhPW8ucG9pbnRlcklkLHV5LnNldChhLHV4KHV5LmdldChhKXx8bnVsbCxlLHQsbixyLG8pKSwhMH1yZXR1cm4hMX0obyxlLHQsbixyKSlyLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYodUEoZSxyKSw0JnQmJi0xPHViLmluZGV4T2YoZSkpe2Zvcig7bnVsbCE9PW87KXt2YXIgYT1lVihvKTtpZihudWxsIT09YSlzd2l0Y2goYS50YWcpe2Nhc2UgMzppZigoYT1hLnN0YXRlTm9kZSkuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGk9ZUEoYS5wZW5kaW5nTGFuZXMpO2lmKDAhPT1pKXt2YXIgbD1hO2ZvcihsLnBlbmRpbmdMYW5lc3w9MixsLmVudGFuZ2xlZExhbmVzfD0yO2k7KXt2YXIgcz0xPDwzMS1lbShpKTtsLmVudGFuZ2xlbWVudHNbMV18PXMsaSY9fnN9c3EoYSksMD09KDYmbEQpJiYobDE9ZXIoKSs1MDAsc0goMCwhMSkpfX1icmVhaztjYXNlIDMxOmNhc2UgMTM6bnVsbCE9PShsPW4zKGEsMikpJiZzYShsLGEsMiksc2MoKSx1dChhLDIpfWlmKG51bGw9PT0oYT11cyhyKSkmJnM3KGUsdCxyLHVjLG4pLGE9PT1vKWJyZWFrO289YX1udWxsIT09byYmci5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIHM3KGUsdCxyLG51bGwsbil9fWZ1bmN0aW9uIHVzKGUpe3JldHVybiB1dShlPXR2KGUpKX12YXIgdWM9bnVsbDtmdW5jdGlvbiB1dShlKXtpZih1Yz1udWxsLG51bGwhPT0oZT1lSChlKSkpe3ZhciB0PXMoZSk7aWYobnVsbD09PXQpZT1udWxsO2Vsc2V7dmFyIG49dC50YWc7aWYoMTM9PT1uKXtpZihudWxsIT09KGU9Yyh0KSkpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYoMzE9PT1uKXtpZihudWxsIT09KGU9dSh0KSkpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYoMz09PW4pe2lmKHQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT10LnRhZz90LnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgdCE9PWUmJihlPW51bGwpfX1yZXR1cm4gdWM9ZSxudWxsfWZ1bmN0aW9uIHVkKGUpe3N3aXRjaChlKXtjYXNlXCJiZWZvcmV0b2dnbGVcIjpjYXNlXCJjYW5jZWxcIjpjYXNlXCJjbGlja1wiOmNhc2VcImNsb3NlXCI6Y2FzZVwiY29udGV4dG1lbnVcIjpjYXNlXCJjb3B5XCI6Y2FzZVwiY3V0XCI6Y2FzZVwiYXV4Y2xpY2tcIjpjYXNlXCJkYmxjbGlja1wiOmNhc2VcImRyYWdlbmRcIjpjYXNlXCJkcmFnc3RhcnRcIjpjYXNlXCJkcm9wXCI6Y2FzZVwiZm9jdXNpblwiOmNhc2VcImZvY3Vzb3V0XCI6Y2FzZVwiaW5wdXRcIjpjYXNlXCJpbnZhbGlkXCI6Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXByZXNzXCI6Y2FzZVwia2V5dXBcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwicGFzdGVcIjpjYXNlXCJwYXVzZVwiOmNhc2VcInBsYXlcIjpjYXNlXCJwb2ludGVyY2FuY2VsXCI6Y2FzZVwicG9pbnRlcmRvd25cIjpjYXNlXCJwb2ludGVydXBcIjpjYXNlXCJyYXRlY2hhbmdlXCI6Y2FzZVwicmVzZXRcIjpjYXNlXCJyZXNpemVcIjpjYXNlXCJzZWVrZWRcIjpjYXNlXCJzdWJtaXRcIjpjYXNlXCJ0b2dnbGVcIjpjYXNlXCJ0b3VjaGNhbmNlbFwiOmNhc2VcInRvdWNoZW5kXCI6Y2FzZVwidG91Y2hzdGFydFwiOmNhc2VcInZvbHVtZWNoYW5nZVwiOmNhc2VcImNoYW5nZVwiOmNhc2VcInNlbGVjdGlvbmNoYW5nZVwiOmNhc2VcInRleHRJbnB1dFwiOmNhc2VcImNvbXBvc2l0aW9uc3RhcnRcIjpjYXNlXCJjb21wb3NpdGlvbmVuZFwiOmNhc2VcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZVwiYmVmb3JlYmx1clwiOmNhc2VcImFmdGVyYmx1clwiOmNhc2VcImJlZm9yZWlucHV0XCI6Y2FzZVwiYmx1clwiOmNhc2VcImZ1bGxzY3JlZW5jaGFuZ2VcIjpjYXNlXCJmb2N1c1wiOmNhc2VcImhhc2hjaGFuZ2VcIjpjYXNlXCJwb3BzdGF0ZVwiOmNhc2VcInNlbGVjdFwiOmNhc2VcInNlbGVjdHN0YXJ0XCI6cmV0dXJuIDI7Y2FzZVwiZHJhZ1wiOmNhc2VcImRyYWdlbnRlclwiOmNhc2VcImRyYWdleGl0XCI6Y2FzZVwiZHJhZ2xlYXZlXCI6Y2FzZVwiZHJhZ292ZXJcIjpjYXNlXCJtb3VzZW1vdmVcIjpjYXNlXCJtb3VzZW91dFwiOmNhc2VcIm1vdXNlb3ZlclwiOmNhc2VcInBvaW50ZXJtb3ZlXCI6Y2FzZVwicG9pbnRlcm91dFwiOmNhc2VcInBvaW50ZXJvdmVyXCI6Y2FzZVwic2Nyb2xsXCI6Y2FzZVwidG91Y2htb3ZlXCI6Y2FzZVwid2hlZWxcIjpjYXNlXCJtb3VzZWVudGVyXCI6Y2FzZVwibW91c2VsZWF2ZVwiOmNhc2VcInBvaW50ZXJlbnRlclwiOmNhc2VcInBvaW50ZXJsZWF2ZVwiOnJldHVybiA4O2Nhc2VcIm1lc3NhZ2VcIjpzd2l0Y2goZW8oKSl7Y2FzZSBlYTpyZXR1cm4gMjtjYXNlIGVpOnJldHVybiA4O2Nhc2UgZWw6Y2FzZSBlczpyZXR1cm4gMzI7Y2FzZSBlYzpyZXR1cm4gMHgxMDAwMDAwMDtkZWZhdWx0OnJldHVybiAzMn1kZWZhdWx0OnJldHVybiAzMn19dmFyIHVmPSExLHVwPW51bGwsdWg9bnVsbCx1bT1udWxsLHVnPW5ldyBNYXAsdXk9bmV3IE1hcCx1dj1bXSx1Yj1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldFwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiB1QShlLHQpe3N3aXRjaChlKXtjYXNlXCJmb2N1c2luXCI6Y2FzZVwiZm9jdXNvdXRcIjp1cD1udWxsO2JyZWFrO2Nhc2VcImRyYWdlbnRlclwiOmNhc2VcImRyYWdsZWF2ZVwiOnVoPW51bGw7YnJlYWs7Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwibW91c2VvdXRcIjp1bT1udWxsO2JyZWFrO2Nhc2VcInBvaW50ZXJvdmVyXCI6Y2FzZVwicG9pbnRlcm91dFwiOnVnLmRlbGV0ZSh0LnBvaW50ZXJJZCk7YnJlYWs7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjp1eS5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiB1eChlLHQsbixyLG8sYSl7cmV0dXJuIG51bGw9PT1lfHxlLm5hdGl2ZUV2ZW50IT09YT8oZT17YmxvY2tlZE9uOnQsZG9tRXZlbnROYW1lOm4sZXZlbnRTeXN0ZW1GbGFnczpyLG5hdGl2ZUV2ZW50OmEsdGFyZ2V0Q29udGFpbmVyczpbb119LG51bGwhPT10JiZudWxsIT09KHQ9ZVYodCkpJiZ1bih0KSk6KGUuZXZlbnRTeXN0ZW1GbGFnc3w9cix0PWUudGFyZ2V0Q29udGFpbmVycyxudWxsIT09byYmLTE9PT10LmluZGV4T2YobykmJnQucHVzaChvKSksZX1mdW5jdGlvbiB1dyhlKXt2YXIgdD1lSChlLnRhcmdldCk7aWYobnVsbCE9PXQpe3ZhciBuPXModCk7aWYobnVsbCE9PW4pe2lmKDEzPT09KHQ9bi50YWcpKXtpZihudWxsIT09KHQ9YyhuKSkpe2UuYmxvY2tlZE9uPXQsZVQoZS5wcmlvcml0eSxmdW5jdGlvbigpe3VyKG4pfSk7cmV0dXJufX1lbHNlIGlmKDMxPT09dCl7aWYobnVsbCE9PSh0PXUobikpKXtlLmJsb2NrZWRPbj10LGVUKGUucHJpb3JpdHksZnVuY3Rpb24oKXt1cihuKX0pO3JldHVybn19ZWxzZSBpZigzPT09dCYmbi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7ZS5ibG9ja2VkT249Mz09PW4udGFnP24uc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIHVDKGUpe2lmKG51bGwhPT1lLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIHQ9ZS50YXJnZXRDb250YWluZXJzOzA8dC5sZW5ndGg7KXt2YXIgbj11cyhlLm5hdGl2ZUV2ZW50KTtpZihudWxsIT09bilyZXR1cm4gbnVsbCE9PSh0PWVWKG4pKSYmdW4odCksZS5ibG9ja2VkT249biwhMTt2YXIgcj1uZXcobj1lLm5hdGl2ZUV2ZW50KS5jb25zdHJ1Y3RvcihuLnR5cGUsbik7dHk9cixuLnRhcmdldC5kaXNwYXRjaEV2ZW50KHIpLHR5PW51bGwsdC5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIHVfKGUsdCxuKXt1QyhlKSYmbi5kZWxldGUodCl9ZnVuY3Rpb24gdWsoKXt1Zj0hMSxudWxsIT09dXAmJnVDKHVwKSYmKHVwPW51bGwpLG51bGwhPT11aCYmdUModWgpJiYodWg9bnVsbCksbnVsbCE9PXVtJiZ1Qyh1bSkmJih1bT1udWxsKSx1Zy5mb3JFYWNoKHVfKSx1eS5mb3JFYWNoKHVfKX1mdW5jdGlvbiB1RShlLHQpe2UuYmxvY2tlZE9uPT09dCYmKGUuYmxvY2tlZE9uPW51bGwsdWZ8fCh1Zj0hMCxvLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soby51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSx1aykpKX12YXIgdWo9bnVsbDtmdW5jdGlvbiB1UyhlKXt1aiE9PWUmJih1aj1lLG8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhvLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGZ1bmN0aW9uKCl7dWo9PT1lJiYodWo9bnVsbCk7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kz0zKXt2YXIgbj1lW3RdLHI9ZVt0KzFdLG89ZVt0KzJdO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIpaWYobnVsbD09PXV1KHJ8fG4pKWNvbnRpbnVlO2Vsc2UgYnJlYWs7dmFyIGE9ZVYobik7bnVsbCE9PWEmJihlLnNwbGljZSh0LDMpLHQtPTMsYVgoYSx7cGVuZGluZzohMCxkYXRhOm8sbWV0aG9kOm4ubWV0aG9kLGFjdGlvbjpyfSxyLG8pKX19KSl9ZnVuY3Rpb24gdU8oZSl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdUUodCxlKX1udWxsIT09dXAmJnVFKHVwLGUpLG51bGwhPT11aCYmdUUodWgsZSksbnVsbCE9PXVtJiZ1RSh1bSxlKSx1Zy5mb3JFYWNoKHQpLHV5LmZvckVhY2godCk7Zm9yKHZhciBuPTA7bjx1di5sZW5ndGg7bisrKXt2YXIgcj11dltuXTtyLmJsb2NrZWRPbj09PWUmJihyLmJsb2NrZWRPbj1udWxsKX1mb3IoOzA8dXYubGVuZ3RoJiZudWxsPT09KG49dXZbMF0pLmJsb2NrZWRPbjspdXcobiksbnVsbD09PW4uYmxvY2tlZE9uJiZ1di5zaGlmdCgpO2lmKG51bGwhPShuPShlLm93bmVyRG9jdW1lbnR8fGUpLiQkcmVhY3RGb3JtUmVwbGF5KSlmb3Iocj0wO3I8bi5sZW5ndGg7cis9Myl7dmFyIG89bltyXSxhPW5bcisxXSxpPW9bZUxdfHxudWxsO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEpaXx8dVMobik7ZWxzZSBpZihpKXt2YXIgbD1udWxsO2lmKGEmJmEuaGFzQXR0cmlidXRlKFwiZm9ybUFjdGlvblwiKSl7aWYobz1hLGk9YVtlTF18fG51bGwpbD1pLmZvcm1BY3Rpb247ZWxzZSBpZihudWxsIT09dXUobykpY29udGludWV9ZWxzZSBsPWkuYWN0aW9uO1wiZnVuY3Rpb25cIj09dHlwZW9mIGw/bltyKzFdPWw6KG4uc3BsaWNlKHIsMyksci09MyksdVMobil9fX1mdW5jdGlvbiB1Qigpe2Z1bmN0aW9uIGUoZSl7ZS5jYW5JbnRlcmNlcHQmJlwicmVhY3QtdHJhbnNpdGlvblwiPT09ZS5pbmZvJiZlLmludGVyY2VwdCh7aGFuZGxlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtyZXR1cm4gbz1lfSl9LGZvY3VzUmVzZXQ6XCJtYW51YWxcIixzY3JvbGw6XCJtYW51YWxcIn0pfWZ1bmN0aW9uIHQoKXtudWxsIT09byYmKG8oKSxvPW51bGwpLHJ8fHNldFRpbWVvdXQobiwyMCl9ZnVuY3Rpb24gbigpe2lmKCFyJiYhbmF2aWdhdGlvbi50cmFuc2l0aW9uKXt2YXIgZT1uYXZpZ2F0aW9uLmN1cnJlbnRFbnRyeTtlJiZudWxsIT1lLnVybCYmbmF2aWdhdGlvbi5uYXZpZ2F0ZShlLnVybCx7c3RhdGU6ZS5nZXRTdGF0ZSgpLGluZm86XCJyZWFjdC10cmFuc2l0aW9uXCIsaGlzdG9yeTpcInJlcGxhY2VcIn0pfX1pZihcIm9iamVjdFwiPT10eXBlb2YgbmF2aWdhdGlvbil7dmFyIHI9ITEsbz1udWxsO3JldHVybiBuYXZpZ2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZVwiLGUpLG5hdmlnYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlc3VjY2Vzc1wiLHQpLG5hdmlnYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlZXJyb3JcIix0KSxzZXRUaW1lb3V0KG4sMTAwKSxmdW5jdGlvbigpe3I9ITAsbmF2aWdhdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwibmF2aWdhdGVcIixlKSxuYXZpZ2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZXN1Y2Nlc3NcIix0KSxuYXZpZ2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZWVycm9yXCIsdCksbnVsbCE9PW8mJihvKCksbz1udWxsKX19fWZ1bmN0aW9uIHVQKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfWZ1bmN0aW9uIHVJKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfXVJLnByb3RvdHlwZS5yZW5kZXI9dVAucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PXQpdGhyb3cgRXJyb3IobCg0MDkpKTtjNyh0LmN1cnJlbnQsc3IoKSxlLHQsbnVsbCxudWxsKX0sdUkucHJvdG90eXBlLnVubW91bnQ9dVAucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWUpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciB0PWUuY29udGFpbmVySW5mbztjNyhlLmN1cnJlbnQsMixudWxsLGUsbnVsbCxudWxsKSxzYygpLHRbZU5dPW51bGx9fSx1SS5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9ZUkoKTtlPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6ZSxwcmlvcml0eTp0fTtmb3IodmFyIG49MDtuPHV2Lmxlbmd0aCYmMCE9PXQmJnQ8dXZbbl0ucHJpb3JpdHk7bisrKTt1di5zcGxpY2UobiwwLGUpLDA9PT1uJiZ1dyhlKX19O3ZhciB1VD1hLnZlcnNpb247aWYoXCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCIhPT11VCl0aHJvdyBFcnJvcihsKDUyNyx1VCxcIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIikpO2lmKFQuZmluZERPTU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09dCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5yZW5kZXIpdGhyb3cgRXJyb3IobCgxODgpKTt0aHJvdyBFcnJvcihsKDI2OCxlPU9iamVjdC5rZXlzKGUpLmpvaW4oXCIsXCIpKSl9cmV0dXJuIGU9bnVsbD09PShlPW51bGwhPT0oZT1mdW5jdGlvbihlKXt2YXIgdD1lLmFsdGVybmF0ZTtpZighdCl7aWYobnVsbD09PSh0PXMoZSkpKXRocm93IEVycm9yKGwoMTg4KSk7cmV0dXJuIHQhPT1lP251bGw6ZX1mb3IodmFyIG49ZSxyPXQ7Oyl7dmFyIG89bi5yZXR1cm47aWYobnVsbD09PW8pYnJlYWs7dmFyIGE9by5hbHRlcm5hdGU7aWYobnVsbD09PWEpe2lmKG51bGwhPT0ocj1vLnJldHVybikpe249cjtjb250aW51ZX1icmVha31pZihvLmNoaWxkPT09YS5jaGlsZCl7Zm9yKGE9by5jaGlsZDthOyl7aWYoYT09PW4pcmV0dXJuIGQobyksZTtpZihhPT09cilyZXR1cm4gZChvKSx0O2E9YS5zaWJsaW5nfXRocm93IEVycm9yKGwoMTg4KSl9aWYobi5yZXR1cm4hPT1yLnJldHVybiluPW8scj1hO2Vsc2V7Zm9yKHZhciBpPSExLGM9by5jaGlsZDtjOyl7aWYoYz09PW4pe2k9ITAsbj1vLHI9YTticmVha31pZihjPT09cil7aT0hMCxyPW8sbj1hO2JyZWFrfWM9Yy5zaWJsaW5nfWlmKCFpKXtmb3IoYz1hLmNoaWxkO2M7KXtpZihjPT09bil7aT0hMCxuPWEscj1vO2JyZWFrfWlmKGM9PT1yKXtpPSEwLHI9YSxuPW87YnJlYWt9Yz1jLnNpYmxpbmd9aWYoIWkpdGhyb3cgRXJyb3IobCgxODkpKX19aWYobi5hbHRlcm5hdGUhPT1yKXRocm93IEVycm9yKGwoMTkwKSl9aWYoMyE9PW4udGFnKXRocm93IEVycm9yKGwoMTg4KSk7cmV0dXJuIG4uc3RhdGVOb2RlLmN1cnJlbnQ9PT1uP2U6dH0odCkpP2Z1bmN0aW9uIGUodCl7dmFyIG49dC50YWc7aWYoNT09PW58fDI2PT09bnx8Mjc9PT1ufHw2PT09bilyZXR1cm4gdDtmb3IodD10LmNoaWxkO251bGwhPT10Oyl7aWYobnVsbCE9PShuPWUodCkpKXJldHVybiBuO3Q9dC5zaWJsaW5nfXJldHVybiBudWxsfShlKTpudWxsKT9udWxsOmUuc3RhdGVOb2RlfSxcInVuZGVmaW5lZFwiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgdXo9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCF1ei5pc0Rpc2FibGVkJiZ1ei5zdXBwb3J0c0ZpYmVyKXRyeXtlZj11ei5pbmplY3Qoe2J1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwiLHJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIixjdXJyZW50RGlzcGF0Y2hlclJlZjpJLHJlY29uY2lsZXJWZXJzaW9uOlwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwifSksZXA9dXp9Y2F0Y2goZSl7fX10LmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oZSx0KXtpZighKG49ZSl8fDEhPT1uLm5vZGVUeXBlJiY5IT09bi5ub2RlVHlwZSYmMTEhPT1uLm5vZGVUeXBlKXRocm93IEVycm9yKGwoMjk5KSk7dmFyIG4scixvLGEsaSxzLGMsdSxkPSExLGY9XCJcIixwPWl1LGg9aWQsbT1pcDtyZXR1cm4gbnVsbCE9dCYmKCEwPT09dC51bnN0YWJsZV9zdHJpY3RNb2RlJiYoZD0hMCksdm9pZCAwIT09dC5pZGVudGlmaWVyUHJlZml4JiYoZj10LmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PXQub25VbmNhdWdodEVycm9yJiYocD10Lm9uVW5jYXVnaHRFcnJvciksdm9pZCAwIT09dC5vbkNhdWdodEVycm9yJiYoaD10Lm9uQ2F1Z2h0RXJyb3IpLHZvaWQgMCE9PXQub25SZWNvdmVyYWJsZUVycm9yJiYobT10Lm9uUmVjb3ZlcmFibGVFcnJvcikpLHI9ZSxvPTEsYT0hMSxpPW51bGwscz0wLGM9ZCx1PW51bGwscj1uZXcgYzgocixvLGEsZixwLGgsbSx1QixudWxsKSxvPTEsITA9PT1jJiYob3w9MjQpLGM9cmUoMyxudWxsLG51bGwsbyksci5jdXJyZW50PWMsYy5zdGF0ZU5vZGU9cixvPXIxKCksby5yZWZDb3VudCsrLHIucG9vbGVkQ2FjaGU9byxvLnJlZkNvdW50KyssYy5tZW1vaXplZFN0YXRlPXtlbGVtZW50Om51bGwsaXNEZWh5ZHJhdGVkOmEsY2FjaGU6b30sb3coYyksdD1yLGVbZU5dPXQuY3VycmVudCxzOShlKSxuZXcgdVAodCl9fSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvaW5kZXguanNcIik7ZnVuY3Rpb24gbyhlKXt2YXIgdD1cImh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy9cIitlO2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7dCs9XCI/YXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbMV0pO2Zvcih2YXIgbj0yO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pfXJldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2UrXCI7IHZpc2l0IFwiK3QrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifWZ1bmN0aW9uIGEoKXt9dmFyIGk9e2Q6e2Y6YSxyOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3Iobyg1MjIpKX0sRDphLEM6YSxMOmEsbTphLFg6YSxTOmEsTTphfSxwOjAsZmluZERPTU5vZGU6bnVsbH0sbD1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHM9ci5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU7ZnVuY3Rpb24gYyhlLHQpe3JldHVyblwiZm9udFwiPT09ZT9cIlwiOlwic3RyaW5nXCI9PXR5cGVvZiB0P1widXNlLWNyZWRlbnRpYWxzXCI9PT10P3Q6XCJcIjp2b2lkIDB9dC5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9aSx0LmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihlLHQpe3ZhciBuPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCF0fHwxIT09dC5ub2RlVHlwZSYmOSE9PXQubm9kZVR5cGUmJjExIT09dC5ub2RlVHlwZSl0aHJvdyBFcnJvcihvKDI5OSkpO3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOmwsa2V5Om51bGw9PXI/bnVsbDpcIlwiK3IsY2hpbGRyZW46ZSxjb250YWluZXJJbmZvOnQsaW1wbGVtZW50YXRpb246bn19KGUsdCxudWxsLG4pfSx0LmZsdXNoU3luYz1mdW5jdGlvbihlKXt2YXIgdD1zLlQsbj1pLnA7dHJ5e2lmKHMuVD1udWxsLGkucD0yLGUpcmV0dXJuIGUoKX1maW5hbGx5e3MuVD10LGkucD1uLGkuZC5mKCl9fSx0LnByZWNvbm5lY3Q9ZnVuY3Rpb24oZSx0KXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKHQ9dD9cInN0cmluZ1wiPT10eXBlb2YodD10LmNyb3NzT3JpZ2luKT9cInVzZS1jcmVkZW50aWFsc1wiPT09dD90OlwiXCI6dm9pZCAwOm51bGwsaS5kLkMoZSx0KSl9LHQucHJlZmV0Y2hETlM9ZnVuY3Rpb24oZSl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJmkuZC5EKGUpfSx0LnByZWluaXQ9ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmdCYmXCJzdHJpbmdcIj09dHlwZW9mIHQuYXMpe3ZhciBuPXQuYXMscj1jKG4sdC5jcm9zc09yaWdpbiksbz1cInN0cmluZ1wiPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwLGE9XCJzdHJpbmdcIj09dHlwZW9mIHQuZmV0Y2hQcmlvcml0eT90LmZldGNoUHJpb3JpdHk6dm9pZCAwO1wic3R5bGVcIj09PW4/aS5kLlMoZSxcInN0cmluZ1wiPT10eXBlb2YgdC5wcmVjZWRlbmNlP3QucHJlY2VkZW5jZTp2b2lkIDAse2Nyb3NzT3JpZ2luOnIsaW50ZWdyaXR5Om8sZmV0Y2hQcmlvcml0eTphfSk6XCJzY3JpcHRcIj09PW4mJmkuZC5YKGUse2Nyb3NzT3JpZ2luOnIsaW50ZWdyaXR5Om8sZmV0Y2hQcmlvcml0eTphLG5vbmNlOlwic3RyaW5nXCI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwfSl9fSx0LnByZWluaXRNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlpZihcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQpe2lmKG51bGw9PXQuYXN8fFwic2NyaXB0XCI9PT10LmFzKXt2YXIgbj1jKHQuYXMsdC5jcm9zc09yaWdpbik7aS5kLk0oZSx7Y3Jvc3NPcmlnaW46bixpbnRlZ3JpdHk6XCJzdHJpbmdcIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxub25jZTpcInN0cmluZ1wiPT10eXBlb2YgdC5ub25jZT90Lm5vbmNlOnZvaWQgMH0pfX1lbHNlIG51bGw9PXQmJmkuZC5NKGUpfSx0LnByZWxvYWQ9ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10JiZcInN0cmluZ1wiPT10eXBlb2YgdC5hcyl7dmFyIG49dC5hcyxyPWMobix0LmNyb3NzT3JpZ2luKTtpLmQuTChlLG4se2Nyb3NzT3JpZ2luOnIsaW50ZWdyaXR5Olwic3RyaW5nXCI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDAsbm9uY2U6XCJzdHJpbmdcIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDAsdHlwZTpcInN0cmluZ1wiPT10eXBlb2YgdC50eXBlP3QudHlwZTp2b2lkIDAsZmV0Y2hQcmlvcml0eTpcInN0cmluZ1wiPT10eXBlb2YgdC5mZXRjaFByaW9yaXR5P3QuZmV0Y2hQcmlvcml0eTp2b2lkIDAscmVmZXJyZXJQb2xpY3k6XCJzdHJpbmdcIj09dHlwZW9mIHQucmVmZXJyZXJQb2xpY3k/dC5yZWZlcnJlclBvbGljeTp2b2lkIDAsaW1hZ2VTcmNTZXQ6XCJzdHJpbmdcIj09dHlwZW9mIHQuaW1hZ2VTcmNTZXQ/dC5pbWFnZVNyY1NldDp2b2lkIDAsaW1hZ2VTaXplczpcInN0cmluZ1wiPT10eXBlb2YgdC5pbWFnZVNpemVzP3QuaW1hZ2VTaXplczp2b2lkIDAsbWVkaWE6XCJzdHJpbmdcIj09dHlwZW9mIHQubWVkaWE/dC5tZWRpYTp2b2lkIDB9KX19LHQucHJlbG9hZE1vZHVsZT1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWlmKHQpe3ZhciBuPWModC5hcyx0LmNyb3NzT3JpZ2luKTtpLmQubShlLHthczpcInN0cmluZ1wiPT10eXBlb2YgdC5hcyYmXCJzY3JpcHRcIiE9PXQuYXM/dC5hczp2b2lkIDAsY3Jvc3NPcmlnaW46bixpbnRlZ3JpdHk6XCJzdHJpbmdcIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMH0pfWVsc2UgaS5kLm0oZSl9LHQucmVxdWVzdEZvcm1SZXNldD1mdW5jdGlvbihlKXtpLmQucihlKX0sdC51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1mdW5jdGlvbihlLHQpe3JldHVybiBlKHQpfSx0LnVzZUZvcm1TdGF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHMuSC51c2VGb3JtU3RhdGUoZSx0LG4pfSx0LnVzZUZvcm1TdGF0dXM9ZnVuY3Rpb24oKXtyZXR1cm4gcy5ILnVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzKCl9LHQudmVyc2lvbj1cIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIn0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2NsaWVudC5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjshZnVuY3Rpb24gZSgpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJlwiZnVuY3Rpb25cIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLGUuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLWNsaWVudC5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vaW5kZXguanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7IWZ1bmN0aW9uIGUoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSxlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QtY29tcGlsZXItcnVudGltZS5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvaW5kZXguanNcIikuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFO3QuYz1mdW5jdGlvbihlKXtyZXR1cm4gci5ILnVzZU1lbW9DYWNoZShlKX19LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbj1TeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIik7ZnVuY3Rpb24gcihlLHQscil7dmFyIG89bnVsbDtpZih2b2lkIDAhPT1yJiYobz1cIlwiK3IpLHZvaWQgMCE9PXQua2V5JiYobz1cIlwiK3Qua2V5KSxcImtleVwiaW4gdClmb3IodmFyIGEgaW4gcj17fSx0KVwia2V5XCIhPT1hJiYoclthXT10W2FdKTtlbHNlIHI9dDtyZXR1cm57JCR0eXBlb2Y6bix0eXBlOmUsa2V5Om8scmVmOnZvaWQgMCE9PSh0PXIucmVmKT90Om51bGwscHJvcHM6cn19dC5GcmFnbWVudD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksdC5qc3g9cix0LmpzeHM9cn0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuPVN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxyPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksbz1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksYT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksaT1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIikscz1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxjPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSx1PVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxkPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLGY9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIikscD1TeW1ib2wuaXRlcmF0b3IsaD17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sbT1PYmplY3QuYXNzaWduLGc9e307ZnVuY3Rpb24geShlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1nLHRoaXMudXBkYXRlcj1ufHxofWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gYihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1nLHRoaXMudXBkYXRlcj1ufHxofXkucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30seS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcihcInRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LFwic2V0U3RhdGVcIil9LHkucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxlLFwiZm9yY2VVcGRhdGVcIil9LHYucHJvdG90eXBlPXkucHJvdG90eXBlO3ZhciBBPWIucHJvdG90eXBlPW5ldyB2O0EuY29uc3RydWN0b3I9YixtKEEseS5wcm90b3R5cGUpLEEuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIHg9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiB3KCl7fXZhciBDPXtIOm51bGwsQTpudWxsLFQ6bnVsbCxTOm51bGx9LF89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBrKGUsdCxyKXt2YXIgbz1yLnJlZjtyZXR1cm57JCR0eXBlb2Y6bix0eXBlOmUsa2V5OnQscmVmOnZvaWQgMCE9PW8/bzpudWxsLHByb3BzOnJ9fWZ1bmN0aW9uIEUoZSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09bn12YXIgaj0vXFwvKy9nO2Z1bmN0aW9uIFMoZSx0KXt2YXIgbixyO3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmbnVsbCE9ZS5rZXk/KG49XCJcIitlLmtleSxyPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifSxcIiRcIituLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gcltlXX0pKTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBPKGUsdCxvKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBhPVtdLGk9MDtyZXR1cm4hZnVuY3Rpb24gZSh0LG8sYSxpLGwpe3ZhciBzLGMsdSxkPXR5cGVvZiB0OyhcInVuZGVmaW5lZFwiPT09ZHx8XCJib29sZWFuXCI9PT1kKSYmKHQ9bnVsbCk7dmFyIGg9ITE7aWYobnVsbD09PXQpaD0hMDtlbHNlIHN3aXRjaChkKXtjYXNlXCJiaWdpbnRcIjpjYXNlXCJzdHJpbmdcIjpjYXNlXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2VcIm9iamVjdFwiOnN3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIG46Y2FzZSByOmg9ITA7YnJlYWs7Y2FzZSBmOnJldHVybiBlKChoPXQuX2luaXQpKHQuX3BheWxvYWQpLG8sYSxpLGwpfX1pZihoKXJldHVybiBsPWwodCksaD1cIlwiPT09aT9cIi5cIitTKHQsMCk6aSx4KGwpPyhhPVwiXCIsbnVsbCE9aCYmKGE9aC5yZXBsYWNlKGosXCIkJi9cIikrXCIvXCIpLGUobCxvLGEsXCJcIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pKTpudWxsIT1sJiYoRShsKSYmKHM9bCxjPWErKG51bGw9PWwua2V5fHx0JiZ0LmtleT09PWwua2V5P1wiXCI6KFwiXCIrbC5rZXkpLnJlcGxhY2UoaixcIiQmL1wiKStcIi9cIikraCxsPWsocy50eXBlLGMscy5wcm9wcykpLG8ucHVzaChsKSksMTtoPTA7dmFyIG09XCJcIj09PWk/XCIuXCI6aStcIjpcIjtpZih4KHQpKWZvcih2YXIgZz0wO2c8dC5sZW5ndGg7ZysrKWQ9bStTKGk9dFtnXSxnKSxoKz1lKGksbyxhLGQsbCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihnPW51bGw9PT0odT10KXx8XCJvYmplY3RcIiE9dHlwZW9mIHU/bnVsbDpcImZ1bmN0aW9uXCI9PXR5cGVvZih1PXAmJnVbcF18fHVbXCJAQGl0ZXJhdG9yXCJdKT91Om51bGwpKWZvcih0PWcuY2FsbCh0KSxnPTA7IShpPXQubmV4dCgpKS5kb25lOylkPW0rUyhpPWkudmFsdWUsZysrKSxoKz1lKGksbyxhLGQsbCk7ZWxzZSBpZihcIm9iamVjdFwiPT09ZCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuKXJldHVybiBlKGZ1bmN0aW9uKGUpe3N3aXRjaChlLnN0YXR1cyl7Y2FzZVwiZnVsZmlsbGVkXCI6cmV0dXJuIGUudmFsdWU7Y2FzZVwicmVqZWN0ZWRcIjp0aHJvdyBlLnJlYXNvbjtkZWZhdWx0OnN3aXRjaChcInN0cmluZ1wiPT10eXBlb2YgZS5zdGF0dXM/ZS50aGVuKHcsdyk6KGUuc3RhdHVzPVwicGVuZGluZ1wiLGUudGhlbihmdW5jdGlvbih0KXtcInBlbmRpbmdcIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9XCJmdWxmaWxsZWRcIixlLnZhbHVlPXQpfSxmdW5jdGlvbih0KXtcInBlbmRpbmdcIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9XCJyZWplY3RlZFwiLGUucmVhc29uPXQpfSkpLGUuc3RhdHVzKXtjYXNlXCJmdWxmaWxsZWRcIjpyZXR1cm4gZS52YWx1ZTtjYXNlXCJyZWplY3RlZFwiOnRocm93IGUucmVhc29ufX10aHJvdyBlfSh0KSxvLGEsaSxsKTt0aHJvdyBFcnJvcihcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIrKFwiW29iamVjdCBPYmplY3RdXCI9PT0obz1TdHJpbmcodCkpP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXModCkuam9pbihcIiwgXCIpK1wifVwiOm8pK1wiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiKX1yZXR1cm4gaH0oZSxhLFwiXCIsXCJcIixmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKG8sZSxpKyspfSksYX1mdW5jdGlvbiBCKGUpe2lmKC0xPT09ZS5fc3RhdHVzKXt2YXIgdD1lLl9yZXN1bHQ7KHQ9dCgpKS50aGVuKGZ1bmN0aW9uKHQpeygwPT09ZS5fc3RhdHVzfHwtMT09PWUuX3N0YXR1cykmJihlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9LGZ1bmN0aW9uKHQpeygwPT09ZS5fc3RhdHVzfHwtMT09PWUuX3N0YXR1cykmJihlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSwtMT09PWUuX3N0YXR1cyYmKGUuX3N0YXR1cz0wLGUuX3Jlc3VsdD10KX1pZigxPT09ZS5fc3RhdHVzKXJldHVybiBlLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBlLl9yZXN1bHR9dmFyIFA9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkVycm9yRXZlbnQpe3ZhciB0PW5ldyB3aW5kb3cuRXJyb3JFdmVudChcImVycm9yXCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxtZXNzYWdlOlwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUubWVzc2FnZT9TdHJpbmcoZS5tZXNzYWdlKTpTdHJpbmcoZSksZXJyb3I6ZX0pO2lmKCF3aW5kb3cuZGlzcGF0Y2hFdmVudCh0KSlyZXR1cm59ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgcHJvY2VzcyYmXCJmdW5jdGlvblwiPT10eXBlb2YgcHJvY2Vzcy5lbWl0KXJldHVybiB2b2lkIHByb2Nlc3MuZW1pdChcInVuY2F1Z2h0RXhjZXB0aW9uXCIsZSk7Y29uc29sZS5lcnJvcihlKX07dC5DaGlsZHJlbj17bWFwOk8sZm9yRWFjaDpmdW5jdGlvbihlLHQsbil7TyhlLGZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG4pfSxjb3VudDpmdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBPKGUsZnVuY3Rpb24oKXt0Kyt9KSx0fSx0b0FycmF5OmZ1bmN0aW9uKGUpe3JldHVybiBPKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIUUoZSkpdGhyb3cgRXJyb3IoXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIik7cmV0dXJuIGV9fSx0LkNvbXBvbmVudD15LHQuRnJhZ21lbnQ9byx0LlByb2ZpbGVyPWksdC5QdXJlQ29tcG9uZW50PWIsdC5TdHJpY3RNb2RlPWEsdC5TdXNwZW5zZT11LHQuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFPUMsdC5fX0NPTVBJTEVSX1JVTlRJTUU9e19fcHJvdG9fXzpudWxsLGM6ZnVuY3Rpb24oZSl7cmV0dXJuIEMuSC51c2VNZW1vQ2FjaGUoZSl9fSx0LmNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KG51bGwsYXJndW1lbnRzKX19LHQuY2FjaGVTaWduYWw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpdGhyb3cgRXJyb3IoXCJUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiK2UrXCIuXCIpO3ZhciByPW0oe30sZS5wcm9wcyksbz1lLmtleTtpZihudWxsIT10KWZvcihhIGluIHZvaWQgMCE9PXQua2V5JiYobz1cIlwiK3Qua2V5KSx0KV8uY2FsbCh0LGEpJiZcImtleVwiIT09YSYmXCJfX3NlbGZcIiE9PWEmJlwiX19zb3VyY2VcIiE9PWEmJihcInJlZlwiIT09YXx8dm9pZCAwIT09dC5yZWYpJiYoclthXT10W2FdKTt2YXIgYT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWEpci5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxhKXtmb3IodmFyIGk9QXJyYXkoYSksbD0wO2w8YTtsKyspaVtsXT1hcmd1bWVudHNbbCsyXTtyLmNoaWxkcmVuPWl9cmV0dXJuIGsoZS50eXBlLG8scil9LHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4oZT17JCR0eXBlb2Y6cyxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9KS5Qcm92aWRlcj1lLGUuQ29uc3VtZXI9eyQkdHlwZW9mOmwsX2NvbnRleHQ6ZX0sZX0sdC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvPXt9LGE9bnVsbDtpZihudWxsIT10KWZvcihyIGluIHZvaWQgMCE9PXQua2V5JiYoYT1cIlwiK3Qua2V5KSx0KV8uY2FsbCh0LHIpJiZcImtleVwiIT09ciYmXCJfX3NlbGZcIiE9PXImJlwiX19zb3VyY2VcIiE9PXImJihvW3JdPXRbcl0pO3ZhciBpPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09aSlvLmNoaWxkcmVuPW47ZWxzZSBpZigxPGkpe2Zvcih2YXIgbD1BcnJheShpKSxzPTA7czxpO3MrKylsW3NdPWFyZ3VtZW50c1tzKzJdO28uY2hpbGRyZW49bH1pZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiBpPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PW9bcl0mJihvW3JdPWlbcl0pO3JldHVybiBrKGUsYSxvKX0sdC5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sdC5mb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpjLHJlbmRlcjplfX0sdC5pc1ZhbGlkRWxlbWVudD1FLHQubGF6eT1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6ZixfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmV9LF9pbml0OkJ9fSx0Lm1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6ZCx0eXBlOmUsY29tcGFyZTp2b2lkIDA9PT10P251bGw6dH19LHQuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PUMuVCxuPXt9O0MuVD1uO3RyeXt2YXIgcj1lKCksbz1DLlM7bnVsbCE9PW8mJm8obixyKSxcIm9iamVjdFwiPT10eXBlb2YgciYmbnVsbCE9PXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIudGhlbiYmci50aGVuKHcsUCl9Y2F0Y2goZSl7UChlKX1maW5hbGx5e251bGwhPT10JiZudWxsIT09bi50eXBlcyYmKHQudHlwZXM9bi50eXBlcyksQy5UPXR9fSx0LnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaD1mdW5jdGlvbigpe3JldHVybiBDLkgudXNlQ2FjaGVSZWZyZXNoKCl9LHQudXNlPWZ1bmN0aW9uKGUpe3JldHVybiBDLkgudXNlKGUpfSx0LnVzZUFjdGlvblN0YXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQy5ILnVzZUFjdGlvblN0YXRlKGUsdCxuKX0sdC51c2VDYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlQ2FsbGJhY2soZSx0KX0sdC51c2VDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBDLkgudXNlQ29udGV4dChlKX0sdC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx0LnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZURlZmVycmVkVmFsdWUoZSx0KX0sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZUVmZmVjdChlLHQpfSx0LnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIEMuSC51c2VJZCgpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBDLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9LHQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VJbnNlcnRpb25FZmZlY3QoZSx0KX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZU1lbW8oZSx0KX0sdC51c2VPcHRpbWlzdGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VPcHRpbWlzdGljKGUsdCl9LHQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEMuSC51c2VSZWR1Y2VyKGUsdCxuKX0sdC51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuSC51c2VSZWYoZSl9LHQudXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuSC51c2VTdGF0ZShlKX0sdC51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEMuSC51c2VTeW5jRXh0ZXJuYWxTdG9yZShlLHQsbil9LHQudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBDLkgudXNlVHJhbnNpdGlvbigpfSx0LnZlcnNpb249XCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCJ9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2NvbXBpbGVyLXJ1bnRpbWUuanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWNvbXBpbGVyLXJ1bnRpbWUucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvaW5kZXguanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2pzeC1ydW50aW1lLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49ZS5sZW5ndGg7Zm9yKGUucHVzaCh0KTswPG47KXt2YXIgcj1uLTE+Pj4xLG89ZVtyXTtpZigwPGEobyx0KSllW3JdPXQsZVtuXT1vLG49cjtlbHNlIGJyZWFrfX1mdW5jdGlvbiByKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplWzBdfWZ1bmN0aW9uIG8oZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBudWxsO3ZhciB0PWVbMF0sbj1lLnBvcCgpO2lmKG4hPT10KXtlWzBdPW47Zm9yKHZhciByPTAsbz1lLmxlbmd0aCxpPW8+Pj4xO3I8aTspe3ZhciBsPTIqKHIrMSktMSxzPWVbbF0sYz1sKzEsdT1lW2NdO2lmKDA+YShzLG4pKWM8byYmMD5hKHUscyk/KGVbcl09dSxlW2NdPW4scj1jKTooZVtyXT1zLGVbbF09bixyPWwpO2Vsc2UgaWYoYzxvJiYwPmEodSxuKSllW3JdPXUsZVtjXT1uLHI9YztlbHNlIGJyZWFrfX1yZXR1cm4gdH1mdW5jdGlvbiBhKGUsdCl7dmFyIG49ZS5zb3J0SW5kZXgtdC5zb3J0SW5kZXg7cmV0dXJuIDAhPT1uP246ZS5pZC10LmlkfWlmKHQudW5zdGFibGVfbm93PXZvaWQgMCxcIm9iamVjdFwiPT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGksbD1wZXJmb3JtYW5jZTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBsLm5vdygpfX1lbHNle3ZhciBzPURhdGUsYz1zLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHMubm93KCktY319dmFyIHU9W10sZD1bXSxmPTEscD1udWxsLGg9MyxtPSExLGc9ITEseT0hMSx2PSExLGI9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsQT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwseD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO2Z1bmN0aW9uIHcoZSl7Zm9yKHZhciB0PXIoZCk7bnVsbCE9PXQ7KXtpZihudWxsPT09dC5jYWxsYmFjaylvKGQpO2Vsc2UgaWYodC5zdGFydFRpbWU8PWUpbyhkKSx0LnNvcnRJbmRleD10LmV4cGlyYXRpb25UaW1lLG4odSx0KTtlbHNlIGJyZWFrO3Q9cihkKX19ZnVuY3Rpb24gQyhlKXtpZih5PSExLHcoZSksIWcpaWYobnVsbCE9PXIodSkpZz0hMCxffHwoXz0hMCxpKCkpO2Vsc2V7dmFyIHQ9cihkKTtudWxsIT09dCYmSShDLHQuc3RhcnRUaW1lLWUpfX12YXIgXz0hMSxrPS0xLEU9NSxqPS0xO2Z1bmN0aW9uIFMoKXtyZXR1cm4hIXZ8fCEodC51bnN0YWJsZV9ub3coKS1qPEUpfWZ1bmN0aW9uIE8oKXtpZih2PSExLF8pe3ZhciBlPXQudW5zdGFibGVfbm93KCk7aj1lO3ZhciBuPSEwO3RyeXtlOntnPSExLHkmJih5PSExLEEoayksaz0tMSksbT0hMDt2YXIgYT1oO3RyeXt0Ontmb3IodyhlKSxwPXIodSk7bnVsbCE9PXAmJiEocC5leHBpcmF0aW9uVGltZT5lJiZTKCkpOyl7dmFyIGw9cC5jYWxsYmFjaztpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBsKXtwLmNhbGxiYWNrPW51bGwsaD1wLnByaW9yaXR5TGV2ZWw7dmFyIHM9bChwLmV4cGlyYXRpb25UaW1lPD1lKTtpZihlPXQudW5zdGFibGVfbm93KCksXCJmdW5jdGlvblwiPT10eXBlb2Ygcyl7cC5jYWxsYmFjaz1zLHcoZSksbj0hMDticmVhayB0fXA9PT1yKHUpJiZvKHUpLHcoZSl9ZWxzZSBvKHUpO3A9cih1KX1pZihudWxsIT09cCluPSEwO2Vsc2V7dmFyIGM9cihkKTtudWxsIT09YyYmSShDLGMuc3RhcnRUaW1lLWUpLG49ITF9fWJyZWFrIGV9ZmluYWxseXtwPW51bGwsaD1hLG09ITF9fX1maW5hbGx5e24/aSgpOl89ITF9fX1pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB4KWk9ZnVuY3Rpb24oKXt4KE8pfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIEI9bmV3IE1lc3NhZ2VDaGFubmVsLFA9Qi5wb3J0MjtCLnBvcnQxLm9ubWVzc2FnZT1PLGk9ZnVuY3Rpb24oKXtQLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIGk9ZnVuY3Rpb24oKXtiKE8sMCl9O2Z1bmN0aW9uIEkoZSxuKXtrPWIoZnVuY3Rpb24oKXtlKHQudW5zdGFibGVfbm93KCkpfSxuKX10LnVuc3RhYmxlX0lkbGVQcmlvcml0eT01LHQudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MSx0LnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQsdC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zLHQudW5zdGFibGVfUHJvZmlsaW5nPW51bGwsdC51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yLHQudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7ZS5jYWxsYmFjaz1udWxsfSx0LnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGUpezA+ZXx8MTI1PGU/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpFPTA8ZT9NYXRoLmZsb29yKDFlMy9lKTo1fSx0LnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGh9LHQudW5zdGFibGVfbmV4dD1mdW5jdGlvbihlKXtzd2l0Y2goaCl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIHQ9MzticmVhaztkZWZhdWx0OnQ9aH12YXIgbj1oO2g9dDt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e2g9bn19LHQudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7dj0hMH0sdC51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmU9M312YXIgbj1oO2g9ZTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e2g9bn19LHQudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihlLG8sYSl7dmFyIGw9dC51bnN0YWJsZV9ub3coKTtzd2l0Y2goYT1cIm9iamVjdFwiPT10eXBlb2YgYSYmbnVsbCE9PWEmJlwibnVtYmVyXCI9PXR5cGVvZihhPWEuZGVsYXkpJiYwPGE/bCthOmwsZSl7Y2FzZSAxOnZhciBzPS0xO2JyZWFrO2Nhc2UgMjpzPTI1MDticmVhaztjYXNlIDU6cz0weDNmZmZmZmZmO2JyZWFrO2Nhc2UgNDpzPTFlNDticmVhaztkZWZhdWx0OnM9NWUzfXJldHVybiBzPWErcyxlPXtpZDpmKyssY2FsbGJhY2s6byxwcmlvcml0eUxldmVsOmUsc3RhcnRUaW1lOmEsZXhwaXJhdGlvblRpbWU6cyxzb3J0SW5kZXg6LTF9LGE+bD8oZS5zb3J0SW5kZXg9YSxuKGQsZSksbnVsbD09PXIodSkmJmU9PT1yKGQpJiYoeT8oQShrKSxrPS0xKTp5PSEwLEkoQyxhLWwpKSk6KGUuc29ydEluZGV4PXMsbih1LGUpLGd8fG18fChnPSEwLF98fChfPSEwLGkoKSkpKSxlfSx0LnVuc3RhYmxlX3Nob3VsZFlpZWxkPVMsdC51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9aDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1oO2g9dDt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7aD1ufX19fSxcIi4vZGlzdC9jb21waWxlZC9zY2hlZHVsZXIvaW5kZXguanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvc3RhY2t0cmFjZS1wYXJzZXIvc3RhY2stdHJhY2UtcGFyc2VyLmNqcy5qc1wiOmZ1bmN0aW9uKGUpeygoKT0+e1widXNlIHN0cmljdFwiO1widW5kZWZpbmVkXCIhPXR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fJiYoX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1cIi8vXCIpO3ZhciB0LG4scixvLGEsaSxsLHMsYz17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0PVwiPHVua25vd24+XCIsbj0vXlxccyphdCAoLio/KSA/XFwoKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lLWV4dGVuc2lvbnxuYXRpdmV8ZXZhbHx3ZWJwYWNrfHdlYnBhY2staW50ZXJuYWx8cnNjfGFib3V0fHR1cmJvcGFja3w8YW5vbnltb3VzPnxcXC98W2Etel06XFxcXHxcXFxcXFxcXCkuKj8pKD86OihcXGQrKSk/KD86OihcXGQrKSk/XFwpP1xccyokL2kscj0vXFwoKFxcUyopKD86OihcXGQrKSkoPzo6KFxcZCspKVxcKS8sbz0vXlxccyphdCAoPzooKD86XFxbb2JqZWN0IG9iamVjdFxcXSk/LispICk/XFwoPygoPzpmaWxlfG1zLWFwcHh8aHR0cHM/fHdlYnBhY2t8d2VicGFjay1pbnRlcm5hbHxyc2N8YWJvdXR8dHVyYm9wYWNrfGJsb2IpOi4qPyk6KFxcZCspKD86OihcXGQrKSk/XFwpP1xccyokL2ksYT0vXlxccyooLio/KSg/OlxcKCguKj8pXFwpKT8oPzpefEApKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lfHdlYnBhY2t8d2VicGFjay1pbnRlcm5hbHxyc2N8YWJvdXR8dHVyYm9wYWNrfHJlc291cmNlfFxcW25hdGl2ZSkuKj98W15AXSpidW5kbGUpKD86OihcXGQrKSk/KD86OihcXGQrKSk/XFxzKiQvaSxpPS8oXFxTKykgbGluZSAoXFxkKykoPzogPiBldmFsIGxpbmUgXFxkKykqID4gZXZhbC9pLGw9L15cXHMqKD86KFteQF0qKSg/OlxcKCguKj8pXFwpKT9AKT8oXFxTLio/KTooXFxkKykoPzo6KFxcZCspKT9cXHMqJC9pLHM9L15cXHMqYXQgKD86KCg/OlxcW29iamVjdCBvYmplY3RcXF0pP1teXFxcXC9dKyg/OiBcXFthcyBcXFMrXFxdKT8pICk/XFwoPyguKj8pOihcXGQrKSg/OjooXFxkKykpP1xcKT9cXHMqJC9pLGMucGFyc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoXCJcXG5cIikucmVkdWNlKGZ1bmN0aW9uKGUsYyl7dmFyIHUsZCxmLHAsaCxtLGc9ZnVuY3Rpb24oZSl7dmFyIG89bi5leGVjKGUpO2lmKCFvKXJldHVybiBudWxsO3ZhciBhPW9bMl0mJjA9PT1vWzJdLmluZGV4T2YoXCJuYXRpdmVcIiksaT1vWzJdJiYwPT09b1syXS5pbmRleE9mKFwiZXZhbFwiKSxsPXIuZXhlYyhvWzJdKTtyZXR1cm4gaSYmbnVsbCE9bCYmKG9bMl09bFsxXSxvWzNdPWxbMl0sb1s0XT1sWzNdKSx7ZmlsZTphP251bGw6b1syXSxtZXRob2ROYW1lOm9bMV18fHQsYXJndW1lbnRzOmE/W29bMl1dOltdLGxpbmVOdW1iZXI6b1szXT8rb1szXTpudWxsLGNvbHVtbjpvWzRdPytvWzRdOm51bGx9fShjKXx8KHU9YywoZD1vLmV4ZWModSkpP3tmaWxlOmRbMl0sbWV0aG9kTmFtZTpkWzFdfHx0LGFyZ3VtZW50czpbXSxsaW5lTnVtYmVyOitkWzNdLGNvbHVtbjpkWzRdPytkWzRdOm51bGx9Om51bGwpfHxmdW5jdGlvbihlKXt2YXIgbj1hLmV4ZWMoZSk7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9blszXSYmblszXS5pbmRleE9mKFwiID4gZXZhbFwiKT4tMSxvPWkuZXhlYyhuWzNdKTtyZXR1cm4gciYmbnVsbCE9byYmKG5bM109b1sxXSxuWzRdPW9bMl0sbls1XT1udWxsKSx7ZmlsZTpuWzNdLG1ldGhvZE5hbWU6blsxXXx8dCxhcmd1bWVudHM6blsyXT9uWzJdLnNwbGl0KFwiLFwiKTpbXSxsaW5lTnVtYmVyOm5bNF0/K25bNF06bnVsbCxjb2x1bW46bls1XT8rbls1XTpudWxsfX0oYyl8fChmPWMsKHA9cy5leGVjKGYpKT97ZmlsZTpwWzJdLG1ldGhvZE5hbWU6cFsxXXx8dCxhcmd1bWVudHM6W10sbGluZU51bWJlcjorcFszXSxjb2x1bW46cFs0XT8rcFs0XTpudWxsfTpudWxsKXx8KGg9YywobT1sLmV4ZWMoaCkpP3tmaWxlOm1bM10sbWV0aG9kTmFtZTptWzFdfHx0LGFyZ3VtZW50czpbXSxsaW5lTnVtYmVyOittWzRdLGNvbHVtbjptWzVdPyttWzVdOm51bGx9Om51bGwpO3JldHVybiBnJiZlLnB1c2goZyksZX0sW10pfSxlLmV4cG9ydHM9Y30pKCl9LFwiLi9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanNcIjpmdW5jdGlvbihlKXsoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgdD17NTExOmU9PntlLmV4cG9ydHM9KHtvbmx5Rmlyc3Q6ZT0hMX09e30pPT5SZWdFeHAoXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpfCg/Oig/OlxcXFxkezEsNH0oPzo7XFxcXGR7MCw0fSkqKT9bXFxcXGRBLVBSLVRaY2YtbnRxcnk9Pjx+XSkpXCIsZT92b2lkIDA6XCJnXCIpfSw1MzI6KGUsdCxuKT0+e2xldCByPW4oNTExKTtlLmV4cG9ydHM9ZT0+XCJzdHJpbmdcIj09dHlwZW9mIGU/ZS5yZXBsYWNlKHIoKSxcIlwiKTplfX0sbj17fTtmdW5jdGlvbiByKGUpe3ZhciBvPW5bZV07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBhPW5bZV09e2V4cG9ydHM6e319LGk9ITA7dHJ5e3RbZV0oYSxhLmV4cG9ydHMsciksaT0hMX1maW5hbGx5e2kmJmRlbGV0ZSBuW2VdfXJldHVybiBhLmV4cG9ydHN9ci5hYj1cIi8vXCIsZS5leHBvcnRzPXIoNTMyKX0pKCl9LFwiLi9zcmMvYnVpbGQvd2VicGFjay9sb2FkZXJzL2RldnRvb2wvZGV2dG9vbC1zdHlsZS1pbmplY3QuanNcIjpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7bGV0IGU9d2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGU7aWYoZS5jYWNoZWRTaGFkb3dSb290KXJldHVybiBlLmNhY2hlZFNoYWRvd1Jvb3Q7bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIm5leHRqcy1wb3J0YWxcIiksbj10Py5zaGFkb3dSb290fHxudWxsO3JldHVybiBuJiYoZS5jYWNoZWRTaGFkb3dSb290PW4pLG59ZnVuY3Rpb24gbihlLHQpe2xldCBuPXdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlO24ubGFzdEluc2VydGVkRWxlbWVudD9uLmxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmc/dC5pbnNlcnRCZWZvcmUoZSxuLmxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpOnQuYXBwZW5kQ2hpbGQoZSk6dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpLG4ubGFzdEluc2VydGVkRWxlbWVudD1lfWZ1bmN0aW9uIHIoKXtsZXQgZT13aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZSxyPXQoKTtyJiYoZS5wZW5kaW5nRWxlbWVudHMuZm9yRWFjaChlPT57bihlLHIpfSksZS5wZW5kaW5nRWxlbWVudHM9W10pfVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZT13aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZXx8e3BlbmRpbmdFbGVtZW50czpbXSxpc09ic2VydmluZzohMSxsYXN0SW5zZXJ0ZWRFbGVtZW50Om51bGwsY2FjaGVkU2hhZG93Um9vdDpudWxsfSksZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKFwiZGF0YS1uZXh0anMtZGV2LXRvb2wtc3R5bGVcIixcInRydWVcIik7bGV0IG89dCgpO28/bihlLG8pOih3aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZS5wZW5kaW5nRWxlbWVudHMucHVzaChlKSxmdW5jdGlvbigpe2xldCBlPXdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlO2lmKGUuaXNPYnNlcnZpbmcpcmV0dXJuO2lmKGUuaXNPYnNlcnZpbmc9ITAsdCgpKXJldHVybiByKCk7bGV0IG49bmV3IE11dGF0aW9uT2JzZXJ2ZXIobz0+e2lmKDAhPT1vLmxlbmd0aCl7Zm9yKGxldCBhIG9mIG8paWYoMCE9PWEuYWRkZWROb2Rlcy5sZW5ndGgpZm9yKGxldCBvIG9mIGEuYWRkZWROb2Rlcyl7aWYoby5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKWNvbnRpbnVlO2xldCBhPW51bGw7aWYoXCJTQ1JJUFRcIj09PW8udGFnTmFtZSYmby5nZXRBdHRyaWJ1dGUoXCJkYXRhLW5leHRqcy1kZXYtb3ZlcmxheVwiKT9hPW8uZmlyc3RDaGlsZDpcIk5FWFRKUy1QT1JUQUxcIj09PW8udGFnTmFtZSYmKGE9byksYSl7bGV0IG89KCk9Pnt0KCk/KHIoKSxuLmRpc2Nvbm5lY3QoKSxlLmlzT2JzZXJ2aW5nPSExKTpzZXRUaW1lb3V0KG8sMjApfTtvKCk7cmV0dXJufX19fSk7bi5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9KCkpfX0sXCIuL2Rpc3QvY29tcGlsZWQvem9kL2luZGV4LmNqc1wiOmZ1bmN0aW9uKGUpeygoKT0+e1widXNlIHN0cmljdFwiO3ZhciB0PXs2Mjk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7KCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpJiYobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlLmRlZmF1bHQ9dH0pLGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiIT09biYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnIodCxlLG4pO3JldHVybiBvKHQsZSksdH0saT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC56PXZvaWQgMDtsZXQgbD1hKG4oOTIzKSk7dC56PWwsaShuKDkyMyksdCksdC5kZWZhdWx0PWx9LDM0ODooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5ab2RFcnJvcj10LnF1b3RlbGVzc0pzb249dC5ab2RJc3N1ZUNvZGU9dm9pZCAwO2xldCByPW4oNzA5KTt0LlpvZElzc3VlQ29kZT1yLnV0aWwuYXJyYXlUb0VudW0oW1wiaW52YWxpZF90eXBlXCIsXCJpbnZhbGlkX2xpdGVyYWxcIixcImN1c3RvbVwiLFwiaW52YWxpZF91bmlvblwiLFwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yXCIsXCJpbnZhbGlkX2VudW1fdmFsdWVcIixcInVucmVjb2duaXplZF9rZXlzXCIsXCJpbnZhbGlkX2FyZ3VtZW50c1wiLFwiaW52YWxpZF9yZXR1cm5fdHlwZVwiLFwiaW52YWxpZF9kYXRlXCIsXCJpbnZhbGlkX3N0cmluZ1wiLFwidG9vX3NtYWxsXCIsXCJ0b29fYmlnXCIsXCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc1wiLFwibm90X211bHRpcGxlX29mXCIsXCJub3RfZmluaXRlXCJdKSx0LnF1b3RlbGVzc0pzb249ZT0+SlNPTi5zdHJpbmdpZnkoZSxudWxsLDIpLnJlcGxhY2UoL1wiKFteXCJdKylcIjovZyxcIiQxOlwiKTtjbGFzcyBvIGV4dGVuZHMgRXJyb3J7Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmlzc3Vlc31jb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuaXNzdWVzPVtdLHRoaXMuYWRkSXNzdWU9ZT0+e3RoaXMuaXNzdWVzPVsuLi50aGlzLmlzc3VlcyxlXX0sdGhpcy5hZGRJc3N1ZXM9KGU9W10pPT57dGhpcy5pc3N1ZXM9Wy4uLnRoaXMuaXNzdWVzLC4uLmVdfTtsZXQgdD1uZXcudGFyZ2V0LnByb3RvdHlwZTtPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsdCk6dGhpcy5fX3Byb3RvX189dCx0aGlzLm5hbWU9XCJab2RFcnJvclwiLHRoaXMuaXNzdWVzPWV9Zm9ybWF0KGUpe2xldCB0PWV8fGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lc3NhZ2V9LG49e19lcnJvcnM6W119LHI9ZT0+e2ZvcihsZXQgbyBvZiBlLmlzc3VlcylpZihcImludmFsaWRfdW5pb25cIj09PW8uY29kZSlvLnVuaW9uRXJyb3JzLm1hcChyKTtlbHNlIGlmKFwiaW52YWxpZF9yZXR1cm5fdHlwZVwiPT09by5jb2RlKXIoby5yZXR1cm5UeXBlRXJyb3IpO2Vsc2UgaWYoXCJpbnZhbGlkX2FyZ3VtZW50c1wiPT09by5jb2RlKXIoby5hcmd1bWVudHNFcnJvcik7ZWxzZSBpZigwPT09by5wYXRoLmxlbmd0aCluLl9lcnJvcnMucHVzaCh0KG8pKTtlbHNle2xldCBlPW4scj0wO2Zvcig7cjxvLnBhdGgubGVuZ3RoOyl7bGV0IG49by5wYXRoW3JdO3I9PT1vLnBhdGgubGVuZ3RoLTE/KGVbbl09ZVtuXXx8e19lcnJvcnM6W119LGVbbl0uX2Vycm9ycy5wdXNoKHQobykpKTplW25dPWVbbl18fHtfZXJyb3JzOltdfSxlPWVbbl0scisrfX19O3JldHVybiByKHRoaXMpLG59c3RhdGljIGFzc2VydChlKXtpZighKGUgaW5zdGFuY2VvZiBvKSl0aHJvdyBFcnJvcihgTm90IGEgWm9kRXJyb3I6ICR7ZX1gKX10b1N0cmluZygpe3JldHVybiB0aGlzLm1lc3NhZ2V9Z2V0IG1lc3NhZ2UoKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pc3N1ZXMsci51dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlciwyKX1nZXQgaXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5pc3N1ZXMubGVuZ3RofWZsYXR0ZW4oZT1lPT5lLm1lc3NhZ2Upe2xldCB0PXt9LG49W107Zm9yKGxldCByIG9mIHRoaXMuaXNzdWVzKWlmKHIucGF0aC5sZW5ndGg+MCl7bGV0IG49ci5wYXRoWzBdO3Rbbl09dFtuXXx8W10sdFtuXS5wdXNoKGUocikpfWVsc2Ugbi5wdXNoKGUocikpO3JldHVybntmb3JtRXJyb3JzOm4sZmllbGRFcnJvcnM6dH19Z2V0IGZvcm1FcnJvcnMoKXtyZXR1cm4gdGhpcy5mbGF0dGVuKCl9fXQuWm9kRXJyb3I9byxvLmNyZWF0ZT1lPT5uZXcgbyhlKX0sNjE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdEVycm9yTWFwPXZvaWQgMCx0LnNldEVycm9yTWFwPWZ1bmN0aW9uKGUpe2E9ZX0sdC5nZXRFcnJvck1hcD1mdW5jdGlvbigpe3JldHVybiBhfTtsZXQgbz1yKG4oODcxKSk7dC5kZWZhdWx0RXJyb3JNYXA9by5kZWZhdWx0O2xldCBhPW8uZGVmYXVsdH0sOTIzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOyghb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKSYmKG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksbyhuKDYxKSx0KSxvKG4oODE4KSx0KSxvKG4oNTE1KSx0KSxvKG4oNzA5KSx0KSxvKG4oMTU1KSx0KSxvKG4oMzQ4KSx0KX0sNTM4OihlLHQpPT57dmFyIG4scjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmVycm9yVXRpbD12b2lkIDAsKHI9bnx8KHQuZXJyb3JVdGlsPW49e30pKS5lcnJUb09iaj1lPT5cInN0cmluZ1wiPT10eXBlb2YgZT97bWVzc2FnZTplfTplfHx7fSxyLnRvU3RyaW5nPWU9Plwic3RyaW5nXCI9PXR5cGVvZiBlP2U6ZT8ubWVzc2FnZX0sODE4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzQXN5bmM9dC5pc1ZhbGlkPXQuaXNEaXJ0eT10LmlzQWJvcnRlZD10Lk9LPXQuRElSVFk9dC5JTlZBTElEPXQuUGFyc2VTdGF0dXM9dC5FTVBUWV9QQVRIPXQubWFrZUlzc3VlPXZvaWQgMCx0LmFkZElzc3VlVG9Db250ZXh0PWZ1bmN0aW9uKGUsbil7bGV0IHI9KDAsby5nZXRFcnJvck1hcCkoKSxpPSgwLHQubWFrZUlzc3VlKSh7aXNzdWVEYXRhOm4sZGF0YTplLmRhdGEscGF0aDplLnBhdGgsZXJyb3JNYXBzOltlLmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsZS5zY2hlbWFFcnJvck1hcCxyLHI9PT1hLmRlZmF1bHQ/dm9pZCAwOmEuZGVmYXVsdF0uZmlsdGVyKGU9PiEhZSl9KTtlLmNvbW1vbi5pc3N1ZXMucHVzaChpKX07bGV0IG89big2MSksYT1yKG4oODcxKSk7dC5tYWtlSXNzdWU9ZT0+e2xldHtkYXRhOnQscGF0aDpuLGVycm9yTWFwczpyLGlzc3VlRGF0YTpvfT1lLGE9Wy4uLm4sLi4uby5wYXRofHxbXV0saT17Li4ubyxwYXRoOmF9O2lmKHZvaWQgMCE9PW8ubWVzc2FnZSlyZXR1cm57Li4ubyxwYXRoOmEsbWVzc2FnZTpvLm1lc3NhZ2V9O2xldCBsPVwiXCI7Zm9yKGxldCBlIG9mIHIuZmlsdGVyKGU9PiEhZSkuc2xpY2UoKS5yZXZlcnNlKCkpbD1lKGkse2RhdGE6dCxkZWZhdWx0RXJyb3I6bH0pLm1lc3NhZ2U7cmV0dXJuey4uLm8scGF0aDphLG1lc3NhZ2U6bH19LHQuRU1QVFlfUEFUSD1bXTtjbGFzcyBpe2NvbnN0cnVjdG9yKCl7dGhpcy52YWx1ZT1cInZhbGlkXCJ9ZGlydHkoKXtcInZhbGlkXCI9PT10aGlzLnZhbHVlJiYodGhpcy52YWx1ZT1cImRpcnR5XCIpfWFib3J0KCl7XCJhYm9ydGVkXCIhPT10aGlzLnZhbHVlJiYodGhpcy52YWx1ZT1cImFib3J0ZWRcIil9c3RhdGljIG1lcmdlQXJyYXkoZSxuKXtsZXQgcj1bXTtmb3IobGV0IG8gb2Ygbil7aWYoXCJhYm9ydGVkXCI9PT1vLnN0YXR1cylyZXR1cm4gdC5JTlZBTElEO1wiZGlydHlcIj09PW8uc3RhdHVzJiZlLmRpcnR5KCksci5wdXNoKG8udmFsdWUpfXJldHVybntzdGF0dXM6ZS52YWx1ZSx2YWx1ZTpyfX1zdGF0aWMgYXN5bmMgbWVyZ2VPYmplY3RBc3luYyhlLHQpe2xldCBuPVtdO2ZvcihsZXQgZSBvZiB0KXtsZXQgdD1hd2FpdCBlLmtleSxyPWF3YWl0IGUudmFsdWU7bi5wdXNoKHtrZXk6dCx2YWx1ZTpyfSl9cmV0dXJuIGkubWVyZ2VPYmplY3RTeW5jKGUsbil9c3RhdGljIG1lcmdlT2JqZWN0U3luYyhlLG4pe2xldCByPXt9O2ZvcihsZXQgbyBvZiBuKXtsZXR7a2V5Om4sdmFsdWU6YX09bztpZihcImFib3J0ZWRcIj09PW4uc3RhdHVzfHxcImFib3J0ZWRcIj09PWEuc3RhdHVzKXJldHVybiB0LklOVkFMSUQ7XCJkaXJ0eVwiPT09bi5zdGF0dXMmJmUuZGlydHkoKSxcImRpcnR5XCI9PT1hLnN0YXR1cyYmZS5kaXJ0eSgpLFwiX19wcm90b19fXCIhPT1uLnZhbHVlJiYodm9pZCAwIT09YS52YWx1ZXx8by5hbHdheXNTZXQpJiYocltuLnZhbHVlXT1hLnZhbHVlKX1yZXR1cm57c3RhdHVzOmUudmFsdWUsdmFsdWU6cn19fXQuUGFyc2VTdGF0dXM9aSx0LklOVkFMSUQ9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOlwiYWJvcnRlZFwifSksdC5ESVJUWT1lPT4oe3N0YXR1czpcImRpcnR5XCIsdmFsdWU6ZX0pLHQuT0s9ZT0+KHtzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOmV9KSx0LmlzQWJvcnRlZD1lPT5cImFib3J0ZWRcIj09PWUuc3RhdHVzLHQuaXNEaXJ0eT1lPT5cImRpcnR5XCI9PT1lLnN0YXR1cyx0LmlzVmFsaWQ9ZT0+XCJ2YWxpZFwiPT09ZS5zdGF0dXMsdC5pc0FzeW5jPWU9PlwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZlIGluc3RhbmNlb2YgUHJvbWlzZX0sNTE1OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LDcwOTooZSx0KT0+e3ZhciBuLHIsbztPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFBhcnNlZFR5cGU9dC5ab2RQYXJzZWRUeXBlPXQub2JqZWN0VXRpbD10LnV0aWw9dm9pZCAwLChvPW58fCh0LnV0aWw9bj17fSkpLmFzc2VydEVxdWFsPWU9Pnt9LG8uYXNzZXJ0SXM9ZnVuY3Rpb24oZSl7fSxvLmFzc2VydE5ldmVyPWZ1bmN0aW9uKGUpe3Rocm93IEVycm9yKCl9LG8uYXJyYXlUb0VudW09ZT0+e2xldCB0PXt9O2ZvcihsZXQgbiBvZiBlKXRbbl09bjtyZXR1cm4gdH0sby5nZXRWYWxpZEVudW1WYWx1ZXM9ZT0+e2xldCB0PW8ub2JqZWN0S2V5cyhlKS5maWx0ZXIodD0+XCJudW1iZXJcIiE9dHlwZW9mIGVbZVt0XV0pLG49e307Zm9yKGxldCByIG9mIHQpbltyXT1lW3JdO3JldHVybiBvLm9iamVjdFZhbHVlcyhuKX0sby5vYmplY3RWYWx1ZXM9ZT0+by5vYmplY3RLZXlzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pLG8ub2JqZWN0S2V5cz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3Qua2V5cz9lPT5PYmplY3Qua2V5cyhlKTplPT57bGV0IHQ9W107Zm9yKGxldCBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnQucHVzaChuKTtyZXR1cm4gdH0sby5maW5kPShlLHQpPT57Zm9yKGxldCBuIG9mIGUpaWYodChuKSlyZXR1cm4gbn0sby5pc0ludGVnZXI9XCJmdW5jdGlvblwiPT10eXBlb2YgTnVtYmVyLmlzSW50ZWdlcj9lPT5OdW1iZXIuaXNJbnRlZ2VyKGUpOmU9PlwibnVtYmVyXCI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUoZSkmJk1hdGguZmxvb3IoZSk9PT1lLG8uam9pblZhbHVlcz1mdW5jdGlvbihlLHQ9XCIgfCBcIil7cmV0dXJuIGUubWFwKGU9Plwic3RyaW5nXCI9PXR5cGVvZiBlP2AnJHtlfSdgOmUpLmpvaW4odCl9LG8uanNvblN0cmluZ2lmeVJlcGxhY2VyPShlLHQpPT5cImJpZ2ludFwiPT10eXBlb2YgdD90LnRvU3RyaW5nKCk6dCwocnx8KHQub2JqZWN0VXRpbD1yPXt9KSkubWVyZ2VTaGFwZXM9KGUsdCk9Pih7Li4uZSwuLi50fSksdC5ab2RQYXJzZWRUeXBlPW4uYXJyYXlUb0VudW0oW1wic3RyaW5nXCIsXCJuYW5cIixcIm51bWJlclwiLFwiaW50ZWdlclwiLFwiZmxvYXRcIixcImJvb2xlYW5cIixcImRhdGVcIixcImJpZ2ludFwiLFwic3ltYm9sXCIsXCJmdW5jdGlvblwiLFwidW5kZWZpbmVkXCIsXCJudWxsXCIsXCJhcnJheVwiLFwib2JqZWN0XCIsXCJ1bmtub3duXCIsXCJwcm9taXNlXCIsXCJ2b2lkXCIsXCJuZXZlclwiLFwibWFwXCIsXCJzZXRcIl0pLHQuZ2V0UGFyc2VkVHlwZT1lPT57c3dpdGNoKHR5cGVvZiBlKXtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZDtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnN0cmluZztjYXNlXCJudW1iZXJcIjpyZXR1cm4gTnVtYmVyLmlzTmFOKGUpP3QuWm9kUGFyc2VkVHlwZS5uYW46dC5ab2RQYXJzZWRUeXBlLm51bWJlcjtjYXNlXCJib29sZWFuXCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5ib29sZWFuO2Nhc2VcImZ1bmN0aW9uXCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5mdW5jdGlvbjtjYXNlXCJiaWdpbnRcIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLmJpZ2ludDtjYXNlXCJzeW1ib2xcIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnN5bWJvbDtjYXNlXCJvYmplY3RcIjppZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB0LlpvZFBhcnNlZFR5cGUuYXJyYXk7aWYobnVsbD09PWUpcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5udWxsO2lmKGUudGhlbiYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuJiZlLmNhdGNoJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhdGNoKXJldHVybiB0LlpvZFBhcnNlZFR5cGUucHJvbWlzZTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgTWFwJiZlIGluc3RhbmNlb2YgTWFwKXJldHVybiB0LlpvZFBhcnNlZFR5cGUubWFwO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTZXQmJmUgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5zZXQ7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIERhdGUmJmUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB0LlpvZFBhcnNlZFR5cGUuZGF0ZTtyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLm9iamVjdDtkZWZhdWx0OnJldHVybiB0LlpvZFBhcnNlZFR5cGUudW5rbm93bn19fSw4NzE6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2xldCByPW4oMzQ4KSxvPW4oNzA5KTt0LmRlZmF1bHQ9KGUsdCk9PntsZXQgbjtzd2l0Y2goZS5jb2RlKXtjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZTpuPWUucmVjZWl2ZWQ9PT1vLlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkP1wiUmVxdWlyZWRcIjpgRXhwZWN0ZWQgJHtlLmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHtlLnJlY2VpdmVkfWA7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWw6bj1gSW52YWxpZCBsaXRlcmFsIHZhbHVlLCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KGUuZXhwZWN0ZWQsby51dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlcil9YDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzOm49YFVucmVjb2duaXplZCBrZXkocykgaW4gb2JqZWN0OiAke28udXRpbC5qb2luVmFsdWVzKGUua2V5cyxcIiwgXCIpfWA7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOm49XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6bj1gSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke28udXRpbC5qb2luVmFsdWVzKGUub3B0aW9ucyl9YDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZTpuPWBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7by51dGlsLmpvaW5WYWx1ZXMoZS5vcHRpb25zKX0sIHJlY2VpdmVkICcke2UucmVjZWl2ZWR9J2A7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpuPVwiSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHNcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfcmV0dXJuX3R5cGU6bj1cIkludmFsaWQgZnVuY3Rpb24gcmV0dXJuIHR5cGVcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTpuPVwiSW52YWxpZCBkYXRlXCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcIm9iamVjdFwiPT10eXBlb2YgZS52YWxpZGF0aW9uP1wiaW5jbHVkZXNcImluIGUudmFsaWRhdGlvbj8obj1gSW52YWxpZCBpbnB1dDogbXVzdCBpbmNsdWRlIFwiJHtlLnZhbGlkYXRpb24uaW5jbHVkZXN9XCJgLFwibnVtYmVyXCI9PXR5cGVvZiBlLnZhbGlkYXRpb24ucG9zaXRpb24mJihuPWAke259IGF0IG9uZSBvciBtb3JlIHBvc2l0aW9ucyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtlLnZhbGlkYXRpb24ucG9zaXRpb259YCkpOlwic3RhcnRzV2l0aFwiaW4gZS52YWxpZGF0aW9uP249YEludmFsaWQgaW5wdXQ6IG11c3Qgc3RhcnQgd2l0aCBcIiR7ZS52YWxpZGF0aW9uLnN0YXJ0c1dpdGh9XCJgOlwiZW5kc1dpdGhcImluIGUudmFsaWRhdGlvbj9uPWBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHtlLnZhbGlkYXRpb24uZW5kc1dpdGh9XCJgOm8udXRpbC5hc3NlcnROZXZlcihlLnZhbGlkYXRpb24pOm49XCJyZWdleFwiIT09ZS52YWxpZGF0aW9uP2BJbnZhbGlkICR7ZS52YWxpZGF0aW9ufWA6XCJJbnZhbGlkXCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS50b29fc21hbGw6bj1cImFycmF5XCI9PT1lLnR5cGU/YEFycmF5IG11c3QgY29udGFpbiAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJhdCBsZWFzdFwiOlwibW9yZSB0aGFuXCJ9ICR7ZS5taW5pbXVtfSBlbGVtZW50KHMpYDpcInN0cmluZ1wiPT09ZS50eXBlP2BTdHJpbmcgbXVzdCBjb250YWluICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImF0IGxlYXN0XCI6XCJvdmVyXCJ9ICR7ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgOlwibnVtYmVyXCI9PT1lLnR5cGV8fFwiYmlnaW50XCI9PT1lLnR5cGU/YE51bWJlciBtdXN0IGJlICR7ZS5leGFjdD9cImV4YWN0bHkgZXF1YWwgdG8gXCI6ZS5pbmNsdXNpdmU/XCJncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gXCI6XCJncmVhdGVyIHRoYW4gXCJ9JHtlLm1pbmltdW19YDpcImRhdGVcIj09PWUudHlwZT9gRGF0ZSBtdXN0IGJlICR7ZS5leGFjdD9cImV4YWN0bHkgZXF1YWwgdG8gXCI6ZS5pbmNsdXNpdmU/XCJncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gXCI6XCJncmVhdGVyIHRoYW4gXCJ9JHtuZXcgRGF0ZShOdW1iZXIoZS5taW5pbXVtKSl9YDpcIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLnRvb19iaWc6bj1cImFycmF5XCI9PT1lLnR5cGU/YEFycmF5IG11c3QgY29udGFpbiAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJhdCBtb3N0XCI6XCJsZXNzIHRoYW5cIn0gJHtlLm1heGltdW19IGVsZW1lbnQocylgOlwic3RyaW5nXCI9PT1lLnR5cGU/YFN0cmluZyBtdXN0IGNvbnRhaW4gJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wiYXQgbW9zdFwiOlwidW5kZXJcIn0gJHtlLm1heGltdW19IGNoYXJhY3RlcihzKWA6XCJudW1iZXJcIj09PWUudHlwZT9gTnVtYmVyIG11c3QgYmUgJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wibGVzcyB0aGFuIG9yIGVxdWFsIHRvXCI6XCJsZXNzIHRoYW5cIn0gJHtlLm1heGltdW19YDpcImJpZ2ludFwiPT09ZS50eXBlP2BCaWdJbnQgbXVzdCBiZSAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIjpcImxlc3MgdGhhblwifSAke2UubWF4aW11bX1gOlwiZGF0ZVwiPT09ZS50eXBlP2BEYXRlIG11c3QgYmUgJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wic21hbGxlciB0aGFuIG9yIGVxdWFsIHRvXCI6XCJzbWFsbGVyIHRoYW5cIn0gJHtuZXcgRGF0ZShOdW1iZXIoZS5tYXhpbXVtKSl9YDpcIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmN1c3RvbTpuPVwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6bj1cIkludGVyc2VjdGlvbiByZXN1bHRzIGNvdWxkIG5vdCBiZSBtZXJnZWRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjpuPWBOdW1iZXIgbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7ZS5tdWx0aXBsZU9mfWA7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5ub3RfZmluaXRlOm49XCJOdW1iZXIgbXVzdCBiZSBmaW5pdGVcIjticmVhaztkZWZhdWx0Om49dC5kZWZhdWx0RXJyb3Isby51dGlsLmFzc2VydE5ldmVyKGUpfXJldHVybnttZXNzYWdlOm59fX0sMTU1OihlLHQsbik9Pnt2YXIgcixvO2xldCBhO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZGlzY3JpbWluYXRlZFVuaW9uPXQuZGF0ZT10LmJvb2xlYW49dC5iaWdpbnQ9dC5hcnJheT10LmFueT10LmNvZXJjZT10LlpvZEZpcnN0UGFydHlUeXBlS2luZD10LmxhdGU9dC5ab2RTY2hlbWE9dC5TY2hlbWE9dC5ab2RSZWFkb25seT10LlpvZFBpcGVsaW5lPXQuWm9kQnJhbmRlZD10LkJSQU5EPXQuWm9kTmFOPXQuWm9kQ2F0Y2g9dC5ab2REZWZhdWx0PXQuWm9kTnVsbGFibGU9dC5ab2RPcHRpb25hbD10LlpvZFRyYW5zZm9ybWVyPXQuWm9kRWZmZWN0cz10LlpvZFByb21pc2U9dC5ab2ROYXRpdmVFbnVtPXQuWm9kRW51bT10LlpvZExpdGVyYWw9dC5ab2RMYXp5PXQuWm9kRnVuY3Rpb249dC5ab2RTZXQ9dC5ab2RNYXA9dC5ab2RSZWNvcmQ9dC5ab2RUdXBsZT10LlpvZEludGVyc2VjdGlvbj10LlpvZERpc2NyaW1pbmF0ZWRVbmlvbj10LlpvZFVuaW9uPXQuWm9kT2JqZWN0PXQuWm9kQXJyYXk9dC5ab2RWb2lkPXQuWm9kTmV2ZXI9dC5ab2RVbmtub3duPXQuWm9kQW55PXQuWm9kTnVsbD10LlpvZFVuZGVmaW5lZD10LlpvZFN5bWJvbD10LlpvZERhdGU9dC5ab2RCb29sZWFuPXQuWm9kQmlnSW50PXQuWm9kTnVtYmVyPXQuWm9kU3RyaW5nPXQuWm9kVHlwZT12b2lkIDAsdC5ORVZFUj10LnZvaWQ9dC51bmtub3duPXQudW5pb249dC51bmRlZmluZWQ9dC50dXBsZT10LnRyYW5zZm9ybWVyPXQuc3ltYm9sPXQuc3RyaW5nPXQuc3RyaWN0T2JqZWN0PXQuc2V0PXQucmVjb3JkPXQucHJvbWlzZT10LnByZXByb2Nlc3M9dC5waXBlbGluZT10Lm9zdHJpbmc9dC5vcHRpb25hbD10Lm9udW1iZXI9dC5vYm9vbGVhbj10Lm9iamVjdD10Lm51bWJlcj10Lm51bGxhYmxlPXQubnVsbD10Lm5ldmVyPXQubmF0aXZlRW51bT10Lm5hbj10Lm1hcD10LmxpdGVyYWw9dC5sYXp5PXQuaW50ZXJzZWN0aW9uPXQuaW5zdGFuY2VvZj10LmZ1bmN0aW9uPXQuZW51bT10LmVmZmVjdD12b2lkIDAsdC5kYXRldGltZVJlZ2V4PUksdC5jdXN0b209ZXY7bGV0IGk9bigzNDgpLGw9big2MSkscz1uKDUzOCksYz1uKDgxOCksdT1uKDcwOSk7Y2xhc3MgZHtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl9jYWNoZWRQYXRoPVtdLHRoaXMucGFyZW50PWUsdGhpcy5kYXRhPXQsdGhpcy5fcGF0aD1uLHRoaXMuX2tleT1yfWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuX2NhY2hlZFBhdGgubGVuZ3RofHwoQXJyYXkuaXNBcnJheSh0aGlzLl9rZXkpP3RoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLC4uLnRoaXMuX2tleSk6dGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsdGhpcy5fa2V5KSksdGhpcy5fY2FjaGVkUGF0aH19bGV0IGY9KGUsdCk9PntpZigoMCxjLmlzVmFsaWQpKHQpKXJldHVybntzdWNjZXNzOiEwLGRhdGE6dC52YWx1ZX07aWYoIWUuY29tbW9uLmlzc3Vlcy5sZW5ndGgpdGhyb3cgRXJyb3IoXCJWYWxpZGF0aW9uIGZhaWxlZCBidXQgbm8gaXNzdWVzIGRldGVjdGVkLlwiKTtyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtpZih0aGlzLl9lcnJvcilyZXR1cm4gdGhpcy5fZXJyb3I7bGV0IHQ9bmV3IGkuWm9kRXJyb3IoZS5jb21tb24uaXNzdWVzKTtyZXR1cm4gdGhpcy5fZXJyb3I9dCx0aGlzLl9lcnJvcn19fTtmdW5jdGlvbiBwKGUpe2lmKCFlKXJldHVybnt9O2xldHtlcnJvck1hcDp0LGludmFsaWRfdHlwZV9lcnJvcjpuLHJlcXVpcmVkX2Vycm9yOnIsZGVzY3JpcHRpb246b309ZTtpZih0JiYobnx8cikpdGhyb3cgRXJyb3IoJ0NhblxcJ3QgdXNlIFwiaW52YWxpZF90eXBlX2Vycm9yXCIgb3IgXCJyZXF1aXJlZF9lcnJvclwiIGluIGNvbmp1bmN0aW9uIHdpdGggY3VzdG9tIGVycm9yIG1hcC4nKTtyZXR1cm4gdD97ZXJyb3JNYXA6dCxkZXNjcmlwdGlvbjpvfTp7ZXJyb3JNYXA6KHQsbyk9PntsZXR7bWVzc2FnZTphfT1lO3JldHVyblwiaW52YWxpZF9lbnVtX3ZhbHVlXCI9PT10LmNvZGU/e21lc3NhZ2U6YT8/by5kZWZhdWx0RXJyb3J9OnZvaWQgMD09PW8uZGF0YT97bWVzc2FnZTphPz9yPz9vLmRlZmF1bHRFcnJvcn06XCJpbnZhbGlkX3R5cGVcIiE9PXQuY29kZT97bWVzc2FnZTpvLmRlZmF1bHRFcnJvcn06e21lc3NhZ2U6YT8/bj8/by5kZWZhdWx0RXJyb3J9fSxkZXNjcmlwdGlvbjpvfX1jbGFzcyBoe2dldCBkZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLl9kZWYuZGVzY3JpcHRpb259X2dldFR5cGUoZSl7cmV0dXJuKDAsdS5nZXRQYXJzZWRUeXBlKShlLmRhdGEpfV9nZXRPclJldHVybkN0eChlLHQpe3JldHVybiB0fHx7Y29tbW9uOmUucGFyZW50LmNvbW1vbixkYXRhOmUuZGF0YSxwYXJzZWRUeXBlOigwLHUuZ2V0UGFyc2VkVHlwZSkoZS5kYXRhKSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGF0aDplLnBhdGgscGFyZW50OmUucGFyZW50fX1fcHJvY2Vzc0lucHV0UGFyYW1zKGUpe3JldHVybntzdGF0dXM6bmV3IGMuUGFyc2VTdGF0dXMsY3R4Ontjb21tb246ZS5wYXJlbnQuY29tbW9uLGRhdGE6ZS5kYXRhLHBhcnNlZFR5cGU6KDAsdS5nZXRQYXJzZWRUeXBlKShlLmRhdGEpLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXRoOmUucGF0aCxwYXJlbnQ6ZS5wYXJlbnR9fX1fcGFyc2VTeW5jKGUpe2xldCB0PXRoaXMuX3BhcnNlKGUpO2lmKCgwLGMuaXNBc3luYykodCkpdGhyb3cgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtyZXR1cm4gdH1fcGFyc2VBc3luYyhlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3BhcnNlKGUpKX1wYXJzZShlLHQpe2xldCBuPXRoaXMuc2FmZVBhcnNlKGUsdCk7aWYobi5zdWNjZXNzKXJldHVybiBuLmRhdGE7dGhyb3cgbi5lcnJvcn1zYWZlUGFyc2UoZSx0KXtsZXQgbj17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6dD8uYXN5bmM/PyExLGNvbnRleHR1YWxFcnJvck1hcDp0Py5lcnJvck1hcH0scGF0aDp0Py5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTplLHBhcnNlZFR5cGU6KDAsdS5nZXRQYXJzZWRUeXBlKShlKX0scj10aGlzLl9wYXJzZVN5bmMoe2RhdGE6ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVybiBmKG4scil9XCJ+dmFsaWRhdGVcIihlKXtsZXQgdD17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6ISF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jfSxwYXRoOltdLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXJlbnQ6bnVsbCxkYXRhOmUscGFyc2VkVHlwZTooMCx1LmdldFBhcnNlZFR5cGUpKGUpfTtpZighdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyl0cnl7bGV0IG49dGhpcy5fcGFyc2VTeW5jKHtkYXRhOmUscGF0aDpbXSxwYXJlbnQ6dH0pO3JldHVybigwLGMuaXNWYWxpZCkobik/e3ZhbHVlOm4udmFsdWV9Ontpc3N1ZXM6dC5jb21tb24uaXNzdWVzfX1jYXRjaChlKXtlPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhcImVuY291bnRlcmVkXCIpJiYodGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYz0hMCksdC5jb21tb249e2lzc3VlczpbXSxhc3luYzohMH19cmV0dXJuIHRoaXMuX3BhcnNlQXN5bmMoe2RhdGE6ZSxwYXRoOltdLHBhcmVudDp0fSkudGhlbihlPT4oMCxjLmlzVmFsaWQpKGUpP3t2YWx1ZTplLnZhbHVlfTp7aXNzdWVzOnQuY29tbW9uLmlzc3Vlc30pfWFzeW5jIHBhcnNlQXN5bmMoZSx0KXtsZXQgbj1hd2FpdCB0aGlzLnNhZmVQYXJzZUFzeW5jKGUsdCk7aWYobi5zdWNjZXNzKXJldHVybiBuLmRhdGE7dGhyb3cgbi5lcnJvcn1hc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe2xldCBuPXtjb21tb246e2lzc3VlczpbXSxjb250ZXh0dWFsRXJyb3JNYXA6dD8uZXJyb3JNYXAsYXN5bmM6ITB9LHBhdGg6dD8ucGF0aHx8W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6ZSxwYXJzZWRUeXBlOigwLHUuZ2V0UGFyc2VkVHlwZSkoZSl9LHI9dGhpcy5fcGFyc2Uoe2RhdGE6ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVybiBmKG4sYXdhaXQgKCgwLGMuaXNBc3luYykocik/cjpQcm9taXNlLnJlc29sdmUocikpKX1yZWZpbmUoZSx0KXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgobixyKT0+e2xldCBvPWUobiksYT0oKT0+ci5hZGRJc3N1ZSh7Y29kZTppLlpvZElzc3VlQ29kZS5jdXN0b20sLi4uXCJzdHJpbmdcIj09dHlwZW9mIHR8fHZvaWQgMD09PXQ/e21lc3NhZ2U6dH06XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG4pOnR9KTtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgUHJvbWlzZSYmbyBpbnN0YW5jZW9mIFByb21pc2U/by50aGVuKGU9PiEhZXx8KGEoKSwhMSkpOiEhb3x8KGEoKSwhMSl9KX1yZWZpbmVtZW50KGUsdCl7cmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKG4scik9PiEhZShuKXx8KHIuYWRkSXNzdWUoXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG4scik6dCksITEpKX1fcmVmaW5lbWVudChlKXtyZXR1cm4gbmV3IGVzKHtzY2hlbWE6dGhpcyx0eXBlTmFtZTpyLlpvZEVmZmVjdHMsZWZmZWN0Ont0eXBlOlwicmVmaW5lbWVudFwiLHJlZmluZW1lbnQ6ZX19KX1zdXBlclJlZmluZShlKXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudChlKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnNwYT10aGlzLnNhZmVQYXJzZUFzeW5jLHRoaXMuX2RlZj1lLHRoaXMucGFyc2U9dGhpcy5wYXJzZS5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlPXRoaXMuc2FmZVBhcnNlLmJpbmQodGhpcyksdGhpcy5wYXJzZUFzeW5jPXRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlQXN5bmM9dGhpcy5zYWZlUGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc3BhPXRoaXMuc3BhLmJpbmQodGhpcyksdGhpcy5yZWZpbmU9dGhpcy5yZWZpbmUuYmluZCh0aGlzKSx0aGlzLnJlZmluZW1lbnQ9dGhpcy5yZWZpbmVtZW50LmJpbmQodGhpcyksdGhpcy5zdXBlclJlZmluZT10aGlzLnN1cGVyUmVmaW5lLmJpbmQodGhpcyksdGhpcy5vcHRpb25hbD10aGlzLm9wdGlvbmFsLmJpbmQodGhpcyksdGhpcy5udWxsYWJsZT10aGlzLm51bGxhYmxlLmJpbmQodGhpcyksdGhpcy5udWxsaXNoPXRoaXMubnVsbGlzaC5iaW5kKHRoaXMpLHRoaXMuYXJyYXk9dGhpcy5hcnJheS5iaW5kKHRoaXMpLHRoaXMucHJvbWlzZT10aGlzLnByb21pc2UuYmluZCh0aGlzKSx0aGlzLm9yPXRoaXMub3IuYmluZCh0aGlzKSx0aGlzLmFuZD10aGlzLmFuZC5iaW5kKHRoaXMpLHRoaXMudHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtLmJpbmQodGhpcyksdGhpcy5icmFuZD10aGlzLmJyYW5kLmJpbmQodGhpcyksdGhpcy5kZWZhdWx0PXRoaXMuZGVmYXVsdC5iaW5kKHRoaXMpLHRoaXMuY2F0Y2g9dGhpcy5jYXRjaC5iaW5kKHRoaXMpLHRoaXMuZGVzY3JpYmU9dGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpLHRoaXMucGlwZT10aGlzLnBpcGUuYmluZCh0aGlzKSx0aGlzLnJlYWRvbmx5PXRoaXMucmVhZG9ubHkuYmluZCh0aGlzKSx0aGlzLmlzTnVsbGFibGU9dGhpcy5pc051bGxhYmxlLmJpbmQodGhpcyksdGhpcy5pc09wdGlvbmFsPXRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpLHRoaXNbXCJ+c3RhbmRhcmRcIl09e3ZlcnNpb246MSx2ZW5kb3I6XCJ6b2RcIix2YWxpZGF0ZTplPT50aGlzW1wifnZhbGlkYXRlXCJdKGUpfX1vcHRpb25hbCgpe3JldHVybiBlYy5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW51bGxhYmxlKCl7cmV0dXJuIGV1LmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGlzaCgpe3JldHVybiB0aGlzLm51bGxhYmxlKCkub3B0aW9uYWwoKX1hcnJheSgpe3JldHVybiBWLmNyZWF0ZSh0aGlzKX1wcm9taXNlKCl7cmV0dXJuIGVsLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9b3IoZSl7cmV0dXJuIFcuY3JlYXRlKFt0aGlzLGVdLHRoaXMuX2RlZil9YW5kKGUpe3JldHVybiBYLmNyZWF0ZSh0aGlzLGUsdGhpcy5fZGVmKX10cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBlcyh7Li4ucCh0aGlzLl9kZWYpLHNjaGVtYTp0aGlzLHR5cGVOYW1lOnIuWm9kRWZmZWN0cyxlZmZlY3Q6e3R5cGU6XCJ0cmFuc2Zvcm1cIix0cmFuc2Zvcm06ZX19KX1kZWZhdWx0KGUpe3JldHVybiBuZXcgZWQoey4uLnAodGhpcy5fZGVmKSxpbm5lclR5cGU6dGhpcyxkZWZhdWx0VmFsdWU6XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOigpPT5lLHR5cGVOYW1lOnIuWm9kRGVmYXVsdH0pfWJyYW5kKCl7cmV0dXJuIG5ldyBlaCh7dHlwZU5hbWU6ci5ab2RCcmFuZGVkLHR5cGU6dGhpcywuLi5wKHRoaXMuX2RlZil9KX1jYXRjaChlKXtyZXR1cm4gbmV3IGVmKHsuLi5wKHRoaXMuX2RlZiksaW5uZXJUeXBlOnRoaXMsY2F0Y2hWYWx1ZTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6KCk9PmUsdHlwZU5hbWU6ci5ab2RDYXRjaH0pfWRlc2NyaWJlKGUpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7Li4udGhpcy5fZGVmLGRlc2NyaXB0aW9uOmV9KX1waXBlKGUpe3JldHVybiBlbS5jcmVhdGUodGhpcyxlKX1yZWFkb25seSgpe3JldHVybiBlZy5jcmVhdGUodGhpcyl9aXNPcHRpb25hbCgpe3JldHVybiB0aGlzLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3N9aXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfX10LlpvZFR5cGU9aCx0LlNjaGVtYT1oLHQuWm9kU2NoZW1hPWg7bGV0IG09L15jW15cXHMtXXs4LH0kL2ksZz0vXlswLTlhLXpdKyQvLHk9L15bMC05QS1ISktNTlAtVFYtWl17MjZ9JC9pLHY9L15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kL2ksYj0vXlthLXowLTlfLV17MjF9JC9pLEE9L15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokLyx4PS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xcZCtZKXwoPzpbLStdP1xcZCtbLixdXFxkK1kkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/Oig/OlstK10/XFxkK1cpfCg/OlstK10/XFxkK1suLF1cXGQrVyQpKT8oPzooPzpbLStdP1xcZCtEKXwoPzpbLStdP1xcZCtbLixdXFxkK0QkKSk/KD86VCg/PVtcXGQrLV0pKD86KD86Wy0rXT9cXGQrSCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtIJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzpbLStdP1xcZCsoPzpbLixdXFxkKyk/Uyk/KT8/JC8sdz0vXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWjAtOV8nK1xcLVxcLl0qKVtBLVowLTlfKy1dQChbQS1aMC05XVtBLVowLTlcXC1dKlxcLikrW0EtWl17Mix9JC9pLEM9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxfPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKDNbMC0yXXxbMTJdP1swLTldKSQvLGs9L14oKFswLTlhLWZBLUZdezEsNH06KXs3LDd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXXswLDR9KXswLDR9JVswLTlhLXpBLVpdezEsfXw6OihmZmZmKDowezEsNH0pezAsMX06KXswLDF9KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSkpJC8sRT0vXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLGo9L14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvLFM9L14oWzAtOWEtekEtWi1fXXs0fSkqKChbMC05YS16QS1aLV9dezJ9KD09KT8pfChbMC05YS16QS1aLV9dezN9KD0pPykpPyQvLE89XCIoKFxcXFxkXFxcXGRbMjQ2OF1bMDQ4XXxcXFxcZFxcXFxkWzEzNTc5XVsyNl18XFxcXGRcXFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcXFxkezR9LSgoMFsxMzU3OF18MVswMl0pLSgwWzEtOV18WzEyXVxcXFxkfDNbMDFdKXwoMFs0NjldfDExKS0oMFsxLTldfFsxMl1cXFxcZHwzMCl8KDAyKS0oMFsxLTldfDFcXFxcZHwyWzAtOF0pKSlcIixCPVJlZ0V4cChgXiR7T30kYCk7ZnVuY3Rpb24gUChlKXtsZXQgdD1cIlswLTVdXFxcXGRcIjtlLnByZWNpc2lvbj90PWAke3R9XFxcXC5cXFxcZHske2UucHJlY2lzaW9ufX1gOm51bGw9PWUucHJlY2lzaW9uJiYodD1gJHt0fShcXFxcLlxcXFxkKyk/YCk7bGV0IG49ZS5wcmVjaXNpb24/XCIrXCI6XCI/XCI7cmV0dXJuYChbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkKDoke3R9KSR7bn1gfWZ1bmN0aW9uIEkoZSl7bGV0IHQ9YCR7T31UJHtQKGUpfWAsbj1bXTtyZXR1cm4gbi5wdXNoKGUubG9jYWw/XCJaP1wiOlwiWlwiKSxlLm9mZnNldCYmbi5wdXNoKFwiKFsrLV1cXFxcZHsyfTo/XFxcXGR7Mn0pXCIpLHQ9YCR7dH0oJHtuLmpvaW4oXCJ8XCIpfSlgLFJlZ0V4cChgXiR7dH0kYCl9Y2xhc3MgVCBleHRlbmRzIGh7X3BhcnNlKGUpe3ZhciB0LG4scixvO2xldCBsO2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9U3RyaW5nKGUuZGF0YSkpLHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUuc3RyaW5nKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuc3RyaW5nLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1sZXQgcz1uZXcgYy5QYXJzZVN0YXR1cztmb3IobGV0IGQgb2YgdGhpcy5fZGVmLmNoZWNrcylpZihcIm1pblwiPT09ZC5raW5kKWUuZGF0YS5sZW5ndGg8ZC52YWx1ZSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOmQudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcIm1heFwiPT09ZC5raW5kKWUuZGF0YS5sZW5ndGg+ZC52YWx1ZSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTpkLnZhbHVlLHR5cGU6XCJzdHJpbmdcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJsZW5ndGhcIj09PWQua2luZCl7bGV0IHQ9ZS5kYXRhLmxlbmd0aD5kLnZhbHVlLG49ZS5kYXRhLmxlbmd0aDxkLnZhbHVlOyh0fHxuKSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSx0PygwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOmQudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMCxtZXNzYWdlOmQubWVzc2FnZX0pOm4mJigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06ZC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKX1lbHNlIGlmKFwiZW1haWxcIj09PWQua2luZCl3LnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiZW1haWxcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwiZW1vamlcIj09PWQua2luZClhfHwoYT1SZWdFeHAoXCJeKFxcXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxcXHB7RW1vamlfQ29tcG9uZW50fSkrJFwiLFwidVwiKSksYS50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImVtb2ppXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcInV1aWRcIj09PWQua2luZCl2LnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwidXVpZFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJuYW5vaWRcIj09PWQua2luZCliLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwibmFub2lkXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcImN1aWRcIj09PWQua2luZCltLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiY3VpZFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJjdWlkMlwiPT09ZC5raW5kKWcudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJjdWlkMlwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJ1bGlkXCI9PT1kLmtpbmQpeS50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcInVsaWRcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwidXJsXCI9PT1kLmtpbmQpdHJ5e25ldyBVUkwoZS5kYXRhKX1jYXRjaHtsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcInVybFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCl9ZWxzZVwicmVnZXhcIj09PWQua2luZD8oZC5yZWdleC5sYXN0SW5kZXg9MCxkLnJlZ2V4LnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwicmVnZXhcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKSk6XCJ0cmltXCI9PT1kLmtpbmQ/ZS5kYXRhPWUuZGF0YS50cmltKCk6XCJpbmNsdWRlc1wiPT09ZC5raW5kP2UuZGF0YS5pbmNsdWRlcyhkLnZhbHVlLGQucG9zaXRpb24pfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7aW5jbHVkZXM6ZC52YWx1ZSxwb3NpdGlvbjpkLnBvc2l0aW9ufSxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJ0b0xvd2VyQ2FzZVwiPT09ZC5raW5kP2UuZGF0YT1lLmRhdGEudG9Mb3dlckNhc2UoKTpcInRvVXBwZXJDYXNlXCI9PT1kLmtpbmQ/ZS5kYXRhPWUuZGF0YS50b1VwcGVyQ2FzZSgpOlwic3RhcnRzV2l0aFwiPT09ZC5raW5kP2UuZGF0YS5zdGFydHNXaXRoKGQudmFsdWUpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7c3RhcnRzV2l0aDpkLnZhbHVlfSxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJlbmRzV2l0aFwiPT09ZC5raW5kP2UuZGF0YS5lbmRzV2l0aChkLnZhbHVlKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2VuZHNXaXRoOmQudmFsdWV9LG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImRhdGV0aW1lXCI9PT1kLmtpbmQ/SShkKS50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOlwiZGF0ZXRpbWVcIixtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJkYXRlXCI9PT1kLmtpbmQ/Qi50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOlwiZGF0ZVwiLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcInRpbWVcIj09PWQua2luZD9SZWdFeHAoYF4ke1AoZCl9JGApLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJ0aW1lXCIsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiZHVyYXRpb25cIj09PWQua2luZD94LnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiZHVyYXRpb25cIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImlwXCI9PT1kLmtpbmQ/KHQ9ZS5kYXRhLCEoKFwidjRcIj09PShuPWQudmVyc2lvbil8fCFuKSYmQy50ZXN0KHQpfHwoXCJ2NlwiPT09bnx8IW4pJiZrLnRlc3QodCkpJiYxJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJpcFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpKTpcImp3dFwiPT09ZC5raW5kPyFmdW5jdGlvbihlLHQpe2lmKCFBLnRlc3QoZSkpcmV0dXJuITE7dHJ5e2xldFtuXT1lLnNwbGl0KFwiLlwiKTtpZighbilyZXR1cm4hMTtsZXQgcj1uLnJlcGxhY2UoLy0vZyxcIitcIikucmVwbGFjZSgvXy9nLFwiL1wiKS5wYWRFbmQobi5sZW5ndGgrKDQtbi5sZW5ndGglNCklNCxcIj1cIiksbz1KU09OLnBhcnNlKGF0b2IocikpO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBvfHxudWxsPT09b3x8XCJ0eXBcImluIG8mJm8/LnR5cCE9PVwiSldUXCJ8fCFvLmFsZ3x8dCYmby5hbGchPT10KXJldHVybiExO3JldHVybiEwfWNhdGNoe3JldHVybiExfX0oZS5kYXRhLGQuYWxnKSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiand0XCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJjaWRyXCI9PT1kLmtpbmQ/KHI9ZS5kYXRhLCEoKFwidjRcIj09PShvPWQudmVyc2lvbil8fCFvKSYmXy50ZXN0KHIpfHwoXCJ2NlwiPT09b3x8IW8pJiZFLnRlc3QocikpJiYxJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJjaWRyXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSkpOlwiYmFzZTY0XCI9PT1kLmtpbmQ/ai50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImJhc2U2NFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiYmFzZTY0dXJsXCI9PT1kLmtpbmQ/Uy50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImJhc2U2NHVybFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOnUudXRpbC5hc3NlcnROZXZlcihkKTtyZXR1cm57c3RhdHVzOnMudmFsdWUsdmFsdWU6ZS5kYXRhfX1fcmVnZXgoZSx0LG4pe3JldHVybiB0aGlzLnJlZmluZW1lbnQodD0+ZS50ZXN0KHQpLHt2YWxpZGF0aW9uOnQsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZywuLi5zLmVycm9yVXRpbC5lcnJUb09iaihuKX0pfV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IFQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1lbWFpbChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJlbWFpbFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9dXJsKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInVybFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9ZW1vamkoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZW1vamlcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfXV1aWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidXVpZFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9bmFub2lkKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm5hbm9pZFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9Y3VpZChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJjdWlkXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1jdWlkMihlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJjdWlkMlwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9dWxpZChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ1bGlkXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1iYXNlNjQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiYmFzZTY0XCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1iYXNlNjR1cmwoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiYmFzZTY0dXJsXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1qd3QoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiand0XCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1pcChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJpcFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9Y2lkcihlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJjaWRyXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1kYXRldGltZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT90aGlzLl9hZGRDaGVjayh7a2luZDpcImRhdGV0aW1lXCIscHJlY2lzaW9uOm51bGwsb2Zmc2V0OiExLGxvY2FsOiExLG1lc3NhZ2U6ZX0pOnRoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZXRpbWVcIixwcmVjaXNpb246dm9pZCAwPT09ZT8ucHJlY2lzaW9uP251bGw6ZT8ucHJlY2lzaW9uLG9mZnNldDplPy5vZmZzZXQ/PyExLGxvY2FsOmU/LmxvY2FsPz8hMSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlPy5tZXNzYWdlKX0pfWRhdGUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZVwiLG1lc3NhZ2U6ZX0pfXRpbWUoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/dGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ0aW1lXCIscHJlY2lzaW9uOm51bGwsbWVzc2FnZTplfSk6dGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ0aW1lXCIscHJlY2lzaW9uOnZvaWQgMD09PWU/LnByZWNpc2lvbj9udWxsOmU/LnByZWNpc2lvbiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlPy5tZXNzYWdlKX0pfWR1cmF0aW9uKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImR1cmF0aW9uXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1yZWdleChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInJlZ2V4XCIscmVnZXg6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfWluY2x1ZGVzKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaW5jbHVkZXNcIix2YWx1ZTplLHBvc2l0aW9uOnQ/LnBvc2l0aW9uLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQ/Lm1lc3NhZ2UpfSl9c3RhcnRzV2l0aChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInN0YXJ0c1dpdGhcIix2YWx1ZTplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9ZW5kc1dpdGgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJlbmRzV2l0aFwiLHZhbHVlOmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1taW4oZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9bWF4KGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfWxlbmd0aChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImxlbmd0aFwiLHZhbHVlOmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1ub25lbXB0eShlKXtyZXR1cm4gdGhpcy5taW4oMSxzLmVycm9yVXRpbC5lcnJUb09iaihlKSl9dHJpbSgpe3JldHVybiBuZXcgVCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRyaW1cIn1dfSl9dG9Mb3dlckNhc2UoKXtyZXR1cm4gbmV3IFQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6XCJ0b0xvd2VyQ2FzZVwifV19KX10b1VwcGVyQ2FzZSgpe3JldHVybiBuZXcgVCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRvVXBwZXJDYXNlXCJ9XX0pfWdldCBpc0RhdGV0aW1lKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJkYXRldGltZVwiPT09ZS5raW5kKX1nZXQgaXNEYXRlKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJkYXRlXCI9PT1lLmtpbmQpfWdldCBpc1RpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cInRpbWVcIj09PWUua2luZCl9Z2V0IGlzRHVyYXRpb24oKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImR1cmF0aW9uXCI9PT1lLmtpbmQpfWdldCBpc0VtYWlsKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJlbWFpbFwiPT09ZS5raW5kKX1nZXQgaXNVUkwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cInVybFwiPT09ZS5raW5kKX1nZXQgaXNFbW9qaSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiZW1vamlcIj09PWUua2luZCl9Z2V0IGlzVVVJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwidXVpZFwiPT09ZS5raW5kKX1nZXQgaXNOQU5PSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cIm5hbm9pZFwiPT09ZS5raW5kKX1nZXQgaXNDVUlEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJjdWlkXCI9PT1lLmtpbmQpfWdldCBpc0NVSUQyKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJjdWlkMlwiPT09ZS5raW5kKX1nZXQgaXNVTElEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJ1bGlkXCI9PT1lLmtpbmQpfWdldCBpc0lQKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJpcFwiPT09ZS5raW5kKX1nZXQgaXNDSURSKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJjaWRyXCI9PT1lLmtpbmQpfWdldCBpc0Jhc2U2NCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiYmFzZTY0XCI9PT1lLmtpbmQpfWdldCBpc0Jhc2U2NHVybCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiYmFzZTY0dXJsXCI9PT1lLmtpbmQpfWdldCBtaW5MZW5ndGgoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZT5lKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9Z2V0IG1heExlbmd0aCgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtYXhcIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPGUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX19dC5ab2RTdHJpbmc9VCxULmNyZWF0ZT1lPT5uZXcgVCh7Y2hlY2tzOltdLHR5cGVOYW1lOnIuWm9kU3RyaW5nLGNvZXJjZTplPy5jb2VyY2U/PyExLC4uLnAoZSl9KTtjbGFzcyB6IGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGUsdGhpcy5zdGVwPXRoaXMubXVsdGlwbGVPZn1fcGFyc2UoZSl7bGV0IHQ7aWYodGhpcy5fZGVmLmNvZXJjZSYmKGUuZGF0YT1OdW1iZXIoZS5kYXRhKSksdGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5udW1iZXIpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5udW1iZXIscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfWxldCBuPW5ldyBjLlBhcnNlU3RhdHVzO2ZvcihsZXQgciBvZiB0aGlzLl9kZWYuY2hlY2tzKVwiaW50XCI9PT1yLmtpbmQ/dS51dGlsLmlzSW50ZWdlcihlLmRhdGEpfHwodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlwiaW50ZWdlclwiLHJlY2VpdmVkOlwiZmxvYXRcIixtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJtaW5cIj09PXIua2luZD8oci5pbmNsdXNpdmU/ZS5kYXRhPHIudmFsdWU6ZS5kYXRhPD1yLnZhbHVlKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOnIudmFsdWUsdHlwZTpcIm51bWJlclwiLGluY2x1c2l2ZTpyLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJtYXhcIj09PXIua2luZD8oci5pbmNsdXNpdmU/ZS5kYXRhPnIudmFsdWU6ZS5kYXRhPj1yLnZhbHVlKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTpyLnZhbHVlLHR5cGU6XCJudW1iZXJcIixpbmNsdXNpdmU6ci5pbmNsdXNpdmUsZXhhY3Q6ITEsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwibXVsdGlwbGVPZlwiPT09ci5raW5kPzAhPT1mdW5jdGlvbihlLHQpe2xldCBuPShlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgscj0odC50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXXx8XCJcIikubGVuZ3RoLG89bj5yP246cjtyZXR1cm4gTnVtYmVyLnBhcnNlSW50KGUudG9GaXhlZChvKS5yZXBsYWNlKFwiLlwiLFwiXCIpKSVOdW1iZXIucGFyc2VJbnQodC50b0ZpeGVkKG8pLnJlcGxhY2UoXCIuXCIsXCJcIikpLzEwKipvfShlLmRhdGEsci52YWx1ZSkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsbXVsdGlwbGVPZjpyLnZhbHVlLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcImZpbml0ZVwiPT09ci5raW5kP051bWJlci5pc0Zpbml0ZShlLmRhdGEpfHwodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUubm90X2Zpbml0ZSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6dS51dGlsLmFzc2VydE5ldmVyKHIpO3JldHVybntzdGF0dXM6bi52YWx1ZSx2YWx1ZTplLmRhdGF9fWd0ZShlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsZSwhMCxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9Z3QoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLGUsITEscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWx0ZShlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsZSwhMCxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9bHQoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLGUsITEscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfXNldExpbWl0KGUsdCxuLHIpe3JldHVybiBuZXcgeih7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDplLHZhbHVlOnQsaW5jbHVzaXZlOm4sbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhyKX1dfSl9X2FkZENoZWNrKGUpe3JldHVybiBuZXcgeih7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyxlXX0pfWludChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJpbnRcIixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9cG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOjAsaW5jbHVzaXZlOiExLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1ub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTowLGluY2x1c2l2ZTohMCxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bm9ubmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW11bHRpcGxlT2YoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtdWx0aXBsZU9mXCIsdmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfSl9ZmluaXRlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImZpbml0ZVwiLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1zYWZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSkuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsaW5jbHVzaXZlOiEwLHZhbHVlOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1nZXQgbWluVmFsdWUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZT5lKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9Z2V0IG1heFZhbHVlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1heFwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU8ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfWdldCBpc0ludCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiaW50XCI9PT1lLmtpbmR8fFwibXVsdGlwbGVPZlwiPT09ZS5raW5kJiZ1LnV0aWwuaXNJbnRlZ2VyKGUudmFsdWUpKX1nZXQgaXNGaW5pdGUoKXtsZXQgZT1udWxsLHQ9bnVsbDtmb3IobGV0IG4gb2YgdGhpcy5fZGVmLmNoZWNrcylpZihcImZpbml0ZVwiPT09bi5raW5kfHxcImludFwiPT09bi5raW5kfHxcIm11bHRpcGxlT2ZcIj09PW4ua2luZClyZXR1cm4hMDtlbHNlXCJtaW5cIj09PW4ua2luZD8obnVsbD09PXR8fG4udmFsdWU+dCkmJih0PW4udmFsdWUpOlwibWF4XCI9PT1uLmtpbmQmJihudWxsPT09ZXx8bi52YWx1ZTxlKSYmKGU9bi52YWx1ZSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KSYmTnVtYmVyLmlzRmluaXRlKGUpfX10LlpvZE51bWJlcj16LHouY3JlYXRlPWU9Pm5ldyB6KHtjaGVja3M6W10sdHlwZU5hbWU6ci5ab2ROdW1iZXIsY29lcmNlOmU/LmNvZXJjZXx8ITEsLi4ucChlKX0pO2NsYXNzIEQgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm1pbj10aGlzLmd0ZSx0aGlzLm1heD10aGlzLmx0ZX1fcGFyc2UoZSl7bGV0IHQ7aWYodGhpcy5fZGVmLmNvZXJjZSl0cnl7ZS5kYXRhPUJpZ0ludChlLmRhdGEpfWNhdGNoe3JldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoZSl9aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5iaWdpbnQpcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dChlKTtsZXQgbj1uZXcgYy5QYXJzZVN0YXR1cztmb3IobGV0IHIgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09ci5raW5kPyhyLmluY2x1c2l2ZT9lLmRhdGE8ci52YWx1ZTplLmRhdGE8PXIudmFsdWUpJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLHR5cGU6XCJiaWdpbnRcIixtaW5pbXVtOnIudmFsdWUsaW5jbHVzaXZlOnIuaW5jbHVzaXZlLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcIm1heFwiPT09ci5raW5kPyhyLmluY2x1c2l2ZT9lLmRhdGE+ci52YWx1ZTplLmRhdGE+PXIudmFsdWUpJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyx0eXBlOlwiYmlnaW50XCIsbWF4aW11bTpyLnZhbHVlLGluY2x1c2l2ZTpyLmluY2x1c2l2ZSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJtdWx0aXBsZU9mXCI9PT1yLmtpbmQ/ZS5kYXRhJXIudmFsdWUhPT1CaWdJbnQoMCkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsbXVsdGlwbGVPZjpyLnZhbHVlLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTp1LnV0aWwuYXNzZXJ0TmV2ZXIocik7cmV0dXJue3N0YXR1czpuLnZhbHVlLHZhbHVlOmUuZGF0YX19X2dldEludmFsaWRJbnB1dChlKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuYmlnaW50LHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1ndGUoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLGUsITAscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWd0KGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIixlLCExLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1sdGUoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLGUsITAscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWx0KGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIixlLCExLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1zZXRMaW1pdChlLHQsbixyKXtyZXR1cm4gbmV3IEQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6ZSx2YWx1ZTp0LGluY2x1c2l2ZTpuLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcocil9XX0pfV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IEQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiExLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiExLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1ub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiEwLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1ub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiEwLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1tdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibXVsdGlwbGVPZlwiLHZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX0pfWdldCBtaW5WYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPmUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX1nZXQgbWF4VmFsdWUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWF4XCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZTxlKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9fXQuWm9kQmlnSW50PUQsRC5jcmVhdGU9ZT0+bmV3IEQoe2NoZWNrczpbXSx0eXBlTmFtZTpyLlpvZEJpZ0ludCxjb2VyY2U6ZT8uY29lcmNlPz8hMSwuLi5wKGUpfSk7Y2xhc3MgTCBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9ISFlLmRhdGEpLHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUuYm9vbGVhbil7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmJvb2xlYW4scmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kQm9vbGVhbj1MLEwuY3JlYXRlPWU9Pm5ldyBMKHt0eXBlTmFtZTpyLlpvZEJvb2xlYW4sY29lcmNlOmU/LmNvZXJjZXx8ITEsLi4ucChlKX0pO2NsYXNzIE4gZXh0ZW5kcyBoe19wYXJzZShlKXtsZXQgdDtpZih0aGlzLl9kZWYuY29lcmNlJiYoZS5kYXRhPW5ldyBEYXRlKGUuZGF0YSkpLHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUuZGF0ZSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmRhdGUscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfWlmKE51bWJlci5pc05hTihlLmRhdGEuZ2V0VGltZSgpKSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGV9KSxjLklOVkFMSUR9bGV0IG49bmV3IGMuUGFyc2VTdGF0dXM7Zm9yKGxldCByIG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXIua2luZD9lLmRhdGEuZ2V0VGltZSgpPHIudmFsdWUmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWVzc2FnZTpyLm1lc3NhZ2UsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1pbmltdW06ci52YWx1ZSx0eXBlOlwiZGF0ZVwifSksbi5kaXJ0eSgpKTpcIm1heFwiPT09ci5raW5kP2UuZGF0YS5nZXRUaW1lKCk+ci52YWx1ZSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWVzc2FnZTpyLm1lc3NhZ2UsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1heGltdW06ci52YWx1ZSx0eXBlOlwiZGF0ZVwifSksbi5kaXJ0eSgpKTp1LnV0aWwuYXNzZXJ0TmV2ZXIocik7cmV0dXJue3N0YXR1czpuLnZhbHVlLHZhbHVlOm5ldyBEYXRlKGUuZGF0YS5nZXRUaW1lKCkpfX1fYWRkQ2hlY2soZSl7cmV0dXJuIG5ldyBOKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9bWluKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6ZS5nZXRUaW1lKCksbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX0pfW1heChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOmUuZ2V0VGltZSgpLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9KX1nZXQgbWluRGF0ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPmUpJiYoZT10LnZhbHVlKTtyZXR1cm4gbnVsbCE9ZT9uZXcgRGF0ZShlKTpudWxsfWdldCBtYXhEYXRlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1heFwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU8ZSkmJihlPXQudmFsdWUpO3JldHVybiBudWxsIT1lP25ldyBEYXRlKGUpOm51bGx9fXQuWm9kRGF0ZT1OLE4uY3JlYXRlPWU9Pm5ldyBOKHtjaGVja3M6W10sY29lcmNlOmU/LmNvZXJjZXx8ITEsdHlwZU5hbWU6ci5ab2REYXRlLC4uLnAoZSl9KTtjbGFzcyBSIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5zeW1ib2wpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5zeW1ib2wscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kU3ltYm9sPVIsUi5jcmVhdGU9ZT0+bmV3IFIoe3R5cGVOYW1lOnIuWm9kU3ltYm9sLC4uLnAoZSl9KTtjbGFzcyBNIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kVW5kZWZpbmVkPU0sTS5jcmVhdGU9ZT0+bmV3IE0oe3R5cGVOYW1lOnIuWm9kVW5kZWZpbmVkLC4uLnAoZSl9KTtjbGFzcyBaIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5udWxsKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUubnVsbCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2ROdWxsPVosWi5jcmVhdGU9ZT0+bmV3IFooe3R5cGVOYW1lOnIuWm9kTnVsbCwuLi5wKGUpfSk7Y2xhc3MgVSBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2FueT0hMH1fcGFyc2UoZSl7cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RBbnk9VSxVLmNyZWF0ZT1lPT5uZXcgVSh7dHlwZU5hbWU6ci5ab2RBbnksLi4ucChlKX0pO2NsYXNzIEYgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl91bmtub3duPSEwfV9wYXJzZShlKXtyZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZFVua25vd249RixGLmNyZWF0ZT1lPT5uZXcgRih7dHlwZU5hbWU6ci5ab2RVbmtub3duLC4uLnAoZSl9KTtjbGFzcyBxIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm5ldmVyLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH19dC5ab2ROZXZlcj1xLHEuY3JlYXRlPWU9Pm5ldyBxKHt0eXBlTmFtZTpyLlpvZE5ldmVyLC4uLnAoZSl9KTtjbGFzcyBIIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS52b2lkLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZFZvaWQ9SCxILmNyZWF0ZT1lPT5uZXcgSCh7dHlwZU5hbWU6ci5ab2RWb2lkLC4uLnAoZSl9KTtjbGFzcyBWIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0LHN0YXR1czpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSkscj10aGlzLl9kZWY7aWYodC5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLmFycmF5KXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5hcnJheSxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7aWYobnVsbCE9PXIuZXhhY3RMZW5ndGgpe2xldCBlPXQuZGF0YS5sZW5ndGg+ci5leGFjdExlbmd0aC52YWx1ZSxvPXQuZGF0YS5sZW5ndGg8ci5leGFjdExlbmd0aC52YWx1ZTsoZXx8bykmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmU/aS5ab2RJc3N1ZUNvZGUudG9vX2JpZzppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpvP3IuZXhhY3RMZW5ndGgudmFsdWU6dm9pZCAwLG1heGltdW06ZT9yLmV4YWN0TGVuZ3RoLnZhbHVlOnZvaWQgMCx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTpyLmV4YWN0TGVuZ3RoLm1lc3NhZ2V9KSxuLmRpcnR5KCkpfWlmKG51bGwhPT1yLm1pbkxlbmd0aCYmdC5kYXRhLmxlbmd0aDxyLm1pbkxlbmd0aC52YWx1ZSYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06ci5taW5MZW5ndGgudmFsdWUsdHlwZTpcImFycmF5XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ci5taW5MZW5ndGgubWVzc2FnZX0pLG4uZGlydHkoKSksbnVsbCE9PXIubWF4TGVuZ3RoJiZ0LmRhdGEubGVuZ3RoPnIubWF4TGVuZ3RoLnZhbHVlJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06ci5tYXhMZW5ndGgudmFsdWUsdHlwZTpcImFycmF5XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ci5tYXhMZW5ndGgubWVzc2FnZX0pLG4uZGlydHkoKSksdC5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKFsuLi50LmRhdGFdLm1hcCgoZSxuKT0+ci50eXBlLl9wYXJzZUFzeW5jKG5ldyBkKHQsZSx0LnBhdGgsbikpKSkudGhlbihlPT5jLlBhcnNlU3RhdHVzLm1lcmdlQXJyYXkobixlKSk7bGV0IG89Wy4uLnQuZGF0YV0ubWFwKChlLG4pPT5yLnR5cGUuX3BhcnNlU3luYyhuZXcgZCh0LGUsdC5wYXRoLG4pKSk7cmV0dXJuIGMuUGFyc2VTdGF0dXMubWVyZ2VBcnJheShuLG8pfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfW1pbihlLHQpe3JldHVybiBuZXcgVih7Li4udGhpcy5fZGVmLG1pbkxlbmd0aDp7dmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfX0pfW1heChlLHQpe3JldHVybiBuZXcgVih7Li4udGhpcy5fZGVmLG1heExlbmd0aDp7dmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfX0pfWxlbmd0aChlLHQpe3JldHVybiBuZXcgVih7Li4udGhpcy5fZGVmLGV4YWN0TGVuZ3RoOnt2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9fSl9bm9uZW1wdHkoZSl7cmV0dXJuIHRoaXMubWluKDEsZSl9fXQuWm9kQXJyYXk9VixWLmNyZWF0ZT0oZSx0KT0+bmV3IFYoe3R5cGU6ZSxtaW5MZW5ndGg6bnVsbCxtYXhMZW5ndGg6bnVsbCxleGFjdExlbmd0aDpudWxsLHR5cGVOYW1lOnIuWm9kQXJyYXksLi4ucCh0KX0pO2NsYXNzICQgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9jYWNoZWQ9bnVsbCx0aGlzLm5vbnN0cmljdD10aGlzLnBhc3N0aHJvdWdoLHRoaXMuYXVnbWVudD10aGlzLmV4dGVuZH1fZ2V0Q2FjaGVkKCl7aWYobnVsbCE9PXRoaXMuX2NhY2hlZClyZXR1cm4gdGhpcy5fY2FjaGVkO2xldCBlPXRoaXMuX2RlZi5zaGFwZSgpLHQ9dS51dGlsLm9iamVjdEtleXMoZSk7cmV0dXJuIHRoaXMuX2NhY2hlZD17c2hhcGU6ZSxrZXlzOnR9LHRoaXMuX2NhY2hlZH1fcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5vYmplY3Qpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5vYmplY3QscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfWxldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHtzaGFwZTpyLGtleXM6b309dGhpcy5fZ2V0Q2FjaGVkKCksYT1bXTtpZighKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIHEmJlwic3RyaXBcIj09PXRoaXMuX2RlZi51bmtub3duS2V5cykpZm9yKGxldCBlIGluIG4uZGF0YSlvLmluY2x1ZGVzKGUpfHxhLnB1c2goZSk7bGV0IGw9W107Zm9yKGxldCBlIG9mIG8pe2xldCB0PXJbZV0sbz1uLmRhdGFbZV07bC5wdXNoKHtrZXk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6ZX0sdmFsdWU6dC5fcGFyc2UobmV3IGQobixvLG4ucGF0aCxlKSksYWx3YXlzU2V0OmUgaW4gbi5kYXRhfSl9aWYodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2YgcSl7bGV0IGU9dGhpcy5fZGVmLnVua25vd25LZXlzO2lmKFwicGFzc3Rocm91Z2hcIj09PWUpZm9yKGxldCBlIG9mIGEpbC5wdXNoKHtrZXk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6ZX0sdmFsdWU6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6bi5kYXRhW2VdfX0pO2Vsc2UgaWYoXCJzdHJpY3RcIj09PWUpYS5sZW5ndGg+MCYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXMsa2V5czphfSksdC5kaXJ0eSgpKTtlbHNlIGlmKFwic3RyaXBcIj09PWUpO2Vsc2UgdGhyb3cgRXJyb3IoXCJJbnRlcm5hbCBab2RPYmplY3QgZXJyb3I6IGludmFsaWQgdW5rbm93bktleXMgdmFsdWUuXCIpfWVsc2V7bGV0IGU9dGhpcy5fZGVmLmNhdGNoYWxsO2ZvcihsZXQgdCBvZiBhKXtsZXQgcj1uLmRhdGFbdF07bC5wdXNoKHtrZXk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6dH0sdmFsdWU6ZS5fcGFyc2UobmV3IGQobixyLG4ucGF0aCx0KSksYWx3YXlzU2V0OnQgaW4gbi5kYXRhfSl9fXJldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jKCk9PntsZXQgZT1bXTtmb3IobGV0IHQgb2YgbCl7bGV0IG49YXdhaXQgdC5rZXkscj1hd2FpdCB0LnZhbHVlO2UucHVzaCh7a2V5Om4sdmFsdWU6cixhbHdheXNTZXQ6dC5hbHdheXNTZXR9KX1yZXR1cm4gZX0pLnRoZW4oZT0+Yy5QYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmModCxlKSk6Yy5QYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmModCxsKX1nZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCl9c3RyaWN0KGUpe3JldHVybiBzLmVycm9yVXRpbC5lcnJUb09iaixuZXcgJCh7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOlwic3RyaWN0XCIsLi4udm9pZCAwIT09ZT97ZXJyb3JNYXA6KHQsbik9PntsZXQgcj10aGlzLl9kZWYuZXJyb3JNYXA/Lih0LG4pLm1lc3NhZ2U/P24uZGVmYXVsdEVycm9yO3JldHVyblwidW5yZWNvZ25pemVkX2tleXNcIj09PXQuY29kZT97bWVzc2FnZTpzLmVycm9yVXRpbC5lcnJUb09iaihlKS5tZXNzYWdlPz9yfTp7bWVzc2FnZTpyfX19Ont9fSl9c3RyaXAoKXtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czpcInN0cmlwXCJ9KX1wYXNzdGhyb3VnaCgpe3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOlwicGFzc3Rocm91Z2hcIn0pfWV4dGVuZChlKXtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+KHsuLi50aGlzLl9kZWYuc2hhcGUoKSwuLi5lfSl9KX1tZXJnZShlKXtyZXR1cm4gbmV3ICQoe3Vua25vd25LZXlzOmUuX2RlZi51bmtub3duS2V5cyxjYXRjaGFsbDplLl9kZWYuY2F0Y2hhbGwsc2hhcGU6KCk9Pih7Li4udGhpcy5fZGVmLnNoYXBlKCksLi4uZS5fZGVmLnNoYXBlKCl9KSx0eXBlTmFtZTpyLlpvZE9iamVjdH0pfXNldEtleShlLHQpe3JldHVybiB0aGlzLmF1Z21lbnQoe1tlXTp0fSl9Y2F0Y2hhbGwoZSl7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsY2F0Y2hhbGw6ZX0pfXBpY2soZSl7bGV0IHQ9e307Zm9yKGxldCBuIG9mIHUudXRpbC5vYmplY3RLZXlzKGUpKWVbbl0mJnRoaXMuc2hhcGVbbl0mJih0W25dPXRoaXMuc2hhcGVbbl0pO3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT50fSl9b21pdChlKXtsZXQgdD17fTtmb3IobGV0IG4gb2YgdS51dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpZVtuXXx8KHRbbl09dGhpcy5zaGFwZVtuXSk7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PnR9KX1kZWVwUGFydGlhbCgpe3JldHVybiBmdW5jdGlvbiBlKHQpe2lmKHQgaW5zdGFuY2VvZiAkKXtsZXQgbj17fTtmb3IobGV0IHIgaW4gdC5zaGFwZSl7bGV0IG89dC5zaGFwZVtyXTtuW3JdPWVjLmNyZWF0ZShlKG8pKX1yZXR1cm4gbmV3ICQoey4uLnQuX2RlZixzaGFwZTooKT0+bn0pfWlmKHQgaW5zdGFuY2VvZiBWKXJldHVybiBuZXcgVih7Li4udC5fZGVmLHR5cGU6ZSh0LmVsZW1lbnQpfSk7aWYodCBpbnN0YW5jZW9mIGVjKXJldHVybiBlYy5jcmVhdGUoZSh0LnVud3JhcCgpKSk7aWYodCBpbnN0YW5jZW9mIGV1KXJldHVybiBldS5jcmVhdGUoZSh0LnVud3JhcCgpKSk7aWYodCBpbnN0YW5jZW9mIEcpcmV0dXJuIEcuY3JlYXRlKHQuaXRlbXMubWFwKHQ9PmUodCkpKTtlbHNlIHJldHVybiB0fSh0aGlzKX1wYXJ0aWFsKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBvZiB1LnV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSl7bGV0IHI9dGhpcy5zaGFwZVtuXTtlJiYhZVtuXT90W25dPXI6dFtuXT1yLm9wdGlvbmFsKCl9cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PnR9KX1yZXF1aXJlZChlKXtsZXQgdD17fTtmb3IobGV0IG4gb2YgdS51dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpaWYoZSYmIWVbbl0pdFtuXT10aGlzLnNoYXBlW25dO2Vsc2V7bGV0IGU9dGhpcy5zaGFwZVtuXTtmb3IoO2UgaW5zdGFuY2VvZiBlYzspZT1lLl9kZWYuaW5uZXJUeXBlO3Rbbl09ZX1yZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+dH0pfWtleW9mKCl7cmV0dXJuIGVvKHUudXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKX19dC5ab2RPYmplY3Q9JCwkLmNyZWF0ZT0oZSx0KT0+bmV3ICQoe3NoYXBlOigpPT5lLHVua25vd25LZXlzOlwic3RyaXBcIixjYXRjaGFsbDpxLmNyZWF0ZSgpLHR5cGVOYW1lOnIuWm9kT2JqZWN0LC4uLnAodCl9KSwkLnN0cmljdENyZWF0ZT0oZSx0KT0+bmV3ICQoe3NoYXBlOigpPT5lLHVua25vd25LZXlzOlwic3RyaWN0XCIsY2F0Y2hhbGw6cS5jcmVhdGUoKSx0eXBlTmFtZTpyLlpvZE9iamVjdCwuLi5wKHQpfSksJC5sYXp5Y3JlYXRlPShlLHQpPT5uZXcgJCh7c2hhcGU6ZSx1bmtub3duS2V5czpcInN0cmlwXCIsY2F0Y2hhbGw6cS5jcmVhdGUoKSx0eXBlTmFtZTpyLlpvZE9iamVjdCwuLi5wKHQpfSk7Y2xhc3MgVyBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLG49dGhpcy5fZGVmLm9wdGlvbnM7aWYodC5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UuYWxsKG4ubWFwKGFzeW5jIGU9PntsZXQgbj17Li4udCxjb21tb246ey4uLnQuY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9O3JldHVybntyZXN1bHQ6YXdhaXQgZS5fcGFyc2VBc3luYyh7ZGF0YTp0LmRhdGEscGF0aDp0LnBhdGgscGFyZW50Om59KSxjdHg6bn19KSkudGhlbihmdW5jdGlvbihlKXtmb3IobGV0IHQgb2YgZSlpZihcInZhbGlkXCI9PT10LnJlc3VsdC5zdGF0dXMpcmV0dXJuIHQucmVzdWx0O2ZvcihsZXQgbiBvZiBlKWlmKFwiZGlydHlcIj09PW4ucmVzdWx0LnN0YXR1cylyZXR1cm4gdC5jb21tb24uaXNzdWVzLnB1c2goLi4ubi5jdHguY29tbW9uLmlzc3Vlcyksbi5yZXN1bHQ7bGV0IG49ZS5tYXAoZT0+bmV3IGkuWm9kRXJyb3IoZS5jdHguY29tbW9uLmlzc3VlcykpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbix1bmlvbkVycm9yczpufSksYy5JTlZBTElEfSk7e2xldCBlLHI9W107Zm9yKGxldCBvIG9mIG4pe2xldCBuPXsuLi50LGNvbW1vbjp7Li4udC5jb21tb24saXNzdWVzOltdfSxwYXJlbnQ6bnVsbH0sYT1vLl9wYXJzZVN5bmMoe2RhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLHBhcmVudDpufSk7aWYoXCJ2YWxpZFwiPT09YS5zdGF0dXMpcmV0dXJuIGE7XCJkaXJ0eVwiIT09YS5zdGF0dXN8fGV8fChlPXtyZXN1bHQ6YSxjdHg6bn0pLG4uY29tbW9uLmlzc3Vlcy5sZW5ndGgmJnIucHVzaChuLmNvbW1vbi5pc3N1ZXMpfWlmKGUpcmV0dXJuIHQuY29tbW9uLmlzc3Vlcy5wdXNoKC4uLmUuY3R4LmNvbW1vbi5pc3N1ZXMpLGUucmVzdWx0O2xldCBvPXIubWFwKGU9Pm5ldyBpLlpvZEVycm9yKGUpKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sdW5pb25FcnJvcnM6b30pLGMuSU5WQUxJRH19Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9fXQuWm9kVW5pb249VyxXLmNyZWF0ZT0oZSx0KT0+bmV3IFcoe29wdGlvbnM6ZSx0eXBlTmFtZTpyLlpvZFVuaW9uLC4uLnAodCl9KTtsZXQgWT1lPT57aWYoZSBpbnN0YW5jZW9mIGVuKXJldHVybiBZKGUuc2NoZW1hKTtpZihlIGluc3RhbmNlb2YgZXMpcmV0dXJuIFkoZS5pbm5lclR5cGUoKSk7aWYoZSBpbnN0YW5jZW9mIGVyKXJldHVybltlLnZhbHVlXTtpZihlIGluc3RhbmNlb2YgZWEpcmV0dXJuIGUub3B0aW9ucztpZihlIGluc3RhbmNlb2YgZWkpcmV0dXJuIHUudXRpbC5vYmplY3RWYWx1ZXMoZS5lbnVtKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBlZClyZXR1cm4gWShlLl9kZWYuaW5uZXJUeXBlKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBNKXJldHVyblt2b2lkIDBdO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFopcmV0dXJuW251bGxdO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGVjKXJldHVyblt2b2lkIDAsLi4uWShlLnVud3JhcCgpKV07ZWxzZSBpZihlIGluc3RhbmNlb2YgZXUpcmV0dXJuW251bGwsLi4uWShlLnVud3JhcCgpKV07ZWxzZSBpZihlIGluc3RhbmNlb2YgZWgpcmV0dXJuIFkoZS51bndyYXAoKSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgZWcpcmV0dXJuIFkoZS51bndyYXAoKSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgZWYpcmV0dXJuIFkoZS5fZGVmLmlubmVyVHlwZSk7ZWxzZSByZXR1cm5bXX07Y2xhc3MgSyBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKHQucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5vYmplY3QpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm9iamVjdCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7bGV0IG49dGhpcy5kaXNjcmltaW5hdG9yLHI9dC5kYXRhW25dLG89dGhpcy5vcHRpb25zTWFwLmdldChyKTtyZXR1cm4gbz90LmNvbW1vbi5hc3luYz9vLl9wYXJzZUFzeW5jKHtkYXRhOnQuZGF0YSxwYXRoOnQucGF0aCxwYXJlbnQ6dH0pOm8uX3BhcnNlU3luYyh7ZGF0YTp0LmRhdGEscGF0aDp0LnBhdGgscGFyZW50OnR9KTooKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3Isb3B0aW9uczpBcnJheS5mcm9tKHRoaXMub3B0aW9uc01hcC5rZXlzKCkpLHBhdGg6W25dfSksYy5JTlZBTElEKX1nZXQgZGlzY3JpbWluYXRvcigpe3JldHVybiB0aGlzLl9kZWYuZGlzY3JpbWluYXRvcn1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9kZWYub3B0aW9uc31nZXQgb3B0aW9uc01hcCgpe3JldHVybiB0aGlzLl9kZWYub3B0aW9uc01hcH1zdGF0aWMgY3JlYXRlKGUsdCxuKXtsZXQgbz1uZXcgTWFwO2ZvcihsZXQgbiBvZiB0KXtsZXQgdD1ZKG4uc2hhcGVbZV0pO2lmKCF0Lmxlbmd0aCl0aHJvdyBFcnJvcihgQSBkaXNjcmltaW5hdG9yIHZhbHVlIGZvciBrZXkgXFxgJHtlfVxcYCBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHNjaGVtYSBvcHRpb25zYCk7Zm9yKGxldCByIG9mIHQpe2lmKG8uaGFzKHIpKXRocm93IEVycm9yKGBEaXNjcmltaW5hdG9yIHByb3BlcnR5ICR7U3RyaW5nKGUpfSBoYXMgZHVwbGljYXRlIHZhbHVlICR7U3RyaW5nKHIpfWApO28uc2V0KHIsbil9fXJldHVybiBuZXcgSyh7dHlwZU5hbWU6ci5ab2REaXNjcmltaW5hdGVkVW5pb24sZGlzY3JpbWluYXRvcjplLG9wdGlvbnM6dCxvcHRpb25zTWFwOm8sLi4ucChuKX0pfX10LlpvZERpc2NyaW1pbmF0ZWRVbmlvbj1LO2NsYXNzIFggZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxyPShlLHIpPT57aWYoKDAsYy5pc0Fib3J0ZWQpKGUpfHwoMCxjLmlzQWJvcnRlZCkocikpcmV0dXJuIGMuSU5WQUxJRDtsZXQgbz1mdW5jdGlvbiBlKHQsbil7bGV0IHI9KDAsdS5nZXRQYXJzZWRUeXBlKSh0KSxvPSgwLHUuZ2V0UGFyc2VkVHlwZSkobik7aWYodD09PW4pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07aWYocj09PXUuWm9kUGFyc2VkVHlwZS5vYmplY3QmJm89PT11LlpvZFBhcnNlZFR5cGUub2JqZWN0KXtsZXQgcj11LnV0aWwub2JqZWN0S2V5cyhuKSxvPXUudXRpbC5vYmplY3RLZXlzKHQpLmZpbHRlcihlPT4tMSE9PXIuaW5kZXhPZihlKSksYT17Li4udCwuLi5ufTtmb3IobGV0IHIgb2Ygbyl7bGV0IG89ZSh0W3JdLG5bcl0pO2lmKCFvLnZhbGlkKXJldHVybnt2YWxpZDohMX07YVtyXT1vLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6YX19aWYocj09PXUuWm9kUGFyc2VkVHlwZS5hcnJheSYmbz09PXUuWm9kUGFyc2VkVHlwZS5hcnJheSl7aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm57dmFsaWQ6ITF9O2xldCByPVtdO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtsZXQgYT1lKHRbb10sbltvXSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtyLnB1c2goYS5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpyfX1pZihyPT09dS5ab2RQYXJzZWRUeXBlLmRhdGUmJm89PT11LlpvZFBhcnNlZFR5cGUuZGF0ZSYmK3Q9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O3JldHVybnt2YWxpZDohMX19KGUudmFsdWUsci52YWx1ZSk7cmV0dXJuIG8udmFsaWQ/KCgoMCxjLmlzRGlydHkpKGUpfHwoMCxjLmlzRGlydHkpKHIpKSYmdC5kaXJ0eSgpLHtzdGF0dXM6dC52YWx1ZSx2YWx1ZTpvLmRhdGF9KTooKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc30pLGMuSU5WQUxJRCl9O3JldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChbdGhpcy5fZGVmLmxlZnQuX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSksdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pXSkudGhlbigoW2UsdF0pPT5yKGUsdCkpOnIodGhpcy5fZGVmLmxlZnQuX3BhcnNlU3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KSl9fXQuWm9kSW50ZXJzZWN0aW9uPVgsWC5jcmVhdGU9KGUsdCxuKT0+bmV3IFgoe2xlZnQ6ZSxyaWdodDp0LHR5cGVOYW1lOnIuWm9kSW50ZXJzZWN0aW9uLC4uLnAobil9KTtjbGFzcyBHIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLmFycmF5KXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5hcnJheSxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7aWYobi5kYXRhLmxlbmd0aDx0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsdHlwZTpcImFycmF5XCJ9KSxjLklOVkFMSUQ7IXRoaXMuX2RlZi5yZXN0JiZuLmRhdGEubGVuZ3RoPnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTp0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLGluY2x1c2l2ZTohMCxleGFjdDohMSx0eXBlOlwiYXJyYXlcIn0pLHQuZGlydHkoKSk7bGV0IHI9Wy4uLm4uZGF0YV0ubWFwKChlLHQpPT57bGV0IHI9dGhpcy5fZGVmLml0ZW1zW3RdfHx0aGlzLl9kZWYucmVzdDtyZXR1cm4gcj9yLl9wYXJzZShuZXcgZChuLGUsbi5wYXRoLHQpKTpudWxsfSkuZmlsdGVyKGU9PiEhZSk7cmV0dXJuIG4uY29tbW9uLmFzeW5jP1Byb21pc2UuYWxsKHIpLnRoZW4oZT0+Yy5QYXJzZVN0YXR1cy5tZXJnZUFycmF5KHQsZSkpOmMuUGFyc2VTdGF0dXMubWVyZ2VBcnJheSh0LHIpfWdldCBpdGVtcygpe3JldHVybiB0aGlzLl9kZWYuaXRlbXN9cmVzdChlKXtyZXR1cm4gbmV3IEcoey4uLnRoaXMuX2RlZixyZXN0OmV9KX19dC5ab2RUdXBsZT1HLEcuY3JlYXRlPShlLHQpPT57aWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgRXJyb3IoXCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYXMgdG8gei50dXBsZShbIC4uLiBdKVwiKTtyZXR1cm4gbmV3IEcoe2l0ZW1zOmUsdHlwZU5hbWU6ci5ab2RUdXBsZSxyZXN0Om51bGwsLi4ucCh0KX0pfTtjbGFzcyBRIGV4dGVuZHMgaHtnZXQga2V5U2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5rZXlUeXBlfWdldCB2YWx1ZVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfV9wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUub2JqZWN0KXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5vYmplY3QscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2xldCByPVtdLG89dGhpcy5fZGVmLmtleVR5cGUsYT10aGlzLl9kZWYudmFsdWVUeXBlO2ZvcihsZXQgZSBpbiBuLmRhdGEpci5wdXNoKHtrZXk6by5fcGFyc2UobmV3IGQobixlLG4ucGF0aCxlKSksdmFsdWU6YS5fcGFyc2UobmV3IGQobixuLmRhdGFbZV0sbi5wYXRoLGUpKSxhbHdheXNTZXQ6ZSBpbiBuLmRhdGF9KTtyZXR1cm4gbi5jb21tb24uYXN5bmM/Yy5QYXJzZVN0YXR1cy5tZXJnZU9iamVjdEFzeW5jKHQscik6Yy5QYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmModCxyKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfXN0YXRpYyBjcmVhdGUoZSx0LG4pe3JldHVybiBuZXcgUSh0IGluc3RhbmNlb2YgaD97a2V5VHlwZTplLHZhbHVlVHlwZTp0LHR5cGVOYW1lOnIuWm9kUmVjb3JkLC4uLnAobil9OntrZXlUeXBlOlQuY3JlYXRlKCksdmFsdWVUeXBlOmUsdHlwZU5hbWU6ci5ab2RSZWNvcmQsLi4ucCh0KX0pfX10LlpvZFJlY29yZD1RO2NsYXNzIEogZXh0ZW5kcyBoe2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5tYXApcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm1hcCxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7bGV0IHI9dGhpcy5fZGVmLmtleVR5cGUsbz10aGlzLl9kZWYudmFsdWVUeXBlLGE9Wy4uLm4uZGF0YS5lbnRyaWVzKCldLm1hcCgoW2UsdF0sYSk9Pih7a2V5OnIuX3BhcnNlKG5ldyBkKG4sZSxuLnBhdGgsW2EsXCJrZXlcIl0pKSx2YWx1ZTpvLl9wYXJzZShuZXcgZChuLHQsbi5wYXRoLFthLFwidmFsdWVcIl0pKX0pKTtpZihuLmNvbW1vbi5hc3luYyl7bGV0IGU9bmV3IE1hcDtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57Zm9yKGxldCBuIG9mIGEpe2xldCByPWF3YWl0IG4ua2V5LG89YXdhaXQgbi52YWx1ZTtpZihcImFib3J0ZWRcIj09PXIuc3RhdHVzfHxcImFib3J0ZWRcIj09PW8uc3RhdHVzKXJldHVybiBjLklOVkFMSUQ7KFwiZGlydHlcIj09PXIuc3RhdHVzfHxcImRpcnR5XCI9PT1vLnN0YXR1cykmJnQuZGlydHkoKSxlLnNldChyLnZhbHVlLG8udmFsdWUpfXJldHVybntzdGF0dXM6dC52YWx1ZSx2YWx1ZTplfX0pfXtsZXQgZT1uZXcgTWFwO2ZvcihsZXQgbiBvZiBhKXtsZXQgcj1uLmtleSxvPW4udmFsdWU7aWYoXCJhYm9ydGVkXCI9PT1yLnN0YXR1c3x8XCJhYm9ydGVkXCI9PT1vLnN0YXR1cylyZXR1cm4gYy5JTlZBTElEOyhcImRpcnR5XCI9PT1yLnN0YXR1c3x8XCJkaXJ0eVwiPT09by5zdGF0dXMpJiZ0LmRpcnR5KCksZS5zZXQoci52YWx1ZSxvLnZhbHVlKX1yZXR1cm57c3RhdHVzOnQudmFsdWUsdmFsdWU6ZX19fX10LlpvZE1hcD1KLEouY3JlYXRlPShlLHQsbik9Pm5ldyBKKHt2YWx1ZVR5cGU6dCxrZXlUeXBlOmUsdHlwZU5hbWU6ci5ab2RNYXAsLi4ucChuKX0pO2NsYXNzIGVlIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLnNldClyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuc2V0LHJlY2VpdmVkOm4ucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtsZXQgcj10aGlzLl9kZWY7bnVsbCE9PXIubWluU2l6ZSYmbi5kYXRhLnNpemU8ci5taW5TaXplLnZhbHVlJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpyLm1pblNpemUudmFsdWUsdHlwZTpcInNldFwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOnIubWluU2l6ZS5tZXNzYWdlfSksdC5kaXJ0eSgpKSxudWxsIT09ci5tYXhTaXplJiZuLmRhdGEuc2l6ZT5yLm1heFNpemUudmFsdWUmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTpyLm1heFNpemUudmFsdWUsdHlwZTpcInNldFwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOnIubWF4U2l6ZS5tZXNzYWdlfSksdC5kaXJ0eSgpKTtsZXQgbz10aGlzLl9kZWYudmFsdWVUeXBlO2Z1bmN0aW9uIGEoZSl7bGV0IG49bmV3IFNldDtmb3IobGV0IHIgb2YgZSl7aWYoXCJhYm9ydGVkXCI9PT1yLnN0YXR1cylyZXR1cm4gYy5JTlZBTElEO1wiZGlydHlcIj09PXIuc3RhdHVzJiZ0LmRpcnR5KCksbi5hZGQoci52YWx1ZSl9cmV0dXJue3N0YXR1czp0LnZhbHVlLHZhbHVlOm59fWxldCBsPVsuLi5uLmRhdGEudmFsdWVzKCldLm1hcCgoZSx0KT0+by5fcGFyc2UobmV3IGQobixlLG4ucGF0aCx0KSkpO3JldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChsKS50aGVuKGU9PmEoZSkpOmEobCl9bWluKGUsdCl7cmV0dXJuIG5ldyBlZSh7Li4udGhpcy5fZGVmLG1pblNpemU6e3ZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX19KX1tYXgoZSx0KXtyZXR1cm4gbmV3IGVlKHsuLi50aGlzLl9kZWYsbWF4U2l6ZTp7dmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfX0pfXNpemUoZSx0KXtyZXR1cm4gdGhpcy5taW4oZSx0KS5tYXgoZSx0KX1ub25lbXB0eShlKXtyZXR1cm4gdGhpcy5taW4oMSxlKX19dC5ab2RTZXQ9ZWUsZWUuY3JlYXRlPShlLHQpPT5uZXcgZWUoe3ZhbHVlVHlwZTplLG1pblNpemU6bnVsbCxtYXhTaXplOm51bGwsdHlwZU5hbWU6ci5ab2RTZXQsLi4ucCh0KX0pO2NsYXNzIGV0IGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy52YWxpZGF0ZT10aGlzLmltcGxlbWVudH1fcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYodC5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5mdW5jdGlvbixyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7ZnVuY3Rpb24gbihlLG4pe3JldHVybigwLGMubWFrZUlzc3VlKSh7ZGF0YTplLHBhdGg6dC5wYXRoLGVycm9yTWFwczpbdC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLHQuc2NoZW1hRXJyb3JNYXAsKDAsbC5nZXRFcnJvck1hcCkoKSxsLmRlZmF1bHRFcnJvck1hcF0uZmlsdGVyKGU9PiEhZSksaXNzdWVEYXRhOntjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzLGFyZ3VtZW50c0Vycm9yOm59fSl9ZnVuY3Rpb24gcihlLG4pe3JldHVybigwLGMubWFrZUlzc3VlKSh7ZGF0YTplLHBhdGg6dC5wYXRoLGVycm9yTWFwczpbdC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLHQuc2NoZW1hRXJyb3JNYXAsKDAsbC5nZXRFcnJvck1hcCkoKSxsLmRlZmF1bHRFcnJvck1hcF0uZmlsdGVyKGU9PiEhZSksaXNzdWVEYXRhOntjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfcmV0dXJuX3R5cGUscmV0dXJuVHlwZUVycm9yOm59fSl9bGV0IG89e2Vycm9yTWFwOnQuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcH0sYT10LmRhdGE7aWYodGhpcy5fZGVmLnJldHVybnMgaW5zdGFuY2VvZiBlbCl7bGV0IGU9dGhpcztyZXR1cm4oMCxjLk9LKShhc3luYyBmdW5jdGlvbiguLi50KXtsZXQgbD1uZXcgaS5ab2RFcnJvcihbXSkscz1hd2FpdCBlLl9kZWYuYXJncy5wYXJzZUFzeW5jKHQsbykuY2F0Y2goZT0+e3Rocm93IGwuYWRkSXNzdWUobih0LGUpKSxsfSksYz1hd2FpdCBSZWZsZWN0LmFwcGx5KGEsdGhpcyxzKTtyZXR1cm4gYXdhaXQgZS5fZGVmLnJldHVybnMuX2RlZi50eXBlLnBhcnNlQXN5bmMoYyxvKS5jYXRjaChlPT57dGhyb3cgbC5hZGRJc3N1ZShyKGMsZSkpLGx9KX0pfXtsZXQgZT10aGlzO3JldHVybigwLGMuT0spKGZ1bmN0aW9uKC4uLnQpe2xldCBsPWUuX2RlZi5hcmdzLnNhZmVQYXJzZSh0LG8pO2lmKCFsLnN1Y2Nlc3MpdGhyb3cgbmV3IGkuWm9kRXJyb3IoW24odCxsLmVycm9yKV0pO2xldCBzPVJlZmxlY3QuYXBwbHkoYSx0aGlzLGwuZGF0YSksYz1lLl9kZWYucmV0dXJucy5zYWZlUGFyc2UocyxvKTtpZighYy5zdWNjZXNzKXRocm93IG5ldyBpLlpvZEVycm9yKFtyKHMsYy5lcnJvcildKTtyZXR1cm4gYy5kYXRhfSl9fXBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5fZGVmLmFyZ3N9cmV0dXJuVHlwZSgpe3JldHVybiB0aGlzLl9kZWYucmV0dXJuc31hcmdzKC4uLmUpe3JldHVybiBuZXcgZXQoey4uLnRoaXMuX2RlZixhcmdzOkcuY3JlYXRlKGUpLnJlc3QoRi5jcmVhdGUoKSl9KX1yZXR1cm5zKGUpe3JldHVybiBuZXcgZXQoey4uLnRoaXMuX2RlZixyZXR1cm5zOmV9KX1pbXBsZW1lbnQoZSl7cmV0dXJuIHRoaXMucGFyc2UoZSl9c3RyaWN0SW1wbGVtZW50KGUpe3JldHVybiB0aGlzLnBhcnNlKGUpfXN0YXRpYyBjcmVhdGUoZSx0LG4pe3JldHVybiBuZXcgZXQoe2FyZ3M6ZXx8Ry5jcmVhdGUoW10pLnJlc3QoRi5jcmVhdGUoKSkscmV0dXJuczp0fHxGLmNyZWF0ZSgpLHR5cGVOYW1lOnIuWm9kRnVuY3Rpb24sLi4ucChuKX0pfX10LlpvZEZ1bmN0aW9uPWV0O2NsYXNzIGVuIGV4dGVuZHMgaHtnZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5nZXR0ZXIoKX1fcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7cmV0dXJuIHRoaXMuX2RlZi5nZXR0ZXIoKS5fcGFyc2Uoe2RhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLHBhcmVudDp0fSl9fXQuWm9kTGF6eT1lbixlbi5jcmVhdGU9KGUsdCk9Pm5ldyBlbih7Z2V0dGVyOmUsdHlwZU5hbWU6ci5ab2RMYXp5LC4uLnAodCl9KTtjbGFzcyBlciBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKGUuZGF0YSE9PXRoaXMuX2RlZi52YWx1ZSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7cmVjZWl2ZWQ6dC5kYXRhLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsLGV4cGVjdGVkOnRoaXMuX2RlZi52YWx1ZX0pLGMuSU5WQUxJRH1yZXR1cm57c3RhdHVzOlwidmFsaWRcIix2YWx1ZTplLmRhdGF9fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWV9fWZ1bmN0aW9uIGVvKGUsdCl7cmV0dXJuIG5ldyBlYSh7dmFsdWVzOmUsdHlwZU5hbWU6ci5ab2RFbnVtLC4uLnAodCl9KX10LlpvZExpdGVyYWw9ZXIsZXIuY3JlYXRlPShlLHQpPT5uZXcgZXIoe3ZhbHVlOmUsdHlwZU5hbWU6ci5ab2RMaXRlcmFsLC4uLnAodCl9KTtjbGFzcyBlYSBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlLmRhdGEpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpLG49dGhpcy5fZGVmLnZhbHVlcztyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtleHBlY3RlZDp1LnV0aWwuam9pblZhbHVlcyhuKSxyZWNlaXZlZDp0LnBhcnNlZFR5cGUsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGV9KSxjLklOVkFMSUR9aWYodGhpcy5fY2FjaGV8fCh0aGlzLl9jYWNoZT1uZXcgU2V0KHRoaXMuX2RlZi52YWx1ZXMpKSwhdGhpcy5fY2FjaGUuaGFzKGUuZGF0YSkpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpLG49dGhpcy5fZGVmLnZhbHVlcztyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtyZWNlaXZlZDp0LmRhdGEsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsb3B0aW9uczpufSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlc31nZXQgZW51bSgpe2xldCBlPXt9O2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYudmFsdWVzKWVbdF09dDtyZXR1cm4gZX1nZXQgVmFsdWVzKCl7bGV0IGU9e307Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi52YWx1ZXMpZVt0XT10O3JldHVybiBlfWdldCBFbnVtKCl7bGV0IGU9e307Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi52YWx1ZXMpZVt0XT10O3JldHVybiBlfWV4dHJhY3QoZSx0PXRoaXMuX2RlZil7cmV0dXJuIGVhLmNyZWF0ZShlLHsuLi50aGlzLl9kZWYsLi4udH0pfWV4Y2x1ZGUoZSx0PXRoaXMuX2RlZil7cmV0dXJuIGVhLmNyZWF0ZSh0aGlzLm9wdGlvbnMuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKHQpKSx7Li4udGhpcy5fZGVmLC4uLnR9KX19dC5ab2RFbnVtPWVhLGVhLmNyZWF0ZT1lbztjbGFzcyBlaSBleHRlbmRzIGh7X3BhcnNlKGUpe2xldCB0PXUudXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcyksbj10aGlzLl9nZXRPclJldHVybkN0eChlKTtpZihuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUuc3RyaW5nJiZuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUubnVtYmVyKXtsZXQgZT11LnV0aWwub2JqZWN0VmFsdWVzKHQpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2V4cGVjdGVkOnUudXRpbC5qb2luVmFsdWVzKGUpLHJlY2VpdmVkOm4ucGFyc2VkVHlwZSxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZX0pLGMuSU5WQUxJRH1pZih0aGlzLl9jYWNoZXx8KHRoaXMuX2NhY2hlPW5ldyBTZXQodS51dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKSkpLCF0aGlzLl9jYWNoZS5oYXMoZS5kYXRhKSl7bGV0IGU9dS51dGlsLm9iamVjdFZhbHVlcyh0KTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtyZWNlaXZlZDpuLmRhdGEsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsb3B0aW9uczplfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9Z2V0IGVudW0oKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlc319dC5ab2ROYXRpdmVFbnVtPWVpLGVpLmNyZWF0ZT0oZSx0KT0+bmV3IGVpKHt2YWx1ZXM6ZSx0eXBlTmFtZTpyLlpvZE5hdGl2ZUVudW0sLi4ucCh0KX0pO2NsYXNzIGVsIGV4dGVuZHMgaHt1bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKHQucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5wcm9taXNlJiYhMT09PXQuY29tbW9uLmFzeW5jKXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5wcm9taXNlLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtsZXQgbj10LnBhcnNlZFR5cGU9PT11LlpvZFBhcnNlZFR5cGUucHJvbWlzZT90LmRhdGE6UHJvbWlzZS5yZXNvbHZlKHQuZGF0YSk7cmV0dXJuKDAsYy5PSykobi50aGVuKGU9PnRoaXMuX2RlZi50eXBlLnBhcnNlQXN5bmMoZSx7cGF0aDp0LnBhdGgsZXJyb3JNYXA6dC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSkpKX19dC5ab2RQcm9taXNlPWVsLGVsLmNyZWF0ZT0oZSx0KT0+bmV3IGVsKHt0eXBlOmUsdHlwZU5hbWU6ci5ab2RQcm9taXNlLC4uLnAodCl9KTtjbGFzcyBlcyBleHRlbmRzIGh7aW5uZXJUeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zY2hlbWF9c291cmNlVHlwZSgpe3JldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9kZWYudHlwZU5hbWU9PT1yLlpvZEVmZmVjdHM/dGhpcy5fZGVmLnNjaGVtYS5zb3VyY2VUeXBlKCk6dGhpcy5fZGVmLnNjaGVtYX1fcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSkscj10aGlzLl9kZWYuZWZmZWN0fHxudWxsLG89e2FkZElzc3VlOmU9PnsoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLGUpLGUuZmF0YWw/dC5hYm9ydCgpOnQuZGlydHkoKX0sZ2V0IHBhdGgoKXtyZXR1cm4gbi5wYXRofX07aWYoby5hZGRJc3N1ZT1vLmFkZElzc3VlLmJpbmQobyksXCJwcmVwcm9jZXNzXCI9PT1yLnR5cGUpe2xldCBlPXIudHJhbnNmb3JtKG4uZGF0YSxvKTtpZihuLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oYXN5bmMgZT0+e2lmKFwiYWJvcnRlZFwiPT09dC52YWx1ZSlyZXR1cm4gYy5JTlZBTElEO2xldCByPWF3YWl0IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVyblwiYWJvcnRlZFwiPT09ci5zdGF0dXM/Yy5JTlZBTElEOlwiZGlydHlcIj09PXIuc3RhdHVzfHxcImRpcnR5XCI9PT10LnZhbHVlPygwLGMuRElSVFkpKHIudmFsdWUpOnJ9KTt7aWYoXCJhYm9ydGVkXCI9PT10LnZhbHVlKXJldHVybiBjLklOVkFMSUQ7bGV0IHI9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOmUscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm5cImFib3J0ZWRcIj09PXIuc3RhdHVzP2MuSU5WQUxJRDpcImRpcnR5XCI9PT1yLnN0YXR1c3x8XCJkaXJ0eVwiPT09dC52YWx1ZT8oMCxjLkRJUlRZKShyLnZhbHVlKTpyfX1pZihcInJlZmluZW1lbnRcIj09PXIudHlwZSl7bGV0IGU9ZT0+e2xldCB0PXIucmVmaW5lbWVudChlLG8pO2lmKG4uY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7aWYodCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgRXJyb3IoXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtyZXR1cm4gZX07aWYoITEhPT1uLmNvbW1vbi5hc3luYylyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KS50aGVuKG49PlwiYWJvcnRlZFwiPT09bi5zdGF0dXM/Yy5JTlZBTElEOihcImRpcnR5XCI9PT1uLnN0YXR1cyYmdC5kaXJ0eSgpLGUobi52YWx1ZSkudGhlbigoKT0+KHtzdGF0dXM6dC52YWx1ZSx2YWx1ZTpuLnZhbHVlfSkpKSk7e2xldCByPXRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm5cImFib3J0ZWRcIj09PXIuc3RhdHVzP2MuSU5WQUxJRDooXCJkaXJ0eVwiPT09ci5zdGF0dXMmJnQuZGlydHkoKSxlKHIudmFsdWUpLHtzdGF0dXM6dC52YWx1ZSx2YWx1ZTpyLnZhbHVlfSl9fWlmKFwidHJhbnNmb3JtXCI9PT1yLnR5cGUpaWYoITEhPT1uLmNvbW1vbi5hc3luYylyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KS50aGVuKGU9PigwLGMuaXNWYWxpZCkoZSk/UHJvbWlzZS5yZXNvbHZlKHIudHJhbnNmb3JtKGUudmFsdWUsbykpLnRoZW4oZT0+KHtzdGF0dXM6dC52YWx1ZSx2YWx1ZTplfSkpOmMuSU5WQUxJRCk7ZWxzZXtsZXQgZT10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7aWYoISgwLGMuaXNWYWxpZCkoZSkpcmV0dXJuIGMuSU5WQUxJRDtsZXQgYT1yLnRyYW5zZm9ybShlLnZhbHVlLG8pO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IEVycm9yKFwiQXN5bmNocm9ub3VzIHRyYW5zZm9ybSBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5cIik7cmV0dXJue3N0YXR1czp0LnZhbHVlLHZhbHVlOmF9fXUudXRpbC5hc3NlcnROZXZlcihyKX19dC5ab2RFZmZlY3RzPWVzLHQuWm9kVHJhbnNmb3JtZXI9ZXMsZXMuY3JlYXRlPShlLHQsbik9Pm5ldyBlcyh7c2NoZW1hOmUsdHlwZU5hbWU6ci5ab2RFZmZlY3RzLGVmZmVjdDp0LC4uLnAobil9KSxlcy5jcmVhdGVXaXRoUHJlcHJvY2Vzcz0oZSx0LG4pPT5uZXcgZXMoe3NjaGVtYTp0LGVmZmVjdDp7dHlwZTpcInByZXByb2Nlc3NcIix0cmFuc2Zvcm06ZX0sdHlwZU5hbWU6ci5ab2RFZmZlY3RzLC4uLnAobil9KTtjbGFzcyBlYyBleHRlbmRzIGh7X3BhcnNlKGUpe3JldHVybiB0aGlzLl9nZXRUeXBlKGUpPT09dS5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZD8oMCxjLk9LKSh2b2lkIDApOnRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGUpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX10LlpvZE9wdGlvbmFsPWVjLGVjLmNyZWF0ZT0oZSx0KT0+bmV3IGVjKHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpyLlpvZE9wdGlvbmFsLC4uLnAodCl9KTtjbGFzcyBldSBleHRlbmRzIGh7X3BhcnNlKGUpe3JldHVybiB0aGlzLl9nZXRUeXBlKGUpPT09dS5ab2RQYXJzZWRUeXBlLm51bGw/KDAsYy5PSykobnVsbCk6dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoZSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fXQuWm9kTnVsbGFibGU9ZXUsZXUuY3JlYXRlPShlLHQpPT5uZXcgZXUoe2lubmVyVHlwZTplLHR5cGVOYW1lOnIuWm9kTnVsbGFibGUsLi4ucCh0KX0pO2NsYXNzIGVkIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSksbj10LmRhdGE7cmV0dXJuIHQucGFyc2VkVHlwZT09PXUuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQmJihuPXRoaXMuX2RlZi5kZWZhdWx0VmFsdWUoKSksdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe2RhdGE6bixwYXRoOnQucGF0aCxwYXJlbnQ6dH0pfXJlbW92ZURlZmF1bHQoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19dC5ab2REZWZhdWx0PWVkLGVkLmNyZWF0ZT0oZSx0KT0+bmV3IGVkKHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpyLlpvZERlZmF1bHQsZGVmYXVsdFZhbHVlOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGVmYXVsdD90LmRlZmF1bHQ6KCk9PnQuZGVmYXVsdCwuLi5wKHQpfSk7Y2xhc3MgZWYgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXsuLi50LGNvbW1vbjp7Li4udC5jb21tb24saXNzdWVzOltdfX0scj10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50OnsuLi5ufX0pO3JldHVybigwLGMuaXNBc3luYykocik/ci50aGVuKGU9Pih7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpcInZhbGlkXCI9PT1lLnN0YXR1cz9lLnZhbHVlOnRoaXMuX2RlZi5jYXRjaFZhbHVlKHtnZXQgZXJyb3IoKXtyZXR1cm4gbmV3IGkuWm9kRXJyb3Iobi5jb21tb24uaXNzdWVzKX0saW5wdXQ6bi5kYXRhfSl9KSk6e3N0YXR1czpcInZhbGlkXCIsdmFsdWU6XCJ2YWxpZFwiPT09ci5zdGF0dXM/ci52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBpLlpvZEVycm9yKG4uY29tbW9uLmlzc3Vlcyl9LGlucHV0Om4uZGF0YX0pfX1yZW1vdmVDYXRjaCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX10LlpvZENhdGNoPWVmLGVmLmNyZWF0ZT0oZSx0KT0+bmV3IGVmKHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpyLlpvZENhdGNoLGNhdGNoVmFsdWU6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jYXRjaD90LmNhdGNoOigpPT50LmNhdGNoLC4uLnAodCl9KTtjbGFzcyBlcCBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUubmFuKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUubmFuLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm57c3RhdHVzOlwidmFsaWRcIix2YWx1ZTplLmRhdGF9fX10LlpvZE5hTj1lcCxlcC5jcmVhdGU9ZT0+bmV3IGVwKHt0eXBlTmFtZTpyLlpvZE5hTiwuLi5wKGUpfSksdC5CUkFORD1TeW1ib2woXCJ6b2RfYnJhbmRcIik7Y2xhc3MgZWggZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXQuZGF0YTtyZXR1cm4gdGhpcy5fZGVmLnR5cGUuX3BhcnNlKHtkYXRhOm4scGF0aDp0LnBhdGgscGFyZW50OnR9KX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9fXQuWm9kQnJhbmRlZD1laDtjbGFzcyBlbSBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4uY29tbW9uLmFzeW5jKXJldHVybihhc3luYygpPT57bGV0IGU9YXdhaXQgdGhpcy5fZGVmLmluLl9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVyblwiYWJvcnRlZFwiPT09ZS5zdGF0dXM/Yy5JTlZBTElEOlwiZGlydHlcIj09PWUuc3RhdHVzPyh0LmRpcnR5KCksKDAsYy5ESVJUWSkoZS52YWx1ZSkpOnRoaXMuX2RlZi5vdXQuX3BhcnNlQXN5bmMoe2RhdGE6ZS52YWx1ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pfSkoKTt7bGV0IGU9dGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuXCJhYm9ydGVkXCI9PT1lLnN0YXR1cz9jLklOVkFMSUQ6XCJkaXJ0eVwiPT09ZS5zdGF0dXM/KHQuZGlydHkoKSx7c3RhdHVzOlwiZGlydHlcIix2YWx1ZTplLnZhbHVlfSk6dGhpcy5fZGVmLm91dC5fcGFyc2VTeW5jKHtkYXRhOmUudmFsdWUscGF0aDpuLnBhdGgscGFyZW50Om59KX19c3RhdGljIGNyZWF0ZShlLHQpe3JldHVybiBuZXcgZW0oe2luOmUsb3V0OnQsdHlwZU5hbWU6ci5ab2RQaXBlbGluZX0pfX10LlpvZFBpcGVsaW5lPWVtO2NsYXNzIGVnIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0IHQ9dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoZSksbj1lPT4oKDAsYy5pc1ZhbGlkKShlKSYmKGUudmFsdWU9T2JqZWN0LmZyZWV6ZShlLnZhbHVlKSksZSk7cmV0dXJuKDAsYy5pc0FzeW5jKSh0KT90LnRoZW4oZT0+bihlKSk6bih0KX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19ZnVuY3Rpb24gZXkoZSx0KXtsZXQgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UodCk6XCJzdHJpbmdcIj09dHlwZW9mIGU/e21lc3NhZ2U6ZX06ZTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygbj97bWVzc2FnZTpufTpufWZ1bmN0aW9uIGV2KGUsdD17fSxuKXtyZXR1cm4gZT9VLmNyZWF0ZSgpLnN1cGVyUmVmaW5lKChyLG8pPT57bGV0IGE9ZShyKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gYS50aGVuKGU9PntpZighZSl7bGV0IGU9ZXkodCxyKSxhPWUuZmF0YWw/P24/PyEwO28uYWRkSXNzdWUoe2NvZGU6XCJjdXN0b21cIiwuLi5lLGZhdGFsOmF9KX19KTtpZighYSl7bGV0IGU9ZXkodCxyKSxhPWUuZmF0YWw/P24/PyEwO28uYWRkSXNzdWUoe2NvZGU6XCJjdXN0b21cIiwuLi5lLGZhdGFsOmF9KX19KTpVLmNyZWF0ZSgpfXQuWm9kUmVhZG9ubHk9ZWcsZWcuY3JlYXRlPShlLHQpPT5uZXcgZWcoe2lubmVyVHlwZTplLHR5cGVOYW1lOnIuWm9kUmVhZG9ubHksLi4ucCh0KX0pLHQubGF0ZT17b2JqZWN0OiQubGF6eWNyZWF0ZX0sKG89cnx8KHQuWm9kRmlyc3RQYXJ0eVR5cGVLaW5kPXI9e30pKS5ab2RTdHJpbmc9XCJab2RTdHJpbmdcIixvLlpvZE51bWJlcj1cIlpvZE51bWJlclwiLG8uWm9kTmFOPVwiWm9kTmFOXCIsby5ab2RCaWdJbnQ9XCJab2RCaWdJbnRcIixvLlpvZEJvb2xlYW49XCJab2RCb29sZWFuXCIsby5ab2REYXRlPVwiWm9kRGF0ZVwiLG8uWm9kU3ltYm9sPVwiWm9kU3ltYm9sXCIsby5ab2RVbmRlZmluZWQ9XCJab2RVbmRlZmluZWRcIixvLlpvZE51bGw9XCJab2ROdWxsXCIsby5ab2RBbnk9XCJab2RBbnlcIixvLlpvZFVua25vd249XCJab2RVbmtub3duXCIsby5ab2ROZXZlcj1cIlpvZE5ldmVyXCIsby5ab2RWb2lkPVwiWm9kVm9pZFwiLG8uWm9kQXJyYXk9XCJab2RBcnJheVwiLG8uWm9kT2JqZWN0PVwiWm9kT2JqZWN0XCIsby5ab2RVbmlvbj1cIlpvZFVuaW9uXCIsby5ab2REaXNjcmltaW5hdGVkVW5pb249XCJab2REaXNjcmltaW5hdGVkVW5pb25cIixvLlpvZEludGVyc2VjdGlvbj1cIlpvZEludGVyc2VjdGlvblwiLG8uWm9kVHVwbGU9XCJab2RUdXBsZVwiLG8uWm9kUmVjb3JkPVwiWm9kUmVjb3JkXCIsby5ab2RNYXA9XCJab2RNYXBcIixvLlpvZFNldD1cIlpvZFNldFwiLG8uWm9kRnVuY3Rpb249XCJab2RGdW5jdGlvblwiLG8uWm9kTGF6eT1cIlpvZExhenlcIixvLlpvZExpdGVyYWw9XCJab2RMaXRlcmFsXCIsby5ab2RFbnVtPVwiWm9kRW51bVwiLG8uWm9kRWZmZWN0cz1cIlpvZEVmZmVjdHNcIixvLlpvZE5hdGl2ZUVudW09XCJab2ROYXRpdmVFbnVtXCIsby5ab2RPcHRpb25hbD1cIlpvZE9wdGlvbmFsXCIsby5ab2ROdWxsYWJsZT1cIlpvZE51bGxhYmxlXCIsby5ab2REZWZhdWx0PVwiWm9kRGVmYXVsdFwiLG8uWm9kQ2F0Y2g9XCJab2RDYXRjaFwiLG8uWm9kUHJvbWlzZT1cIlpvZFByb21pc2VcIixvLlpvZEJyYW5kZWQ9XCJab2RCcmFuZGVkXCIsby5ab2RQaXBlbGluZT1cIlpvZFBpcGVsaW5lXCIsby5ab2RSZWFkb25seT1cIlpvZFJlYWRvbmx5XCIsdC5pbnN0YW5jZW9mPShlLHQ9e21lc3NhZ2U6YElucHV0IG5vdCBpbnN0YW5jZSBvZiAke2UubmFtZX1gfSk9PmV2KHQ9PnQgaW5zdGFuY2VvZiBlLHQpO2xldCBlYj1ULmNyZWF0ZTt0LnN0cmluZz1lYjtsZXQgZUE9ei5jcmVhdGU7dC5udW1iZXI9ZUEsdC5uYW49ZXAuY3JlYXRlLHQuYmlnaW50PUQuY3JlYXRlO2xldCBleD1MLmNyZWF0ZTt0LmJvb2xlYW49ZXgsdC5kYXRlPU4uY3JlYXRlLHQuc3ltYm9sPVIuY3JlYXRlLHQudW5kZWZpbmVkPU0uY3JlYXRlLHQubnVsbD1aLmNyZWF0ZSx0LmFueT1VLmNyZWF0ZSx0LnVua25vd249Ri5jcmVhdGUsdC5uZXZlcj1xLmNyZWF0ZSx0LnZvaWQ9SC5jcmVhdGUsdC5hcnJheT1WLmNyZWF0ZSx0Lm9iamVjdD0kLmNyZWF0ZSx0LnN0cmljdE9iamVjdD0kLnN0cmljdENyZWF0ZSx0LnVuaW9uPVcuY3JlYXRlLHQuZGlzY3JpbWluYXRlZFVuaW9uPUsuY3JlYXRlLHQuaW50ZXJzZWN0aW9uPVguY3JlYXRlLHQudHVwbGU9Ry5jcmVhdGUsdC5yZWNvcmQ9US5jcmVhdGUsdC5tYXA9Si5jcmVhdGUsdC5zZXQ9ZWUuY3JlYXRlLHQuZnVuY3Rpb249ZXQuY3JlYXRlLHQubGF6eT1lbi5jcmVhdGUsdC5saXRlcmFsPWVyLmNyZWF0ZSx0LmVudW09ZWEuY3JlYXRlLHQubmF0aXZlRW51bT1laS5jcmVhdGUsdC5wcm9taXNlPWVsLmNyZWF0ZTtsZXQgZXc9ZXMuY3JlYXRlO3QuZWZmZWN0PWV3LHQudHJhbnNmb3JtZXI9ZXcsdC5vcHRpb25hbD1lYy5jcmVhdGUsdC5udWxsYWJsZT1ldS5jcmVhdGUsdC5wcmVwcm9jZXNzPWVzLmNyZWF0ZVdpdGhQcmVwcm9jZXNzLHQucGlwZWxpbmU9ZW0uY3JlYXRlLHQub3N0cmluZz0oKT0+ZWIoKS5vcHRpb25hbCgpLHQub251bWJlcj0oKT0+ZUEoKS5vcHRpb25hbCgpLHQub2Jvb2xlYW49KCk9PmV4KCkub3B0aW9uYWwoKSx0LmNvZXJjZT17c3RyaW5nOmU9PlQuY3JlYXRlKHsuLi5lLGNvZXJjZTohMH0pLG51bWJlcjplPT56LmNyZWF0ZSh7Li4uZSxjb2VyY2U6ITB9KSxib29sZWFuOmU9PkwuY3JlYXRlKHsuLi5lLGNvZXJjZTohMH0pLGJpZ2ludDplPT5ELmNyZWF0ZSh7Li4uZSxjb2VyY2U6ITB9KSxkYXRlOmU9Pk4uY3JlYXRlKHsuLi5lLGNvZXJjZTohMH0pfSx0Lk5FVkVSPWMuSU5WQUxJRH19LG49e307ZnVuY3Rpb24gcihlKXt2YXIgbz1uW2VdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgYT1uW2VdPXtleHBvcnRzOnt9fSxpPSEwO3RyeXt0W2VdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLHIpLGk9ITF9ZmluYWxseXtpJiZkZWxldGUgbltlXX1yZXR1cm4gYS5leHBvcnRzfXIuYWI9XCIvL1wiLGUuZXhwb3J0cz1yKDYyOSl9KSgpfX0sX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fPXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oZSl7dmFyIHQ9X193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV09e2lkOmUsZXhwb3J0czp7fX07cmV0dXJuIF9fd2VicGFja19tb2R1bGVzX19bZV0obixuLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyksbi5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZCh0LHthOnR9KSx0fSwoKCk9Pnt2YXIgZSx0PU9iamVjdC5nZXRQcm90b3R5cGVPZj9lPT5PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk6ZT0+ZS5fX3Byb3RvX187X193ZWJwYWNrX3JlcXVpcmVfXy50PWZ1bmN0aW9uKG4scil7aWYoMSZyJiYobj10aGlzKG4pKSw4JnJ8fFwib2JqZWN0XCI9PXR5cGVvZiBuJiZuJiYoNCZyJiZuLl9fZXNNb2R1bGV8fDE2JnImJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4udGhlbikpcmV0dXJuIG47dmFyIG89T2JqZWN0LmNyZWF0ZShudWxsKTtfX3dlYnBhY2tfcmVxdWlyZV9fLnIobyk7dmFyIGE9e307ZT1lfHxbbnVsbCx0KHt9KSx0KFtdKSx0KHQpXTtmb3IodmFyIGk9MiZyJiZuO1wib2JqZWN0XCI9PXR5cGVvZiBpJiYhfmUuaW5kZXhPZihpKTtpPXQoaSkpT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaSkuZm9yRWFjaChlPT57YVtlXT0oKT0+bltlXX0pO3JldHVybiBhLmRlZmF1bHQ9KCk9Pm4sX193ZWJwYWNrX3JlcXVpcmVfXy5kKG8sYSksb319KSgpLF9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LG4pJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0sX193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxfX3dlYnBhY2tfcmVxdWlyZV9fLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LF9fd2VicGFja19yZXF1aXJlX18ubmM9dm9pZCAwO3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9O2Zvcih2YXIgX193ZWJwYWNrX2lfXyBpbigoKT0+e1widXNlIHN0cmljdFwiO19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKSxfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7ZGlzcGF0Y2hlcjooKT0+ZHIscmVuZGVyQXBwRGV2T3ZlcmxheTooKT0+ZGQsRGV2T3ZlcmxheUNvbnRleHQ6KCk9PmRpLHJlbmRlclBhZ2VzRGV2T3ZlcmxheTooKT0+ZGYsdXNlRGV2T3ZlcmxheUNvbnRleHQ6KCk9PmRsfSk7dmFyIGUsdCxuLHIsbz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpLGE9X193ZWJwYWNrX3JlcXVpcmVfXy5uKG8pLGk9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCIpLGw9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGkpLHM9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vc3JjL2J1aWxkL3dlYnBhY2svbG9hZGVycy9kZXZ0b29sL2RldnRvb2wtc3R5bGUtaW5qZWN0LmpzXCIpLGM9X193ZWJwYWNrX3JlcXVpcmVfXy5uKHMpLHU9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiKSxkPV9fd2VicGFja19yZXF1aXJlX18ubih1KSxmPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIikscD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZiksaD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIiksbT1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oaCksZz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2dsb2JhbC5jc3NcIikseT17fTt5LnN0eWxlVGFnVHJhbnNmb3JtPW0oKSx5LnNldEF0dHJpYnV0ZXM9ZCgpLHkuaW5zZXJ0PWMoKSx5LmRvbUFQST1sKCkseS5pbnNlcnRTdHlsZUVsZW1lbnQ9cCgpLGEoKShnLloseSksZy5aJiZnLloubG9jYWxzJiZnLloubG9jYWxzO3ZhciB2PV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b2FzdC9zdHlsZS5jc3NcIiksYj17fTtiLnN0eWxlVGFnVHJhbnNmb3JtPW0oKSxiLnNldEF0dHJpYnV0ZXM9ZCgpLGIuaW5zZXJ0PWMoKSxiLmRvbUFQST1sKCksYi5pbnNlcnRTdHlsZUVsZW1lbnQ9cCgpLGEoKSh2LlosYiksdi5aJiZ2LloubG9jYWxzJiZ2LloubG9jYWxzO3ZhciBBPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LXJ1bnRpbWUuanNcIikseD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2NvbXBpbGVyLXJ1bnRpbWUuanNcIiksdz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCIpLEM9X193ZWJwYWNrX3JlcXVpcmVfXy50KHcsMiksXz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3N0YWNrdHJhY2UtcGFyc2VyL3N0YWNrLXRyYWNlLXBhcnNlci5janMuanNcIiksaz0vXFwvX25leHQoXFwvc3RhdGljXFwvLispLyxFPVN5bWJvbC5mb3IoXCJuZXh0LmNvbnNvbGUuZXJyb3IuZGlnZXN0XCIpO2Z1bmN0aW9uIGooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFMoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ooZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gTyhlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9dmFyIEI9e1NtYWxsOjE2LzE0LE1lZGl1bToxLExhcmdlOjE2LzE4fSxQPVwic3RhdGljLWluZGljYXRvclwiLEk9XCJidWlsZC1va1wiLFQ9XCJidWlsZC1lcnJvclwiLHo9XCJiZWZvcmUtZmFzdC1yZWZyZXNoXCIsRD1cImZhc3QtcmVmcmVzaFwiLEw9XCJ2ZXJzaW9uLWluZm9cIixOPVwidW5oYW5kbGVkLWVycm9yXCIsUj1cInVuaGFuZGxlZC1yZWplY3Rpb25cIixNPVwiZGVidWctaW5mb1wiLFo9XCJkZXYtaW5kaWNhdG9yXCIsVT1cImRldi1pbmRpY2F0b3ItZGlzYWJsZVwiLEY9XCJlcnJvci1vdmVybGF5LW9wZW5cIixxPVwiZXJyb3Itb3ZlcmxheS1jbG9zZVwiLEg9XCJlcnJvci1vdmVybGF5LXRvZ2dsZVwiLFY9XCJidWlsZGluZy1pbmRpY2F0b3Itc2hvd1wiLCQ9XCJidWlsZGluZy1pbmRpY2F0b3ItaGlkZVwiLFc9XCJyZW5kZXJpbmctaW5kaWNhdG9yLXNob3dcIixZPVwicmVuZGVyaW5nLWluZGljYXRvci1oaWRlXCIsSz1cImRldnRvb2xzLXBvc2l0aW9uXCIsWD1cImRldnRvb2xzLXBhbmVsLXBvc2l0aW9uXCIsRz1cImRldnRvb2xzLXNjYWxlXCIsUT1cImRldnRvb2xzLWNvbmZpZ1wiLEo9XCJfX25leHRqcy1kZXYtdG9vbHMtcGFuZWwtcG9zaXRpb25cIixlZT1cIl9fbmV4dGpzLWRldi10b29scy1wYW5lbC1zaXplXCIsZXQ9XCJfX25leHRqcy1kZXYtdG9vbHMtc2hhcmVkLXBhbmVsLXNpemVcIixlbj1cIl9fbmV4dGpzLWRldi10b29scy1zaGFyZWQtcGFuZWwtbG9jYXRpb25cIixlcj1cInNlZ21lbnQtZXhwbG9yZXItdXBkYXRlLXJvdXRlLXN0YXRlXCIsZW89L1xccysoYXQgT2JqZWN0XFwucmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lLiopfChyZWFjdF9zdGFja19ib3R0b21fZnJhbWVALiopfChhdCByZWFjdC1zdGFjay1ib3R0b20tZnJhbWUuKil8KHJlYWN0LXN0YWNrLWJvdHRvbS1mcmFtZUAuKikvO2Z1bmN0aW9uIGVhKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplLnNwbGl0KGVvKVswXX12YXIgZWk9KG51bGw9PShlPXByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfSU5ESUNBVE9SKT92b2lkIDA6ZS50b1N0cmluZygpKT09PVwiZmFsc2VcIixlbD1udWxsIT0odD1wcm9jZXNzLmVudi5fX05FWFRfREVWX0lORElDQVRPUl9QT1NJVElPTik/dDpcImJvdHRvbS1sZWZ0XCIsZXM9e25leHRJZDoxLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6W10sbm90Rm91bmQ6ITEscmVuZGVyaW5nSW5kaWNhdG9yOiExLHN0YXRpY0luZGljYXRvcjohMSxzaG93SW5kaWNhdG9yOiExLGRpc2FibGVEZXZJbmRpY2F0b3I6ITEsYnVpbGRpbmdJbmRpY2F0b3I6ITEscmVmcmVzaFN0YXRlOnt0eXBlOlwiaWRsZVwifSx2ZXJzaW9uSW5mbzp7aW5zdGFsbGVkOlwiMC4wLjBcIixzdGFsZW5lc3M6XCJ1bmtub3duXCJ9LGRlYnVnSW5mbzp7ZGV2dG9vbHNGcm9udGVuZFVybDp2b2lkIDB9LGRldlRvb2xzUG9zaXRpb246ZWwsZGV2VG9vbHNQYW5lbFBvc2l0aW9uOmooe30sZW4sZWwpLGRldlRvb2xzUGFuZWxTaXplOnt9LHNjYWxlOkIuTWVkaXVtLHBhZ2U6XCJcIix0aGVtZTpcInN5c3RlbVwiLGhpZGVTaG9ydGN1dDpudWxsfSxlYz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9jbGllbnQuanNcIik7ZnVuY3Rpb24gZXUoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89ZS5sZW5ndGgtMTtyZXR1cm4oZS5zbGljZSgwLG8pLnJlZHVjZShmdW5jdGlvbihlLHQscil7cmV0dXJuIGUrdCtuW3JdfSxcIlwiKStlW29dKS5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKS5yZXBsYWNlKC9cXHMqKFs6Oyx7fV0pXFxzKi9nLFwiJDFcIikucmVwbGFjZSgvOyt9L2csXCJ9XCIpLnRyaW0oKX1mdW5jdGlvbiBlZCgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gICAgICAvKiBsYXRpbi1leHQgKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QnO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1sYXRpbi1leHQud29mZjIpIGZvcm1hdCgnd29mZjInKTtcXG4gICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LFxcbiAgICAgICAgICBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLFxcbiAgICAgICAgICBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsXFxuICAgICAgICAgIFUrQTcyMC1BN0ZGO1xcbiAgICAgIH1cXG4gICAgICAvKiBsYXRpbi1leHQgKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QgTW9ubyc7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwIDYwMDtcXG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcXG4gICAgICAgIHNyYzogdXJsKC9fX25leHRqc19mb250L2dlaXN0LW1vbm8tbGF0aW4tZXh0LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XFxuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENyxcXG4gICAgICAgICAgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RixcXG4gICAgICAgICAgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLFxcbiAgICAgICAgICBVK0E3MjAtQTdGRjtcXG4gICAgICB9XFxuICAgICAgLyogbGF0aW4gKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QnO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1sYXRpbi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xcbiAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsXFxuICAgICAgICAgIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsXFxuICAgICAgICAgIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxuICAgICAgfVxcbiAgICAgIC8qIGxhdGluICovXFxuICAgICAgQGZvbnQtZmFjZSB7XFxuICAgICAgICBmb250LWZhbWlseTogJ19fbmV4dGpzLUdlaXN0IE1vbm8nO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1tb25vLWxhdGluLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XFxuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNixcXG4gICAgICAgICAgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMixcXG4gICAgICAgICAgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG4gICAgICB9XFxuICAgIFwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBlZD1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciBlZj1mdW5jdGlvbigpe3ZhciBlLHQ9KDAseC5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPVtdLHRbMF09ZSk6ZT10WzBdLCgwLHcudXNlSW5zZXJ0aW9uRWZmZWN0KShlcCxlKSxudWxsfTtmdW5jdGlvbiBlcCgpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtyZXR1cm4gZS50ZXh0Q29udGVudD1ldShlZCgpKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChlKX19dmFyIGVoPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2luZGV4LmpzXCIpO2Z1bmN0aW9uIGVtKGUpe3ZhciB0LG49KDAseC5jKSgzKSxyPWUuY2hpbGRyZW4sbz1kbCgpLnNoYWRvd1Jvb3Q7cmV0dXJuIG5bMF0hPT1yfHxuWzFdIT09bz8odD0oMCxlaC5jcmVhdGVQb3J0YWwpKHIsbyksblswXT1yLG5bMV09byxuWzJdPXQpOnQ9blsyXSx0fWZ1bmN0aW9uIGVnKGUpe2lmKFwiXCI9PT1lLnRyaW0oKSl0aHJvdyBFcnJvcihcImNhbid0IGRlY29kZSBlbXB0eSBoZXhcIik7dmFyIHQ9cGFyc2VJbnQoZSwxNik7aWYoaXNOYU4odCkpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGhleDogYFwiLmNvbmNhdChlLFwiYFwiKSk7cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHQpfXZhciBleT0vXl9fVFVSQk9QQUNLX18oW2EtekEtWjAtOV8kXSspX18kLyxldj0vaHR0cHM/OlxcL1xcL1teXFxzLyQuPyNdLlteXFxzKSdcIl0qL2ksZWI9bmV3IFJlZ0V4cChcIihcIi5jb25jYXQoL19fVFVSQk9QQUNLX19bYS16QS1aMC05XyRdK19fL2cuc291cmNlLFwifFxcXFxzKylcIikpLGVBPWZ1bmN0aW9uKGUpe3ZhciB0LG49KDAseC5jKSg3KSxyPWUudGV4dCxvPWUubWF0Y2hlcjtpZihuWzBdIT09b3x8blsxXSE9PXIpe3ZhciBhLGksbD1yLnNwbGl0KGViKTtuWzNdIT09bz8oaT1mdW5jdGlvbihlLHQpe2lmKGV2LnRlc3QoZSkpe3ZhciBuPWV2LmV4ZWMoZSlbMF07cmV0dXJuXCJmdW5jdGlvblwiIT10eXBlb2Ygb3x8byhuKT8oMCxBLmpzeCkody5GcmFnbWVudCx7Y2hpbGRyZW46KDAsQS5qc3gpKFwiYVwiLHtocmVmOm4sdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwiLGNoaWxkcmVuOmV9KX0sXCJsaW5rLVwiLmNvbmNhdCh0KSk6ZX10cnl7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChleSk7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuPXRbMV0scj1cIlwiLG89MCxhPVwiXCIsaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbD1uW2ldO2lmKDA9PT1vKVwiX1wiPT09bD9vPTE6XCIkXCI9PT1sP289MjpyKz1sO2Vsc2UgaWYoMT09PW8pXCJfXCI9PT1sPyhyKz1cIiBcIixvPTApOlwiJFwiPT09bD8ocis9XCJfXCIsbz0yKToocis9bCxvPTApO2Vsc2UgaWYoMj09PW8paWYoMj09PWEubGVuZ3RoJiYocis9ZWcoYSksYT1cIlwiKSxcIl9cIj09PWwpe2lmKFwiXCIhPT1hKXRocm93IEVycm9yKFwiaW52YWxpZCBoZXg6IGBcIi5jb25jYXQoYSxcImBcIikpO289M31lbHNlIGlmKFwiJFwiPT09bCl7aWYoXCJcIiE9PWEpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGhleDogYFwiLmNvbmNhdChhLFwiYFwiKSk7bz0wfWVsc2UgYSs9bDtlbHNlIGlmKDM9PT1vKWlmKFwiX1wiPT09bCl0aHJvdyBFcnJvcihcImludmFsaWQgaGV4OiBgXCIuY29uY2F0KGErbCxcImBcIikpO2Vsc2VcIiRcIj09PWw/KHIrPWVnKGEpLGE9XCJcIixvPTApOmErPWx9cmV0dXJuIHJ9KGUpO2lmKHIhPT1lKXJldHVybigwLEEuanN4cykoXCJpXCIse2NoaWxkcmVuOltcIntcIixyLFwifVwiXX0sXCJpZGVudC1cIi5jb25jYXQodCkpfWNhdGNoKG4pe3JldHVybigwLEEuanN4cykoXCJpXCIse2NoaWxkcmVuOltcIntcIixlLFwiIChkZWNvZGluZyBmYWlsZWQ6IFwiLFwiXCIrbixcIilcIixcIn1cIl19LFwiaWRlbnQtXCIuY29uY2F0KHQpKX1yZXR1cm4oMCxBLmpzeCkody5GcmFnbWVudCx7Y2hpbGRyZW46ZX0sXCJ0ZXh0LVwiLmNvbmNhdCh0KSl9LG5bM109byxuWzRdPWkpOmk9bls0XSxhPWwubWFwKGkpLG5bMF09byxuWzFdPXIsblsyXT1hfWVsc2UgYT1uWzJdO3JldHVybiBuWzVdIT09YT8odD0oMCxBLmpzeCkoQS5GcmFnbWVudCx7Y2hpbGRyZW46YX0pLG5bNV09YSxuWzZdPXQpOnQ9bls2XSx0fSxleD1bL153ZWJwYWNrLWludGVybmFsOlxcL1xcL1xcLyhcXChbXFx3LV0rXFwpXFwvKT8vLC9eKHdlYnBhY2s6XFwvXFwvXFwvfHdlYnBhY2s6XFwvXFwvKF9OX0VcXC8pPykoXFwoW1xcdy1dK1xcKVxcLyk/L107ZnVuY3Rpb24gZXcoZSl7dmFyIHQ9ITAsbj0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBvLGE9ZXhbU3ltYm9sLml0ZXJhdG9yXSgpOyEodD0obz1hLm5leHQoKSkuZG9uZSk7dD0hMCl7dmFyIGk9by52YWx1ZTtpZihpLnRlc3QoZSkpcmV0dXJuITA7ZT1lLnJlcGxhY2UoaSxcIlwiKX19Y2F0Y2goZSl7bj0hMCxyPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09YS5yZXR1cm58fGEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fXJldHVybiExfWZ1bmN0aW9uIGVDKGUpe3ZhciB0PSEwLG49ITEscj12b2lkIDA7dHJ5e2Zvcih2YXIgbyxhPWV4W1N5bWJvbC5pdGVyYXRvcl0oKTshKHQ9KG89YS5uZXh0KCkpLmRvbmUpO3Q9ITApe3ZhciBpPW8udmFsdWU7ZT1lLnJlcGxhY2UoaSxcIlwiKX19Y2F0Y2goZSl7bj0hMCxyPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09YS5yZXR1cm58fGEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fXJldHVybiBlfWZ1bmN0aW9uIGVfKGUsdCxuLHIsbyxhLGkpe3RyeXt2YXIgbD1lW2FdKGkpLHM9bC52YWx1ZX1jYXRjaChlKXtuKGUpO3JldHVybn1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGVrKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGkoZSl7ZV8oYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7ZV8oYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX19ZnVuY3Rpb24gZUUoZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fWZ1bmN0aW9uIGVqKGUsdCl7dmFyIG47cmV0dXJuXCJmaWxlOi8vXCI9PT1lLmZpbGV8fChudWxsPT0obj1lLmZpbGUpP3ZvaWQgMDpuLm1hdGNoKC9odHRwcz86XFwvXFwvLykpP1Byb21pc2UucmVzb2x2ZSh7ZXJyb3I6ITEscmVhc29uOm51bGwsZXh0ZXJuYWw6ITAsc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGwsaWdub3JlZDohMH0pOmVrKGZ1bmN0aW9uKCl7dmFyIG4scjtyZXR1cm4gZUUodGhpcyxmdW5jdGlvbihvKXtpZihcInJlamVjdGVkXCI9PT10LnN0YXR1cyl0aHJvdyBFcnJvcih0LnJlYXNvbik7cmV0dXJuWzIse2Vycm9yOiExLHJlYXNvbjpudWxsLGV4dGVybmFsOiExLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6KHI9dC52YWx1ZSkub3JpZ2luYWxTdGFja0ZyYW1lLG9yaWdpbmFsQ29kZUZyYW1lOnIub3JpZ2luYWxDb2RlRnJhbWV8fG51bGwsaWdub3JlZDoobnVsbD09KG49ci5vcmlnaW5hbFN0YWNrRnJhbWUpP3ZvaWQgMDpuLmlnbm9yZWQpfHwhMX1dfSl9KSgpLmNhdGNoKGZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJue2Vycm9yOiEwLHJlYXNvbjpudWxsIT0ocj1udWxsIT0obj1udWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpP246bnVsbD09dD92b2lkIDA6dC50b1N0cmluZygpKT9yOlwiVW5rbm93biBFcnJvclwiLGV4dGVybmFsOiExLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6bnVsbCxvcmlnaW5hbENvZGVGcmFtZTpudWxsLGlnbm9yZWQ6ITF9fSl9ZnVuY3Rpb24gZVMoZSx0LG4pe3JldHVybiBlayhmdW5jdGlvbigpe3ZhciByLG8sYSxpO3JldHVybiBlRSh0aGlzLGZ1bmN0aW9uKGwpe3N3aXRjaChsLmxhYmVsKXtjYXNlIDA6cj17ZnJhbWVzOmUsaXNTZXJ2ZXI6XCJzZXJ2ZXJcIj09PXQsaXNFZGdlU2VydmVyOlwiZWRnZS1zZXJ2ZXJcIj09PXQsaXNBcHBEaXJlY3Rvcnk6bn0sbz12b2lkIDAsYT12b2lkIDAsbC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbC50cnlzLnB1c2goWzEsMywsNF0pLFs0LGZldGNoKFwiL19fbmV4dGpzX29yaWdpbmFsLXN0YWNrLWZyYW1lc1wiLHttZXRob2Q6XCJQT1NUXCIsYm9keTpKU09OLnN0cmluZ2lmeShyKX0pXTtjYXNlIDI6cmV0dXJuIG89bC5zZW50KCksWzMsNF07Y2FzZSAzOnJldHVybiBhPWwuc2VudCgpK1wiXCIsWzMsNF07Y2FzZSA0OmlmKCEobyYmby5vayYmMjA0IT09by5zdGF0dXMpKXJldHVyblszLDZdO3JldHVybls0LG8uanNvbigpXTtjYXNlIDU6cmV0dXJuIGk9bC5zZW50KCksWzIsUHJvbWlzZS5hbGwoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZWooZSxpW3RdKX0pKV07Y2FzZSA2OmlmKCFvKXJldHVyblszLDhdO3JldHVybls0LG8udGV4dCgpXTtjYXNlIDc6YT1sLnNlbnQoKSxsLmxhYmVsPTg7Y2FzZSA4OnJldHVyblsyLFByb21pc2UuYWxsKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlaihlLHtzdGF0dXM6XCJyZWplY3RlZFwiLHJlYXNvbjpcIkZhaWxlZCB0byBmZXRjaCB0aGUgb3JpZ2luYWwgc3RhY2sgZnJhbWVzIFwiLmNvbmNhdChhP1wiOiBcIi5jb25jYXQoYSk6XCJcIil9KX0pKV19fSl9KSgpfWZ1bmN0aW9uIGVPKGUpe2lmKCFlLmZpbGUpcmV0dXJuXCJcIjt2YXIgdD1ldyhlLmZpbGUpLG49XCJcIjtpZih0KW49ZUMoZS5maWxlKTtlbHNlIHRyeXt2YXIgcixvPW5ldyBVUkwoZS5maWxlKSxhPVwiXCI7KG51bGw9PShyPWdsb2JhbFRoaXMubG9jYXRpb24pP3ZvaWQgMDpyLm9yaWdpbikhPT1vLm9yaWdpbiYmKFwibnVsbFwiPT09by5vcmlnaW4/YSs9by5wcm90b2NvbDphKz1vLm9yaWdpbiksYSs9by5wYXRobmFtZSxuPWVDKGEpfWNhdGNoKHQpe249ZUMoZS5maWxlKX1yZXR1cm4hZXcoZS5maWxlKSYmbnVsbCE9ZS5saW5lMSYmbiYmXCI8YW5vbnltb3VzPlwiIT09ZS5maWxlJiYobnVsbCE9ZS5jb2x1bW4xP24rPVwiIChcIi5jb25jYXQoZS5saW5lMSxcIjpcIikuY29uY2F0KGUuY29sdW1uMSxcIilcIik6bis9XCIgKFwiLmNvbmNhdChlLmxpbmUxLFwiKVwiKSksbn1mdW5jdGlvbiBlQihlKXt2YXIgdCxuLHI9KDAseC5jKSg2KTtyWzBdIT09ZT8odD12b2lkIDA9PT1lP3t9OmUsclswXT1lLHJbMV09dCk6dD1yWzFdO3ZhciBvPXQuZmlsZSxhPXQubGluZTEsaT10LmNvbHVtbjE7cmV0dXJuIHJbMl0hPT1pfHxyWzNdIT09b3x8cls0XSE9PWE/KG49ZnVuY3Rpb24oKXtpZihudWxsIT1vJiZudWxsIT1hJiZudWxsIT1pKXt2YXIgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2UuYXBwZW5kKFwiZmlsZVwiLG8pLGUuYXBwZW5kKFwibGluZTFcIixTdHJpbmcoYSkpLGUuYXBwZW5kKFwiY29sdW1uMVwiLFN0cmluZyhpKSksc2VsZi5mZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/XCIpLmNvbmNhdChlLnRvU3RyaW5nKCkpKS50aGVuKGVQLGZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBvcGVuIGZpbGUgXCInLmNvbmNhdChvLFwiIChcIikuY29uY2F0KGEsXCI6XCIpLmNvbmNhdChpLCcpXCIgaW4geW91ciBlZGl0b3IuIENhdXNlOicpLGUpfSl9fSxyWzJdPWksclszXT1vLHJbNF09YSxyWzVdPW4pOm49cls1XSxufWZ1bmN0aW9uIGVQKCl7fWZ1bmN0aW9uIGVJKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBlVChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gZXooZSl7dmFyIHQsbixyPSgwLHguYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixkOlwiTTExLjUgOS43NVYxMS4yNUMxMS41IDExLjM4ODEgMTEuMzg4MSAxMS41IDExLjI1IDExLjVINC43NUM0LjYxMTkzIDExLjUgNC41IDExLjM4ODEgNC41IDExLjI1TDQuNSA0Ljc1QzQuNSA0LjYxMTkzIDQuNjExOTMgNC41IDQuNzUgNC41SDYuMjVIN1YzSDYuMjVINC43NUMzLjc4MzUgMyAzIDMuNzgzNSAzIDQuNzVWMTEuMjVDMyAxMi4yMTY1IDMuNzgzNSAxMyA0Ljc1IDEzSDExLjI1QzEyLjIxNjUgMTMgMTMgMTIuMjE2NSAxMyAxMS4yNVY5Ljc1VjlIMTEuNVY5Ljc1Wk04LjUgM0g5LjI1SDEyLjI0OTVDMTIuNjYzNyAzIDEyLjk5OTUgMy4zMzU3OSAxMi45OTk1IDMuNzVWNi43NVY3LjVIMTEuNDk5NVY2Ljc1VjUuNTYwNjZMOC41MzAzMyA4LjUyOTc4TDggOS4wNjAxMUw2LjkzOTM0IDcuOTk5NDVMNy40Njk2NyA3LjQ2OTEyTDEwLjQzODggNC41SDkuMjVIOC41VjNaXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxBLmpzeCkoXCJzdmdcIixlVChlSSh7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwifSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiBlRChlKXt2YXIgdCxuLHI9KDAseC5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk04LjU1ODQ2IDJINy40NDE0OEwxLjg4OTc1IDEzLjVIMTQuMTEwMkw4LjU1ODQ2IDJaTTkuOTA5MjkgMS4zNDc4OEM5LjY1OTAyIDAuODI5NDU2IDkuMTM0MTMgMC41IDguNTU4NDYgMC41SDcuNDQxNDhDNi44NjU4MSAwLjUgNi4zNDA5MiAwLjgyOTQ1NCA2LjA5MDY1IDEuMzQ3ODdMMC4xOTI2MDggMTMuNTY1M0MtMC4xMjc5NDMgMTQuMjI5MyAwLjM1NTgzNSAxNSAxLjA5MzE2IDE1SDE0LjkwNjhDMTUuNjQ0MSAxNSAxNi4xMjc5IDE0LjIyOTMgMTUuODA3MyAxMy41NjUzTDkuOTA5MjkgMS4zNDc4OFpNOC43NDk5NyA0Ljc1VjUuNVY4VjguNzVINy4yNDk5N1Y4VjUuNVY0Ljc1SDguNzQ5OTdaTTcuOTk5OTcgMTJDOC41NTIyNiAxMiA4Ljk5OTk3IDExLjU1MjMgOC45OTk5NyAxMUM4Ljk5OTk3IDEwLjQ0NzcgOC41NTIyNiAxMCA3Ljk5OTk3IDEwQzcuNDQ3NjkgMTAgNi45OTk5NyAxMC40NDc3IDYuOTk5OTcgMTFDNi45OTk5NyAxMS41NTIzIDcuNDQ3NjkgMTIgNy45OTk5NyAxMlpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxBLmpzeCkoXCJzdmdcIixlVChlSSh7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGhlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCItNCAtNCAyNCAyNFwiLHdpZHRoOlwiMTZcIn0sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gZUwoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAseC5jKSg2KSxzPWUubGFuZztpZighcylyZXR1cm4gbFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KShlWix7fSksbFswXT10KTp0PWxbMF0sdDtzd2l0Y2gocy50b0xvd2VyQ2FzZSgpKXtjYXNlXCJqc3hcIjpjYXNlXCJ0c3hcIjpyZXR1cm4gbFsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLEEuanN4KShlVSx7fSksbFsxXT1uKTpuPWxbMV0sbjtjYXNlXCJ0c1wiOmNhc2VcInR5cGVzY3JpcHRcIjpyZXR1cm4gbFsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLEEuanN4KShlTSx7fSksbFsyXT1yKTpyPWxbMl0scjtjYXNlXCJqYXZhc2NyaXB0XCI6Y2FzZVwianNcIjpjYXNlXCJtanNcIjpyZXR1cm4gbFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLEEuanN4KShlUix7fSksbFszXT1vKTpvPWxbM10sbztjYXNlXCJqc29uXCI6cmV0dXJuIGxbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxBLmpzeCkoZU4se30pLGxbNF09YSk6YT1sWzRdLGE7ZGVmYXVsdDpyZXR1cm4gbFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLEEuanN4KShlWix7fSksbFs1XT1pKTppPWxbNV0saX19ZnVuY3Rpb24gZU4oKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7Y2xpcFJ1bGU6XCJldmVub2RkXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDEzMjEuNDUgMTMzMy4zM1wiLHdpZHRoOlwiMTZcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMjIxLjM3IDYxOC40NGg3NTcuOTRWNDA1LjE1SDc1NS4xNGMtMjMuNSAwLTU2LjMyLTEyLjc0LTcxLjgyLTI4LjI0LTE1LjUtMTUuNS0yNS00My40Ny0yNS02Ni45N1Y4Mi44OUg4OC4zOWMtMS45OSAwLTMuNDkgMS00LjQ5IDItMS41IDEtMiAyLjUtMiA0LjV2MTE1NS4wNGMwIDEuNSAxIDMuNSAyIDQuNSAxIDEuNDkgMyAxLjk5IDQuNDkgMS45OUg5NzIuOGMyIDAgMS44OS0uOTkgMi44OS0xLjk5IDEuNS0xIDMuNjEtMyAzLjYxLTQuNXYtMTIxLjA5SDIyMS4zNmMtNDQuOTYgMC04Mi0zNi45LTgyLTgxLjk5VjcwMC40NGMwLTQ1LjEgMzYuOS04MiA4Mi04MnptMTI2LjUxIDExNy40N2g3NS4yNHYxNDYuNjFjMCAzMC43OS0yLjQ0IDU0LjIzLTcuMzMgNzAuMzEtNC45MiAxNi4wMy0xNC44IDI5LjY3LTI5LjY1IDQwLjg1LTE0Ljg2IDExLjEyLTMzLjkxIDE2LjcyLTU3LjA1IDE2LjcyLTI0LjUzIDAtNDMuNTEtMy43MS01Ni45NC0xMS4wNi0xMy41LTcuMzYtMjMuODktMTguMS0zMS4yMy0zMi4zLTcuMzUtMTQuMTQtMTEuNjktMzEuNjctMTIuOTktNTIuNTNsNzEuNS0xMC44MWMuMTEgMTEuODEgMS4wNyAyMC42MSAyLjgxIDI2LjMzIDEuNzYgNS43OCA0Ljc1IDEwLjM3IDkgMTMuOTUgMi44NyAyLjMzIDYuOTQgMy40NiAxMi4yNSAzLjQ2IDguNCAwIDE0LjU4LTMuNDYgMTguNTMtMTAuMzcgMy45LTYuOTIgNS44Ny0xOC42IDUuODctMzVWNzM1Ljkyem0xMTIuNzcgMTgwLjY3bDcxLjE3LTQuOTdjMS41NCAxMi44MSA0LjY5IDIyLjYyIDkuNDQgMjkuMjggNy43NCAxMC44OCAxOC43NCAxNi4zNCAzMy4wOSAxNi4zNCAxMC42OCAwIDE4LjkzLTIuNzYgMjQuNjgtOC4zNiA1LjgxLTUuNTggOC43LTEyLjA3IDguNy0xOS40MSAwLTYuOTctMi43MS0xMy4yNi04LjItMTguNzktNS40Ny01LjUzLTE4LjIzLTEwLjY4LTM4LjI4LTE1LjY1LTMyLjg5LTguMTctNTYuMjctMTkuMS03MC4yNi0zMi43NC0xNC4xMi0xMy41Ny0yMS4xOC0zMC45Mi0yMS4xOC01Mi4wMyAwLTEzLjgzIDMuNjEtMjYuODkgMTAuODUtMzkuMjEgNy4yMi0xMi4zOCAxOC4wNy0yMi4wNiAzMi41OS0yOS4wOSAxNC41Mi03LjA0IDM0LjQtMTAuNTYgNTkuNjUtMTAuNTYgMzEgMCA1NC42MiA2LjQxIDcwLjg4IDE5LjI5IDE2LjI4IDEyLjgxIDI1LjkyIDMzLjI0IDI5LjA0IDYxLjI3bC03MC41IDQuNjVjLTEuODctMTIuMjUtNS44MS0yMS4xNy0xMS44MS0yNi43LTYuMDUtNS42LTE0LjM1LTguMzYtMjQuOS04LjM2LTguNzEgMC0xNS4zMSAyLjA3LTE5LjczIDYuMTYtNC40IDQuMDktNi41OSA5LjEyLTYuNTkgMTUuMDIgMCA0LjI3IDEuODEgOC4xMSA1LjM3IDExLjU3IDMuNDUgMy41OSAxMS44IDYuODUgMjUuMDIgOS45MyAzMi43NSA3Ljg2IDU2LjIgMTUuODQgNzAuMzEgMjMuODcgMTQuMTggOC4wNSAyNC41MiAxNy45OCAzMC45NiAyOS45MiA2LjQ0IDExLjg4IDkuNjYgMjUuMiA5LjY2IDM5Ljk2IDAgMTcuMjktNC4zIDMzLjI0LTEyLjg4IDQ3Ljg5LTguNjMgMTQuNTgtMjAuNjEgMjUuNy0zNi4wOCAzMy4yNC0xNS40MSA3LjU0LTM0Ljg1IDExLjMxLTU4LjMzIDExLjMxLTQxLjI0IDAtNjkuODEtOC44Ni04NS42OC0yNi41Mi0xNS44OC0xNy42NS0yNC44NS00MC4wOS0yNi45Ni02Ny4zem0yNDguNzQtNDUuNWMwLTQ0LjA1IDExLjAyLTc4LjM2IDMzLjA5LTEwMi44NyAyMi4wOS0yNC41NyA1Mi44Mi0zNi44MiA5Mi4yNC0zNi44MiA0MC4zOCAwIDcxLjUgMTIuMDcgOTMuMzQgMzYuMTMgMjEuODYgMjQuMTMgMzIuNzcgNTcuOTQgMzIuNzcgMTAxLjM3IDAgMzEuNTQtNC43NSA1Ny4zNi0xNC4zIDc3LjU0LTkuNTQgMjAuMTgtMjMuMzcgMzUuODktNDEuNCA0Ny4xMy0xOC4wNyAxMS4yNC00MC41NSAxNi44NC02Ny40OCAxNi44NC0yNy4zMyAwLTQ5Ljk5LTQuODMtNjcuOTQtMTQuNTItMTcuOTItOS43NC0zMi40OS0yNS4wNy00My42Mi00Ni4wNi0xMS4xMy0yMC45Mi0xNi43Mi00Ny4xOS0xNi43Mi03OC43NHptNzQuODkuMTljMCAyNy4yMSA0LjU3IDQ2LjgxIDEzLjY4IDU4LjY4IDkuMTMgMTEuODggMjEuNTcgMTcuODUgMzcuMjYgMTcuODUgMTYuMSAwIDI4LjY1LTUuODQgMzcuNDUtMTcuNDcgOC44Ny0xMS42OCAxMy4yOC0zMi41NCAxMy4yOC02Mi43NyAwLTI1LjM5LTQuNjMtNDMuOTItMTMuODQtNTUuNjEtOS4yNi0xMS43Ni0yMS43NS0xNy42LTM3LjU2LTE3LjYtMTUuMTMgMC0yNy4zNCA1Ljk3LTM2LjQ5IDE3Ljg1LTkuMjEgMTEuODgtMTMuNzggMzEuNjEtMTMuNzggNTkuMDd6bTIwOS4wOC0xMzUuMzZoNjkuOTlsOTAuOTggMTQ5LjA1VjczNS45MWg3MC44M3YyNjkuOTZoLTcwLjgzbC05MC40OC0xNDguMjR2MTQ4LjI0aC03MC40OVY3MzUuOTF6bTY3LjcxLTExNy40N2gxNzguMzdjNDUuMSAwIDgyIDM3LjA0IDgyIDgydjM0MC45MWMwIDQ0Ljk2LTM3LjAzIDgxLjk5LTgyIDgxLjk5aC0xNzguMzd2MTQ3YzAgMTcuNS02Ljk5IDMyLjk5LTE4LjUgNDQuNS0xMS41IDExLjQ5LTI3IDE4LjUtNDQuNSAxOC41SDYyLjk3Yy0xNy41IDAtMzIuOTktNy00NC41LTE4LjUtMTEuNDktMTEuNS0xOC41LTI3LTE4LjUtNDQuNVY2My40OWMwLTE3LjUgNy0zMyAxOC41LTQ0LjVTNDUuOTcuNDkgNjIuOTcuNDlINzAwLjFjMS41LS41IDMtLjUgNC41LS41IDcgMCAxNCAzIDE5IDcuNDloMWMxIC41IDEuNSAxIDIuNSAybDMyNS40NiAzMjkuNDdjNS41IDUuNSA5LjUgMTMgOS41IDIxLjUgMCAyLjUtLjUgNC41LTEgN3YyNTAuOTh6TTczMi42MSAzMDMuNDdWOTYuOTlsMjMyLjQ4IDIzNS40N0g3NjEuNmMtNy45OSAwLTE0Ljk5LTMuNS0yMC41LTguNDktNC45OS01LTguNDktMTIuNS04LjQ5LTIwLjV6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIGVSKCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCA1MCA1MFwiLHdpZHRoOlwiMTZcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTSA0My4zMzU5MzggNCBMIDYuNjY3OTY5IDQgQyA1LjE5NTMxMyA0IDQgNS4xOTUzMTMgNCA2LjY2Nzk2OSBMIDQgNDMuMzMyMDMxIEMgNCA0NC44MDQ2ODggNS4xOTUzMTMgNDYgNi42Njc5NjkgNDYgTCA0My4zMzIwMzEgNDYgQyA0NC44MDQ2ODggNDYgNDYgNDQuODA0Njg4IDQ2IDQzLjMzNTkzOCBMIDQ2IDYuNjY3OTY5IEMgNDYgNS4xOTUzMTMgNDQuODA0Njg4IDQgNDMuMzM1OTM4IDQgWiBNIDI3IDM2LjE4MzU5NCBDIDI3IDQwLjE3OTY4OCAyNC42NTYyNSA0MiAyMS4yMzQzNzUgNDIgQyAxOC4xNDA2MjUgNDIgMTUuOTEwMTU2IDM5LjkyNTc4MSAxNSAzOCBMIDE4LjE0NDUzMSAzNi4wOTc2NTYgQyAxOC43NSAzNy4xNzE4NzUgMTkuNjcxODc1IDM4IDIxIDM4IEMgMjIuMjY5NTMxIDM4IDIzIDM3LjUwMzkwNiAyMyAzNS41NzQyMTkgTCAyMyAyMyBMIDI3IDIzIFogTSAzNS42NzU3ODEgNDIgQyAzMi4xMzI4MTMgNDIgMzAuMTIxMDk0IDQwLjIxNDg0NCAyOSAzOCBMIDMyIDM2IEMgMzIuODE2NDA2IDM3LjMzNTkzOCAzMy43MDcwMzEgMzguNjEzMjgxIDM1LjU4OTg0NCAzOC42MTMyODEgQyAzNy4xNzE4NzUgMzguNjEzMjgxIDM4IDM3LjgyNDIxOSAzOCAzNi43MzA0NjkgQyAzOCAzNS40MjU3ODEgMzcuMTQwNjI1IDM0Ljk2MDkzOCAzNS40MDIzNDQgMzQuMTk5MjE5IEwgMzQuNDQ5MjE5IDMzLjc4OTA2MyBDIDMxLjY5NTMxMyAzMi42MTcxODggMjkuODYzMjgxIDMxLjE0ODQzOCAyOS44NjMyODEgMjguMDM5MDYzIEMgMjkuODYzMjgxIDI1LjE3OTY4OCAzMi4wNDY4NzUgMjMgMzUuNDUzMTI1IDIzIEMgMzcuODc4OTA2IDIzIDM5LjYyMTA5NCAyMy44NDM3NSA0MC44Nzg5MDYgMjYuMDU0Njg4IEwgMzcuOTEwMTU2IDI3Ljk2NDg0NCBDIDM3LjI1MzkwNiAyNi43ODkwNjMgMzYuNTUwNzgxIDI2LjMyODEyNSAzNS40NTMxMjUgMjYuMzI4MTI1IEMgMzQuMzM1OTM4IDI2LjMyODEyNSAzMy42Mjg5MDYgMjcuMDM5MDYzIDMzLjYyODkwNiAyNy45NjQ4NDQgQyAzMy42Mjg5MDYgMjkuMTA5Mzc1IDM0LjMzNTkzOCAyOS41NzAzMTMgMzUuOTcyNjU2IDMwLjI4MTI1IEwgMzYuOTI1NzgxIDMwLjY5MTQwNiBDIDQwLjE3MTg3NSAzMi4wNzgxMjUgNDIgMzMuNDk2MDk0IDQyIDM2LjY4MzU5NCBDIDQyIDQwLjExNzE4OCAzOS4zMDA3ODEgNDIgMzUuNjc1NzgxIDQyIFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZU0oKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeHMpKFwic3ZnXCIse2ZpbGw6XCJub25lXCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDUxMiA1MTJcIix3aWR0aDpcIjE0XCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJyZWN0XCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixoZWlnaHQ6XCI1MTJcIixyeDpcIjUwXCIsd2lkdGg6XCI1MTJcIn0pLCgwLEEuanN4KShcInJlY3RcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGhlaWdodDpcIjUxMlwiLHJ4OlwiNTBcIix3aWR0aDpcIjUxMlwifSksKDAsQS5qc3gpKFwicGF0aFwiLHtjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwibTMxNi45MzkgNDA3LjQyNHY1MC4wNjFjOC4xMzggNC4xNzIgMTcuNzYzIDcuMyAyOC44NzUgOS4zODZzMjIuODIzIDMuMTI5IDM1LjEzNSAzLjEyOWMxMS45OTkgMCAyMy4zOTctMS4xNDcgMzQuMTk2LTMuNDQyIDEwLjc5OS0yLjI5NCAyMC4yNjgtNi4wNzUgMjguNDA2LTExLjM0MiA4LjEzOC01LjI2NiAxNC41ODEtMTIuMTUgMTkuMzI4LTIwLjY1czcuMTIxLTE5LjAwNyA3LjEyMS0zMS41MjJjMC05LjA3NC0xLjM1Ni0xNy4wMjYtNC4wNjktMjMuODU3cy02LjYyNS0xMi45MDYtMTEuNzM4LTE4LjIyNWMtNS4xMTItNS4zMTktMTEuMjQyLTEwLjA5MS0xOC4zODktMTQuMzE1cy0xNS4yMDctOC4yMTMtMjQuMTgtMTEuOTY3Yy02LjU3My0yLjcxMi0xMi40NjgtNS4zNDUtMTcuNjg1LTcuOS01LjIxNy0yLjU1Ni05LjY1MS01LjE2My0xMy4zMDMtNy44MjItMy42NTItMi42Ni02LjQ2OS01LjQ3Ni04LjQ1MS04LjQ0OC0xLjk4Mi0yLjk3My0yLjk3NC02LjMzNi0yLjk3NC0xMC4wOTEgMC0zLjQ0MS44ODctNi41NDQgMi42NjEtOS4zMDhzNC4yNzgtNS4xMzYgNy41MTItNy4xMThjMy4yMzUtMS45ODEgNy4xOTktMy41MiAxMS44OTQtNC42MTUgNC42OTYtMS4wOTUgOS45MTItMS42NDIgMTUuNjUxLTEuNjQyIDQuMTczIDAgOC41ODEuMzEzIDEzLjIyNC45MzggNC42NDMuNjI2IDkuMzEyIDEuNTkxIDE0LjAwOCAyLjg5NCA0LjY5NSAxLjMwNCA5LjI1OSAyLjk0NyAxMy42OTQgNC45MjggNC40MzQgMS45ODIgOC41MjkgNC4yNzYgMTIuMjg1IDYuODg0di00Ni43NzZjLTcuNjE2LTIuOTItMTUuOTM3LTUuMDg0LTI0Ljk2Mi02LjQ5MnMtMTkuMzgxLTIuMTEyLTMxLjA2Ni0yLjExMmMtMTEuODk1IDAtMjMuMTYzIDEuMjc4LTMzLjgwNSAzLjgzM3MtMjAuMDA2IDYuNTQ0LTI4LjA5MyAxMS45NjdjLTguMDg2IDUuNDI0LTE0LjQ3NiAxMi4zMzMtMTkuMTcxIDIwLjcyOS00LjY5NSA4LjM5NS03LjA0MyAxOC40MzMtNy4wNDMgMzAuMTE0IDAgMTQuOTE0IDQuMzA0IDI3LjYzOCAxMi45MTIgMzguMTcyIDguNjA3IDEwLjUzMyAyMS42NzUgMTkuNDUgMzkuMjA0IDI2Ljc1MSA2Ljg4NiAyLjgxNiAxMy4zMDMgNS41NzkgMTkuMjUgOC4yOTFzMTEuMDg2IDUuNTI4IDE1LjQxNSA4LjQ0OGM0LjMzIDIuOTIgNy43NDcgNi4xMDEgMTAuMjUyIDkuNTQzIDIuNTA0IDMuNDQxIDMuNzU2IDcuMzUyIDMuNzU2IDExLjczMyAwIDMuMjMzLS43ODMgNi4yMzEtMi4zNDggOC45OTVzLTMuOTM5IDUuMTYyLTcuMTIxIDcuMTk2LTcuMTQ3IDMuNjI0LTExLjg5NCA0Ljc3MWMtNC43NDggMS4xNDgtMTAuMzAzIDEuNzIxLTE2LjY2OCAxLjcyMS0xMC44NTEgMC0yMS41OTctMS45MDMtMzIuMjQtNS43MS0xMC42NDItMy44MDYtMjAuNTAyLTkuNTE2LTI5LjU3OS0xNy4xM3ptLTg0LjE1OS0xMjMuMzQyaDY0LjIydi00MS4wODJoLTE3OXY0MS4wODJoNjMuOTA2djE4Mi45MThoNTAuODc0elwiLGZpbGw6XCJ2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMClcIixmaWxsUnVsZTpcImV2ZW5vZGRcIn0pXX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZVooKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTE0LjUgN3Y3YTIuNSAyLjUgMCAwIDEtMi41IDIuNUg0QTIuNSAyLjUgMCAwIDEgMS41IDE0Vi41aDcuNTg2YTEgMSAwIDAgMSAuNzA3LjI5M2w0LjQxNCA0LjQxNGExIDEgMCAwIDEgLjI5My43MDdWN3pNMTMgN3Y3YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJoNXY1aDV6TTkuNSAyLjYyMVY1LjVoMi44NzlMOS41IDIuNjIxelwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBlVSgpe3ZhciBlLHQsbj0oMCx4LmMpKDIpO3JldHVybiBuWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwiZ1wiLHtjbGlwUGF0aDpcInVybCgjZmlsZV9yZWFjdF9jbGlwMF84NzJfMzE4MylcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNC41IDEuOTM3ODJDNC43MDEyOSAxLjgyMTYxIDQuOTk0NzIgMS43ODU4IDUuNDEzMTUgMS45MTA1M0M1LjgzMjk4IDIuMDM1NjcgNi4zMzEzOSAyLjMxMDczIDYuODc2MjcgMi43Mzk0OEM3LjAxMTM2IDIuODQ1NzggNy4xNDgwMyAyLjk2MDUyIDcuMjg1NzMgMy4wODMzMUM2Ljg2MjE3IDMuNTM0NDYgNi40NDIzOSA0LjA0MzU4IDYuMDM3NTIgNC42MDA5MkM1LjM1MjQzIDQuNjcyODggNC43MDE2NCA0Ljc4MTg2IDQuMDk5MTYgNC45MjMwOUM0LjA2MTY3IDQuNzQyNDQgNC4wMzA2NCA0LjU2NjcxIDQuMDA2MTIgNC4zOTY1NkMzLjkwNzI1IDMuNzEwMzEgMy45MTgyNSAzLjE0MTE0IDQuMDE5NzkgMi43MTQ5OUM0LjEyMDk5IDIuMjkwMjUgNC4yOTg3MSAyLjA1NDA0IDQuNSAxLjkzNzgyWk03LjQ5NDY2IDEuOTUzNjFDNy42NjIyNSAyLjA4NTQ4IDcuODMwOTIgMi4yMjgwNCA3Ljk5OTk5IDIuMzgwNjdDOC4xNjkwNiAyLjIyODA0IDguMzM3NzMgMi4wODU0OCA4LjUwNTMyIDEuOTUzNjFDOS4xMDkyMSAxLjQ3ODQyIDkuNzE5ODIgMS4xMjU0OSAxMC4zMDEyIDAuOTUyMjAyQzEwLjg4MzkgMC43Nzg0OTYgMTEuNDgzOCAwLjc3MzggMTIgMS4wNzE4QzEyLjUxNjEgMS4zNjk4IDEyLjgxMiAxLjg5MTY5IDEyLjk1MyAyLjQ4MzIyQzEzLjA5MzYgMy4wNzMzMyAxMy4wOTMyIDMuNzc4NTggMTIuOTgzNiA0LjUzOTE3QzEyLjk1MzIgNC43NTAyNCAxMi45MTQxIDQuOTY3NiAxMi44NjY1IDUuMTkwMzRDMTMuMDgzMiA1LjI2MDQ0IDEzLjI5MSA1LjMzNTI0IDEzLjQ4OSA1LjQxNDQ0QzE0LjIwMjUgNS42OTk4MyAxNC44MTM0IDYuMDUyMTcgMTUuMjU0MiA2LjQ2ODk5QzE1LjY5NiA2Ljg4NjggMTYgNy40MDQgMTYgOEMxNiA4LjU5NiAxNS42OTYgOS4xMTMxOSAxNS4yNTQyIDkuNTMxMDFDMTQuODEzNCA5Ljk0NzgzIDE0LjIwMjUgMTAuMzAwMiAxMy40ODkgMTAuNTg1NkMxMy4yOTEgMTAuNjY0OCAxMy4wODMyIDEwLjczOTYgMTIuODY2NSAxMC44MDk3QzEyLjkxNDEgMTEuMDMyNCAxMi45NTMyIDExLjI0OTggMTIuOTgzNyAxMS40NjA4QzEzLjA5MzIgMTIuMjIxNCAxMy4wOTM2IDEyLjkyNjcgMTIuOTUzIDEzLjUxNjhDMTIuODEyIDE0LjEwODMgMTIuNTE2MSAxNC42MzAyIDEyIDE0LjkyODJDMTEuNDgzOSAxNS4yMjYyIDEwLjg4MzkgMTUuMjIxNSAxMC4zMDEyIDE1LjA0NzhDOS43MTk4NCAxNC44NzQ1IDkuMTA5MjMgMTQuNTIxNiA4LjUwNTM0IDE0LjA0NjRDOC4zMzc3NSAxMy45MTQ1IDguMTY5MDYgMTMuNzcxOSA3Ljk5OTk5IDEzLjYxOTNDNy44MzA5MSAxMy43NzE5IDcuNjYyMjMgMTMuOTE0NSA3LjQ5NDY0IDE0LjA0NjRDNi44OTA3NSAxNC41MjE2IDYuMjgwMTQgMTQuODc0NSA1LjY5ODc5IDE1LjA0NzhDNS4xMTYwNSAxNS4yMjE1IDQuNTE2MTMgMTUuMjI2MiAzLjk5OTk4IDE0LjkyODJDMy40ODM4MyAxNC42MzAyIDMuMTg3OTQgMTQuMTA4MyAzLjA0NyAxMy41MTY4QzIuOTA2NCAxMi45MjY3IDIuOTA2NzQgMTIuMjIxNCAzLjAxNjMyIDExLjQ2MDhDMy4wNDY3MyAxMS4yNDk4IDMuMDg1ODYgMTEuMDMyNCAzLjEzMzUxIDEwLjgwOTdDMi45MTY3OSAxMC43Mzk1IDIuNzA5IDEwLjY2NDggMi41MTEgMTAuNTg1NkMxLjc5NzUyIDEwLjMwMDIgMS4xODY1OCA5Ljk0NzgzIDAuNzQ1ODMzIDkuNTMxMDFDMC4zMDQwMjggOS4xMTMxOSAwIDguNTk2IDAgOEMwIDcuNDA0IDAuMzA0MDI4IDYuODg2OCAwLjc0NTgzMyA2LjQ2ODk5QzEuMTg2NTggNi4wNTIxNyAxLjc5NzUyIDUuNjk5ODMgMi41MTEgNS40MTQ0NEMyLjcwOSA1LjMzNTI0IDIuOTE2OCA1LjI2MDQ0IDMuMTMzNTIgNS4xOTAzNEMzLjA4NTg3IDQuOTY3NiAzLjA0Njc1IDQuNzUwMjQgMy4wMTYzNCA0LjUzOTE3QzIuOTA2NzYgMy43Nzg1OCAyLjkwNjQyIDMuMDczMzIgMy4wNDcwMiAyLjQ4MzIxQzMuMTg3OTYgMS44OTE2OSAzLjQ4Mzg1IDEuMzY5OCA0IDEuMDcxOEM0LjUxNjE1IDAuNzczNzk4IDUuMTE2MDcgMC43Nzg0OTUgNS42OTg4MSAwLjk1MjIwMUM2LjI4MDE2IDEuMTI1NDkgNi44OTA3NyAxLjQ3ODQxIDcuNDk0NjYgMS45NTM2MVpNNy4zNjc0NyA0LjUxMDI1QzcuNTc3MzUgNC4yNTE5NCA3Ljc4ODgxIDQuMDA5MjcgNy45OTk5OSAzLjc4MzU2QzguMjExMTcgNC4wMDkyNyA4LjQyMjYzIDQuMjUxOTQgOC42MzI1MSA0LjUxMDI1QzguNDIzNjkgNC41MDM0NiA4LjIxMjc0IDQuNSA4IDQuNUM3Ljc4NzI1IDQuNSA3LjU3NjMgNC41MDM0NSA3LjM2NzQ3IDQuNTEwMjVaTTguNzE0MjUgMy4wODMzMUM5LjEzNzgxIDMuNTM0NDcgOS41NTc1OSA0LjA0MzU4IDkuOTYyNDYgNC42MDA5MkMxMC42NDc1IDQuNjcyODggMTEuMjk4MyA0Ljc4MTg2IDExLjkwMDggNC45MjMwOUMxMS45MzgzIDQuNzQyNDQgMTEuOTY5MyA0LjU2NjcxIDExLjk5MzkgNC4zOTY1N0MxMi4wOTI3IDMuNzEwMzEgMTIuMDgxNyAzLjE0MTE0IDExLjk4MDIgMi43MTQ5OUMxMS44NzkgMi4yOTAyNSAxMS43MDEzIDIuMDU0MDQgMTEuNSAxLjkzNzgyQzExLjI5ODcgMS44MjE2MSAxMS4wMDUzIDEuNzg1OCAxMC41ODY4IDEuOTEwNTNDMTAuMTY3IDIuMDM1NjggOS42Njg1OSAyLjMxMDczIDkuMTIzNzEgMi43Mzk0OEM4Ljk4ODYyIDIuODQ1NzggOC44NTE5NiAyLjk2MDUyIDguNzE0MjUgMy4wODMzMVpNOCA1LjVDOC40ODQzMyA1LjUgOC45NTYzOCA1LjUxODg1IDkuNDExODggNS41NTQ1NkM5LjY3MDU2IDUuOTMxMTggOS45MjI5IDYuMzMwNTYgMTAuMTY1MSA2Ljc1QzEwLjQwNzIgNy4xNjk0NCAxMC42MjY5IDcuNTg3NjYgMTAuODIzNyA3Ljk5OTk4QzEwLjYyNjkgOC40MTIzMiAxMC40MDcyIDguODMwNTUgMTAuMTY1IDkuMjVDOS45MjI4OCA5LjY2OTQ0IDkuNjcwNTMgMTAuMDY4OCA5LjQxMTg1IDEwLjQ0NTRDOC45NTYzNiAxMC40ODEyIDguNDg0MzIgMTAuNSA4IDEwLjVDNy41MTU2NyAxMC41IDcuMDQzNjMgMTAuNDgxMiA2LjU4ODEzIDEwLjQ0NTRDNi4zMjk0NSAxMC4wNjg4IDYuMDc3MSA5LjY2OTQ0IDUuODM0OTQgOS4yNUM1LjU5Mjc3IDguODMwNTUgNS4zNzMwNiA4LjQxMjMyIDUuMTc2MjQgNy45OTk5OEM1LjM3MzA2IDcuNTg3NjUgNS41OTI3NSA3LjE2OTQ0IDUuODM0OTIgNi43NUM2LjA3NzA4IDYuMzMwNTYgNi4zMjk0MiA1LjkzMTE4IDYuNTg4MSA1LjU1NDU2QzcuMDQzNjEgNS41MTg4NCA3LjUxNTY2IDUuNSA4IDUuNVpNMTEuMDMxMSA2LjI1QzExLjEzNzUgNi40MzQyMyAxMS4yMzk5IDYuNjE4NjQgMTEuMzM4NSA2LjgwMjg3QzExLjQ1NzIgNi40OTE5NyAxMS41NjE2IDYuMTg3NTIgMTEuNjUxNSA1Ljg5MTc4QzExLjM1MDUgNS44MjE3NSAxMS4wMzQ2IDUuNzU5OTYgMTAuNzA2IDUuNzA3MzZDMTAuODE2MyA1Ljg4NDggMTAuOTI0NyA2LjA2NTc2IDExLjAzMTEgNi4yNVpNMTEuMDMxMSA5Ljc1QzExLjEzNzQgOS41NjU3NiAxMS4yMzk5IDkuMzgxMzMgMTEuMzM4NSA5LjE5NzA5QzExLjQ1NzIgOS41MDgwMSAxMS41NjE3IDkuODEyNDYgMTEuNjUxNSAxMC4xMDgyQzExLjM1MDUgMTAuMTc4MiAxMS4wMzQ2IDEwLjI0IDEwLjcwNTkgMTAuMjkyNkMxMC44MTYyIDEwLjExNTIgMTAuOTI0NyA5LjkzNDI0IDExLjAzMTEgOS43NVpNMTEuOTI0OSA3Ljk5OTk4QzEyLjIwNTEgOC42MjkyNyAxMi40MzYyIDkuMjQ3MzggMTIuNjE1MSA5LjgzOTc3QzEyLjc5MDMgOS43ODE5MSAxMi45NTggOS43MjA5MiAxMy4xMTc2IDkuNjU3MDhDMTMuNzYxNCA5LjM5OTU4IDE0LjI0ODggOS4xMDU0NyAxNC41NjcxIDguODA0NDZDMTQuODg0MyA4LjUwNDQ1IDE1IDguMjMyNDMgMTUgOEMxNSA3Ljc2NzU3IDE0Ljg4NDMgNy40OTU1NSAxNC41NjcxIDcuMTk1NTRDMTQuMjQ4OCA2Ljg5NDUzIDEzLjc2MTQgNi42MDA0MiAxMy4xMTc2IDYuMzQyOTJDMTIuOTU4IDYuMjc5MDcgMTIuNzkwMyA2LjIxODA4IDEyLjYxNTEgNi4xNjAyMkMxMi40MzYyIDYuNzUyNiAxMi4yMDUxIDcuMzcwNjkgMTEuOTI0OSA3Ljk5OTk4Wk05Ljk2MjQ0IDExLjM5OTFDMTAuNjQ3NSAxMS4zMjcxIDExLjI5ODMgMTEuMjE4MSAxMS45MDA4IDExLjA3NjlDMTEuOTM4MyAxMS4yNTc2IDExLjk2OTQgMTEuNDMzMyAxMS45OTM5IDExLjYwMzRDMTIuMDkyOCAxMi4yODk3IDEyLjA4MTcgMTIuODU4OSAxMS45ODAyIDEzLjI4NUMxMS44NzkgMTMuNzA5OCAxMS43MDEzIDEzLjk0NiAxMS41IDE0LjA2MjJDMTEuMjk4NyAxNC4xNzg0IDExLjAwNTMgMTQuMjE0MiAxMC41ODY4IDE0LjA4OTVDMTAuMTY3IDEzLjk2NDMgOS42Njg2MSAxMy42ODkzIDkuMTIzNzMgMTMuMjYwNUM4Ljk4ODYzIDEzLjE1NDIgOC44NTE5NiAxMy4wMzk1IDguNzE0MjQgMTIuOTE2N0M5LjEzNzggMTIuNDY1NSA5LjU1NzU4IDExLjk1NjQgOS45NjI0NCAxMS4zOTkxWk04LjYzMjQ5IDExLjQ4OThDOC40MjI2MiAxMS43NDgxIDguMjExMTYgMTEuOTkwNyA3Ljk5OTk5IDEyLjIxNjRDNy43ODg4MSAxMS45OTA3IDcuNTc3MzcgMTEuNzQ4MSA3LjM2NzQ5IDExLjQ4OTdDNy41NzYzMSAxMS40OTY1IDcuNzg3MjYgMTEuNSA4IDExLjVDOC4yMTI3MyAxMS41IDguNDIzNjcgMTEuNDk2NSA4LjYzMjQ5IDExLjQ4OThaTTQuOTY4OTEgOS43NUM1LjA3NTI4IDkuOTM0MjQgNS4xODM3NSAxMC4xMTUyIDUuMjk0MDQgMTAuMjkyNkM0Ljk2NTQgMTAuMjQgNC42NDk1MSAxMC4xNzgyIDQuMzQ4NDQgMTAuMTA4MkM0LjQzODMzIDkuODEyNDYgNC41NDI3NiA5LjUwOCA0LjY2MTUyIDkuMTk3MDhDNC43NjAwNSA5LjM4MTMzIDQuODYyNTQgOS41NjU3NSA0Ljk2ODkxIDkuNzVaTTYuMDM3NTQgMTEuMzk5MUM1LjM1MjQ0IDExLjMyNzEgNC43MDE2MyAxMS4yMTgxIDQuMDk5MTQgMTEuMDc2OUM0LjA2MTY1IDExLjI1NzYgNC4wMzA2MiAxMS40MzMzIDQuMDA2MSAxMS42MDM0QzMuOTA3MjMgMTIuMjg5NyAzLjkxODIzIDEyLjg1ODkgNC4wMTk3NyAxMy4yODVDNC4xMjA5NyAxMy43MDk4IDQuMjk4NjkgMTMuOTQ2IDQuNDk5OTggMTQuMDYyMkM0LjcwMTI3IDE0LjE3ODQgNC45OTQ3IDE0LjIxNDIgNS40MTMxMyAxNC4wODk1QzUuODMyOTYgMTMuOTY0MyA2LjMzMTM3IDEzLjY4OTMgNi44NzYyNSAxMy4yNjA1QzcuMDExMzUgMTMuMTU0MiA3LjE0ODAyIDEzLjAzOTUgNy4yODU3MyAxMi45MTY3QzYuODYyMTcgMTIuNDY1NSA2LjQ0MjQgMTEuOTU2NCA2LjAzNzU0IDExLjM5OTFaTTQuMDc1MDcgNy45OTk5OEMzLjc5NDg0IDguNjI5MjcgMy41NjM4MSA5LjI0NzM3IDMuMzg0ODkgOS44Mzk3N0MzLjIwOTY5IDkuNzgxOTEgMy4wNDIgOS43MjA5MiAyLjg4MjM5IDkuNjU3MDhDMi4yMzg2NCA5LjM5OTU4IDEuNzUxMjMgOS4xMDU0NyAxLjQzMjk0IDguODA0NDZDMS4xMTU3MSA4LjUwNDQ1IDEgOC4yMzI0MyAxIDhDMSA3Ljc2NzU3IDEuMTE1NzEgNy40OTU1NSAxLjQzMjk0IDcuMTk1NTRDMS43NTEyMyA2Ljg5NDUzIDIuMjM4NjQgNi42MDA0MiAyLjg4MjM5IDYuMzQyOTJDMy4wNDIgNi4yNzkwNyAzLjIwOTcgNi4yMTgwOCAzLjM4NDkgNi4xNjAyMkMzLjU2MzgzIDYuNzUyNjEgMy43OTQ4NCA3LjM3MDY5IDQuMDc1MDcgNy45OTk5OFpNNC42NjE1MiA2LjgwMjg3QzQuNTQyNzcgNi40OTE5NyA0LjQzODM1IDYuMTg3NTIgNC4zNDg0NiA1Ljg5MTc4QzQuNjQ5NTIgNS44MjE3NSA0Ljk2NTM5IDUuNzU5OTYgNS4yOTQwMiA1LjcwNzM2QzUuMTgzNzMgNS44ODQ4IDUuMDc1MjYgNi4wNjU3NiA0Ljk2ODg5IDYuMjVDNC44NjI1MyA2LjQzNDIzIDQuNzYwMDUgNi42MTg2NCA0LjY2MTUyIDYuODAyODdaTTkuMjUgOEM5LjI1IDguNjkwMzYgOC42OTAzNiA5LjI1IDggOS4yNUM3LjMwOTY0IDkuMjUgNi43NSA4LjY5MDM2IDYuNzUgOEM2Ljc1IDcuMzA5NjUgNy4zMDk2NCA2Ljc1IDggNi43NUM4LjY5MDM2IDYuNzUgOS4yNSA3LjMwOTY1IDkuMjUgOFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLG5bMF09ZSk6ZT1uWzBdLG5bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeHMpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsY2hpbGRyZW46W2UsKDAsQS5qc3gpKFwiZGVmc1wiLHtjaGlsZHJlbjooMCxBLmpzeCkoXCJjbGlwUGF0aFwiLHtpZDpcImZpbGVfcmVhY3RfY2xpcDBfODcyXzMxODNcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJ3aGl0ZVwifSl9KX0pXX0pLG5bMV09dCk6dD1uWzFdLHR9dmFyIGVGPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvYW5zZXIvaW5kZXguanNcIiksZXE9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGVGKSxlSD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanNcIiksZVY9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGVIKTtmdW5jdGlvbiBlJChlKXt2YXIgdD1lLnNwbGl0KC9cXHI/XFxuL2cpLG49dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0vXj4/ICtcXGQrICtcXHwgWyBdKy8uZXhlYyhlVigpKGUpKT9udWxsOi9ePj8gK1xcZCsgK1xcfCAoICopLy5leGVjKGVWKCkoZSkpfSkuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5wb3AoKX0pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBpc05hTihlKT90Lmxlbmd0aDpNYXRoLm1pbihlLHQubGVuZ3RoKX0sTmFOKTtyZXR1cm4gbj4xP3QubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJufih0PWUuaW5kZXhPZihcInxcIikpP2Uuc3Vic3RyaW5nKDAsdCkrZS5zdWJzdHJpbmcodCkucmVwbGFjZShcIl5cXFxcIHtcIi5jb25jYXQobixcIn1cIiksXCJcIik6ZX0pLmpvaW4oXCJcXG5cIik6dC5qb2luKFwiXFxuXCIpfWZ1bmN0aW9uIGVXKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBlWShlKXt2YXIgdCxuLHIsbz1lLnN0YWNrRnJhbWUsYT1lLmNvZGVGcmFtZSxpPSgwLHcudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4oZnVuY3Rpb24oZSl7dmFyIHQ9ZXEoKS5hbnNpVG9Kc29uKGUse2pzb246ITAsdXNlX2NsYXNzZXM6ITAscmVtb3ZlX2VtcHR5OiEwfSksbj1bXSxyPVtdLG89ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBsLHM9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShvPShsPXMubmV4dCgpKS5kb25lKTtvPSEwKXt2YXIgYz1sLnZhbHVlO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBjLmNvbnRlbnQmJmMuY29udGVudC5pbmNsdWRlcyhcIlxcblwiKSlmb3IodmFyIHU9Yy5jb250ZW50LnNwbGl0KFwiXFxuXCIpLGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGY9dVtkXTtmJiZyLnB1c2goZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfShmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGMpLHtjb250ZW50OmZ9KSksZDx1Lmxlbmd0aC0xJiYobi5wdXNoKHIpLHI9W10pfWVsc2Ugci5wdXNoKGMpfX1jYXRjaChlKXthPSEwLGk9ZX1maW5hbGx5e3RyeXtvfHxudWxsPT1zLnJldHVybnx8cy5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgaX19cmV0dXJuIHIubGVuZ3RoPjAmJm4ucHVzaChyKSxufSkoZSQoYSkpLm1hcChmdW5jdGlvbihlKXt2YXIgdCxuLHIsYSxpLGwscyxjLHU7cmV0dXJue2xpbmU6ZSxwYXJzZWRMaW5lOih0PWUsbj1vLCgobnVsbD09KHI9dFswXSk/dm9pZCAwOnIuY29udGVudCk9PT1cIj5cInx8KG51bGw9PShhPXRbMF0pP3ZvaWQgMDphLmNvbnRlbnQpPT09XCIgXCIpJiYocz1udWxsPT0obD10WzFdKXx8bnVsbD09KHU9bC5jb250ZW50KXx8bnVsbD09KGM9dS5yZXBsYWNlKFwifFwiLFwiXCIpKT92b2lkIDA6Yy50cmltKCkpLHtsaW5lTnVtYmVyOnMsaXNFcnJvcmVkTGluZTpzPT09KG51bGw9PShpPW4ubGluZTEpP3ZvaWQgMDppLnRvU3RyaW5nKCkpfSl9fSl9LFthLG9dKSxsPWVCKHtmaWxlOm8uZmlsZSxsaW5lMTpudWxsIT0obj1vLmxpbmUxKT9uOjEsY29sdW1uMTpudWxsIT0ocj1vLmNvbHVtbjEpP3I6MX0pLHM9bnVsbD09b3x8bnVsbD09KHQ9by5maWxlKT92b2lkIDA6dC5zcGxpdChcIi5cIikucG9wKCk7cmV0dXJuKDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvZGVmcmFtZVwiOiEwLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1oZWFkZXJcIixjaGlsZHJlbjooMCxBLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmtcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixjaGlsZHJlbjooMCxBLmpzeCkoZUwse2xhbmc6c30pfSksKDAsQS5qc3hzKShcInNwYW5cIix7XCJkYXRhLXRleHRcIjohMCxjaGlsZHJlbjpbZU8obyksXCIgQFwiLFwiIFwiLCgwLEEuanN4KShlQSx7dGV4dDpvLm1ldGhvZE5hbWV9KV19KSwoMCxBLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6XCJPcGVuIGluIGVkaXRvclwiLFwiZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstc291cmNlLWZpbGVcIjohMCxvbkNsaWNrOmwsY2hpbGRyZW46KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixcImRhdGEtaWNvblwiOlwicmlnaHRcIixjaGlsZHJlbjooMCxBLmpzeCkoZXose3dpZHRoOjE2LGhlaWdodDoxNn0pfSl9KV19KX0pLCgwLEEuanN4KShcInByZVwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLXByZVwiLGNoaWxkcmVuOigwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmVzXCIsY2hpbGRyZW46aS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89ZS5saW5lLGE9ZS5wYXJzZWRMaW5lLGk9YS5saW5lTnVtYmVyLGw9YS5pc0Vycm9yZWRMaW5lLHM9e307cmV0dXJuIGkmJihzW1wiZGF0YS1uZXh0anMtY29kZWZyYW1lLWxpbmVcIl09aSksbCYmKHNbXCJkYXRhLW5leHRqcy1jb2RlZnJhbWUtbGluZS0tZXJyb3JlZFwiXT0hMCksKDAsQS5qc3gpKFwiZGl2XCIsKG49ZVcoe30scykscj1yPXtjaGlsZHJlbjpvLm1hcChmdW5jdGlvbihlLHQpe3JldHVybigwLEEuanN4KShcInNwYW5cIix7c3R5bGU6ZVcoe2NvbG9yOmUuZmc/XCJ2YXIoLS1jb2xvci1cIi5jb25jYXQoZS5mZyxcIilcIik6dm9pZCAwfSxcImJvbGRcIj09PWUuZGVjb3JhdGlvbj97Zm9udFdlaWdodDo1MDB9OlwiaXRhbGljXCI9PT1lLmRlY29yYXRpb24/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp2b2lkIDApLGNoaWxkcmVuOmUuY29udGVudH0sXCJmcmFtZS1cIi5jb25jYXQodCkpfSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSksbiksXCJsaW5lLVwiLmNvbmNhdCh0KSl9KX0pfSldfSl9dmFyIGVLPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLHguYykoOCk7cmV0dXJuKGxbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCJdKSxyPWUuY2hpbGRyZW4sbz1lLmNsYXNzTmFtZSxsWzBdPWUsbFsxXT1yLGxbMl09byxsWzNdPWEpOihyPWxbMV0sbz1sWzJdLGE9bFszXSksbFs0XSE9PXJ8fGxbNV0hPT1vfHxsWzZdIT09YSk/KGk9KDAsQS5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctYm9keVwiOiEwLGNsYXNzTmFtZTpvfSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGxbNF09cixsWzVdPW8sbFs2XT1hLGxbN109aSk6aT1sWzddLGl9LGVYPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLHguYykoOCk7cmV0dXJuKGxbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCJdKSxyPWUuY2hpbGRyZW4sbz1lLmNsYXNzTmFtZSxsWzBdPWUsbFsxXT1yLGxbMl09byxsWzNdPWEpOihyPWxbMV0sbz1sWzJdLGE9bFszXSksbFs0XSE9PXJ8fGxbNV0hPT1vfHxsWzZdIT09YSk/KGk9KDAsQS5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudFwiOiEwLGNsYXNzTmFtZTpvfSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGxbNF09cixsWzVdPW8sbFs2XT1hLGxbN109aSk6aT1sWzddLGl9O2Z1bmN0aW9uIGVHKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1yb290XSB7XFxuICAgIC0tbmV4dC1kaWFsb2ctcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcXG4gICAgLS1uZXh0LWRpYWxvZy1tYXgtd2lkdGg6IDk2MHB4O1xcbiAgICAtLW5leHQtZGlhbG9nLXJvdy1wYWRkaW5nOiAxNnB4O1xcbiAgICAtLW5leHQtZGlhbG9nLXBhZGRpbmc6IDEycHg7XFxuICAgIC0tbmV4dC1kaWFsb2ctbm90Y2gtaGVpZ2h0OiA0MnB4O1xcbiAgICAtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aDogMXB4O1xcblxcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XFxuICAgIG1heC13aWR0aDogdmFyKC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoKTtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgc2NhbGU6IDAuOTc7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHNjYWxlLCBvcGFjaXR5O1xcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uKTtcXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXRpbWluZy1vdmVybGF5KTtcXG5cXG4gICAgJltkYXRhLXJlbmRlcmVkPSd0cnVlJ10ge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgc2NhbGU6IDE7XFxuICAgIH1cXG5cXG4gICAgW2RhdGEtbmV4dGpzLXNjcm9sbC1mYWRlcl1bZGF0YS1zaWRlPSd0b3AnXSB7XFxuICAgICAgbGVmdDogMXB4O1xcbiAgICAgIHRvcDogY2FsYyhcXG4gICAgICAgIHZhcigtLW5leHQtZGlhbG9nLW5vdGNoLWhlaWdodCkgKyB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpXFxuICAgICAgKTtcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tbmV4dC1kaWFsb2ctcGFkZGluZykpO1xcbiAgICAgIG9wYWNpdHk6IDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcXG4gICAgb3V0bGluZTogMDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BdIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uKSB2YXIoLS10aW1pbmctb3ZlcmxheSk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgbWFyZ2luOiA4cHg7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldW2RhdGEtcmVuZGVyZWQ9J3RydWUnXVxcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdIHtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgcGFkZGluZzogdmFyKC0tbmV4dC1kaWFsb2ctcGFkZGluZyk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1oZWFkZXJdIHtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDhweDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0gPiBbZGF0YS1uZXh0anMtZGlhbG9nLWJvZHldIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gIH1cXG5cXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcXG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XFxuICAgICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMTVweCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogNTQwcHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogNzIwcHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogOTYwcHg7XFxuICAgIH1cXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gZUc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn12YXIgZVE9ZXUoZUcoKSk7ZnVuY3Rpb24gZUooKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBlMChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZTEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIGUyKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBlNChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZTAoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gZTAoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gZTUoZSx0KXtyZXR1cm5cInJlc2V0XCI9PT10LnR5cGU/e3N0YXRlOlwiaW5pdGlhbFwifTpcImNvcGllZFwiPT09dC50eXBlP3tzdGF0ZTpcInN1Y2Nlc3NcIn06XCJjb3B5aW5nXCI9PT10LnR5cGU/e3N0YXRlOlwicGVuZGluZ1wifTpcImVycm9yXCI9PT10LnR5cGU/e3N0YXRlOlwiZXJyb3JcIixlcnJvcjp0LmVycm9yfTplfWZ1bmN0aW9uIGUzKGUpe3JldHVybntzdGF0ZTpcImVycm9yXCIsZXJyb3I6ZX19ZnVuY3Rpb24gZTYoKXtyZXR1cm57c3RhdGU6XCJzdWNjZXNzXCJ9fXZhciBlOT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB3LnVzZUFjdGlvblN0YXRlP2Z1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaT0oMCx4LmMpKDgpO2lbMF0hPT1lPyh0PWZ1bmN0aW9uKHQsbil7cmV0dXJuXCJyZXNldFwiPT09bj97c3RhdGU6XCJpbml0aWFsXCJ9OlwiY29weVwiPT09bj9uYXZpZ2F0b3IuY2xpcGJvYXJkP25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLnRoZW4oZTYsZTMpOntzdGF0ZTpcImVycm9yXCIsZXJyb3I6XCJDb3B5IHRvIGNsaXBib2FyZCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwifTp0fSxpWzBdPWUsaVsxXT10KTp0PWlbMV0saVsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPXtzdGF0ZTpcImluaXRpYWxcIn0saVsyXT1uKTpuPWlbMl07dmFyIGw9ZTQody51c2VBY3Rpb25TdGF0ZSh0LG4pLDMpLHM9bFswXSxjPWxbMV0sdT1sWzJdO2lbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj1mdW5jdGlvbigpe3cuc3RhcnRUcmFuc2l0aW9uKGZ1bmN0aW9uKCl7YyhcImNvcHlcIil9KX0saVszXT1yKTpyPWlbM107dmFyIGQ9cjtpWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89ZnVuY3Rpb24oKXtjKFwicmVzZXRcIil9LGlbNF09byk6bz1pWzRdO3ZhciBmPW87cmV0dXJuIGlbNV0hPT1zfHxpWzZdIT09dT8oYT1bcyxkLGYsdV0saVs1XT1zLGlbNl09dSxpWzddPWEpOmE9aVs3XSxhfTpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCx4LmMpKDEyKTtsWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e3N0YXRlOlwiaW5pdGlhbFwifSxsWzBdPXQpOnQ9bFswXTt2YXIgcz1lNCh3LnVzZVJlZHVjZXIoZTUsdCksMiksYz1zWzBdLHU9c1sxXTtyZXR1cm4gbFsxXSE9PWV8fGxbMl0hPT1jLnN0YXRlPyhuPWZ1bmN0aW9uKCl7cnx8KG5hdmlnYXRvci5jbGlwYm9hcmQ/KHUoe3R5cGU6XCJjb3B5aW5nXCJ9KSxuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChlKS50aGVuKGZ1bmN0aW9uKCl7dSh7dHlwZTpcImNvcGllZFwifSl9LGZ1bmN0aW9uKGUpe3Uoe3R5cGU6XCJlcnJvclwiLGVycm9yOmV9KX0pKTp1KHt0eXBlOlwiZXJyb3JcIixlcnJvcjpcIkNvcHkgdG8gY2xpcGJvYXJkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCJ9KSl9LGxbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbigpe3Uoe3R5cGU6XCJyZXNldFwifSl9LGxbNl09YSk6YT1sWzZdLG89YSxyPVwicGVuZGluZ1wiPT09Yy5zdGF0ZSxsWzFdPWUsbFsyXT1jLnN0YXRlLGxbM109bixsWzRdPXIsbFs1XT1vKToobj1sWzNdLHI9bFs0XSxvPWxbNV0pLGxbN10hPT1ufHxsWzhdIT09Y3x8bFs5XSE9PXJ8fGxbMTBdIT09bz8oaT1bYyxuLG8scl0sbFs3XT1uLGxbOF09YyxsWzldPXIsbFsxMF09byxsWzExXT1pKTppPWxbMTFdLGl9O2Z1bmN0aW9uIGU4KGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdj0oMCx4LmMpKDQwKTt2WzBdIT09ZT8oaT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY29udGVudFwiLFwiZ2V0Q29udGVudFwiLFwiYWN0aW9uTGFiZWxcIixcInN1Y2Nlc3NMYWJlbFwiLFwiaWNvblwiLFwiZGlzYWJsZWRcIl0pLG49ZS5jb250ZW50LG89ZS5nZXRDb250ZW50LHQ9ZS5hY3Rpb25MYWJlbCxsPWUuc3VjY2Vzc0xhYmVsLGE9ZS5pY29uLHI9ZS5kaXNhYmxlZCx2WzBdPWUsdlsxXT10LHZbMl09bix2WzNdPXIsdls0XT1vLHZbNV09YSx2WzZdPWksdls3XT1sKToodD12WzFdLG49dlsyXSxyPXZbM10sbz12WzRdLGE9dls1XSxpPXZbNl0sbD12WzddKSx2WzhdIT09bnx8dls5XSE9PW8/KHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnx8KG8/bygpOlwiXCIpfSx2WzhdPW4sdls5XT1vLHZbMTBdPXMpOnM9dlsxMF07dmFyIGI9czt2WzExXSE9PWI/KGM9YigpLHZbMTFdPWIsdlsxMl09Yyk6Yz12WzEyXTt2YXIgQz1lNChlOShjKSw0KSxfPUNbMF0saz1DWzFdLEU9Q1syXSxqPUNbM10sUz1cImVycm9yXCI9PT1fLnN0YXRlP18uZXJyb3I6bnVsbDt2WzEzXSE9PVM/KHU9ZnVuY3Rpb24oKXtudWxsIT09UyYmY29uc29sZS53YXJuKFMpfSxkPVtTXSx2WzEzXT1TLHZbMTRdPXUsdlsxNV09ZCk6KHU9dlsxNF0sZD12WzE1XSksdy51c2VFZmZlY3QodSxkKSx2WzE2XSE9PV8uc3RhdGV8fHZbMTddIT09RT8oZj1mdW5jdGlvbigpe2lmKFwic3VjY2Vzc1wiPT09Xy5zdGF0ZSl7dmFyIGU9c2V0VGltZW91dChmdW5jdGlvbigpe0UoKX0sMmUzKTtyZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZSl9fX0sdlsxNl09Xy5zdGF0ZSx2WzE3XT1FLHZbMThdPWYpOmY9dlsxOF0sdlsxOV0hPT1fLnN0YXRlfHx2WzIwXSE9PWp8fHZbMjFdIT09RT8ocD1baixfLnN0YXRlLEVdLHZbMTldPV8uc3RhdGUsdlsyMF09aix2WzIxXT1FLHZbMjJdPXApOnA9dlsyMl0sdy51c2VFZmZlY3QoZixwKTt2YXIgTz0hbmF2aWdhdG9yLmNsaXBib2FyZHx8anx8cnx8ISFTLEI9XCJzdWNjZXNzXCI9PT1fLnN0YXRlP2w6dDt2WzIzXSE9PV8uc3RhdGV8fHZbMjRdIT09YT8oaD1cInN1Y2Nlc3NcIj09PV8uc3RhdGU/KDAsQS5qc3gpKHRlLHt9KTphfHwoMCxBLmpzeCkoZTcse3dpZHRoOjE0LGhlaWdodDoxNCxjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXRvb2xiYXItYnV0dG9uLWljb25cIn0pLHZbMjNdPV8uc3RhdGUsdlsyNF09YSx2WzI1XT1oKTpoPXZbMjVdO3ZhciBQPWgsST1cIm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1cIi5jb25jYXQoXy5zdGF0ZSk7dlsyNl0hPT1lLmNsYXNzTmFtZXx8dlsyN10hPT1JPyhtPWVKKGUuY2xhc3NOYW1lLFwibmV4dGpzLWRhdGEtY29weS1idXR0b25cIixJKSx2WzI2XT1lLmNsYXNzTmFtZSx2WzI3XT1JLHZbMjhdPW0pOm09dlsyOF0sdlsyOV0hPT1rfHx2WzMwXSE9PU8/KGc9ZnVuY3Rpb24oKXtPfHxrKCl9LHZbMjldPWssdlszMF09Tyx2WzMxXT1nKTpnPXZbMzFdO3ZhciBUPVwiZXJyb3JcIj09PV8uc3RhdGU/XCIgXCIuY29uY2F0KF8uZXJyb3IpOm51bGw7cmV0dXJuIHZbMzJdIT09T3x8dlszM10hPT1CfHx2WzM0XSE9PVB8fHZbMzVdIT09aXx8dlszNl0hPT1UfHx2WzM3XSE9PW18fHZbMzhdIT09Zz8oeT0oMCxBLmpzeHMpKFwiYnV0dG9uXCIsZTIoZTEoe30saSkse3R5cGU6XCJidXR0b25cIix0aXRsZTpCLFwiYXJpYS1sYWJlbFwiOkIsXCJhcmlhLWRpc2FibGVkXCI6TyxkaXNhYmxlZDpPLFwiZGF0YS1uZXh0anMtY29weS1idXR0b25cIjohMCxjbGFzc05hbWU6bSxvbkNsaWNrOmcsY2hpbGRyZW46W1AsVF19KSksdlszMl09Tyx2WzMzXT1CLHZbMzRdPVAsdlszNV09aSx2WzM2XT1ULHZbMzddPW0sdlszOF09Zyx2WzM5XT15KTp5PXZbMzldLHl9ZnVuY3Rpb24gZTcoZSl7dmFyIHQsbixyPSgwLHguYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMi40MDYuNDM4Yy0uODQ1IDAtMS41MzEuNjg1LTEuNTMxIDEuNTN2Ni41NjNjMCAuODQ2LjY4NiAxLjUzMSAxLjUzMSAxLjUzMUgzLjkzN1Y4Ljc1SDIuNDA2YS4yMTkuMjE5IDAgMCAxLS4yMTktLjIxOVYxLjk3YzAtLjEyMS4wOTgtLjIxOS4yMi0uMjE5aDQuODEyYy4xMiAwIC4yMTguMDk4LjIxOC4yMTl2LjY1Nkg4Ljc1di0uNjU2YzAtLjg0Ni0uNjg2LTEuNTMyLTEuNTMxLTEuNTMySDIuNDA2em00LjM3NSAzLjVjLS44NDUgMC0xLjUzMS42ODUtMS41MzEgMS41M3Y2LjU2M2MwIC44NDYuNjg2IDEuNTMxIDEuNTMxIDEuNTMxaDQuODEzYy44NDUgMCAxLjUzMS0uNjg1IDEuNTMxLTEuNTNWNS40NjhjMC0uODQ2LS42ODYtMS41MzItMS41MzEtMS41MzJINi43OHptLS4yMTggMS41M2MwLS4xMi4wOTctLjIxOC4yMTgtLjIxOGg0LjgxM2MuMTIgMCAuMjE5LjA5OC4yMTkuMjE5djYuNTYyYzAgLjEyMS0uMDk4LjIxOS0uMjIuMjE5SDYuNzgyYS4yMTkuMjE5IDAgMCAxLS4yMTgtLjIxOVY1LjQ3elwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLEEuanN4KShcInN2Z1wiLGUyKGUxKHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHRlKCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIseGxpbmtUaXRsZTpcImNvcGllZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZDpcIk0xMy43OCA0LjIyYS43NS43NSAwIDAgMSAwIDEuMDZsLTcuMjUgNy4yNWEuNzUuNzUgMCAwIDEtMS4wNiAwTDIuMjIgOS4yOGEuNzUxLjc1MSAwIDAgMSAuMDE4LTEuMDQyLjc1MS43NTEgMCAwIDEgMS4wNDItLjAxOEw2IDEwLjk0bDYuNzItNi43MmEuNzUuNzUgMCAwIDEgMS4wNiAwWlwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHR0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiB0bihlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9dmFyIHRyPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4hMTt2YXIgZT1cImNocm9tZVwiaW4gd2luZG93JiZ3aW5kb3cuY2hyb21lLHQ9d2luZG93Lm5hdmlnYXRvci52ZW5kb3I7cmV0dXJuIG51bGwhPWUmJlwiR29vZ2xlIEluYy5cIj09PXR9KCk7ZnVuY3Rpb24gdG8oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCx4LmMpKDE0KTtyZXR1cm4gaFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzBdPXQpOnQ9aFswXSxoWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49KDAsQS5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfYVwiLHN0eWxlOnQsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCIwXCIsd2lkdGg6XCIxNFwiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNjcuMDg5IDEuMjA1IDMuMjU2YS42NjMuNjYzIDAgMCAwLS4zMy41NzN2Ni4zMzljMCAuMjM3LjEyNi40NTUuMzMuNTc0bDUuNDY2IDMuMTdhLjY2LjY2IDAgMCAwIC42NiAwbDUuNDY1LTMuMTdhLjY2NC42NjQgMCAwIDAgLjMyOS0uNTc0VjMuODI5YS42NjMuNjYzIDAgMCAwLS4zMy0uNTczTDcuMzMuMDg5YS42NjMuNjYzIDAgMCAwLS42NjEgMFwiLGZpbGw6XCIjZmZmXCJ9KX0pLGhbMV09bik6bj1oWzFdLGhbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkoXCJnXCIse21hc2s6XCJ1cmwoI25vZGVqc19pY29uX21hc2tfYSlcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTguNjQ4IDIuNzE3IDMuMjQ4LTQuODYtNC42NDggMTEuMzFsMTUuNCA3LjU4IDcuODk2LTE2LjE3NHpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfYilcIn0pfSksaFsyXT1yKTpyPWhbMl0saFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzNdPW8pOm89aFszXSxoWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsQS5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfY1wiLHN0eWxlOm8sbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxMlwiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTEuMDEgMTAuNTdhLjY2My42NjMgMCAwIDAgLjE5NS4xN2w0LjY4OCAyLjcyLjc4MS40NWEuNjYuNjYgMCAwIDAgLjUxLjA2M2w1Ljc2NC0xMC41OTdhLjY1My42NTMgMCAwIDAtLjE1My0uMTIyTDkuMjE2IDEuMTggNy4zMjUuMDg3YS42ODguNjg4IDAgMCAwLS4xNzEtLjA3TDEuMDEgMTAuNTd6XCIsZmlsbDpcIiNmZmZcIn0pfSksaFs0XT1hKTphPWhbNF0saFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLEEuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19jKVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZDpcIk0tNS42NDcgNC45NTggNS4yMjYgMTkuNzM0bDE0LjM4LTEwLjY2N0w4LjczNC01LjcxLTUuNjQ3IDQuOTU4elwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kKVwifSl9KSxoWzVdPWkpOmk9aFs1XSxoWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbNl09bCk6bD1oWzZdLGhbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocz0oMCxBLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19lXCIsc3R5bGU6bCxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIxXCIseTpcIjBcIix3aWR0aDpcIjEzXCIsaGVpZ2h0OlwiMTRcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi45MzQuMDA0QS42NjUuNjY1IDAgMCAwIDYuNjcuMDlMMS4yMiAzLjI0N2w1Ljg3NyAxMC43NDZhLjY1NS42NTUgMCAwIDAgLjIzNS0uMDhsNS40NjUtMy4xN2EuNjY1LjY2NSAwIDAgMCAuMzE5LS40NTNMNy4xMjYuMDE1YS42ODQuNjg0IDAgMCAwLS4xODktLjAxXCIsZmlsbDpcIiNmZmZcIn0pfSksaFs3XT1zKTpzPWhbN10saFs4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhjPSgwLEEuanN4cykoXCJnXCIse2NoaWxkcmVuOltzLCgwLEEuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19lKVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZDpcIk0xLjIyLjAwMnYxMy45OTJoMTEuODk0Vi4wMDJIMS4yMnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZilcIn0pfSldfSksaFs4XT1jKTpjPWhbOF0saFs5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iXCIseDE6XCIxMC45NDNcIix5MTpcIi0xLjA4NFwiLHgyOlwiMi45OTdcIix5MjpcIjE1LjA2MlwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zXCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNVwiLHN0b3BDb2xvcjpcIiM1NTkzNEZcIn0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjhcIixzdG9wQ29sb3I6XCIjNUFBRDQ1XCJ9KV19KSxoWzldPXUpOnU9aFs5XSxoWzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kXCIseDE6XCItLjE0NVwiLHkxOlwiMTIuNDMxXCIseDI6XCIxNC4yNzdcIix5MjpcIjEuODE4XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjU3XCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNzJcIixzdG9wQ29sb3I6XCIjNjE5ODU3XCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6XCIjNzZBQzY0XCJ9KV19KSxoWzEwXT1kKTpkPWhbMTBdLGhbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGY9KDAsQS5qc3hzKShcImRlZnNcIix7Y2hpbGRyZW46W3UsZCwoMCxBLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZlwiLHgxOlwiMS4yMjVcIix5MTpcIjYuOTk4XCIseDI6XCIxMy4xMTZcIix5MjpcIjYuOTk4XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjE2XCIsc3RvcENvbG9yOlwiIzZCQkY0N1wifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMzhcIixzdG9wQ29sb3I6XCIjNzlCNDYxXCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi40N1wiLHN0b3BDb2xvcjpcIiM3NUFDNjRcIn0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjdcIixzdG9wQ29sb3I6XCIjNjU5RTVBXCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi45XCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSldfSldfSksaFsxMV09Zik6Zj1oWzExXSxoWzEyXSE9PWU/KHA9KDAsQS5qc3hzKShcInN2Z1wiLHRuKHR0KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjpbbixyLGEsaSxjLGZdfSkpLGhbMTJdPWUsaFsxM109cCk6cD1oWzEzXSxwfWZ1bmN0aW9uIHRhKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGg9KDAseC5jKSgxNCk7cmV0dXJuIGhbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17bWFza1R5cGU6XCJsdW1pbmFuY2VcIn0saFswXT10KTp0PWhbMF0saFsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLEEuanN4KShcIm1hc2tcIix7aWQ6XCJub2RlanNfaWNvbl9tYXNrX2FcIixzdHlsZTp0LG1hc2tVbml0czpcInVzZXJTcGFjZU9uVXNlXCIseDpcIjBcIix5OlwiMFwiLHdpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZDpcIk02LjY3LjA4OSAxLjIwNSAzLjI1NmEuNjYzLjY2MyAwIDAgMC0uMzMuNTczdjYuMzM5YzAgLjIzNy4xMjYuNDU1LjMzLjU3NGw1LjQ2NiAzLjE3YS42Ni42NiAwIDAgMCAuNjYgMGw1LjQ2NS0zLjE3YS42NjQuNjY0IDAgMCAwIC4zMjktLjU3NFYzLjgyOWEuNjYzLjY2MyAwIDAgMC0uMzMtLjU3M0w3LjMzLjA4OWEuNjYzLjY2MyAwIDAgMC0uNjYxIDBcIixmaWxsOlwiI2ZmZlwifSl9KSxoWzFdPW4pOm49aFsxXSxoWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsQS5qc3gpKFwiZ1wiLHttYXNrOlwidXJsKCNub2RlanNfaWNvbl9tYXNrX2EpXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTE4LjY0OCAyLjcxNyAzLjI0OC00Ljg2LTQuNjQ2IDExLjMxbDE1LjM5OSA3LjU4IDcuODk2LTE2LjE3NHpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfYilcIn0pfSksaFsyXT1yKTpyPWhbMl0saFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzNdPW8pOm89aFszXSxoWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsQS5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfY1wiLHN0eWxlOm8sbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxMlwiLGhlaWdodDpcIjE1XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTEuMDEgMTAuNTcxYS42Ni42NiAwIDAgMCAuMTk1LjE3Mmw0LjY4OCAyLjcxOC43ODEuNDUxYS42Ni42NiAwIDAgMCAuNTEuMDYzbDUuNzY0LTEwLjU5N2EuNjUzLjY1MyAwIDAgMC0uMTUzLS4xMjJMOS4yMTYgMS4xODEgNy4zMjUuMDlhLjY4OC42ODggMCAwIDAtLjE3MS0uMDdMMS4wMSAxMC41NzJ6XCIsZmlsbDpcIiNmZmZcIn0pfSksaFs0XT1hKTphPWhbNF0saFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLEEuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19jKVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZDpcIk0tNS42NDcgNC45NiA1LjIyNiAxOS43MzYgMTkuNjA2IDkuMDcgOC43MzQtNS43MDctNS42NDcgNC45NnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZClcIn0pfSksaFs1XT1pKTppPWhbNV0saFs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhsPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzZdPWwpOmw9aFs2XSxoWzddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHM9KDAsQS5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfZVwiLHN0eWxlOmwsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxM1wiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTYuOTM1LjAwM2EuNjY1LjY2NSAwIDAgMC0uMjY0LjA4NWwtNS40NSAzLjE1OCA1Ljg3NyAxMC43NDdhLjY1My42NTMgMCAwIDAgLjIzNS0uMDgybDUuNDY1LTMuMTdhLjY2NS42NjUgMCAwIDAgLjMxOS0uNDUyTDcuMTI3LjAxNGEuNjg0LjY4NCAwIDAgMC0uMTg5LS4wMVwiLGZpbGw6XCIjZmZmXCJ9KX0pLGhbN109cyk6cz1oWzddLGhbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYz0oMCxBLmpzeHMpKFwiZ1wiLHtjaGlsZHJlbjpbcywoMCxBLmpzeCkoXCJnXCIse21hc2s6XCJ1cmwoI25vZGVqc19pY29uX21hc2tfZSlcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS4yMjIuMDAxdjEzLjk5MmgxMS44OTNWMEgxLjIyMnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZilcIn0pfSldfSksaFs4XT1jKTpjPWhbOF0saFs5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iXCIseDE6XCIxMC45NDRcIix5MTpcIi0xLjA4NFwiLHgyOlwiMi45OTdcIix5MjpcIjE1LjA2MlwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zXCIsc3RvcENvbG9yOlwiIzY3Njc2N1wifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNVwiLHN0b3BDb2xvcjpcIiM4NTg1ODVcIn0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjhcIixzdG9wQ29sb3I6XCIjOTg5QTk4XCJ9KV19KSxoWzldPXUpOnU9aFs5XSxoWzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kXCIseDE6XCItLjE0NVwiLHkxOlwiMTIuNDMzXCIseDI6XCIxNC4yNzdcIix5MjpcIjEuODE5XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjU3XCIsc3RvcENvbG9yOlwiIzc0NzQ3NFwifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNzJcIixzdG9wQ29sb3I6XCIjNzA3MDcwXCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6XCIjOTI5MjkyXCJ9KV19KSxoWzEwXT1kKTpkPWhbMTBdLGhbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGY9KDAsQS5qc3hzKShcImRlZnNcIix7Y2hpbGRyZW46W3UsZCwoMCxBLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZlwiLHgxOlwiMS4yMjZcIix5MTpcIjYuOTk3XCIseDI6XCIxMy4xMTdcIix5MjpcIjYuOTk3XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjE2XCIsc3RvcENvbG9yOlwiIzg3ODc4N1wifSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMzhcIixzdG9wQ29sb3I6XCIjQTlBOUE5XCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi40N1wiLHN0b3BDb2xvcjpcIiNBNUE1QTVcIn0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjdcIixzdG9wQ29sb3I6XCIjOEY4RjhGXCJ9KSwoMCxBLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi45XCIsc3RvcENvbG9yOlwiIzYyNjI2MlwifSldfSldfSksaFsxMV09Zik6Zj1oWzExXSxoWzEyXSE9PWU/KHA9KDAsQS5qc3hzKShcInN2Z1wiLHRuKHR0KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjpbbixyLGEsaSxjLGZdfSkpLGhbMTJdPWUsaFsxM109cCk6cD1oWzEzXSxwfXZhciB0aT1cIkxlYXJuIG1vcmUgYWJvdXQgZW5hYmxpbmcgTm9kZS5qcyBpbnNwZWN0b3IgZm9yIHNlcnZlciBjb2RlIHdpdGggQ2hyb21lIERldlRvb2xzXCI7ZnVuY3Rpb24gdGwoZSl7dmFyIHQsbixyLG89KDAseC5jKSg0KSxhPWUuZGV2dG9vbHNGcm9udGVuZFVybHx8XCJcIjtyZXR1cm4gYSYmdHI/KG9bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxBLmpzeCkodG8se2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pLG9bMV09bik6bj1vWzFdLG9bMl0hPT1hPyhyPSgwLEEuanN4KShlOCx7XCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29weS1kZXZ0b29scy11cmxcIjohMCxjbGFzc05hbWU6XCJub2RlanMtaW5zcGVjdG9yLWJ1dHRvblwiLGFjdGlvbkxhYmVsOlwiQ29weSBDaHJvbWUgRGV2VG9vbHMgVVJMXCIsc3VjY2Vzc0xhYmVsOlwiQ29waWVkXCIsY29udGVudDphLGljb246bn0pLG9bMl09YSxvWzNdPXIpOnI9b1szXSxyKToob1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KShcImFcIix7dGl0bGU6dGksXCJhcmlhLWxhYmVsXCI6dGksY2xhc3NOYW1lOlwibm9kZWpzLWluc3BlY3Rvci1idXR0b25cIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vY29uZmlndXJpbmcvZGVidWdnaW5nI3NlcnZlci1zaWRlLWNvZGVcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46KDAsQS5qc3gpKHRhLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXRvb2xiYXItYnV0dG9uLWljb25cIix3aWR0aDoxNCxoZWlnaHQ6MTR9KX0pLG9bMF09dCk6dD1vWzBdLHQpfWZ1bmN0aW9uIHRzKGUpe3ZhciB0LG49KDAseC5jKSgzKSxyPWUuZXJyb3Isbz1lLmdlbmVyYXRlRXJyb3JJbmZvLGE9IXI7cmV0dXJuIG5bMF0hPT1vfHxuWzFdIT09YT8odD0oMCxBLmpzeCkoZTgse1wiZGF0YS1uZXh0anMtZGF0YS1ydW50aW1lLWVycm9yLWNvcHktc3RhY2tcIjohMCxjbGFzc05hbWU6XCJjb3B5LWVycm9yLWJ1dHRvblwiLGFjdGlvbkxhYmVsOlwiQ29weSBFcnJvciBJbmZvXCIsc3VjY2Vzc0xhYmVsOlwiRXJyb3IgSW5mbyBDb3BpZWRcIixnZXRDb250ZW50Om8sZGlzYWJsZWQ6YX0pLG5bMF09byxuWzFdPWEsblsyXT10KTp0PW5bMl0sdH1mdW5jdGlvbiB0YyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdHUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX1mdW5jdGlvbiB0ZCgpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfWZ1bmN0aW9uIHRmKGUsdCl7cmV0dXJuIHR1KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHx0aChlLHQpfHx0ZCgpfWZ1bmN0aW9uIHRwKGUpe3JldHVybiB0dShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHRoKGUpfHx0ZCgpfWZ1bmN0aW9uIHRoKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRjKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRjKGUsdCl9fXZhciB0bT1cImh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvaHlkcmF0aW9uLW1pc21hdGNoXCIsdGc9XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JcIix0eT1bL15JbiBIVE1MLCAoLis/KSBjYW5ub3QgYmUgYSBjaGlsZCBvZiA8KC4rPyk+XFwuKC4qKVxcblRoaXMgd2lsbCBjYXVzZSBhIGh5ZHJhdGlvbiBlcnJvclxcLiguKikvLC9eSW4gSFRNTCwgKC4rPykgY2Fubm90IGJlIGEgZGVzY2VuZGFudCBvZiA8KC4rPyk+XFwuXFxuVGhpcyB3aWxsIGNhdXNlIGEgaHlkcmF0aW9uIGVycm9yXFwuKC4qKS8sL15JbiBIVE1MLCB0ZXh0IG5vZGVzIGNhbm5vdCBiZSBhIGNoaWxkIG9mIDwoLis/KT5cXC5cXG5UaGlzIHdpbGwgY2F1c2UgYSBoeWRyYXRpb24gZXJyb3JcXC4vLC9eSW4gSFRNTCwgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGNhbm5vdCBiZSBhIGNoaWxkIG9mIDwoLis/KT5cXC4gTWFrZSBzdXJlIHlvdSBkb24ndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNlIGJldHdlZW4gdGFncyBvbiBlYWNoIGxpbmUgb2YgeW91ciBzb3VyY2UgY29kZVxcLlxcblRoaXMgd2lsbCBjYXVzZSBhIGh5ZHJhdGlvbiBlcnJvclxcLi9dO2Z1bmN0aW9uIHR2KGUpe3JldHVybiB0eS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KX12YXIgdGI9W1wiaHR0cHM6Ly9uZXh0anMub3JnXCIsXCJodHRwczovL3JlYWN0LmRldlwiXTtmdW5jdGlvbiB0QShlKXtyZXR1cm4gdGIuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZS5zdGFydHNXaXRoKHQpfSl9ZnVuY3Rpb24gdHgoZSl7dmFyIHQsbixyLG8sYT0oMCx4LmMpKDYpLGk9ZS5lcnJvck1lc3NhZ2U7YVswXSE9PWk/KHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89KHQ9ZSxuPXRBLHI9QXJyYXkuZnJvbSh0Lm1hdGNoQWxsKC9odHRwcz86XFwvXFwvW15cXHMvJC4/I10uW15cXHMpJ1wiXSovZ2kpLGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdfSksbj9yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pOnIpO2lmKDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYT1vWzBdO3JldHVybiBhPT09dG0/dGc6YX0oaSksYVswXT1pLGFbMV09dCk6dD1hWzFdO3ZhciBsPXQ7cmV0dXJuIGw/KGFbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkodHcse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pLGFbM109cik6cj1hWzNdLGFbNF0hPT1sPyhvPSgwLEEuanN4KShcImFcIix7dGl0bGU6XCJHbyB0byByZWxhdGVkIGRvY3VtZW50YXRpb25cIixcImFyaWEtbGFiZWxcIjpcIkdvIHRvIHJlbGF0ZWQgZG9jdW1lbnRhdGlvblwiLGNsYXNzTmFtZTpcImRvY3MtbGluay1idXR0b25cIixocmVmOmwsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOnJ9KSxhWzRdPWwsYVs1XT1vKTpvPWFbNV0sbyk6KGFbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxBLmpzeCkoXCJidXR0b25cIix7dGl0bGU6XCJObyByZWxhdGVkIGRvY3VtZW50YXRpb24gZm91bmRcIixcImFyaWEtbGFiZWxcIjpcIk5vIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3VuZFwiLGNsYXNzTmFtZTpcImRvY3MtbGluay1idXR0b25cIixkaXNhYmxlZDohMCxjaGlsZHJlbjooMCxBLmpzeCkodHcse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pfSksYVsyXT1uKTpuPWFbMl0sbil9ZnVuY3Rpb24gdHcoZSl7dmFyIHQsbixyLG8sYT0oMCx4LmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTAgLjg3NWg0LjM3NUM1LjQ0OC44NzUgNi40MDEgMS4zOSA3IDIuMTg3QTMuMjc2IDMuMjc2IDAgMCAxIDkuNjI1Ljg3NUgxNHYxMS4xNTZIOS40Yy0uNTIyIDAtMS4wMjMuMjA4LTEuMzkyLjU3N2wtLjU0NC41NDNoLS45MjhsLS41NDQtLjU0M2MtLjM2OS0uMzctLjg3LS41NzctMS4zOTItLjU3N0gwVi44NzV6bTYuMzQ0IDMuMjgxYTEuOTY5IDEuOTY5IDAgMCAwLTEuOTY5LTEuOTY4SDEuMzEydjguNTNINC42Yy42MjIgMCAxLjIyNS4xNzcgMS43NDQuNTAyVjQuMTU2em0xLjMxMiA3LjA2NFY0LjE1NmMwLTEuMDg3Ljg4Mi0xLjk2OCAxLjk2OS0xLjk2OGgzLjA2M3Y4LjUzSDkuNGMtLjYyMiAwLTEuMjI1LjE3Ny0xLjc0NC41MDJ6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLEEuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0QyhlKXt2YXIgdCxuLHIsbyxhPSgwLHguYykoMTIpLGk9ZS5lcnJvcixsPWUuZGVidWdJbmZvLHM9ZS5mZWVkYmFja0J1dHRvbixjPWUuZ2VuZXJhdGVFcnJvckluZm87YVswXSE9PWl8fGFbMV0hPT1jPyh0PSgwLEEuanN4KSh0cyx7ZXJyb3I6aSxnZW5lcmF0ZUVycm9ySW5mbzpjfSksYVswXT1pLGFbMV09YyxhWzJdPXQpOnQ9YVsyXSxhWzNdIT09aS5tZXNzYWdlPyhuPSgwLEEuanN4KSh0eCx7ZXJyb3JNZXNzYWdlOmkubWVzc2FnZX0pLGFbM109aS5tZXNzYWdlLGFbNF09bik6bj1hWzRdO3ZhciB1PW51bGw9PWw/dm9pZCAwOmwuZGV2dG9vbHNGcm9udGVuZFVybDtyZXR1cm4gYVs1XSE9PXU/KHI9KDAsQS5qc3gpKHRsLHtkZXZ0b29sc0Zyb250ZW5kVXJsOnV9KSxhWzVdPXUsYVs2XT1yKTpyPWFbNl0sYVs3XSE9PXN8fGFbOF0hPT10fHxhWzldIT09bnx8YVsxMF0hPT1yPyhvPSgwLEEuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhclwiLGNoaWxkcmVuOltzLHQsbixyXX0pLGFbN109cyxhWzhdPXQsYVs5XT1uLGFbMTBdPXIsYVsxMV09byk6bz1hWzExXSxvfWZ1bmN0aW9uIHRfKGUpe3ZhciB0LG4scixvLGE9KDAseC5jKSgzKTtyZXR1cm4oYVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLEEuanN4KShcImdcIix7aWQ6XCJ0aHVtYi11cC0xNlwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7aWQ6XCJVbmlvblwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi44OTUzMSAyLjIzOTU5QzYuNzI5ODQgMi4xMjE0IDYuNSAyLjIzOTY4IDYuNSAyLjQ0MzAzVjUuMjQ5ODlDNi41IDYuMjE2MzkgNS43MTY1IDYuOTk5ODkgNC43NSA2Ljk5OTg5SDIuNVYxMy40OTk5SDEyLjE4ODRDMTIuNzYyIDEzLjQ5OTkgMTMuMjYyIDEzLjEwOTUgMTMuNDAxMSAxMi41NTMxTDE0LjQwMTEgOC41NTMwNkMxNC41OTg0IDcuNzY0MTIgMTQuMDAxNyA2Ljk5OTg5IDEzLjE4ODQgNi45OTk4OUg5LjI1SDguNVY2LjI0OTg5VjMuNTE0NDZDOC41IDMuNDMzNzIgOC40NjEwMSAzLjM1Nzk1IDguMzk1MzEgMy4zMTEwMkw2Ljg5NTMxIDIuMjM5NTlaTTUgMi40NDMwM0M1IDEuMDE5NjMgNi42MDg5IDAuMTkxNjU2IDcuNzY3MTcgMS4wMTg5OUw5LjI2NzE3IDIuMDkwNDJDOS43MjcwNiAyLjQxODkyIDEwIDIuOTQ5MjkgMTAgMy41MTQ0NlY1LjQ5OTg5SDEzLjE4ODRDMTQuOTc3NSA1LjQ5OTg5IDE2LjI5MDMgNy4xODEyMSAxNS44NTYzIDguOTE2ODZMMTQuODU2MyAxMi45MTY5QzE0LjU1MDMgMTQuMTQxMSAxMy40NTAzIDE0Ljk5OTkgMTIuMTg4NCAxNC45OTk5SDEuNzVIMVYxNC4yNDk5VjYuMjQ5ODlWNS40OTk4OUgxLjc1SDQuNzVDNC44ODgwNyA1LjQ5OTg5IDUgNS4zODc5NiA1IDUuMjQ5ODlWMi40NDMwM1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxBLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2xhc3NOYW1lOlwidGh1bWJzLXVwLWljb25cIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0ayhlKXt2YXIgdCxuLHIsbyxhPSgwLHguYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS44OTUzMSAxMi43NjAzQzUuNzI5ODQgMTIuODc4NSA1LjUgMTIuNzYwMiA1LjUgMTIuNTU2OVY5Ljc1QzUuNSA4Ljc4MzUgNC43MTY1IDggMy43NSA4SDEuNVYxLjVIMTEuMTg4NEMxMS43NjIgMS41IDEyLjI2MiAxLjg5MDM3IDEyLjQwMTEgMi40NDY4M0wxMy40MDExIDYuNDQ2ODNDMTMuNTk4NCA3LjIzNTc2IDEzLjAwMTcgOCAxMi4xODg0IDhIOC4yNUg3LjVWOC43NVYxMS40ODU0QzcuNSAxMS41NjYyIDcuNDYxMDEgMTEuNjQxOSA3LjM5NTMxIDExLjY4ODlMNS44OTUzMSAxMi43NjAzWk00IDEyLjU1NjlDNCAxMy45ODAzIDUuNjA4OSAxNC44MDgyIDYuNzY3MTcgMTMuOTgwOUw4LjI2NzE3IDEyLjkwOTVDOC43MjcwNiAxMi41ODEgOSAxMi4wNTA2IDkgMTEuNDg1NFY5LjVIMTIuMTg4NEMxMy45Nzc1IDkuNSAxNS4yOTAzIDcuODE4NjggMTQuODU2MyA2LjA4MzAzTDEzLjg1NjMgMi4wODMwM0MxMy41NTAzIDAuODU4ODE2IDEyLjQ1MDMgMCAxMS4xODg0IDBIMC43NUgwVjAuNzVWOC43NVY5LjVIMC43NUgzLjc1QzMuODg4MDcgOS41IDQgOS42MTE5MyA0IDkuNzVWMTIuNTU2OVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxhWzBdPXIpOnI9YVswXSxhWzFdIT09ZSk/KG89KDAsQS5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNsYXNzTmFtZTpcInRodW1icy1kb3duLWljb25cIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0RShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdGooZSx0LG4scixvLGEsaSl7dHJ5e3ZhciBsPWVbYV0oaSkscz1sLnZhbHVlfWNhdGNoKGUpe24oZSk7cmV0dXJufWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gdFMoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHRPKGUpe3ZhciB0LG4scj1lLmVycm9yQ29kZSxvPWUuY2xhc3NOYW1lLGE9KHQ9KDAsdy51c2VTdGF0ZSkoe30pLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB0RShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB0RShlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksaT1hWzBdLGw9YVsxXSxzPWlbcl0sYz1wcm9jZXNzLmVudi5fX05FWFRfVEVMRU1FVFJZX0RJU0FCTEVELHU9KDAsdy51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fSh0aGlzLGZ1bmN0aW9uKHQpe3N3aXRjaCh0LmxhYmVsKXtjYXNlIDA6bChmdW5jdGlvbih0KXt2YXIgbixvO3JldHVybiBuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt0UyhlLHQsblt0XSl9KX1yZXR1cm4gZX0oe30sdCksbz1udWxsIT0obz10Uyh7fSxyLGUpKT9vOnt9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sZSkpfSksbn0pLHQubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHQudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCxmZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2Vycm9yX2ZlZWRiYWNrP1wiKS5jb25jYXQobmV3IFVSTFNlYXJjaFBhcmFtcyh7ZXJyb3JDb2RlOnIsd2FzSGVscGZ1bDplLnRvU3RyaW5nKCl9KSkpXTtjYXNlIDI6cmV0dXJuIHQuc2VudCgpLm9rfHxjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHJlY29yZCBmZWVkYmFjayBvbiB0aGUgc2VydmVyLlwiKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVjb3JkIGZlZWRiYWNrOlwiLHQuc2VudCgpKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGkoZSl7dGooYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7dGooYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX0pKCl9LFtyXSk7cmV0dXJuKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTplSihcImVycm9yLWZlZWRiYWNrXCIsbykscm9sZTpcInJlZ2lvblwiLFwiYXJpYS1sYWJlbFwiOlwiRXJyb3IgZmVlZGJhY2tcIixjaGlsZHJlbjp2b2lkIDAhPT1zPygwLEEuanN4KShcInBcIix7Y2xhc3NOYW1lOlwiZXJyb3ItZmVlZGJhY2stdGhhbmtzXCIscm9sZTpcInN0YXR1c1wiLFwiYXJpYS1saXZlXCI6XCJwb2xpdGVcIixjaGlsZHJlbjpcIlRoYW5rcyBmb3IgeW91ciBmZWVkYmFjayFcIn0pOigwLEEuanN4cykoQS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLEEuanN4KShcInBcIix7Y2hpbGRyZW46KDAsQS5qc3gpKFwiYVwiLHtocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL3RlbGVtZXRyeSNlcnJvci1mZWVkYmFja1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIix0YXJnZXQ6XCJfYmxhbmtcIixjaGlsZHJlbjpcIldhcyB0aGlzIGhlbHBmdWw/XCJ9KX0pLCgwLEEuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZGlzYWJsZWRcIjpjP1widHJ1ZVwiOnZvaWQgMCxcImFyaWEtbGFiZWxcIjpcIk1hcmsgYXMgaGVscGZ1bFwiLG9uQ2xpY2s6Yz92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gdSghMCl9LGNsYXNzTmFtZTplSihcImZlZWRiYWNrLWJ1dHRvblwiLCEwPT09cyYmXCJ2b3RlZFwiKSx0aXRsZTpjP1wiRmVlZGJhY2sgZGlzYWJsZWQgZHVlIHRvIHNldHRpbmcgTkVYVF9URUxFTUVUUllfRElTQUJMRURcIjp2b2lkIDAsdHlwZTpcImJ1dHRvblwiLGNoaWxkcmVuOigwLEEuanN4KSh0Xyx7XCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSl9KSwoMCxBLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWRpc2FibGVkXCI6Yz9cInRydWVcIjp2b2lkIDAsXCJhcmlhLWxhYmVsXCI6XCJNYXJrIGFzIG5vdCBoZWxwZnVsXCIsb25DbGljazpjP3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiB1KCExKX0sY2xhc3NOYW1lOmVKKFwiZmVlZGJhY2stYnV0dG9uXCIsITE9PT1zJiZcInZvdGVkXCIpLHRpdGxlOmM/XCJGZWVkYmFjayBkaXNhYmxlZCBkdWUgdG8gc2V0dGluZyBORVhUX1RFTEVNRVRSWV9ESVNBQkxFRFwiOnZvaWQgMCx0eXBlOlwiYnV0dG9uXCIsY2hpbGRyZW46KDAsQS5qc3gpKHRrLHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsc3R5bGU6e3RyYW5zbGF0ZTpcIjFweCAxcHhcIn19KX0pXX0pfSl9ZnVuY3Rpb24gdEIoZSl7dmFyIHQsbixyPSgwLHguYykoNCksbz1lLmVycm9yQ29kZTtyZXR1cm4gclswXSE9PW8/KHQ9bz8oMCxBLmpzeCkodE8se2NsYXNzTmFtZTpcImVycm9yLWZlZWRiYWNrXCIsZXJyb3JDb2RlOm99KTpudWxsLHJbMF09byxyWzFdPXQpOnQ9clsxXSxyWzJdIT09dD8obj0oMCxBLmpzeCkoXCJmb290ZXJcIix7XCJkYXRhLW5leHRqcy1lcnJvci1vdmVybGF5LWZvb3RlclwiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktZm9vdGVyXCIsY2hpbGRyZW46dH0pLHJbMl09dCxyWzNdPW4pOm49clszXSxufXZhciB0UD1cIlxcbiAgLmVycm9yLW92ZXJsYXktZm9vdGVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcbiAgICBnYXA6IDhweDtcXG4gICAgcGFkZGluZzogMTJweDtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgfVxcblxcbiAgLmVycm9yLWZlZWRiYWNrIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuXFxuICAgIHAge1xcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFwiLmNvbmNhdChcIlxcbiAgLmVycm9yLWZlZWRiYWNrIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICB9XFxuXFxuICAuZXJyb3ItZmVlZGJhY2stdGhhbmtzIHtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZy1yaWdodDogNHB4OyAvKiBUbyBtYXRjaCB0aGUgNHB4IGlubmVyIHBhZGRpbmcgb2YgdGhlIHRodW1icyB1cCBhbmQgZG93biBpY29ucyAqL1xcbiAgfVxcblxcbiAgLmZlZWRiYWNrLWJ1dHRvbiB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZCk7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTI0KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0xMDApO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTIwMCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5mZWVkYmFjay1idXR0b25bYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcXG4gICAgb3BhY2l0eTogMC43O1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgfVxcblxcbiAgLmZlZWRiYWNrLWJ1dHRvbi52b3RlZCB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMjAwKTtcXG4gIH1cXG5cXG4gIC50aHVtYnMtdXAtaWNvbixcXG4gIC50aHVtYnMtZG93bi1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgfVxcblwiLFwiXFxuXCIpO2Z1bmN0aW9uIHRJKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB0VChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdEkoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdEkoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gdHooZSl7dmFyIHQsbixyLG8sYSxpPSgwLHguYykoMTIpLGw9ZS5lcnJvck1lc3NhZ2Uscz10VCgoMCx3LnVzZVN0YXRlKSghMSksMiksYz1zWzBdLHU9c1sxXSxkPXRUKCgwLHcudXNlU3RhdGUpKCExKSwyKSxmPWRbMF0scD1kWzFdLGg9KDAsdy51c2VSZWYpKG51bGwpO2lbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD1mdW5jdGlvbigpe2guY3VycmVudCYmcChoLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0PjIwMCl9LGlbMF09dCk6dD1pWzBdLGlbMV0hPT1sPyhuPVtsXSxpWzFdPWwsaVsyXT1uKTpuPWlbMl0sKDAsdy51c2VMYXlvdXRFZmZlY3QpKHQsbik7dmFyIG09XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzYyBcIi5jb25jYXQoZiYmIWM/XCJ0cnVuY2F0ZWRcIjpcIlwiKTtyZXR1cm4gaVszXSE9PWx8fGlbNF0hPT1tPyhyPSgwLEEuanN4KShcInBcIix7cmVmOmgsaWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLGNsYXNzTmFtZTptLGNoaWxkcmVuOmx9KSxpWzNdPWwsaVs0XT1tLGlbNV09cik6cj1pWzVdLGlbNl0hPT1jfHxpWzddIT09Zj8obz1mJiYhYyYmKDAsQS5qc3hzKShBLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19ncmFkaWVudF9vdmVybGF5XCJ9KSwoMCxBLmpzeCkoXCJidXR0b25cIix7b25DbGljazpmdW5jdGlvbigpe3JldHVybiB1KCEwKX0sY2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2V4cGFuZF9idXR0b25cIixcImFyaWEtZXhwYW5kZWRcIjpjLFwiYXJpYS1jb250cm9sc1wiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2NcIixjaGlsZHJlbjpcIlNob3cgTW9yZVwifSldfSksaVs2XT1jLGlbN109ZixpWzhdPW8pOm89aVs4XSxpWzldIT09cnx8aVsxMF0hPT1vPyhhPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX3dyYXBwZXJcIixjaGlsZHJlbjpbcixvXX0pLGlbOV09cixpWzEwXT1vLGlbMTFdPWEpOmE9aVsxMV0sYX1mdW5jdGlvbiB0RChlKXt2YXIgdCxuPSgwLHguYykoMikscj1lLmVycm9yVHlwZTtyZXR1cm4gblswXSE9PXI/KHQ9KDAsQS5qc3gpKFwic3BhblwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLGNsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLGNoaWxkcmVuOnJ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB0TChlKXt2YXIgdCxuLHI9KDAseC5jKSg0KSxvPWUudGl0bGUsYT1lLmNsYXNzTmFtZTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05LjI0OTk2IDEyLjA2MDhMOC43MTk2MyAxMS41MzA0TDUuODk2NDEgOC43MDcyMkM1LjUwNTg4IDguMzE2NyA1LjUwNTg4IDcuNjgzNTMgNS44OTY0MSA3LjI5MzAxTDguNzE5NjMgNC40Njk3OEw5LjI0OTk2IDMuOTM5NDVMMTAuMzEwNiA1LjAwMDExTDkuNzgwMjkgNS41MzA0NEw3LjMxMDYyIDguMDAwMTFMOS43ODAyOSAxMC40Njk4TDEwLjMxMDYgMTEuMDAwMUw5LjI0OTk2IDEyLjA2MDhaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PWF8fHJbMl0hPT1vPyhuPSgwLEEuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXCJhcmlhLWxhYmVsXCI6byxjbGFzc05hbWU6YSxjaGlsZHJlbjp0fSksclsxXT1hLHJbMl09byxyWzNdPW4pOm49clszXSxufWZ1bmN0aW9uIHROKGUpe3ZhciB0LG4scj0oMCx4LmMpKDQpLG89ZS50aXRsZSxhPWUuY2xhc3NOYW1lO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTYuNzUwMTEgMy45Mzk0NUw3LjI4MDQ0IDQuNDY5NzhMMTAuMTAzNyA3LjI5MzAxQzEwLjQ5NDIgNy42ODM1MyAxMC40OTQyIDguMzE2NyAxMC4xMDM3IDguNzA3MjJMNy4yODA0NCAxMS41MzA0TDYuNzUwMTEgMTIuMDYwOEw1LjY4OTQ1IDExLjAwMDFMNi4yMTk3OCAxMC40Njk4TDguNjg5NDUgOC4wMDAxMUw2LjIxOTc4IDUuNTMwNDRMNS42ODk0NSA1LjAwMDExTDYuNzUwMTEgMy45Mzk0NVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09YXx8clsyXSE9PW8/KG49KDAsQS5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjbGFzc05hbWU6YSxcImFyaWEtbGFiZWxcIjpvLGNoaWxkcmVuOnR9KSxyWzFdPWEsclsyXT1vLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gdFIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHRNKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdj0oMCx4LmMpKDQwKSxiPWUucnVudGltZUVycm9ycyxDPWUuYWN0aXZlSWR4LF89ZS5vbkFjdGl2ZUluZGV4Q2hhbmdlO3ZbMF0hPT1DfHx2WzFdIT09Xz8ocj1mdW5jdGlvbigpe3JldHVybigwLHcuc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe0M+MCYmXyhNYXRoLm1heCgwLEMtMSkpfSl9LHZbMF09Qyx2WzFdPV8sdlsyXT1yKTpyPXZbMl07dmFyIGs9cjt2WzNdIT09Q3x8dls0XSE9PV98fHZbNV0hPT1iLmxlbmd0aD8obz1mdW5jdGlvbigpe3JldHVybigwLHcuc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe0M8Yi5sZW5ndGgtMSYmXyhNYXRoLm1heCgwLE1hdGgubWluKGIubGVuZ3RoLTEsQysxKSkpfSl9LHZbM109Qyx2WzRdPV8sdls1XT1iLmxlbmd0aCx2WzZdPW8pOm89dls2XTt2YXIgRT1vLGo9KDAsdy51c2VSZWYpKG51bGwpLFM9KDAsdy51c2VSZWYpKG51bGwpLE89KHQ9KDAsdy51c2VTdGF0ZSkobnVsbCksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRSKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRSKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxCPU9bMF0sUD1PWzFdO3ZbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbihlKXtQKGUpfSx2WzddPWEpOmE9dls3XTt2YXIgST1hO3ZbOF0hPT1FfHx2WzldIT09a3x8dlsxMF0hPT1CPyhpPWZ1bmN0aW9uKCl7aWYobnVsbCE9Qil7dmFyIGU9Qi5nZXRSb290Tm9kZSgpLHQ9c2VsZi5kb2N1bWVudCxuPWZ1bmN0aW9uKGUpe1wiQXJyb3dMZWZ0XCI9PT1lLmtleT8oZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksayYmaygpKTpcIkFycm93UmlnaHRcIj09PWUua2V5JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksRSYmRSgpKX07cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixuKSxlIT09dCYmdC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLG4pLGZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLG4pLGUhPT10JiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsbil9fX0sbD1bQixFLGtdLHZbOF09RSx2WzldPWssdlsxMF09Qix2WzExXT1pLHZbMTJdPWwpOihpPXZbMTFdLGw9dlsxMl0pLCgwLHcudXNlRWZmZWN0KShpLGwpLHZbMTNdIT09Q3x8dlsxNF0hPT1CfHx2WzE1XSE9PWIubGVuZ3RoPyhzPWZ1bmN0aW9uKCl7aWYobnVsbCE9Qil7dmFyIGUsdCxuPUIuZ2V0Um9vdE5vZGUoKTtpZihlPW4sbnVsbCE9KHQ9U2hhZG93Um9vdCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLmhhc0luc3RhbmNlXT8hIXRbU3ltYm9sLmhhc0luc3RhbmNlXShlKTplIGluc3RhbmNlb2YgdCl7dmFyIHI9bi5hY3RpdmVFbGVtZW50OzA9PT1DP2ouY3VycmVudCYmcj09PWouY3VycmVudCYmai5jdXJyZW50LmJsdXIoKTpDPT09Yi5sZW5ndGgtMSYmUy5jdXJyZW50JiZyPT09Uy5jdXJyZW50JiZTLmN1cnJlbnQuYmx1cigpfX19LGM9W0IsQyxiLmxlbmd0aF0sdlsxM109Qyx2WzE0XT1CLHZbMTVdPWIubGVuZ3RoLHZbMTZdPXMsdlsxN109Yyk6KHM9dlsxNl0sYz12WzE3XSksKDAsdy51c2VFZmZlY3QpKHMsYyk7dmFyIFQ9MD09PUMsej0wPT09Qzt2WzE4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLEEuanN4KSh0TCx7dGl0bGU6XCJwcmV2aW91c1wiLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b24taWNvblwifSksdlsxOF09dSk6dT12WzE4XSx2WzE5XSE9PWt8fHZbMjBdIT09VHx8dlsyMV0hPT16PyhkPSgwLEEuanN4KShcImJ1dHRvblwiLHtyZWY6aix0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6VCxcImFyaWEtZGlzYWJsZWRcIjp6LG9uQ2xpY2s6ayxcImRhdGEtbmV4dGpzLWRpYWxvZy1lcnJvci1wcmV2aW91c1wiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b25cIixjaGlsZHJlbjp1fSksdlsxOV09ayx2WzIwXT1ULHZbMjFdPXosdlsyMl09ZCk6ZD12WzIyXTt2YXIgRD1DKzE7dlsyM10hPT1DfHx2WzI0XSE9PUQ/KGY9KDAsQS5qc3hzKShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctZXJyb3ItaW5kZXhcIjpDLGNoaWxkcmVuOltELFwiL1wiXX0pLHZbMjNdPUMsdlsyNF09RCx2WzI1XT1mKTpmPXZbMjVdO3ZhciBMPWIubGVuZ3RofHwxO3ZbMjZdIT09TD8ocD0oMCxBLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWhlYWRlci10b3RhbC1jb3VudFwiOiEwLGNoaWxkcmVuOkx9KSx2WzI2XT1MLHZbMjddPXApOnA9dlsyN10sdlsyOF0hPT1mfHx2WzI5XSE9PXA/KGg9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXBhZ2luYXRpb24tY291bnRcIixjaGlsZHJlbjpbZixwXX0pLHZbMjhdPWYsdlsyOV09cCx2WzMwXT1oKTpoPXZbMzBdO3ZhciBOPUM+PWIubGVuZ3RoLTEsUj1DPj1iLmxlbmd0aC0xO3JldHVybiB2WzMxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhtPSgwLEEuanN4KSh0Tix7dGl0bGU6XCJuZXh0XCIsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvbi1pY29uXCJ9KSx2WzMxXT1tKTptPXZbMzFdLHZbMzJdIT09RXx8dlszM10hPT1OfHx2WzM0XSE9PVI/KGc9KDAsQS5qc3gpKFwiYnV0dG9uXCIse3JlZjpTLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpOLFwiYXJpYS1kaXNhYmxlZFwiOlIsb25DbGljazpFLFwiZGF0YS1uZXh0anMtZGlhbG9nLWVycm9yLW5leHRcIjohMCxjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXBhZ2luYXRpb24tYnV0dG9uXCIsY2hpbGRyZW46bX0pLHZbMzJdPUUsdlszM109Tix2WzM0XT1SLHZbMzVdPWcpOmc9dlszNV0sdlszNl0hPT1kfHx2WzM3XSE9PWh8fHZbMzhdIT09Zz8oeT0oMCxBLmpzeHMpKFwibmF2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbiBkaWFsb2ctZXhjbHVkZS1jbG9zaW5nLWZyb20tb3V0c2lkZS1jbGlja1wiLHJlZjpJLGNoaWxkcmVuOltkLGgsZ119KSx2WzM2XT1kLHZbMzddPWgsdlszOF09Zyx2WzM5XT15KTp5PXZbMzldLHl9ZnVuY3Rpb24gdFooZSl7dmFyIHQsbixyLG8sYT0oMCx4LmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsQS5qc3gpKFwiY2lyY2xlXCIse2N4OlwiN1wiLGN5OlwiN1wiLHI6XCI1LjVcIixzdHJva2VXaWR0aDpcIjNcIn0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxBLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksYVsxXT1lLGFbMl09byk6bz1hWzJdLG99ZnVuY3Rpb24gdFUoZSl7dmFyIHQsbixyLG8sYSxpPSgwLHguYykoMzEpLGw9ZS52ZXJzaW9uSW5mbyxzPWUuYnVuZGxlck5hbWUsYz1sLnN0YWxlbmVzcztpZihpWzBdIT09c3x8aVsxXSE9PWN8fGlbMl0hPT1sKXt2PVN5bWJvbC5mb3IoXCJyZWFjdC5lYXJseV9yZXR1cm5fc2VudGluZWxcIik7bjp7dmFyIHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbnN0YWxsZWQsbj1lLnN0YWxlbmVzcyxyPWUuZXhwZWN0ZWQsbz1cIlwiLGE9XCJcIixpPVwiXCIsbD1cIk5leHQuanMgXCIuY29uY2F0KHQpO3N3aXRjaChuKXtjYXNlXCJuZXdlci10aGFuLW5wbVwiOmNhc2VcImZyZXNoXCI6bz1sLGE9XCJMYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24gaXMgZGV0ZWN0ZWQgKFwiLmNvbmNhdCh0LFwiKS5cIiksaT1cImZyZXNoXCI7YnJlYWs7Y2FzZVwic3RhbGUtcGF0Y2hcIjpjYXNlXCJzdGFsZS1taW5vclwiOm89XCJcIi5jb25jYXQobCxcIiAoc3RhbGUpXCIpLGE9XCJUaGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gKFwiLmNvbmNhdChyLFwiKSBhdmFpbGFibGUsIHVwZ3JhZGUgcmVjb21tZW5kZWQhIFwiKSxpPVwic3RhbGVcIjticmVhaztjYXNlXCJzdGFsZS1tYWpvclwiOm89XCJcIi5jb25jYXQobCxcIiAob3V0ZGF0ZWQpXCIpLGE9XCJBbiBvdXRkYXRlZCB2ZXJzaW9uIGRldGVjdGVkIChsYXRlc3QgaXMgXCIuY29uY2F0KHIsXCIpLCB1cGdyYWRlIGlzIGhpZ2hseSByZWNvbW1lbmRlZCFcIiksaT1cIm91dGRhdGVkXCI7YnJlYWs7Y2FzZVwic3RhbGUtcHJlcmVsZWFzZVwiOm89XCJcIi5jb25jYXQobCxcIiAoc3RhbGUpXCIpLGE9XCJUaGVyZSBpcyBhIG5ld2VyIGNhbmFyeSB2ZXJzaW9uIChcIi5jb25jYXQocixcIikgYXZhaWxhYmxlLCBwbGVhc2UgdXBncmFkZSEgXCIpLGk9XCJzdGFsZVwiO2JyZWFrO2Nhc2VcInVua25vd25cIjpvPVwiXCIuY29uY2F0KGwsXCIgKHVua25vd24pXCIpLGE9XCJObyBOZXh0LmpzIHZlcnNpb24gZGF0YSB3YXMgZm91bmQuXCIsaT1cInVua25vd25cIn1yZXR1cm57dGV4dDpvLGluZGljYXRvckNsYXNzOmksdGl0bGU6YX19KGwpLGQ9dS50ZXh0LGY9dS5pbmRpY2F0b3JDbGFzcyxwPXUudGl0bGU7aWYoYj1kLHc9cCxtPVwiVHVyYm9wYWNrXCI9PT1zLGMuc3RhcnRzV2l0aChcInN0YWxlXCIpKXt2YXIgaCxtLGcseSx2LGIsdyxDLF8saz1tJiZcInR1cmJvcGFjay10ZXh0XCI7aVsxMF0hPT1rPyhDPWVKKGspLGlbMTBdPWssaVsxMV09Qyk6Qz1pWzExXSxpWzEyXSE9PXN8fGlbMTNdIT09Qz8oXz0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpDLGNoaWxkcmVuOnN9KSxpWzEyXT1zLGlbMTNdPUMsaVsxNF09Xyk6Xz1pWzE0XSx2PSgwLEEuanN4cykoXCJhXCIse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMgZGlhbG9nLWV4Y2x1ZGUtY2xvc2luZy1mcm9tLW91dHNpZGUtY2xpY2tcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsaHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3ZlcnNpb24tc3RhbGVuZXNzXCIsY2hpbGRyZW46WygwLEEuanN4KSh0Wix7Y2xhc3NOYW1lOmVKKFwidmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yXCIsZil9KSwoMCxBLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtdmVyc2lvbi1jaGVja2VyXCI6ITAsdGl0bGU6dyxjaGlsZHJlbjpifSksX119KTticmVhayBufXk9XCJuZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzIGRpYWxvZy1leGNsdWRlLWNsb3NpbmctZnJvbS1vdXRzaWRlLWNsaWNrXCIsaD10WixnPWVKKFwidmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yXCIsZil9aVswXT1zLGlbMV09YyxpWzJdPWwsaVszXT1oLGlbNF09bSxpWzVdPWcsaVs2XT15LGlbN109dixpWzhdPWIsaVs5XT13fWVsc2UgaD1pWzNdLG09aVs0XSxnPWlbNV0seT1pWzZdLHY9aVs3XSxiPWlbOF0sdz1pWzldO2lmKHYhPT1TeW1ib2wuZm9yKFwicmVhY3QuZWFybHlfcmV0dXJuX3NlbnRpbmVsXCIpKXJldHVybiB2O2lbMTVdIT09aHx8aVsxNl0hPT1nPyh0PSgwLEEuanN4KShoLHtjbGFzc05hbWU6Z30pLGlbMTVdPWgsaVsxNl09ZyxpWzE3XT10KTp0PWlbMTddLGlbMThdIT09Ynx8aVsxOV0hPT13PyhuPSgwLEEuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy12ZXJzaW9uLWNoZWNrZXJcIjohMCx0aXRsZTp3LGNoaWxkcmVuOmJ9KSxpWzE4XT1iLGlbMTldPXcsaVsyMF09bik6bj1pWzIwXTt2YXIgRT1tJiZcInR1cmJvcGFjay10ZXh0XCI7cmV0dXJuIGlbMjFdIT09RT8ocj1lSihFKSxpWzIxXT1FLGlbMjJdPXIpOnI9aVsyMl0saVsyM10hPT1zfHxpWzI0XSE9PXI/KG89KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6cixjaGlsZHJlbjpzfSksaVsyM109cyxpWzI0XT1yLGlbMjVdPW8pOm89aVsyNV0saVsyNl0hPT15fHxpWzI3XSE9PXR8fGlbMjhdIT09bnx8aVsyOV0hPT1vPyhhPSgwLEEuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTp5LGNoaWxkcmVuOlt0LG4sb119KSxpWzI2XT15LGlbMjddPXQsaVsyOF09bixpWzI5XT1vLGlbMzBdPWEpOmE9aVszMF0sYX1mdW5jdGlvbiB0RihlKXt2YXIgdCxuLHIsbyxhPSgwLHguYykoMTEpLGk9ZS5ydW50aW1lRXJyb3JzLGw9ZS5hY3RpdmVJZHgscz1lLnNldEFjdGl2ZUluZGV4LGM9ZS52ZXJzaW9uSW5mbyx1PXByb2Nlc3MuZW52Ll9fTkVYVF9CVU5ETEVSfHxcIldlYnBhY2tcIjthWzBdIT09aT8odD1udWxsIT1pP2k6W10sYVswXT1pLGFbMV09dCk6dD1hWzFdO3ZhciBkPW51bGwhPWw/bDowLGY9bnVsbCE9cz9zOnRxO3JldHVybiBhWzJdIT09dHx8YVszXSE9PWR8fGFbNF0hPT1mPyhuPSgwLEEuanN4KSh0SCx7c2lkZTpcImxlZnRcIixjaGlsZHJlbjooMCxBLmpzeCkodE0se3J1bnRpbWVFcnJvcnM6dCxhY3RpdmVJZHg6ZCxvbkFjdGl2ZUluZGV4Q2hhbmdlOmZ9KX0pLGFbMl09dCxhWzNdPWQsYVs0XT1mLGFbNV09bik6bj1hWzVdLGFbNl0hPT1jPyhyPWMmJigwLEEuanN4KSh0SCx7c2lkZTpcInJpZ2h0XCIsY2hpbGRyZW46KDAsQS5qc3gpKHRVLHt2ZXJzaW9uSW5mbzpjLGJ1bmRsZXJOYW1lOnV9KX0pLGFbNl09YyxhWzddPXIpOnI9YVs3XSxhWzhdIT09bnx8YVs5XSE9PXI/KG89KDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XCI6ITAsY2hpbGRyZW46W24scl19KSxhWzhdPW4sYVs5XT1yLGFbMTBdPW8pOm89YVsxMF0sb31mdW5jdGlvbiB0cSgpe31mdW5jdGlvbiB0SChlKXt2YXIgdCxuLHI9KDAseC5jKSg0KSxvPWUuY2hpbGRyZW4sYT1lLnNpZGUsaT12b2lkIDA9PT1hP1wibGVmdFwiOmE7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkodFYse30pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1vfHxyWzJdIT09aT8obj0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktbm90Y2hcIixcImRhdGEtc2lkZVwiOmksY2hpbGRyZW46W28sdF19KSxyWzFdPW8sclsyXT1pLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gdFYoKXt2YXIgZSx0LG4scj0oMCx4LmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9e21hc2tUeXBlOlwiYWxwaGFcIn0sclswXT1lKTplPXJbMF0sclsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4cykoXCJtYXNrXCIse2lkOlwiZXJyb3Jfb3ZlcmxheV9uYXZfbWFzazBfMjY2N18xNDY4N1wiLHN0eWxlOmUsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCItMVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wiLGNoaWxkcmVuOlsoMCxBLmpzeHMpKFwibWFza1wiLHtpZDpcImVycm9yX292ZXJsYXlfbmF2X3BhdGhfMV9vdXRzaWRlXzFfMjY2N18xNDY4N1wiLG1hc2tVbml0czpcInVzZXJTcGFjZU9uVXNlXCIseDpcIjBcIix5OlwiLTFcIix3aWR0aDpcIjYwXCIsaGVpZ2h0OlwiNDNcIixmaWxsOlwiYmxhY2tcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwicmVjdFwiLHtmaWxsOlwid2hpdGVcIix5OlwiLTFcIix3aWR0aDpcIjYwXCIsaGVpZ2h0OlwiNDNcIn0pLCgwLEEuanN4KShcInBhdGhcIix7ZDpcIk0xIDBMOC4wNzgzIDBDMTUuNzcyIDAgMjIuNzgzNiA0LjQxMzI0IDI2LjExMSAxMS4zNTAxTDM0Ljg4ODkgMjkuNjQ5OEMzOC4yMTY0IDM2LjU4NjggNDUuMjI4IDQxIDUyLjkyMTcgNDFINjBIMUwxIDBaXCJ9KV19KSwoMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMSAwTDguMDc4MyAwQzE1Ljc3MiAwIDIyLjc4MzYgNC40MTMyNCAyNi4xMTEgMTEuMzUwMUwzNC44ODg5IDI5LjY0OThDMzguMjE2NCAzNi41ODY4IDQ1LjIyOCA0MSA1Mi45MjE3IDQxSDYwSDFMMSAwWlwiLGZpbGw6XCJ3aGl0ZVwifSksKDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTEgMFYtMUgwVjBMMSAwWk0xIDQxSDBWNDJIMVY0MVpNMzQuODg4OSAyOS42NDk4TDMzLjk4NzMgMzAuMDgyM0wzNC44ODg5IDI5LjY0OThaTTI2LjExMSAxMS4zNTAxTDI3LjAxMjcgMTAuOTE3N0wyNi4xMTEgMTEuMzUwMVpNMSAxSDguMDc4M1YtMUgxVjFaTTYwIDQwSDFWNDJINjBWNDBaTTIgNDFWMEwwIDBMMCA0MUgyWk0yNS4yMDk0IDExLjc4MjZMMzMuOTg3MyAzMC4wODIzTDM1Ljc5MDYgMjkuMjE3NEwyNy4wMTI3IDEwLjkxNzdMMjUuMjA5NCAxMS43ODI2Wk01Mi45MjE3IDQySDYwVjQwSDUyLjkyMTdWNDJaTTMzLjk4NzMgMzAuMDgyM0MzNy40ODExIDM3LjM2NjEgNDQuODQzMyA0MiA1Mi45MjE3IDQyVjQwQzQ1LjYxMjcgNDAgMzguOTUxNyAzNS44MDc0IDM1Ljc5MDYgMjkuMjE3NEwzMy45ODczIDMwLjA4MjNaTTguMDc4MyAxQzE1LjM4NzMgMSAyMi4wNDgzIDUuMTkyNTcgMjUuMjA5NCAxMS43ODI2TDI3LjAxMjcgMTAuOTE3N0MyMy41MTg4IDMuNjMzOSAxNi4xNTY3IC0xIDguMDc4MyAtMVYxWlwiLGZpbGw6XCJibGFja1wiLG1hc2s6XCJ1cmwoI2Vycm9yX292ZXJsYXlfbmF2X3BhdGhfMV9vdXRzaWRlXzFfMjY2N18xNDY4NylcIn0pXX0pLHJbMV09dCk6dD1yWzFdLHJbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxBLmpzeHMpKFwic3ZnXCIse3dpZHRoOlwiNjBcIixoZWlnaHQ6XCI0MlwiLHZpZXdCb3g6XCIwIDAgNjAgNDJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LW5vdGNoLXRhaWxcIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOlwibm9uZVwiLGNoaWxkcmVuOlt0LCgwLEEuanN4cykoXCJnXCIse21hc2s6XCJ1cmwoI2Vycm9yX292ZXJsYXlfbmF2X21hc2swXzI2NjdfMTQ2ODcpXCIsY2hpbGRyZW46WygwLEEuanN4cykoXCJtYXNrXCIse2lkOlwiZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8zX291dHNpZGVfMl8yNjY3XzE0Njg3XCIsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiLTFcIix5OlwiMC4wMjQ0MTQxXCIsd2lkdGg6XCI2MFwiLGhlaWdodDpcIjQzXCIsZmlsbDpcImJsYWNrXCIsY2hpbGRyZW46WygwLEEuanN4KShcInJlY3RcIix7ZmlsbDpcIndoaXRlXCIseDpcIi0xXCIseTpcIjAuMDI0NDE0MVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wifSksKDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUg3LjA3ODNDMTQuNzcyIDEuMDI0NDEgMjEuNzgzNiA1LjQzNzY1IDI1LjExMSAxMi4zNzQ2TDMzLjg4ODkgMzAuNjc0M0MzNy4yMTY0IDM3LjYxMTIgNDQuMjI4IDQyLjAyNDQgNTEuOTIxNyA0Mi4wMjQ0SDU5SDBMMCAxLjAyNDQxWlwifSldfSksKDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUg3LjA3ODNDMTQuNzcyIDEuMDI0NDEgMjEuNzgzNiA1LjQzNzY1IDI1LjExMSAxMi4zNzQ2TDMzLjg4ODkgMzAuNjc0M0MzNy4yMTY0IDM3LjYxMTIgNDQuMjI4IDQyLjAyNDQgNTEuOTIxNyA0Mi4wMjQ0SDU5SDBMMCAxLjAyNDQxWlwiLGZpbGw6XCJ2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKVwifSksKDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUwwIDAuMDI0NDE0MUgtMVYxLjAyNDQxSDBaTTAgNDIuMDI0NEgtMVY0My4wMjQ0SDBMMCA0Mi4wMjQ0Wk0zMy44ODg5IDMwLjY3NDNMMzIuOTg3MyAzMS4xMDY4TDMzLjg4ODkgMzAuNjc0M1pNMjUuMTExIDEyLjM3NDZMMjYuMDEyNyAxMS45NDIxTDI1LjExMSAxMi4zNzQ2Wk0wIDIuMDI0NDFINy4wNzgzVjAuMDI0NDE0MUgwTDAgMi4wMjQ0MVpNNTkgNDEuMDI0NEgwTDAgNDMuMDI0NEg1OVY0MS4wMjQ0Wk0xIDQyLjAyNDRMMSAxLjAyNDQxSC0xTC0xIDQyLjAyNDRIMVpNMjQuMjA5NCAxMi44MDcxTDMyLjk4NzMgMzEuMTA2OEwzNC43OTA2IDMwLjI0MThMMjYuMDEyNyAxMS45NDIxTDI0LjIwOTQgMTIuODA3MVpNNTEuOTIxNyA0My4wMjQ0SDU5VjQxLjAyNDRINTEuOTIxN1Y0My4wMjQ0Wk0zMi45ODczIDMxLjEwNjhDMzYuNDgxMSAzOC4zOTA1IDQzLjg0MzMgNDMuMDI0NCA1MS45MjE3IDQzLjAyNDRWNDEuMDI0NEM0NC42MTI3IDQxLjAyNDQgMzcuOTUxNyAzNi44MzE4IDM0Ljc5MDYgMzAuMjQxOEwzMi45ODczIDMxLjEwNjhaTTcuMDc4MyAyLjAyNDQxQzE0LjM4NzMgMi4wMjQ0MSAyMS4wNDgzIDYuMjE2OTkgMjQuMjA5NCAxMi44MDcxTDI2LjAxMjcgMTEuOTQyMUMyMi41MTg4IDQuNjU4MzEgMTUuMTU2NyAwLjAyNDQxNDEgNy4wNzgzIDAuMDI0NDE0MVYyLjAyNDQxWlwiLGZpbGw6XCJ2YXIoLS1zdHJva2UtY29sb3IpXCIsbWFzazpcInVybCgjZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8zX291dHNpZGVfMl8yNjY3XzE0Njg3KVwifSldfSldfSksclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB0JChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIHRXPVtcIltkYXRhLW5leHQtbWFya11cIixcIltkYXRhLWlzc3Vlcy1vcGVuXVwiLFwiI25leHRqcy1kZXYtdG9vbHMtbWVudVwiLFwiW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XVwiLFwiW2RhdGEtaW5mby1wb3BvdmVyXVwiLFwiW2RhdGEtbmV4dGpzLWRldnRvb2xzLXBhbmVsLW92ZXJsYXldXCIsXCJbZGF0YS1uZXh0anMtZGV2dG9vbHMtcGFuZWwtZm9vdGVyXVwiLFwiW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktZm9vdGVyXVwiXSx0WT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsYixDLF8sayxFLGo9KDAseC5jKSgyMyk7alswXSE9PWU/KGc9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcIm9uQ2xvc2VcIixcImFyaWEtbGFiZWxsZWRieVwiLFwiYXJpYS1kZXNjcmliZWRieVwiXSkscD1lLmNoaWxkcmVuLGg9ZS5jbGFzc05hbWUsbT1lLm9uQ2xvc2UsZj1lW1wiYXJpYS1sYWJlbGxlZGJ5XCJdLGQ9ZVtcImFyaWEtZGVzY3JpYmVkYnlcIl0salswXT1lLGpbMV09ZCxqWzJdPWYsalszXT1wLGpbNF09aCxqWzVdPW0sals2XT1nKTooZD1qWzFdLGY9alsyXSxwPWpbM10saD1qWzRdLG09als1XSxnPWpbNl0pO3ZhciBTPXcudXNlUmVmKG51bGwpLE89KHQ9dy51c2VTdGF0ZShcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50Lmhhc0ZvY3VzKCk/XCJkaWFsb2dcIjp2b2lkIDApLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB0JChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB0JChlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksQj1PWzBdLFA9T1sxXTtyZXR1cm4oals3XSE9PW0/KHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxudWxsPT1tP3ZvaWQgMDptKCl9LGpbN109bSxqWzhdPXkpOnk9als4XSxyPVMsbz10VyxhPXksKHM9KDAseC5jKSg1KSlbMF0hPT1vfHxzWzFdIT09cnx8c1syXSE9PWE/KGk9ZnVuY3Rpb24oKXt2YXIgZT1yJiZcImN1cnJlbnRcImluIHI/ci5jdXJyZW50OnI7aWYobnVsbCE9ZSYmbnVsbCE9YSl7dmFyIHQ9ZnVuY3Rpb24odCl7ISghZXx8ZS5jb250YWlucyh0LnRhcmdldCkpJiYoby5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiB0LnRhcmdldC5jbG9zZXN0KGUpfSl8fGEodCkpfSxuPWUuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHQpLG4uYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsdCx7cGFzc2l2ZTohMX0pLGZ1bmN0aW9uKCl7bi5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHQpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsdCl9fX0sbD1bYSxyLG9dLHNbMF09byxzWzFdPXIsc1syXT1hLHNbM109aSxzWzRdPWwpOihpPXNbM10sbD1zWzRdKSx3LnVzZUVmZmVjdChpLGwpLGpbOV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odj1mdW5jdGlvbigpe2lmKG51bGwhPVMuY3VycmVudCl7dmFyIGU9ZnVuY3Rpb24oKXtQKGRvY3VtZW50Lmhhc0ZvY3VzKCk/XCJkaWFsb2dcIjp2b2lkIDApfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGUpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLGUpLGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLGUpfX19LGI9W10sals5XT12LGpbMTBdPWIpOih2PWpbOV0sYj1qWzEwXSksdy51c2VFZmZlY3QodixiKSxqWzExXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhDPWZ1bmN0aW9uKCl7dmFyIGUsdCxuPVMuY3VycmVudCxyPW51bGw9PW4/dm9pZCAwOm4uZ2V0Um9vdE5vZGUoKSxvPShlPXIsbnVsbCE9KHQ9U2hhZG93Um9vdCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLmhhc0luc3RhbmNlXT8hIXRbU3ltYm9sLmhhc0luc3RhbmNlXShlKTplIGluc3RhbmNlb2YgdCk/bnVsbD09cj92b2lkIDA6ci5hY3RpdmVFbGVtZW50Om51bGw7cmV0dXJuIG51bGw9PW58fG4uZm9jdXMoKSxmdW5jdGlvbigpe251bGw9PW58fG4uYmx1cigpLG51bGw9PW98fG8uZm9jdXMoKX19LF89W10salsxMV09QyxqWzEyXT1fKTooQz1qWzExXSxfPWpbMTJdKSx3LnVzZUVmZmVjdChDLF8pLGpbMTNdIT09bT8oaz1mdW5jdGlvbihlKXtcIkVzY2FwZVwiPT09ZS5rZXkmJihudWxsPT1tfHxtKCkpfSxqWzEzXT1tLGpbMTRdPWspOms9alsxNF0salsxNV0hPT1kfHxqWzE2XSE9PWZ8fGpbMTddIT09cHx8alsxOF0hPT1ofHxqWzE5XSE9PWd8fGpbMjBdIT09Qnx8alsyMV0hPT1rKT8oRT0oMCxBLmpzeCkoXCJkaXZcIiwoYz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtyZWY6Uyx0YWJJbmRleDotMSxcImRhdGEtbmV4dGpzLWRpYWxvZ1wiOiEwLFwiZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XCI6ITAscm9sZTpCLFwiYXJpYS1sYWJlbGxlZGJ5XCI6ZixcImFyaWEtZGVzY3JpYmVkYnlcIjpkLFwiYXJpYS1tb2RhbFwiOlwidHJ1ZVwiLGNsYXNzTmFtZTpoLG9uS2V5RG93bjprfSxnKSx1PXU9e2NoaWxkcmVuOnB9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGMsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModSkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodSkpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsZSkpfSksYykpLGpbMTVdPWQsalsxNl09ZixqWzE3XT1wLGpbMThdPWgsalsxOV09ZyxqWzIwXT1CLGpbMjFdPWssalsyMl09RSk6RT1qWzIyXSxFfTtmdW5jdGlvbiB0SyhlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGM9KDAseC5jKSgxMik7cmV0dXJuKGNbMF0hPT1lPyhpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwib25DbG9zZVwiLFwiZm9vdGVyXCJdKSxyPWUuY2hpbGRyZW4sYT1lLm9uQ2xvc2Usbz1lLmZvb3RlcixjWzBdPWUsY1sxXT1yLGNbMl09byxjWzNdPWEsY1s0XT1pKToocj1jWzFdLG89Y1syXSxhPWNbM10saT1jWzRdKSxjWzVdIT09cnx8Y1s2XSE9PWF8fGNbN10hPT1pKT8obD0oMCxBLmpzeCkodFksKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJhcmlhLWxhYmVsbGVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLFwiYXJpYS1kZXNjcmliZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2NcIixjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWRpYWxvZy1zY3JvbGxcIixvbkNsb3NlOmF9LGkpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksY1s1XT1yLGNbNl09YSxjWzddPWksY1s4XT1sKTpsPWNbOF0sY1s5XSE9PW98fGNbMTBdIT09bD8ocz0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktZGlhbG9nLWNvbnRhaW5lclwiLGNoaWxkcmVuOltsLG9dfSksY1s5XT1vLGNbMTBdPWwsY1sxMV09cyk6cz1jWzExXSxzfWZ1bmN0aW9uIHRYKGUpe3ZhciB0LG4scixvPSgwLHguYykoMik7cmV0dXJuIG9bMF0hPT1lPyhyPSgwLEEuanN4KShcImRpdlwiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiZGF0YS1uZXh0anMtZGlhbG9nLWhlYWRlclwiOiEwfSxlKSxuPW49e2NoaWxkcmVuOmUuY2hpbGRyZW59LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLG9bMF09ZSxvWzFdPXIpOnI9b1sxXSxyfWZ1bmN0aW9uIHRHKGUpe3ZhciB0LG49KDAseC5jKSgyKSxyPWUuY2hpbGRyZW47cmV0dXJuIG5bMF0hPT1yPyh0PSgwLEEuanN4KSh0WCx7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyXCIsY2hpbGRyZW46cn0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIHRRKGUpe3ZhciB0LG49KDAseC5jKSgyKSxyPWUuY2hpbGRyZW47cmV0dXJuIG5bMF0hPT1yPyh0PSgwLEEuanN4KShlSyx7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keVwiLGNoaWxkcmVuOnJ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH12YXIgdEo9MCx0MD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzPSgwLHguYykoOSk7cmV0dXJuKHNbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjbGFzc05hbWVcIixcImNoaWxkcmVuXCJdKSxvPWUuY2xhc3NOYW1lLHI9ZS5jaGlsZHJlbixzWzBdPWUsc1sxXT1yLHNbMl09byxzWzNdPWEpOihyPXNbMV0sbz1zWzJdLGE9c1szXSksc1s0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPVtdLHNbNF09aSk6aT1zWzRdLHcudXNlRWZmZWN0KHQyLGkpLHNbNV0hPT1yfHxzWzZdIT09b3x8c1s3XSE9PWEpPyhsPSgwLEEuanN4KShcImRpdlwiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXlcIjohMCxjbGFzc05hbWU6b30sYSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxzWzVdPXIsc1s2XT1vLHNbN109YSxzWzhdPWwpOmw9c1s4XSxsfTtmdW5jdGlvbiB0MSgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXswIT09dEomJjA9PS0tdEomJih2b2lkIDAhPT1uJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9bixuPXZvaWQgMCksdm9pZCAwIT09ciYmKGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9cixyPXZvaWQgMCkpfSl9ZnVuY3Rpb24gdDIoKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2lmKCEodEorKz4wKSl7dmFyIGU9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO2U+MCYmKG49ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQsZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9XCJcIi5jb25jYXQoZSxcInB4XCIpKSxyPWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3csZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1cImhpZGRlblwifX0pLHQxfWZ1bmN0aW9uIHQ0KCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XFxuICAgIHBhZGRpbmc6IGluaXRpYWw7XFxuICAgIHRvcDogMTB2aDtcXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gdDQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiB0NShlKXt2YXIgdCxuLHIsbyxhLGk9KDAseC5jKSg2KTtyZXR1cm4oaVswXSE9PWU/KG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCJdKSxyPWUuY2hpbGRyZW4saVswXT1lLGlbMV09cixpWzJdPW8pOihyPWlbMV0sbz1pWzJdKSxpWzNdIT09cnx8aVs0XSE9PW8pPyhhPSgwLEEuanN4KSh0MCwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LG8pLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksaVszXT1yLGlbNF09byxpWzVdPWEpOmE9aVs1XSxhfXZhciB0Mz1ldSh0NCgpKTtmdW5jdGlvbiB0NihlKXt2YXIgdCxuLHIsbz0oMCx4LmMpKDQpLGE9TWF0aC5taW4oZS5lcnJvckNvdW50LWUuYWN0aXZlSWR4LTEsMik7cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXIgZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMVwiLGNoaWxkcmVuOlwiMVwifSksbj0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXIgZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMlwiLGNoaWxkcmVuOlwiMlwifSksb1swXT10LG9bMV09bik6KHQ9b1swXSxuPW9bMV0pLG9bMl0hPT1hPyhyPSgwLEEuanN4KShcImRpdlwiLHtcImFyaWEtaGlkZGVuXCI6ITAsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2tcIixjaGlsZHJlbjooMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLXN0YWNrXCIsXCJkYXRhLXN0YWNrLWNvdW50XCI6YSxjaGlsZHJlbjpbdCxuXX0pfSksb1syXT1hLG9bM109cik6cj1vWzNdLHJ9ZnVuY3Rpb24gdDkoZSl7dmFyIHQsbj0oMCx4LmMpKDIpLHI9ZS5lbnZpcm9ubWVudE5hbWU7cmV0dXJuIG5bMF0hPT1yPyh0PSgwLEEuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1lbnZpcm9ubWVudC1uYW1lLWxhYmVsXCI6ITAsY2hpbGRyZW46cn0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIHQ4KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB0NyhlKXt2YXIgdCxuLHI9bnVsbD09ZT92b2lkIDA6ZS5nZXRSb290Tm9kZSgpO3JldHVybih0PXIsbnVsbCE9KG49U2hhZG93Um9vdCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm5bU3ltYm9sLmhhc0luc3RhbmNlXT8hIW5bU3ltYm9sLmhhc0luc3RhbmNlXSh0KTp0IGluc3RhbmNlb2Ygbik/bnVsbD09cj92b2lkIDA6ci5hY3RpdmVFbGVtZW50Om51bGx9ZnVuY3Rpb24gbmUoZSx0LG4scixvKXt2YXIgYSxpLGw9KDAseC5jKSg3KTtsWzBdIT09bnx8bFsxXSE9PXJ8fGxbMl0hPT1vfHxsWzNdIT09ZXx8bFs0XSE9PXQ/KGE9ZnVuY3Rpb24oKXtpZihuKXt2YXIgYSxpPW98fChudWxsPT0oYT1lLmN1cnJlbnQpP3ZvaWQgMDphLm93bmVyRG9jdW1lbnQpLGw9ZnVuY3Rpb24obil7dmFyIG8sYSxpPW4udGFyZ2V0OyEoZS5jdXJyZW50JiZlLmN1cnJlbnQuY29udGFpbnMoaSkpJiYobnVsbCE9KG89ZS5jdXJyZW50KSYmby5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSYmbi5jbGllbnRYPj1lLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC0xMCYmbi5jbGllbnRYPD1lLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrMTAmJm4uY2xpZW50WT49ZS5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC0xMCYmbi5jbGllbnRZPD1lLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tKzEwfHxudWxsIT0oYT10LmN1cnJlbnQpJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpJiZuLmNsaWVudFg+PXQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LTEwJiZuLmNsaWVudFg8PXQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCsxMCYmbi5jbGllbnRZPj10LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLTEwJiZuLmNsaWVudFk8PXQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20rMTB8fHIoXCJvdXRzaWRlXCIpKX0scz1mdW5jdGlvbihlKXtcIkVzY2FwZVwiPT09ZS5rZXkmJnIoXCJlc2NhcGVcIil9O3JldHVybiBudWxsPT1pfHxpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsKSxudWxsPT1pfHxpLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIscyksZnVuY3Rpb24oKXtudWxsPT1pfHxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsKSxudWxsPT1pfHxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIscyl9fX0saT1bbixyLG8sZSx0XSxsWzBdPW4sbFsxXT1yLGxbMl09byxsWzNdPWUsbFs0XT10LGxbNV09YSxsWzZdPWkpOihhPWxbNV0saT1sWzZdKSwoMCx3LnVzZUVmZmVjdCkoYSxpKX12YXIgbnQ9XCJjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjEpXCIsbm49KDAsdy5mb3J3YXJkUmVmKShmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz0oMCx4LmMpKDkpLGE9ZS5zdG9wLGk9ZS5ibHVyLGw9ZS5zaWRlLHM9ZS5zdHlsZSxjPWUuaGVpZ2h0LHU9XCJcIi5jb25jYXQoYyxcInB4XCIpO29bMF0hPT1pfHxvWzFdIT09YXx8b1syXSE9PXN8fG9bM10hPT11PyhuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiLS1zdG9wXCI6YSxcIi0tYmx1clwiOmksXCItLWhlaWdodFwiOnV9LHMpLG9bMF09aSxvWzFdPWEsb1syXT1zLG9bM109dSxvWzRdPW4pOm49b1s0XTt2YXIgZD1uO3JldHVybiBvWzVdIT09dHx8b1s2XSE9PWx8fG9bN10hPT1kPyhyPSgwLEEuanN4KShcImRpdlwiLHtyZWY6dCxcImFyaWEtaGlkZGVuXCI6ITAsXCJkYXRhLW5leHRqcy1zY3JvbGwtZmFkZXJcIjohMCxjbGFzc05hbWU6XCJuZXh0anMtc2Nyb2xsLWZhZGVyXCIsXCJkYXRhLXNpZGVcIjpsLHN0eWxlOmR9KSxvWzVdPXQsb1s2XT1sLG9bN109ZCxvWzhdPXIpOnI9b1s4XSxyfSk7ZnVuY3Rpb24gbnIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG5vKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBucihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBucihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX12YXIgbmE9KDAsdy5mb3J3YXJkUmVmKShmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsYixDLF8saz0oMCx4LmMpKDEzKTtrWzBdIT09ZT8odj1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2hpbGRyZW5cIixcIm1lYXN1cmVcIl0pLGc9ZS5jaGlsZHJlbix5PWUubWVhc3VyZSxrWzBdPWUsa1sxXT1nLGtbMl09eSxrWzNdPXYpOihnPWtbMV0seT1rWzJdLHY9a1szXSk7dmFyIEU9bm8oKDAsdy51c2VTdGF0ZSkobnVsbCksMiksaj1FWzBdLFM9RVsxXSxPPW5vKChuPWoscj15LGw9KDAseC5jKSg3KSxjPShzPW5vKCgwLHcudXNlU3RhdGUpKDApLDIpKVswXSx1PXNbMV0sZj0oZD1ubygoMCx3LnVzZVN0YXRlKSghMCksMikpWzBdLHA9ZFsxXSxsWzBdIT09bnx8bFsxXSE9PXI/KG89ZnVuY3Rpb24oKXtpZihyJiZuKXt2YXIgZSx0PW5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbih0KXt2YXIgbj1ubyh0LDEpWzBdLmNvbnRlbnRSZWN0O2NsZWFyVGltZW91dChlKSxlPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cCghMSl9LDEwMCksdShuLmhlaWdodCl9KTtyZXR1cm4gdC5vYnNlcnZlKG4pLGZ1bmN0aW9uKCl7cmV0dXJuIHQuZGlzY29ubmVjdCgpfX19LGE9W3Isbl0sbFswXT1uLGxbMV09cixsWzJdPW8sbFszXT1hKToobz1sWzJdLGE9bFszXSksKDAsdy51c2VFZmZlY3QpKG8sYSksbFs0XSE9PWN8fGxbNV0hPT1mPyhpPVtjLGZdLGxbNF09YyxsWzVdPWYsbFs2XT1pKTppPWxbNl0saSksMiksQj1PWzBdLFA9T1sxXT9cImF1dG9cIjpCO3JldHVybihrWzRdIT09UD8oYj17aGVpZ2h0OlAsdHJhbnNpdGlvbjpcImhlaWdodCAyNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpXCJ9LGtbNF09UCxrWzVdPWIpOmI9a1s1XSxrWzZdIT09Zz8oQz0oMCxBLmpzeCkoXCJkaXZcIix7cmVmOlMsY2hpbGRyZW46Z30pLGtbNl09ZyxrWzddPUMpOkM9a1s3XSxrWzhdIT09dnx8a1s5XSE9PXR8fGtbMTBdIT09Ynx8a1sxMV0hPT1DKT8oXz0oMCxBLmpzeCkoXCJkaXZcIiwoaD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LHYpLG09bT17cmVmOnQsc3R5bGU6YixjaGlsZHJlbjpDfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhoLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG0pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG0pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLGUpKX0pLGgpKSxrWzhdPXYsa1s5XT10LGtbMTBdPWIsa1sxMV09QyxrWzEyXT1fKTpfPWtbMTJdLF99KTtmdW5jdGlvbiBuaShlKXt2YXIgdCxuLHIsbz0oMCx4LmMpKDYpO29bMF0hPT1lPyhuPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJmaXhlZFwiXSksdD1lLmZpeGVkLG9bMF09ZSxvWzFdPXQsb1syXT1uKToodD1vWzFdLG49b1syXSk7dmFyIGE9ISF0fHx2b2lkIDA7cmV0dXJuIG9bM10hPT1ufHxvWzRdIT09YT8ocj0oMCxBLmpzeCkoXCJkaXZcIixmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcFwiOiEwLFwiZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wLWZpeGVkXCI6YX0sbikpLG9bM109bixvWzRdPWEsb1s1XT1yKTpyPW9bNV0scn1mdW5jdGlvbiBubChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbnMoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIG5jKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBudShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbmwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbmwoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbmQoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LGIsQyxfLGssRSxqLFM9KDAseC5jKSg2NSksTz1lLmVycm9yTWVzc2FnZSxCPWUuZXJyb3JUeXBlLFA9ZS5jaGlsZHJlbixJPWUuZXJyb3JDb2RlLFQ9ZS5lcnJvckNvdW50LHo9ZS5lcnJvcixEPWUuZGVidWdJbmZvLEw9ZS5pc0J1aWxkRXJyb3IsTj1lLm9uQ2xvc2UsUj1lLnZlcnNpb25JbmZvLE09ZS5ydW50aW1lRXJyb3JzLFo9ZS5hY3RpdmVJZHgsVT1lLnNldEFjdGl2ZUluZGV4LEY9ZS5pc1R1cmJvcGFjayxxPWUuZGlhbG9nUmVzaXplclJlZixIPWUuZ2VuZXJhdGVFcnJvckluZm8sVj1lLnJlbmRlcmVkLCQ9ZS50cmFuc2l0aW9uRHVyYXRpb25NcyxXPXZvaWQgMD09PVZ8fFYsWT1cIlwiLmNvbmNhdCgkLFwibXNcIik7U1swXSE9PVk/KHI9e1wiLS10cmFuc2l0aW9uLWR1cmF0aW9uXCI6WX0sU1swXT1ZLFNbMV09cik6cj1TWzFdO3ZhciBLPXI7U1syXSE9PVd8fFNbM10hPT1LPyhvPXtcImRhdGEtcmVuZGVyZWRcIjpXLHN0eWxlOkt9LFNbMl09VyxTWzNdPUssU1s0XT1vKTpvPVNbNF07dmFyIFg9byxHPW51KHcudXNlU3RhdGUoISEkKSwyKSxRPUdbMF0sSj1HWzFdLGVlPXcudXNlUmVmKG51bGwpLGV0PSEhSSxlbj13LnVzZVJlZihudWxsKTt0PWVuLG49VywoMCx3LnVzZUVmZmVjdCkoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlKXtpZihcIlRhYlwiPT09ZS5rZXkmJm51bGwhPT1yKXt2YXIgdCxuLG8sYT0obj0odD1yLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbiwgW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJykpP1t0WzBdLHRbdC5sZW5ndGgtMV1dOltdLG89MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShuKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShuLDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB0OChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB0OChlLHQpfX0obixvKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksaT1hWzBdLGw9YVsxXSxzPXQ3KHIpO2Uuc2hpZnRLZXk/cz09PWkmJihudWxsPT1sfHxsLmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpKTpzPT09bCYmKG51bGw9PWl8fGkuZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCkpfX0scj1udWxsLG89c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHI9dC5jdXJyZW50LG4pbnVsbD09cnx8ci5mb2N1cygpLG51bGw9PXJ8fHIuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKTtlbHNlIHQ3KHIpfSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG8pLG51bGw9PXJ8fHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKX19LFtuXSksU1s1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPWZ1bmN0aW9uKGUpe2lmKGVlLmN1cnJlbnQpe3ZhciB0LG4scj0odD1lLmN1cnJlbnRUYXJnZXQuc2Nyb2xsVG9wLzE3LE1hdGgubWluKE1hdGgubWF4KHQsKG49bnUoWzAsMV0sMikpWzBdKSxuWzFdKSk7ZWUuY3VycmVudC5zdHlsZS5vcGFjaXR5PVN0cmluZyhyKX19LFNbNV09YSk6YT1TWzVdO3ZhciBlcj1hO1NbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaT1mdW5jdGlvbihlKXt2YXIgdD1lLnByb3BlcnR5TmFtZSxuPWUudGFyZ2V0O1wic2NhbGVcIj09PXQmJm49PT1lbi5jdXJyZW50JiZKKCExKX0sU1s2XT1pKTppPVNbNl07dmFyIGVvPWk7U1s3XSE9PUw/KGw9KDAsQS5qc3gpKG5pLHtmaXhlZDpMfSksU1s3XT1MLFNbOF09bCk6bD1TWzhdLFNbOV0hPT1afHxTWzEwXSE9PUZ8fFNbMTFdIT09TXx8U1sxMl0hPT1VfHxTWzEzXSE9PVI/KHM9KDAsQS5qc3gpKHRGLHtydW50aW1lRXJyb3JzOk0sYWN0aXZlSWR4Olosc2V0QWN0aXZlSW5kZXg6VSx2ZXJzaW9uSW5mbzpSLGlzVHVyYm9wYWNrOkZ9KSxTWzldPVosU1sxMF09RixTWzExXT1NLFNbMTJdPVUsU1sxM109UixTWzE0XT1zKTpzPVNbMTRdLFNbMTVdIT09SXx8U1sxNl0hPT1ldD8oYz1ldCYmKDAsQS5qc3gpKHRCLHtlcnJvckNvZGU6SX0pLFNbMTVdPUksU1sxNl09ZXQsU1sxN109Yyk6Yz1TWzE3XTt2YXIgZWE9IVE7U1sxOF0hPT1CPyh1PSgwLEEuanN4KSh0RCx7ZXJyb3JUeXBlOkJ9KSxTWzE4XT1CLFNbMTldPXUpOnU9U1sxOV0sU1syMF0hPT16LmVudmlyb25tZW50TmFtZT8oZD16LmVudmlyb25tZW50TmFtZSYmKDAsQS5qc3gpKHQ5LHtlbnZpcm9ubWVudE5hbWU6ei5lbnZpcm9ubWVudE5hbWV9KSxTWzIwXT16LmVudmlyb25tZW50TmFtZSxTWzIxXT1kKTpkPVNbMjFdLFNbMjJdIT09dXx8U1syM10hPT1kPyhmPSgwLEEuanN4cykoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtZXJyb3ItbGFiZWwtZ3JvdXBcIjohMCxjaGlsZHJlbjpbdSxkXX0pLFNbMjJdPXUsU1syM109ZCxTWzI0XT1mKTpmPVNbMjRdLFNbMjVdIT09RHx8U1syNl0hPT16fHxTWzI3XSE9PUg/KHA9KDAsQS5qc3gpKHRDLHtlcnJvcjp6LGRlYnVnSW5mbzpELGdlbmVyYXRlRXJyb3JJbmZvOkh9KSxTWzI1XT1ELFNbMjZdPXosU1syN109SCxTWzI4XT1wKTpwPVNbMjhdLFNbMjldIT09SXx8U1szMF0hPT1mfHxTWzMxXSE9PXA/KGg9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2Vycm9yX3RpdGxlXCIsXCJkYXRhLW5leHRqcy1lcnJvci1jb2RlXCI6SSxjaGlsZHJlbjpbZixwXX0pLFNbMjldPUksU1szMF09ZixTWzMxXT1wLFNbMzJdPWgpOmg9U1szMl0sU1szM10hPT1PPyhtPSgwLEEuanN4KSh0eix7ZXJyb3JNZXNzYWdlOk99KSxTWzMzXT1PLFNbMzRdPW0pOm09U1szNF0sU1szNV0hPT1ofHxTWzM2XSE9PW0/KGc9KDAsQS5qc3hzKSh0Ryx7Y2hpbGRyZW46W2gsbV19KSxTWzM1XT1oLFNbMzZdPW0sU1szN109Zyk6Zz1TWzM3XSxTWzM4XSE9PVA/KHk9KDAsQS5qc3gpKHRRLHtjaGlsZHJlbjpQfSksU1szOF09UCxTWzM5XT15KTp5PVNbMzldLFNbNDBdIT09Z3x8U1s0MV0hPT15Pyh2PSgwLEEuanN4cykoZVgse2NoaWxkcmVuOltnLHldfSksU1s0MF09ZyxTWzQxXT15LFNbNDJdPXYpOnY9U1s0Ml0sU1s0M10hPT1xfHxTWzQ0XSE9PWVhfHxTWzQ1XSE9PXY/KGI9KDAsQS5qc3gpKG5hLHtyZWY6cSxtZWFzdXJlOmVhLFwiZGF0YS1uZXh0anMtZGlhbG9nLXNpemVyXCI6ITAsY2hpbGRyZW46dn0pLFNbNDNdPXEsU1s0NF09ZWEsU1s0NV09dixTWzQ2XT1iKTpiPVNbNDZdO3ZhciBlaT1udWxsIT1aP1o6MDtyZXR1cm4gU1s0N10hPT1UfHxTWzQ4XSE9PWVpPyhDPSgwLEEuanN4KSh0Nix7ZXJyb3JDb3VudDpULGFjdGl2ZUlkeDplaX0pLFNbNDddPVQsU1s0OF09ZWksU1s0OV09Qyk6Qz1TWzQ5XSxTWzUwXSE9PWV0fHxTWzUxXSE9PU58fFNbNTJdIT09Y3x8U1s1M10hPT1ifHxTWzU0XSE9PUM/KF89KDAsQS5qc3hzKSh0Syx7b25DbG9zZTpOLFwiZGF0YS1oYXMtZm9vdGVyXCI6ZXQsb25TY3JvbGw6ZXIsZm9vdGVyOmMsY2hpbGRyZW46W2IsQ119KSxTWzUwXT1ldCxTWzUxXT1OLFNbNTJdPWMsU1s1M109YixTWzU0XT1DLFNbNTVdPV8pOl89U1s1NV0sU1s1Nl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaz0oMCxBLmpzeCkobm4se3JlZjplZSxzaWRlOlwidG9wXCIsc3RvcDpcIjUwJVwiLGJsdXI6XCI0cHhcIixoZWlnaHQ6NDh9KSxTWzU2XT1rKTprPVNbNTZdLFNbNTddIT09WHx8U1s1OF0hPT1ffHxTWzU5XSE9PXM/KEU9KDAsQS5qc3hzKShcImRpdlwiLG5jKG5zKHtcImRhdGEtbmV4dGpzLWRpYWxvZy1yb290XCI6ITAsb25UcmFuc2l0aW9uRW5kOmVvLHJlZjplbn0sWCkse2NoaWxkcmVuOltzLF8sa119KSksU1s1N109WCxTWzU4XT1fLFNbNTldPXMsU1s2MF09RSk6RT1TWzYwXSxTWzYxXSE9PVh8fFNbNjJdIT09RXx8U1s2M10hPT1sPyhqPSgwLEEuanN4cykodDUsbmMobnMoe30sWCkse2NoaWxkcmVuOltsLEVdfSkpLFNbNjFdPVgsU1s2Ml09RSxTWzYzXT1sLFNbNjRdPWopOmo9U1s2NF0san12YXIgbmY9XCJcXG4gIFwiLmNvbmNhdCh0MyxcIlxcbiAgXCIpLmNvbmNhdChcIlxcbiAgLmVycm9yLW92ZXJsYXktZGlhbG9nLWNvbnRhaW5lciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgYm9yZGVyOiB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cykgdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKTtcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1lbnUpO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1kaWFsb2ctc2Nyb2xsIHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblwiLFwiXFxuICBcIikuY29uY2F0KFwiXFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IGgxIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTIwKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgbWFyZ2luOiBjYWxjKDE2cHggKiAxLjUpIDA7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10aXRsZS1oMSk7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHNtYWxsIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudHMtMSk7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciBzbWFsbCA+IHNwYW4ge1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IGRpdiA+IHNtYWxsIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBtYXJnaW4tdG9wOiA0cHg7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gcCA+IGEge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyXFxuICAgID4gLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMTZweDtcXG4gICAgcmlnaHQ6IDE2cHg7XFxuICB9XFxuXCIsXCJcXG4gIFwiKS5jb25jYXQoXCJcIixcIlxcblxcbiAgXCIpLmNvbmNhdChcIlxcbiAgW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XSB7XFxuICAgIC0tc3Ryb2tlLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgIHdpZHRoOiAxMDAlO1xcblxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHotaW5kZXg6IDI7XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIHRyYW5zbGF0ZTogdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpO1xcbiAgICBtYXgtd2lkdGg6IHZhcigtLW5leHQtZGlhbG9nLW1heC13aWR0aCk7XFxuXFxuICAgIC5lcnJvci1vdmVybGF5LW5vdGNoIHtcXG4gICAgICB0cmFuc2xhdGU6IGNhbGModmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSAqIC0xKTtcXG4gICAgICB3aWR0aDogYXV0bztcXG4gICAgICBoZWlnaHQ6IHZhcigtLW5leHQtZGlhbG9nLW5vdGNoLWhlaWdodCk7XFxuICAgICAgcGFkZGluZzogMTJweDtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcXG4gICAgICBib3JkZXI6IHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tc3Ryb2tlLWNvbG9yKTtcXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXG4gICAgICAmW2RhdGEtc2lkZT0nbGVmdCddIHtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpIDAgMCAwO1xcblxcbiAgICAgICAgLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCB7XFxuICAgICAgICAgIHJpZ2h0OiAtNTRweDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgID4gKjpub3QoLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCkge1xcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAmW2RhdGEtc2lkZT0ncmlnaHQnXSB7XFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cykgMCAwO1xcblxcbiAgICAgICAgLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCB7XFxuICAgICAgICAgIGxlZnQ6IC01NHB4O1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgID4gKjpub3QoLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCkge1xcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLTEycHg7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiBjYWxjKHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgKiAtMSk7XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgICAgIHotaW5kZXg6IC0xO1xcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZXJyb3Itb3ZlcmxheS1uYXZdIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcXG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpIHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cykgMCAwO1xcbiAgICAgIGJvcmRlcjogdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zdHJva2UtY29sb3IpO1xcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XFxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICB0cmFuc2xhdGU6IDAgdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKTtcXG4gICAgICBcXG4gICAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaCB7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xcbiAgICAgICAgYm9yZGVyOiAwO1xcblxcbiAgICAgICAgJltkYXRhLXNpZGU9XFxcImxlZnRcXFwiXSwgJltkYXRhLXNpZGU9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCB7XFxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXCIsXCJcXG4gIFwiKS5jb25jYXQoXCJcXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWwge1xcbiAgICBwYWRkaW5nOiAycHggNnB4O1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXJlZC0xMDApO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcmVkLTkwMCk7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gIH1cXG5cIixcIlxcbiAgXCIpLmNvbmNhdChcIlxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc193cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgfVxcblxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcmVkLTkwMCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGxldHRlci1zcGFjaW5nOiAtMC4zMnB4O1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG4gIH1cXG5cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzYy50cnVuY2F0ZWQge1xcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZ3JhZGllbnRfb3ZlcmxheSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgaGVpZ2h0OiA4NXB4O1xcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXFxuICAgICAgMTgwZGVnLFxcbiAgICAgIHJnYmEoMjUwLCAyNTAsIDI1MCwgMCkgMCUsXFxuICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApIDEwMCVcXG4gICAgKTtcXG4gIH1cXG5cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZXhwYW5kX2J1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAxMHB4O1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogNnB4IDhweDtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xcbiAgICBib3gtc2hhZG93OlxcbiAgICAgIDBweCAycHggMnB4IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMTAwKSxcXG4gICAgICAwcHggOHB4IDhweCAtOHB4IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEzKTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTtcXG4gIH1cXG5cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZXhwYW5kX2J1dHRvbjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gIH1cXG5cIixcIlxcbiAgXCIpLmNvbmNhdChcIlxcbiAgLmVycm9yLW92ZXJsYXktdG9vbGJhciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGdhcDogNnB4O1xcbiAgfVxcblxcbiAgLm5vZGVqcy1pbnNwZWN0b3ItYnV0dG9uLFxcbiAgLmNvcHktZXJyb3ItYnV0dG9uLFxcbiAgLmRvY3MtbGluay1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjgpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjgpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtYWxsKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNCk7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE0KTtcXG4gICAgfVxcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgfVxcblxcbiAgICAmOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTEwMCk7XFxuICAgIH1cXG5cXG4gICAgJjpub3QoOmRpc2FibGVkKTphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMjAwKTtcXG4gICAgfVxcblxcbiAgICAmOmRpc2FibGVkIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvbiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICB9XFxuXCIsXCJcXG5cXG4gIFtkYXRhLW5leHRqcy1lcnJvci1sYWJlbC1ncm91cF0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG4gIH1cXG5cIik7ZnVuY3Rpb24gbnAoKXt2YXIgZSx0LG49KGU9W1wiXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIC8qIHNlY29uZGFyeSB6LWluZGV4LCAtMSB0aGFuIHRvYXN0IHotaW5kZXggKi9cXG4gICAgei1pbmRleDogMjE0NzQ4MzY0NjtcXG5cXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBwYWRkaW5nOiAxMHZoIDE1cHggMDtcXG4gIH1cXG5cXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcXG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XFxuICAgICAgcGFkZGluZzogMTVweCAxNXB4IDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BdIHtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tkcm9wKTtcXG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgICB6LWluZGV4OiAtMTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3AtZml4ZWRdIHtcXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcXG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIG5wPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59dmFyIG5oPWV1KG5wKCkpO2Z1bmN0aW9uIG5tKGUpe3ZhciB0LG4scixvLGEsaT0oMCx4LmMpKDkpLGw9ZS5maWxlLHM9ZS5sb2NhdGlvbixjPW51bGwhPSh0PW51bGw9PXM/dm9pZCAwOnMubGluZSk/dDoxLHU9bnVsbCE9KG49bnVsbD09cz92b2lkIDA6cy5jb2x1bW4pP246MTtpWzBdIT09bHx8aVsxXSE9PWN8fGlbMl0hPT11PyhyPXtmaWxlOmwsbGluZTE6Yyxjb2x1bW4xOnV9LGlbMF09bCxpWzFdPWMsaVsyXT11LGlbM109cik6cj1pWzNdO3ZhciBkPWVCKHIpLGY9cz9cIjpcIi5jb25jYXQocy5saW5lLFwiOlwiKS5jb25jYXQocy5jb2x1bW4pOm51bGw7cmV0dXJuIGlbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz0oMCxBLmpzeHMpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsY2hpbGRyZW46WygwLEEuanN4KShcInBhdGhcIix7ZDpcIk0xOCAxM3Y2YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg2XCJ9KSwoMCxBLmpzeCkoXCJwb2x5bGluZVwiLHtwb2ludHM6XCIxNSAzIDIxIDMgMjEgOVwifSksKDAsQS5qc3gpKFwibGluZVwiLHt4MTpcIjEwXCIseTE6XCIxNFwiLHgyOlwiMjFcIix5MjpcIjNcIn0pXX0pLGlbNF09byk6bz1pWzRdLGlbNV0hPT1sfHxpWzZdIT09ZHx8aVs3XSE9PWY/KGE9KDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rXCI6ITAsXCJkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGluay1pbXBvcnQtdHJhY2VcIjohMCxyb2xlOlwibGlua1wiLG9uQ2xpY2s6ZCx0aXRsZTpcIkNsaWNrIHRvIG9wZW4gaW4geW91ciBlZGl0b3JcIixjaGlsZHJlbjpbbCxmLG9dfSksaVs1XT1sLGlbNl09ZCxpWzddPWYsaVs4XT1hKTphPWlbOF0sYX1mdW5jdGlvbiBuZyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIG55PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQ9ZS5jb250ZW50LGY9dy51c2VNZW1vKGZ1bmN0aW9uKCl7dmFyIGUsdCxuO3JldHVybiB0PWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lLnNoaWZ0KCk7aWYoIXIpcmV0dXJuIG51bGw7dmFyIG89KHQ9ci5zcGxpdChcIjpcIiwzKSxuPTMsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwzKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbmcoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbmcoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGE9b1swXSxpPW9bMV0sbD1vWzJdLHM9TnVtYmVyKGkpLGM9TnVtYmVyKGwpLHU9IU51bWJlci5pc05hTihzKSYmIU51bWJlci5pc05hTihjKTtyZXR1cm57ZmlsZU5hbWU6dT9hOnIsbG9jYXRpb246dT97bGluZTE6cyxjb2x1bW4xOmN9OnZvaWQgMH19KGU9ZC5zcGxpdChcIlxcblwiKSksbj1mdW5jdGlvbihlKXtpZihlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuL1JlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yOi8udGVzdChlKX0pfHxlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuL0ltcG9ydCB0cmFjZSBmb3IgcmVxdWVzdGVkIG1vZHVsZTovLnRlc3QoZSl9KSl7Zm9yKHZhciB0PVtdOy8uK1xcLi4rLy50ZXN0KGVbZS5sZW5ndGgtMV0pJiYhZVtlLmxlbmd0aC0xXS5pbmNsdWRlcyhcIjpcIik7KXt2YXIgbj1lLnBvcCgpLnRyaW0oKTt0LnVuc2hpZnQobil9cmV0dXJuIHR9cmV0dXJuW119KGUpLHtmaWxlOnQsc291cmNlOmUuam9pbihcIlxcblwiKSxpbXBvcnRUcmFjZUZpbGVzOm59fSxbZF0pLHA9Zi5maWxlLGg9Zi5zb3VyY2UsbT1mLmltcG9ydFRyYWNlRmlsZXMsZz13LnVzZU1lbW8oZnVuY3Rpb24oKXtyZXR1cm4gZXEoKS5hbnNpVG9Kc29uKGgse2pzb246ITAsdXNlX2NsYXNzZXM6ITAscmVtb3ZlX2VtcHR5OiEwfSl9LFtoXSk7Y29uc29sZS5sb2coe2ZpbGU6cH0pO3ZhciB5PWVCKHtmaWxlOm51bGw9PXA/dm9pZCAwOnAuZmlsZU5hbWUsbGluZTE6bnVsbCE9KGk9bnVsbD09cHx8bnVsbD09KHQ9cC5sb2NhdGlvbik/dm9pZCAwOnQubGluZTEpP2k6MSxjb2x1bW4xOm51bGwhPShsPW51bGw9PXB8fG51bGw9PShuPXAubG9jYXRpb24pP3ZvaWQgMDpuLmNvbHVtbjEpP2w6MX0pLHY9e2ZpbGU6bnVsbCE9KHM9bnVsbD09cD92b2lkIDA6cC5maWxlTmFtZSk/czpudWxsLG1ldGhvZE5hbWU6XCJcIixhcmd1bWVudHM6W10sbGluZTE6bnVsbCE9KGM9bnVsbD09cHx8bnVsbD09KHI9cC5sb2NhdGlvbik/dm9pZCAwOnIubGluZTEpP2M6bnVsbCxjb2x1bW4xOm51bGwhPSh1PW51bGw9PXB8fG51bGw9PShvPXAubG9jYXRpb24pP3ZvaWQgMDpvLmNvbHVtbjEpP3U6bnVsbH0sYj1udWxsPT12fHxudWxsPT0oYT12LmZpbGUpP3ZvaWQgMDphLnNwbGl0KFwiLlwiKS5wb3AoKTtyZXR1cm4oMCxBLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY29kZWZyYW1lXCI6ITAsY2hpbGRyZW46WygwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWhlYWRlclwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1saW5rXCIsY2hpbGRyZW46WygwLEEuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1pY29uXCIsY2hpbGRyZW46KDAsQS5qc3gpKGVMLHtsYW5nOmJ9KX0pLCgwLEEuanN4KShcInNwYW5cIix7XCJkYXRhLXRleHRcIjohMCxjaGlsZHJlbjplTyh2KX0pLCgwLEEuanN4KShcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpcIk9wZW4gaW4gZWRpdG9yXCIsXCJkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGluay1zb3VyY2UtZmlsZVwiOiEwLG9uQ2xpY2s6eSxjaGlsZHJlbjooMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtaWNvblwiLFwiZGF0YS1pY29uXCI6XCJyaWdodFwiLGNoaWxkcmVuOigwLEEuanN4KShleix7d2lkdGg6MTYsaGVpZ2h0OjE2fSl9KX0pXX0pfSksKDAsQS5qc3gpKFwicHJlXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtcHJlXCIsY2hpbGRyZW46KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmVzXCIsY2hpbGRyZW46W2cubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDAsQS5qc3gpKFwic3BhblwiLHtzdHlsZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtjb2xvcjplLmZnP1widmFyKC0tY29sb3ItXCIuY29uY2F0KGUuZmcsXCIpXCIpOnZvaWQgMH0sXCJib2xkXCI9PT1lLmRlY29yYXRpb24/e2ZvbnRXZWlnaHQ6NTAwfTpcIml0YWxpY1wiPT09ZS5kZWNvcmF0aW9uP3tmb250U3R5bGU6XCJpdGFsaWNcIn06dm9pZCAwKSxjaGlsZHJlbjooMCxBLmpzeCkoZUEse3RleHQ6ZS5jb250ZW50fSl9LFwidGVybWluYWwtZW50cnktXCIuY29uY2F0KHQpKX0pLG0ubWFwKGZ1bmN0aW9uKGUpe3JldHVybigwLEEuanN4KShubSx7aXNTb3VyY2VGaWxlOiExLGZpbGU6ZX0sZSl9KV19KX0pXX0pfSxudj1mdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KFwiXFxuXCIpO3JldHVybiBlVigpKHRbMV18fFwiXCIpLnJlcGxhY2UoL15FcnJvcjogLyxcIlwiKX0sbmI9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZD0oMCx4LmMpKDE5KTtkWzBdIT09ZT8obz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wibWVzc2FnZVwiXSkscj1lLm1lc3NhZ2UsZFswXT1lLGRbMV09cixkWzJdPW8pOihyPWRbMV0sbz1kWzJdKSxkWzNdIT09cj8oYT1FcnJvcihyKSxkWzNdPXIsZFs0XT1hKTphPWRbNF07dmFyIGY9YTtkWzVdIT09cj8obD1udihyKXx8XCJGYWlsZWQgdG8gY29tcGlsZVwiLGRbNV09cixkWzZdPWwpOmw9ZFs2XSxpPWwsZFs3XSE9PWl8fGRbOF0hPT1yfHxkWzldIT09by52ZXJzaW9uSW5mby5pbnN0YWxsZWQ/KHM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtpZihlLnB1c2goXCIjIyBFcnJvciBUeXBlXFxuQnVpbGQgRXJyb3JcIiksaSYmZS5wdXNoKFwiIyMgRXJyb3IgTWVzc2FnZVxcblwiLmNvbmNhdChpKSkscil7dmFyIHQ9ZVYoKShyKTtlLnB1c2goXCIjIyBCdWlsZCBPdXRwdXRcXG5cIi5jb25jYXQodCkpfXJldHVyblwiXCIuY29uY2F0KGUuam9pbihcIlxcblxcblwiKSxcIlxcblxcbk5leHQuanMgdmVyc2lvbjogXCIpLmNvbmNhdChvLnZlcnNpb25JbmZvLmluc3RhbGxlZCxcIiAoXCIpLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfQlVORExFUixcIilcXG5cIil9LGRbN109aSxkWzhdPXIsZFs5XT1vLnZlcnNpb25JbmZvLmluc3RhbGxlZCxkWzEwXT1zKTpzPWRbMTBdO3ZhciBwPXM7cmV0dXJuKGRbMTFdIT09cj8oYz0oMCxBLmpzeCkobnkse2NvbnRlbnQ6cn0pLGRbMTFdPXIsZFsxMl09Yyk6Yz1kWzEyXSxkWzEzXSE9PWZ8fGRbMTRdIT09aXx8ZFsxNV0hPT1wfHxkWzE2XSE9PW98fGRbMTddIT09Yyk/KHU9KDAsQS5qc3gpKG5kLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe2Vycm9yVHlwZTpcIkJ1aWxkIEVycm9yXCIsZXJyb3JNZXNzYWdlOmksb25DbG9zZTpuQSxlcnJvcjpmLGdlbmVyYXRlRXJyb3JJbmZvOnB9LG8pLG49bj17Y2hpbGRyZW46Y30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksZFsxM109ZixkWzE0XT1pLGRbMTVdPXAsZFsxNl09byxkWzE3XT1jLGRbMThdPXUpOnU9ZFsxOF0sdX07ZnVuY3Rpb24gbkEoKXt9dmFyIG54PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZj0oMCx4LmMpKDI2KSxwPWUuZnJhbWUsaD1udWxsIT0odD1wLm9yaWdpbmFsU3RhY2tGcmFtZSk/dDpwLnNvdXJjZVN0YWNrRnJhbWUsbT0hIXAub3JpZ2luYWxDb2RlRnJhbWU7ZlswXSE9PWh8fGZbMV0hPT1tPyhuPW0/e2ZpbGU6aC5maWxlLGxpbmUxOm51bGwhPShyPWgubGluZTEpP3I6MSxjb2x1bW4xOm51bGwhPShvPWguY29sdW1uMSk/bzoxfTp2b2lkIDAsZlswXT1oLGZbMV09bSxmWzJdPW4pOm49ZlsyXTt2YXIgZz1lQihuKTtmWzNdIT09aD8oYT1lTyhoKSxmWzNdPWgsZls0XT1hKTphPWZbNF07dmFyIHk9YTtpZigheSlyZXR1cm4gbnVsbDt2YXIgdj0hbTtyZXR1cm4gZls1XSE9PWgubWV0aG9kTmFtZT8oaT0oMCxBLmpzeCkoZUEse3RleHQ6aC5tZXRob2ROYW1lfSksZls1XT1oLm1ldGhvZE5hbWUsZls2XT1pKTppPWZbNl0sZls3XSE9PWgubWV0aG9kTmFtZXx8Zls4XSE9PW18fGZbOV0hPT1nPyhsPW0mJigwLEEuanN4KShcImJ1dHRvblwiLHtvbkNsaWNrOmcsY2xhc3NOYW1lOlwib3Blbi1pbi1lZGl0b3ItYnV0dG9uXCIsXCJhcmlhLWxhYmVsXCI6XCJPcGVuIFwiLmNvbmNhdChoLm1ldGhvZE5hbWUsXCIgaW4gZWRpdG9yXCIpLGNoaWxkcmVuOigwLEEuanN4KShleix7d2lkdGg6MTYsaGVpZ2h0OjE2fSl9KSxmWzddPWgubWV0aG9kTmFtZSxmWzhdPW0sZls5XT1nLGZbMTBdPWwpOmw9ZlsxMF0sZlsxMV0hPT1wLmVycm9yfHxmWzEyXSE9PXAucmVhc29uPyhzPXAuZXJyb3I/KDAsQS5qc3gpKFwiYnV0dG9uXCIse2NsYXNzTmFtZTpcInNvdXJjZS1tYXBwaW5nLWVycm9yLWJ1dHRvblwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcihwLnJlYXNvbil9LHRpdGxlOlwiU291cmNlbWFwcGluZyBmYWlsZWQuIENsaWNrIHRvIGxvZyBjYXVzZSBvZiBlcnJvci5cIixjaGlsZHJlbjooMCxBLmpzeCkoZUQse3dpZHRoOjE2LGhlaWdodDoxNn0pfSk6bnVsbCxmWzExXT1wLmVycm9yLGZbMTJdPXAucmVhc29uLGZbMTNdPXMpOnM9ZlsxM10sZlsxNF0hPT1pfHxmWzE1XSE9PWx8fGZbMTZdIT09cz8oYz0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImNhbGwtc3RhY2stZnJhbWUtbWV0aG9kLW5hbWVcIixjaGlsZHJlbjpbaSxsLHNdfSksZlsxNF09aSxmWzE1XT1sLGZbMTZdPXMsZlsxN109Yyk6Yz1mWzE3XSxmWzE4XSE9PXl8fGZbMTldIT09bT8odT0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImNhbGwtc3RhY2stZnJhbWUtZmlsZS1zb3VyY2VcIixcImRhdGEtaGFzLXNvdXJjZVwiOm0sY2hpbGRyZW46eX0pLGZbMThdPXksZlsxOV09bSxmWzIwXT11KTp1PWZbMjBdLGZbMjFdIT09cC5pZ25vcmVkfHxmWzIyXSE9PXZ8fGZbMjNdIT09Y3x8ZlsyNF0hPT11PyhkPSgwLEEuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXCI6ITAsXCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lLW5vLXNvdXJjZVwiOnYsXCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lLWlnbm9yZWRcIjpwLmlnbm9yZWQsY2hpbGRyZW46W2MsdV19KSxmWzIxXT1wLmlnbm9yZWQsZlsyMl09dixmWzIzXT1jLGZbMjRdPXUsZlsyNV09ZCk6ZD1mWzI1XSxkfTtmdW5jdGlvbiBudygpe3ZhciBlLHQ9KDAseC5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLEEuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTguNzA3MjIgMi4zOTY0MUM4LjMxNjcgMi4wMDU4OCA3LjY4MzUzIDIuMDA1ODggNy4yOTMwMSAyLjM5NjQxTDQuNDY5NzggNS4yMTk2M0wzLjkzOTQ1IDUuNzQ5OTZMNS4wMDAxMSA2LjgxMDYyTDUuNTMwNDQgNi4yODAyOUw4LjAwMDExIDMuODEwNjJMMTAuNDY5OCA2LjI4MDI5TDExLjAwMDEgNi44MTA2MkwxMi4wNjA4IDUuNzQ5OTZMMTEuNTMwNCA1LjIxOTYzTDguNzA3MjIgMi4zOTY0MVpNNS41MzA0NCA5LjcxOTYzTDUuMDAwMTEgOS4xODkzTDMuOTM5NDUgMTAuMjVMNC40Njk3OCAxMC43ODAzTDcuMjkzMDEgMTMuNjAzNUM3LjY4MzUzIDEzLjk5NCA4LjMxNjcgMTMuOTk0IDguNzA3MjIgMTMuNjAzNUwxMS41MzA0IDEwLjc4MDNMMTIuMDYwOCAxMC4yNUwxMS4wMDAxIDkuMTg5M0wxMC40Njk4IDkuNzE5NjNMOC4wMDAxMSAxMi4xODkzTDUuNTMwNDQgOS43MTk2M1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gbkMoKXt2YXIgZSx0LG49KGU9W1wiXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1jb250YWluZXJdIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1oZWFkZXJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBtaW4taGVpZ2h0OiB2YXIoLS1zaXplLTI4KTtcXG4gICAgcGFkZGluZzogOHB4IDhweCAxMnB4IDRweDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay10aXRsZV0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogOHB4O1xcblxcbiAgICBtYXJnaW46IDA7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTYpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stY291bnRdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTIwKTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gICAgZ2FwOiA0cHg7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG5cXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2staWdub3JlZC1saXN0LXRvZ2dsZS1idXR0b25dIHtcXG4gICAgYWxsOiB1bnNldDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA2cHg7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgICBwYWRkaW5nOiA0cHggNnB4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IC02cHg7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTUwbXMgZWFzZTtcXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICB9XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIH1cXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gbkM9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiBuXyhlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCx4LmMpKDE3KSxzPWUuZnJhbWVzLGM9ZS5pc0lnbm9yZUxpc3RPcGVuLHU9ZS5pZ25vcmVkRnJhbWVzVGFsbHksZD1lLm9uVG9nZ2xlSWdub3JlTGlzdDtyZXR1cm4gbFswXSE9PXMubGVuZ3RoPyh0PSgwLEEuanN4cykoXCJwXCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay10aXRsZVwiOiEwLGNoaWxkcmVuOltcIkNhbGwgU3RhY2sgXCIsKDAsQS5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stY291bnRcIjohMCxjaGlsZHJlbjpzLmxlbmd0aH0pXX0pLGxbMF09cy5sZW5ndGgsbFsxXT10KTp0PWxbMV0sbFsyXSE9PXV8fGxbM10hPT1jfHxsWzRdIT09ZD8obj11PjAmJigwLEEuanN4cykoXCJidXR0b25cIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWlnbm9yZWQtbGlzdC10b2dnbGUtYnV0dG9uXCI6YyxvbkNsaWNrOmQsY2hpbGRyZW46W1wiXCIuY29uY2F0KGM/XCJIaWRlXCI6XCJTaG93XCIsXCIgXCIpLmNvbmNhdCh1LFwiIGlnbm9yZS1saXN0ZWQgZnJhbWUocylcIiksKDAsQS5qc3gpKG53LHt9KV19KSxsWzJdPXUsbFszXT1jLGxbNF09ZCxsWzVdPW4pOm49bFs1XSxsWzZdIT09dHx8bFs3XSE9PW4/KHI9KDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2staGVhZGVyXCI6ITAsY2hpbGRyZW46W3Qsbl19KSxsWzZdPXQsbFs3XT1uLGxbOF09cik6cj1sWzhdLGxbOV0hPT1zfHxsWzEwXSE9PWM/KGxbMTJdIT09Yz8oYT1mdW5jdGlvbihlLHQpe3JldHVybiFlLmlnbm9yZWR8fGM/KDAsQS5qc3gpKG54LHtmcmFtZTplfSx0KTpudWxsfSxsWzEyXT1jLGxbMTNdPWEpOmE9bFsxM10sbz1zLm1hcChhKSxsWzldPXMsbFsxMF09YyxsWzExXT1vKTpvPWxbMTFdLGxbMTRdIT09cnx8bFsxNV0hPT1vPyhpPSgwLEEuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWNvbnRhaW5lclwiOiEwLGNoaWxkcmVuOltyLG9dfSksbFsxNF09cixsWzE1XT1vLGxbMTZdPWkpOmk9bFsxNl0saX12YXIgbms9ZXUobkMoKSk7ZnVuY3Rpb24gbkUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG5qKGUpe3ZhciB0LG4scj1lLmZyYW1lcyxvPWUuZGlhbG9nUmVzaXplclJlZixhPSgwLHcudXNlUmVmKShOYU4pLGk9KHQ9KDAsdy51c2VTdGF0ZSkoITEpLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuRShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuRShlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksbD1pWzBdLHM9aVsxXSxjPSgwLHcudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gci5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSsgKyEhdC5pZ25vcmVkfSwwKX0sW3JdKTtyZXR1cm4oMCxBLmpzeCkobl8se2ZyYW1lczpyLGlzSWdub3JlTGlzdE9wZW46bCxvblRvZ2dsZUlnbm9yZUxpc3Q6ZnVuY3Rpb24oKXt2YXIgZT1udWxsPT1vP3ZvaWQgMDpvLmN1cnJlbnQ7aWYoZSl7dmFyIHQ9KG51bGw9PWU/dm9pZCAwOmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLmhlaWdodDthLmN1cnJlbnR8fChhLmN1cnJlbnQ9dCksbD8oZS5zdHlsZS5oZWlnaHQ9XCJcIi5jb25jYXQoYS5jdXJyZW50LFwicHhcIiksZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLGZ1bmN0aW9uIHQoKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsdCkscyghMSl9KSk6cyghMCl9fSxpZ25vcmVkRnJhbWVzVGFsbHk6Y30pfWZ1bmN0aW9uIG5TKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLHguYykoOCk7bFswXSE9PWU/KHI9dm9pZCAwPT09ZT97fTplLGxbMF09ZSxsWzFdPXIpOnI9bFsxXTt2YXIgcz1yLmNvbGxhcHNlZDtyZXR1cm4obFsyXSE9PXM/KG89XCJib29sZWFuXCI9PXR5cGVvZiBzP3tzdHlsZTp7dHJhbnNmb3JtOnM/dm9pZCAwOlwicm90YXRlKDkwZGVnKVwifX06e30sbFsyXT1zLGxbM109byk6bz1sWzNdLGxbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxBLmpzeCkoXCJwYXRoXCIse3N0eWxlOntmaWxsOlwidmFyKC0tY29sb3ItZm9udClcIn0sZmlsbFJ1bGU6XCJldmVub2RkXCIsZDpcIm02Ljc1IDMuOTQuNTMuNTMgMi44MjQgMi44MjNhMSAxIDAgMCAxIDAgMS40MTRMNy4yOCAxMS41M2wtLjUzLjUzTDUuNjkgMTFsLjUzLS41M0w4LjY5IDggNi4yMiA1LjUzIDUuNjkgNWwxLjA2LTEuMDZaXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KSxsWzRdPWEpOmE9bFs0XSxsWzVdIT09c3x8bFs2XSE9PW8pPyhpPSgwLEEuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1jaGV2cm9uLWljb25cIjohMCxcImRhdGEtY29sbGFwc2VkXCI6cyx3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIixmaWxsOlwibm9uZVwifSxvKSxuPW49e2NoaWxkcmVuOmF9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGxbNV09cyxsWzZdPW8sbFs3XT1pKTppPWxbN10saX1mdW5jdGlvbiBuTyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbkIoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG5PKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5PKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG5QKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9KDAseC5jKSgxNSksYz1lLnJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZix1PW5CKCgwLHcudXNlU3RhdGUpKCEwKSwyKSxkPXVbMF0sZj11WzFdO3NbMF0hPT1jPyhuPVtdLGMuc3BsaXQoXCJcXG5cIikuZm9yRWFjaChmdW5jdGlvbihlLHQpe3ZhciByLG8sYT1cIitcIj09PWVbMF18fFwiLVwiPT09ZVswXSxpPVwiPlwiPT09ZVswXSxsPWF8fGkscz1sP2VbMF06XCJcIixjPWw/ZS5pbmRleE9mKHMpOi0xLHU9bkIobD9bZS5zbGljZSgwLGMpLGUuc2xpY2UoYysxKV06W2UsXCJcIl0sMiksZD11WzBdLGY9dVsxXTthP24ucHVzaCgoMCxBLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lXCI6ITAsXCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmXCI6XCIrXCI9PT1zP1wiYWRkXCI6XCJyZW1vdmVcIixjaGlsZHJlbjooMCxBLmpzeHMpKFwic3BhblwiLHtjaGlsZHJlbjpbZCwoMCxBLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25cIjohMCxjaGlsZHJlbjpzfSksZixcIlxcblwiXX0pfSxcImNvbXAtZGlmZlwiK3QpKTpuLnB1c2goKDAsQS5qc3hzKShcInNwYW5cIiwocj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZVwiOiEwfSxpP3tcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmZcIjpcImVycm9yXCJ9OnZvaWQgMCksbz1vPXtjaGlsZHJlbjpbZCwoMCxBLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25cIjohMCxjaGlsZHJlbjpzfSksZixcIlxcblwiXX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxlKSl9KSxyKSxcImNvbXAtZGlmZlwiK3QpKX0pLHNbMF09YyxzWzFdPW4pOm49c1sxXSx0PW47dmFyIHA9IWQ7cmV0dXJuIHNbMl0hPT1kPyhyPWZ1bmN0aW9uKCl7cmV0dXJuIGYoIWQpfSxvPSgwLEEuanN4KShuUyx7Y29sbGFwc2VkOmR9KSxzWzJdPWQsc1szXT1yLHNbNF09byk6KHI9c1szXSxvPXNbNF0pLHNbNV0hPT1wfHxzWzZdIT09cnx8c1s3XSE9PW8/KGE9KDAsQS5qc3gpKFwiYnV0dG9uXCIse1wiYXJpYS1leHBhbmRlZFwiOnAsXCJhcmlhLWxhYmVsXCI6XCJjb21wbGV0ZSBDb21wb25lbnQgU3RhY2tcIixcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtY29sbGFwc2UtYnV0dG9uXCI6ITAsb25DbGljazpyLGNoaWxkcmVuOm99KSxzWzVdPXAsc1s2XT1yLHNbN109byxzWzhdPWEpOmE9c1s4XSxzWzldIT09dD8oaT0oMCxBLmpzeCkoXCJwcmVcIix7Y2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19jb21wb25lbnQtc3RhY2tcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJjb2RlXCIse2NoaWxkcmVuOnR9KX0pLHNbOV09dCxzWzEwXT1pKTppPXNbMTBdLHNbMTFdIT09ZHx8c1sxMl0hPT1hfHxzWzEzXSE9PWk/KGw9KDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWxcIjohMCxcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtY29sbGFwc2VcIjpkLGNoaWxkcmVuOlthLGldfSksc1sxMV09ZCxzWzEyXT1hLHNbMTNdPWksc1sxNF09bCk6bD1zWzE0XSxsfXZhciBuST1TeW1ib2wuZm9yKFwiTmV4dGpzRXJyb3JcIik7ZnVuY3Rpb24gblQoZSl7cmV0dXJuIGVbbkldfHxudWxsfWZ1bmN0aW9uIG56KGUsdCxuLHIsbyxhLGkpe3RyeXt2YXIgbD1lW2FdKGkpLHM9bC52YWx1ZX1jYXRjaChlKXtuKGUpO3JldHVybn1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIG5EKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGkoZSl7bnooYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7bnooYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX19ZnVuY3Rpb24gbkwoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIG5OKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBuUihlLHQpe3ZhciBuLHIsbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119LGk9T2JqZWN0LmNyZWF0ZSgoXCJmdW5jdGlvblwiPT10eXBlb2YgSXRlcmF0b3I/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBpLm5leHQ9bCgwKSxpLnRocm93PWwoMSksaS5yZXR1cm49bCgyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIGM9W2wsc107aWYobil0aHJvdyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aSYmKGk9MCxjWzBdJiYoYT0wKSksYTspdHJ5e2lmKG49MSxyJiYobz0yJmNbMF0/ci5yZXR1cm46Y1swXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGM9WzImY1swXSxvLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpvPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWNbMF18fDI9PT1jWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1jWzBdJiYoIW98fGNbMV0+b1swXSYmY1sxXTxvWzNdKSl7YS5sYWJlbD1jWzFdO2JyZWFrfWlmKDY9PT1jWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWM7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChjKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9Yz10LmNhbGwoZSxhKX1jYXRjaChlKXtjPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmY1swXSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX19dmFyIG5NPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybltdO2lmKFwidXNlXCJpbiB3KXt2YXIgdD1lLmZyYW1lcztpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IEVycm9yKFwiSW52YXJpYW50OiBmcmFtZXMgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoZW4gdGhlIFJlYWN0IHZlcnNpb24gaGFzIFJlYWN0LnVzZS4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLlwiKTtyZXR1cm4gdy51c2UodCgpKX1pZighQXJyYXkuaXNBcnJheShlLmZyYW1lcykpdGhyb3cgRXJyb3IoXCJJbnZhcmlhbnQ6IGZyYW1lcyBtdXN0IGJlIGFuIGFycmF5IHdoZW4gdGhlIFJlYWN0IHZlcnNpb24gZG9lcyBub3QgaGF2ZSBSZWFjdC51c2UuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy5cIik7cmV0dXJuIGUuZnJhbWVzfTtmdW5jdGlvbiBuWihlKXt2YXIgdCxuLHIsbyxhLGk9KDAseC5jKSg4KSxsPWUuZXJyb3Iscz1lLmRpYWxvZ1Jlc2l6ZXJSZWYsYz1uTShsKSx1PWMuZmluZEluZGV4KG5VKTtyZXR1cm4gdD1udWxsIT0obj1jW3VdKT9uOm51bGwsaVswXSE9PXQ/KHI9dCYmKDAsQS5qc3gpKGVZLHtzdGFja0ZyYW1lOnQub3JpZ2luYWxTdGFja0ZyYW1lLGNvZGVGcmFtZTp0Lm9yaWdpbmFsQ29kZUZyYW1lfSksaVswXT10LGlbMV09cik6cj1pWzFdLGlbMl0hPT1zfHxpWzNdIT09Yz8obz1jLmxlbmd0aD4wJiYoMCxBLmpzeCkobmose2RpYWxvZ1Jlc2l6ZXJSZWY6cyxmcmFtZXM6Y30pLGlbMl09cyxpWzNdPWMsaVs0XT1vKTpvPWlbNF0saVs1XSE9PXJ8fGlbNl0hPT1vPyhhPSgwLEEuanN4cykoQS5GcmFnbWVudCx7Y2hpbGRyZW46W3Isb119KSxpWzVdPXIsaVs2XT1vLGlbN109YSk6YT1pWzddLGF9ZnVuY3Rpb24gblUoZSl7cmV0dXJuIWUuaWdub3JlZCYmISFlLm9yaWdpbmFsQ29kZUZyYW1lJiYhIWUub3JpZ2luYWxTdGFja0ZyYW1lfXZhciBuRj1cIlxcbiAgXCIuY29uY2F0KFwiXFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbF0ge1xcbiAgICBwYWRkaW5nOiA4cHggMDtcXG4gICAgbWFyZ2luOiA4cHggMDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zeW50YXgtY29uc3RhbnQpO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBsaW5lLWhlaWdodDogMS4zM2VtOyAvKiAxNnB4IGluIDEycHggZm9udCBzaXplICovXFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lXSB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBhZGRpbmctbGVmdDogNDBweDtcXG4gICAgbGluZS1oZWlnaHQ6IGNhbGMoNSAvIDMpO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J2Vycm9yJ10ge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1hbWJlci0xMDApO1xcbiAgICBib3gtc2hhZG93OiAycHggMCAwIDAgdmFyKC0tY29sb3ItYW1iZXItOTAwKSBpbnNldDtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1jb2xsYXBzZS1idXR0b25dIHtcXG4gICAgYWxsOiB1bnNldDtcXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7XFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdhZGQnXSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZWVuLTMwMCk7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25dIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMjRweCAqIC0xKTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyNHB4O1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J2FkZCddXFxuICAgIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnbl0ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JlZW4tOTAwKTtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdyZW1vdmUnXSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXJlZC0zMDApO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J3JlbW92ZSddXFxuICAgIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnbl0ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcmVkLTkwMCk7XFxuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDI0cHggKiAtMSk7XFxuICAgIG1hcmdpbi1yaWdodDogMjRweDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdlcnJvciddXFxuICAgIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnbl0ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcXG4gIH1cXG4gIFxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWhpbnRdIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICBmb250LXNpemU6IDA7XFxuICAgIGhlaWdodDogMDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS10YWctYWRqYWNlbnQ9J2ZhbHNlJ10ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0xKTtcXG4gIH1cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2NvbXBvbmVudC1zdGFjayB7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWNvbGxhcHNlPSd0cnVlJ11cXG4gICAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fY29tcG9uZW50LXN0YWNrXFxuICAgIGNvZGUge1xcbiAgICBtYXgtaGVpZ2h0OiAxMjBweDtcXG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDAsMCwwLDApIDAlLGJsYWNrIDEwJSk7XFxuICAgIHBhZGRpbmctYm90dG9tOiA0MHB4O1xcbiAgfVxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fY29tcG9uZW50LXN0YWNrIGNvZGUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XFxuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmXSB7XFxuICAgIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXI7XFxuICB9XFxuICAuZXJyb3Itb3ZlcmxheS1oeWRyYXRpb24tZXJyb3ItZGlmZi1wbHVzLWljb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JlZW4tOTAwKTtcXG4gIH1cXG4gIC5lcnJvci1vdmVybGF5LWh5ZHJhdGlvbi1lcnJvci1kaWZmLW1pbnVzLWljb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcmVkLTkwMCk7XFxuICB9XFxuXCIsXCJcXG5cIik7ZnVuY3Rpb24gbnEoZSl7cmV0dXJuIGUmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2w/XCJzeW1ib2xcIjp0eXBlb2YgZX1mdW5jdGlvbiBuSChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gblYoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChcImh0dHBzOi8vbmV4dGpzLm9yZ1wiKX1mdW5jdGlvbiBuJChlKXt2YXIgdCxuPSgwLHguYykoMikscj1lLm1lc3NhZ2U7cmV0dXJuIG5bMF0hPT1yPyh0PSgwLEEuanN4KShlQSx7dGV4dDpyLG1hdGNoZXI6blZ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiBuVyhlKXt2YXIgdCxuLHI9KDAseC5jKSg1KSxvPWUuZXJyb3IsYT1cImVudmlyb25tZW50TmFtZVwiaW4gbz9vLmVudmlyb25tZW50TmFtZTpcIlwiLGk9YT9cIlsgXCIuY29uY2F0KGEsXCIgXSBcIik6XCJcIixsPW8ubWVzc2FnZTtyZXR1cm4gbC5zdGFydHNXaXRoKGkpJiYoclswXSE9PWkubGVuZ3RofHxyWzFdIT09bD8odD1sLnNsaWNlKGkubGVuZ3RoKSxyWzBdPWkubGVuZ3RoLHJbMV09bCxyWzJdPXQpOnQ9clsyXSxsPXQpLHJbM10hPT1sPyhuPSgwLEEuanN4KShBLkZyYWdtZW50LHtjaGlsZHJlbjooMCxBLmpzeCkoZUEse3RleHQ6bCxtYXRjaGVyOm5WfSl9KSxyWzNdPWwscls0XT1uKTpuPXJbNF0sbn12YXIgblk9e2h5ZHJhdGlvbldhcm5pbmc6bnVsbCxub3RlczpudWxsLHJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZjpudWxsfTtmdW5jdGlvbiBuSyhlKXt2YXIgdCxuLHI9ZS5nZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlscyxvPWUucnVudGltZUVycm9ycyxhPWUuZGVidWdJbmZvLGk9ZS5vbkNsb3NlLGw9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzXCIsXCJydW50aW1lRXJyb3JzXCIsXCJkZWJ1Z0luZm9cIixcIm9uQ2xvc2VcIl0pLHM9KDAsdy51c2VSZWYpKG51bGwpLGM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtPSgwLHguYykoMTcpLGc9ZS5ydW50aW1lRXJyb3JzLHk9ZS5nZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlscyx2PShhPSgwLHcudXNlU3RhdGUpKDApLGk9MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShhKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShhLDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuSChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuSChlLHQpfX0oYSxpKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksYj12WzBdLEE9dlsxXTtzPTA9PT1nLmxlbmd0aDt2YXIgQz0odD1udWxsPT0oYz1udWxsIT0odT1nW2JdKT91Om51bGwpP3ZvaWQgMDpjLmVycm9yLG49eSwoMCx3LnVzZU1lbW8pKGZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dClyZXR1cm4gblk7dmFyIGUscixvLGE9bih0KTtpZihudWxsIT09YSlyZXR1cm57aHlkcmF0aW9uV2FybmluZzpudWxsIT0ocj1hLndhcm5pbmcpP3I6bnVsbCxub3RlczpudWxsLHJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZjpudWxsIT0obz1hLnJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZik/bzpudWxsfTtpZighKHR2KChlPXQpLm1lc3NhZ2UpfHwvSHlkcmF0aW9uIGZhaWxlZCBiZWNhdXNlIHRoZSBzZXJ2ZXIgcmVuZGVyZWQgKHRleHR8SFRNTCkgZGlkbid0IG1hdGNoIHRoZSBjbGllbnRcXC4vLnRlc3QoZS5tZXNzYWdlKXx8L0EgdHJlZSBoeWRyYXRlZCBidXQgc29tZSBhdHRyaWJ1dGVzIG9mIHRoZSBzZXJ2ZXIgcmVuZGVyZWQgSFRNTCBkaWRuJ3QgbWF0Y2ggdGhlIGNsaWVudCBwcm9wZXJ0aWVzLi8udGVzdChlLm1lc3NhZ2UpKSlyZXR1cm4gblk7dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tZXNzYWdlO2lmKHR2KHQpKXt2YXIgbj10Zih0LnNwbGl0KFwiXFxuXFxuXCIpLDIpLHI9blswXSxvPW5bMV0sYT0odm9pZCAwPT09bz9cIlwiOm8pLnRyaW0oKTtyZXR1cm57bWVzc2FnZTpcIlwiPT09YT90LnRyaW0oKTpyLnRyaW0oKSxkaWZmOmEsbm90ZXM6bnVsbH19dmFyIGk9dGYodC5zcGxpdChcIlwiLmNvbmNhdCh0bSkpLDIpLGw9aVswXSxzPWlbMV0sYz1sLnRyaW0oKTtpZih2b2lkIDAhPT1zJiZzLmxlbmd0aD4xKXt2YXIgdT1bXTtzLnNwbGl0KFwiXFxuXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7XCJcIiE9PWUudHJpbSgpJiYoZS50cmltKCkuc3RhcnRzV2l0aChcImF0IFwiKXx8dS5wdXNoKGUpKX0pO3ZhciBkPXRwKGMuc3BsaXQoXCJcXG5cXG5cIikpLGY9ZFswXSxwPWQuc2xpY2UoMSk7cmV0dXJue21lc3NhZ2U6ZixkaWZmOnUuam9pbihcIlxcblwiKSxub3RlczpwLmpvaW4oXCJcXG5cXG5cIil8fG51bGx9fXZhciBoPXRwKGMuc3BsaXQoXCJcXG5cXG5cIikpO3JldHVybnttZXNzYWdlOmhbMF0sZGlmZjpudWxsLG5vdGVzOmguc2xpY2UoMSkuam9pbihcIlxcblxcblwiKX19KHQpLGw9aS5tZXNzYWdlLHM9aS5ub3RlcyxjPWkuZGlmZjtyZXR1cm4gbnVsbD09PWw/blk6e2h5ZHJhdGlvbldhcm5pbmc6bCxub3RlczpzLHJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZjpjfX0sW3Qsbl0pKTtpZihzfHwhYylyZXR1cm4gbVswXSE9PWJ8fG1bMV0hPT1zPyhkPXtpc0xvYWRpbmc6cyxhY3RpdmVJZHg6YixzZXRBY3RpdmVJbmRleDpBLGFjdGl2ZUVycm9yOm51bGwsZXJyb3JEZXRhaWxzOm51bGwsZXJyb3JDb2RlOm51bGwsZXJyb3JUeXBlOm51bGwsbm90ZXM6bnVsbCxoeWRyYXRpb25XYXJuaW5nOm51bGx9LG1bMF09YixtWzFdPXMsbVsyXT1kKTpkPW1bMl0sZDt2YXIgXz1jLmVycm9yO21bM10hPT1fPyhmPSh2b2lkIDA9PT0obD1fKT9cInVuZGVmaW5lZFwiOm5xKGwpKT09PVwib2JqZWN0XCImJm51bGwhPT1sJiZcIl9fTkVYVF9FUlJPUl9DT0RFXCJpbiBsJiZcInN0cmluZ1wiPT10eXBlb2YgbC5fX05FWFRfRVJST1JfQ09ERT9sLl9fTkVYVF9FUlJPUl9DT0RFOih2b2lkIDA9PT1sP1widW5kZWZpbmVkXCI6bnEobCkpPT09XCJvYmplY3RcIiYmbnVsbCE9PWwmJlwiZGlnZXN0XCJpbiBsJiZcInN0cmluZ1wiPT10eXBlb2YgbC5kaWdlc3Q/bC5kaWdlc3Quc3BsaXQoXCJAXCIpLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChcIkVcIil9KTp2b2lkIDAsbVszXT1fLG1bNF09Zik6Zj1tWzRdO3ZhciBrPWY7bVs1XSE9PWMudHlwZXx8bVs2XSE9PV8/KHI9XyxwPVwicmVjb3ZlcmFibGVcIj09PShvPWMudHlwZSk/XCJSZWNvdmVyYWJsZSBcIi5jb25jYXQoci5uYW1lKTpcImNvbnNvbGVcIj09PW8/XCJDb25zb2xlIFwiLmNvbmNhdChyLm5hbWUpOlwiUnVudGltZSBcIi5jb25jYXQoci5uYW1lKSxtWzVdPWMudHlwZSxtWzZdPV8sbVs3XT1wKTpwPW1bN107dmFyIEU9cCxqPUMubm90ZXMsUz1DLmh5ZHJhdGlvbldhcm5pbmc7cmV0dXJuIG1bOF0hPT1jfHxtWzldIT09Ynx8bVsxMF0hPT1rfHxtWzExXSE9PUN8fG1bMTJdIT09RXx8bVsxM10hPT1TfHxtWzE0XSE9PXN8fG1bMTVdIT09aj8oaD17aXNMb2FkaW5nOnMsYWN0aXZlSWR4OmIsc2V0QWN0aXZlSW5kZXg6QSxhY3RpdmVFcnJvcjpjLGVycm9yRGV0YWlsczpDLGVycm9yQ29kZTprLGVycm9yVHlwZTpFLG5vdGVzOmosaHlkcmF0aW9uV2FybmluZzpTfSxtWzhdPWMsbVs5XT1iLG1bMTBdPWssbVsxMV09QyxtWzEyXT1FLG1bMTNdPVMsbVsxNF09cyxtWzE1XT1qLG1bMTZdPWgpOmg9bVsxNl0saH0oe3J1bnRpbWVFcnJvcnM6byxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczpyfSksdT1jLmlzTG9hZGluZyxkPWMuZXJyb3JDb2RlLGY9Yy5lcnJvclR5cGUscD1jLm5vdGVzLGg9Yy5oeWRyYXRpb25XYXJuaW5nLG09Yy5hY3RpdmVJZHgsZz1jLmVycm9yRGV0YWlscyx5PWMuYWN0aXZlRXJyb3Isdj1jLnNldEFjdGl2ZUluZGV4LGI9bk0oeSksQz0oMCx3LnVzZU1lbW8pKGZ1bmN0aW9uKCl7dmFyIGUsdD1iLmZpbmRJbmRleChmdW5jdGlvbihlKXtyZXR1cm4hZS5pZ25vcmVkJiYhIWUub3JpZ2luYWxDb2RlRnJhbWUmJiEhZS5vcmlnaW5hbFN0YWNrRnJhbWV9KTtyZXR1cm4gbnVsbCE9KGU9Ylt0XSk/ZTpudWxsfSxbYl0pLF89KDAsdy51c2VDYWxsYmFjaykoZnVuY3Rpb24oKXtpZigheSlyZXR1cm5cIlwiO3ZhciBlPVtdO2YmJmUucHVzaChcIiMjIEVycm9yIFR5cGVcXG5cIi5jb25jYXQoZikpO3ZhciB0PXkuZXJyb3Isbj10Lm1lc3NhZ2U7aWYoXCJlbnZpcm9ubWVudE5hbWVcImluIHQmJnQuZW52aXJvbm1lbnROYW1lKXt2YXIgcj1cIlsgXCIuY29uY2F0KHQuZW52aXJvbm1lbnROYW1lLFwiIF0gXCIpO24uc3RhcnRzV2l0aChyKSYmKG49bi5zbGljZShyLmxlbmd0aCkpfWlmKG4mJmUucHVzaChcIiMjIEVycm9yIE1lc3NhZ2VcXG5cIi5jb25jYXQobikpLGIubGVuZ3RoPjApe3ZhciBvPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmlnbm9yZWR9KTtpZihvLmxlbmd0aD4wKXt2YXIgYT1vLm1hcChmdW5jdGlvbihlKXtpZihlLm9yaWdpbmFsU3RhY2tGcmFtZSl7dmFyIHQ9ZS5vcmlnaW5hbFN0YWNrRnJhbWUsbj10Lm1ldGhvZE5hbWUscj10LmZpbGUsbz10LmxpbmUxLGE9dC5jb2x1bW4xO3JldHVyblwiICAgIGF0IFwiLmNvbmNhdChuLFwiIChcIikuY29uY2F0KHIsXCI6XCIpLmNvbmNhdChvLFwiOlwiKS5jb25jYXQoYSxcIilcIil9aWYoZS5zb3VyY2VTdGFja0ZyYW1lKXt2YXIgaT1lLnNvdXJjZVN0YWNrRnJhbWUsbD1pLm1ldGhvZE5hbWUscz1pLmZpbGUsYz1pLmxpbmUxLHU9aS5jb2x1bW4xO3JldHVyblwiICAgIGF0IFwiLmNvbmNhdChsLFwiIChcIikuY29uY2F0KHMsXCI6XCIpLmNvbmNhdChjLFwiOlwiKS5jb25jYXQodSxcIilcIil9cmV0dXJuXCJcIn0pLmZpbHRlcihCb29sZWFuKTthLmxlbmd0aD4wJiZlLnB1c2goXCJcXG5cIi5jb25jYXQoYS5qb2luKFwiXFxuXCIpKSl9fWlmKG51bGw9PUM/dm9pZCAwOkMub3JpZ2luYWxDb2RlRnJhbWUpe3ZhciBpPWVWKCkoZSQoQy5vcmlnaW5hbENvZGVGcmFtZSkpO2UucHVzaChcIiMjIENvZGUgRnJhbWVcXG5cIi5jb25jYXQoaSkpfXJldHVyblwiXCIuY29uY2F0KGUuam9pbihcIlxcblxcblwiKSxcIlxcblxcbk5leHQuanMgdmVyc2lvbjogXCIpLmNvbmNhdChsLnZlcnNpb25JbmZvLmluc3RhbGxlZCxcIiAoXCIpLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfQlVORExFUixcIilcXG5cIil9LFt5LGYsQyxiLGwudmVyc2lvbkluZm9dKTtpZih1KXJldHVybigwLEEuanN4KSh0MCx7Y2hpbGRyZW46KDAsQS5qc3gpKG5pLHt9KX0pO2lmKCF5KXJldHVybiBudWxsO3ZhciBrPXkuZXJyb3IsRT1bXCJzZXJ2ZXJcIixcImVkZ2Utc2VydmVyXCJdLmluY2x1ZGVzKG5UKGspfHxcIlwiKTtyZXR1cm4oMCxBLmpzeHMpKG5kLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe2Vycm9yQ29kZTpkLGVycm9yVHlwZTpmLGVycm9yTWVzc2FnZTpoPygwLEEuanN4KShuJCx7bWVzc2FnZTpofSk6KDAsQS5qc3gpKG5XLHtlcnJvcjprfSksb25DbG9zZTpFP3ZvaWQgMDppLGRlYnVnSW5mbzphLGVycm9yOmsscnVudGltZUVycm9yczpvLGFjdGl2ZUlkeDptLHNldEFjdGl2ZUluZGV4OnYsZGlhbG9nUmVzaXplclJlZjpzLGdlbmVyYXRlRXJyb3JJbmZvOl99LGwpLG49bj17Y2hpbGRyZW46WygwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ub3Rlcy1jb250YWluZXJcIixjaGlsZHJlbjpbcD8oMCxBLmpzeCkoQS5GcmFnbWVudCx7Y2hpbGRyZW46KDAsQS5qc3gpKFwicFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbm90ZXNcIixjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX25vdGVzXCIsY2hpbGRyZW46cH0pfSk6bnVsbCxoPygwLEEuanN4KShcInBcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2xpbmtcIixjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2xpbmtcIixjaGlsZHJlbjooMCxBLmpzeCkoZUEse3RleHQ6XCJTZWUgbW9yZSBpbmZvIGhlcmU6IFwiLmNvbmNhdCh0Zyl9KX0pOm51bGxdfSksZy5yZWFjdE91dHB1dENvbXBvbmVudERpZmY/KDAsQS5qc3gpKG5QLHtyZWFjdE91dHB1dENvbXBvbmVudERpZmY6Zy5yZWFjdE91dHB1dENvbXBvbmVudERpZmZ8fFwiXCJ9KTpudWxsLCgwLEEuanN4KSh3LlN1c3BlbnNlLHtmYWxsYmFjazooMCxBLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1lcnJvci1zdXNwZW5kZWRcIjohMH0pLGNoaWxkcmVuOigwLEEuanN4KShuWix7ZXJyb3I6eSxkaWFsb2dSZXNpemVyUmVmOnN9LHkuaWQudG9TdHJpbmcoKSl9KV19LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpfWZ1bmN0aW9uIG5YKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdixiLHc9KDAseC5jKSgxOSk7cmV0dXJuKHdbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcInBhZ2VzXCJ9KSx3WzBdPXIpOnI9d1swXSx3WzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89KDAsQS5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiVHVyYm9wYWNrIGlzIGFuIGluY3JlbWVudGFsIGJ1bmRsZXIgb3B0aW1pemVkIGZvciBKYXZhU2NyaXB0IGFuZCBUeXBlU2NyaXB0LCB3cml0dGVuIGluIFJ1c3QsIGFuZCBidWlsdCBpbnRvIE5leHQuanMuIFR1cmJvcGFjayBjYW4gYmUgdXNlZCBpbiBOZXh0LmpzIGluIGJvdGggdGhlXCIsXCIgXCIscixcIiBhbmRcIixcIiBcIiwoMCxBLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcImFwcFwifSksXCIgZGlyZWN0b3JpZXMgZm9yIGZhc3RlciBsb2NhbCBkZXZlbG9wbWVudC5cIl19KSx3WzFdPW8pOm89d1sxXSx3WzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsQS5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiVG8gZW5hYmxlIFR1cmJvcGFjaywgdXNlIHRoZVwiLFwiIFwiLCgwLEEuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwiLS10dXJib3BhY2tcIn0pLFwiIGZsYWcgd2hlbiBydW5uaW5nIHRoZSBOZXh0LmpzIGRldmVsb3BtZW50IHNlcnZlci5cIl19KSx3WzJdPWEpOmE9d1syXSx3WzNdIT09ZSk/KGk9KDAsQS5qc3hzKShcImFydGljbGVcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1hcnRpY2xlXCJ9LGUpLG49bj17Y2hpbGRyZW46W28sYV19LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLHdbM109ZSx3WzRdPWkpOmk9d1s0XSx3WzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9KDAsQS5qc3gpKGU4LHthY3Rpb25MYWJlbDpcIkNvcHkgTmV4dC5qcyBUdXJib3BhY2sgQ29tbWFuZFwiLHN1Y2Nlc3NMYWJlbDpcIk5leHQuanMgVHVyYm9wYWNrIENvbW1hbmQgQ29waWVkXCIsY29udGVudDpcIi0tdHVyYm9wYWNrXCIsY2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29weS1idXR0b25cIn0pLHdbNV09bCk6bD13WzVdLHdbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocz0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46XCIgIFwifSksYz0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46XCJ7XCJ9KSx3WzZdPXMsd1s3XT1jKToocz13WzZdLGM9d1s3XSksd1s4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46W1wiICBcIiwoMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXlcIixjaGlsZHJlbjonXCJzY3JpcHRzXCInfSksXCI6IFwiLFwie1wiXX0pLHdbOF09dSk6dT13WzhdLHdbOV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZD0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXlcIixjaGlsZHJlbjonXCJkZXZcIid9KSx3WzldPWQpOmQ9d1s5XSx3WzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhmPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lIGRldi10b29scy1pbmZvLWhpZ2hsaWdodFwiLGNoaWxkcmVuOltcIiAgICBcIixkLFwiOlwiLFwiIFwiLCgwLEEuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLXZhbHVlXCIsY2hpbGRyZW46J1wibmV4dCBkZXYgLS10dXJib3BhY2tcIid9KSxcIixcIl19KSx3WzEwXT1mKTpmPXdbMTBdLHdbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHA9KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5XCIsY2hpbGRyZW46J1wiYnVpbGRcIid9KSx3WzExXT1wKTpwPXdbMTFdLHdbMTJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGg9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpbXCIgICAgXCIscCxcIjpcIixcIiBcIiwoMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi12YWx1ZVwiLGNoaWxkcmVuOidcIm5leHQgYnVpbGRcIid9KSxcIixcIl19KSx3WzEyXT1oKTpoPXdbMTJdLHdbMTNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG09KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5XCIsY2hpbGRyZW46J1wic3RhcnRcIid9KSx3WzEzXT1tKTptPXdbMTNdLHdbMTRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGc9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpbXCIgICAgXCIsbSxcIjpcIixcIiBcIiwoMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi12YWx1ZVwiLGNoaWxkcmVuOidcIm5leHQgc3RhcnRcIid9KSxcIixcIl19KSx3WzE0XT1nKTpnPXdbMTRdLHdbMTVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHk9KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5XCIsY2hpbGRyZW46J1wibGludFwiJ30pLHdbMTVdPXkpOnk9d1sxNV0sd1sxNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odj0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1jb250YWluZXJcIixjaGlsZHJlbjooMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2tcIixjaGlsZHJlbjpbbCwoMCxBLmpzeCkoXCJwcmVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1wcmVcIixjaGlsZHJlbjooMCxBLmpzeHMpKFwiY29kZVwiLHtjaGlsZHJlbjpbcyxjLHUsZixoLGcsKDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpbXCIgICAgXCIseSxcIjpcIixcIiBcIiwoMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi12YWx1ZVwiLGNoaWxkcmVuOidcIm5leHQgbGludFwiJ30pXX0pLCgwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpcIiAgfVwifSksKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOlwifVwifSksKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOlwiICBcIn0pXX0pfSldfSl9KSx3WzE2XT12KTp2PXdbMTZdLHdbMTddIT09aT8oYj0oMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOltpLHZdfSksd1sxN109aSx3WzE4XT1iKTpiPXdbMThdLGJ9ZnVuY3Rpb24gbkcoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIG5RKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBuSihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gbjAoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAseC5jKSgxMCk7bFswXSE9PWU/KHQ9bkooZSxbXCJyb3V0ZXJUeXBlXCJdKSxuPWUucm91dGVyVHlwZSxsWzBdPWUsbFsxXT10LGxbMl09bik6KHQ9bFsxXSxuPWxbMl0pLGxbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJUaGUgcGF0aFwiLFwiIFwiLCgwLEEuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0pLFwiIFwiLCdpcyBtYXJrZWQgYXMgXCJzdGF0aWNcIiBzaW5jZSBpdCB3aWxsIGJlIHByZXJlbmRlcmVkIGR1cmluZyB0aGUgYnVpbGQgdGltZS4nXX0pLGxbM109cik6cj1sWzNdO3ZhciBzPVwicGFnZXNcIj09PW4/XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvblwiOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9pbmNyZW1lbnRhbC1zdGF0aWMtcmVnZW5lcmF0aW9uXCI7cmV0dXJuIGxbNF0hPT1zPyhvPSgwLEEuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIldpdGggU3RhdGljIFJlbmRlcmluZywgcm91dGVzIGFyZSByZW5kZXJlZCBhdCBidWlsZCB0aW1lLCBvciBpbiB0aGUgYmFja2dyb3VuZCBhZnRlclwiLFwiIFwiLCgwLEEuanN4KShcImFcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tbGlua1wiLGhyZWY6cyx0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46XCJkYXRhIHJldmFsaWRhdGlvblwifSksXCIuXCJdfSksbFs0XT1zLGxbNV09byk6bz1sWzVdLGxbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxBLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOlwiU3RhdGljIHJlbmRlcmluZyBpcyB1c2VmdWwgd2hlbiBhIHJvdXRlIGhhcyBkYXRhIHRoYXQgaXMgbm90IHBlcnNvbmFsaXplZCB0byB0aGUgdXNlciBhbmQgY2FuIGJlIGtub3duIGF0IGJ1aWxkIHRpbWUsIHN1Y2ggYXMgYSBzdGF0aWMgYmxvZyBwb3N0IG9yIGEgcHJvZHVjdCBwYWdlLlwifSksbFs2XT1hKTphPWxbNl0sbFs3XSE9PXR8fGxbOF0hPT1vPyhpPSgwLEEuanN4cykoXCJhcnRpY2xlXCIsblEobkcoe2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWFydGljbGVcIn0sdCkse2NoaWxkcmVuOltyLG8sYV19KSksbFs3XT10LGxbOF09byxsWzldPWkpOmk9bFs5XSxpfWZ1bmN0aW9uIG4xKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9KDAseC5jKSgxMSk7cmV0dXJuIHNbMF0hPT1lPyh0PW5KKGUsW1wicm91dGVyVHlwZVwiXSksbj1lLnJvdXRlclR5cGUsc1swXT1lLHNbMV09dCxzWzJdPW4pOih0PXNbMV0sbj1zWzJdKSxzWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsQS5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksc1szXT1yKTpyPXNbM10sc1s0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLEEuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIlRoZSBwYXRoXCIsXCIgXCIscixcIiBcIiwnaXMgbWFya2VkIGFzIFwiZHluYW1pY1wiIHNpbmNlIGl0IHdpbGwgYmUgcmVuZGVyZWQgZm9yIGVhY2ggdXNlciBhdCcsXCIgXCIsKDAsQS5qc3gpKFwic3Ryb25nXCIse2NoaWxkcmVuOlwicmVxdWVzdCB0aW1lXCJ9KSxcIi5cIl19KSxhPSgwLEEuanN4KShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46XCJEeW5hbWljIHJlbmRlcmluZyBpcyB1c2VmdWwgd2hlbiBhIHJvdXRlIGhhcyBkYXRhIHRoYXQgaXMgcGVyc29uYWxpemVkIHRvIHRoZSB1c2VyIG9yIGhhcyBpbmZvcm1hdGlvbiB0aGF0IGNhbiBvbmx5IGJlIGtub3duIGF0IHJlcXVlc3QgdGltZSwgc3VjaCBhcyBjb29raWVzIG9yIHRoZSBVUkwncyBzZWFyY2ggcGFyYW1zLlwifSksc1s0XT1vLHNbNV09YSk6KG89c1s0XSxhPXNbNV0pLHNbNl0hPT1uPyhpPVwicGFnZXNcIj09PW4/KDAsQS5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFncmFwaFwiLGNoaWxkcmVuOltcIkV4cG9ydGluZyB0aGVcIixcIiBcIiwoMCxBLmpzeCkoXCJhXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWxpbmtcIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvcGFnZXMvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL2dldC1zZXJ2ZXItc2lkZS1wcm9wc1wiLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixjaGlsZHJlbjpcImdldFNlcnZlclNpZGVQcm9wc1wifSksXCIgXCIsXCJmdW5jdGlvbiB3aWxsIG9wdCB0aGUgcm91dGUgaW50byBkeW5hbWljIHJlbmRlcmluZy4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSB0aGUgc2VydmVyIG9uIGV2ZXJ5IHJlcXVlc3QuXCJdfSk6KDAsQS5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiRHVyaW5nIHJlbmRlcmluZywgaWYgYVwiLFwiIFwiLCgwLEEuanN4KShcImFcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tbGlua1wiLGhyZWY6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMjZHluYW1pYy1hcGlzXCIsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOlwiRHluYW1pYyBBUElcIn0pLFwiIFwiLFwib3IgYVwiLFwiIFwiLCgwLEEuanN4KShcImFcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tbGlua1wiLGhyZWY6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZmV0Y2hcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46XCJmZXRjaFwifSksXCIgXCIsXCJvcHRpb24gb2ZcIixcIiBcIiwoMCxBLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcInsgY2FjaGU6ICduby1zdG9yZScgfVwifSksXCIgXCIsXCJpcyBkaXNjb3ZlcmVkLCBOZXh0LmpzIHdpbGwgc3dpdGNoIHRvIGR5bmFtaWNhbGx5IHJlbmRlcmluZyB0aGUgd2hvbGUgcm91dGUuXCJdfSksc1s2XT1uLHNbN109aSk6aT1zWzddLHNbOF0hPT10fHxzWzldIT09aT8obD0oMCxBLmpzeHMpKFwiYXJ0aWNsZVwiLG5RKG5HKHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1hcnRpY2xlXCJ9LHQpLHtjaGlsZHJlbjpbbyxhLGldfSkpLHNbOF09dCxzWzldPWksc1sxMF09bCk6bD1zWzEwXSxsfXZhciBuMj17cGFnZXM6e3N0YXRpYzpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL3BhZ2VzL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1zaXRlLWdlbmVyYXRpb25cIixkeW5hbWljOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvcGFnZXMvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLXNpZGUtcmVuZGVyaW5nXCJ9LGFwcDp7c3RhdGljOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzI3N0YXRpYy1yZW5kZXJpbmctZGVmYXVsdFwiLGR5bmFtaWM6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMjZHluYW1pYy1yZW5kZXJpbmdcIn19O2Z1bmN0aW9uIG40KGUpe3ZhciB0LG4scixvLGE9KDAseC5jKSg4KTtyZXR1cm4gYVswXSE9PWU/KG49bkooZSxbXCJyb3V0ZXJUeXBlXCIsXCJpc1N0YXRpY1JvdXRlXCJdKSxyPWUucm91dGVyVHlwZSx0PWUuaXNTdGF0aWNSb3V0ZSxhWzBdPWUsYVsxXT10LGFbMl09bixhWzNdPXIpOih0PWFbMV0sbj1hWzJdLHI9YVszXSksYVs0XSE9PXR8fGFbNV0hPT1ufHxhWzZdIT09cj8obz10PygwLEEuanN4KShuMCxuRyh7cm91dGVyVHlwZTpyfSxuKSk6KDAsQS5qc3gpKG4xLG5HKHtyb3V0ZXJUeXBlOnJ9LG4pKSxhWzRdPXQsYVs1XT1uLGFbNl09cixhWzddPW8pOm89YVs3XSxvfWZ1bmN0aW9uIG41KCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIixmaWxsOlwibm9uZVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGQ6XCJtLjE5MSAyLjA2My41Ni40OTggMTMuNSAxMiAuNTYxLjQ5OC45OTctMS4xMjEtLjU2LS40OTgtMS44MS0xLjYwOCAyLjg4LTMuMzQydi0uOThsLTMuMjA0LTMuNzJDMTAuNjQ1LjkyMyA2LjM2NS42ODYgMy41OTQgMy4wOEwxLjc0OCAxLjQ0IDEuMTg4Ljk0LjE5IDIuMDYzWk0xNC43NjEgOGwtMi40NDIgMi44MzYtMS42NS0xLjQ2NmEzLjAwMSAzLjAwMSAwIDAgMC00LjM0Mi0zLjg2bC0xLjYtMS40MjJhNS4yNTMgNS4yNTMgMCAwIDEgNy4yNTEuNjgyTDE0Ljc2IDhaTTcuNTI2IDYuNTc2bDEuOTQyIDEuNzI3YTEuNDk5IDEuNDk5IDAgMCAwLTEuOTQyLTEuNzI3Wm0tNy44NDUuOTM1IDEuNzIyLTIgMS4xMzcuOTc5TDEuMjQgOGwyLjc4MiAzLjIzQTUuMjUgNS4yNSAwIDAgMCA5LjkgMTIuNzAzbC41NCAxLjRhNi43NTEgNi43NTEgMCAwIDEtNy41NTUtMS44OTJMLS4zMTggOC40OXYtLjk4WlwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIG4zKCl7dmFyIGUsdCxuPSgwLHguYykoMik7cmV0dXJuIG5bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJnXCIse2NsaXBQYXRoOlwidXJsKCNsaWdodF9pY29uX2NsaXBfcGF0aClcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixkOlwiTTguNzUuNzVWMGgtMS41djJoMS41Vi43NVpNMy4yNiA0LjMybC0uNTMtLjUzLS4zNTQtLjM1My0uNTMtLjUzIDEuMDYtMS4wNjEuNTMuNTMuMzU0LjM1NC41My41My0xLjA2IDEuMDZabTguNDItMS4wNi41My0uNTMuMzUzLS4zNTQuNTMtLjUzIDEuMDYxIDEuMDYtLjUzLjUzLS4zNTQuMzU0LS41My41My0xLjA2LTEuMDZaTTggMTEuMjVhMy4yNSAzLjI1IDAgMSAwIDAtNi41IDMuMjUgMy4yNSAwIDAgMCAwIDYuNVptMCAxLjVhNC43NSA0Ljc1IDAgMSAwIDAtOS41IDQuNzUgNC43NSAwIDAgMCAwIDkuNVptNi01LjVoMnYxLjVoLTJ2LTEuNVptLTEzLjI1IDBIMHYxLjVoMnYtMS41SC43NVptMS42MiA1LjMyLS41My41MyAxLjA2IDEuMDYuNTMtLjUzLjM1NC0uMzUzLjUzLS41My0xLjA2LTEuMDYxLS41My41My0uMzU0LjM1NFptMTAuMiAxLjA2LjUzLjUzIDEuMDYtMS4wNi0uNTMtLjUzLS4zNTQtLjM1NC0uNTMtLjUzLTEuMDYgMS4wNi41My41My4zNTMuMzU0Wk04Ljc1IDE0djJoLTEuNXYtMmgxLjVaXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KX0pLG5bMF09ZSk6ZT1uWzBdLG5bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeHMpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIixjaGlsZHJlbjpbZSwoMCxBLmpzeCkoXCJkZWZzXCIse2NoaWxkcmVuOigwLEEuanN4KShcImNsaXBQYXRoXCIse2lkOlwibGlnaHRfaWNvbl9jbGlwX3BhdGhcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixkOlwiTTAgMGgxNnYxNkgwelwifSl9KX0pXX0pLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gbjYoKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7XCJkYXRhLXRlc3RpZFwiOlwiZ2Vpc3QtaWNvblwiLGhlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEuNSA4LjAwMDA1QzEuNSA1LjUzMDg5IDIuOTkxOTggMy40MDkzMiA1LjEyMzQ5IDIuNDg4ODlDNC44ODEzNiAzLjE5ODU4IDQuNzUgMy45NTkzNiA0Ljc1IDQuNzUwMUM0Ljc1IDguNjE2MDkgNy44ODQwMSAxMS43NTAxIDExLjc1IDExLjc1MDFDMTEuODk5NSAxMS43NTAxIDEyLjA0OCAxMS43NDU0IDEyLjE5NTMgMTEuNzM2MUMxMS4wOTU1IDEzLjExNjQgOS40MDA0NyAxNC4wMDAxIDcuNSAxNC4wMDAxQzQuMTg2MjkgMTQuMDAwMSAxLjUgMTEuMzEzOCAxLjUgOC4wMDAwNVpNNi40MTcwNiAwLjU3Nzc1OUMyLjc4Nzg0IDEuMTAzMSAwIDQuMjI1MzYgMCA4LjAwMDA1QzAgMTIuMTQyMiAzLjM1Nzg2IDE1LjUwMDEgNy41IDE1LjUwMDFDMTAuNTc5OCAxNS41MDAxIDEzLjIyNDQgMTMuNjQzOCAxNC4zNzkyIDEwLjk5MjFMMTMuNDU4OCA5Ljk3OTdDMTIuOTIxOCAxMC4xNTUgMTIuMzQ3OCAxMC4yNTAxIDExLjc1IDEwLjI1MDFDOC43MTI0MyAxMC4yNTAxIDYuMjUgNy43ODc2NyA2LjI1IDQuNzUwMUM2LjI1IDMuNjM0MzEgNi41ODE0NiAyLjU5ODIzIDcuMTUxMTEgMS43MzIxN0w2LjQxNzA2IDAuNTc3NzU5Wk0xMy4yNSAxVjEuNzVWMi43NUwxNC4yNSAyLjc1SDE1VjQuMjVIMTQuMjVIMTMuMjVWNS4yNVY2SDExLjc1VjUuMjVWNC4yNUgxMC43NUwxMCA0LjI1VjIuNzVIMTAuNzVMMTEuNzUgMi43NVYxLjc1VjFIMTMuMjVaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIG45KCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixkOlwiTTAgMmExIDEgMCAwIDEgMS0xaDE0YTEgMSAwIDAgMSAxIDF2OC41YTEgMSAwIDAgMS0xIDFIOC43NXYzaDEuNzVWMTZoLTV2LTEuNWgxLjc1di0zSDFhMSAxIDAgMCAxLTEtMVYyWm0xLjUuNVYxMGgxM1YyLjVoLTEzWlwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIG44KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBuNyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8cnQoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiByZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbjgoZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8cnQoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHJ0KGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG44KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG44KGUsdCl9fWZ1bmN0aW9uIHJuKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgLnNob3J0Y3V0LXJlY29yZGVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGdhcDogOHB4O1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xcblxcbiAgICAuc2hvcnRjdXQtcmVjb3JkZXItYnV0dG9uIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgZ2FwOiA0cHg7XFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gICAgICBwYWRkaW5nOiA2cHggOHB4O1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMTUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KTtcXG5cXG4gICAgICAmW2RhdGEtaGFzLXNob3J0Y3V0PSd0cnVlJ10ge1xcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcblxcbiAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS02MDApO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XFxuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW2RhdGEtcHJpc3RpbmU9J2ZhbHNlJ106OnBsYWNlaG9sZGVyIHtcXG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICB9XFxuXFxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGtiZCB7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XFxuICAgICAgbWluLXdpZHRoOiAyMHB4O1xcbiAgICAgIGhlaWdodDogMjBweDtcXG4gICAgICBmb250LXNpemU6IDE0cHg7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcblxcbiAgICAgICZbZGF0YS1zeW1ib2w9J2ZhbHNlJ10ge1xcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zaG9ydGN1dC1yZWNvcmRlci1jbGVhci1idXR0b24ge1xcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgICB3aWR0aDogMjBweDtcXG4gICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDE1MG1zIHZhcigtLXRpbWluZy1zd2lmdCk7XFxuXFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XFxuICAgICAgfVxcblxcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICB9XFxuXFxuICAgICAgc3ZnIHtcXG4gICAgICAgIHdpZHRoOiAxNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLnNob3J0Y3V0LXJlY29yZGVyLWtleXMge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogMnB4O1xcbiAgfVxcblxcbiAgLnNob3J0Y3V0LXJlY29yZGVyLXRvb2x0aXAge1xcbiAgICAtLWdhcDogOHB4O1xcbiAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiBjYWxjKDEwMCUgKyB2YXIoLS1nYXApKTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICBzY2FsZTogMC45NjtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgIHRyYW5zaXRpb246XFxuICAgICAgb3BhY2l0eSAxNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpLFxcbiAgICAgIHNjYWxlIDE1MG1zIHZhcigtLXRpbWluZy1zd2lmdCk7XFxuXFxuICAgICZbZGF0YS1zaG93PSd0cnVlJ10ge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgc2NhbGU6IDE7XFxuICAgIH1cXG5cXG4gICAgc3ZnIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgICAgIGJvdHRvbTogLTZweDtcXG4gICAgICBsZWZ0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgLnNob3J0Y3V0LXJlY29yZGVyLXN0YXR1cyB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGdhcDogNnB4O1xcbiAgICB9XFxuXFxuICAgIC5zaG9ydGN1dC1yZWNvcmRlci1zdGF0dXMtaWNvbiB7XFxuICAgICAgd2lkdGg6IDdweDtcXG4gICAgICBoZWlnaHQ6IDdweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgICAgZmxleC1zaHJpbms6IDA7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcmVkLTcwMCk7XFxuXFxuICAgICAgJltkYXRhLXN1Y2Nlc3M9J3RydWUnXSB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmVlbi03MDApO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBybj1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciBycj1bXCJNZXRhXCIsXCJDb250cm9sXCIsXCJDdHJsXCIsXCJBbHRcIixcIk9wdGlvblwiLFwiU2hpZnRcIl07ZnVuY3Rpb24gcm8oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCx4LmMpKDMzKSxtPWUudmFsdWUsZz1lLm9uQ2hhbmdlLHk9bjcoKDAsdy51c2VTdGF0ZSkoITApLDIpLHY9eVswXSxiPXlbMV0sQz1uNygoMCx3LnVzZVN0YXRlKSghMSksMiksXz1DWzBdLGs9Q1sxXTtoWzBdIT09bT8odD1udWxsIT1tP206W10saFswXT1tLGhbMV09dCk6dD1oWzFdO3ZhciBFPW43KCgwLHcudXNlU3RhdGUpKHQpLDIpLGo9RVswXSxTPUVbMV0sTz1uNygoMCx3LnVzZVN0YXRlKSghMSksMiksQj1PWzBdLFA9T1sxXSxJPSgwLHcudXNlUmVmKShudWxsKSxUPSgwLHcudXNlUmVmKShudWxsKSx6PSEhbXx8ai5sZW5ndGg+MDtoWzJdIT09Z3x8aFszXSE9PXZ8fGhbNF0hPT1fPyhuPWZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09VC5jdXJyZW50JiZcIlRhYlwiIT09ZS5rZXkpe0kuY3VycmVudCYmY2xlYXJUaW1lb3V0KEkuY3VycmVudCksX3x8ayghMCksdiYmKFMoW10pLGIoITEpKTt2YXIgdD1mdW5jdGlvbihlKXtJLmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtQKCEwKSxnKGUuam9pbihcIitcIikpLEkuY3VycmVudD13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2soITEpfSwxZTMpfSwxODApfTtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxTKGZ1bmN0aW9uKG4pe2lmKG4uaW5jbHVkZXMoZS5jb2RlKXx8bi5pbmNsdWRlcyhlLmtleSkpcmV0dXJuIG47aWYoIXJyLmluY2x1ZGVzKGUua2V5KSl7dmFyIHI9bi5maW5kSW5kZXgocmwpO2lmKC0xIT09cil7dmFyIG89cmUobik7cmV0dXJuIG9bcl09ZS5jb2RlLHQobyksb312YXIgYT1yZShuKS5jb25jYXQoW2UuY29kZV0pO3JldHVybiB0KGEpLGF9Zm9yKHZhciBpPXJlKG4pLGw9cnIuaW5kZXhPZihlLmtleSkscz0wLGM9MDtjPGkubGVuZ3RoO2MrKylpZihyci5pbmNsdWRlcyhpW2NdKSl7aWYobDxyci5pbmRleE9mKGlbY10pKXtzPWM7YnJlYWt9cz1jKzF9ZWxzZSBicmVhaztyZXR1cm4gaS5zcGxpY2UocywwLGUua2V5KSx0KGkpLGl9KX19LGhbMl09ZyxoWzNdPXYsaFs0XT1fLGhbNV09bik6bj1oWzVdO3ZhciBEPW47aFs2XSE9PWc/KHI9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT0oZT1ULmN1cnJlbnQpfHxlLmZvY3VzKCksUyhbXSksUCghMSksc2V0VGltZW91dChmdW5jdGlvbigpe2soITApfSksZyhudWxsKX0saFs2XT1nLGhbN109cik6cj1oWzddO3ZhciBMPXI7aFs4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPWZ1bmN0aW9uKCl7UCghMSksayghMSksYighMCl9LGhbOF09byk6bz1oWzhdO3ZhciBOPW87aFs5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPWZ1bmN0aW9uKCl7dmFyIGU7SS5jdXJyZW50JiZjbGVhclRpbWVvdXQoSS5jdXJyZW50KSxrKCEwKSxudWxsPT0oZT1ULmN1cnJlbnQpfHxlLmZvY3VzKCl9LGhbOV09YSk6YT1oWzldO3ZhciBSPWE7aFsxMF0hPT16fHxoWzExXSE9PWo/KGk9ej8oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXIta2V5c1wiLGNoaWxkcmVuOmoubWFwKHJpKX0pOlwiUmVjb3JkIFNob3J0Y3V0XCIsaFsxMF09eixoWzExXT1qLGhbMTJdPWkpOmk9aFsxMl0saFsxM10hPT1MfHxoWzE0XSE9PXo/KGw9eiYmKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLWNsZWFyLWJ1dHRvblwiLHJvbGU6XCJidXR0b25cIixvbkNsaWNrOkwsb25Gb2N1czpyYSxvbktleURvd246ZnVuY3Rpb24oZSl7KFwiRW50ZXJcIj09PWUua2V5fHxcIiBcIj09PWUua2V5KSYmKEwoKSxlLnN0b3BQcm9wYWdhdGlvbigpKX0sXCJhcmlhLWxhYmVsXCI6XCJDbGVhciBzaG9ydGN1dFwiLHRhYkluZGV4OjAsY2hpbGRyZW46KDAsQS5qc3gpKHJkLHt9KX0pLGhbMTNdPUwsaFsxNF09eixoWzE1XT1sKTpsPWhbMTVdLGhbMTZdIT09RHx8aFsxN10hPT16fHxoWzE4XSE9PWl8fGhbMTldIT09bD8ocz0oMCxBLmpzeHMpKFwiYnV0dG9uXCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLWJ1dHRvblwiLHJlZjpULG9uQ2xpY2s6UixvbkZvY3VzOlIsb25CbHVyOk4sb25LZXlEb3duOkQsXCJkYXRhLWhhcy1zaG9ydGN1dFwiOnosXCJkYXRhLXNob3J0Y3V0LXJlY29yZGVyXCI6XCJ0cnVlXCIsY2hpbGRyZW46W2ksbF19KSxoWzE2XT1ELGhbMTddPXosaFsxOF09aSxoWzE5XT1sLGhbMjBdPXMpOnM9aFsyMF0saFsyMV0hPT1CPyhjPSgwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci1zdGF0dXMtaWNvblwiLFwiZGF0YS1zdWNjZXNzXCI6Qn0pLGhbMjFdPUIsaFsyMl09Yyk6Yz1oWzIyXTt2YXIgTT1CP1wiU2hvcnRjdXQgc2V0XCI6XCJSZWNvcmRpbmdcIjtyZXR1cm4gaFsyM10hPT1NfHxoWzI0XSE9PWM/KHU9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci1zdGF0dXNcIixjaGlsZHJlbjpbYyxNXX0pLGhbMjNdPU0saFsyNF09YyxoWzI1XT11KTp1PWhbMjVdLGhbMjZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGQ9KDAsQS5qc3gpKHJzLHt9KSxoWzI2XT1kKTpkPWhbMjZdLGhbMjddIT09X3x8aFsyOF0hPT11PyhmPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXItdG9vbHRpcFwiLFwiZGF0YS1zaG93XCI6XyxjaGlsZHJlbjpbdSxkXX0pLGhbMjddPV8saFsyOF09dSxoWzI5XT1mKTpmPWhbMjldLGhbMzBdIT09Znx8aFszMV0hPT1zPyhwPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXJcIixjaGlsZHJlbjpbcyxmXX0pLGhbMzBdPWYsaFszMV09cyxoWzMyXT1wKTpwPWhbMzJdLHB9ZnVuY3Rpb24gcmEoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gcmkoZSl7cmV0dXJuKDAsQS5qc3gpKHJjLHtjaGlsZHJlbjplfSxlKX1mdW5jdGlvbiBybChlKXtyZXR1cm4hcnIuaW5jbHVkZXMoZSl9ZnVuY3Rpb24gcnMoKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7ZmlsbDpcIm5vbmVcIixoZWlnaHQ6XCI2XCIsdmlld0JveDpcIjAgMCAxNCA2XCIsd2lkdGg6XCIxNFwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTMuODI4NCAwSDAuMTcxNTdDMC43MDIwMDMgMCAxLjIxMDcxIDAuMjEwNzE0IDEuNTg1NzggMC41ODU3ODdMNS41ODU3OCA0LjU4NTc5QzYuMzY2ODMgNS4zNjY4NCA3LjYzMzE2IDUuMzY2ODMgOC40MTQyMSA0LjU4NTc5TDEyLjQxNDIgMC41ODU3ODZDMTIuNzg5MyAwLjIxMDcxNCAxMy4yOTggMCAxMy44Mjg0IDBaXCIsZmlsbDpcInZhcigtLWJhY2tncm91bmQpXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gcmMoZSl7dmFyIHQsbixyLG8sYT0oMCx4LmMpKDkpLGk9ZS5jaGlsZHJlbjthWzBdIT09aT8odD1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZVwiTWV0YVwiOnJldHVybigwLEEuanN4KShydSx7fSk7Y2FzZVwiQWx0XCI6Y2FzZVwiT3B0aW9uXCI6cmV0dXJuXCLijKVcIjtjYXNlXCJDb250cm9sXCI6Y2FzZVwiQ3RybFwiOnJldHVyblwiQ3RybFwiO2Nhc2VcIlNoaWZ0XCI6cmV0dXJuXCLih6dcIjtjYXNlXCJFbnRlclwiOnJldHVyblwi4o+OXCI7Y2FzZVwiRXNjYXBlXCI6Y2FzZVwiRXNjXCI6cmV0dXJuXCJFc2NcIjtjYXNlXCIgXCI6Y2FzZVwiU3BhY2VcIjpjYXNlXCJTcGFjZWJhclwiOnJldHVyblwiU3BhY2VcIjtjYXNlXCJBcnJvd1VwXCI6cmV0dXJuXCLihpFcIjtjYXNlXCJBcnJvd0Rvd25cIjpyZXR1cm5cIuKGk1wiO2Nhc2VcIkFycm93TGVmdFwiOnJldHVyblwi4oaQXCI7Y2FzZVwiQXJyb3dSaWdodFwiOnJldHVyblwi4oaSXCI7Y2FzZVwiVGFiXCI6cmV0dXJuXCJUYWJcIjtjYXNlXCJCYWNrc3BhY2VcIjpyZXR1cm5cIuKMq1wiO2Nhc2VcIkRlbGV0ZVwiOnJldHVyblwi4oymXCI7ZGVmYXVsdDppZigxPT09aS5sZW5ndGgpcmV0dXJuIGkudG9VcHBlckNhc2UoKTtyZXR1cm4gaX19LGFbMF09aSxhWzFdPXQpOnQ9YVsxXTt2YXIgbD10O2lmKGFbMl0hPT1pfHxhWzNdIT09bCl7dmFyIHM9bChpKTtuPVwic3RyaW5nXCI9PXR5cGVvZiBzJiYxPT09cy5sZW5ndGgscj1mdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD17TWludXM6XCItXCIsRXF1YWw6XCI9XCIsQnJhY2tldExlZnQ6XCJbXCIsQnJhY2tldFJpZ2h0OlwiXVwiLEJhY2tzbGFzaDpcIlxcXFxcIixTZW1pY29sb246XCI7XCIsUXVvdGU6XCInXCIsQ29tbWE6XCIsXCIsUGVyaW9kOlwiLlwiLEJhY2txdW90ZTpcImBcIixTcGFjZTpcIiBcIixTbGFzaDpcIi9cIixJbnRsQmFja3NsYXNoOlwiXFxcXFwifTtyZXR1cm4gdFtlXT90W2VdOi9eS2V5KFtBLVpdKSQvLnRlc3QoZSk/ZS5yZXBsYWNlKC9eS2V5LyxcIlwiKTovXkRpZ2l0KFswLTldKSQvLnRlc3QoZSk/ZS5yZXBsYWNlKC9eRGlnaXQvLFwiXCIpOi9eTnVtcGFkKFswLTldKSQvLnRlc3QoZSk/ZS5yZXBsYWNlKC9eTnVtcGFkLyxcIlwiKTpcIk51bXBhZEFkZFwiPT09ZT9cIitcIjpcIk51bXBhZFN1YnRyYWN0XCI9PT1lP1wiLVwiOlwiTnVtcGFkTXVsdGlwbHlcIj09PWU/XCIqXCI6XCJOdW1wYWREaXZpZGVcIj09PWU/XCIvXCI6XCJOdW1wYWREZWNpbWFsXCI9PT1lP1wiLlwiOlwiTnVtcGFkRW50ZXJcIj09PWU/XCJFbnRlclwiOmV9KHMpLGFbMl09aSxhWzNdPWwsYVs0XT1uLGFbNV09cn1lbHNlIG49YVs0XSxyPWFbNV07cmV0dXJuIGFbNl0hPT1ufHxhWzddIT09cj8obz0oMCxBLmpzeCkoXCJrYmRcIix7XCJkYXRhLXN5bWJvbFwiOm4sY2hpbGRyZW46cn0pLGFbNl09bixhWzddPXIsYVs4XT1vKTpvPWFbOF0sb31mdW5jdGlvbiBydSgpe3ZhciBlLHQsbixyLG8sYT0oMCx4LmMpKDYpLGk9bjcoKDAsdy51c2VTdGF0ZSkoXCJcXHhhMFwiKSwyKSxsPWlbMF0scz1pWzFdO2FbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT1ycCgvXk1hYy8pfHxycCgvXmlQaG9uZS8pfHxycCgvXmlQYWQvKXx8cnAoL15NYWMvKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjEsYVswXT1lKTplPWFbMF07dmFyIGM9ZTtyZXR1cm4gYVsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PWZ1bmN0aW9uKCl7ITA9PT1jJiZzKFwi4oyYXCIpLCExPT09YyYmcyhcIkN0cmxcIil9LG49W2NdLGFbMV09dCxhWzJdPW4pOih0PWFbMV0sbj1hWzJdKSwoMCx3LnVzZUVmZmVjdCkodCxuKSxhWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9e21pbldpZHRoOlwiMWVtXCIsZGlzcGxheTpcImlubGluZS1ibG9ja1wifSxhWzNdPXIpOnI9YVszXSxhWzRdIT09bD8obz0oMCxBLmpzeCkoXCJzcGFuXCIse3N0eWxlOnIsY2hpbGRyZW46bH0pLGFbNF09bCxhWzVdPW8pOm89YVs1XSxvfWZ1bmN0aW9uIHJkKCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEyLjQ2OTcgMTMuNTMwM0wxMyAxNC4wNjA3TDE0LjA2MDcgMTNMMTMuNTMwMyAxMi40Njk3TDkuMDYwNjUgNy45OTk5OUwxMy41MzAzIDMuNTMwMzJMMTQuMDYwNyAyLjk5OTk5TDEzIDEuOTM5MzNMMTIuNDY5NyAyLjQ2OTY2TDcuOTk5OTkgNi45MzkzM0wzLjUzMDMyIDIuNDY5NjZMMi45OTk5OSAxLjkzOTMzTDEuOTM5MzMgMi45OTk5OUwyLjQ2OTY2IDMuNTMwMzJMNi45MzkzMyA3Ljk5OTk5TDIuNDY5NjYgMTIuNDY5N0wxLjkzOTMzIDEzTDIuOTk5OTkgMTQuMDYwN0wzLjUzMDMyIDEzLjUzMDNMNy45OTk5OSA5LjA2MDY1TDEyLjQ2OTcgMTMuNTMwM1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9dmFyIHJmPWV1KHJuKCkpO2Z1bmN0aW9uIHJwKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJm51bGwhPXdpbmRvdy5uYXZpZ2F0b3I/ZS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pOnZvaWQgMH1mdW5jdGlvbiByaChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gcm0oZSx0LG4scixvLGEsaSl7dHJ5e3ZhciBsPWVbYV0oaSkscz1sLnZhbHVlfWNhdGNoKGUpe24oZSk7cmV0dXJufWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9dmFyIHJnPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvem9kL2luZGV4LmNqc1wiKSxyeT1yZy56Lm9iamVjdCh7dGhlbWU6cmcuei5lbnVtKFtcImxpZ2h0XCIsXCJkYXJrXCIsXCJzeXN0ZW1cIl0pLm9wdGlvbmFsKCksZGlzYWJsZURldkluZGljYXRvcjpyZy56LmJvb2xlYW4oKS5vcHRpb25hbCgpLGRldlRvb2xzUG9zaXRpb246cmcuei5lbnVtKFtcInRvcC1sZWZ0XCIsXCJ0b3AtcmlnaHRcIixcImJvdHRvbS1sZWZ0XCIsXCJib3R0b20tcmlnaHRcIl0pLm9wdGlvbmFsKCksZGV2VG9vbHNQYW5lbFBvc2l0aW9uOnJnLnoucmVjb3JkKHJnLnouc3RyaW5nKCkscmcuei5lbnVtKFtcInRvcC1sZWZ0XCIsXCJ0b3AtcmlnaHRcIixcImJvdHRvbS1sZWZ0XCIsXCJib3R0b20tcmlnaHRcIl0pKS5vcHRpb25hbCgpLGRldlRvb2xzUGFuZWxTaXplOnJnLnoucmVjb3JkKHJnLnouc3RyaW5nKCkscmcuei5vYmplY3Qoe3dpZHRoOnJnLnoubnVtYmVyKCksaGVpZ2h0OnJnLnoubnVtYmVyKCl9KSkub3B0aW9uYWwoKSxzY2FsZTpyZy56Lm51bWJlcigpLm9wdGlvbmFsKCksaGlkZVNob3J0Y3V0OnJnLnouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpfSk7ZnVuY3Rpb24gcnYoZSl7cmV0dXJuIGUmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2w/XCJzeW1ib2xcIjp0eXBlb2YgZX12YXIgcmI9e30sckE9bnVsbDtmdW5jdGlvbiByeCgpe2lmKDAhPT1PYmplY3Qua2V5cyhyYikubGVuZ3RoKXt2YXIgZT1KU09OLnN0cmluZ2lmeShyYik7cmI9e30sZmV0Y2goXCIvX19uZXh0anNfZGV2dG9vbHNfY29uZmlnXCIse21ldGhvZDpcIlBPU1RcIixoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwifSxib2R5OmUsa2VlcGFsaXZlOiEwfSkuY2F0Y2goZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byBzYXZlIGNvbmZpZzpcIix7ZGF0YTplLGVycm9yOnR9KX0pfX1mdW5jdGlvbiBydyhlKXt2YXIgdD1yeS5zYWZlUGFyc2UoZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oXCJbTmV4dC5qcyBEZXZUb29sc10gSW52YWxpZCBjb25maWcgcGF0Y2g6XCIsdC5lcnJvci5tZXNzYWdlKTtyYj1mdW5jdGlvbiBlKHQsbil7aWYoIW58fCh2b2lkIDA9PT1uP1widW5kZWZpbmVkXCI6cnYobikpIT09XCJvYmplY3RcInx8QXJyYXkuaXNBcnJheShuKXx8IXR8fCh2b2lkIDA9PT10P1widW5kZWZpbmVkXCI6cnYodCkpIT09XCJvYmplY3RcInx8QXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbjt2YXIgcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LHQpO2Zvcih2YXIgbyBpbiBuKXt2YXIgYT1uW29dLGk9dFtvXTt2b2lkIDAhPT1hJiYoYSYmKHZvaWQgMD09PWE/XCJ1bmRlZmluZWRcIjpydihhKSk9PT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheShhKSYmaSYmKHZvaWQgMD09PWk/XCJ1bmRlZmluZWRcIjpydihpKSk9PT1cIm9iamVjdFwiJiYhQXJyYXkuaXNBcnJheShpKT9yW29dPWUoaSxhKTpyW29dPWEpfXJldHVybiByfShyYixlKSxyQSYmY2xlYXJUaW1lb3V0KHJBKSxyQT1zZXRUaW1lb3V0KHJ4LDEyMCl9ZnVuY3Rpb24gckMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJfKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgLnByZWZlcmVuY2VzLWNvbnRhaW5lciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIC5wcmVmZXJlbmNlcy1jb250YWluZXIge1xcbiAgICAgIHdpZHRoOiA0ODBweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnByZWZlcmVuY2Utc2VjdGlvbjpmaXJzdC1jaGlsZCB7XFxuICAgIHBhZGRpbmctdG9wOiAwO1xcbiAgfVxcblxcbiAgLnByZWZlcmVuY2Utc2VjdGlvbiB7XFxuICAgIHBhZGRpbmc6IDEycHggMDtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDI0cHg7XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1zZWN0aW9uOmxhc3QtY2hpbGQge1xcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xcbiAgfVxcblxcbiAgLnByZWZlcmVuY2UtaGVhZGVyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgZmxleDogMTtcXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLWhlYWRlciBsYWJlbCB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1kZXNjcmlwdGlvbiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC5zZWxlY3QtYnV0dG9uLFxcbiAgLmFjdGlvbi1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgcGFkZGluZzogNnB4IDhweDtcXG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDE1MG1zIHZhcigtLXRpbWluZy1zd2lmdCk7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgICB9XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IDE0cHg7XFxuICAgICAgaGVpZ2h0OiAxNHB4O1xcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgICB9XFxuICB9XFxuXFxuICAuc2VsZWN0LWJ1dHRvbiB7XFxuICAgICY6Zm9jdXMtd2l0aGluIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcXG4gICAgfVxcblxcbiAgICBzZWxlY3Qge1xcbiAgICAgIGFsbDogdW5zZXQ7XFxuICAgIH1cXG5cXG4gICAgb3B0aW9uIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLXNlY3Rpb24gYnV0dG9uOmRpc2FibGVkIHtcXG4gICAgb3BhY2l0eTogMC42O1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgfVxcblxcbiAgOmdsb2JhbCguaWNvbikge1xcbiAgICB3aWR0aDogMThweDtcXG4gICAgaGVpZ2h0OiAxOHB4O1xcbiAgICBjb2xvcjogIzY2NjtcXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gcl89ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiByayhlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsYixDLF8sayxFLGosUyxPLFAsSSxULHosRCxMLE4sUixNLFosVSxGLHEsSCxWLCQsVyxZPSgwLHguYykoNjUpLEs9ZS50aGVtZSxYPWUuaGlkZSxHPWUuaGlkZVNob3J0Y3V0LFE9ZS5zZXRIaWRlU2hvcnRjdXQsSj1lLnNjYWxlLGVlPWUuc2V0UG9zaXRpb24sZXQ9ZS5zZXRTY2FsZSxlbj1lLnBvc2l0aW9uLGVyPShvPSh0PSgwLHcudXNlU3RhdGUpKCExKSxuPTIscj1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByaChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByaChlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSlbMF0sYT1yWzFdLHtyZXN0YXJ0U2VydmVyOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5pbnZhbGlkYXRlUGVyc2lzdGVudENhY2hlO3JldHVybih0PWZ1bmN0aW9uKCl7dmFyIGUsdCxyLG8saSxsO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119LGk9T2JqZWN0LmNyZWF0ZSgoXCJmdW5jdGlvblwiPT10eXBlb2YgSXRlcmF0b3I/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBpLm5leHQ9bCgwKSxpLnRocm93PWwoMSksaS5yZXR1cm49bCgyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIGM9W2wsc107aWYobil0aHJvdyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aSYmKGk9MCxjWzBdJiYoYT0wKSksYTspdHJ5e2lmKG49MSxyJiYobz0yJmNbMF0/ci5yZXR1cm46Y1swXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGM9WzImY1swXSxvLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpvPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWNbMF18fDI9PT1jWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1jWzBdJiYoIW98fGNbMV0+b1swXSYmY1sxXTxvWzNdKSl7YS5sYWJlbD1jWzFdO2JyZWFrfWlmKDY9PT1jWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWM7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChjKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9Yz10LmNhbGwoZSxhKX1jYXRjaChlKXtjPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmY1swXSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX19KHRoaXMsZnVuY3Rpb24ocyl7c3dpdGNoKHMubGFiZWwpe2Nhc2UgMDphKCEwKSxlPW4/XCIvX19uZXh0anNfcmVzdGFydF9kZXY/aW52YWxpZGF0ZVBlcnNpc3RlbnRDYWNoZT0xXCI6XCIvX19uZXh0anNfcmVzdGFydF9kZXZcIix0PSExLHMubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHMudHJ5cy5wdXNoKFsxLDExLDEyLDEzXSksWzQsZmV0Y2goXCIvX19uZXh0anNfc2VydmVyX3N0YXR1c1wiKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpzb24oKX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXhlY3V0aW9uSWR9KS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS5sb2coXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIGZldGNoIHNlcnZlciBzdGF0dXMgd2hpbGUgcmVzdGFydGluZyBkZXYgc2VydmVyLlwiLGUpLG51bGx9KV07Y2FzZSAyOmlmKCEocj1zLnNlbnQoKSkpcmV0dXJuIGNvbnNvbGUubG9nKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byBnZXQgdGhlIGN1cnJlbnQgc2VydmVyIGV4ZWN1dGlvbiBJRCB3aGlsZSByZXN0YXJ0aW5nIGRldiBzZXJ2ZXIuXCIpLFsyXTtyZXR1cm5bNCxmZXRjaChlLHttZXRob2Q6XCJQT1NUXCJ9KV07Y2FzZSAzOmlmKCEobz1zLnNlbnQoKSkub2spcmV0dXJuIGNvbnNvbGUubG9nKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byBmZXRjaCByZXN0YXJ0IHNlcnZlciBlbmRwb2ludC4gU3RhdHVzOlwiLG8uc3RhdHVzKSxbMl07aT0wLHMubGFiZWw9NDtjYXNlIDQ6aWYoIShpPDEwKSlyZXR1cm5bMywxMF07cmV0dXJuWzQsbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7cmV0dXJuIHNldFRpbWVvdXQoZSwxZTMpfSldO2Nhc2UgNTpzLnNlbnQoKSxzLmxhYmVsPTY7Y2FzZSA2OnJldHVybiBzLnRyeXMucHVzaChbNiw4LCw5XSksWzQsZmV0Y2goXCIvX19uZXh0anNfc2VydmVyX3N0YXR1c1wiKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpzb24oKX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXhlY3V0aW9uSWR9KV07Y2FzZSA3OmlmKGw9cy5zZW50KCksciE9PWwpcmV0dXJuIHQ9ITAsd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpLFsyXTtyZXR1cm5bMyw5XTtjYXNlIDg6cmV0dXJuIHMuc2VudCgpLFszLDldO2Nhc2UgOTpyZXR1cm4gaSsrLFszLDRdO2Nhc2UgMTA6cmV0dXJuIGNvbnNvbGUubG9nKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byByZXN0YXJ0IHNlcnZlci4gRXhoYXVzdGVkIGFsbCBwb2xsaW5nIGF0dGVtcHRzLlwiKSxbMl07Y2FzZSAxMTpyZXR1cm4gY29uc29sZS5sb2coXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIHJlc3RhcnQgc2VydmVyLlwiLHMuc2VudCgpKSxbMl07Y2FzZSAxMjpyZXR1cm4gdHx8YSghMSksWzddO2Nhc2UgMTM6cmV0dXJuWzJdfX0pfSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGkoZSl7cm0oYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7cm0oYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX0pKCl9LGlzUGVuZGluZzpvfSksZW89ZXIucmVzdGFydFNlcnZlcixlYT1lci5pc1BlbmRpbmcsZWk9ZGwoKS5zaGFkb3dSb290O1lbMF0hPT1laS5ob3N0PyhpPWZ1bmN0aW9uKGUpe3ZhciB0PWVpLmhvc3Q7aWYoXCJzeXN0ZW1cIj09PWUudGFyZ2V0LnZhbHVlKXt0LmNsYXNzTGlzdC5yZW1vdmUoXCJkYXJrXCIpLHQuY2xhc3NMaXN0LnJlbW92ZShcImxpZ2h0XCIpLHJ3KHt0aGVtZTpcInN5c3RlbVwifSk7cmV0dXJufVwiZGFya1wiPT09ZS50YXJnZXQudmFsdWU/KHQuY2xhc3NMaXN0LmFkZChcImRhcmtcIiksdC5jbGFzc0xpc3QucmVtb3ZlKFwibGlnaHRcIikscncoe3RoZW1lOlwiZGFya1wifSkpOih0LmNsYXNzTGlzdC5yZW1vdmUoXCJkYXJrXCIpLHQuY2xhc3NMaXN0LmFkZChcImxpZ2h0XCIpLHJ3KHt0aGVtZTpcImxpZ2h0XCJ9KSl9LFlbMF09ZWkuaG9zdCxZWzFdPWkpOmk9WVsxXTt2YXIgZWw9aTtZWzJdIT09ZWU/KGw9ZnVuY3Rpb24oZSl7ZWUoZS50YXJnZXQudmFsdWUpLHJ3KHtkZXZUb29sc1Bvc2l0aW9uOmUudGFyZ2V0LnZhbHVlfSl9LFlbMl09ZWUsWVszXT1sKTpsPVlbM107dmFyIGVzPWw7WVs0XSE9PWV0PyhzPWZ1bmN0aW9uKGUpe3ZhciB0PU51bWJlcihlLnRhcmdldC52YWx1ZSk7ZXQodCkscncoe3NjYWxlOnR9KX0sWVs0XT1ldCxZWzVdPXMpOnM9WVs1XTt2YXIgZWM9cztyZXR1cm4gWVs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhjPSgwLEEuanN4KShcImgyXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXNlY3Rpb24tdGl0bGVcIixjaGlsZHJlbjpcIkdlbmVyYWxcIn0pLFlbNl09Yyk6Yz1ZWzZdLFlbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odT0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLEEuanN4KShcImxhYmVsXCIse2h0bWxGb3I6XCJ0aGVtZVwiLGNoaWxkcmVuOlwiVGhlbWVcIn0pLCgwLEEuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiU2VsZWN0IHlvdXIgdGhlbWUgcHJlZmVyZW5jZS5cIn0pXX0pLFlbN109dSk6dT1ZWzddLFlbOF0hPT1LPyhkPSgwLEEuanN4KShyUyx7dGhlbWU6S30pLFlbOF09SyxZWzldPWQpOmQ9WVs5XSxZWzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhwPSgwLEEuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcInN5c3RlbVwiLGNoaWxkcmVuOlwiU3lzdGVtXCJ9KSxoPSgwLEEuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcImxpZ2h0XCIsY2hpbGRyZW46XCJMaWdodFwifSksZj0oMCxBLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJkYXJrXCIsY2hpbGRyZW46XCJEYXJrXCJ9KSxZWzEwXT1mLFlbMTFdPXAsWVsxMl09aCk6KGY9WVsxMF0scD1ZWzExXSxoPVlbMTJdKSxZWzEzXSE9PWVsfHxZWzE0XSE9PWR8fFlbMTVdIT09Sz8obT0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOlt1LCgwLEEuanN4cykocmose2lkOlwidGhlbWVcIixuYW1lOlwidGhlbWVcIixwcmVmaXg6ZCx2YWx1ZTpLLG9uQ2hhbmdlOmVsLGNoaWxkcmVuOltwLGgsZl19KV19KSxZWzEzXT1lbCxZWzE0XT1kLFlbMTVdPUssWVsxNl09bSk6bT1ZWzE2XSxZWzE3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhnPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwibGFiZWxcIix7aHRtbEZvcjpcInBvc2l0aW9uXCIsY2hpbGRyZW46XCJQb3NpdGlvblwifSksKDAsQS5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJBZGp1c3QgdGhlIHBsYWNlbWVudCBvZiB5b3VyIGRldiB0b29scy5cIn0pXX0pLFlbMTddPWcpOmc9WVsxN10sWVsxOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oeT0oMCxBLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJib3R0b20tbGVmdFwiLGNoaWxkcmVuOlwiQm90dG9tIExlZnRcIn0pLHY9KDAsQS5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwiYm90dG9tLXJpZ2h0XCIsY2hpbGRyZW46XCJCb3R0b20gUmlnaHRcIn0pLGI9KDAsQS5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwidG9wLWxlZnRcIixjaGlsZHJlbjpcIlRvcCBMZWZ0XCJ9KSxDPSgwLEEuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcInRvcC1yaWdodFwiLGNoaWxkcmVuOlwiVG9wIFJpZ2h0XCJ9KSxZWzE4XT15LFlbMTldPXYsWVsyMF09YixZWzIxXT1DKTooeT1ZWzE4XSx2PVlbMTldLGI9WVsyMF0sQz1ZWzIxXSksWVsyMl0hPT1lc3x8WVsyM10hPT1lbj8oXz0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOltnLCgwLEEuanN4cykocmose2lkOlwicG9zaXRpb25cIixuYW1lOlwicG9zaXRpb25cIix2YWx1ZTplbixvbkNoYW5nZTplcyxjaGlsZHJlbjpbeSx2LGIsQ119KV19KSxZWzIyXT1lcyxZWzIzXT1lbixZWzI0XT1fKTpfPVlbMjRdLFlbMjVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGs9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJsYWJlbFwiLHtodG1sRm9yOlwic2l6ZVwiLGNoaWxkcmVuOlwiU2l6ZVwifSksKDAsQS5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJBZGp1c3QgdGhlIHNpemUgb2YgeW91ciBkZXYgdG9vbHMuXCJ9KV19KSxZWzI1XT1rKTprPVlbMjVdLFlbMjZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KEU9T2JqZWN0LmVudHJpZXMoQikubWFwKHJFKSxZWzI2XT1FKTpFPVlbMjZdLFlbMjddIT09ZWN8fFlbMjhdIT09Sj8oaj0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOltrLCgwLEEuanN4KShyaix7aWQ6XCJzaXplXCIsbmFtZTpcInNpemVcIix2YWx1ZTpKLG9uQ2hhbmdlOmVjLGNoaWxkcmVuOkV9KV19KSxZWzI3XT1lYyxZWzI4XT1KLFlbMjldPWopOmo9WVsyOV0sWVszMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oUz0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLEEuanN4KShcImxhYmVsXCIse2lkOlwiaGlkZS1kZXYtdG9vbHNcIixjaGlsZHJlbjpcIkhpZGUgRGV2IFRvb2xzIGZvciB0aGlzIHNlc3Npb25cIn0pLCgwLEEuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiSGlkZSBEZXYgVG9vbHMgdW50aWwgeW91IHJlc3RhcnQgeW91ciBkZXYgc2VydmVyLCBvciAxIGRheS5cIn0pXX0pLFlbMzBdPVMpOlM9WVszMF0sWVszMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oTz0oMCxBLmpzeCkobjUse30pLFA9KDAsQS5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjpcIkhpZGVcIn0pLFlbMzFdPU8sWVszMl09UCk6KE89WVszMV0sUD1ZWzMyXSksWVszM10hPT1YPyhJPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W1MsKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtY29udHJvbFwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJidXR0b25cIix7XCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJoaWRlLWRldi10b29sc1wiLG5hbWU6XCJoaWRlLWRldi10b29sc1wiLFwiZGF0YS1oaWRlLWRldi10b29sc1wiOiEwLGNsYXNzTmFtZTpcImFjdGlvbi1idXR0b25cIixvbkNsaWNrOlgsY2hpbGRyZW46W08sUF19KX0pXX0pLFlbMzNdPVgsWVszNF09SSk6ST1ZWzM0XSxZWzM1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhUPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwibGFiZWxcIix7aWQ6XCJoaWRlLWRldi10b29sc1wiLGNoaWxkcmVuOlwiSGlkZSBEZXYgVG9vbHMgc2hvcnRjdXRcIn0pLCgwLEEuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiU2V0IGEgY3VzdG9tIGtleWJvYXJkIHNob3J0Y3V0IHRvIHRvZ2dsZSB2aXNpYmlsaXR5LlwifSldfSksWVszNV09VCk6VD1ZWzM1XSxZWzM2XSE9PUc/KHo9bnVsbCE9KEQ9bnVsbD09Rz92b2lkIDA6Ry5zcGxpdChcIitcIikpP0Q6bnVsbCxZWzM2XT1HLFlbMzddPXopOno9WVszN10sWVszOF0hPT1RfHxZWzM5XSE9PXo/KEw9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbVCwoMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1jb250cm9sXCIsY2hpbGRyZW46KDAsQS5qc3gpKHJvLHt2YWx1ZTp6LG9uQ2hhbmdlOlF9KX0pXX0pLFlbMzhdPVEsWVszOV09eixZWzQwXT1MKTpMPVlbNDBdLFlbNDFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KE49KDAsQS5qc3gpKFwibGFiZWxcIix7Y2hpbGRyZW46XCJEaXNhYmxlIERldiBUb29scyBmb3IgdGhpcyBwcm9qZWN0XCJ9KSxZWzQxXT1OKTpOPVlbNDFdLFlbNDJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KFI9KDAsQS5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCJkZXZJbmRpY2F0b3JzOiBmYWxzZVwifSksWVs0Ml09Uik6Uj1ZWzQyXSxZWzQzXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhNPSgwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjooMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46W04sKDAsQS5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOltcIlRvIGRpc2FibGUgdGhpcyBVSSBjb21wbGV0ZWx5LCBzZXRcIixcIiBcIixSLFwiIFwiLFwiaW4geW91ciBcIiwoMCxBLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcIm5leHQuY29uZmlnXCJ9KSxcIiBcIixcImZpbGUuXCJdfSldfSl9KSxZWzQzXT1NKTpNPVlbNDNdLFlbNDRdIT09bXx8WVs0NV0hPT1ffHxZWzQ2XSE9PWp8fFlbNDddIT09SXx8WVs0OF0hPT1MPyhaPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZXMtY29udGFpbmVyXCIsY2hpbGRyZW46W20sXyxqLEksTCxNXX0pLFlbNDRdPW0sWVs0NV09XyxZWzQ2XT1qLFlbNDddPUksWVs0OF09TCxZWzQ5XT1aKTpaPVlbNDldLFlbNTBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KFU9KDAsQS5qc3gpKFwiaDJcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tc2VjdGlvbi10aXRsZVwiLGNoaWxkcmVuOlwiRGV2ZWxvcG1lbnQgU2VydmVyXCJ9KSxZWzUwXT1VKTpVPVlbNTBdLFlbNTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KEY9KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJsYWJlbFwiLHtpZDpcInJlc3RhcnQtZGV2LXNlcnZlclwiLGNoaWxkcmVuOlwiUmVzdGFydCBEZXYgU2VydmVyXCJ9KSwoMCxBLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIlJlc3RhcnRzIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2l0aG91dCBuZWVkaW5nIHRvIGxlYXZlIHRoZSBicm93c2VyLlwifSldfSksWVs1MV09Rik6Rj1ZWzUxXSxZWzUyXSE9PWVvPyhxPWZ1bmN0aW9uKCl7cmV0dXJuIGVvKHtpbnZhbGlkYXRlUGVyc2lzdGVudENhY2hlOiExfSl9LFlbNTJdPWVvLFlbNTNdPXEpOnE9WVs1M10sWVs1NF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oSD0oMCxBLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOlwiUmVzdGFydFwifSksWVs1NF09SCk6SD1ZWzU0XSxZWzU1XSE9PWVhfHxZWzU2XSE9PXE/KFY9KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2VzLWNvbnRhaW5lclwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W0YsKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtY29udHJvbFwiLGNoaWxkcmVuOigwLEEuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZGVzY3JpYmVkYnlcIjpcInJlc3RhcnQtZGV2LXNlcnZlclwiLHRpdGxlOlwiUmVzdGFydHMgdGhlIGRldmVsb3BtZW50IHNlcnZlciB3aXRob3V0IG5lZWRpbmcgdG8gbGVhdmUgdGhlIGJyb3dzZXIuXCIsbmFtZTpcInJlc3RhcnQtZGV2LXNlcnZlclwiLFwiZGF0YS1yZXN0YXJ0LWRldi1zZXJ2ZXJcIjohMCxjbGFzc05hbWU6XCJhY3Rpb24tYnV0dG9uXCIsb25DbGljazpxLGRpc2FibGVkOmVhLGNoaWxkcmVuOkh9KX0pXX0pfSksWVs1NV09ZWEsWVs1Nl09cSxZWzU3XT1WKTpWPVlbNTddLFlbNThdIT09ZWF8fFlbNTldIT09ZW8/KCQ9cHJvY2Vzcy5lbnYuX19ORVhUX0JVTkRMRVJfSEFTX1BFUlNJU1RFTlRfQ0FDSEU/KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2VzLWNvbnRhaW5lclwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46WygwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwibGFiZWxcIix7aWQ6XCJyZXNldC1idW5kbGVyLWNhY2hlXCIsY2hpbGRyZW46XCJSZXNldCBCdW5kbGVyIENhY2hlXCJ9KSwoMCxBLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIkNsZWFycyB0aGUgYnVuZGxlciBjYWNoZSBhbmQgcmVzdGFydHMgdGhlIGRldiBzZXJ2ZXIuIEhlbHBmdWwgaWYgeW91IGFyZSBzZWVpbmcgc3RhbGUgZXJyb3JzIG9yIGNoYW5nZXMgYXJlIG5vdCBhcHBlYXJpbmcuXCJ9KV19KSwoMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1jb250cm9sXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwiYnV0dG9uXCIse1wiYXJpYS1kZXNjcmliZWRieVwiOlwicmVzZXQtYnVuZGxlci1jYWNoZVwiLHRpdGxlOlwiQ2xlYXJzIHRoZSBidW5kbGVyIGNhY2hlIGFuZCByZXN0YXJ0cyB0aGUgZGV2IHNlcnZlci4gSGVscGZ1bCBpZiB5b3UgYXJlIHNlZWluZyBzdGFsZSBlcnJvcnMgb3IgY2hhbmdlcyBhcmUgbm90IGFwcGVhcmluZy5cIixuYW1lOlwicmVzZXQtYnVuZGxlci1jYWNoZVwiLFwiZGF0YS1yZXNldC1idW5kbGVyLWNhY2hlXCI6ITAsY2xhc3NOYW1lOlwiYWN0aW9uLWJ1dHRvblwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZW8oe2ludmFsaWRhdGVQZXJzaXN0ZW50Q2FjaGU6ITB9KX0sZGlzYWJsZWQ6ZWEsY2hpbGRyZW46KDAsQS5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjpcIlJlc2V0IENhY2hlXCJ9KX0pfSldfSl9KTpudWxsLFlbNThdPWVhLFlbNTldPWVvLFlbNjBdPSQpOiQ9WVs2MF0sWVs2MV0hPT1afHxZWzYyXSE9PVZ8fFlbNjNdIT09JD8oVz0oMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOltjLFosVSxWLCRdfSksWVs2MV09WixZWzYyXT1WLFlbNjNdPSQsWVs2NF09Vyk6Vz1ZWzY0XSxXfWZ1bmN0aW9uIHJFKGUpe3ZhciB0LG4scj0obj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQ9ZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gckMoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gckMoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLG89clswXSxhPXJbMV07cmV0dXJuKDAsQS5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOmEsY2hpbGRyZW46b30sbyl9ZnVuY3Rpb24gcmooZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjPSgwLHguYykoMTEpO3JldHVybihjWzBdIT09ZT8oYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2hpbGRyZW5cIixcInByZWZpeFwiXSkscj1lLmNoaWxkcmVuLG89ZS5wcmVmaXgsY1swXT1lLGNbMV09cixjWzJdPW8sY1szXT1hKToocj1jWzFdLG89Y1syXSxhPWNbM10pLGNbNF0hPT1yfHxjWzVdIT09YSk/KGk9KDAsQS5qc3gpKFwic2VsZWN0XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGNbNF09cixjWzVdPWEsY1s2XT1pKTppPWNbNl0sY1s3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhsPSgwLEEuanN4KShyQix7fSksY1s3XT1sKTpsPWNbN10sY1s4XSE9PW98fGNbOV0hPT1pPyhzPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VsZWN0LWJ1dHRvblwiLGNoaWxkcmVuOltvLGksbF19KSxjWzhdPW8sY1s5XT1pLGNbMTBdPXMpOnM9Y1sxMF0sc31mdW5jdGlvbiByUyhlKXt2YXIgdCxuLHIsbz0oMCx4LmMpKDMpO3N3aXRjaChlLnRoZW1lKXtjYXNlXCJzeXN0ZW1cIjpyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KShuOSx7fSksb1swXT10KTp0PW9bMF0sdDtjYXNlXCJkYXJrXCI6cmV0dXJuIG9bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxBLmpzeCkobjYse30pLG9bMV09bik6bj1vWzFdLG47Y2FzZVwibGlnaHRcIjpyZXR1cm4gb1syXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLEEuanN4KShuMyx7fSksb1syXT1yKTpyPW9bMl0scjtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgck89ZXUocl8oKSk7ZnVuY3Rpb24gckIoKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLFwiYXJpYS1oaWRkZW5cIjohMCxjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTQuMDYwNyA1LjQ5OTk5TDEzLjUzMDMgNi4wMzAzMkw4LjcwNzEgMTAuODUzNUM4LjMxNjU4IDExLjI0NDEgNy42ODM0MSAxMS4yNDQxIDcuMjkyODkgMTAuODUzNUwyLjQ2OTY2IDYuMDMwMzJMMS45MzkzMyA1LjQ5OTk5TDIuOTk5OTkgNC40MzkzM0wzLjUzMDMyIDQuOTY5NjZMNy45OTk5OSA5LjQzOTMzTDEyLjQ2OTcgNC45Njk2NkwxMyA0LjQzOTMzTDE0LjA2MDcgNS40OTk5OVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gclAoKXt2YXIgZSx0LG49KGU9W1wiXFxuICBbZGF0YS1uZXh0anMtaXNzdWUtZmVlZGJhY2stYnV0dG9uLWdyb3VwXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21hbGwpO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWlzc3VlLWZlZWRiYWNrLWJ1dHRvbi1ncm91cF0gYnV0dG9uIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1pc3N1ZS1mZWVkYmFjay1idXR0b24tZ3JvdXBdIGJ1dHRvbjpmaXJzdC1jaGlsZCB7XFxuICAgIHBhZGRpbmc6IDRweCAzcHggNHB4IDVweDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKSAwIDAgdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1pc3N1ZS1mZWVkYmFjay1idXR0b24tZ3JvdXBdIGJ1dHRvbjpsYXN0LWNoaWxkIHtcXG4gICAgcGFkZGluZzogNHB4IDVweCA0cHggM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJvdW5kZWQtZnVsbCkgdmFyKC0tcm91bmRlZC1mdWxsKSAwO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWlzc3VlLWZlZWRiYWNrLXNlcGFyYXRvcl0ge1xcbiAgICB3aWR0aDogMXB4O1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gclA9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn12YXIgckk9ZXUoclAoKSk7ZnVuY3Rpb24gclQoKXt2YXIgZSx0LG49KGU9W1wiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICBcIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gclQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiByeigpe3JldHVybigwLEEuanN4KShcInN0eWxlXCIse2NoaWxkcmVuOmV1KHJUKCksXCJcXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbiB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICB9XFxuICB9XFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b246ZGlzYWJsZWQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b24tLWluaXRpYWw6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICB9XFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b24tLWVycm9yOm5vdCg6ZGlzYWJsZWQpLFxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1lcnJvcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XFxuICB9XFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b24tLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCkge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1ncmVlbik7XFxuICB9XFxuXCIsJ1xcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWUtbm8tc291cmNlXSB7XFxuICAgIHBhZGRpbmc6IDZweCA4cHg7XFxuICAgIG1hcmdpbi1ib3R0b206IDRweDtcXG5cXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZyk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZS1uby1zb3VyY2VdOmxhc3QtY2hpbGQge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWUtaWdub3JlZD1cInRydWVcIl0ge1xcbiAgICBvcGFjaXR5OiAwLjY7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0ge1xcbiAgICB1c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFxuICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICAtbXMtdXNlci1zZWxlY3Q6IHRleHQ7XFxuXFxuICAgIHBhZGRpbmc6IDZweCA4cHg7XFxuXFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgfVxcblxcbiAgLmNhbGwtc3RhY2stZnJhbWUtbWV0aG9kLW5hbWUge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDRweDtcXG5cXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcblxcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2cHgpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNnB4KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLm9wZW4taW4tZWRpdG9yLWJ1dHRvbiwgLnNvdXJjZS1tYXBwaW5nLWVycm9yLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1mb250KTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgfVxcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhbGwtc3RhY2stZnJhbWUtZmlsZS1zb3VyY2Uge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICB9XFxuJyxuayxcIlxcbiAgW2RhdGEtbmV4dGpzLWVudmlyb25tZW50LW5hbWUtbGFiZWxdIHtcXG4gICAgcGFkZGluZzogMnB4IDZweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gIH1cXG5cIixuaCxlUSxuZix0UCxcIlxcbiAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogdmFyKC0tc3RhY2stbGF5ZXItaGVpZ2h0KTtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAgIHRyYW5zaXRpb246XFxuICAgICAgdHJhbnNsYXRlIDM1MG1zIHZhcigtLXRpbWluZy1zd2lmdCksXFxuICAgICAgYm94LXNoYWRvdyAzNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTEge1xcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc2l6ZS0yNCkpO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTIge1xcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc2l6ZS00OCkpO1xcbiAgICB6LWluZGV4OiAtMTtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjayB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogLTFweDtcXG4gICAgaGVpZ2h0OiAwO1xcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1zdGFjayB7XFxuICAgIC0tc3RhY2stbGF5ZXItaGVpZ2h0OiA0NHB4O1xcbiAgICAtLXN0YWNrLWxheWVyLWhlaWdodC1oYWxmOiBjYWxjKHZhcigtLXN0YWNrLWxheWVyLWhlaWdodCkgLyAyKTtcXG4gICAgLS1zdGFjay1sYXllci10cmltOiAxM3B4O1xcbiAgICAtLXNoYWRvdzogMHB4IDAuOTI1cHggMC45MjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjAyKSxcXG4gICAgICAwcHggMy43cHggNy40cHggLTMuN3B4IHJnYmEoMCwgMCwgMCwgMC4wNCksXFxuICAgICAgMHB4IDE0LjhweCAyMi4ycHggLTcuNHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XFxuXFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXIgY2VudGVyO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB6LWluZGV4OiAtMTtcXG4gICAgbWF4LXdpZHRoOiB2YXIoLS1uZXh0LWRpYWxvZy1tYXgtd2lkdGgpO1xcblxcbiAgICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXIge1xcbiAgICAgIGdyaWQtYXJlYTogMSAvIDE7XFxuICAgICAgLyogSGlkZSAqL1xcbiAgICAgIHRyYW5zbGF0ZTogMCBjYWxjKHZhcigtLXN0YWNrLWxheWVyLWhlaWdodCkgKiAtMSk7XFxuICAgIH1cXG5cXG4gICAgJltkYXRhLXN0YWNrLWNvdW50PScxJ10sXFxuICAgICZbZGF0YS1zdGFjay1jb3VudD0nMiddIHtcXG4gICAgICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMSB7XFxuICAgICAgICB0cmFuc2xhdGU6IDBcXG4gICAgICAgICAgY2FsYyh2YXIoLS1zdGFjay1sYXllci1oZWlnaHQtaGFsZikgKiAtMSAtIHZhcigtLXN0YWNrLWxheWVyLXRyaW0pKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJltkYXRhLXN0YWNrLWNvdW50PScyJ10ge1xcbiAgICAgIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0yIHtcXG4gICAgICAgIHRyYW5zbGF0ZTogMCBjYWxjKHZhcigtLXN0YWNrLWxheWVyLXRyaW0pICogLTEgKiAyKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLyogT25seSB0aGUgYm90dG9tIHN0YWNrIHNob3VsZCBoYXZlIHRoZSBzaGFkb3cgKi9cXG4gICAgJltkYXRhLXN0YWNrLWNvdW50PScxJ10gLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTEge1xcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdyk7XFxuICAgIH1cXG5cXG4gICAgJltkYXRhLXN0YWNrLWNvdW50PScyJ10ge1xcbiAgICAgIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0yIHtcXG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdyk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXCIsXCJcXG4gIC5lcnJvci1vdmVybGF5LXBhZ2luYXRpb24ge1xcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogOHB4O1xcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWNvdW50IHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxuXFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgfVxcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICB9XFxuXFxuICAgICY6bm90KDpkaXNhYmxlZCk6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICAgIH1cXG5cXG4gICAgJjpkaXNhYmxlZCB7XFxuICAgICAgb3BhY2l0eTogMC41O1xcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LXBhZ2luYXRpb24tYnV0dG9uLWljb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIH1cXG5cIiwnXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSB7XFxuICAgIC0tY29kZS1mcmFtZS1wYWRkaW5nOiAxMnB4O1xcbiAgICAtLWNvZGUtZnJhbWUtbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1jb2RlLWZyYW1lLWxpbmUtaGVpZ2h0KTtcXG4gICAgbWFyZ2luOiA4cHggMDtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtbGluayxcXG4gIC5jb2RlLWZyYW1lLXByZSB7XFxuICAgIHBhZGRpbmc6IHZhcigtLWNvZGUtZnJhbWUtcGFkZGluZyk7XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1saW5rIHN2ZyB7XFxuICAgIGZsZXgtc2hyaW5rOiAwO1xcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtbGluZXMge1xcbiAgICBtaW4td2lkdGg6IG1heC1jb250ZW50O1xcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtbGluayBbZGF0YS10ZXh0XSB7XFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxuICAgIG1hcmdpbjogYXV0byA2cHg7XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1oZWFkZXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxMDBtcyBlYXNlLW91dDtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICB9XFxuXFxuICBbZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstc291cmNlLWZpbGVdIHtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBtYXJnaW46IC00cHggMCAtNHB4IGF1dG87XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV06OnNlbGVjdGlvbixcXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdICo6OnNlbGVjdGlvbiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdICo6bm90KGEpIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZS1saW5lXVtkYXRhLW5leHRqcy1jb2RlZnJhbWUtbGluZS0tZXJyb3JlZD1cInRydWVcIl0ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcXG5cXG4gICAgPiBzcGFuIHsgXFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgIHotaW5kZXg6IDE7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XFxuICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIHZhcigtLWNvZGUtZnJhbWUtcGFkZGluZykgKiAyKTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLWNvZGUtZnJhbWUtbGluZS1oZWlnaHQpO1xcbiAgICAgIGxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1jb2RlLWZyYW1lLXBhZGRpbmcpKTtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1yZWQtMjAwKTtcXG4gICAgICBib3gtc2hhZG93OiAycHggMCAwIDAgdmFyKC0tY29sb3ItcmVkLTkwMCkgaW5zZXQ7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB9XFxuICB9XFxuXFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+ICoge1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1saW5rIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBvdXRsaW5lOiAwO1xcbiAgfVxcbiAgLmNvZGUtZnJhbWUtbGluayBbZGF0YS1pY29uPVxcJ3JpZ2h0XFwnXSB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gZGl2ID4gcHJlIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gc3ZnIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gIH1cXG4nLFwiXFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdOjpzZWxlY3Rpb24sXFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdICo6OnNlbGVjdGlvbiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gKiB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gPiBkaXYgPiBwIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gPiBkaXYgPiBwOmhvdmVyIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSBkaXYgPiBwcmUge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB9XFxuXCIsXCJcXG4gIFtkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGlua10gc3ZnIHtcXG4gICAgd2lkdGg6IGF1dG87XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICB9XFxuICBbZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmtdIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgfVxcbiAgW2RhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rXTpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcXG4gIH1cXG4gIFtkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGluay1pbXBvcnQtdHJhY2VdIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XFxuICB9XFxuXCIsXCJcIixcIlxcbiAgLm5leHRqcy1lcnJvci13aXRoLXN0YXRpYyB7XFxuICAgIGJvdHRvbTogY2FsYygxNnB4ICogNC41KTtcXG4gIH1cXG4gIHAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19saW5rIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIH1cXG4gIHAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19ub3RlcyB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zdGFjay1ub3Rlcyk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keSA+IGgyOm5vdCg6Zmlyc3QtY2hpbGQpIHtcXG4gICAgbWFyZ2luLXRvcDogY2FsYygxNnB4ICsgOHB4KTtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5ID4gaDIge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGl0bGUtY29sb3IpO1xcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0yMCk7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQ6aG92ZXIge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWVycm9ycyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzID4gc3ZnIHtcXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWhpZGUtYnV0dG9uIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDI0cHg7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xcbiAgICBvcGFjaXR5OiAwLjc7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWhpZGUtYnV0dG9uOmhvdmVyIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2Vycm9yX3RpdGxlIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xcbiAgfVxcbiAgLmVycm9yLW92ZXJsYXktbm90ZXMtY29udGFpbmVyIHtcXG4gICAgbWFyZ2luOiA4cHggMnB4O1xcbiAgfVxcbiAgLmVycm9yLW92ZXJsYXktbm90ZXMtY29udGFpbmVyIHAge1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuICB9XFxuXCIsbkYsXCJcXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogNHB4O1xcblxcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjYpO1xcbiAgICBwYWRkaW5nOiA2cHggOHB4IDZweCA2cHg7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21hbGwpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcblxcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICB9XFxuXFxuICBhLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgfVxcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnZlcnNpb24tc3RhbGVuZXNzLWluZGljYXRvci5mcmVzaCB7XFxuICAgIGZpbGw6IHZhcigtLWNvbG9yLWdyZWVuLTgwMCk7XFxuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItZ3JlZW4tMzAwKTtcXG4gIH1cXG4gIC52ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3Iuc3RhbGUge1xcbiAgICBmaWxsOiB2YXIoLS1jb2xvci1hbWJlci04MDApO1xcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWFtYmVyLTMwMCk7XFxuICB9XFxuICAudmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yLm91dGRhdGVkIHtcXG4gICAgZmlsbDogdmFyKC0tY29sb3ItcmVkLTgwMCk7XFxuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItcmVkLTMwMCk7XFxuICB9XFxuICAudmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yLnVua25vd24ge1xcbiAgICBmaWxsOiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XFxuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xcbiAgfVxcblxcbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMgPiAudHVyYm9wYWNrLXRleHQge1xcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXFxuICAgICAgdG8gcmlnaHQsXFxuICAgICAgdmFyKC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkKSAwJSxcXG4gICAgICB2YXIoLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlKSAxMDAlXFxuICAgICk7XFxuICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcXG4gICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XFxuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIH1cXG5cIixcIlxcbiAgLmRldi10b29scy1pbmZvLWNvZGUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBwYWRkaW5nOiAycHggNHB4O1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMyk7XFxuICAgIHdoaXRlLXNwYWNlOiBicmVhay1zcGFjZXM7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1jb250YWluZXIge1xcbiAgICBwYWRkaW5nOiA2cHg7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jayB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICAgIG1pbi13aWR0aDogMzI2cHg7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1wcmUge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29weS1idXR0b24ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICByaWdodDogOHB4O1xcbiAgICB0b3A6IDhweDtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBwYWRkaW5nOiAwIDE2cHg7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lLmRldi10b29scy1pbmZvLWhpZ2hsaWdodCB7XFxuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tY29sb3ItYmx1ZS05MDApO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ibHVlLTQwMCk7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zeW50YXgta2V5d29yZCk7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLXZhbHVlIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN5bnRheC1saW5rKTtcXG4gIH1cXG5cIixcIlwiLHJPLCdcXG4gIC5uZXh0anMtc2Nyb2xsLWZhZGVyIHtcXG4gICAgLS1ibHVyOiAxcHg7XFxuICAgIC0tc3RvcDogMjUlO1xcbiAgICAtLWhlaWdodDogMTUwcHg7XFxuICAgIC0tY29sb3ItYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IHZhcigtLWhlaWdodCk7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1ibHVyKSk7XFxuXFxuICAgICZbZGF0YS1zaWRlPVwidG9wXCJdIHtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgdHJhbnNwYXJlbnQsIHZhcigtLWNvbG9yLWJnKSk7XFxuICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY29sb3ItYmcpIHZhcigtLXN0b3ApLCB0cmFuc3BhcmVudCk7XFxuICAgIH1cXG4gIH1cXG4nLHJJLHJmKX0pfWZ1bmN0aW9uIHJEKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByTChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gckQoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gckQoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gck4oZSx0KXt2YXIgbixyLG8sYSxpPSgwLHguYykoMTApLGw9dm9pZCAwIT09ZSYmZTtpWzBdIT09dD8obj12b2lkIDA9PT10P3t9OnQsaVswXT10LGlbMV09bik6bj1pWzFdO3ZhciBzPW4sYz1yTCgoMCx3LnVzZVN0YXRlKShsKSwyKSx1PWNbMF0sZD1jWzFdLGY9ckwoKDAsdy51c2VTdGF0ZSkoITEpLDIpLHA9ZlswXSxoPWZbMV0sbT1zLmVudGVyRGVsYXksZz1zLmV4aXREZWxheSx5PXZvaWQgMD09PW0/MTptLHY9dm9pZCAwPT09Zz8wOmc7cmV0dXJuIGlbMl0hPT1sfHxpWzNdIT09eXx8aVs0XSE9PXY/KHI9ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBsPyhkKCEwKSx5PD0wP2goITApOmU9c2V0VGltZW91dChmdW5jdGlvbigpe2goITApfSx5KSk6KGgoITEpLHY8PTA/ZCghMSk6dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZCghMSl9LHYpKSxmdW5jdGlvbigpe2NsZWFyVGltZW91dChlKSxjbGVhclRpbWVvdXQodCl9fSxvPVtsLHksdl0saVsyXT1sLGlbM109eSxpWzRdPXYsaVs1XT1yLGlbNl09byk6KHI9aVs1XSxvPWlbNl0pLCgwLHcudXNlRWZmZWN0KShyLG8pLGlbN10hPT11fHxpWzhdIT09cD8oYT17bW91bnRlZDp1LHJlbmRlcmVkOnB9LGlbN109dSxpWzhdPXAsaVs5XT1hKTphPWlbOV0sYX1mdW5jdGlvbiByUihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gck0oZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIHJaKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9KDAseC5jKSgxOCksYz1lLnN0YXRlLHU9ZS5kaXNwYXRjaCxkPWUuZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHMsZj1lLnJ1bnRpbWVFcnJvcnMscD1lLmVycm9yQ291bnQsaD0hIXByb2Nlc3MuZW52LlRVUkJPUEFDSztzWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e2V4aXREZWxheToyMDB9LHNbMF09dCk6dD1zWzBdO3ZhciBtPXJOKGMuaXNFcnJvck92ZXJsYXlPcGVuLHQpLGc9bS5tb3VudGVkLHk9bS5yZW5kZXJlZDtzWzFdIT09cHx8c1syXSE9PXl8fHNbM10hPT1jLnZlcnNpb25JbmZvPyhuPXtyZW5kZXJlZDp5LHRyYW5zaXRpb25EdXJhdGlvbk1zOjIwMCxpc1R1cmJvcGFjazpoLHZlcnNpb25JbmZvOmMudmVyc2lvbkluZm8sZXJyb3JDb3VudDpwfSxzWzFdPXAsc1syXT15LHNbM109Yy52ZXJzaW9uSW5mbyxzWzRdPW4pOm49c1s0XTt2YXIgdj1uO3JldHVybiBudWxsIT09Yy5idWlsZEVycm9yPyhzWzVdIT09dnx8c1s2XSE9PWMuYnVpbGRFcnJvcj8ocj0oMCxBLmpzeCkobmIsck0oclIoe30sdikse21lc3NhZ2U6Yy5idWlsZEVycm9yLHJlbmRlcmVkOiEwfSkpLHNbNV09dixzWzZdPWMuYnVpbGRFcnJvcixzWzddPXIpOnI9c1s3XSxyKTpmLmxlbmd0aD9nPyhzWzEwXSE9PXU/KGk9ZnVuY3Rpb24oKXt1KHt0eXBlOnF9KX0sc1sxMF09dSxzWzExXT1pKTppPXNbMTFdLHNbMTJdIT09dnx8c1sxM10hPT1kfHxzWzE0XSE9PWZ8fHNbMTVdIT09Yy5kZWJ1Z0luZm98fHNbMTZdIT09aT8obD0oMCxBLmpzeCkobkssck0oclIoe30sdikse2RlYnVnSW5mbzpjLmRlYnVnSW5mbyxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczpkLHJ1bnRpbWVFcnJvcnM6ZixvbkNsb3NlOml9KSksc1sxMl09dixzWzEzXT1kLHNbMTRdPWYsc1sxNV09Yy5kZWJ1Z0luZm8sc1sxNl09aSxzWzE3XT1sKTpsPXNbMTddLGwpOihzWzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsQS5qc3gpKHcuU3VzcGVuc2Use30pLHNbOV09YSk6YT1zWzldLGEpOihzWzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89KDAsQS5qc3gpKHcuU3VzcGVuc2Use30pLHNbOF09byk6bz1zWzhdLG8pfWZ1bmN0aW9uIHJVKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByRihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gcnEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JGKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIHJIKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByVShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByVShlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX12YXIgclY9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPSgwLHguYykoNCk7cmV0dXJuIGUuc3RhdGUuYnVpbGRFcnJvcj8oclswXSE9PWU/KHQ9KDAsQS5qc3gpKHJXLHJxKHt9LGUpKSxyWzBdPWUsclsxXT10KTp0PXJbMV0sdCk6KHJbMl0hPT1lPyhuPSgwLEEuanN4KShyJCxycSh7fSxlKSksclsyXT1lLHJbM109bik6bj1yWzNdLG4pfSxyJD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGk9KDAseC5jKSgxMiksbD1lLmNoaWxkcmVuLHM9ZS5zdGF0ZSxjPWUuaXNBcHBEaXIsdT1zLmVycm9ycztpWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e30saVswXT10KTp0PWlbMF07dmFyIGQ9ckgoKDAsdy51c2VTdGF0ZSkodCksMiksZj1kWzBdLHA9ZFsxXTtpZihpWzFdIT09dXx8aVsyXSE9PWYpe2Zvcih2YXIgaD1bXSxtPW51bGwsZz0wO2c8dS5sZW5ndGg7KytnKXt2YXIgeT11W2ddLHY9eS5pZDtpZih2IGluIGYpe2gucHVzaChmW3ZdKTtjb250aW51ZX1tPXk7YnJlYWt9bj1baCxtXSxpWzFdPXUsaVsyXT1mLGlbM109bn1lbHNlIG49aVszXTt2YXIgYj1ySChuLDIpLEE9YlswXSxDPWJbMV07aVs0XSE9PWN8fGlbNV0hPT1DPyhyPWZ1bmN0aW9uKCl7aWYobnVsbCE9Qyl7dmFyIGUsdCxuPSEwO3JldHVybihlPUMsdD1jLG5EKGZ1bmN0aW9uKCl7dmFyIG4scixvO3JldHVybiBuUih0aGlzLGZ1bmN0aW9uKGEpe3N3aXRjaChhLmxhYmVsKXtjYXNlIDA6dmFyIGksbDtpZihuPXtpZDplLmlkLHJ1bnRpbWU6ITAsZXJyb3I6ZS5lcnJvcix0eXBlOmUudHlwZX0sIShcInVzZVwiaW4gdykpcmV0dXJuWzMsMV07cmV0dXJuWzIsbk4obkwoe30sbikse2ZyYW1lczoobD0oaT1mdW5jdGlvbigpe3JldHVybiBuRChmdW5jdGlvbigpe3JldHVybiBuUih0aGlzLGZ1bmN0aW9uKG4pe3N3aXRjaChuLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsZVMoZS5mcmFtZXMsblQoZS5lcnJvciksdCldO2Nhc2UgMTpyZXR1cm5bMixuLnNlbnQoKV19fSl9KSgpfSkoKSxmdW5jdGlvbigpe3JldHVybiBsfSl9KV07Y2FzZSAxOnJldHVybiByPVtuTCh7fSxuKV0sbz17fSxbNCxlUyhlLmZyYW1lcyxuVChlLmVycm9yKSx0KV07Y2FzZSAyOnJldHVyblsyLG5OLmFwcGx5KHZvaWQgMCxyLmNvbmNhdChbKG8uZnJhbWVzPWEuc2VudCgpLG8pXSkpXTtjYXNlIDM6cmV0dXJuWzJdfX0pfSkoKSkudGhlbihmdW5jdGlvbihlKXtuJiZwKGZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJuIG49cnEoe30sdCkscj1udWxsIT0ocj1yRih7fSxlLmlkLGUpKT9yOnt9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSksbn0pfSksZnVuY3Rpb24oKXtuPSExfX19LG89W0MsY10saVs0XT1jLGlbNV09QyxpWzZdPXIsaVs3XT1vKToocj1pWzZdLG89aVs3XSksKDAsdy51c2VFZmZlY3QpKHIsbyk7dmFyIF89dS5sZW5ndGg7cmV0dXJuIGlbOF0hPT1sfHxpWzldIT09QXx8aVsxMF0hPT1fPyhhPWwoe3J1bnRpbWVFcnJvcnM6QSx0b3RhbEVycm9yQ291bnQ6X30pLGlbOF09bCxpWzldPUEsaVsxMF09XyxpWzExXT1hKTphPWlbMTFdLGF9LHJXPWZ1bmN0aW9uKGUpe3JldHVybigwLGUuY2hpbGRyZW4pKHtydW50aW1lRXJyb3JzOltdLHRvdGFsRXJyb3JDb3VudDoxfSl9O2Z1bmN0aW9uIHJZKCl7dmFyIGUsdCxuPSgwLHguYykoNCkscj1kbCgpLG89ci5zaGFkb3dSb290LGE9ci5zdGF0ZTtyZXR1cm4gblswXSE9PW98fG5bMV0hPT1hLnNjYWxlPyhlPWZ1bmN0aW9uKCl7KG51bGw9PW8/dm9pZCAwOm8uaG9zdCkmJm8uaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tbmV4dGpzLWRldi10b29scy1zY2FsZVwiLFN0cmluZyhhLnNjYWxlfHwxKSl9LHQ9W28sYS5zY2FsZV0sblswXT1vLG5bMV09YS5zY2FsZSxuWzJdPWUsblszXT10KTooZT1uWzJdLHQ9blszXSksKDAsdy51c2VMYXlvdXRFZmZlY3QpKGUsdCksbnVsbH12YXIgcks9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLWluZGljYXRvci9kZXZ0b29scy1pbmRpY2F0b3IuY3NzXCIpLHJYPXt9O2Z1bmN0aW9uIHJHKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByUShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gckooZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJRKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJRKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHIwKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByMShlKXt2YXIgdCxuLHIsbyxhPSgwLHguYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMy4wODg4OSAxMS44Mzg0TDIuNjI0ODYgMTIuMzAyNEwxLjY5Njc4IDExLjM3NDRMMi4xNjA4MiAxMC45MTAzTDYuMDcxNzggNi45OTkzN0wyLjE2MDgyIDMuMDg4NDFMMS42OTY3OCAyLjYyNDM3TDIuNjI0ODYgMS42OTYyOUwzLjA4ODg5IDIuMTYwMzNMNi45OTk4NiA2LjA3MTI5TDEwLjkxMDggMi4xNjAzM0wxMS4zNzQ5IDEuNjk2MjlMMTIuMzAyOSAyLjYyNDM3TDExLjgzODkgMy4wODg0MUw3LjkyNzkzIDYuOTk5MzdMMTEuODM4OSAxMC45MTAzTDEyLjMwMjkgMTEuMzc0NEwxMS4zNzQ5IDEyLjMwMjRMMTAuOTEwOCAxMS44Mzg0TDYuOTk5ODYgNy45Mjc0NEwzLjA4ODg5IDExLjgzODRaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLEEuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiByMihlKXt2YXIgdCxuLHIsbyxhPSgwLHguYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMy45ODA3MSAxLjEyNUwxLjEyNSAzLjk4MDcxTDEuMTI1IDguMDE5MjlMMy45ODA3MSAxMC44NzVIOC4wMTkyOUwxMC44NzUgOC4wMTkyOVYzLjk4MDcxTDguMDE5MjkgMS4xMjVIMy45ODA3MVpNMy44MjUzOCAwQzMuNjI2NDcgMCAzLjQzNTcgMC4wNzkwMTc2IDMuMjk1MDUgMC4yMTk2N0wwLjIxOTY3IDMuMjk1MDVDMC4wNzkwMTc2IDMuNDM1NyAwIDMuNjI2NDcgMCAzLjgyNTM4VjguMTc0NjJDMCA4LjM3MzUzIDAuMDc5MDE3OCA4LjU2NDMgMC4yMTk2NyA4LjcwNDk1TDMuMjk1MDUgMTEuNzgwM0MzLjQzNTcgMTEuOTIxIDMuNjI2NDcgMTIgMy44MjUzOCAxMkg4LjE3NDYyQzguMzczNTMgMTIgOC41NjQzIDExLjkyMSA4LjcwNDk1IDExLjc4MDNMMTEuNzgwMyA4LjcwNDk1QzExLjkyMSA4LjU2NDMgMTIgOC4zNzM1MyAxMiA4LjE3NDYyVjMuODI1MzhDMTIgMy42MjY0NyAxMS45MjEgMy40MzU3IDExLjc4MDMgMy4yOTUwNUw4LjcwNDk1IDAuMjE5NjdDOC41NjQzIDAuMDc5MDE3NyA4LjM3MzUzIDAgOC4xNzQ2MiAwSDMuODI1MzhaTTYuNTYyNSAyLjgxMjVWMy4zNzVWNlY2LjU2MjVINS40Mzc1VjZWMy4zNzVWMi44MTI1SDYuNTYyNVpNNiA5QzYuNDE0MjEgOSA2Ljc1IDguNjY0MjEgNi43NSA4LjI1QzYuNzUgNy44MzU3OSA2LjQxNDIxIDcuNSA2IDcuNUM1LjU4NTc5IDcuNSA1LjI1IDcuODM1NzkgNS4yNSA4LjI1QzUuMjUgOC42NjQyMSA1LjU4NTc5IDkgNiA5WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxBLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDEyIDEyXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksYVsxXT1lLGFbMl09byk6bz1hWzJdLG99clguc3R5bGVUYWdUcmFuc2Zvcm09bSgpLHJYLnNldEF0dHJpYnV0ZXM9ZCgpLHJYLmluc2VydD1jKCksclguZG9tQVBJPWwoKSxyWC5pbnNlcnRTdHlsZUVsZW1lbnQ9cCgpLGEoKShySy5aLHJYKSxySy5aJiZySy5aLmxvY2FscyYmcksuWi5sb2NhbHM7dmFyIHI0PSgwLHcuY3JlYXRlQ29udGV4dCkobnVsbCkscjU9ZnVuY3Rpb24oKXtyZXR1cm4oMCx3LnVzZUNvbnRleHQpKHI0KX07ZnVuY3Rpb24gcjMoZSl7cmV0dXJuIG93KzM2L2Uuc2NhbGUrOX1mdW5jdGlvbiByNihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gcjkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIHI4KGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiByNyhlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gb2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHI2KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHI2KGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG90KCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgICAgICAgICBbZGF0YS1uZXh0LWJhZGdlLXJvb3RdIHtcXG4gICAgICAgICAgICAtLXRpbWluZzogY3ViaWMtYmV6aWVyKDAuMjMsIDAuODgsIDAuMjYsIDAuOTIpO1xcbiAgICAgICAgICAgIC0tZHVyYXRpb24tbG9uZzogMjUwbXM7XFxuICAgICAgICAgICAgLS1jb2xvci1vdXRlci1ib3JkZXI6ICMxNzE3MTc7XFxuICAgICAgICAgICAgLS1jb2xvci1pbm5lci1ib3JkZXI6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTQpO1xcbiAgICAgICAgICAgIC0tY29sb3ItaG92ZXItYWxwaGEtc3VidGxlOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjEzKTtcXG4gICAgICAgICAgICAtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjIpO1xcbiAgICAgICAgICAgIC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3ItMjogaHNsYSgwLCAwJSwgMTAwJSwgMC4yNSk7XFxuICAgICAgICAgICAgLS1tYXJrLXNpemU6IGNhbGModmFyKC0tc2l6ZSkgLSB2YXIoLS1zaXplLTIpICogMik7XFxuXFxuICAgICAgICAgICAgLS1mb2N1cy1jb2xvcjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xcbiAgICAgICAgICAgIC0tZm9jdXMtcmluZzogMnB4IHNvbGlkIHZhcigtLWZvY3VzLWNvbG9yKTtcXG5cXG4gICAgICAgICAgICAmOmhhcyhbZGF0YS1uZXh0LWJhZGdlXVtkYXRhLWVycm9yPSd0cnVlJ10pIHtcXG4gICAgICAgICAgICAgIC0tZm9jdXMtY29sb3I6ICNmZmY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWRpc2FibGVkLWljb25dIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNHB4O1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLW5leHQtYmFkZ2VdIHtcXG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZSk7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplKTtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcXG4gICAgICAgICAgICBib3gtc2hhZG93OlxcbiAgICAgICAgICAgICAgMCAwIDAgMXB4IHZhcigtLWNvbG9yLW91dGVyLWJvcmRlciksXFxuICAgICAgICAgICAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tY29sb3ItaW5uZXItYm9yZGVyKSxcXG4gICAgICAgICAgICAgIDBweCAxNnB4IDMycHggLThweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xcbiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0OHB4KTtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICBzY2FsZTogMTtcXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgICAgIHdpbGwtY2hhbmdlOiBzY2FsZSwgYm94LXNoYWRvdywgd2lkdGgsIGJhY2tncm91bmQ7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbjpcXG4gICAgICAgICAgICAgIHNjYWxlIHZhcigtLWR1cmF0aW9uLXNob3J0KSB2YXIoLS10aW1pbmcpLFxcbiAgICAgICAgICAgICAgd2lkdGggdmFyKC0tZHVyYXRpb24tbG9uZykgdmFyKC0tdGltaW5nKSxcXG4gICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tbG9uZykgdmFyKC0tdGltaW5nKSxcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2hvcnQpIGVhc2U7XFxuXFxuICAgICAgICAgICAgJjphY3RpdmVbZGF0YS1lcnJvcj0nZmFsc2UnXSB7XFxuICAgICAgICAgICAgICBzY2FsZTogMC45NTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJltkYXRhLWFuaW1hdGU9J3RydWUnXTpub3QoOmhvdmVyKSB7XFxuICAgICAgICAgICAgICBzY2FsZTogMS4wMjtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJltkYXRhLWVycm9yPSdmYWxzZSddOmhhcyhbZGF0YS1uZXh0LW1hcmtdOmZvY3VzLXZpc2libGUpIHtcXG4gICAgICAgICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDNweDtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJltkYXRhLWVycm9yPSd0cnVlJ10ge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2NhMmEzMDtcXG4gICAgICAgICAgICAgIC0tY29sb3ItaW5uZXItYm9yZGVyOiAjZTU0ODRkO1xcblxcbiAgICAgICAgICAgICAgW2RhdGEtbmV4dC1tYXJrXSB7XFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yKTtcXG4gICAgICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDBweDtcXG5cXG4gICAgICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvci0yKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmW2RhdGEtZXJyb3ItZXhwYW5kZWQ9J2ZhbHNlJ11bZGF0YS1lcnJvcj0ndHJ1ZSddIH4gW2RhdGEtZG90XSB7XFxuICAgICAgICAgICAgICBzY2FsZTogMTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgPiBkaXYge1xcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzLWNvbGxhcHNlXTpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXNdOmhhcyhbZGF0YS1pc3N1ZXMtb3Blbl06Zm9jdXMtdmlzaWJsZSkge1xcbiAgICAgICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWRvdF0ge1xcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTgpO1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS04KTtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCB2YXIoLS1jb2xvci1vdXRlci1ib3JkZXIpO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICAgICAgdG9wOiAycHg7XFxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcXG4gICAgICAgICAgICBzY2FsZTogMDtcXG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBzY2FsZSAyMDBtcyB2YXIoLS10aW1pbmcpO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IHZhcigtLWR1cmF0aW9uLXNob3J0KTtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXNdIHtcXG4gICAgICAgICAgICAtLXBhZGRpbmctbGVmdDogOHB4O1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgZ2FwOiAycHg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTMyKTtcXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2hvcnQpIGVhc2U7XFxuXFxuICAgICAgICAgICAgJjpoYXMoW2RhdGEtaXNzdWVzLW9wZW5dOmhvdmVyKSB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvcik7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICY6aGFzKFtkYXRhLWlzc3Vlcy1jb2xsYXBzZV0pIHtcXG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tcGFkZGluZy1sZWZ0KSAvIDIpO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBbZGF0YS1jcm9zc10ge1xcbiAgICAgICAgICAgICAgdHJhbnNsYXRlOiAwcHggLTFweDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzLW9wZW5dIHtcXG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTMpO1xcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcXG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgZ2FwOiAycHg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMzYpO1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgICAgICAgICAgei1pbmRleDogMjtcXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcbiAgICAgICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXMtY29sbGFwc2VdIHtcXG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2hvcnQpIGVhc2U7XFxuXFxuICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvcik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWNyb3NzXSB7XFxuICAgICAgICAgICAgY29sb3I6ICNmZmY7XFxuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTIpO1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xMik7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtbmV4dC1tYXJrXSB7XFxuICAgICAgICAgICAgd2lkdGg6IHZhcigtLW1hcmstc2l6ZSk7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1tYXJrLXNpemUpO1xcbiAgICAgICAgICAgIG1hcmdpbjogMCAycHg7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1sb25nKSB2YXIoLS10aW1pbmcpO1xcblxcbiAgICAgICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhvdmVyLWFscGhhLXN1YnRsZSk7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHN2ZyB7XFxuICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcXG4gICAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTQwKTtcXG4gICAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS00MCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1hbmltYXRpb25dIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xcbiAgICAgICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXIgY2VudGVyO1xcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XFxuXFxuICAgICAgICAgICAgJltkYXRhLWFuaW1hdGU9J2ZhbHNlJ10ge1xcbiAgICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWV4aXRdLFxcbiAgICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWVudGVyXSB7XFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMG1zO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICA+ICoge1xcbiAgICAgICAgICAgICAgZ3JpZC1hcmVhOiAxIC8gMTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWV4aXRdIHtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZU91dCAzMDBtcyB2YXIoLS10aW1pbmcpIGZvcndhcmRzO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZW50ZXJdIHtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDMwMG1zIHZhcigtLXRpbWluZykgZm9yd2FyZHM7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1wbHVyYWxdIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgICAgICAgJltkYXRhLWFuaW1hdGU9J3RydWUnXSB7XFxuICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAzMDBtcyB2YXIoLS10aW1pbmcpIGZvcndhcmRzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICAucGF0aDAge1xcbiAgICAgICAgICAgIGFuaW1hdGlvbjogZHJhdzAgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICAucGF0aDEge1xcbiAgICAgICAgICAgIGFuaW1hdGlvbjogZHJhdzEgMS41cyBlYXNlLW91dCBpbmZpbml0ZTtcXG4gICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuM3M7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgLnBhdXNlZCB7XFxuICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgQGtleWZyYW1lcyBmYWRlSW4ge1xcbiAgICAgICAgICAgIDAlIHtcXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMnB4KTtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAxMDAlIHtcXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMHB4KTtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgQGtleWZyYW1lcyBmYWRlT3V0IHtcXG4gICAgICAgICAgICAwJSB7XFxuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xcbiAgICAgICAgICAgICAgZmlsdGVyOiBibHVyKDBweCk7XFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDEwMCUge1xcbiAgICAgICAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTJweCk7XFxuICAgICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMnB4KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgQGtleWZyYW1lcyBkcmF3MCB7XFxuICAgICAgICAgICAgMCUsXFxuICAgICAgICAgICAgMjUlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMjkuNjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgMjUlLFxcbiAgICAgICAgICAgIDUwJSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgNTAlLFxcbiAgICAgICAgICAgIDc1JSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgNzUlLFxcbiAgICAgICAgICAgIDEwMCUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDI5LjY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIEBrZXlmcmFtZXMgZHJhdzEge1xcbiAgICAgICAgICAgIDAlLFxcbiAgICAgICAgICAgIDIwJSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogLTExLjY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDIwJSxcXG4gICAgICAgICAgICA1MCUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDUwJSxcXG4gICAgICAgICAgICA3NSUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDc1JSxcXG4gICAgICAgICAgICAxMDAlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAxMS42O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pIHtcXG4gICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZXhpdF0sXFxuICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWVudGVyXSxcXG4gICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtcGx1cmFsXSB7XFxuICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDBtcyAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcbiAgICAgICAgXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIG90PWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LGIsQyxfLGssRSxqLFMsTyxCLFAsSSxULHosRCxMLE4sUixNLFosVSxILFYsJCxXLFk9KDAseC5jKSg0MCk7WVswXSE9PWU/KEQ9cjcoZSxbXCJvblRyaWdnZXJDbGlja1wiXSksTD1lLm9uVHJpZ2dlckNsaWNrLFlbMF09ZSxZWzFdPUQsWVsyXT1MKTooRD1ZWzFdLEw9WVsyXSk7dmFyIEs9ZGwoKSxYPUsuc3RhdGUsRz1LLmRpc3BhdGNoLFE9dTMoKS50b3RhbEVycm9yQ291bnQsSj0zNi9YLnNjYWxlLGVlPXI1KCksZXQ9ZWUucGFuZWwsZW49ZWUudHJpZ2dlclJlZixlcj1lZS5zZXRQYW5lbCxlbz1cInBhbmVsLXNlbGVjdG9yXCI9PT1ldCxlYT1RPjAsZWk9b2UoKDAsdy51c2VTdGF0ZSkoZWEpLDIpLGVsPWVpWzBdLGVzPWVpWzFdLGVjPW9lKCgwLHcudXNlU3RhdGUpKGVhKSwyKSxlZD1lY1swXSxlZj1lY1sxXTtlZCE9PWVhJiYoZWYoZWEpLGVzKGVhKSk7dmFyIGVwPW9lKCgwLHcudXNlU3RhdGUpKCExKSwyKSxlaD1lcFswXSxlbT1lcFsxXSxlZz0odD1RLG49MTUwLGE9KDAseC5jKSg0KSxpPW4sbD0oMCx3LnVzZVJlZikobnVsbCksZD0ocz0oMCx3LnVzZVN0YXRlKSghMSksYz0yLHU9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0ocyl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0ocywyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gckcoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gckcoZSx0KX19KHMsYyl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpWzBdLGY9dVsxXSxhWzBdIT09aXx8YVsxXSE9PXQ/KHI9ZnVuY3Rpb24oKXtpZih0PjApe3ZhciBlPWwuY3VycmVudD9EYXRlLm5vdygpLWwuY3VycmVudDotMTtpZihsLmN1cnJlbnQ9RGF0ZS5ub3coKSwhKGU8PWkpKXtmKCEwKTt2YXIgbj13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2YoITEpfSxpKTtyZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobil9fX19LG89W3QsaV0sYVswXT1pLGFbMV09dCxhWzJdPXIsYVszXT1vKToocj1hWzJdLG89YVszXSksKDAsdy51c2VFZmZlY3QpKHIsbyksZCksZXk9KDAsdy51c2VSZWYpKG51bGwpLGV2PShwPWV5LGc9KDAseC5jKSg0KSx2PSh5PXJKKCgwLHcudXNlU3RhdGUpKDApLDIpKVswXSxiPXlbMV0sZ1swXSE9PXAuY3VycmVudD8oaD1mdW5jdGlvbigpe3ZhciBlPXAuY3VycmVudDtpZihlKXt2YXIgdD1uZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24oZSl7YihySihlLDEpWzBdLmNvbnRlbnRSZWN0LndpZHRoKX0pO3JldHVybiB0Lm9ic2VydmUoZSksZnVuY3Rpb24oKXtyZXR1cm4gdC5kaXNjb25uZWN0KCl9fX0sZ1swXT1wLmN1cnJlbnQsZ1sxXT1oKTpoPWdbMV0sZ1syXSE9PXA/KG09W3BdLGdbMl09cCxnWzNdPW0pOm09Z1szXSwoMCx3LnVzZUVmZmVjdCkoaCxtKSx2KSxlYj0oQz1YLmJ1aWxkaW5nSW5kaWNhdG9yfHxYLnJlbmRlcmluZ0luZGljYXRvcixFPSgwLHguYykoNCksaj03NTAsUD0oUz0oMCx3LnVzZVN0YXRlKSghMSksTz0yLEI9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oUyl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oUywyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gcjAoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gcjAoZSx0KX19KFMsTyl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpWzBdLEk9QlsxXSxUPSgwLHcudXNlUmVmKShudWxsKSx6PSgwLHcudXNlUmVmKShudWxsKSxFWzBdIT09anx8RVsxXSE9PUM/KF89ZnVuY3Rpb24oKXtpZih6LmN1cnJlbnQmJihjbGVhclRpbWVvdXQoei5jdXJyZW50KSx6LmN1cnJlbnQ9bnVsbCksQyludWxsPT09VC5jdXJyZW50JiYoVC5jdXJyZW50PURhdGUubm93KCkpLEkoITApO2Vsc2UgaWYobnVsbD09PVQuY3VycmVudClJKCExKTtlbHNle3ZhciBlPURhdGUubm93KCktVC5jdXJyZW50LHQ9aipNYXRoLmNlaWwoZS9qKS1lO3Q+MD96LmN1cnJlbnQ9c2V0VGltZW91dChmdW5jdGlvbigpe0koITEpLFQuY3VycmVudD1udWxsfSx0KTooSSghMSksVC5jdXJyZW50PW51bGwpfXJldHVybiBmdW5jdGlvbigpe3ouY3VycmVudCYmY2xlYXJUaW1lb3V0KHouY3VycmVudCl9fSxrPVtDLGpdLEVbMF09aixFWzFdPUMsRVsyXT1fLEVbM109ayk6KF89RVsyXSxrPUVbM10pLCgwLHcudXNlRWZmZWN0KShfLGspLFApLGVBPWVsfHxYLmRpc2FibGVEZXZJbmRpY2F0b3IsZXg9MD09PWV2P1wiYXV0b1wiOmV2LGV3PVwiXCIuY29uY2F0KEosXCJweFwiKSxlQz1YLmRpc2FibGVEZXZJbmRpY2F0b3ImJighZWF8fGVoKT9cIm5vbmVcIjpcImJsb2NrXCI7WVszXSE9PWV3fHxZWzRdIT09ZUM/KE49e1wiLS1zaXplXCI6ZXcsXCItLWR1cmF0aW9uLXNob3J0XCI6XCJcIi5jb25jYXQoMTUwLFwibXNcIiksZGlzcGxheTplQ30sWVszXT1ldyxZWzRdPWVDLFlbNV09Tik6Tj1ZWzVdO3ZhciBlXz1OO3JldHVybiBZWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KFI9KDAsQS5qc3gpKFwic3R5bGVcIix7Y2hpbGRyZW46ZXUob3QoKSl9KSxZWzZdPVIpOlI9WVs2XSxZWzddIT09ZXg/KE09e3dpZHRoOmV4fSxZWzddPWV4LFlbOF09TSk6TT1ZWzhdLFlbOV0hPT1EfHxZWzEwXSE9PWVifHxZWzExXSE9PWVvfHxZWzEyXSE9PUx8fFlbMTNdIT09WC5idWlsZGluZ0luZGljYXRvcnx8WVsxNF0hPT1YLmRpc2FibGVEZXZJbmRpY2F0b3J8fFlbMTVdIT09ZW4/KFo9IVguZGlzYWJsZURldkluZGljYXRvciYmKDAsQS5qc3gpKFwiYnV0dG9uXCIscjgocjkoe2lkOlwibmV4dC1sb2dvXCIscmVmOmVuLFwiZGF0YS1uZXh0LW1hcmtcIjohMCxcImRhdGEtbmV4dC1tYXJrLWxvYWRpbmdcIjplYixvbkNsaWNrOkwsZGlzYWJsZWQ6WC5kaXNhYmxlRGV2SW5kaWNhdG9yLFwiYXJpYS1oYXNwb3B1cFwiOlwibWVudVwiLFwiYXJpYS1leHBhbmRlZFwiOmVvLFwiYXJpYS1jb250cm9sc1wiOlwibmV4dGpzLWRldi10b29scy1tZW51XCIsXCJhcmlhLWxhYmVsXCI6XCJcIi5jb25jYXQoZW8/XCJDbG9zZVwiOlwiT3BlblwiLFwiIE5leHQuanMgRGV2IFRvb2xzXCIpLFwiZGF0YS1uZXh0anMtZGV2LXRvb2xzLWJ1dHRvblwiOiEwfSxEKSx7Y2hpbGRyZW46KDAsQS5qc3gpKG9vLHtpc0xvYWRpbmc6ZWIsaXNEZXZCdWlsZGluZzpYLmJ1aWxkaW5nSW5kaWNhdG9yfSl9KSksWVs5XT1ELFlbMTBdPWViLFlbMTFdPWVvLFlbMTJdPUwsWVsxM109WC5idWlsZGluZ0luZGljYXRvcixZWzE0XT1YLmRpc2FibGVEZXZJbmRpY2F0b3IsWVsxNV09ZW4sWVsxNl09Wik6Wj1ZWzE2XSxZWzE3XSE9PUd8fFlbMThdIT09ZUF8fFlbMTldIT09ZWd8fFlbMjBdIT09ZXJ8fFlbMjFdIT09WC5idWlsZEVycm9yfHxZWzIyXSE9PVguZGlzYWJsZURldkluZGljYXRvcnx8WVsyM10hPT1YLmlzRXJyb3JPdmVybGF5T3Blbnx8WVsyNF0hPT1RfHxZWzI1XSE9PWVuPyhVPWVBJiYoMCxBLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1pc3N1ZXNcIjohMCxjaGlsZHJlbjpbKDAsQS5qc3hzKShcImJ1dHRvblwiLHtcImRhdGEtaXNzdWVzLW9wZW5cIjohMCxcImFyaWEtbGFiZWxcIjpcIk9wZW4gaXNzdWVzIG92ZXJsYXlcIixvbkNsaWNrOmZ1bmN0aW9uKCl7aWYoWC5pc0Vycm9yT3ZlcmxheU9wZW4pcmV0dXJuIHZvaWQgRyh7dHlwZTpxfSk7Ryh7dHlwZTpGfSksZXIobnVsbCl9LGNoaWxkcmVuOltYLmRpc2FibGVEZXZJbmRpY2F0b3ImJigwLEEuanN4KShcImRpdlwiLHtcImRhdGEtZGlzYWJsZWQtaWNvblwiOiEwLGNoaWxkcmVuOigwLEEuanN4KShyMix7fSl9KSwoMCxBLmpzeCkob3Ise2FuaW1hdGU6ZWcsXCJkYXRhLWlzc3Vlcy1jb3VudC1hbmltYXRpb25cIjohMCxjaGlsZHJlbjpRfSxRKSxcIiBcIiwoMCxBLmpzeHMpKFwiZGl2XCIse2NoaWxkcmVuOltcIklzc3VlXCIsUT4xJiYoMCxBLmpzeCkoXCJzcGFuXCIse1wiYXJpYS1oaWRkZW5cIjohMCxcImRhdGEtaXNzdWVzLWNvdW50LXBsdXJhbFwiOiEwLFwiZGF0YS1hbmltYXRlXCI6ZWcmJjI9PT1RLGNoaWxkcmVuOlwic1wifSldfSldfSksIVguYnVpbGRFcnJvciYmKDAsQS5qc3gpKFwiYnV0dG9uXCIse1wiZGF0YS1pc3N1ZXMtY29sbGFwc2VcIjohMCxcImFyaWEtbGFiZWxcIjpcIkNvbGxhcHNlIGlzc3VlcyBiYWRnZVwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXt2YXIgZTtYLmRpc2FibGVEZXZJbmRpY2F0b3I/ZW0oITApOmVzKCExKSxudWxsPT0oZT1lbi5jdXJyZW50KXx8ZS5mb2N1cygpfSxjaGlsZHJlbjooMCxBLmpzeCkocjEse1wiZGF0YS1jcm9zc1wiOiEwfSl9KV19KSxZWzE3XT1HLFlbMThdPWVBLFlbMTldPWVnLFlbMjBdPWVyLFlbMjFdPVguYnVpbGRFcnJvcixZWzIyXT1YLmRpc2FibGVEZXZJbmRpY2F0b3IsWVsyM109WC5pc0Vycm9yT3ZlcmxheU9wZW4sWVsyNF09USxZWzI1XT1lbixZWzI2XT1VKTpVPVlbMjZdLFlbMjddIT09Wnx8WVsyOF0hPT1VPyhIPSgwLEEuanN4cykoXCJkaXZcIix7cmVmOmV5LGNoaWxkcmVuOltaLFVdfSksWVsyN109WixZWzI4XT1VLFlbMjldPUgpOkg9WVsyOV0sWVszMF0hPT1lYXx8WVszMV0hPT1lQXx8WVszMl0hPT1lZ3x8WVszM10hPT1NfHxZWzM0XSE9PUg/KFY9KDAsQS5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0LWJhZGdlXCI6ITAsXCJkYXRhLWVycm9yXCI6ZWEsXCJkYXRhLWVycm9yLWV4cGFuZGVkXCI6ZUEsXCJkYXRhLWFuaW1hdGVcIjplZyxzdHlsZTpNLGNoaWxkcmVuOkh9KSxZWzMwXT1lYSxZWzMxXT1lQSxZWzMyXT1lZyxZWzMzXT1NLFlbMzRdPUgsWVszNV09Vik6Vj1ZWzM1XSxZWzM2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPygkPSgwLEEuanN4KShcImRpdlwiLHtcImFyaWEtaGlkZGVuXCI6ITAsXCJkYXRhLWRvdFwiOiEwfSksWVszNl09JCk6JD1ZWzM2XSxZWzM3XSE9PVZ8fFlbMzhdIT09ZV8/KFc9KDAsQS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dC1iYWRnZS1yb290XCI6ITAsc3R5bGU6ZV8sY2hpbGRyZW46W1IsViwkXX0pLFlbMzddPVYsWVszOF09ZV8sWVszOV09Vyk6Vz1ZWzM5XSxXfWZ1bmN0aW9uIG9yKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLHguYykoMTMpO2xbMF0hPT1lPyhuPXI3KGUsW1wiY2hpbGRyZW5cIixcImFuaW1hdGVcIl0pLHQ9ZS5jaGlsZHJlbixyPWUuYW5pbWF0ZSxsWzBdPWUsbFsxXT10LGxbMl09bixsWzNdPXIpOih0PWxbMV0sbj1sWzJdLHI9bFszXSk7dmFyIHM9dm9pZCAwPT09cnx8cixjPXQtMTtyZXR1cm4gbFs0XSE9PWM/KG89KDAsQS5qc3gpKFwiZGl2XCIse1wiYXJpYS1oaWRkZW5cIjohMCxcImRhdGEtaXNzdWVzLWNvdW50LWV4aXRcIjohMCxjaGlsZHJlbjpjfSksbFs0XT1jLGxbNV09byk6bz1sWzVdLGxbNl0hPT10PyhhPSgwLEEuanN4KShcImRpdlwiLHtcImRhdGEtaXNzdWVzLWNvdW50XCI6ITAsXCJkYXRhLWlzc3Vlcy1jb3VudC1lbnRlclwiOiEwLGNoaWxkcmVuOnR9KSxsWzZdPXQsbFs3XT1hKTphPWxbN10sbFs4XSE9PXN8fGxbOV0hPT1ufHxsWzEwXSE9PW98fGxbMTFdIT09YT8oaT0oMCxBLmpzeHMpKFwiZGl2XCIscjgocjkoe30sbikse1wiZGF0YS1hbmltYXRlXCI6cyxjaGlsZHJlbjpbbyxhXX0pKSxsWzhdPXMsbFs5XT1uLGxbMTBdPW8sbFsxMV09YSxsWzEyXT1pKTppPWxbMTJdLGl9ZnVuY3Rpb24gb28oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjPSgwLHguYykoMTkpLHU9ZS5pc0xvYWRpbmcsZD1lLmlzRGV2QnVpbGRpbmc/XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIjpcIndoaXRlXCIsZj11P1wicGF0aDBcIjpcInBhdXNlZFwiO2NbMF0hPT1mPyh0PSgwLEEuanN4KShcInBhdGhcIix7Y2xhc3NOYW1lOmYsZDpcIk0xMy4zIDE1LjIgTDIuMzQgMSBWMTIuNlwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwidXJsKCNuZXh0X2xvZ29fcGFpbnQwX2xpbmVhcl8xMzU3XzEwODUzKVwiLHN0cm9rZVdpZHRoOlwiMS44NlwiLG1hc2s6XCJ1cmwoI25leHRfbG9nb19tYXNrMClcIixzdHJva2VEYXNoYXJyYXk6XCIyOS42XCIsc3Ryb2tlRGFzaG9mZnNldDpcIjI5LjZcIn0pLGNbMF09ZixjWzFdPXQpOnQ9Y1sxXTt2YXIgcD11P1wicGF0aDFcIjpcInBhdXNlZFwiO3JldHVybiBjWzJdIT09cD8obj0oMCxBLmpzeCkoXCJwYXRoXCIse2NsYXNzTmFtZTpwLGQ6XCJNMTEuODI1IDEuNSBWMTMuMVwiLHN0cm9rZVdpZHRoOlwiMS44NlwiLHN0cm9rZTpcInVybCgjbmV4dF9sb2dvX3BhaW50MV9saW5lYXJfMTM1N18xMDg1MylcIixzdHJva2VEYXNoYXJyYXk6XCIxMS42XCIsc3Ryb2tlRGFzaG9mZnNldDpcIjExLjZcIn0pLGNbMl09cCxjWzNdPW4pOm49Y1szXSxjWzRdIT09dHx8Y1s1XSE9PW4/KHI9KDAsQS5qc3hzKShcImdcIix7dHJhbnNmb3JtOlwidHJhbnNsYXRlKDguNSwgMTMpXCIsY2hpbGRyZW46W3Qsbl19KSxjWzRdPXQsY1s1XT1uLGNbNl09cik6cj1jWzZdLGNbN10hPT1kPyhvPSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5leHRfbG9nb19wYWludDBfbGluZWFyXzEzNTdfMTA4NTNcIix4MTpcIjkuOTU1NTVcIix5MTpcIjExLjEyMjZcIix4MjpcIjE1LjQ3NzhcIix5MjpcIjE3Ljk2NzFcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsQS5qc3gpKFwic3RvcFwiLHtzdG9wQ29sb3I6ZH0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiMC42MDQwNzJcIixzdG9wQ29sb3I6ZCxzdG9wT3BhY2l0eTpcIjBcIn0pLCgwLEEuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiMVwiLHN0b3BDb2xvcjpkLHN0b3BPcGFjaXR5OlwiMFwifSldfSksY1s3XT1kLGNbOF09byk6bz1jWzhdLGNbOV0hPT1kPyhhPSgwLEEuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5leHRfbG9nb19wYWludDFfbGluZWFyXzEzNTdfMTA4NTNcIix4MTpcIjExLjgyMjJcIix5MTpcIjEuNDAwMzlcIix4MjpcIjExLjc5MVwiLHkyOlwiOS42MjU0MlwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJzdG9wXCIse3N0b3BDb2xvcjpkfSksKDAsQS5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIxXCIsc3RvcENvbG9yOmQsc3RvcE9wYWNpdHk6XCIwXCJ9KV19KSxjWzldPWQsY1sxMF09YSk6YT1jWzEwXSxjWzExXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLEEuanN4cykoXCJtYXNrXCIse2lkOlwibmV4dF9sb2dvX21hc2swXCIsY2hpbGRyZW46WygwLEEuanN4KShcInJlY3RcIix7d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGZpbGw6XCJ3aGl0ZVwifSksKDAsQS5qc3gpKFwicmVjdFwiLHt3aWR0aDpcIjVcIixoZWlnaHQ6XCIxLjVcIixmaWxsOlwiYmxhY2tcIn0pXX0pLGNbMTFdPWkpOmk9Y1sxMV0sY1sxMl0hPT1vfHxjWzEzXSE9PWE/KGw9KDAsQS5qc3hzKShcImRlZnNcIix7Y2hpbGRyZW46W28sYSxpXX0pLGNbMTJdPW8sY1sxM109YSxjWzE0XT1sKTpsPWNbMTRdLGNbMTVdIT09dXx8Y1sxNl0hPT1yfHxjWzE3XSE9PWw/KHM9KDAsQS5qc3hzKShcInN2Z1wiLHt3aWR0aDpcIjQwXCIsaGVpZ2h0OlwiNDBcIix2aWV3Qm94OlwiMCAwIDQwIDQwXCIsZmlsbDpcIm5vbmVcIixcImRhdGEtbmV4dC1tYXJrLWxvYWRpbmdcIjp1LGNoaWxkcmVuOltyLGxdfSksY1sxNV09dSxjWzE2XT1yLGNbMTddPWwsY1sxOF09cyk6cz1jWzE4XSxzfXZhciBvYT13LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxpLGwscyxjLHUsZD0oMCx4LmMpKDE1KTtyZXR1cm4oZFswXSE9PWU/KGw9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcIm9uQ2xpY2tcIixcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIl0pLGk9ZS5vbkNsaWNrLG89ZS5jaGlsZHJlbixhPWUuY2xhc3NOYW1lLGRbMF09ZSxkWzFdPW8sZFsyXT1hLGRbM109aSxkWzRdPWwpOihvPWRbMV0sYT1kWzJdLGk9ZFszXSxsPWRbNF0pLGRbNV0hPT1pPyhzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldC5jbG9zZXN0KFwiYVwiKXx8ZS5wcmV2ZW50RGVmYXVsdCgpLG51bGw9PWk/dm9pZCAwOmkoKX0sZFs1XT1pLGRbNl09cyk6cz1kWzZdLGRbN10hPT1hPyhjPWVKKFwibmV4dGpzLXRvYXN0XCIsYSksZFs3XT1hLGRbOF09Yyk6Yz1kWzhdLGRbOV0hPT1vfHxkWzEwXSE9PWx8fGRbMTFdIT09dHx8ZFsxMl0hPT1zfHxkWzEzXSE9PWMpPyh1PSgwLEEuanN4KShcImRpdlwiLChuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sbCkscj1yPXtyZWY6dCxvbkNsaWNrOnMsY2xhc3NOYW1lOmMsY2hpbGRyZW46b30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSxuKSksZFs5XT1vLGRbMTBdPWwsZFsxMV09dCxkWzEyXT1zLGRbMTNdPWMsZFsxNF09dSk6dT1kWzE0XSx1fSk7ZnVuY3Rpb24gb2koZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfXZhciBvbD0oMCx3LmNyZWF0ZUNvbnRleHQpKG51bGwpO2Z1bmN0aW9uIG9zKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmRpc2FibGVkLHI9dm9pZCAwIT09biYmbixvPSgwLHcudXNlUmVmKShuZXcgU2V0KSxhPSgwLHcudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe28uY3VycmVudC5hZGQoZSl9LFtdKSxpPSgwLHcudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe28uY3VycmVudC5kZWxldGUoZSl9LFtdKSxsPSgwLHcudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm57cmVnaXN0ZXI6YSx1bnJlZ2lzdGVyOmksaGFuZGxlczpvLmN1cnJlbnQsZGlzYWJsZWQ6cn19LFthLGkscl0pO3JldHVybigwLEEuanN4KShvbC5Qcm92aWRlcix7dmFsdWU6bCxjaGlsZHJlbjp0fSl9ZnVuY3Rpb24gb2MoKXtyZXR1cm4oMCx3LnVzZUNvbnRleHQpKG9sKX1mdW5jdGlvbiBvdShlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGY9KDAseC5jKSgxOSk7ZlswXSE9PWU/KG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJyZWZcIl0pLHI9ZS5jaGlsZHJlbixhPWUucmVmLGZbMF09ZSxmWzFdPXIsZlsyXT1vLGZbM109YSk6KHI9ZlsxXSxvPWZbMl0sYT1mWzNdKTt2YXIgcD0oMCx3LnVzZVJlZikobnVsbCksaD1vYygpO2ZbNF0hPT1hPyhpPWZ1bmN0aW9uKGUpe2lmKHAuY3VycmVudD1udWxsIT1lP2U6bnVsbCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhKWEoZSk7ZWxzZXt2YXIgdDthJiYodm9pZCAwPT09YT9cInVuZGVmaW5lZFwiOih0PWEpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sP1wic3ltYm9sXCI6dHlwZW9mIHQpPT1cIm9iamVjdFwiJiYoYS5jdXJyZW50PWUpfX0sZls0XT1hLGZbNV09aSk6aT1mWzVdO3ZhciBtPWk7Zls2XSE9PWg/KGw9ZnVuY3Rpb24oKXtpZihoJiZwLmN1cnJlbnQmJiFoLmRpc2FibGVkKXt2YXIgZT1wLmN1cnJlbnQ7cmV0dXJuIGgucmVnaXN0ZXIoZSksZnVuY3Rpb24oKXtyZXR1cm4gaC51bnJlZ2lzdGVyKGUpfX19LHM9W2hdLGZbNl09aCxmWzddPWwsZls4XT1zKToobD1mWzddLHM9Zls4XSksKDAsdy51c2VFZmZlY3QpKGwscyk7dmFyIGc9KG51bGw9PWg/dm9pZCAwOmguZGlzYWJsZWQpP1wiZGVmYXVsdFwiOlwiZ3JhYlwiO3JldHVybihmWzldIT09by5zdHlsZT8oYz1vLnN0eWxlfHx7fSxmWzldPW8uc3R5bGUsZlsxMF09Yyk6Yz1mWzEwXSxmWzExXSE9PWd8fGZbMTJdIT09Yz8odT1vaSh7Y3Vyc29yOmd9LGMpLGZbMTFdPWcsZlsxMl09YyxmWzEzXT11KTp1PWZbMTNdLGZbMTRdIT09cnx8ZlsxNV0hPT1vfHxmWzE2XSE9PW18fGZbMTddIT09dSk/KGQ9KDAsQS5qc3gpKFwiZGl2XCIsKHQ9b2koe3JlZjptfSxvKSxuPW49e3N0eWxlOnUsY2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksZlsxNF09cixmWzE1XT1vLGZbMTZdPW0sZlsxN109dSxmWzE4XT1kKTpkPWZbMThdLGR9ZnVuY3Rpb24gb2QoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG9mKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBvcChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gb2goZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIG9tKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBvZChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxvZyhlKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gb2coZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb2QoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb2QoZSx0KX19ZnVuY3Rpb24gb3koZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHA9KDAseC5jKSgxOCk7cFswXSE9PWU/KHM9b2goZSxbXCJjaGlsZHJlblwiLFwicGFkZGluZ1wiLFwicG9zaXRpb25cIixcInNldFBvc2l0aW9uXCIsXCJvbkRyYWdTdGFydFwiLFwiZHJhZ0hhbmRsZVNlbGVjdG9yXCIsXCJkaXNhYmxlRHJhZ1wiLFwiYXZvaWRab25lXCJdKSxyPWUuY2hpbGRyZW4sbD1lLnBhZGRpbmcsbz1lLnBvc2l0aW9uLGM9ZS5zZXRQb3NpdGlvbixpPWUub25EcmFnU3RhcnQsYT1lLmRyYWdIYW5kbGVTZWxlY3Rvcix1PWUuZGlzYWJsZURyYWcsbj1lLmF2b2lkWm9uZSxwWzBdPWUscFsxXT1uLHBbMl09cixwWzNdPW8scFs0XT1hLHBbNV09aSxwWzZdPWwscFs3XT1zLHBbOF09YyxwWzldPXUpOihuPXBbMV0scj1wWzJdLG89cFszXSxhPXBbNF0saT1wWzVdLGw9cFs2XSxzPXBbN10sYz1wWzhdLHU9cFs5XSk7dmFyIGg9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsdy51c2VSZWYpKG51bGwpLG49KDAsdy51c2VSZWYpKHtzdGF0ZTpcImlkbGVcIn0pLHI9KDAsdy51c2VSZWYpKG51bGwpLG89KDAsdy51c2VSZWYpKHt4OjAseTowfSksYT0oMCx3LnVzZVJlZikoe3g6MCx5OjB9KSxpPSgwLHcudXNlUmVmKSgwKSxsPSgwLHcudXNlUmVmKShbXSkscz0oMCx3LnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe3ZhciBlLG87XCJkcmFnXCI9PT1uLmN1cnJlbnQuc3RhdGUmJihudWxsPT0obz10LmN1cnJlbnQpfHxvLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShuLmN1cnJlbnQucG9pbnRlcklkKSksbi5jdXJyZW50PVwiZHJhZ1wiPT09bi5jdXJyZW50LnN0YXRlP3tzdGF0ZTpcImRyYWctZW5kXCJ9OntzdGF0ZTpcImlkbGVcIn0sbnVsbCE9PXIuY3VycmVudCYmKHIuY3VycmVudCgpLHIuY3VycmVudD1udWxsKSxsLmN1cnJlbnQ9W10sbnVsbD09KGU9dC5jdXJyZW50KXx8ZS5jbGFzc0xpc3QucmVtb3ZlKFwiZGV2LXRvb2xzLWdyYWJiaW5nXCIpLGRvY3VtZW50LmJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ1c2VyLXNlbGVjdFwiKSxkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiLXdlYmtpdC11c2VyLXNlbGVjdFwiKX0sW10pO2Z1bmN0aW9uIGMoZSl7dC5jdXJyZW50JiYoYS5jdXJyZW50PWUsdC5jdXJyZW50LnN0eWxlLnRyYW5zbGF0ZT1cIlwiLmNvbmNhdChlLngsXCJweCBcIikuY29uY2F0KGUueSxcInB4XCIpKX1mdW5jdGlvbiB1KG4pe3ZhciByPXQuY3VycmVudDtudWxsIT09ciYmKHIuc3R5bGUudHJhbnNpdGlvbj1cInRyYW5zbGF0ZSA0OTEuMjJtcyB2YXIoLS10aW1pbmctYm91bmNlKVwiLHIuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIixmdW5jdGlvbiB0KG8pe2lmKFwidHJhbnNsYXRlXCI9PT1vLnByb3BlcnR5TmFtZSl7dmFyIGk7bnVsbD09KGk9ZS5vbkFuaW1hdGlvbkVuZCl8fGkuY2FsbChlLG4pLGEuY3VycmVudD17eDowLHk6MH0sci5zdHlsZS50cmFuc2l0aW9uPVwiXCIsci5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLHQpfX0pLGMobi50cmFuc2xhdGlvbikpfWZ1bmN0aW9uIGQoZSl7aWYoXCJkcmFnLWVuZFwiPT09bi5jdXJyZW50LnN0YXRlKXt2YXIgcjtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxuLmN1cnJlbnQ9e3N0YXRlOlwiaWRsZVwifSxudWxsPT0ocj10LmN1cnJlbnQpfHxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGQpfX1mdW5jdGlvbiBmKHIpe2lmKFwicHJlc3NcIj09PW4uY3VycmVudC5zdGF0ZSl7dmFyIHMsdSxkLGYscD1yLmNsaWVudFgtby5jdXJyZW50LngsaD1yLmNsaWVudFktby5jdXJyZW50Lnk7TWF0aC5zcXJ0KHAqcCtoKmgpPj1lLnRocmVzaG9sZCYmKG4uY3VycmVudD17c3RhdGU6XCJkcmFnXCIscG9pbnRlcklkOnIucG9pbnRlcklkfSxudWxsPT0odT10LmN1cnJlbnQpfHx1LnNldFBvaW50ZXJDYXB0dXJlKHIucG9pbnRlcklkKSxudWxsPT0oZD10LmN1cnJlbnQpfHxkLmNsYXNzTGlzdC5hZGQoXCJkZXYtdG9vbHMtZ3JhYmJpbmdcIiksZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PVwibm9uZVwiLGRvY3VtZW50LmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdD1cIm5vbmVcIixudWxsPT0oZj1lLm9uRHJhZ1N0YXJ0KXx8Zi5jYWxsKGUpKX1pZihcImRyYWdcIj09PW4uY3VycmVudC5zdGF0ZSl7dmFyIG09e3g6ci5jbGllbnRYLHk6ci5jbGllbnRZfSxnPW0ueC1vLmN1cnJlbnQueCx5PW0ueS1vLmN1cnJlbnQueTtvLmN1cnJlbnQ9bSxjKHt4OmEuY3VycmVudC54K2cseTphLmN1cnJlbnQueSt5fSk7dmFyIHY9RGF0ZS5ub3coKTt2LWkuY3VycmVudD49MTAmJihsLmN1cnJlbnQ9b20obC5jdXJyZW50LnNsaWNlKC01KSkuY29uY2F0KFt7cG9zaXRpb246bSx0aW1lc3RhbXA6dn1dKSksaS5jdXJyZW50PXYsbnVsbD09KHM9ZS5vbkRyYWcpfHxzLmNhbGwoZSxhLmN1cnJlbnQpfX1mdW5jdGlvbiBwKCl7dmFyIHQsbj1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDwyKXJldHVybnt4OjAseTowfTt2YXIgdD1lWzBdLG49ZVtlLmxlbmd0aC0xXSxyPW4udGltZXN0YW1wLXQudGltZXN0YW1wO3JldHVybiAwPT09cj97eDowLHk6MH06e3g6MWUzKigobi5wb3NpdGlvbi54LXQucG9zaXRpb24ueCkvcikseToxZTMqKChuLnBvc2l0aW9uLnktdC5wb3NpdGlvbi55KS9yKX19KGwuY3VycmVudCk7cygpLG51bGw9PSh0PWUub25EcmFnRW5kKXx8dC5jYWxsKGUsYS5jdXJyZW50LG4pfXJldHVybigwLHcudXNlTGF5b3V0RWZmZWN0KShmdW5jdGlvbigpe2UuZGlzYWJsZWQmJnMoKX0sW3MsZS5kaXNhYmxlZF0pLGUuZGlzYWJsZWQ/e3JlZjp0LGFuaW1hdGU6dX06e3JlZjp0LG9uUG9pbnRlckRvd246ZnVuY3Rpb24oYSl7dmFyIGk7MD09PWEuYnV0dG9uJiZmdW5jdGlvbihuKXtpZighbnx8IXQuY3VycmVudClyZXR1cm4hMDtpZihlLmhhbmRsZXMmJmUuaGFuZGxlcy5zaXplPjApe2Zvcih2YXIgcj1uO3ImJnIhPT10LmN1cnJlbnQ7KXtpZihlLmhhbmRsZXMuaGFzKHIpKXJldHVybiEwO3I9ci5wYXJlbnRFbGVtZW50fXJldHVybiExfXJldHVybiFlLmRyYWdIYW5kbGVTZWxlY3Rvcnx8bnVsbCE9PW4uY2xvc2VzdChlLmRyYWdIYW5kbGVTZWxlY3Rvcil9KGEudGFyZ2V0KSYmKG8uY3VycmVudD17eDphLmNsaWVudFgseTphLmNsaWVudFl9LG4uY3VycmVudD17c3RhdGU6XCJwcmVzc1wifSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsZiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIixwKSxudWxsIT09ci5jdXJyZW50JiYoci5jdXJyZW50KCksci5jdXJyZW50PW51bGwpLHIuY3VycmVudD1mdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIixmKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLHApfSxudWxsPT0oaT10LmN1cnJlbnQpfHxpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGQpKX0sYW5pbWF0ZTp1fX0oe2Rpc2FibGVkOnZvaWQgMCE9PXUmJnUsaGFuZGxlczpudWxsPT0odD1vYygpKT92b2lkIDA6dC5oYW5kbGVzLHRocmVzaG9sZDo1LG9uRHJhZ1N0YXJ0Omksb25EcmFnRW5kOmZ1bmN0aW9uKGUsdCl7dmFyIHIsYSxpLHMsYyx1LGQsZixwLGgseSx2LGIsQSx4LHcsQyxfO2lmKDA9PT1NYXRoLnNxcnQoZS54KmUueCtlLnkqZS55KSl7bnVsbD09KHI9bS5jdXJyZW50KXx8ci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInRyYW5zbGF0ZVwiKTtyZXR1cm59ZygoYj0oYT17eDplLngrb2IodC54KSx5OmUueStvYih0LnkpfSkueCxBPWEueSx3PU9iamVjdC5lbnRyaWVzKHg9KGM9MipsLHU9KG51bGw9PShpPW0uY3VycmVudCk/dm9pZCAwOmkub2Zmc2V0V2lkdGgpfHwwLGQ9KG51bGw9PShzPW0uY3VycmVudCk/dm9pZCAwOnMub2Zmc2V0SGVpZ2h0KXx8MCxmPXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxoPShwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5jbHVkZXMoXCJyaWdodFwiKSxyPWUuaW5jbHVkZXMoXCJib3R0b21cIiksbz10P3dpbmRvdy5pbm5lcldpZHRoLWYtYy11OjAsYT1yP3dpbmRvdy5pbm5lckhlaWdodC1jLWQ6MDtpZihuJiZuLmNvcm5lcj09PWUpe3ZhciBpPW4uc3F1YXJlK24ucGFkZGluZztyP2EtPWk6YSs9aX1yZXR1cm57eDpvLHk6YX19KShvKSx7XCJ0b3AtbGVmdFwiOih5PWZ1bmN0aW9uKGUpe3JldHVybnt4OmUueC1oLngseTplLnktaC55fX0pKHAoXCJ0b3AtbGVmdFwiKSksXCJ0b3AtcmlnaHRcIjp5KHAoXCJ0b3AtcmlnaHRcIikpLFwiYm90dG9tLWxlZnRcIjp5KHAoXCJib3R0b20tbGVmdFwiKSksXCJib3R0b20tcmlnaHRcIjp5KHAoXCJib3R0b20tcmlnaHRcIikpfSkpLm1hcChmdW5jdGlvbihlKXt2YXIgdCxuLHI9KG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0PWUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fG9nKHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLG89clswXSxhPXJbMV07cmV0dXJue2tleTpvLGRpc3RhbmNlOk1hdGguc3FydChNYXRoLnBvdyhiLWEueCwyKStNYXRoLnBvdyhBLWEueSwyKSl9fSksQz0odj1NYXRoKS5taW4uYXBwbHkodixvbSh3Lm1hcChvdikpKSwoXz13LmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzdGFuY2U9PT1DfSkpP3t0cmFuc2xhdGlvbjp4W18ua2V5XSxjb3JuZXI6Xy5rZXl9Ontjb3JuZXI6byx0cmFuc2xhdGlvbjp4W29dfSkpfSxvbkFuaW1hdGlvbkVuZDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvcm5lcjtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09KGU9bS5jdXJyZW50KXx8ZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInRyYW5zbGF0ZVwiKSxjKHQpfSl9LGRyYWdIYW5kbGVTZWxlY3RvcjphfSksbT1oLnJlZixnPWguYW5pbWF0ZSx5PW9oKGgsW1wicmVmXCIsXCJhbmltYXRlXCJdKTtyZXR1cm4gcFsxMF0hPT1zLnN0eWxlPyhkPW9mKHt0b3VjaEFjdGlvbjpcIm5vbmVcIix1c2VyU2VsZWN0Olwibm9uZVwiLFdlYmtpdFVzZXJTZWxlY3Q6XCJub25lXCJ9LHMuc3R5bGUpLHBbMTBdPXMuc3R5bGUscFsxMV09ZCk6ZD1wWzExXSxwWzEyXSE9PXJ8fHBbMTNdIT09eXx8cFsxNF0hPT1zfHxwWzE1XSE9PW18fHBbMTZdIT09ZD8oZj0oMCxBLmpzeCkoXCJkaXZcIixvcChvZihvcChvZih7fSxzKSx7cmVmOm19KSx5KSx7c3R5bGU6ZCxjaGlsZHJlbjpyfSkpLHBbMTJdPXIscFsxM109eSxwWzE0XT1zLHBbMTVdPW0scFsxNl09ZCxwWzE3XT1mKTpmPXBbMTddLGZ9ZnVuY3Rpb24gb3YoZSl7cmV0dXJuIGUuZGlzdGFuY2V9ZnVuY3Rpb24gb2IoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi45OTk7cmV0dXJuIGUvMWUzKnQvKDEtdCl9ZnVuY3Rpb24gb0EoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG94KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgb3c9MjA7ZnVuY3Rpb24gb0MoKXt2YXIgZSx0LG4scixvLGEsaSxsLHMsYz0oMCx4LmMpKDIwKSx1PWRsKCksZD11LnN0YXRlLGY9dS5kaXNwYXRjaCxwPXI1KCksaD1wLnBhbmVsLG09cC5zZXRQYW5lbCxnPXAuc2V0U2VsZWN0ZWRJbmRleCx5PW9fKCk7Y1swXSE9PWQuZGV2VG9vbHNQb3NpdGlvbj8obj1kLmRldlRvb2xzUG9zaXRpb24uc3BsaXQoXCItXCIsMiksY1swXT1kLmRldlRvb2xzUG9zaXRpb24sY1sxXT1uKTpuPWNbMV07dmFyIHY9KHQ9MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlPW4pfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9BKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9BKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxiPXZbMF0sdz12WzFdO2NbMl0hPT13fHxjWzNdIT09Yj8ob3gobz17XCItLWFuaW1hdGUtb3V0LWR1cmF0aW9uLW1zXCI6XCJcIi5jb25jYXQoMjAwLFwibXNcIiksXCItLWFuaW1hdGUtb3V0LXRpbWluZy1mdW5jdGlvblwiOm50LGJveFNoYWRvdzpcIm5vbmVcIn0sYixcIlwiLmNvbmNhdChvdyxcInB4XCIpKSxveChvLHcsXCJcIi5jb25jYXQob3csXCJweFwiKSkscj1vLGNbMl09dyxjWzNdPWIsY1s0XT1yKTpyPWNbNF07dmFyIEM9cixfPW51bGwhPT1oO3JldHVybiBjWzVdIT09Znx8Y1s2XSE9PXk/KGE9ZnVuY3Rpb24oZSl7Zih7dHlwZTpLLGRldlRvb2xzUG9zaXRpb246ZX0pLHJ3KHtkZXZUb29sc1Bvc2l0aW9uOmV9KSx5KGUpfSxjWzVdPWYsY1s2XT15LGNbN109YSk6YT1jWzddLGNbOF0hPT1ofHxjWzldIT09bXx8Y1sxMF0hPT1nPyhpPSgwLEEuanN4KShvbix7b25UcmlnZ2VyQ2xpY2s6ZnVuY3Rpb24oKXt2YXIgZT1cInBhbmVsLXNlbGVjdG9yXCI9PT1oP251bGw6XCJwYW5lbC1zZWxlY3RvclwiO2lmKG0oZSksIWUpcmV0dXJuIHZvaWQgZygtMSl9fSksY1s4XT1oLGNbOV09bSxjWzEwXT1nLGNbMTFdPWkpOmk9Y1sxMV0sY1sxMl0hPT1kLmRldlRvb2xzUG9zaXRpb258fGNbMTNdIT09X3x8Y1sxNF0hPT1hfHxjWzE1XSE9PWk/KGw9KDAsQS5qc3gpKG95LHtkaXNhYmxlRHJhZzpfLHBhZGRpbmc6b3cscG9zaXRpb246ZC5kZXZUb29sc1Bvc2l0aW9uLHNldFBvc2l0aW9uOmEsY2hpbGRyZW46aX0pLGNbMTJdPWQuZGV2VG9vbHNQb3NpdGlvbixjWzEzXT1fLGNbMTRdPWEsY1sxNV09aSxjWzE2XT1sKTpsPWNbMTZdLGNbMTddIT09Q3x8Y1sxOF0hPT1sPyhzPSgwLEEuanN4KShvYSx7aWQ6XCJkZXZ0b29scy1pbmRpY2F0b3JcIixcImRhdGEtbmV4dGpzLXRvYXN0XCI6ITAsc3R5bGU6QyxjaGlsZHJlbjpsfSksY1sxN109QyxjWzE4XT1sLGNbMTldPXMpOnM9Y1sxOV0sc312YXIgb189ZnVuY3Rpb24oKXt2YXIgZSx0PSgwLHguYykoMyksbj1kbCgpLHI9bi5zdGF0ZSxvPW4uZGlzcGF0Y2g7cmV0dXJuIHRbMF0hPT1vfHx0WzFdIT09ci5kZXZUb29sc1BhbmVsUG9zaXRpb24/KGU9ZnVuY3Rpb24oZSl7byh7dHlwZTpYLGRldlRvb2xzUGFuZWxQb3NpdGlvbjplLGtleTplbn0pO3ZhciB0PU9iamVjdC5rZXlzKHIuZGV2VG9vbHNQYW5lbFBvc2l0aW9uKS5maWx0ZXIob2spLG49b3goe30sZW4sZSk7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe28oe3R5cGU6WCxkZXZUb29sc1BhbmVsUG9zaXRpb246ZSxrZXk6dH0pLG5bdF09ZX0pLHJ3KHtkZXZUb29sc1BhbmVsUG9zaXRpb246bn0pfSx0WzBdPW8sdFsxXT1yLmRldlRvb2xzUGFuZWxQb3NpdGlvbix0WzJdPWUpOmU9dFsyXSxlfTtmdW5jdGlvbiBvayhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKEopfWZ1bmN0aW9uIG9FKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBvaihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gb1MoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe29qKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIG9PKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBvQihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb0UoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb0UoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9dmFyIG9QPSgwLHcuY3JlYXRlQ29udGV4dCkoe30pO2Z1bmN0aW9uIG9JKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGg9KDAseC5jKSgzNyk7aFswXSE9PWU/KGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImluZGV4XCIsXCJsYWJlbFwiLFwidmFsdWVcIixcIm9uQ2xpY2tcIixcImhyZWZcIl0pLG49ZS5pbmRleCxyPWUubGFiZWwsaT1lLnZhbHVlLG89ZS5vbkNsaWNrLHQ9ZS5ocmVmLGhbMF09ZSxoWzFdPXQsaFsyXT1uLGhbM109cixoWzRdPW8saFs1XT1hLGhbNl09aSk6KHQ9aFsxXSxuPWhbMl0scj1oWzNdLG89aFs0XSxhPWhbNV0saT1oWzZdKTt2YXIgbT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBvfHxcInN0cmluZ1wiPT10eXBlb2YgdCxnPSgwLHcudXNlQ29udGV4dCkob1ApLHk9Zy5jbG9zZU1lbnUsdj1nLnNlbGVjdGVkSW5kZXgsYj1nLnNldFNlbGVjdGVkSW5kZXgsQz12PT09bjtoWzddIT09eXx8aFs4XSE9PXR8fGhbOV0hPT1tfHxoWzEwXSE9PW8/KGw9ZnVuY3Rpb24oKXttJiYobnVsbD09b3x8bygpLG51bGw9PXl8fHkoKSx0JiZ3aW5kb3cub3Blbih0LFwiX2JsYW5rXCIsXCJub29wZW5lciwgbm9yZWZlcnJlclwiKSl9LGhbN109eSxoWzhdPXQsaFs5XT1tLGhbMTBdPW8saFsxMV09bCk6bD1oWzExXTt2YXIgXz1sO2hbMTJdIT09bnx8aFsxM10hPT1tfHxoWzE0XSE9PXZ8fGhbMTVdIT09Yj8ocz1mdW5jdGlvbigpe20mJnZvaWQgMCE9PW4mJnYhPT1uJiZiKG4pfSxoWzEyXT1uLGhbMTNdPW0saFsxNF09dixoWzE1XT1iLGhbMTZdPXMpOnM9aFsxNl0saFsxN10hPT1iPyhjPWZ1bmN0aW9uKCl7cmV0dXJuIGIoLTEpfSxoWzE3XT1iLGhbMThdPWMpOmM9aFsxOF0saFsxOV0hPT1fPyh1PWZ1bmN0aW9uKGUpeyhcIkVudGVyXCI9PT1lLmtleXx8XCIgXCI9PT1lLmtleSkmJl8oKX0saFsxOV09XyxoWzIwXT11KTp1PWhbMjBdO3ZhciBrPW0/XCJtZW51aXRlbVwiOnZvaWQgMCxFPUM/MDotMTtyZXR1cm4gaFsyMV0hPT1yPyhkPSgwLEEuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci1sYWJlbFwiLGNoaWxkcmVuOnJ9KSxoWzIxXT1yLGhbMjJdPWQpOmQ9aFsyMl0saFsyM10hPT1pPyhmPSgwLEEuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci12YWx1ZVwiLGNoaWxkcmVuOml9KSxoWzIzXT1pLGhbMjRdPWYpOmY9aFsyNF0saFsyNV0hPT1ffHxoWzI2XSE9PW58fGhbMjddIT09YXx8aFsyOF0hPT1DfHxoWzI5XSE9PXN8fGhbMzBdIT09Y3x8aFszMV0hPT11fHxoWzMyXSE9PWt8fGhbMzNdIT09RXx8aFszNF0hPT1kfHxoWzM1XSE9PWY/KHA9KDAsQS5qc3hzKShcImRpdlwiLG9PKG9TKHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLWl0ZW1cIixcImRhdGEtaW5kZXhcIjpuLFwiZGF0YS1zZWxlY3RlZFwiOkMsb25DbGljazpfLG9uTW91c2VNb3ZlOnMsb25Nb3VzZUxlYXZlOmMsb25LZXlEb3duOnUscm9sZTprLHRhYkluZGV4OkV9LGEpLHtjaGlsZHJlbjpbZCxmXX0pKSxoWzI1XT1fLGhbMjZdPW4saFsyN109YSxoWzI4XT1DLGhbMjldPXMsaFszMF09YyxoWzMxXT11LGhbMzJdPWssaFszM109RSxoWzM0XT1kLGhbMzVdPWYsaFszNl09cCk6cD1oWzM2XSxwfXZhciBvVD1mdW5jdGlvbihlKXt2YXIgdCxuPWUuY2xvc2VPbkNsaWNrT3V0c2lkZSxyPXZvaWQgMD09PW58fG4sbz1lLml0ZW1zLGE9ZGwoKS5zdGF0ZSxpPXI1KCksbD1pLnNldFBhbmVsLHM9aS50cmlnZ2VyUmVmLGM9aS5zZXRTZWxlY3RlZEluZGV4LHU9aS5zZWxlY3RlZEluZGV4LGQ9dVEoKS5tb3VudGVkLGY9b0IoYS5kZXZUb29sc1Bvc2l0aW9uLnNwbGl0KFwiLVwiLDIpLDIpLHA9ZlswXSxoPWZbMV0sbT0oMCx3LnVzZVJlZikobnVsbCk7bmUobSxzLHImJmQsZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2VcImVzY2FwZVwiOmwobnVsbCksYygtMSk7cmV0dXJuO2Nhc2VcIm91dHNpZGVcIjppZighcilyZXR1cm47bChudWxsKSxjKC0xKTtyZXR1cm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19KSwoMCx3LnVzZUxheW91dEVmZmVjdCkoZnVuY3Rpb24oKXt2YXIgZTtudWxsPT0oZT1tLmN1cnJlbnQpfHxlLmZvY3VzKCksb04oe2luZGV4Oi0xPT09dT9cImZpcnN0XCI6dSxtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSl9LFtdKTt2YXIgZz1yMyhhKSx5PW9CKGEuZGV2VG9vbHNQb3NpdGlvbi5zcGxpdChcIi1cIiwyKSwyKSx2PXlbMF0sYj15WzFdLHg9cD09PXYmJmg9PT1iP2c6b3csQz0ob2oodD17fSxwLFwiXCIuY29uY2F0KHgsXCJweFwiKSksb2oodCxoLFwiXCIuY29uY2F0KG93LFwicHhcIikpLG9qKHQsXCJ0b3BcIj09PXA/XCJib3R0b21cIjpcInRvcFwiLFwiYXV0b1wiKSxvaih0LFwibGVmdFwiPT09aD9cInJpZ2h0XCI6XCJsZWZ0XCIsXCJhdXRvXCIpLHQpLF89by5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSksaz1fLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5mb290ZXJ9KSxFPV8uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvb3Rlcn0pO3JldHVybigwLEEuanN4KShcImRpdlwiLHtyZWY6bSxvbktleURvd246ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PV8uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQ2xpY2t9KS5sZW5ndGg7c3dpdGNoKGUua2V5KXtjYXNlXCJBcnJvd0Rvd25cIjpvTih7aW5kZXg6dT49dC0xPzA6dSsxLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KTticmVhaztjYXNlXCJBcnJvd1VwXCI6b04oe2luZGV4OnU8PTA/dC0xOnUtMSxtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSk7YnJlYWs7Y2FzZVwiSG9tZVwiOm9OKHtpbmRleDpcImZpcnN0XCIsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pO2JyZWFrO2Nhc2VcIkVuZFwiOm9OKHtpbmRleDpcImxhc3RcIixtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSk7YnJlYWs7Y2FzZVwiblwiOmUuY3RybEtleSYmb04oe2luZGV4OnU+PXQtMT8wOnUrMSxtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSk7YnJlYWs7Y2FzZVwicFwiOmUuY3RybEtleSYmb04oe2luZGV4OnU8PTA/dC0xOnUtMSxtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSl9fSxpZDpcIm5leHRqcy1kZXYtdG9vbHMtbWVudVwiLHJvbGU6XCJtZW51XCIsZGlyOlwibHRyXCIsXCJhcmlhLW9yaWVudGF0aW9uXCI6XCJ2ZXJ0aWNhbFwiLFwiYXJpYS1sYWJlbFwiOlwiTmV4dC5qcyBEZXYgVG9vbHMgSXRlbXNcIix0YWJJbmRleDotMSxzdHlsZTpvUyh7b3V0bGluZTowLFdlYmtpdEZvbnRTbW9vdGhpbmc6XCJhbnRpYWxpYXNlZFwiLGRpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGFsaWduSXRlbXM6XCJmbGV4LXN0YXJ0XCIsYmFja2dyb3VuZDpcInZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKVwiLGJhY2tncm91bmRDbGlwOlwicGFkZGluZy1ib3hcIixib3hTaGFkb3c6XCJ2YXIoLS1zaGFkb3ctbWVudSlcIixib3JkZXJSYWRpdXM6XCJ2YXIoLS1yb3VuZGVkLXhsKVwiLHBvc2l0aW9uOlwiZml4ZWRcIixmb250RmFtaWx5OlwidmFyKC0tZm9udC1zdGFjay1zYW5zKVwiLHpJbmRleDpcInZhcigtLXRvcC16LWluZGV4KVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsb3BhY2l0eToxLG1pbldpZHRoOlwiMjQ4cHhcIix0cmFuc2l0aW9uOlwib3BhY2l0eSB2YXIoLS1hbmltYXRlLW91dC1kdXJhdGlvbi1tcykgdmFyKC0tYW5pbWF0ZS1vdXQtdGltaW5nLWZ1bmN0aW9uKVwiLGJvcmRlcjpcIjFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMClcIn0sQyksY2hpbGRyZW46KDAsQS5qc3hzKShvUCx7dmFsdWU6e3NlbGVjdGVkSW5kZXg6dSxzZXRTZWxlY3RlZEluZGV4OmN9LGNoaWxkcmVuOlsoMCxBLmpzeCkoXCJkaXZcIix7c3R5bGU6e3BhZGRpbmc6XCI2cHhcIix3aWR0aDpcIjEwMCVcIn0sY2hpbGRyZW46ay5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxBLmpzeCkob0ksb1Moe3RpdGxlOmUudGl0bGUsbGFiZWw6ZS5sYWJlbCx2YWx1ZTplLnZhbHVlLG9uQ2xpY2s6ZS5vbkNsaWNrLGluZGV4OmUub25DbGljaz9veihrLHQpOnZvaWQgMH0sZS5hdHRyaWJ1dGVzKSxlLmxhYmVsKX0pfSksKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItZm9vdGVyXCIsY2hpbGRyZW46RS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4oMCxBLmpzeCkob0ksb08ob1Moe3RpdGxlOmUudGl0bGUsbGFiZWw6ZS5sYWJlbCx2YWx1ZTplLnZhbHVlLG9uQ2xpY2s6ZS5vbkNsaWNrfSxlLmF0dHJpYnV0ZXMpLHtpbmRleDplLm9uQ2xpY2s/b3ooRSx0KSsobj1rKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DbGlja30pLmxlbmd0aDp2b2lkIDB9KSxlLmxhYmVsKX0pfSldfSl9KX07ZnVuY3Rpb24gb3ooZSx0KXtmb3IodmFyIG49MCxyPTA7cjw9dCYmcjxlLmxlbmd0aDtyKyspaWYoZVtyXS5vbkNsaWNrKXtpZihyPT09dClyZXR1cm4gbjtuKyt9cmV0dXJuIG59ZnVuY3Rpb24gb0QoZSl7dmFyIHQsbixyPSgwLHguYykoNCksbz1lLmNoaWxkcmVuLGE9bz4wO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50LWluZGljYXRvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PW98fHJbMl0hPT1hPyhuPSgwLEEuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnRcIixcImRhdGEtaGFzLWlzc3Vlc1wiOmEsY2hpbGRyZW46W3Qsb119KSxyWzFdPW8sclsyXT1hLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gb0woKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZmlsbDpcIiM2NjZcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTUuNTAwMTEgMS45Mzk0NUw2LjAzMDQ0IDIuNDY5NzhMMTAuODUzNyA3LjI5M0MxMS4yNDQyIDcuNjgzNTMgMTEuMjQ0MiA4LjMxNjY5IDEwLjg1MzcgOC43MDcyMkw2LjAzMDQ0IDEzLjUzMDRMNS41MDAxMSAxNC4wNjA4TDQuNDM5NDUgMTMuMDAwMUw0Ljk2OTc4IDEyLjQ2OThMOS40Mzk0NSA4LjAwMDExTDQuOTY5NzggMy41MzA0NEw0LjQzOTQ1IDMuMDAwMTFMNS41MDAxMSAxLjkzOTQ1WlwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIG9OKGUpe3ZhciB0LG49ZS5pbmRleCxyPWUubWVudVJlZixvPWUuc2V0U2VsZWN0ZWRJbmRleDtpZihcImZpcnN0XCI9PT1uKXJldHVybiB2b2lkIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZSx0PW51bGw9PShlPXIuY3VycmVudCk/dm9pZCAwOmUucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9XCJtZW51aXRlbVwiXScpO3QmJm9OKHtpbmRleDpOdW1iZXIodFswXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWluZGV4XCIpKSxtZW51UmVmOnIsc2V0U2VsZWN0ZWRJbmRleDpvfSl9KTtpZihcImxhc3RcIj09PW4pcmV0dXJuIHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlLHQ9bnVsbD09KGU9ci5jdXJyZW50KT92b2lkIDA6ZS5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT1cIm1lbnVpdGVtXCJdJyk7dCYmb04oe2luZGV4OnQubGVuZ3RoLTEsbWVudVJlZjpyLHNldFNlbGVjdGVkSW5kZXg6b30pfSk7dmFyIGE9bnVsbD09KHQ9ci5jdXJyZW50KT92b2lkIDA6dC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1pbmRleD1cIicuY29uY2F0KG4sJ1wiXScpKTthJiYobyhuKSxudWxsPT1hfHxhLmZvY3VzKCkpfWZ1bmN0aW9uIG9SKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgb009KDAsdy5jcmVhdGVDb250ZXh0KShudWxsKSxvWj1mdW5jdGlvbihlKXt2YXIgdD0uOTUqd2luZG93LmlubmVyV2lkdGgsbj0uOTUqd2luZG93LmlubmVySGVpZ2h0O3JldHVybnt3aWR0aDpNYXRoLm1pbih0LE1hdGgubWF4KGUubWluV2lkdGgsZS53aWR0aCkpLGhlaWdodDpNYXRoLm1pbihuLE1hdGgubWF4KGUubWluSGVpZ2h0LGUuaGVpZ2h0KSl9fSxvVT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzPWUudmFsdWUsYz1lLmNoaWxkcmVuLHU9bnVsbCE9KGE9cy5taW5XaWR0aCk/YToxMDAsZD1udWxsIT0oaT1zLm1pbkhlaWdodCk/aTo4MCxmPXMubWF4V2lkdGgscD1zLm1heEhlaWdodCxoPSh0PSgwLHcudXNlU3RhdGUpKG51bGwpLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvUihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvUihlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksbT1oWzBdLGc9aFsxXSx5PW51bGwhPShsPXMuc3RvcmFnZUtleSk/bDpldCx2PSgwLHcudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7aWYocy5yZXNpemVSZWYuY3VycmVudCYmbnVsbD09PW0pe3ZhciBlPXMuZGV2VG9vbHNQYW5lbFNpemVbeV07aWYoZSl7dmFyIHQsbixyPW9aKCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sZSksbj1uPXttaW5XaWR0aDpudWxsIT11P3U6MTAwLG1pbkhlaWdodDpudWxsIT1kP2Q6ODB9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLG89ci5oZWlnaHQsYT1yLndpZHRoO3JldHVybiBzLnJlc2l6ZVJlZi5jdXJyZW50LnN0eWxlLndpZHRoPVwiXCIuY29uY2F0KGEsXCJweFwiKSxzLnJlc2l6ZVJlZi5jdXJyZW50LnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChvLFwicHhcIiksITB9fX0sW3MucmVzaXplUmVmLG0seSx1LGQscy5kZXZUb29sc1BhbmVsU2l6ZV0pO3JldHVybigwLHcudXNlTGF5b3V0RWZmZWN0KShmdW5jdGlvbigpe3ZhciBlO2lmKCF2KCkmJnMucmVzaXplUmVmLmN1cnJlbnQmJihudWxsPT0oZT1zLmluaXRpYWxTaXplKT92b2lkIDA6ZS5oZWlnaHQpJiZzLmluaXRpYWxTaXplLndpZHRoKXt2YXIgdD1vWih7aGVpZ2h0OnMuaW5pdGlhbFNpemUuaGVpZ2h0LHdpZHRoOnMuaW5pdGlhbFNpemUud2lkdGgsbWluV2lkdGg6bnVsbCE9dT91OjEwMCxtaW5IZWlnaHQ6bnVsbCE9ZD9kOjgwfSksbj10LmhlaWdodCxyPXQud2lkdGg7cy5yZXNpemVSZWYuY3VycmVudC5zdHlsZS53aWR0aD1cIlwiLmNvbmNhdChyLFwicHhcIikscy5yZXNpemVSZWYuY3VycmVudC5zdHlsZS5oZWlnaHQ9XCJcIi5jb25jYXQobixcInB4XCIpfX0sW10pLCgwLHcudXNlTGF5b3V0RWZmZWN0KShmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHYpLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdil9fSxbdixudWxsPT0ocj1zLmluaXRpYWxTaXplKT92b2lkIDA6ci5oZWlnaHQsbnVsbD09KG89cy5pbml0aWFsU2l6ZSk/dm9pZCAwOm8ud2lkdGgscy5yZXNpemVSZWZdKSwoMCxBLmpzeCkob00uUHJvdmlkZXIse3ZhbHVlOntyZXNpemVSZWY6cy5yZXNpemVSZWYsbWluV2lkdGg6dSxtaW5IZWlnaHQ6ZCxtYXhXaWR0aDpmLG1heEhlaWdodDpwLGRyYWdnaW5nRGlyZWN0aW9uOm0sc2V0RHJhZ2dpbmdEaXJlY3Rpb246ZyxzdG9yYWdlS2V5Onl9LGNoaWxkcmVuOmN9KX0sb0Y9ZnVuY3Rpb24oKXt2YXIgZT0oMCx3LnVzZUNvbnRleHQpKG9NKTtpZighZSl0aHJvdyBFcnJvcihcInVzZVJlc2l6ZSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgUmVzaXplIHByb3ZpZGVyXCIpO3JldHVybiBlfSxvcT1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtcGFuZWwvcmVzaXplL3Jlc2l6ZS1oYW5kbGUuY3NzXCIpLG9IPXt9O2Z1bmN0aW9uIG9WKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1vSC5zdHlsZVRhZ1RyYW5zZm9ybT1tKCksb0guc2V0QXR0cmlidXRlcz1kKCksb0guaW5zZXJ0PWMoKSxvSC5kb21BUEk9bCgpLG9ILmluc2VydFN0eWxlRWxlbWVudD1wKCksYSgpKG9xLlosb0gpLG9xLlomJm9xLloubG9jYWxzJiZvcS5aLmxvY2Fsczt2YXIgbyQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZD0oMCx4LmMpKDMyKSxmPWUuZGlyZWN0aW9uLHA9ZS5wb3NpdGlvbixoPW9GKCksbT1oLnJlc2l6ZVJlZixnPWgubWluV2lkdGgseT1oLm1pbkhlaWdodCx2PWgubWF4V2lkdGgsYj1oLm1heEhlaWdodCxDPWguc3RvcmFnZUtleSxfPWguZHJhZ2dpbmdEaXJlY3Rpb24saz1oLnNldERyYWdnaW5nRGlyZWN0aW9uO2RbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LGRbMF09cik6cj1kWzBdO3ZhciBFPSh0PSgwLHcudXNlU3RhdGUpKHIpLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvVihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvVihlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksaj1FWzBdLFM9RVsxXTtkWzFdIT09bS5jdXJyZW50PyhvPWZ1bmN0aW9uKCl7aWYobS5jdXJyZW50KXt2YXIgZT1tLmN1cnJlbnQsdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtTKHt0b3A6cGFyc2VGbG9hdCh0LmJvcmRlclRvcFdpZHRoKXx8MCxyaWdodDpwYXJzZUZsb2F0KHQuYm9yZGVyUmlnaHRXaWR0aCl8fDAsYm90dG9tOnBhcnNlRmxvYXQodC5ib3JkZXJCb3R0b21XaWR0aCl8fDAsbGVmdDpwYXJzZUZsb2F0KHQuYm9yZGVyTGVmdFdpZHRoKXx8MH0pfX0sZFsxXT1tLmN1cnJlbnQsZFsyXT1vKTpvPWRbMl0sZFszXSE9PW0/KGE9W21dLGRbM109bSxkWzRdPWEpOmE9ZFs0XSwoMCx3LnVzZUxheW91dEVmZmVjdCkobyxhKSxkWzVdIT09Znx8ZFs2XSE9PWJ8fGRbN10hPT12fHxkWzhdIT09eXx8ZFs5XSE9PWd8fGRbMTBdIT09bS5jdXJyZW50fHxkWzExXSE9PWt8fGRbMTJdIT09Qz8oaT1mdW5jdGlvbihlKXtpZihlLnByZXZlbnREZWZhdWx0KCksbS5jdXJyZW50KXtrKGYpO3ZhciB0PW0uY3VycmVudCxuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1lLmNsaWVudFgsbz1lLmNsaWVudFksYT1mdW5jdGlvbihlKXt2YXIgYT1vVyhmLGUuY2xpZW50WC1yLGUuY2xpZW50WS1vLG4sZyx5LHYsYiksaT1hLm5ld1dpZHRoLGw9YS5uZXdIZWlnaHQ7dm9pZCAwIT09aSYmKHQuc3R5bGUud2lkdGg9XCJcIi5jb25jYXQoaSxcInB4XCIpKSx2b2lkIDAhPT1sJiYodC5zdHlsZS5oZWlnaHQ9XCJcIi5jb25jYXQobCxcInB4XCIpKX0saT1mdW5jdGlvbigpe2lmKGsobnVsbCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsaSksbS5jdXJyZW50KXt2YXIgZSx0LG4scj1tLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLndpZHRoLGw9ci5oZWlnaHQ7cncoe2RldlRvb2xzUGFuZWxTaXplOihlPXt9LHQ9QyxuPXt3aWR0aDpvLGhlaWdodDpsfSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlKX0pfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsaSl9fSxkWzVdPWYsZFs2XT1iLGRbN109dixkWzhdPXksZFs5XT1nLGRbMTBdPW0uY3VycmVudCxkWzExXT1rLGRbMTJdPUMsZFsxM109aSk6aT1kWzEzXTt2YXIgTz1pO2lmKCEoIXAuc3BsaXQoXCItXCIpLmluY2x1ZGVzKGYpJiYoIWYuaW5jbHVkZXMoXCItXCIpfHxmPT09b1kocCkpKSlyZXR1cm4gbnVsbDt2YXIgQj1qLmxlZnQrai5yaWdodCxQPWoudG9wK2ouYm90dG9tO2RbMTRdIT09Zj8obD1mLmluY2x1ZGVzKFwiLVwiKSxkWzE0XT1mLGRbMTVdPWwpOmw9ZFsxNV07dmFyIEk9bCxUPVwicmVzaXplLWNvbnRhaW5lciBcIi5jb25jYXQoZixcIiBcIikuY29uY2F0KF8mJl8hPT1mP1wibm8taG92ZXJcIjpcIlwiKTtyZXR1cm4gZFsxNl0hPT1PfHxkWzE3XSE9PVQ/KHM9KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpULG9uTW91c2VEb3duOk99KSxkWzE2XT1PLGRbMTddPVQsZFsxOF09cyk6cz1kWzE4XSxkWzE5XSE9PWouYm90dG9tfHxkWzIwXSE9PWoubGVmdHx8ZFsyMV0hPT1qLnJpZ2h0fHxkWzIyXSE9PWoudG9wfHxkWzIzXSE9PWZ8fGRbMjRdIT09X3x8ZFsyNV0hPT1JfHxkWzI2XSE9PUJ8fGRbMjddIT09UD8oYz0hSSYmKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInJlc2l6ZS1saW5lIFwiLmNvbmNhdChmLFwiIFwiKS5jb25jYXQoXz09PWY/XCJkcmFnZ2luZ1wiOlwiXCIpLHN0eWxlOntcIi0tYm9yZGVyLWhvcml6b250YWxcIjpcIlwiLmNvbmNhdChCLFwicHhcIiksXCItLWJvcmRlci12ZXJ0aWNhbFwiOlwiXCIuY29uY2F0KFAsXCJweFwiKSxcIi0tYm9yZGVyLXRvcFwiOlwiXCIuY29uY2F0KGoudG9wLFwicHhcIiksXCItLWJvcmRlci1yaWdodFwiOlwiXCIuY29uY2F0KGoucmlnaHQsXCJweFwiKSxcIi0tYm9yZGVyLWJvdHRvbVwiOlwiXCIuY29uY2F0KGouYm90dG9tLFwicHhcIiksXCItLWJvcmRlci1sZWZ0XCI6XCJcIi5jb25jYXQoai5sZWZ0LFwicHhcIil9fSksZFsxOV09ai5ib3R0b20sZFsyMF09ai5sZWZ0LGRbMjFdPWoucmlnaHQsZFsyMl09ai50b3AsZFsyM109ZixkWzI0XT1fLGRbMjVdPUksZFsyNl09QixkWzI3XT1QLGRbMjhdPWMpOmM9ZFsyOF0sZFsyOV0hPT1zfHxkWzMwXSE9PWM/KHU9KDAsQS5qc3hzKShBLkZyYWdtZW50LHtjaGlsZHJlbjpbcyxjXX0pLGRbMjldPXMsZFszMF09YyxkWzMxXT11KTp1PWRbMzFdLHV9LG9XPWZ1bmN0aW9uKGUsdCxuLHIsbyxhLGksbCl7dmFyIHM9bnVsbCE9aT9pOi45NSp3aW5kb3cuaW5uZXJXaWR0aCxjPW51bGwhPWw/bDouOTUqd2luZG93LmlubmVySGVpZ2h0O3N3aXRjaChlKXtjYXNlXCJyaWdodFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aCt0KSksbmV3SGVpZ2h0OnIuaGVpZ2h0fTtjYXNlXCJsZWZ0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoLXQpKSxuZXdIZWlnaHQ6ci5oZWlnaHR9O2Nhc2VcImJvdHRvbVwiOnJldHVybntuZXdXaWR0aDpyLndpZHRoLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQrbikpfTtjYXNlXCJ0b3BcIjpyZXR1cm57bmV3V2lkdGg6ci53aWR0aCxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0LW4pKX07Y2FzZVwidG9wLWxlZnRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgtdCkpLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQtbikpfTtjYXNlXCJ0b3AtcmlnaHRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgrdCkpLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQtbikpfTtjYXNlXCJib3R0b20tbGVmdFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aC10KSksbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodCtuKSl9O2Nhc2VcImJvdHRvbS1yaWdodFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aCt0KSksbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodCtuKSl9O2RlZmF1bHQ6cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBvWShlKXtzd2l0Y2goZSl7Y2FzZVwidG9wLWxlZnRcIjpyZXR1cm5cImJvdHRvbS1yaWdodFwiO2Nhc2VcInRvcC1yaWdodFwiOnJldHVyblwiYm90dG9tLWxlZnRcIjtjYXNlXCJib3R0b20tbGVmdFwiOnJldHVyblwidG9wLXJpZ2h0XCI7Y2FzZVwiYm90dG9tLXJpZ2h0XCI6cmV0dXJuXCJ0b3AtbGVmdFwiO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBvSz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3BhbmVsL2R5bmFtaWMtcGFuZWwuY3NzXCIpLG9YPXt9O2Z1bmN0aW9uIG9HKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBvUShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gb0ooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe29RKGUsdCxuW3RdKX0pfXJldHVybiBlfWZ1bmN0aW9uIG8wKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvRyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvRyhlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBvMShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJ3aWR0aFwiO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bi5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsbi5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCIsXCJ3aWR0aFwiPT09dD9uLnN0eWxlLndpZHRoPWU6bi5zdHlsZS5oZWlnaHQ9ZSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pO3ZhciByPVwid2lkdGhcIj09PXQ/bi5vZmZzZXRXaWR0aDpuLm9mZnNldEhlaWdodDtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKSxyfWZ1bmN0aW9uIG8yKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnPWUuaGVhZGVyLHk9ZS5jaGlsZHJlbix2PWUuZHJhZ2dhYmxlLGI9dm9pZCAwIT09diYmdixDPWUuc2l6ZUNvbmZpZyxfPXZvaWQgMD09PUM/e2tpbmQ6XCJyZXNpemFibGVcIixtaW5XaWR0aDo0MDAsbWluSGVpZ2h0OjM1MCxtYXhXaWR0aDoxZTMsbWF4SGVpZ2h0OjFlMyxpbml0aWFsU2l6ZTp7aGVpZ2h0OjQwMCx3aWR0aDo1MDB9fTpDLGs9ZS5jbG9zZU9uQ2xpY2tPdXRzaWRlLEU9dm9pZCAwIT09ayYmayxqPWUuc2hhcmVQYW5lbFNpemVHbG9iYWxseSxTPWUuc2hhcmVQYW5lbFBvc2l0aW9uR2xvYmFsbHksTz1lLmNvbnRhaW5lclByb3BzLEI9cjUoKS5zZXRQYW5lbCxQPXVRKCksST1QLm5hbWUsVD1QLm1vdW50ZWQsej12b2lkIDA9PT1qfHxqP2V0OlwiXCIuY29uY2F0KGVlLFwiX1wiKS5jb25jYXQoSSksRD12b2lkIDA9PT1TfHxTP2VuOlwiXCIuY29uY2F0KEosXCJfXCIpLmNvbmNhdChJKSxMPWRsKCksTj1MLmRpc3BhdGNoLFI9TC5zdGF0ZSxNPW51bGwhPShoPVIuZGV2VG9vbHNQYW5lbFBvc2l0aW9uW0RdKT9oOlIuZGV2VG9vbHNQb3NpdGlvbixaPW8wKE0uc3BsaXQoXCItXCIsMiksMiksVT1aWzBdLEY9WlsxXSxxPSgwLHcudXNlUmVmKShudWxsKTtuZShxLHI1KCkudHJpZ2dlclJlZixULGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJlc2NhcGVcIjpyZXR1cm4gdm9pZCBCKFwicGFuZWwtc2VsZWN0b3JcIik7Y2FzZVwib3V0c2lkZVwiOkUmJkIoXCJwYW5lbC1zZWxlY3RvclwiKTtyZXR1cm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19KTt2YXIgSD1yMyhSKSxWPW8wKFIuZGV2VG9vbHNQb3NpdGlvbi5zcGxpdChcIi1cIiwyKSwyKSwkPVZbMF0sVz1WWzFdLFk9VT09PSQmJkY9PT1XP0g6b3csSz0ob1EobT17fSxVLFwiXCIuY29uY2F0KFksXCJweFwiKSksb1EobSxGLFwiXCIuY29uY2F0KG93LFwicHhcIikpLG9RKG0sXCJ0b3BcIj09PVU/XCJib3R0b21cIjpcInRvcFwiLFwiYXV0b1wiKSxvUShtLFwibGVmdFwiPT09Rj9cInJpZ2h0XCI6XCJsZWZ0XCIsXCJhdXRvXCIpLG0pLEc9XCJyZXNpemFibGVcIj09PV8ua2luZCxRPSh0PUc/Xy5taW5XaWR0aDp2b2lkIDAsbj1HP18ubWluSGVpZ2h0OnZvaWQgMCxyPUc/Xy5tYXhXaWR0aDp2b2lkIDAsbz1HP18ubWF4SGVpZ2h0OnZvaWQgMCwocz0oMCx4LmMpKDExKSlbMF0hPT1vfHxzWzFdIT09cnx8c1syXSE9PW58fHNbM10hPT10PyhhPWZ1bmN0aW9uKCl7cmV0dXJue21pbldpZHRoOnQ/bzEodCxcIndpZHRoXCIpOnZvaWQgMCxtaW5IZWlnaHQ6bj9vMShuLFwiaGVpZ2h0XCIpOnZvaWQgMCxtYXhXaWR0aDpyP28xKHIsXCJ3aWR0aFwiKTp2b2lkIDAsbWF4SGVpZ2h0Om8/bzEobyxcImhlaWdodFwiKTp2b2lkIDB9fSxzWzBdPW8sc1sxXT1yLHNbMl09bixzWzNdPXQsc1s0XT1hKTphPXNbNF0sdT0oYz1vMCgoMCx3LnVzZVN0YXRlKShhKSwyKSlbMF0sZD1jWzFdLHNbNV0hPT1vfHxzWzZdIT09cnx8c1s3XSE9PW58fHNbOF0hPT10PyhpPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtkKHttaW5XaWR0aDp0P28xKHQsXCJ3aWR0aFwiKTp2b2lkIDAsbWluSGVpZ2h0Om4/bzEobixcImhlaWdodFwiKTp2b2lkIDAsbWF4V2lkdGg6cj9vMShyLFwid2lkdGhcIik6dm9pZCAwLG1heEhlaWdodDpvP28xKG8sXCJoZWlnaHRcIik6dm9pZCAwfSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZSl9fSxsPVt0LG4scixvXSxzWzVdPW8sc1s2XT1yLHNbN109bixzWzhdPXQsc1s5XT1pLHNbMTBdPWwpOihpPXNbOV0sbD1zWzEwXSksKDAsdy51c2VFZmZlY3QpKGksbCksdSksZXI9US5taW5XaWR0aCxlbz1RLm1pbkhlaWdodCxlYT1RLm1heFdpZHRoLGVpPVEubWF4SGVpZ2h0LGVsPUk/XCJcIi5jb25jYXQoZWUsXCJfXCIpLmNvbmNhdChJKTpldCxlcz1SLmRldlRvb2xzUGFuZWxTaXplW2VsXTtyZXR1cm4oMCxBLmpzeCkob1Use3ZhbHVlOntyZXNpemVSZWY6cSxpbml0aWFsU2l6ZTpcInJlc2l6YWJsZVwiPT09Xy5raW5kP18uaW5pdGlhbFNpemU6XyxtaW5XaWR0aDplcixtaW5IZWlnaHQ6ZW8sbWF4V2lkdGg6ZWEsbWF4SGVpZ2h0OmVpLGRldlRvb2xzUG9zaXRpb246Ui5kZXZUb29sc1Bvc2l0aW9uLGRldlRvb2xzUGFuZWxTaXplOlIuZGV2VG9vbHNQYW5lbFNpemUsc3RvcmFnZUtleTp6fSxjaGlsZHJlbjooMCxBLmpzeCkoXCJkaXZcIix7dGFiSW5kZXg6LTEscmVmOnEsY2xhc3NOYW1lOlwiZHluYW1pYy1wYW5lbC1jb250YWluZXJcIixzdHlsZTpvSih7XCItLXBhbmVsLXRvcFwiOksudG9wLFwiLS1wYW5lbC1ib3R0b21cIjpLLmJvdHRvbSxcIi0tcGFuZWwtbGVmdFwiOksubGVmdCxcIi0tcGFuZWwtcmlnaHRcIjpLLnJpZ2h0fSxHP3tcIi0tcGFuZWwtbWluLXdpZHRoXCI6ZXI/XCJcIi5jb25jYXQoZXIsXCJweFwiKTp2b2lkIDAsXCItLXBhbmVsLW1pbi1oZWlnaHRcIjplbz9cIlwiLmNvbmNhdChlbyxcInB4XCIpOnZvaWQgMCxcIi0tcGFuZWwtbWF4LXdpZHRoXCI6ZWE/XCJcIi5jb25jYXQoZWEsXCJweFwiKTp2b2lkIDAsXCItLXBhbmVsLW1heC1oZWlnaHRcIjplaT9cIlwiLmNvbmNhdChlaSxcInB4XCIpOnZvaWQgMH06e1wiLS1wYW5lbC1oZWlnaHRcIjpcIlwiLmNvbmNhdChlcz9lcy5oZWlnaHQ6Xy5oZWlnaHQsXCJweFwiKSxcIi0tcGFuZWwtd2lkdGhcIjpcIlwiLmNvbmNhdChlcz9lcy53aWR0aDpfLndpZHRoLFwicHhcIil9KSxjaGlsZHJlbjooMCxBLmpzeCkob3Mse2Rpc2FibGVkOiFiLGNoaWxkcmVuOigwLEEuanN4KShveSx7ZHJhZ0hhbmRsZVNlbGVjdG9yOlwiLnJlc2l6ZS1jb250YWluZXJcIixhdm9pZFpvbmU6e2Nvcm5lcjpSLmRldlRvb2xzUG9zaXRpb24sc3F1YXJlOjI1L1Iuc2NhbGUscGFkZGluZzpvd30scGFkZGluZzpvdyxwb3NpdGlvbjpNLHNldFBvc2l0aW9uOmZ1bmN0aW9uKGUpe04oe3R5cGU6WCxkZXZUb29sc1BhbmVsUG9zaXRpb246ZSxrZXk6RH0pLFwicmVzaXphYmxlXCI9PT1fLmtpbmQmJnJ3KHtkZXZUb29sc1BhbmVsUG9zaXRpb246b1Eoe30sRCxlKX0pfSxzdHlsZTp7b3ZlcmZsb3c6XCJhdXRvXCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwifSxkaXNhYmxlRHJhZzohYixjaGlsZHJlbjooMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxBLmpzeHMpKFwiZGl2XCIsKGY9b0ooe30sTykscD1wPXtjbGFzc05hbWU6XCJwYW5lbC1jb250ZW50LWNvbnRhaW5lciBcIi5jb25jYXQoKG51bGw9PU8/dm9pZCAwOk8uY2xhc3NOYW1lKXx8XCJcIiksc3R5bGU6b0ooe30sbnVsbD09Tz92b2lkIDA6Ty5zdHlsZSksY2hpbGRyZW46WygwLEEuanN4KShvdSx7Y2hpbGRyZW46Z30pLCgwLEEuanN4KShcImRpdlwiLHtcImRhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudFwiOiEwLGNsYXNzTmFtZTpcImRyYWdnYWJsZS1jb250ZW50XCIsY2hpbGRyZW46eX0pXX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChwKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCxlKSl9KSxmKSksRyYmKDAsQS5qc3hzKShBLkZyYWdtZW50LHtjaGlsZHJlbjpbKCFfLnNpZGVzfHxfLnNpZGVzLmluY2x1ZGVzKFwidmVydGljYWxcIikpJiYoMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxBLmpzeCkobyQse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwidG9wXCJ9KSwoMCxBLmpzeCkobyQse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwiYm90dG9tXCJ9KV19KSwoIV8uc2lkZXN8fF8uc2lkZXMuaW5jbHVkZXMoXCJob3Jpem9udGFsXCIpKSYmKDAsQS5qc3hzKShBLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsQS5qc3gpKG8kLHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcInJpZ2h0XCJ9KSwoMCxBLmpzeCkobyQse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwibGVmdFwifSldfSksKCFfLnNpZGVzfHxfLnNpZGVzLmluY2x1ZGVzKFwiZGlhZ29uYWxcIikpJiYoMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxBLmpzeCkobyQse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwidG9wLWxlZnRcIn0pLCgwLEEuanN4KShvJCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJ0b3AtcmlnaHRcIn0pLCgwLEEuanN4KShvJCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJib3R0b20tbGVmdFwifSksKDAsQS5qc3gpKG8kLHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcImJvdHRvbS1yaWdodFwifSldfSldfSldfSl9KX0pfSl9KX1vWC5zdHlsZVRhZ1RyYW5zZm9ybT1tKCksb1guc2V0QXR0cmlidXRlcz1kKCksb1guaW5zZXJ0PWMoKSxvWC5kb21BUEk9bCgpLG9YLmluc2VydFN0eWxlRWxlbWVudD1wKCksYSgpKG9LLlosb1gpLG9LLlomJm9LLloubG9jYWxzJiZvSy5aLmxvY2Fsczt2YXIgbzQ9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtZXhwbG9yZXIuY3NzXCIpLG81PXt9O2Z1bmN0aW9uIG8zKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1vNS5zdHlsZVRhZ1RyYW5zZm9ybT1tKCksbzUuc2V0QXR0cmlidXRlcz1kKCksbzUuaW5zZXJ0PWMoKSxvNS5kb21BUEk9bCgpLG81Lmluc2VydFN0eWxlRWxlbWVudD1wKCksYSgpKG80LlosbzUpLG80LlomJm80LloubG9jYWxzJiZvNC5aLmxvY2Fsczt2YXIgbzY9bmV3IFNldCxvOT17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe3JldHVybiBvNi5hZGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gbzYuZGVsZXRlKGUpfX0sZ2V0U25hcHNob3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYXQuZ2V0Um9vdCgpfSxnZXRTZXJ2ZXJTbmFwc2hvdDpmdW5jdGlvbigpe3JldHVybiBhdC5nZXRSb290KCl9fSxvOD1vOS5zdWJzY3JpYmUsbzc9bzkuZ2V0U25hcHNob3QsYWU9bzkuZ2V0U2VydmVyU25hcHNob3QsYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDaGFyYWN0ZXJzLG49dm9pZCAwPT09dD9mdW5jdGlvbihlKXtyZXR1cm5bZV19OnQscj1lLmNvbXBhcmUsbz12b2lkIDA9PT1yP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10fTpyLGE9e3ZhbHVlOnZvaWQgMCxjaGlsZHJlbjp7fX07ZnVuY3Rpb24gaSgpe3ZhciBlPSEwLHQ9ITEsbj12b2lkIDA7dHJ5e2Zvcih2YXIgcixvPW82W1N5bWJvbC5pdGVyYXRvcl0oKTshKGU9KHI9by5uZXh0KCkpLmRvbmUpO2U9ITApKDAsci52YWx1ZSkoKX1jYXRjaChlKXt0PSEwLG49ZX1maW5hbGx5e3RyeXtlfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKHQpdGhyb3cgbn19fXJldHVybntpbnNlcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YSxyPW4oZSksbz0hMCxsPSExLHM9dm9pZCAwO3RyeXtmb3IodmFyIGMsdT1yW1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KGM9dS5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBkPWMudmFsdWU7dC5jaGlsZHJlbltkXXx8KHQuY2hpbGRyZW5bZF09e3ZhbHVlOnZvaWQgMCxjaGlsZHJlbjp7fX0pLHQ9dC5jaGlsZHJlbltkXX19Y2F0Y2goZSl7bD0hMCxzPWV9ZmluYWxseXt0cnl7b3x8bnVsbD09dS5yZXR1cm58fHUucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHN9fXQudmFsdWU9ZSxhPW8zKHt9LGEpLGkoKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PWEscj1uKGUpLGw9W10scz0hMCxjPSEwLHU9ITEsZD12b2lkIDA7dHJ5e2Zvcih2YXIgZixwPXJbU3ltYm9sLml0ZXJhdG9yXSgpOyEoYz0oZj1wLm5leHQoKSkuZG9uZSk7Yz0hMCl7dmFyIGg9Zi52YWx1ZTtpZighdC5jaGlsZHJlbltoXSl7cz0hMTticmVha31sLnB1c2godCksdD10LmNoaWxkcmVuW2hdfX1jYXRjaChlKXt1PSEwLGQ9ZX1maW5hbGx5e3RyeXtjfHxudWxsPT1wLnJldHVybnx8cC5yZXR1cm4oKX1maW5hbGx5e2lmKHUpdGhyb3cgZH19aWYocyYmbyh0LnZhbHVlLGUpKXt0LnZhbHVlPXZvaWQgMDtmb3IodmFyIG09bC5sZW5ndGgtMTttPj0wO20tLSl7dmFyIGc9bFttXSx5PXJbbV07MD09PU9iamVjdC5rZXlzKGcuY2hpbGRyZW5beV0uY2hpbGRyZW4pLmxlbmd0aCYmZGVsZXRlIGcuY2hpbGRyZW5beV19YT1vMyh7fSxhKSxpKCl9fSxnZXRSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fX0oe2NvbXBhcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5wYWdlUGF0aD09PXQucGFnZVBhdGgmJmUudHlwZT09PXQudHlwZSYmZS5ib3VuZGFyeVR5cGU9PT10LmJvdW5kYXJ5VHlwZX0sZ2V0Q2hhcmFjdGVyczpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYWdlUGF0aC5zcGxpdChcIi9cIil9fSksYW49YXQuaW5zZXJ0LGFyPWF0LnJlbW92ZSxhbz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLmNzc1wiKSxhYT17fTthYS5zdHlsZVRhZ1RyYW5zZm9ybT1tKCksYWEuc2V0QXR0cmlidXRlcz1kKCksYWEuaW5zZXJ0PWMoKSxhYS5kb21BUEk9bCgpLGFhLmluc2VydFN0eWxlRWxlbWVudD1wKCksYSgpKGFvLlosYWEpLGFvLlomJmFvLloubG9jYWxzJiZhby5aLmxvY2FscztsZXQgYWk9e307ZnVuY3Rpb24gYWwoZSx0KXtsZXQgbj13LnVzZVJlZihhaSk7cmV0dXJuIG4uY3VycmVudD09PWFpJiYobi5jdXJyZW50PWUodCkpLG59bGV0IGFzPVtdO2Z1bmN0aW9uIGFjKGUpe3cudXNlRWZmZWN0KGUsYXMpfWNsYXNzIGF1e3N0YXRpYyBjcmVhdGUoKXtyZXR1cm4gbmV3IGF1fWN1cnJlbnRJZD0wO3N0YXJ0KGUsdCl7dGhpcy5jbGVhcigpLHRoaXMuY3VycmVudElkPXNldFRpbWVvdXQoKCk9Pnt0aGlzLmN1cnJlbnRJZD0wLHQoKX0sZSl9aXNTdGFydGVkKCl7cmV0dXJuIDAhPT10aGlzLmN1cnJlbnRJZH1jbGVhcj0oKT0+ezAhPT10aGlzLmN1cnJlbnRJZCYmKGNsZWFyVGltZW91dCh0aGlzLmN1cnJlbnRJZCksdGhpcy5jdXJyZW50SWQ9MCl9O2Rpc3Bvc2VFZmZlY3Q9KCk9PnRoaXMuY2xlYXJ9ZnVuY3Rpb24gYWQoKXtsZXQgZT1hbChhdS5jcmVhdGUpLmN1cnJlbnQ7cmV0dXJuIGFjKGUuZGlzcG9zZUVmZmVjdCksZX1sZXQgYWY9Q1tgdXNlSW5zZXJ0aW9uRWZmZWN0JHtNYXRoLnJhbmRvbSgpLnRvRml4ZWQoMSl9YC5zbGljZSgwLC0zKV0sYXA9YWYmJmFmIT09dy51c2VMYXlvdXRFZmZlY3Q/YWY6ZT0+ZSgpO2Z1bmN0aW9uIGFoKGUpe2xldCB0PWFsKGFtKS5jdXJyZW50O3JldHVybiB0Lm5leHQ9ZSxhcCh0LmVmZmVjdCksdC50cmFtcG9saW5lfWZ1bmN0aW9uIGFtKCl7bGV0IGU9e25leHQ6dm9pZCAwLGNhbGxiYWNrOmFnLHRyYW1wb2xpbmU6KC4uLnQpPT5lLmNhbGxiYWNrPy4oLi4udCksZWZmZWN0OigpPT57ZS5jYWxsYmFjaz1lLm5leHR9fTtyZXR1cm4gZX1mdW5jdGlvbiBhZygpe31mdW5jdGlvbiBheSh7Y29udHJvbGxlZDplLGRlZmF1bHQ6dCxuYW1lOm4sc3RhdGU6cj1cInZhbHVlXCJ9KXtsZXR7Y3VycmVudDpvfT13LnVzZVJlZih2b2lkIDAhPT1lKSxbYSxpXT13LnVzZVN0YXRlKHQpLGw9dy51c2VDYWxsYmFjayhlPT57b3x8aShlKX0sW10pO3JldHVybltvP2U6YSxsXX1sZXQgYXY9ey4uLkN9LGFiPTAsYUE9YXYudXNlSWQ7ZnVuY3Rpb24gYXgoZSx0KXtpZih2b2lkIDAhPT1hQSl7bGV0IG49YUEoKTtyZXR1cm4gZT8/KHQ/YCR7dH0tJHtufWA6bil9cmV0dXJuIGZ1bmN0aW9uKGUsdD1cIm11aVwiKXtsZXRbbixyXT13LnVzZVN0YXRlKGUpLG89ZXx8bjtyZXR1cm4gdy51c2VFZmZlY3QoKCk9PntudWxsPT1uJiYoYWIrPTEscihgJHt0fS0ke2FifWApKX0sW24sdF0pLG99KGUsdCl9ZnVuY3Rpb24gYXcoKXtsZXQgZT1uZXcgTWFwO3JldHVybntlbWl0KHQsbil7ZS5nZXQodCk/LmZvckVhY2goZT0+ZShuKSl9LG9uKHQsbil7ZS5oYXModCl8fGUuc2V0KHQsbmV3IFNldCksZS5nZXQodCkuYWRkKG4pfSxvZmYodCxuKXtlLmdldCh0KT8uZGVsZXRlKG4pfX19bGV0IGFDPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudD93LnVzZUxheW91dEVmZmVjdDooKT0+e30sYV89dy5jcmVhdGVDb250ZXh0KG51bGwpLGFrPXcuY3JlYXRlQ29udGV4dChudWxsKSxhRT0oKT0+dy51c2VDb250ZXh0KGFfKT8uaWR8fG51bGwsYWo9KCk9PncudXNlQ29udGV4dChhayk7ZnVuY3Rpb24gYVMoZSl7bGV0e2NoaWxkcmVuOnQsaWQ6bn09ZSxyPWFFKCk7cmV0dXJuKDAsQS5qc3gpKGFfLlByb3ZpZGVyLHt2YWx1ZTp3LnVzZU1lbW8oKCk9Pih7aWQ6bixwYXJlbnRJZDpyfSksW24scl0pLGNoaWxkcmVuOnR9KX1mdW5jdGlvbiBhTyhlKXtsZXR7Y2hpbGRyZW46dH09ZSxuPXcudXNlUmVmKFtdKSxyPXcudXNlQ2FsbGJhY2soZT0+e24uY3VycmVudD1bLi4ubi5jdXJyZW50LGVdfSxbXSksbz13LnVzZUNhbGxiYWNrKGU9PntuLmN1cnJlbnQ9bi5jdXJyZW50LmZpbHRlcih0PT50IT09ZSl9LFtdKSxbYV09dy51c2VTdGF0ZSgoKT0+YXcoKSk7cmV0dXJuKDAsQS5qc3gpKGFrLlByb3ZpZGVyLHt2YWx1ZTp3LnVzZU1lbW8oKCk9Pih7bm9kZXNSZWY6bixhZGROb2RlOnIscmVtb3ZlTm9kZTpvLGV2ZW50czphfSksW3IsbyxhXSksY2hpbGRyZW46dH0pfWZ1bmN0aW9uIGFCKGUpe2xldHtvcGVuOnQ9ITEsb25PcGVuQ2hhbmdlOm4sZWxlbWVudHM6cn09ZSxvPWF4KCksYT13LnVzZVJlZih7fSksW2ldPXcudXNlU3RhdGUoKCk9PmF3KCkpLGw9bnVsbCE9YUUoKSxbcyxjXT13LnVzZVN0YXRlKHIucmVmZXJlbmNlKSx1PWFoKChlLHQscik9PnthLmN1cnJlbnQub3BlbkV2ZW50PWU/dDp2b2lkIDAsaS5lbWl0KFwib3BlbmNoYW5nZVwiLHtvcGVuOmUsZXZlbnQ6dCxyZWFzb246cixuZXN0ZWQ6bH0pLG4/LihlLHQscil9KSxkPXcudXNlTWVtbygoKT0+KHtzZXRQb3NpdGlvblJlZmVyZW5jZTpjfSksW10pLGY9dy51c2VNZW1vKCgpPT4oe3JlZmVyZW5jZTpzfHxyLnJlZmVyZW5jZXx8bnVsbCxmbG9hdGluZzpyLmZsb2F0aW5nfHxudWxsLGRvbVJlZmVyZW5jZTpyLnJlZmVyZW5jZX0pLFtzLHIucmVmZXJlbmNlLHIuZmxvYXRpbmddKTtyZXR1cm4gdy51c2VNZW1vKCgpPT4oe2RhdGFSZWY6YSxvcGVuOnQsb25PcGVuQ2hhbmdlOnUsZWxlbWVudHM6ZixldmVudHM6aSxmbG9hdGluZ0lkOm8scmVmczpkfSksW3QsdSxmLGksbyxkXSl9ZnVuY3Rpb24gYVAoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93fWZ1bmN0aW9uIGFJKGUpe3JldHVybiBhRChlKT8oZS5ub2RlTmFtZXx8XCJcIikudG9Mb3dlckNhc2UoKTpcIiNkb2N1bWVudFwifWZ1bmN0aW9uIGFUKGUpe3ZhciB0O3JldHVybihudWxsPT1lfHxudWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIGF6KGUpe3ZhciB0O3JldHVybiBudWxsPT0odD0oYUQoZSk/ZS5vd25lckRvY3VtZW50OmUuZG9jdW1lbnQpfHx3aW5kb3cuZG9jdW1lbnQpP3ZvaWQgMDp0LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBhRChlKXtyZXR1cm4hIWFQKCkmJihlIGluc3RhbmNlb2YgTm9kZXx8ZSBpbnN0YW5jZW9mIGFUKGUpLk5vZGUpfWZ1bmN0aW9uIGFMKGUpe3JldHVybiEhYVAoKSYmKGUgaW5zdGFuY2VvZiBFbGVtZW50fHxlIGluc3RhbmNlb2YgYVQoZSkuRWxlbWVudCl9ZnVuY3Rpb24gYU4oZSl7cmV0dXJuISFhUCgpJiYoZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxlIGluc3RhbmNlb2YgYVQoZSkuSFRNTEVsZW1lbnQpfWZ1bmN0aW9uIGFSKGUpe3JldHVybiEhYVAoKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNoYWRvd1Jvb3QmJihlIGluc3RhbmNlb2YgU2hhZG93Um9vdHx8ZSBpbnN0YW5jZW9mIGFUKGUpLlNoYWRvd1Jvb3QpfWxldCBhTT1uZXcgU2V0KFtcImlubGluZVwiLFwiY29udGVudHNcIl0pO2Z1bmN0aW9uIGFaKGUpe2xldHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6b309YUcoZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtyK24pJiYhYU0uaGFzKG8pfWxldCBhVT1uZXcgU2V0KFtcInRhYmxlXCIsXCJ0ZFwiLFwidGhcIl0pLGFGPVtcIjpwb3BvdmVyLW9wZW5cIixcIjptb2RhbFwiXTtmdW5jdGlvbiBhcShlKXtyZXR1cm4gYUYuc29tZSh0PT57dHJ5e3JldHVybiBlLm1hdGNoZXModCl9Y2F0Y2goZSl7cmV0dXJuITF9fSl9bGV0IGFIPVtcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlXCIsXCJzY2FsZVwiLFwicm90YXRlXCIsXCJwZXJzcGVjdGl2ZVwiXSxhVj1bXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZVwiLFwic2NhbGVcIixcInJvdGF0ZVwiLFwicGVyc3BlY3RpdmVcIixcImZpbHRlclwiXSxhJD1bXCJwYWludFwiLFwibGF5b3V0XCIsXCJzdHJpY3RcIixcImNvbnRlbnRcIl07ZnVuY3Rpb24gYVcoZSl7bGV0IHQ9YVkoKSxuPWFMKGUpP2FHKGUpOmU7cmV0dXJuIGFILnNvbWUoZT0+ISFuW2VdJiZcIm5vbmVcIiE9PW5bZV0pfHwhIW4uY29udGFpbmVyVHlwZSYmXCJub3JtYWxcIiE9PW4uY29udGFpbmVyVHlwZXx8IXQmJiEhbi5iYWNrZHJvcEZpbHRlciYmXCJub25lXCIhPT1uLmJhY2tkcm9wRmlsdGVyfHwhdCYmISFuLmZpbHRlciYmXCJub25lXCIhPT1uLmZpbHRlcnx8YVYuc29tZShlPT4obi53aWxsQ2hhbmdlfHxcIlwiKS5pbmNsdWRlcyhlKSl8fGEkLnNvbWUoZT0+KG4uY29udGFpbnx8XCJcIikuaW5jbHVkZXMoZSkpfWZ1bmN0aW9uIGFZKCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIENTUyYmISFDU1Muc3VwcG9ydHMmJkNTUy5zdXBwb3J0cyhcIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyXCIsXCJub25lXCIpfWxldCBhSz1uZXcgU2V0KFtcImh0bWxcIixcImJvZHlcIixcIiNkb2N1bWVudFwiXSk7ZnVuY3Rpb24gYVgoZSl7cmV0dXJuIGFLLmhhcyhhSShlKSl9ZnVuY3Rpb24gYUcoZSl7cmV0dXJuIGFUKGUpLmdldENvbXB1dGVkU3R5bGUoZSl9ZnVuY3Rpb24gYVEoZSl7cmV0dXJuIGFMKGUpP3tzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6ZS5zY3JvbGxUb3B9OntzY3JvbGxMZWZ0OmUuc2Nyb2xsWCxzY3JvbGxUb3A6ZS5zY3JvbGxZfX1mdW5jdGlvbiBhSihlKXtpZihcImh0bWxcIj09PWFJKGUpKXJldHVybiBlO2xldCB0PWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fGFSKGUpJiZlLmhvc3R8fGF6KGUpO3JldHVybiBhUih0KT90Lmhvc3Q6dH1mdW5jdGlvbiBhMChlLHQsbil7dmFyIHI7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PW4mJihuPSEwKTtsZXQgbz1mdW5jdGlvbiBlKHQpe2xldCBuPWFKKHQpO3JldHVybiBhWChuKT90Lm93bmVyRG9jdW1lbnQ/dC5vd25lckRvY3VtZW50LmJvZHk6dC5ib2R5OmFOKG4pJiZhWihuKT9uOmUobil9KGUpLGE9bz09PShudWxsPT0ocj1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDpyLmJvZHkpLGk9YVQobyk7aWYoYSl7bGV0IGU9YTEoaSk7cmV0dXJuIHQuY29uY2F0KGksaS52aXN1YWxWaWV3cG9ydHx8W10sYVoobyk/bzpbXSxlJiZuP2EwKGUpOltdKX1yZXR1cm4gdC5jb25jYXQobyxhMChvLFtdLG4pKX1mdW5jdGlvbiBhMShlKXtyZXR1cm4gZS5wYXJlbnQmJk9iamVjdC5nZXRQcm90b3R5cGVPZihlLnBhcmVudCk/ZS5mcmFtZUVsZW1lbnQ6bnVsbH1mdW5jdGlvbiBhMihlKXtsZXQgdD1hbChhNCxlKS5jdXJyZW50O3JldHVybiB0Lm5leHQ9ZSxhQyh0LmVmZmVjdCksdH1mdW5jdGlvbiBhNChlKXtsZXQgdD17Y3VycmVudDplLG5leHQ6ZSxlZmZlY3Q6KCk9Pnt0LmN1cnJlbnQ9dC5uZXh0fX07cmV0dXJuIHR9bGV0IGE1PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3IsYTM9ZnVuY3Rpb24oKXtpZighYTUpcmV0dXJue3BsYXRmb3JtOlwiXCIsbWF4VG91Y2hQb2ludHM6LTF9O2xldCBlPW5hdmlnYXRvci51c2VyQWdlbnREYXRhO3JldHVybiBlPy5wbGF0Zm9ybT97cGxhdGZvcm06ZS5wbGF0Zm9ybSxtYXhUb3VjaFBvaW50czpuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN9OntwbGF0Zm9ybTpuYXZpZ2F0b3IucGxhdGZvcm0/P1wiXCIsbWF4VG91Y2hQb2ludHM6bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPz8tMX19KCksYTY9ZnVuY3Rpb24oKXtpZighYTUpcmV0dXJuXCJcIjtsZXQgZT1uYXZpZ2F0b3IudXNlckFnZW50RGF0YTtyZXR1cm4gZT8ucGxhdGZvcm0/ZS5wbGF0Zm9ybTpuYXZpZ2F0b3IucGxhdGZvcm0/P1wiXCJ9KCksYTk9ZnVuY3Rpb24oKXtpZighYTUpcmV0dXJuXCJcIjtsZXQgZT1uYXZpZ2F0b3IudXNlckFnZW50RGF0YTtyZXR1cm4gZSYmQXJyYXkuaXNBcnJheShlLmJyYW5kcyk/ZS5icmFuZHMubWFwKCh7YnJhbmQ6ZSx2ZXJzaW9uOnR9KT0+YCR7ZX0vJHt0fWApLmpvaW4oXCIgXCIpOm5hdmlnYXRvci51c2VyQWdlbnR9KCksYTg9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIENTUyYmISFDU1Muc3VwcG9ydHMmJkNTUy5zdXBwb3J0cyhcIi13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOm5vbmVcIiksYTc9XCJNYWNJbnRlbFwiPT09YTMucGxhdGZvcm0mJmEzLm1heFRvdWNoUG9pbnRzPjF8fC9pUChob25lfGFkfG9kKXxpT1MvLnRlc3QoYTMucGxhdGZvcm0pO2E1JiYvZmlyZWZveC9pLnRlc3QoYTkpO2xldCBpZT1hNSYmL2FwcGxlL2kudGVzdChuYXZpZ2F0b3IudmVuZG9yKSxpdD1hNSYmL2FuZHJvaWQvaS50ZXN0KGE2KXx8L2FuZHJvaWQvaS50ZXN0KGE5KSxpcj1hNSYmYTYudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwibWFjXCIpJiYhbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLGlvPWE5LmluY2x1ZGVzKFwianNkb20vXCIpO2Z1bmN0aW9uIGlhKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGlpKGUpe3JldHVybiAwPT09ZS5tb3pJbnB1dFNvdXJjZSYmISFlLmlzVHJ1c3RlZHx8KGl0JiZlLnBvaW50ZXJUeXBlP1wiY2xpY2tcIj09PWUudHlwZSYmMT09PWUuYnV0dG9uczowPT09ZS5kZXRhaWwmJiFlLnBvaW50ZXJUeXBlKX1mdW5jdGlvbiBpbChlKXtyZXR1cm4haW8mJighaXQmJjA9PT1lLndpZHRoJiYwPT09ZS5oZWlnaHR8fGl0JiYxPT09ZS53aWR0aCYmMT09PWUuaGVpZ2h0JiYwPT09ZS5wcmVzc3VyZSYmMD09PWUuZGV0YWlsJiZcIm1vdXNlXCI9PT1lLnBvaW50ZXJUeXBlfHxlLndpZHRoPDEmJmUuaGVpZ2h0PDEmJjA9PT1lLnByZXNzdXJlJiYwPT09ZS5kZXRhaWwmJlwidG91Y2hcIj09PWUucG9pbnRlclR5cGUpfWZ1bmN0aW9uIGlzKGUsdCl7bGV0IG49W1wibW91c2VcIixcInBlblwiXTtyZXR1cm4gdHx8bi5wdXNoKFwiXCIsdm9pZCAwKSxuLmluY2x1ZGVzKGUpfWxldCBpYz1cImRhdGEtYmFzZS11aS1mb2N1c2FibGVcIixpdT1cImFjdGl2ZVwiLGlkPVwic2VsZWN0ZWRcIixpcD1cIkFycm93TGVmdFwiLGloPVwiQXJyb3dSaWdodFwiLGltPVwiQXJyb3dVcFwiLGlnPVwiQXJyb3dEb3duXCI7ZnVuY3Rpb24gaXkoZSl7bGV0IHQ9ZS5hY3RpdmVFbGVtZW50O2Zvcig7dD8uc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCE9bnVsbDspdD10LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtyZXR1cm4gdH1mdW5jdGlvbiBpdihlLHQpe2lmKCFlfHwhdClyZXR1cm4hMTtsZXQgbj10LmdldFJvb3ROb2RlPy4oKTtpZihlLmNvbnRhaW5zKHQpKXJldHVybiEwO2lmKG4mJmFSKG4pKXtsZXQgbj10O2Zvcig7bjspe2lmKGU9PT1uKXJldHVybiEwO249bi5wYXJlbnROb2RlfHxuLmhvc3R9fXJldHVybiExfWZ1bmN0aW9uIGliKGUpe3JldHVyblwiY29tcG9zZWRQYXRoXCJpbiBlP2UuY29tcG9zZWRQYXRoKClbMF06ZS50YXJnZXR9ZnVuY3Rpb24gaUEoZSx0KXtyZXR1cm4gbnVsbCE9dCYmKFwiY29tcG9zZWRQYXRoXCJpbiBlP2UuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXModCk6bnVsbCE9ZS50YXJnZXQmJnQuY29udGFpbnMoZS50YXJnZXQpKX1mdW5jdGlvbiBpeChlKXtyZXR1cm4gZT8ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnR9ZnVuY3Rpb24gaXcoZSl7cmV0dXJuIGFOKGUpJiZlLm1hdGNoZXMoXCJpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddKTpub3QoW2Rpc2FibGVkXSksW2NvbnRlbnRlZGl0YWJsZV06bm90KFtjb250ZW50ZWRpdGFibGU9J2ZhbHNlJ10pLHRleHRhcmVhOm5vdChbZGlzYWJsZWRdKVwiKX1mdW5jdGlvbiBpQyhlKXtyZXR1cm4hIWUmJlwiY29tYm9ib3hcIj09PWUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSYmaXcoZSl9ZnVuY3Rpb24gaV8oZSl7cmV0dXJuIGU/ZS5oYXNBdHRyaWJ1dGUoaWMpP2U6ZS5xdWVyeVNlbGVjdG9yKGBbJHtpY31dYCl8fGU6bnVsbH1mdW5jdGlvbiBpayhlKXtyZXR1cm5gZGF0YS1iYXNlLXVpLSR7ZX1gfWxldCBpRT1payhcInNhZmUtcG9seWdvblwiKTtmdW5jdGlvbiBpaihlLHQsbil7aWYobiYmIWlzKG4pKXJldHVybiAwO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpe2xldCBuPWUoKTtyZXR1cm5cIm51bWJlclwiPT10eXBlb2Ygbj9uOm4/Llt0XX1yZXR1cm4gZT8uW3RdfWZ1bmN0aW9uIGlTKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmV9ZnVuY3Rpb24gaU8oZSx0PXt9KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGRhdGFSZWY6byxldmVudHM6YSxlbGVtZW50czppfT1lLHtlbmFibGVkOmw9ITAsZGVsYXk6cz0wLGhhbmRsZUNsb3NlOmM9bnVsbCxtb3VzZU9ubHk6dT0hMSxyZXN0TXM6ZD0wLG1vdmU6Zj0hMH09dCxwPWFqKCksaD1hRSgpLG09YTIoYyksZz1hMihzKSx5PWEyKG4pLHY9YTIoZCksYj13LnVzZVJlZih2b2lkIDApLEE9YWQoKSx4PXcudXNlUmVmKHZvaWQgMCksQz1hZCgpLF89dy51c2VSZWYoITApLGs9dy51c2VSZWYoITEpLEU9dy51c2VSZWYoKCk9Pnt9KSxqPXcudXNlUmVmKCExKSxTPWFoKCgpPT57bGV0IGU9by5jdXJyZW50Lm9wZW5FdmVudD8udHlwZTtyZXR1cm4gZT8uaW5jbHVkZXMoXCJtb3VzZVwiKSYmXCJtb3VzZWRvd25cIiE9PWV9KTt3LnVzZUVmZmVjdCgoKT0+e2lmKGwpcmV0dXJuIGEub24oXCJvcGVuY2hhbmdlXCIsZSksKCk9PnthLm9mZihcIm9wZW5jaGFuZ2VcIixlKX07ZnVuY3Rpb24gZSh7b3BlbjplfSl7ZXx8KEEuY2xlYXIoKSxDLmNsZWFyKCksXy5jdXJyZW50PSEwLGouY3VycmVudD0hMSl9fSxbbCxhLEEsQ10pLHcudXNlRWZmZWN0KCgpPT57aWYoIWx8fCFtLmN1cnJlbnR8fCFuKXJldHVybjtmdW5jdGlvbiBlKGUpe1MoKSYmcighMSxlLFwiaG92ZXJcIil9bGV0IHQ9aXgoaS5mbG9hdGluZykuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZSksKCk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZSl9fSxbaS5mbG9hdGluZyxuLHIsbCxtLFNdKTtsZXQgTz13LnVzZUNhbGxiYWNrKChlLHQ9ITAsbj1cImhvdmVyXCIpPT57bGV0IG89aWooZy5jdXJyZW50LFwiY2xvc2VcIixiLmN1cnJlbnQpO28mJiF4LmN1cnJlbnQ/QS5zdGFydChvLCgpPT5yKCExLGUsbikpOnQmJihBLmNsZWFyKCkscighMSxlLG4pKX0sW2cscixBXSksQj1haCgoKT0+e0UuY3VycmVudCgpLHguY3VycmVudD12b2lkIDB9KSxQPWFoKCgpPT57aWYoay5jdXJyZW50KXtsZXQgZT1peChpLmZsb2F0aW5nKS5ib2R5O2Uuc3R5bGUucG9pbnRlckV2ZW50cz1cIlwiLGUucmVtb3ZlQXR0cmlidXRlKGlFKSxrLmN1cnJlbnQ9ITF9fSksST1haCgoKT0+ISFvLmN1cnJlbnQub3BlbkV2ZW50JiZbXCJjbGlja1wiLFwibW91c2Vkb3duXCJdLmluY2x1ZGVzKG8uY3VycmVudC5vcGVuRXZlbnQudHlwZSkpO3cudXNlRWZmZWN0KCgpPT57aWYobCYmYUwoaS5kb21SZWZlcmVuY2UpKXtsZXQgcj1pLmRvbVJlZmVyZW5jZSxvPWkuZmxvYXRpbmc7cmV0dXJuIG4mJnIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixhKSxmJiZyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixlLHtvbmNlOiEwfSksci5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGUpLHIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0KSxvJiYoby5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGEpLG8uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixzKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYykpLCgpPT57biYmci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGEpLGYmJnIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGUpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixlKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdCksbyYmKG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixhKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIscyksby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGMpKX19ZnVuY3Rpb24gZShlKXtpZihBLmNsZWFyKCksXy5jdXJyZW50PSExLHUmJiFpcyhiLmN1cnJlbnQpfHxpUyh2LmN1cnJlbnQpPjAmJiFpaihnLmN1cnJlbnQsXCJvcGVuXCIpKXJldHVybjtsZXQgdD1paihnLmN1cnJlbnQsXCJvcGVuXCIsYi5jdXJyZW50KTt0P0Euc3RhcnQodCwoKT0+e3kuY3VycmVudHx8cighMCxlLFwiaG92ZXJcIil9KTpufHxyKCEwLGUsXCJob3ZlclwiKX1mdW5jdGlvbiB0KGUpe2lmKEkoKSlyZXR1cm4gdm9pZCBQKCk7RS5jdXJyZW50KCk7bGV0IHQ9aXgoaS5mbG9hdGluZyk7aWYoQy5jbGVhcigpLGouY3VycmVudD0hMSxtLmN1cnJlbnQmJm8uY3VycmVudC5mbG9hdGluZ0NvbnRleHQpe258fEEuY2xlYXIoKSx4LmN1cnJlbnQ9bS5jdXJyZW50KHsuLi5vLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0LHRyZWU6cCx4OmUuY2xpZW50WCx5OmUuY2xpZW50WSxvbkNsb3NlKCl7UCgpLEIoKSxJKCl8fE8oZSwhMCxcInNhZmUtcG9seWdvblwiKX19KTtsZXQgcj14LmN1cnJlbnQ7dC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsciksRS5jdXJyZW50PSgpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIscil9O3JldHVybn1cInRvdWNoXCI9PT1iLmN1cnJlbnQmJml2KGkuZmxvYXRpbmcsZS5yZWxhdGVkVGFyZ2V0KXx8TyhlKX1mdW5jdGlvbiBhKGUpeyFJKCkmJm8uY3VycmVudC5mbG9hdGluZ0NvbnRleHQmJm0uY3VycmVudD8uKHsuLi5vLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0LHRyZWU6cCx4OmUuY2xpZW50WCx5OmUuY2xpZW50WSxvbkNsb3NlKCl7UCgpLEIoKSxJKCl8fE8oZSl9fSkoZSl9ZnVuY3Rpb24gcygpe0EuY2xlYXIoKX1mdW5jdGlvbiBjKGUpe0koKXx8TyhlLCExKX19LFtpLGwsZSx1LGYsTyxCLFAscixuLHkscCxnLG0sbyxJLHYsQSxDXSksYUMoKCk9PntpZihsJiZuJiZtLmN1cnJlbnQ/Ll9fb3B0aW9ucz8uYmxvY2tQb2ludGVyRXZlbnRzJiZTKCkpe2suY3VycmVudD0hMDtsZXQgZT1pLmZsb2F0aW5nO2lmKGFMKGkuZG9tUmVmZXJlbmNlKSYmZSl7bGV0IHQ9aXgoaS5mbG9hdGluZykuYm9keTt0LnNldEF0dHJpYnV0ZShpRSxcIlwiKTtsZXQgbj1pLmRvbVJlZmVyZW5jZSxyPXA/Lm5vZGVzUmVmLmN1cnJlbnQuZmluZChlPT5lLmlkPT09aCk/LmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nO3JldHVybiByJiYoci5zdHlsZS5wb2ludGVyRXZlbnRzPVwiXCIpLHQuc3R5bGUucG9pbnRlckV2ZW50cz1cIm5vbmVcIixuLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJhdXRvXCIsZS5zdHlsZS5wb2ludGVyRXZlbnRzPVwiYXV0b1wiLCgpPT57dC5zdHlsZS5wb2ludGVyRXZlbnRzPVwiXCIsbi5zdHlsZS5wb2ludGVyRXZlbnRzPVwiXCIsZS5zdHlsZS5wb2ludGVyRXZlbnRzPVwiXCJ9fX19LFtsLG4saCxpLHAsbSxTXSksYUMoKCk9PntufHwoYi5jdXJyZW50PXZvaWQgMCxqLmN1cnJlbnQ9ITEsQigpLFAoKSl9LFtuLEIsUF0pLHcudXNlRWZmZWN0KCgpPT4oKT0+e0IoKSxBLmNsZWFyKCksQy5jbGVhcigpLFAoKX0sW2wsaS5kb21SZWZlcmVuY2UsQixQLEEsQ10pO2xldCBUPXcudXNlTWVtbygoKT0+e2Z1bmN0aW9uIGUoZSl7Yi5jdXJyZW50PWUucG9pbnRlclR5cGV9cmV0dXJue29uUG9pbnRlckRvd246ZSxvblBvaW50ZXJFbnRlcjplLG9uTW91c2VNb3ZlKGUpe2xldHtuYXRpdmVFdmVudDp0fT1lO2Z1bmN0aW9uIG8oKXtfLmN1cnJlbnR8fHkuY3VycmVudHx8cighMCx0LFwiaG92ZXJcIil9KCF1fHxpcyhiLmN1cnJlbnQpKSYmIW4mJjAhPT1pUyh2LmN1cnJlbnQpJiYoai5jdXJyZW50JiZlLm1vdmVtZW50WCoqMitlLm1vdmVtZW50WSoqMjwyfHwoQy5jbGVhcigpLFwidG91Y2hcIj09PWIuY3VycmVudD9vKCk6KGouY3VycmVudD0hMCxDLnN0YXJ0KGlTKHYuY3VycmVudCksbykpKSl9fX0sW3UscixuLHksdixDXSk7cmV0dXJuIHcudXNlTWVtbygoKT0+bD97cmVmZXJlbmNlOlR9Ont9LFtsLFRdKX1mdW5jdGlvbiBpQihlLHQsbj0hMCl7cmV0dXJuIGUuZmlsdGVyKGU9PmUucGFyZW50SWQ9PT10JiYoIW58fGUuY29udGV4dD8ub3BlbikpLmZsYXRNYXAodD0+W3QsLi4uaUIoZSx0LmlkLG4pXSl9ZnVuY3Rpb24gaVAoZSx0KXtsZXQgbj1bXSxyPWUuZmluZChlPT5lLmlkPT09dCk/LnBhcmVudElkO2Zvcig7cjspe2xldCB0PWUuZmluZChlPT5lLmlkPT09cik7cj10Py5wYXJlbnRJZCx0JiYobj1uLmNvbmNhdCh0KSl9cmV0dXJuIG59ZnVuY3Rpb24gaUkoZSx0KXtsZXRbbixyXT1lLG89ITEsYT10Lmxlbmd0aDtmb3IobGV0IGU9MCxpPWEtMTtlPGE7aT1lKyspe2xldFthLGxdPXRbZV18fFswLDBdLFtzLGNdPXRbaV18fFswLDBdO2w+PXIhPWM+PXImJm48PShzLWEpKihyLWwpLyhjLWwpK2EmJihvPSFvKX1yZXR1cm4gb31mdW5jdGlvbiBpVChlPXt9KXtsZXR7YnVmZmVyOnQ9LjUsYmxvY2tQb2ludGVyRXZlbnRzOm49ITEscmVxdWlyZUludGVudDpyPSEwfT1lLG89bmV3IGF1LGE9ITEsaT1udWxsLGw9bnVsbCxzPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwZXJmb3JtYW5jZT9wZXJmb3JtYW5jZS5ub3coKTowLGM9KHt4OmUseTpuLHBsYWNlbWVudDpjLGVsZW1lbnRzOnUsb25DbG9zZTpkLG5vZGVJZDpmLHRyZWU6cH0pPT5mdW5jdGlvbihoKXt2YXIgbSxnO2Z1bmN0aW9uIHkoKXtvLmNsZWFyKCksZCgpfWlmKG8uY2xlYXIoKSwhdS5kb21SZWZlcmVuY2V8fCF1LmZsb2F0aW5nfHxudWxsPT1jfHxudWxsPT1lfHxudWxsPT1uKXJldHVybjtsZXR7Y2xpZW50WDp2LGNsaWVudFk6Yn09aCxBPVt2LGJdLHg9aWIoaCksdz1cIm1vdXNlbGVhdmVcIj09PWgudHlwZSxDPWl2KHUuZmxvYXRpbmcseCksXz1pdih1LmRvbVJlZmVyZW5jZSx4KSxrPXUuZG9tUmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEU9dS5mbG9hdGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxqPWMuc3BsaXQoXCItXCIpWzBdLFM9ZT5FLnJpZ2h0LUUud2lkdGgvMixPPW4+RS5ib3R0b20tRS5oZWlnaHQvMixCPShtPUEsZz1rLG1bMF0+PWcueCYmbVswXTw9Zy54K2cud2lkdGgmJm1bMV0+PWcueSYmbVsxXTw9Zy55K2cuaGVpZ2h0KSxQPUUud2lkdGg+ay53aWR0aCxJPUUuaGVpZ2h0PmsuaGVpZ2h0LFQ9KFA/azpFKS5sZWZ0LHo9KFA/azpFKS5yaWdodCxEPShJP2s6RSkudG9wLEw9KEk/azpFKS5ib3R0b207aWYoQyYmKGE9ITAsIXcpKXJldHVybjtpZihfJiYoYT0hMSksXyYmIXcpe2E9ITA7cmV0dXJufWlmKHcmJmFMKGgucmVsYXRlZFRhcmdldCkmJml2KHUuZmxvYXRpbmcsaC5yZWxhdGVkVGFyZ2V0KXx8cCYmaUIocC5ub2Rlc1JlZi5jdXJyZW50LGYpLnNvbWUoKHtjb250ZXh0OmV9KT0+ZT8ub3BlbikpcmV0dXJuO2lmKFwidG9wXCI9PT1qJiZuPj1rLmJvdHRvbS0xfHxcImJvdHRvbVwiPT09aiYmbjw9ay50b3ArMXx8XCJsZWZ0XCI9PT1qJiZlPj1rLnJpZ2h0LTF8fFwicmlnaHRcIj09PWomJmU8PWsubGVmdCsxKXJldHVybiB5KCk7bGV0IE49W107c3dpdGNoKGope2Nhc2VcInRvcFwiOk49W1tULGsudG9wKzFdLFtULEUuYm90dG9tLTFdLFt6LEUuYm90dG9tLTFdLFt6LGsudG9wKzFdXTticmVhaztjYXNlXCJib3R0b21cIjpOPVtbVCxFLnRvcCsxXSxbVCxrLmJvdHRvbS0xXSxbeixrLmJvdHRvbS0xXSxbeixFLnRvcCsxXV07YnJlYWs7Y2FzZVwibGVmdFwiOk49W1tFLnJpZ2h0LTEsTF0sW0UucmlnaHQtMSxEXSxbay5sZWZ0KzEsRF0sW2subGVmdCsxLExdXTticmVhaztjYXNlXCJyaWdodFwiOk49W1trLnJpZ2h0LTEsTF0sW2sucmlnaHQtMSxEXSxbRS5sZWZ0KzEsRF0sW0UubGVmdCsxLExdXX1pZighaUkoW3YsYl0sTikpe2lmKGEmJiFCKXJldHVybiB5KCk7aWYoIXcmJnIpe2xldCBlPWZ1bmN0aW9uKGUsdCl7bGV0IG49cGVyZm9ybWFuY2Uubm93KCkscj1uLXM7aWYobnVsbD09PWl8fG51bGw9PT1sfHwwPT09cilyZXR1cm4gaT1lLGw9dCxzPW4sbnVsbDtsZXQgbz1lLWksYT10LWwsYz1NYXRoLnNxcnQobypvK2EqYSk7cmV0dXJuIGk9ZSxsPXQscz1uLGMvcn0oaC5jbGllbnRYLGguY2xpZW50WSk7aWYobnVsbCE9PWUmJmU8LjEpcmV0dXJuIHkoKX1pSShbdixiXSxmdW5jdGlvbihbZSxuXSl7c3dpdGNoKGope2Nhc2VcInRvcFwiOntsZXQgcj1bW0UubGVmdCxTfHxQP0UuYm90dG9tLXQ6RS50b3BdLFtFLnJpZ2h0LFM/UD9FLmJvdHRvbS10OkUudG9wOkUuYm90dG9tLXRdXTtyZXR1cm5bW1A/ZSt0LzI6Uz9lKzQqdDplLTQqdCxuK3QrMV0sW1A/ZS10LzI6Uz9lKzQqdDplLTQqdCxuK3QrMV0sLi4ucl19Y2FzZVwiYm90dG9tXCI6e2xldCByPVtbRS5sZWZ0LFN8fFA/RS50b3ArdDpFLmJvdHRvbV0sW0UucmlnaHQsUz9QP0UudG9wK3Q6RS5ib3R0b206RS50b3ArdF1dO3JldHVybltbUD9lK3QvMjpTP2UrNCp0OmUtNCp0LG4tdF0sW1A/ZS10LzI6Uz9lKzQqdDplLTQqdCxuLXRdLC4uLnJdfWNhc2VcImxlZnRcIjpyZXR1cm5bW098fEk/RS5yaWdodC10OkUubGVmdCxFLnRvcF0sW08/ST9FLnJpZ2h0LXQ6RS5sZWZ0OkUucmlnaHQtdCxFLmJvdHRvbV0sW2UrdCsxLEk/bit0LzI6Tz9uKzQqdDpuLTQqdF0sW2UrdCsxLEk/bi10LzI6Tz9uKzQqdDpuLTQqdF1dO2Nhc2VcInJpZ2h0XCI6e2xldCByPVtbT3x8ST9FLmxlZnQrdDpFLnJpZ2h0LEUudG9wXSxbTz9JP0UubGVmdCt0OkUucmlnaHQ6RS5sZWZ0K3QsRS5ib3R0b21dXTtyZXR1cm5bW2UtdCxJP24rdC8yOk8/bis0KnQ6bi00KnRdLFtlLXQsST9uLXQvMjpPP24rNCp0Om4tNCp0XSwuLi5yXX1kZWZhdWx0OnJldHVybltdfX0oW2Usbl0pKT8hYSYmciYmby5zdGFydCg0MCx5KTp5KCl9fTtyZXR1cm4gYy5fX29wdGlvbnM9e2Jsb2NrUG9pbnRlckV2ZW50czpufSxjfWxldCBpej1pciYmaWU7ZnVuY3Rpb24gaUQoZSx0PXt9KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGV2ZW50czpvLGRhdGFSZWY6YSxlbGVtZW50czppfT1lLHtlbmFibGVkOmw9ITAsdmlzaWJsZU9ubHk6cz0hMH09dCxjPXcudXNlUmVmKCExKSx1PWFkKCksZD13LnVzZVJlZighMCk7dy51c2VFZmZlY3QoKCk9PntpZighbClyZXR1cm47bGV0IGU9YVQoaS5kb21SZWZlcmVuY2UpO2Z1bmN0aW9uIHQoKXshbiYmYU4oaS5kb21SZWZlcmVuY2UpJiZpLmRvbVJlZmVyZW5jZT09PWl5KGl4KGkuZG9tUmVmZXJlbmNlKSkmJihjLmN1cnJlbnQ9ITApfWZ1bmN0aW9uIHIoKXtkLmN1cnJlbnQ9ITB9ZnVuY3Rpb24gbygpe2QuY3VycmVudD0hMX1yZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLHQpLGl6JiYoZS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHIsITApLGUuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsbywhMCkpLCgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLHQpLGl6JiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHIsITApLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsbywhMCkpfX0sW2kuZG9tUmVmZXJlbmNlLG4sbF0pLHcudXNlRWZmZWN0KCgpPT57aWYobClyZXR1cm4gby5vbihcIm9wZW5jaGFuZ2VcIixlKSwoKT0+e28ub2ZmKFwib3BlbmNoYW5nZVwiLGUpfTtmdW5jdGlvbiBlKHtyZWFzb246ZX0peyhcInJlZmVyZW5jZS1wcmVzc1wiPT09ZXx8XCJlc2NhcGUta2V5XCI9PT1lKSYmKGMuY3VycmVudD0hMCl9fSxbbyxsXSk7bGV0IGY9dy51c2VNZW1vKCgpPT4oe29uTW91c2VMZWF2ZSgpe2MuY3VycmVudD0hMX0sb25Gb2N1cyhlKXtpZihjLmN1cnJlbnQpcmV0dXJuO2xldCB0PWliKGUubmF0aXZlRXZlbnQpO2lmKHMmJmFMKHQpKXtpZihpeiYmIWUucmVsYXRlZFRhcmdldCl7aWYoIWQuY3VycmVudCYmIWl3KHQpKXJldHVybn1lbHNlIGlmKCFmdW5jdGlvbihlKXtpZighZXx8aW8pcmV0dXJuITA7dHJ5e3JldHVybiBlLm1hdGNoZXMoXCI6Zm9jdXMtdmlzaWJsZVwiKX1jYXRjaChlKXtyZXR1cm4hMH19KHQpKXJldHVybn1yKCEwLGUubmF0aXZlRXZlbnQsXCJmb2N1c1wiKX0sb25CbHVyKGUpe2MuY3VycmVudD0hMTtsZXQgdD1lLnJlbGF0ZWRUYXJnZXQsbj1lLm5hdGl2ZUV2ZW50LG89YUwodCkmJnQuaGFzQXR0cmlidXRlKGlrKFwiZm9jdXMtZ3VhcmRcIikpJiZcIm91dHNpZGVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YS10eXBlXCIpO3Uuc3RhcnQoMCwoKT0+e2xldCBlPWl5KGkuZG9tUmVmZXJlbmNlP2kuZG9tUmVmZXJlbmNlLm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnQpOyh0fHxlIT09aS5kb21SZWZlcmVuY2UpJiYoaXYoYS5jdXJyZW50LmZsb2F0aW5nQ29udGV4dD8ucmVmcy5mbG9hdGluZy5jdXJyZW50LGUpfHxpdihpLmRvbVJlZmVyZW5jZSxlKXx8b3x8cighMSxuLFwiZm9jdXNcIikpfSl9fSksW2EsaS5kb21SZWZlcmVuY2UscixzLHVdKTtyZXR1cm4gdy51c2VNZW1vKCgpPT5sP3tyZWZlcmVuY2U6Zn06e30sW2wsZl0pfWdsb2JhbFRoaXMucmVxdWVzdEFuaW1hdGlvbkZyYW1lO2xldCBpTD1uZXcgY2xhc3N7Y2FsbGJhY2tzPVtdO2NhbGxiYWNrc0NvdW50PTA7bmV4dElkPTE7c3RhcnRJZD0xO2lzU2NoZWR1bGVkPSExO3RpY2s9ZT0+e3RoaXMuaXNTY2hlZHVsZWQ9ITE7bGV0IHQ9dGhpcy5jYWxsYmFja3Msbj10aGlzLmNhbGxiYWNrc0NvdW50O2lmKHRoaXMuY2FsbGJhY2tzPVtdLHRoaXMuY2FsbGJhY2tzQ291bnQ9MCx0aGlzLnN0YXJ0SWQ9dGhpcy5uZXh0SWQsbj4wKWZvcihsZXQgbj0wO248dC5sZW5ndGg7bis9MSl0W25dPy4oZSl9O3JlcXVlc3QoZSl7bGV0IHQ9dGhpcy5uZXh0SWQ7cmV0dXJuIHRoaXMubmV4dElkKz0xLHRoaXMuY2FsbGJhY2tzLnB1c2goZSksdGhpcy5jYWxsYmFja3NDb3VudCs9MSx0aGlzLmlzU2NoZWR1bGVkfHwocmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudGljayksdGhpcy5pc1NjaGVkdWxlZD0hMCksdH1jYW5jZWwoZSl7bGV0IHQ9ZS10aGlzLnN0YXJ0SWQ7dDwwfHx0Pj10aGlzLmNhbGxiYWNrcy5sZW5ndGh8fCh0aGlzLmNhbGxiYWNrc1t0XT1udWxsLHRoaXMuY2FsbGJhY2tzQ291bnQtPTEpfX07Y2xhc3MgaU57c3RhdGljIGNyZWF0ZSgpe3JldHVybiBuZXcgaU59c3RhdGljIHJlcXVlc3QoZSl7cmV0dXJuIGlMLnJlcXVlc3QoZSl9c3RhdGljIGNhbmNlbChlKXtyZXR1cm4gaUwuY2FuY2VsKGUpfWN1cnJlbnRJZD1udWxsO3JlcXVlc3QoZSl7dGhpcy5jYW5jZWwoKSx0aGlzLmN1cnJlbnRJZD1pTC5yZXF1ZXN0KCgpPT57dGhpcy5jdXJyZW50SWQ9bnVsbCxlKCl9KX1jYW5jZWw9KCk9PntudWxsIT09dGhpcy5jdXJyZW50SWQmJihpTC5jYW5jZWwodGhpcy5jdXJyZW50SWQpLHRoaXMuY3VycmVudElkPW51bGwpfTtkaXNwb3NlRWZmZWN0PSgpPT50aGlzLmNhbmNlbH1mdW5jdGlvbiBpUigpe2xldCBlPWFsKGlOLmNyZWF0ZSkuY3VycmVudDtyZXR1cm4gYWMoZS5kaXNwb3NlRWZmZWN0KSxlfWxldCBpTT17c3R5bGU6e3RyYW5zaXRpb246XCJub25lXCJ9fSxpWj17fSxpVT1bXSxpRj17ZmFsbGJhY2tBeGlzU2lkZTpcIm5vbmVcIn0saXE9e2ZhbGxiYWNrQXhpc1NpZGU6XCJlbmRcIn0saUg9e2ludGVudGlvbmFsOlwib25DbGlja1wiLHNsb3BweTpcIm9uUG9pbnRlckRvd25cIn07ZnVuY3Rpb24gaVYoZSl7cmV0dXJue2VzY2FwZUtleTpcImJvb2xlYW5cIj09dHlwZW9mIGU/ZTplPy5lc2NhcGVLZXk/PyExLG91dHNpZGVQcmVzczpcImJvb2xlYW5cIj09dHlwZW9mIGU/ZTplPy5vdXRzaWRlUHJlc3M/PyEwfX1mdW5jdGlvbiBpJChlLHQ9e30pe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZWxlbWVudHM6byxkYXRhUmVmOmF9PWUse2VuYWJsZWQ6aT0hMCxlc2NhcGVLZXk6bD0hMCxvdXRzaWRlUHJlc3M6cz0hMCxvdXRzaWRlUHJlc3NFdmVudDpjPVwic2xvcHB5XCIscmVmZXJlbmNlUHJlc3M6dT0hMSxyZWZlcmVuY2VQcmVzc0V2ZW50OmQ9XCJzbG9wcHlcIixhbmNlc3RvclNjcm9sbDpmPSExLGJ1YmJsZXM6cCxjYXB0dXJlOmh9PXQsbT1haigpLGc9YWgoXCJmdW5jdGlvblwiPT10eXBlb2Ygcz9zOigpPT4hMSkseT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzP2c6cyx2PXcudXNlUmVmKCExKSx7ZXNjYXBlS2V5OmIsb3V0c2lkZVByZXNzOkF9PWlWKHApLHtlc2NhcGVLZXk6eCxvdXRzaWRlUHJlc3M6Q309aVYoaCksXz13LnVzZVJlZihudWxsKSxrPWFkKCksRT1hZCgpLGo9dy51c2VSZWYoITEpLFM9dy51c2VSZWYoXCJcIiksTz1haChlPT57Uy5jdXJyZW50PWUucG9pbnRlclR5cGV9KSxCPWFoKCgpPT57bGV0IGU9Uy5jdXJyZW50O3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBjP2M6Y1tcInBlblwiIT09ZSYmZT9lOlwibW91c2VcIl19KSxQPWFoKGU9PntpZighbnx8IWl8fCFsfHxcIkVzY2FwZVwiIT09ZS5rZXl8fGouY3VycmVudClyZXR1cm47bGV0IHQ9YS5jdXJyZW50LmZsb2F0aW5nQ29udGV4dD8ubm9kZUlkLG89bT9pQihtLm5vZGVzUmVmLmN1cnJlbnQsdCk6W107aWYoIWImJihlLnN0b3BQcm9wYWdhdGlvbigpLG8ubGVuZ3RoPjApKXtsZXQgZT0hMDtpZihvLmZvckVhY2godD0+e3QuY29udGV4dD8ub3BlbiYmIXQuY29udGV4dC5kYXRhUmVmLmN1cnJlbnQuX19lc2NhcGVLZXlCdWJibGVzJiYoZT0hMSl9KSwhZSlyZXR1cm59cighMSxcIm5hdGl2ZUV2ZW50XCJpbiBlP2UubmF0aXZlRXZlbnQ6ZSxcImVzY2FwZS1rZXlcIil9KSxJPWFoKGU9PntsZXQgdD1CKCk7cmV0dXJuXCJpbnRlbnRpb25hbFwiPT09dCYmXCJjbGlja1wiIT09ZS50eXBlfHxcInNsb3BweVwiPT09dCYmXCJjbGlja1wiPT09ZS50eXBlfSksVD1haChlPT57bGV0IHQ9KCk9PntQKGUpLGliKGUpPy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHQpfTtpYihlKT8uYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix0KX0pLHo9YWgoZT0+e2lmKEkoZSkpcmV0dXJuO2xldCB0PWEuY3VycmVudC5pbnNpZGVSZWFjdFRyZWU7YS5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMTtsZXQgbj12LmN1cnJlbnQ7aWYodi5jdXJyZW50PSExLFwiaW50ZW50aW9uYWxcIj09PUIoKSYmbnx8dHx8XCJmdW5jdGlvblwiPT10eXBlb2YgeSYmIXkoZSkpcmV0dXJuO2xldCBpPWliKGUpLGw9YFske2lrKFwiaW5lcnRcIil9XWAscz1peChvLmZsb2F0aW5nKS5xdWVyeVNlbGVjdG9yQWxsKGwpLGM9YUwoaSk/aTpudWxsO2Zvcig7YyYmIWFYKGMpOyl7bGV0IGU9YUooYyk7aWYoYVgoZSl8fCFhTChlKSlicmVhaztjPWV9aWYocy5sZW5ndGgmJmFMKGkpJiYhaS5tYXRjaGVzKFwiaHRtbCxib2R5XCIpJiYhaXYoaSxvLmZsb2F0aW5nKSYmQXJyYXkuZnJvbShzKS5ldmVyeShlPT4haXYoYyxlKSkpcmV0dXJuO2lmKGFOKGkpKXtsZXQgdD1hWChpKSxuPWFHKGkpLHI9L2F1dG98c2Nyb2xsLyxvPXR8fHIudGVzdChuLm92ZXJmbG93WCksYT10fHxyLnRlc3Qobi5vdmVyZmxvd1kpLGw9byYmaS5jbGllbnRXaWR0aD4wJiZpLnNjcm9sbFdpZHRoPmkuY2xpZW50V2lkdGgscz1hJiZpLmNsaWVudEhlaWdodD4wJiZpLnNjcm9sbEhlaWdodD5pLmNsaWVudEhlaWdodCxjPVwicnRsXCI9PT1uLmRpcmVjdGlvbix1PXMmJihjP2Uub2Zmc2V0WDw9aS5vZmZzZXRXaWR0aC1pLmNsaWVudFdpZHRoOmUub2Zmc2V0WD5pLmNsaWVudFdpZHRoKSxkPWwmJmUub2Zmc2V0WT5pLmNsaWVudEhlaWdodDtpZih1fHxkKXJldHVybn1sZXQgdT1hLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0Py5ub2RlSWQsZD1tJiZpQihtLm5vZGVzUmVmLmN1cnJlbnQsdSkuc29tZSh0PT5pQShlLHQuY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcpKTtpZihpQShlLG8uZmxvYXRpbmcpfHxpQShlLG8uZG9tUmVmZXJlbmNlKXx8ZClyZXR1cm47bGV0IGY9bT9pQihtLm5vZGVzUmVmLmN1cnJlbnQsdSk6W107aWYoZi5sZW5ndGg+MCl7bGV0IGU9ITA7aWYoZi5mb3JFYWNoKHQ9Pnt0LmNvbnRleHQ/Lm9wZW4mJiF0LmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcyYmKGU9ITEpfSksIWUpcmV0dXJufXIoITEsZSxcIm91dHNpZGUtcHJlc3NcIil9KSxEPWFoKGU9PntpZighKFwic2xvcHB5XCIhPT1CKCl8fCFufHwhaXx8aUEoZSxvLmZsb2F0aW5nKXx8aUEoZSxvLmRvbVJlZmVyZW5jZSkpKXtpZihcInRvdWNoXCI9PT1lLnBvaW50ZXJUeXBlKXtfLmN1cnJlbnQ9e3N0YXJ0VGltZTpEYXRlLm5vdygpLHN0YXJ0WDplLmNsaWVudFgsc3RhcnRZOmUuY2xpZW50WSxkaXNtaXNzT25Qb2ludGVyVXA6ITEsZGlzbWlzc09uTW91c2VEb3duOiEwfSxrLnN0YXJ0KDFlMywoKT0+e18uY3VycmVudCYmKF8uY3VycmVudC5kaXNtaXNzT25Qb2ludGVyVXA9ITEsXy5jdXJyZW50LmRpc21pc3NPbk1vdXNlRG93bj0hMSl9KTtyZXR1cm59eihlKX19KSxMPWFoKGU9PntpZihJKGUpfHwoay5jbGVhcigpLFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJl8uY3VycmVudCYmIV8uY3VycmVudC5kaXNtaXNzT25Nb3VzZURvd24pKXJldHVybjtsZXQgdD0oKT0+e1wicG9pbnRlcmRvd25cIj09PWUudHlwZT9EKGUpOnooZSksaWIoZSk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLHQpfTtpYihlKT8uYWRkRXZlbnRMaXN0ZW5lcihlLnR5cGUsdCl9KSxOPWFoKGU9PntpZihcInNsb3BweVwiIT09QigpfHxcInRvdWNoXCIhPT1lLnBvaW50ZXJUeXBlfHwhXy5jdXJyZW50fHxpQShlLG8uZmxvYXRpbmcpfHxpQShlLG8uZG9tUmVmZXJlbmNlKSlyZXR1cm47bGV0IHQ9TWF0aC5hYnMoZS5jbGllbnRYLV8uY3VycmVudC5zdGFydFgpLG49TWF0aC5hYnMoZS5jbGllbnRZLV8uY3VycmVudC5zdGFydFkpLHI9TWF0aC5zcXJ0KHQqdCtuKm4pO3I+NSYmKF8uY3VycmVudC5kaXNtaXNzT25Qb2ludGVyVXA9ITApLHI+MTAmJih6KGUpLGsuY2xlYXIoKSxfLmN1cnJlbnQ9bnVsbCl9KSxSPWFoKGU9PntcInNsb3BweVwiIT09QigpfHxcInRvdWNoXCIhPT1lLnBvaW50ZXJUeXBlfHwhXy5jdXJyZW50fHxpQShlLG8uZmxvYXRpbmcpfHxpQShlLG8uZG9tUmVmZXJlbmNlKXx8KF8uY3VycmVudC5kaXNtaXNzT25Qb2ludGVyVXAmJnooZSksay5jbGVhcigpLF8uY3VycmVudD1udWxsKX0pO3cudXNlRWZmZWN0KCgpPT57aWYoIW58fCFpKXJldHVybjthLmN1cnJlbnQuX19lc2NhcGVLZXlCdWJibGVzPWIsYS5jdXJyZW50Ll9fb3V0c2lkZVByZXNzQnViYmxlcz1BO2xldCBlPW5ldyBhdTtmdW5jdGlvbiB0KGUpe3IoITEsZSxcImFuY2VzdG9yLXNjcm9sbFwiKX1mdW5jdGlvbiBzKCl7ZS5jbGVhcigpLGouY3VycmVudD0hMH1mdW5jdGlvbiBjKCl7ZS5zdGFydCg1KiEhYVkoKSwoKT0+e2ouY3VycmVudD0hMX0pfWxldCB1PWl4KG8uZmxvYXRpbmcpO3UuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsTywhMCksbCYmKHUuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix4P1Q6UCx4KSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbnN0YXJ0XCIscyksdS5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25lbmRcIixjKSkseSYmKHUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsQz9MOnosQyksdS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixDP0w6eixDKSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLE4sQyksdS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIsUixDKSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLEMpKTtsZXQgZD1bXTtyZXR1cm4gZiYmKGFMKG8uZG9tUmVmZXJlbmNlKSYmKGQ9YTAoby5kb21SZWZlcmVuY2UpKSxhTChvLmZsb2F0aW5nKSYmKGQ9ZC5jb25jYXQoYTAoby5mbG9hdGluZykpKSwhYUwoby5yZWZlcmVuY2UpJiZvLnJlZmVyZW5jZSYmby5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQmJihkPWQuY29uY2F0KGEwKG8ucmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSkpKSwoZD1kLmZpbHRlcihlPT5lIT09dS5kZWZhdWx0Vmlldz8udmlzdWFsVmlld3BvcnQpKS5mb3JFYWNoKGU9PntlLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIix0LHtwYXNzaXZlOiEwfSl9KSwoKT0+e3UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsTywhMCksbCYmKHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix4P1Q6UCx4KSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbnN0YXJ0XCIscyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25lbmRcIixjKSkseSYmKHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsQz9MOnosQyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixDP0w6eixDKSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLE4sQyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIsUixDKSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixMLEMpKSxkLmZvckVhY2goZT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQpfSksZS5jbGVhcigpfX0sW2EsbyxsLHksYyxuLHIsZixpLGIsQSxQLHgsVCx6LEMsTCxELE4sUixPXSksdy51c2VFZmZlY3QoKCk9PnthLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSExfSxbYSx5XSk7bGV0IE09dy51c2VNZW1vKCgpPT4oe29uS2V5RG93bjpQLC4uLnUmJntbaUhbZF1dOmU9PntyKCExLGUubmF0aXZlRXZlbnQsXCJyZWZlcmVuY2UtcHJlc3NcIil9LC4uLlwiaW50ZW50aW9uYWxcIiE9PWQmJntvbkNsaWNrKGUpe3IoITEsZS5uYXRpdmVFdmVudCxcInJlZmVyZW5jZS1wcmVzc1wiKX19fX0pLFtQLHIsdSxkXSksWj1haChlPT57bGV0IHQ9aWIoZS5uYXRpdmVFdmVudCk7aXYoby5mbG9hdGluZyx0KSYmKHYuY3VycmVudD0hMCl9KSxVPWFoKCgpPT57YS5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMCxFLnN0YXJ0KDAsKCk9PnthLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSExfSl9KSxGPXcudXNlTWVtbygoKT0+KHtvbktleURvd246UCxvbk1vdXNlRG93bjpaLG9uTW91c2VVcDpaLG9uUG9pbnRlckRvd25DYXB0dXJlOlUsb25Nb3VzZURvd25DYXB0dXJlOlUsb25DbGlja0NhcHR1cmU6VX0pLFtQLFosVV0pO3JldHVybiB3LnVzZU1lbW8oKCk9Pmk/e3JlZmVyZW5jZTpNLGZsb2F0aW5nOkZ9Ont9LFtpLE0sRl0pfWxldCBpVz1uZXcgTWFwKFtbXCJzZWxlY3RcIixcImxpc3Rib3hcIl0sW1wiY29tYm9ib3hcIixcImxpc3Rib3hcIl0sW1wibGFiZWxcIiwhMV1dKSxpWT1bXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIixcImxlZnRcIl0saUs9TWF0aC5taW4saVg9TWF0aC5tYXgsaUc9TWF0aC5yb3VuZCxpUT1NYXRoLmZsb29yLGlKPWU9Pih7eDplLHk6ZX0pLGkwPXtsZWZ0OlwicmlnaHRcIixyaWdodDpcImxlZnRcIixib3R0b206XCJ0b3BcIix0b3A6XCJib3R0b21cIn0saTE9e3N0YXJ0OlwiZW5kXCIsZW5kOlwic3RhcnRcIn07ZnVuY3Rpb24gaTIoZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UodCk6ZX1mdW5jdGlvbiBpNChlKXtyZXR1cm4gZS5zcGxpdChcIi1cIilbMF19ZnVuY3Rpb24gaTUoZSl7cmV0dXJuIGUuc3BsaXQoXCItXCIpWzFdfWZ1bmN0aW9uIGkzKGUpe3JldHVyblwieFwiPT09ZT9cInlcIjpcInhcIn1mdW5jdGlvbiBpNihlKXtyZXR1cm5cInlcIj09PWU/XCJoZWlnaHRcIjpcIndpZHRoXCJ9bGV0IGk5PW5ldyBTZXQoW1widG9wXCIsXCJib3R0b21cIl0pO2Z1bmN0aW9uIGk4KGUpe3JldHVybiBpOS5oYXMoaTQoZSkpP1wieVwiOlwieFwifWZ1bmN0aW9uIGk3KGUpe3JldHVybiBlLnJlcGxhY2UoL3N0YXJ0fGVuZC9nLGU9PmkxW2VdKX1sZXQgbGU9W1wibGVmdFwiLFwicmlnaHRcIl0sbHQ9W1wicmlnaHRcIixcImxlZnRcIl0sbG49W1widG9wXCIsXCJib3R0b21cIl0sbHI9W1wiYm90dG9tXCIsXCJ0b3BcIl07ZnVuY3Rpb24gbG8oZSl7cmV0dXJuIGUucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csZT0+aTBbZV0pfWZ1bmN0aW9uIGxhKGUpe3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiBlP3t0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCwuLi5lfTp7dG9wOmUscmlnaHQ6ZSxib3R0b206ZSxsZWZ0OmV9fWZ1bmN0aW9uIGxpKGUpe2xldHt4OnQseTpuLHdpZHRoOnIsaGVpZ2h0Om99PWU7cmV0dXJue3dpZHRoOnIsaGVpZ2h0Om8sdG9wOm4sbGVmdDp0LHJpZ2h0OnQrcixib3R0b206bitvLHg6dCx5Om59fWZ1bmN0aW9uIGxsKGUsdCxuKXtyZXR1cm4gTWF0aC5mbG9vcihlL3QpIT09bn1mdW5jdGlvbiBscyhlLHQpe3JldHVybiB0PDB8fHQ+PWUuY3VycmVudC5sZW5ndGh9ZnVuY3Rpb24gbGMoZSx0KXtyZXR1cm4gbGQoZSx7ZGlzYWJsZWRJbmRpY2VzOnR9KX1mdW5jdGlvbiBsdShlLHQpe3JldHVybiBsZChlLHtkZWNyZW1lbnQ6ITAsc3RhcnRpbmdJbmRleDplLmN1cnJlbnQubGVuZ3RoLGRpc2FibGVkSW5kaWNlczp0fSl9ZnVuY3Rpb24gbGQoZSx7c3RhcnRpbmdJbmRleDp0PS0xLGRlY3JlbWVudDpuPSExLGRpc2FibGVkSW5kaWNlczpyLGFtb3VudDpvPTF9PXt9KXtsZXQgYT10O2RvIGErPW4/LW86bzt3aGlsZShhPj0wJiZhPD1lLmN1cnJlbnQubGVuZ3RoLTEmJmxmKGUsYSxyKSk7cmV0dXJuIGF9ZnVuY3Rpb24gbGYoZSx0LG4pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pcmV0dXJuIG4odCk7aWYobilyZXR1cm4gbi5pbmNsdWRlcyh0KTtsZXQgcj1lLmN1cnJlbnRbdF07cmV0dXJuIG51bGw9PXJ8fHIuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIil8fFwidHJ1ZVwiPT09ci5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpfWxldCBscD0wO2Z1bmN0aW9uIGxoKGUsdD17fSl7bGV0e3ByZXZlbnRTY3JvbGw6bj0hMSxjYW5jZWxQcmV2aW91czpyPSEwLHN5bmM6bz0hMX09dDtyJiZjYW5jZWxBbmltYXRpb25GcmFtZShscCk7bGV0IGE9KCk9PmU/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOm59KTtvP2EoKTpscD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSl9ZnVuY3Rpb24gbG0oZSx0LG4pe3N3aXRjaChlKXtjYXNlXCJ2ZXJ0aWNhbFwiOnJldHVybiB0O2Nhc2VcImhvcml6b250YWxcIjpyZXR1cm4gbjtkZWZhdWx0OnJldHVybiB0fHxufX1mdW5jdGlvbiBsZyhlLHQpe3JldHVybiBsbSh0LGU9PT1pbXx8ZT09PWlnLGU9PT1pcHx8ZT09PWloKX1mdW5jdGlvbiBseShlLHQsbil7cmV0dXJuIGxtKHQsZT09PWlnLG4/ZT09PWlwOmU9PT1paCl8fFwiRW50ZXJcIj09PWV8fFwiIFwiPT09ZXx8XCJcIj09PWV9ZnVuY3Rpb24gbHYoZT1bXSl7bGV0IHQ9ZS5tYXAoZT0+ZT8ucmVmZXJlbmNlKSxuPWUubWFwKGU9PmU/LmZsb2F0aW5nKSxyPWUubWFwKGU9PmU/Lml0ZW0pLG89dy51c2VDYWxsYmFjayh0PT5sYih0LGUsXCJyZWZlcmVuY2VcIiksdCksYT13LnVzZUNhbGxiYWNrKHQ9PmxiKHQsZSxcImZsb2F0aW5nXCIpLG4pLGk9dy51c2VDYWxsYmFjayh0PT5sYih0LGUsXCJpdGVtXCIpLHIpO3JldHVybiB3LnVzZU1lbW8oKCk9Pih7Z2V0UmVmZXJlbmNlUHJvcHM6byxnZXRGbG9hdGluZ1Byb3BzOmEsZ2V0SXRlbVByb3BzOml9KSxbbyxhLGldKX1mdW5jdGlvbiBsYihlLHQsbil7bGV0IHI9bmV3IE1hcCxvPVwiaXRlbVwiPT09bixhPXt9O2ZvcihsZXQgdCBpblwiZmxvYXRpbmdcIj09PW4mJihhLnRhYkluZGV4PS0xLGFbaWNdPVwiXCIpLGUpbyYmZSYmKHQ9PT1pdXx8dD09PWlkKXx8KGFbdF09ZVt0XSk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz0xKXtsZXQgbCxzPXRbaV0/LltuXTsobD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzP2U/cyhlKTpudWxsOnMpJiZsQShhLGwsbyxyKX1yZXR1cm4gbEEoYSxlLG8sciksYX1mdW5jdGlvbiBsQShlLHQsbixyKXtmb3IobGV0IG8gaW4gdCl7bGV0IGE9dFtvXTtuJiYobz09PWl1fHxvPT09aWQpfHwoby5zdGFydHNXaXRoKFwib25cIik/KHIuaGFzKG8pfHxyLnNldChvLFtdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiYoci5nZXQobyk/LnB1c2goYSksZVtvXT0oLi4uZSk9PnIuZ2V0KG8pPy5tYXAodD0+dCguLi5lKSkuZmluZChlPT52b2lkIDAhPT1lKSkpOmVbb109YSl9fWxldCBseD13LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBsdyhlKXtsZXQgdD13LnVzZUNvbnRleHQobHgpO2lmKHZvaWQgMD09PXQmJiFlKXRocm93IEVycm9yKFwiQmFzZSBVSTogTWVudVJvb3RDb250ZXh0IGlzIG1pc3NpbmcuIE1lbnUgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxNZW51LlJvb3Q+LlwiKTtyZXR1cm4gdH1sZXQgbEM9dy5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIGxfKGUsdD0hMSxuPSExKXtsZXRbcixvXT13LnVzZVN0YXRlKGUmJnQ/XCJpZGxlXCI6dm9pZCAwKSxbYSxpXT13LnVzZVN0YXRlKGUpO3JldHVybiBlJiYhYSYmKGkoITApLG8oXCJzdGFydGluZ1wiKSksZXx8IWF8fFwiZW5kaW5nXCI9PT1yfHxufHxvKFwiZW5kaW5nXCIpLGV8fGF8fFwiZW5kaW5nXCIhPT1yfHxvKHZvaWQgMCksYUMoKCk9PntpZighZSYmYSYmXCJlbmRpbmdcIiE9PXImJm4pe2xldCBlPWlOLnJlcXVlc3QoKCk9PntvKFwiZW5kaW5nXCIpfSk7cmV0dXJuKCk9PntpTi5jYW5jZWwoZSl9fX0sW2UsYSxyLG5dKSxhQygoKT0+e2lmKCFlfHx0KXJldHVybjtsZXQgbj1pTi5yZXF1ZXN0KCgpPT57ZWguZmx1c2hTeW5jKCgpPT57byh2b2lkIDApfSl9KTtyZXR1cm4oKT0+e2lOLmNhbmNlbChuKX19LFt0LGVdKSxhQygoKT0+e2lmKCFlfHwhdClyZXR1cm47ZSYmYSYmXCJpZGxlXCIhPT1yJiZvKFwic3RhcnRpbmdcIik7bGV0IG49aU4ucmVxdWVzdCgoKT0+e28oXCJpZGxlXCIpfSk7cmV0dXJuKCk9PntpTi5jYW5jZWwobil9fSxbdCxlLGEsbyxyXSksdy51c2VNZW1vKCgpPT4oe21vdW50ZWQ6YSxzZXRNb3VudGVkOmksdHJhbnNpdGlvblN0YXR1czpyfSksW2Escl0pfWZ1bmN0aW9uIGxrKGUpe2xldHtlbmFibGVkOnQ9ITAsb3BlbjpuLHJlZjpyLG9uQ29tcGxldGU6b309ZSxhPWEyKG4pLGk9YWgobyksbD1mdW5jdGlvbihlLHQ9ITEpe2xldCBuPWlSKCk7cmV0dXJuIGFoKChyLG89bnVsbCk9PntsZXQgYTtpZihuLmNhbmNlbCgpLG51bGwhPWUpe2lmKFwiY3VycmVudFwiaW4gZSl7aWYobnVsbD09ZS5jdXJyZW50KXJldHVybjthPWUuY3VycmVudH1lbHNlIGE9ZTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmdldEFuaW1hdGlvbnN8fGdsb2JhbFRoaXMuQkFTRV9VSV9BTklNQVRJT05TX0RJU0FCTEVEP3IoKTpuLnJlcXVlc3QoKCk9PntmdW5jdGlvbiBlKCl7YSYmUHJvbWlzZS5hbGxTZXR0bGVkKGEuZ2V0QW5pbWF0aW9ucygpLm1hcChlPT5lLmZpbmlzaGVkKSkudGhlbigoKT0+e251bGwhPW8mJm8uYWJvcnRlZHx8ZWguZmx1c2hTeW5jKHIpfSl9dD9uLnJlcXVlc3QoZSk6ZSgpfSl9fSl9KHIsbik7dy51c2VFZmZlY3QoKCk9Pnt0JiZsKCgpPT57bj09PWEuY3VycmVudCYmaSgpfSl9LFt0LG4saSxsLGFdKX1sZXQgbEU9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gbGooZT0hMCl7bGV0IHQ9dy51c2VDb250ZXh0KGxFKTtpZih2b2lkIDA9PT10JiYhZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IERpcmVjdGlvbkNvbnRleHQgaXMgbWlzc2luZy5cIik7cmV0dXJuIHQ/LmRpcmVjdGlvbj8/XCJsdHJcIn1mdW5jdGlvbiBsUyhlKXtyZXR1cm4gZT8ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnR9bGV0IGxPPSgpPT57fSxsQj17fSxsUD17fSxsST1cIlwiO2NsYXNzIGxUe2xvY2tDb3VudD0wO3Jlc3RvcmU9bnVsbDt0aW1lb3V0TG9jaz1hdS5jcmVhdGUoKTt0aW1lb3V0VW5sb2NrPWF1LmNyZWF0ZSgpO2FjcXVpcmUoZSl7cmV0dXJuIHRoaXMubG9ja0NvdW50Kz0xLDE9PT10aGlzLmxvY2tDb3VudCYmbnVsbD09PXRoaXMucmVzdG9yZSYmdGhpcy50aW1lb3V0TG9jay5zdGFydCgwLCgpPT50aGlzLmxvY2soZSkpLHRoaXMucmVsZWFzZX1yZWxlYXNlPSgpPT57dGhpcy5sb2NrQ291bnQtPTEsMD09PXRoaXMubG9ja0NvdW50JiZ0aGlzLnJlc3RvcmUmJnRoaXMudGltZW91dFVubG9jay5zdGFydCgwLHRoaXMudW5sb2NrKX07dW5sb2NrPSgpPT57MD09PXRoaXMubG9ja0NvdW50JiZ0aGlzLnJlc3RvcmUmJih0aGlzLnJlc3RvcmU/LigpLHRoaXMucmVzdG9yZT1udWxsKX07bG9jayhlKXtpZigwPT09dGhpcy5sb2NrQ291bnR8fG51bGwhPT10aGlzLnJlc3RvcmUpcmV0dXJuO2xldCB0PWxTKGUpLmRvY3VtZW50RWxlbWVudCxuPWFUKHQpLmdldENvbXB1dGVkU3R5bGUodCkub3ZlcmZsb3dZO2lmKFwiaGlkZGVuXCI9PT1ufHxcImNsaXBcIj09PW4pe3RoaXMucmVzdG9yZT1sTztyZXR1cm59bGV0IHI9YTd8fCFmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQpcmV0dXJuITE7bGV0IHQ9bFMoZSk7cmV0dXJuIGFUKHQpLmlubmVyV2lkdGgtdC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg+MH0oZSk7dGhpcy5yZXN0b3JlPXI/ZnVuY3Rpb24oZSl7bGV0IHQ9bFMoZSkuZG9jdW1lbnRFbGVtZW50LG49dC5zdHlsZS5vdmVyZmxvdztyZXR1cm4gdC5zdHlsZS5vdmVyZmxvdz1cImhpZGRlblwiLCgpPT57dC5zdHlsZS5vdmVyZmxvdz1ufX0oZSk6ZnVuY3Rpb24oZSl7bGV0IHQ9bFMoZSksbj10LmRvY3VtZW50RWxlbWVudCxyPXQuYm9keSxvPWFUKG4pLGE9MCxpPTAsbD1pTi5jcmVhdGUoKTtpZihhOCYmKG8udmlzdWFsVmlld3BvcnQ/LnNjYWxlPz8xKSE9PTEpcmV0dXJuKCk9Pnt9O2Z1bmN0aW9uIHMoKXtsZXQgZT1vLmdldENvbXB1dGVkU3R5bGUobiksdD1vLmdldENvbXB1dGVkU3R5bGUocik7YT1uLnNjcm9sbFRvcCxpPW4uc2Nyb2xsTGVmdCxsQj17c2Nyb2xsYmFyR3V0dGVyOm4uc3R5bGUuc2Nyb2xsYmFyR3V0dGVyLG92ZXJmbG93WTpuLnN0eWxlLm92ZXJmbG93WSxvdmVyZmxvd1g6bi5zdHlsZS5vdmVyZmxvd1h9LGxJPW4uc3R5bGUuc2Nyb2xsQmVoYXZpb3IsbFA9e3Bvc2l0aW9uOnIuc3R5bGUucG9zaXRpb24saGVpZ2h0OnIuc3R5bGUuaGVpZ2h0LHdpZHRoOnIuc3R5bGUud2lkdGgsYm94U2l6aW5nOnIuc3R5bGUuYm94U2l6aW5nLG92ZXJmbG93WTpyLnN0eWxlLm92ZXJmbG93WSxvdmVyZmxvd1g6ci5zdHlsZS5vdmVyZmxvd1gsc2Nyb2xsQmVoYXZpb3I6ci5zdHlsZS5zY3JvbGxCZWhhdmlvcn07bGV0IGw9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIENTUyYmQ1NTLnN1cHBvcnRzPy4oXCJzY3JvbGxiYXItZ3V0dGVyXCIsXCJzdGFibGVcIikscz1uLnNjcm9sbEhlaWdodD5uLmNsaWVudEhlaWdodCxjPW4uc2Nyb2xsV2lkdGg+bi5jbGllbnRXaWR0aCx1PVwic2Nyb2xsXCI9PT1lLm92ZXJmbG93WXx8XCJzY3JvbGxcIj09PXQub3ZlcmZsb3dZLGQ9XCJzY3JvbGxcIj09PWUub3ZlcmZsb3dYfHxcInNjcm9sbFwiPT09dC5vdmVyZmxvd1gsZj1NYXRoLm1heCgwLG8uaW5uZXJXaWR0aC1uLmNsaWVudFdpZHRoKSxwPU1hdGgubWF4KDAsby5pbm5lckhlaWdodC1uLmNsaWVudEhlaWdodCksaD1wYXJzZUZsb2F0KHQubWFyZ2luVG9wKStwYXJzZUZsb2F0KHQubWFyZ2luQm90dG9tKSxtPXBhcnNlRmxvYXQodC5tYXJnaW5MZWZ0KStwYXJzZUZsb2F0KHQubWFyZ2luUmlnaHQpO09iamVjdC5hc3NpZ24obi5zdHlsZSx7c2Nyb2xsYmFyR3V0dGVyOlwic3RhYmxlXCIsb3ZlcmZsb3dZOiFsJiYoc3x8dSk/XCJzY3JvbGxcIjpcImhpZGRlblwiLG92ZXJmbG93WDohbCYmKGN8fGQpP1wic2Nyb2xsXCI6XCJoaWRkZW5cIn0pLE9iamVjdC5hc3NpZ24oci5zdHlsZSx7cG9zaXRpb246XCJyZWxhdGl2ZVwiLGhlaWdodDpofHxwP2BjYWxjKDEwMGR2aCAtICR7aCtwfXB4KWA6XCIxMDBkdmhcIix3aWR0aDptfHxmP2BjYWxjKDEwMHZ3IC0gJHttK2Z9cHgpYDpcIjEwMHZ3XCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLG92ZXJmbG93OlwiaGlkZGVuXCIsc2Nyb2xsQmVoYXZpb3I6XCJ1bnNldFwifSksci5zY3JvbGxUb3A9YSxyLnNjcm9sbExlZnQ9aSxuLnNldEF0dHJpYnV0ZShcImRhdGEtYmFzZS11aS1zY3JvbGwtbG9ja2VkXCIsXCJcIiksbi5zdHlsZS5zY3JvbGxCZWhhdmlvcj1cInVuc2V0XCJ9ZnVuY3Rpb24gYygpe09iamVjdC5hc3NpZ24obi5zdHlsZSxsQiksT2JqZWN0LmFzc2lnbihyLnN0eWxlLGxQKSxuLnNjcm9sbFRvcD1hLG4uc2Nyb2xsTGVmdD1pLG4ucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1iYXNlLXVpLXNjcm9sbC1sb2NrZWRcIiksbi5zdHlsZS5zY3JvbGxCZWhhdmlvcj1sSX1mdW5jdGlvbiB1KCl7YygpLGwucmVxdWVzdChzKX1yZXR1cm4gcygpLG8uYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHUpLCgpPT57bC5jYW5jZWwoKSxjKCksby5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdSl9fShlKX19bGV0IGx6PW5ldyBsVDtmdW5jdGlvbiBsRChlKXtpZihlKXJldHVybih7XCJmb2N1cy1vdXRcIjpcImZvY3VzLW91dFwiLFwiZXNjYXBlLWtleVwiOlwiZXNjYXBlLWtleVwiLFwib3V0c2lkZS1wcmVzc1wiOlwib3V0c2lkZS1wcmVzc1wiLFwibGlzdC1uYXZpZ2F0aW9uXCI6XCJsaXN0LW5hdmlnYXRpb25cIixjbGljazpcInRyaWdnZXItcHJlc3NcIixob3ZlcjpcInRyaWdnZXItaG92ZXJcIixmb2N1czpcInRyaWdnZXItZm9jdXNcIixcInJlZmVyZW5jZS1wcmVzc1wiOlwidHJpZ2dlci1wcmVzc1wiLFwic2FmZS1wb2x5Z29uXCI6XCJ0cmlnZ2VyLWhvdmVyXCIsXCJhbmNlc3Rvci1zY3JvbGxcIjp2b2lkIDB9KVtlXX1sZXQgbEw9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gbE4oZT0hMCl7bGV0IHQ9dy51c2VDb250ZXh0KGxMKTtpZih2b2lkIDA9PT10JiYhZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IENvbnRleHRNZW51Um9vdENvbnRleHQgaXMgbWlzc2luZy4gQ29udGV4dE1lbnUgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxDb250ZXh0TWVudS5Sb290Pi5cIik7cmV0dXJuIHR9bGV0IGxSPXcuY3JlYXRlQ29udGV4dCghMSk7ZnVuY3Rpb24gbE0oZSx0KXtyZXR1cm4gZSYmIXQ/ZTohZSYmdD90OmV8fHQ/ey4uLmUsLi4udH06dm9pZCAwfWxldCBsWj17fTtmdW5jdGlvbiBsVShlLHQsbixyLG8pe2xldCBhPXsuLi5sSChlLGxaKX07cmV0dXJuIHQmJihhPWxGKGEsdCkpLG4mJihhPWxGKGEsbikpLHImJihhPWxGKGEscikpLG8mJihhPWxGKGEsbykpLGF9ZnVuY3Rpb24gbEYoZSx0KXtyZXR1cm4gbHEodCk/dChlKTpmdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBlO2ZvcihsZXQgbiBpbiB0KXtsZXQgcj10W25dO3N3aXRjaChuKXtjYXNlXCJzdHlsZVwiOmVbbl09bE0oZS5zdHlsZSxyKTticmVhaztjYXNlXCJjbGFzc05hbWVcIjplW25dPWwkKGUuY2xhc3NOYW1lLHIpO2JyZWFrO2RlZmF1bHQ6IWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5jaGFyQ29kZUF0KDApLHI9ZS5jaGFyQ29kZUF0KDEpLG89ZS5jaGFyQ29kZUF0KDIpO3JldHVybiAxMTE9PT1uJiYxMTA9PT1yJiZvPj02NSYmbzw9OTAmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fHx2b2lkIDA9PT10KX0obixyKT9lW25dPXI6ZVtuXT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2U/bj0+e3ZhciByO2lmKG51bGwhPShyPW4pJiZcIm9iamVjdFwiPT10eXBlb2YgciYmXCJuYXRpdmVFdmVudFwiaW4gcil7bFYobik7bGV0IHI9dChuKTtyZXR1cm4gbi5iYXNlVUlIYW5kbGVyUHJldmVudGVkfHxlPy4obikscn1sZXQgbz10KG4pO3JldHVybiBlPy4obiksb306dDplfShlW25dLHIpfX1yZXR1cm4gZX0oZSx0KX1mdW5jdGlvbiBscShlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGxIKGUsdCl7cmV0dXJuIGxxKGUpP2UodCk6ZT8/bFp9ZnVuY3Rpb24gbFYoZSl7cmV0dXJuIGUucHJldmVudEJhc2VVSUhhbmRsZXI9KCk9PntlLmJhc2VVSUhhbmRsZXJQcmV2ZW50ZWQ9ITB9LGV9ZnVuY3Rpb24gbCQoZSx0KXtyZXR1cm4gdD9lP3QrXCIgXCIrZTp0OmV9bGV0IGxXPVtdLGxZPXtjdXJyZW50OiExfSxsSz1mdW5jdGlvbihlKXtsZXQgdCxuLHtjaGlsZHJlbjpyLG9wZW46byxvbk9wZW5DaGFuZ2U6YSxvbk9wZW5DaGFuZ2VDb21wbGV0ZTppLGRlZmF1bHRPcGVuOmw9ITEsZGlzYWJsZWQ6cz0hMSxtb2RhbDpjLGxvb3A6dT0hMCxvcmllbnRhdGlvbjpkPVwidmVydGljYWxcIixhY3Rpb25zUmVmOmYsb3Blbk9uSG92ZXI6cCxkZWxheTpoPTEwMCxjbG9zZURlbGF5Om09MCxjbG9zZVBhcmVudE9uRXNjOmc9ITB9PWUsW3ksdl09dy51c2VTdGF0ZShudWxsKSxbYix4XT13LnVzZVN0YXRlKG51bGwpLFtDLF9dPXcudXNlU3RhdGUoKSxbayxFXT13LnVzZVN0YXRlKCEwKSxbaixTXT13LnVzZVN0YXRlKG51bGwpLFtPLEJdPXcudXNlU3RhdGUobnVsbCksW1AsSV09dy51c2VTdGF0ZSghMCksW1Qsel09dy51c2VTdGF0ZSghMSksRD13LnVzZVJlZihudWxsKSxMPXcudXNlUmVmKG51bGwpLE49dy51c2VSZWYobnVsbCksUj13LnVzZVJlZihbXSksTT13LnVzZVJlZihbXSksWj1hZCgpLFU9bE4oITApLEY9dy51c2VDb250ZXh0KGxSKTt7bGV0IGU9bHcoITApLG49ZnVuY3Rpb24oZSl7bGV0IHQ9dy51c2VDb250ZXh0KGxDKTtpZihudWxsPT09dCYmIWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBNZW51YmFyQ29udGV4dCBpcyBtaXNzaW5nLiBNZW51YmFyIHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8TWVudWJhcj4uXCIpO3JldHVybiB0fSghMCk7dD1GJiZlP3t0eXBlOlwibWVudVwiLGNvbnRleHQ6ZX06bj97dHlwZTpcIm1lbnViYXJcIixjb250ZXh0Om59OlU/e3R5cGU6XCJjb250ZXh0LW1lbnVcIixjb250ZXh0OlV9Ont0eXBlOnZvaWQgMH19bGV0IHE9YXgoKTt2b2lkIDAhPT10LnR5cGUmJihxPXQuY29udGV4dC5yb290SWQpO2xldCBIPSh2b2lkIDA9PT10LnR5cGV8fFwiY29udGV4dC1tZW51XCI9PT10LnR5cGUpJiYoYz8/ITApLFY9XCJtZW51XCI9PT10LnR5cGU/dC5jb250ZXh0LmFsbG93TW91c2VFbnRlcjpULCQ9XCJtZW51XCI9PT10LnR5cGU/dC5jb250ZXh0LnNldEFsbG93TW91c2VFbnRlcjp6LFc9cD8/KFwibWVudVwiPT09dC50eXBlfHxcIm1lbnViYXJcIj09PXQudHlwZSYmdC5jb250ZXh0Lmhhc1N1Ym1lbnVPcGVuKSxbWSxLXT1heSh7Y29udHJvbGxlZDpvLGRlZmF1bHQ6bCxuYW1lOlwiTWVudVJvb3RcIixzdGF0ZTpcIm9wZW5cIn0pLFg9dy51c2VSZWYoXCJjb250ZXh0LW1lbnVcIiE9PXQudHlwZSksRz1hZCgpO3cudXNlRWZmZWN0KCgpPT57aWYoWXx8KEQuY3VycmVudD1udWxsKSxcImNvbnRleHQtbWVudVwiPT09dC50eXBlKXtpZighWSl7Ry5jbGVhcigpLFguY3VycmVudD0hMTtyZXR1cm59Ry5zdGFydCg1MDAsKCk9PntYLmN1cnJlbnQ9ITB9KX19LFtHLFksdC50eXBlXSk7bGV0IFE9dy51c2VDYWxsYmFjayhlPT57Ti5jdXJyZW50PWUseChlKX0sW10pLHttb3VudGVkOkosc2V0TW91bnRlZDplZSx0cmFuc2l0aW9uU3RhdHVzOmV0fT1sXyhZKSx7b3Blbk1ldGhvZDplbix0cmlnZ2VyUHJvcHM6ZXIscmVzZXQ6ZW99PWZ1bmN0aW9uKGUpe2xldFt0LG5dPXcudXNlU3RhdGUobnVsbCkscj1haCgodCxyKT0+e2V8fG4ocil9KSxvPWFoKCgpPT57bihudWxsKX0pLHtvbkNsaWNrOmEsb25Qb2ludGVyRG93bjppfT1mdW5jdGlvbihlKXtsZXQgdD13LnVzZVJlZihcIlwiKSxuPXcudXNlQ2FsbGJhY2sobj0+e24uZGVmYXVsdFByZXZlbnRlZHx8KHQuY3VycmVudD1uLnBvaW50ZXJUeXBlLGUobixuLnBvaW50ZXJUeXBlKSl9LFtlXSk7cmV0dXJue29uQ2xpY2s6dy51c2VDYWxsYmFjayhuPT57aWYoMD09PW4uZGV0YWlsKXJldHVybiB2b2lkIGUobixcImtleWJvYXJkXCIpO1wicG9pbnRlclR5cGVcImluIG4mJmUobixuLnBvaW50ZXJUeXBlKSxlKG4sdC5jdXJyZW50KSx0LmN1cnJlbnQ9XCJcIn0sW2VdKSxvblBvaW50ZXJEb3duOm59fShyKTtyZXR1cm4gdy51c2VNZW1vKCgpPT4oe29wZW5NZXRob2Q6dCxyZXNldDpvLHRyaWdnZXJQcm9wczp7b25DbGljazphLG9uUG9pbnRlckRvd246aX19KSxbdCxvLGEsaV0pfShZKTt2YXIgZWE9e2VuYWJsZWQ6WSYmSCYmXCJ0cmlnZ2VyLWhvdmVyXCIhPT1PJiZcInRvdWNoXCIhPT1lbixtb3VudGVkOkosb3BlbjpZLHJlZmVyZW5jZUVsZW1lbnQ6Yn07bGV0e2VuYWJsZWQ6ZWk9ITAsbW91bnRlZDplbCxvcGVuOmVzLHJlZmVyZW5jZUVsZW1lbnQ6ZWM9bnVsbH09ZWE7YUMoKCk9PntpZihlaSYmYTgmJmVsJiYhZXMpe2xldCBlPWxTKGVjKSx0PWUuYm9keS5zdHlsZS51c2VyU2VsZWN0LG49ZS5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q7cmV0dXJuIGUuYm9keS5zdHlsZS51c2VyU2VsZWN0PVwibm9uZVwiLGUuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PVwibm9uZVwiLCgpPT57ZS5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9dCxlLmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdD1ufX19LFtlaSxlbCxlcyxlY10pLGFDKCgpPT57aWYoZWkpcmV0dXJuIGx6LmFjcXVpcmUoZWMpfSxbZWksZWNdKSxZfHxrfHxFKCEwKTtsZXQgZXU9YWgoKCk9PntlZSghMSksSSghMCksJCghMSksaT8uKCExKSxlbygpfSk7bGsoe2VuYWJsZWQ6IWYsb3BlbjpZLHJlZjpMLG9uQ29tcGxldGUoKXtZfHxldSgpfX0pO2xldCBlZD13LnVzZVJlZighMCksZWY9YWQoKSxlcD1haCgoZSxuLHIpPT57aWYoWT09PWV8fCExPT09ZSYmbj8udHlwZT09PVwiY2xpY2tcIiYmXCJ0b3VjaFwiPT09bi5wb2ludGVyVHlwZSYmIWVkLmN1cnJlbnQpcmV0dXJuO2lmKCFlJiZudWxsIT09ail7bGV0IGU9Ui5jdXJyZW50W2pdO3F1ZXVlTWljcm90YXNrKCgpPT57ZT8uc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpfSl9ZSYmXCJ0cmlnZ2VyLWZvY3VzXCI9PT1yPyhlZC5jdXJyZW50PSExLGVmLnN0YXJ0KDMwMCwoKT0+e2VkLmN1cnJlbnQ9ITB9KSk6KGVkLmN1cnJlbnQ9ITAsZWYuY2xlYXIoKSk7bGV0IG89KFwidHJpZ2dlci1wcmVzc1wiPT09cnx8XCJpdGVtLXByZXNzXCI9PT1yKSYmMD09PW4uZGV0YWlsJiZuPy5pc1RydXN0ZWQsaT0hZSYmKFwiZXNjYXBlLWtleVwiPT09cnx8bnVsbD09cik7ZnVuY3Rpb24gbCgpe2E/LihlLG4sciksSyhlKSxCKHI/P251bGwpLEQuY3VycmVudD1uPz9udWxsfVwidHJpZ2dlci1ob3ZlclwiPT09cj8oSSghMCksWi5zdGFydCg1MDAsKCk9PntJKCExKX0pLGVoLmZsdXNoU3luYyhsKSk6bCgpLFwibWVudWJhclwiPT09dC50eXBlJiYoXCJ0cmlnZ2VyLWZvY3VzXCI9PT1yfHxcImZvY3VzLW91dFwiPT09cnx8XCJ0cmlnZ2VyLWhvdmVyXCI9PT1yfHxcImxpc3QtbmF2aWdhdGlvblwiPT09cnx8XCJzaWJsaW5nLW9wZW5cIj09PXIpP18oXCJncm91cFwiKTpvfHxpP18obz9cImNsaWNrXCI6XCJkaXNtaXNzXCIpOl8odm9pZCAwKX0pO3cudXNlSW1wZXJhdGl2ZUhhbmRsZShmLCgpPT4oe3VubW91bnQ6ZXV9KSxbZXVdKSxcImNvbnRleHQtbWVudVwiPT09dC50eXBlJiYobj10LmNvbnRleHQpLHcudXNlSW1wZXJhdGl2ZUhhbmRsZShuPy5wb3NpdGlvbmVyUmVmLCgpPT5iLFtiXSksdy51c2VJbXBlcmF0aXZlSGFuZGxlKG4/LmFjdGlvbnNSZWYsKCk9Pih7c2V0T3BlbjplcH0pLFtlcF0pLHcudXNlRWZmZWN0KCgpPT57WXx8Wi5jbGVhcigpfSxbWixZXSk7bGV0IGVtPWFCKHtlbGVtZW50czp7cmVmZXJlbmNlOnksZmxvYXRpbmc6Yn0sb3BlbjpZLG9uT3BlbkNoYW5nZShlLHQsbil7ZXAoZSx0LGxEKG4pKX19KSxlZz1pTyhlbSx7ZW5hYmxlZDprJiZXJiYhcyYmXCJjb250ZXh0LW1lbnVcIiE9PXQudHlwZSYmKFwibWVudWJhclwiIT09dC50eXBlfHx0LmNvbnRleHQuaGFzU3VibWVudU9wZW4mJiFZKSxoYW5kbGVDbG9zZTppVCh7YmxvY2tQb2ludGVyRXZlbnRzOiEwfSksbW91c2VPbmx5OiEwLG1vdmU6XCJtZW51XCI9PT10LnR5cGUscmVzdE1zOnZvaWQgMD09PXQudHlwZXx8XCJtZW51XCI9PT10LnR5cGUmJlY/aDp2b2lkIDAsZGVsYXk6XCJtZW51XCI9PT10LnR5cGU/e29wZW46Vj9oOjFlMTAsY2xvc2U6bX06e2Nsb3NlOm19fSksZXk9aUQoZW0se2VuYWJsZWQ6IXMmJiFZJiZcIm1lbnViYXJcIj09PXQudHlwZSYmdC5jb250ZXh0Lmhhc1N1Ym1lbnVPcGVuJiYhVX0pLGV2PWZ1bmN0aW9uKGUsdD17fSl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixkYXRhUmVmOm99PWUse2VuYWJsZWQ6YT0hMCxldmVudDppPVwiY2xpY2tcIix0b2dnbGU6bD0hMCxpZ25vcmVNb3VzZTpzPSExLHN0aWNrSWZPcGVuOmM9ITB9PXQsdT13LnVzZVJlZih2b2lkIDApLGQ9aVIoKSxmPXcudXNlTWVtbygoKT0+KHtvblBvaW50ZXJEb3duKGUpe3UuY3VycmVudD1lLnBvaW50ZXJUeXBlfSxvbk1vdXNlRG93bihlKXtsZXQgdD11LmN1cnJlbnQsYT1lLm5hdGl2ZUV2ZW50O2lmKDAhPT1lLmJ1dHRvbnx8XCJjbGlja1wiPT09aXx8aXModCwhMCkmJnMpcmV0dXJuO2xldCBmPW8uY3VycmVudC5vcGVuRXZlbnQscD1mPy50eXBlLGg9IShuJiZsJiYoIWZ8fCFjfHxcImNsaWNrXCI9PT1wfHxcIm1vdXNlZG93blwiPT09cCkpO2QucmVxdWVzdCgoKT0+e3IoaCxhLFwiY2xpY2tcIil9KX0sb25DbGljayhlKXtsZXQgdD11LmN1cnJlbnQ7aWYoXCJtb3VzZWRvd25cIj09PWkmJnQpe3UuY3VycmVudD12b2lkIDA7cmV0dXJufWlmKGlzKHQsITApJiZzKXJldHVybjtsZXQgYT1vLmN1cnJlbnQub3BlbkV2ZW50LGQ9YT8udHlwZTtyKCEobiYmbCYmKCFhfHwhY3x8XCJjbGlja1wiPT09ZHx8XCJtb3VzZWRvd25cIj09PWR8fFwia2V5ZG93blwiPT09ZHx8XCJrZXl1cFwiPT09ZCkpLGUubmF0aXZlRXZlbnQsXCJjbGlja1wiKX0sb25LZXlEb3duKCl7dS5jdXJyZW50PXZvaWQgMH19KSxbbyxpLHMscixuLGMsbCxkXSk7cmV0dXJuIHcudXNlTWVtbygoKT0+YT97cmVmZXJlbmNlOmZ9OmlaLFthLGZdKX0oZW0se2VuYWJsZWQ6IXMmJlwiY29udGV4dC1tZW51XCIhPT10LnR5cGUsZXZlbnQ6WSYmXCJtZW51YmFyXCI9PT10LnR5cGU/XCJjbGlja1wiOlwibW91c2Vkb3duXCIsdG9nZ2xlOiFXfHxcIm1lbnVcIiE9PXQudHlwZSxpZ25vcmVNb3VzZTpXJiZcIm1lbnVcIj09PXQudHlwZSxzdGlja0lmT3Blbjp2b2lkIDA9PT10LnR5cGUmJlB9KSxlYj1pJChlbSx7ZW5hYmxlZDohcyxidWJibGVzOmcmJlwibWVudVwiPT09dC50eXBlLG91dHNpZGVQcmVzczooKT0+XCJjb250ZXh0LW1lbnVcIiE9PXQudHlwZXx8RC5jdXJyZW50Py50eXBlPT09XCJjb250ZXh0bWVudVwifHxYLmN1cnJlbnR9KSxlQT1mdW5jdGlvbihlLHQ9e30pe2xldHtvcGVuOm4sZWxlbWVudHM6cixmbG9hdGluZ0lkOm99PWUse2VuYWJsZWQ6YT0hMCxyb2xlOmk9XCJkaWFsb2dcIn09dCxsPWF4KCkscz1yLmRvbVJlZmVyZW5jZT8uaWR8fGwsYz13LnVzZU1lbW8oKCk9PmlfKHIuZmxvYXRpbmcpPy5pZHx8byxbci5mbG9hdGluZyxvXSksdT1pVy5nZXQoaSk/P2ksZD1udWxsIT1hRSgpLGY9dy51c2VNZW1vKCgpPT5cInRvb2x0aXBcIj09PXV8fFwibGFiZWxcIj09PWk/e1tgYXJpYS0ke1wibGFiZWxcIj09PWk/XCJsYWJlbGxlZGJ5XCI6XCJkZXNjcmliZWRieVwifWBdOm4/Yzp2b2lkIDB9OntcImFyaWEtZXhwYW5kZWRcIjpuP1widHJ1ZVwiOlwiZmFsc2VcIixcImFyaWEtaGFzcG9wdXBcIjpcImFsZXJ0ZGlhbG9nXCI9PT11P1wiZGlhbG9nXCI6dSxcImFyaWEtY29udHJvbHNcIjpuP2M6dm9pZCAwLC4uLlwibGlzdGJveFwiPT09dSYme3JvbGU6XCJjb21ib2JveFwifSwuLi5cIm1lbnVcIj09PXUmJntpZDpzfSwuLi5cIm1lbnVcIj09PXUmJmQmJntyb2xlOlwibWVudWl0ZW1cIn0sLi4uXCJzZWxlY3RcIj09PWkmJntcImFyaWEtYXV0b2NvbXBsZXRlXCI6XCJub25lXCJ9LC4uLlwiY29tYm9ib3hcIj09PWkmJntcImFyaWEtYXV0b2NvbXBsZXRlXCI6XCJsaXN0XCJ9fSxbdSxjLGQsbixzLGldKSxwPXcudXNlTWVtbygoKT0+e2xldCBlPXtpZDpjLC4uLnUmJntyb2xlOnV9fTtyZXR1cm5cInRvb2x0aXBcIj09PXV8fFwibGFiZWxcIj09PWk/ZTp7Li4uZSwuLi5cIm1lbnVcIj09PXUmJntcImFyaWEtbGFiZWxsZWRieVwiOnN9fX0sW3UsYyxzLGldKSxoPXcudXNlQ2FsbGJhY2soKHthY3RpdmU6ZSxzZWxlY3RlZDp0fSk9PntsZXQgbj17cm9sZTpcIm9wdGlvblwiLC4uLmUmJntpZDpgJHtjfS1mdWktb3B0aW9uYH19O3N3aXRjaChpKXtjYXNlXCJzZWxlY3RcIjpjYXNlXCJjb21ib2JveFwiOnJldHVybnsuLi5uLFwiYXJpYS1zZWxlY3RlZFwiOnR9fXJldHVybnt9fSxbYyxpXSk7cmV0dXJuIHcudXNlTWVtbygoKT0+YT97cmVmZXJlbmNlOmYsZmxvYXRpbmc6cCxpdGVtOmh9Ont9LFthLGYscCxoXSl9KGVtLHtyb2xlOlwibWVudVwifSksZXg9bGooKSxldz1mdW5jdGlvbihlLHQpe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZWxlbWVudHM6byxmbG9hdGluZ0lkOmF9PWUse2xpc3RSZWY6aSxhY3RpdmVJbmRleDpsLG9uTmF2aWdhdGU6cz0oKT0+e30sZW5hYmxlZDpjPSEwLHNlbGVjdGVkSW5kZXg6dT1udWxsLGFsbG93RXNjYXBlOmQ9ITEsbG9vcDpmPSExLG5lc3RlZDpwPSExLHJ0bDpoPSExLHZpcnR1YWw6bT0hMSxmb2N1c0l0ZW1Pbk9wZW46Zz1cImF1dG9cIixmb2N1c0l0ZW1PbkhvdmVyOnk9ITAsb3Blbk9uQXJyb3dLZXlEb3duOnY9ITAsZGlzYWJsZWRJbmRpY2VzOmIsb3JpZW50YXRpb246QT1cInZlcnRpY2FsXCIscGFyZW50T3JpZW50YXRpb246eCxjb2xzOkM9MSxzY3JvbGxJdGVtSW50b1ZpZXc6Xz0hMCx2aXJ0dWFsSXRlbVJlZjprLGl0ZW1TaXplczpFLGRlbnNlOmo9ITF9PXQsUz1hMihpXyhvLmZsb2F0aW5nKSksTz1hRSgpLEI9YWooKTthQygoKT0+e2UuZGF0YVJlZi5jdXJyZW50Lm9yaWVudGF0aW9uPUF9LFtlLEFdKTtsZXQgUD1pQyhvLmRvbVJlZmVyZW5jZSksST13LnVzZVJlZihnKSxUPXcudXNlUmVmKHU/Py0xKSx6PXcudXNlUmVmKG51bGwpLEQ9dy51c2VSZWYoITApLEw9YWgoKCk9PntzKC0xPT09VC5jdXJyZW50P251bGw6VC5jdXJyZW50KX0pLE49dy51c2VSZWYoTCksUj13LnVzZVJlZighIW8uZmxvYXRpbmcpLE09dy51c2VSZWYobiksWj13LnVzZVJlZighMSksVT13LnVzZVJlZighMSksRj1hMihiKSxxPWEyKG4pLEg9YTIoXyksVj1hMih1KSxbJCxXXT13LnVzZVN0YXRlKCksWT1haCgoKT0+e2Z1bmN0aW9uIGUoZSl7bT8oZS5pZD8uZW5kc1dpdGgoXCItZnVpLW9wdGlvblwiKSYmKGUuaWQ9YCR7YX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zbGljZSgyLDEwKX1gKSxXKGUuaWQpLEI/LmV2ZW50cy5lbWl0KFwidmlydHVhbGZvY3VzXCIsZSksayYmKGsuY3VycmVudD1lKSk6bGgoZSx7c3luYzpaLmN1cnJlbnQscHJldmVudFNjcm9sbDohMH0pfWxldCB0PWkuY3VycmVudFtULmN1cnJlbnRdLG49VS5jdXJyZW50O3QmJmUodCksKFouY3VycmVudD9lPT5lKCk6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKSgoKT0+e2xldCByPWkuY3VycmVudFtULmN1cnJlbnRdfHx0O2lmKCFyKXJldHVybjt0fHxlKHIpO2xldCBvPUguY3VycmVudDtvJiZYJiYobnx8IUQuY3VycmVudCkmJnIuc2Nyb2xsSW50b1ZpZXc/LihcImJvb2xlYW5cIj09dHlwZW9mIG8/e2Jsb2NrOlwibmVhcmVzdFwiLGlubGluZTpcIm5lYXJlc3RcIn06byl9KX0pO2FDKCgpPT57YyYmKG4mJm8uZmxvYXRpbmc/SS5jdXJyZW50JiZudWxsIT11JiYoVS5jdXJyZW50PSEwLFQuY3VycmVudD11LEwoKSk6Ui5jdXJyZW50JiYoVC5jdXJyZW50PS0xLE4uY3VycmVudCgpKSl9LFtjLG4sby5mbG9hdGluZyx1LExdKSxhQygoKT0+e2lmKGMmJm4mJm8uZmxvYXRpbmcpaWYobnVsbD09bCl7aWYoWi5jdXJyZW50PSExLG51bGwhPVYuY3VycmVudClyZXR1cm47aWYoUi5jdXJyZW50JiYoVC5jdXJyZW50PS0xLFkoKSksKCFNLmN1cnJlbnR8fCFSLmN1cnJlbnQpJiZJLmN1cnJlbnQmJihudWxsIT16LmN1cnJlbnR8fCEwPT09SS5jdXJyZW50JiZudWxsPT16LmN1cnJlbnQpKXtsZXQgZT0wLHQ9KCk9PntudWxsPT1pLmN1cnJlbnRbMF0/KGU8MiYmKGU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lOnF1ZXVlTWljcm90YXNrKSh0KSxlKz0xKTooVC5jdXJyZW50PW51bGw9PXouY3VycmVudHx8bHkoei5jdXJyZW50LEEsaCl8fHA/bGMoaSxGLmN1cnJlbnQpOmx1KGksRi5jdXJyZW50KSx6LmN1cnJlbnQ9bnVsbCxMKCkpfTt0KCl9fWVsc2UgbHMoaSxsKXx8KFQuY3VycmVudD1sLFkoKSxVLmN1cnJlbnQ9ITEpfSxbYyxuLG8uZmxvYXRpbmcsbCxWLHAsaSxBLGgsTCxZLEZdKSxhQygoKT0+e2lmKCFjfHxvLmZsb2F0aW5nfHwhQnx8bXx8IVIuY3VycmVudClyZXR1cm47bGV0IGU9Qi5ub2Rlc1JlZi5jdXJyZW50LHQ9ZS5maW5kKGU9PmUuaWQ9PT1PKT8uY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcsbj1peShpeChvLmZsb2F0aW5nKSkscj1lLnNvbWUoZT0+ZS5jb250ZXh0JiZpdihlLmNvbnRleHQuZWxlbWVudHMuZmxvYXRpbmcsbikpO3QmJiFyJiZELmN1cnJlbnQmJnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sW2Msby5mbG9hdGluZyxCLE8sbV0pLGFDKCgpPT57Ti5jdXJyZW50PUwsTS5jdXJyZW50PW4sUi5jdXJyZW50PSEhby5mbG9hdGluZ30pLGFDKCgpPT57bnx8KHouY3VycmVudD1udWxsLEkuY3VycmVudD1nKX0sW24sZ10pO2xldCBLPW51bGwhPWwsWD13LnVzZU1lbW8oKCk9PntmdW5jdGlvbiBlKGUpe2lmKCFxLmN1cnJlbnQpcmV0dXJuO2xldCB0PWkuY3VycmVudC5pbmRleE9mKGUpOy0xIT09dCYmVC5jdXJyZW50IT09dCYmKFQuY3VycmVudD10LEwoKSl9cmV0dXJue29uRm9jdXMoe2N1cnJlbnRUYXJnZXQ6dH0pe1ouY3VycmVudD0hMCxlKHQpfSxvbkNsaWNrOih7Y3VycmVudFRhcmdldDplfSk9PmUuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxvbk1vdXNlTW92ZSh7Y3VycmVudFRhcmdldDp0fSl7Wi5jdXJyZW50PSEwLFUuY3VycmVudD0hMSx5JiZlKHQpfSxvblBvaW50ZXJMZWF2ZSh7cG9pbnRlclR5cGU6ZX0pe0QuY3VycmVudCYmXCJ0b3VjaFwiIT09ZSYmKFouY3VycmVudD0hMCx5JiYoVC5jdXJyZW50PS0xLEwoKSxtfHxTLmN1cnJlbnQ/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpKX19fSxbcSxTLHksaSxMLG1dKSxHPXcudXNlQ2FsbGJhY2soKCk9Png/P0I/Lm5vZGVzUmVmLmN1cnJlbnQuZmluZChlPT5lLmlkPT09Tyk/LmNvbnRleHQ/LmRhdGFSZWY/LmN1cnJlbnQub3JpZW50YXRpb24sW08sQix4XSksUT1haChlPT57dmFyIHQsYSxsLHMsYztpZihELmN1cnJlbnQ9ITEsWi5jdXJyZW50PSEwLDIyOT09PWUud2hpY2h8fCFxLmN1cnJlbnQmJmUuY3VycmVudFRhcmdldD09PVMuY3VycmVudClyZXR1cm47aWYocCYmKHQ9ZS5rZXksYT1BLGw9aCxzPUMsXCJib3RoXCI9PT1hfHxcImhvcml6b250YWxcIj09PWEmJnMmJnM+MT9cIkVzY2FwZVwiPT09dDpsbShhLGw/dD09PWloOnQ9PT1pcCx0PT09aW0pKSl7bGcoZS5rZXksRygpKXx8aWEoZSkscighMSxlLm5hdGl2ZUV2ZW50LFwibGlzdC1uYXZpZ2F0aW9uXCIpLGFOKG8uZG9tUmVmZXJlbmNlKSYmKG0/Qj8uZXZlbnRzLmVtaXQoXCJ2aXJ0dWFsZm9jdXNcIixvLmRvbVJlZmVyZW5jZSk6by5kb21SZWZlcmVuY2UuZm9jdXMoKSk7cmV0dXJufWxldCB1PVQuY3VycmVudCxnPWxjKGksYikseT1sdShpLGIpO2lmKFB8fChcIkhvbWVcIj09PWUua2V5JiYoaWEoZSksVC5jdXJyZW50PWcsTCgpKSxcIkVuZFwiPT09ZS5rZXkmJihpYShlKSxULmN1cnJlbnQ9eSxMKCkpKSxDPjEpe2xldCB0PUV8fEFycmF5LmZyb20oe2xlbmd0aDppLmN1cnJlbnQubGVuZ3RofSwoKT0+KHt3aWR0aDoxLGhlaWdodDoxfSkpLG49ZnVuY3Rpb24oZSx0LG4pe2xldCByPVtdLG89MDtyZXR1cm4gZS5mb3JFYWNoKCh7d2lkdGg6ZSxoZWlnaHQ6YX0saSk9PntsZXQgbD0hMTtmb3IobiYmKG89MCk7IWw7KXtsZXQgbj1bXTtmb3IobGV0IHI9MDtyPGU7cis9MSlmb3IobGV0IGU9MDtlPGE7ZSs9MSluLnB1c2gobytyK2UqdCk7byV0K2U8PXQmJm4uZXZlcnkoZT0+bnVsbD09cltlXSk/KG4uZm9yRWFjaChlPT57cltlXT1pfSksbD0hMCk6bys9MX19KSxbLi4ucl19KHQsQyxqKSxyPW4uZmluZEluZGV4KGU9Pm51bGwhPWUmJiFsZihpLGUsYikpLG89bi5yZWR1Y2UoKGUsdCxuKT0+bnVsbD09dHx8bGYoaSx0LGIpP2U6biwtMSksYT1uW2Z1bmN0aW9uKGUse2V2ZW50OnQsb3JpZW50YXRpb246bixsb29wOnIscnRsOm8sY29sczphLGRpc2FibGVkSW5kaWNlczppLG1pbkluZGV4OmwsbWF4SW5kZXg6cyxwcmV2SW5kZXg6YyxzdG9wRXZlbnQ6dT0hMX0pe2xldCBkPWM7aWYodC5rZXk9PT1pbSl7aWYodSYmaWEodCksLTE9PT1jKWQ9cztlbHNlIGlmKGQ9bGQoZSx7c3RhcnRpbmdJbmRleDpkLGFtb3VudDphLGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6aX0pLHImJihjLWE8bHx8ZDwwKSl7bGV0IGU9YyVhLHQ9cyVhLG49cy0odC1lKTtkPXQ9PT1lP3M6dD5lP246bi1hfWxzKGUsZCkmJihkPWMpfWlmKHQua2V5PT09aWcmJih1JiZpYSh0KSwtMT09PWM/ZD1sOihkPWxkKGUse3N0YXJ0aW5nSW5kZXg6YyxhbW91bnQ6YSxkaXNhYmxlZEluZGljZXM6aX0pLHImJmMrYT5zJiYoZD1sZChlLHtzdGFydGluZ0luZGV4OmMlYS1hLGFtb3VudDphLGRpc2FibGVkSW5kaWNlczppfSkpKSxscyhlLGQpJiYoZD1jKSksXCJib3RoXCI9PT1uKXtsZXQgbj1pUShjL2EpO3Qua2V5PT09KG8/aXA6aWgpJiYodSYmaWEodCksYyVhIT1hLTE/KGQ9bGQoZSx7c3RhcnRpbmdJbmRleDpjLGRpc2FibGVkSW5kaWNlczppfSksciYmbGwoZCxhLG4pJiYoZD1sZChlLHtzdGFydGluZ0luZGV4OmMtYyVhLTEsZGlzYWJsZWRJbmRpY2VzOml9KSkpOnImJihkPWxkKGUse3N0YXJ0aW5nSW5kZXg6Yy1jJWEtMSxkaXNhYmxlZEluZGljZXM6aX0pKSxsbChkLGEsbikmJihkPWMpKSx0LmtleT09PShvP2loOmlwKSYmKHUmJmlhKHQpLGMlYSE9MD8oZD1sZChlLHtzdGFydGluZ0luZGV4OmMsZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczppfSksciYmbGwoZCxhLG4pJiYoZD1sZChlLHtzdGFydGluZ0luZGV4OmMrKGEtYyVhKSxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOml9KSkpOnImJihkPWxkKGUse3N0YXJ0aW5nSW5kZXg6YysoYS1jJWEpLGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6aX0pKSxsbChkLGEsbikmJihkPWMpKTtsZXQgbD1pUShzL2EpPT09bjtscyhlLGQpJiYoZD1yJiZsP3Qua2V5PT09KG8/aWg6aXApP3M6bGQoZSx7c3RhcnRpbmdJbmRleDpjLWMlYS0xLGRpc2FibGVkSW5kaWNlczppfSk6Yyl9cmV0dXJuIGR9KHtjdXJyZW50Om4ubWFwKGU9Pm51bGwhPWU/aS5jdXJyZW50W2VdOm51bGwpfSx7ZXZlbnQ6ZSxvcmllbnRhdGlvbjpBLGxvb3A6ZixydGw6aCxjb2xzOkMsZGlzYWJsZWRJbmRpY2VzOihjPVsuLi4oXCJmdW5jdGlvblwiIT10eXBlb2YgYj9iOm51bGwpfHxpLmN1cnJlbnQubWFwKChlLHQpPT5sZihpLHQsYik/dDp2b2lkIDApLHZvaWQgMF0sbi5mbGF0TWFwKChlLHQpPT5jLmluY2x1ZGVzKGUpP1t0XTpbXSkpLG1pbkluZGV4OnIsbWF4SW5kZXg6byxwcmV2SW5kZXg6ZnVuY3Rpb24oZSx0LG4scixvKXtpZigtMT09PWUpcmV0dXJuIC0xO2xldCBhPW4uaW5kZXhPZihlKSxpPXRbZV07c3dpdGNoKG8pe2Nhc2VcInRsXCI6cmV0dXJuIGE7Y2FzZVwidHJcIjppZighaSlyZXR1cm4gYTtyZXR1cm4gYStpLndpZHRoLTE7Y2FzZVwiYmxcIjppZighaSlyZXR1cm4gYTtyZXR1cm4gYSsoaS5oZWlnaHQtMSkqcjtjYXNlXCJiclwiOnJldHVybiBuLmxhc3RJbmRleE9mKGUpO2RlZmF1bHQ6cmV0dXJuIC0xfX0oVC5jdXJyZW50Pnk/ZzpULmN1cnJlbnQsdCxuLEMsZS5rZXk9PT1pZz9cImJsXCI6ZS5rZXk9PT0oaD9pcDppaCk/XCJ0clwiOlwidGxcIiksc3RvcEV2ZW50OiEwfSldO2lmKG51bGwhPWEmJihULmN1cnJlbnQ9YSxMKCkpLFwiYm90aFwiPT09QSlyZXR1cm59aWYobGcoZS5rZXksQSkpe2lmKGlhKGUpLG4mJiFtJiZpeShlLmN1cnJlbnRUYXJnZXQub3duZXJEb2N1bWVudCk9PT1lLmN1cnJlbnRUYXJnZXQpe1QuY3VycmVudD1seShlLmtleSxBLGgpP2c6eSxMKCk7cmV0dXJufWx5KGUua2V5LEEsaCk/Zj9ULmN1cnJlbnQ9dT49eT9kJiZ1IT09aS5jdXJyZW50Lmxlbmd0aD8tMTpnOmxkKGkse3N0YXJ0aW5nSW5kZXg6dSxkaXNhYmxlZEluZGljZXM6Yn0pOlQuY3VycmVudD1NYXRoLm1pbih5LGxkKGkse3N0YXJ0aW5nSW5kZXg6dSxkaXNhYmxlZEluZGljZXM6Yn0pKTpmP1QuY3VycmVudD11PD1nP2QmJi0xIT09dT9pLmN1cnJlbnQubGVuZ3RoOnk6bGQoaSx7c3RhcnRpbmdJbmRleDp1LGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6Yn0pOlQuY3VycmVudD1NYXRoLm1heChnLGxkKGkse3N0YXJ0aW5nSW5kZXg6dSxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOmJ9KSksbHMoaSxULmN1cnJlbnQpJiYoVC5jdXJyZW50PS0xKSxMKCl9fSksSj13LnVzZU1lbW8oKCk9Pm0mJm4mJksmJntcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiR9LFttLG4sSywkXSksZWU9dy51c2VNZW1vKCgpPT4oe1wiYXJpYS1vcmllbnRhdGlvblwiOlwiYm90aFwiPT09QT92b2lkIDA6QSwuLi4hUD9KOnt9LG9uS2V5RG93bihlKXtpZihcIlRhYlwiPT09ZS5rZXkmJmUuc2hpZnRLZXkmJm4mJiFtKXtpYShlKSxyKCExLGUubmF0aXZlRXZlbnQsXCJsaXN0LW5hdmlnYXRpb25cIiksYU4oby5kb21SZWZlcmVuY2UpJiZvLmRvbVJlZmVyZW5jZS5mb2N1cygpO3JldHVybn1RKGUpfSxvblBvaW50ZXJNb3ZlKCl7RC5jdXJyZW50PSEwfX0pLFtKLFEsQSxQLHIsbixtLG8uZG9tUmVmZXJlbmNlXSksZXQ9dy51c2VNZW1vKCgpPT57ZnVuY3Rpb24gZShlKXtcImF1dG9cIj09PWcmJmlpKGUubmF0aXZlRXZlbnQpJiYoSS5jdXJyZW50PSEwKX1mdW5jdGlvbiB0KGUpe0kuY3VycmVudD1nLFwiYXV0b1wiPT09ZyYmaWwoZS5uYXRpdmVFdmVudCkmJihJLmN1cnJlbnQ9ITApfXJldHVybnsuLi5KLG9uS2V5RG93bihlKXt2YXIgdCxvO0QuY3VycmVudD0hMTtsZXQgYT1lLmtleS5zdGFydHNXaXRoKFwiQXJyb3dcIiksbD0odD1lLmtleSxvPUcoKSxsbShvLGg/dD09PWlwOnQ9PT1paCx0PT09aWcpKSxzPWxnKGUua2V5LEEpLGM9KHA/bDpzKXx8XCJFbnRlclwiPT09ZS5rZXl8fFwiXCI9PT1lLmtleS50cmltKCk7aWYobSYmbilyZXR1cm4gUShlKTtpZihufHx2fHwhYSl7aWYoYyl7bGV0IHQ9bGcoZS5rZXksRygpKTt6LmN1cnJlbnQ9cCYmdD9udWxsOmUua2V5fWlmKHApe2wmJihpYShlKSxuPyhULmN1cnJlbnQ9bGMoaSxGLmN1cnJlbnQpLEwoKSk6cighMCxlLm5hdGl2ZUV2ZW50LFwibGlzdC1uYXZpZ2F0aW9uXCIpKTtyZXR1cm59cyYmKG51bGwhPXUmJihULmN1cnJlbnQ9dSksaWEoZSksIW4mJnY/cighMCxlLm5hdGl2ZUV2ZW50LFwibGlzdC1uYXZpZ2F0aW9uXCIpOlEoZSksbiYmTCgpKX19LG9uRm9jdXMoKXtuJiYhbSYmKFQuY3VycmVudD0tMSxMKCkpfSxvblBvaW50ZXJEb3duOnQsb25Qb2ludGVyRW50ZXI6dCxvbk1vdXNlRG93bjplLG9uQ2xpY2s6ZX19LFtKLFEsRixnLGkscCxMLHIsbix2LEEsRyxoLHUsbV0pO3JldHVybiB3LnVzZU1lbW8oKCk9PmM/e3JlZmVyZW5jZTpldCxmbG9hdGluZzplZSxpdGVtOlh9Ont9LFtjLGV0LGVlLFhdKX0oZW0se2VuYWJsZWQ6IXMsbGlzdFJlZjpSLGFjdGl2ZUluZGV4OmosbmVzdGVkOnZvaWQgMCE9PXQudHlwZSxsb29wOnUsb3JpZW50YXRpb246ZCxwYXJlbnRPcmllbnRhdGlvbjpcIm1lbnViYXJcIj09PXQudHlwZT90LmNvbnRleHQub3JpZW50YXRpb246dm9pZCAwLHJ0bDpcInJ0bFwiPT09ZXgsZGlzYWJsZWRJbmRpY2VzOmxXLG9uTmF2aWdhdGU6UyxvcGVuT25BcnJvd0tleURvd246XCJjb250ZXh0LW1lbnVcIiE9PXQudHlwZX0pLGVDPXcudXNlUmVmKCExKSxlXz1mdW5jdGlvbihlLHQpe2xldHtvcGVuOm4sZGF0YVJlZjpyfT1lLHtsaXN0UmVmOm8sYWN0aXZlSW5kZXg6YSxvbk1hdGNoOmksb25UeXBpbmdDaGFuZ2U6bCxlbmFibGVkOnM9ITAsZmluZE1hdGNoOmM9bnVsbCxyZXNldE1zOnU9NzUwLGlnbm9yZUtleXM6ZD1bXSxzZWxlY3RlZEluZGV4OmY9bnVsbH09dCxwPWFkKCksaD13LnVzZVJlZihcIlwiKSxtPXcudXNlUmVmKGY/P2E/Py0xKSxnPXcudXNlUmVmKG51bGwpLHk9YWgoaSksdj1haChsKSxiPWEyKGMpLEE9YTIoZCk7YUMoKCk9PntuJiYocC5jbGVhcigpLGcuY3VycmVudD1udWxsLGguY3VycmVudD1cIlwiKX0sW24scF0pLGFDKCgpPT57biYmXCJcIj09PWguY3VycmVudCYmKG0uY3VycmVudD1mPz9hPz8tMSl9LFtuLGYsYV0pO2xldCB4PWFoKGU9PntlP3IuY3VycmVudC50eXBpbmd8fChyLmN1cnJlbnQudHlwaW5nPWUsdihlKSk6ci5jdXJyZW50LnR5cGluZyYmKHIuY3VycmVudC50eXBpbmc9ZSx2KGUpKX0pLEM9YWgoZT0+e2Z1bmN0aW9uIHQoZSx0LG4pe2xldCByPWIuY3VycmVudD9iLmN1cnJlbnQodCxuKTp0LmZpbmQoZT0+ZT8udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKG4udG9Mb2NhbGVMb3dlckNhc2UoKSk9PT0wKTtyZXR1cm4gcj9lLmluZGV4T2Yocik6LTF9bGV0IHI9by5jdXJyZW50O2lmKGguY3VycmVudC5sZW5ndGg+MCYmXCIgXCIhPT1oLmN1cnJlbnRbMF0mJigtMT09PXQocixyLGguY3VycmVudCk/eCghMSk6XCIgXCI9PT1lLmtleSYmaWEoZSkpLG51bGw9PXJ8fEEuY3VycmVudC5pbmNsdWRlcyhlLmtleSl8fDEhPT1lLmtleS5sZW5ndGh8fGUuY3RybEtleXx8ZS5tZXRhS2V5fHxlLmFsdEtleSlyZXR1cm47biYmXCIgXCIhPT1lLmtleSYmKGlhKGUpLHgoITApKSxyLmV2ZXJ5KGU9PiFlfHxlWzBdPy50b0xvY2FsZUxvd2VyQ2FzZSgpIT09ZVsxXT8udG9Mb2NhbGVMb3dlckNhc2UoKSkmJmguY3VycmVudD09PWUua2V5JiYoaC5jdXJyZW50PVwiXCIsbS5jdXJyZW50PWcuY3VycmVudCksaC5jdXJyZW50Kz1lLmtleSxwLnN0YXJ0KHUsKCk9PntoLmN1cnJlbnQ9XCJcIixtLmN1cnJlbnQ9Zy5jdXJyZW50LHgoITEpfSk7bGV0IGE9bS5jdXJyZW50LGk9dChyLFsuLi5yLnNsaWNlKChhfHwwKSsxKSwuLi5yLnNsaWNlKDAsKGF8fDApKzEpXSxoLmN1cnJlbnQpOy0xIT09aT8oeShpKSxnLmN1cnJlbnQ9aSk6XCIgXCIhPT1lLmtleSYmKGguY3VycmVudD1cIlwiLHgoITEpKX0pLF89dy51c2VNZW1vKCgpPT4oe29uS2V5RG93bjpDfSksW0NdKSxrPXcudXNlTWVtbygoKT0+KHtvbktleURvd246QyxvbktleVVwKGUpe1wiIFwiPT09ZS5rZXkmJngoITEpfX0pLFtDLHhdKTtyZXR1cm4gdy51c2VNZW1vKCgpPT5zP3tyZWZlcmVuY2U6XyxmbG9hdGluZzprfTp7fSxbcyxfLGtdKX0oZW0se2xpc3RSZWY6TSxhY3RpdmVJbmRleDpqLHJlc2V0TXM6NTAwLG9uTWF0Y2g6ZT0+e1kmJmUhPT1qJiZTKGUpfSxvblR5cGluZ0NoYW5nZTp3LnVzZUNhbGxiYWNrKGU9PntlQy5jdXJyZW50PWV9LFtdKX0pLHtnZXRSZWZlcmVuY2VQcm9wczplayxnZXRGbG9hdGluZ1Byb3BzOmVFLGdldEl0ZW1Qcm9wczplan09bHYoW2VnLGV2LGViLGV5LGVBLGV3LGVfXSksZVM9ZnVuY3Rpb24oZSl7bGV0e2VuYWJsZWQ6dD0hMCxtb3VzZURvd25BY3Rpb246bixvcGVuOnJ9PWUsbz13LnVzZVJlZighMSk7cmV0dXJuIHcudXNlTWVtbygoKT0+dD97b25Nb3VzZURvd246ZT0+eyhcIm9wZW5cIj09PW4mJiFyfHxcImNsb3NlXCI9PT1uJiZyKSYmKG8uY3VycmVudD0hMCxsUyhlLmN1cnJlbnRUYXJnZXQpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCgpPT57by5jdXJyZW50PSExfSx7b25jZTohMH0pKX0sb25DbGljazplPT57by5jdXJyZW50JiYoby5jdXJyZW50PSExLGUucHJldmVudEJhc2VVSUhhbmRsZXIoKSl9fTppWixbdCxuLHJdKX0oe29wZW46WSxlbmFibGVkOlwibWVudWJhclwiPT09dC50eXBlLG1vdXNlRG93bkFjdGlvbjpcIm9wZW5cIn0pLGVPPXcudXNlTWVtbygoKT0+e2xldCBlPWxVKGVrKCkse29uTW91c2VFbnRlcigpe0UoITApfSxvbk1vdXNlTW92ZSgpeyQoITApfX0sZXIsZVMpO3JldHVybiBkZWxldGUgZS5yb2xlLGV9LFtlayxlUywkLGVyXSksZUI9dy51c2VNZW1vKCgpPT5lRSh7b25Nb3VzZUVudGVyKCl7VyYmXCJtZW51XCIhPT10LnR5cGV8fEUoITEpfSxvbk1vdXNlTW92ZSgpeyQoITApfSxvbkNsaWNrKCl7VyYmRSghMSl9fSksW2VFLFcsdC50eXBlLCRdKSxlUD13LnVzZU1lbW8oKCk9PmVqKCksW2VqXSksZUk9dy51c2VNZW1vKCgpPT4oe2FjdGl2ZUluZGV4Omosc2V0QWN0aXZlSW5kZXg6UyxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOnQudHlwZT90LmNvbnRleHQuYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjpsWSxmbG9hdGluZ1Jvb3RDb250ZXh0OmVtLGl0ZW1Qcm9wczplUCxwb3B1cFByb3BzOmVCLHRyaWdnZXJQcm9wczplTyxpdGVtRG9tRWxlbWVudHM6UixpdGVtTGFiZWxzOk0sbW91bnRlZDpKLG9wZW46WSxwb3B1cFJlZjpMLHBvc2l0aW9uZXJSZWY6TixzZXRPcGVuOmVwLHNldFBvc2l0aW9uZXJFbGVtZW50OlEsdHJpZ2dlckVsZW1lbnQ6eSxzZXRUcmlnZ2VyRWxlbWVudDp2LHRyYW5zaXRpb25TdGF0dXM6ZXQsbGFzdE9wZW5DaGFuZ2VSZWFzb246TyxpbnN0YW50VHlwZTpDLG9uT3BlbkNoYW5nZUNvbXBsZXRlOmksc2V0SG92ZXJFbmFibGVkOkUsdHlwaW5nUmVmOmVDLG1vZGFsOkgsZGlzYWJsZWQ6cyxwYXJlbnQ6dCxyb290SWQ6cSxhbGxvd01vdXNlRW50ZXI6VixzZXRBbGxvd01vdXNlRW50ZXI6JH0pLFtqLGVtLGVQLGVCLGVPLFIsTSxKLFksTixlcCxldCx5LFEsTyxDLGksSCxzLHQscSxWLCRdKSxlVD0oMCxBLmpzeCkobHguUHJvdmlkZXIse3ZhbHVlOmVJLGNoaWxkcmVuOnJ9KTtyZXR1cm4gdm9pZCAwPT09dC50eXBlfHxcImNvbnRleHQtbWVudVwiPT09dC50eXBlPygwLEEuanN4KShhTyx7Y2hpbGRyZW46ZVR9KTplVH07ZnVuY3Rpb24gbFgoZSx0LG4scil7dmFyIG8sYSxpLGwscztsZXQgYz1hbChsRykuY3VycmVudDtyZXR1cm4gbz1jLGE9ZSxpPXQsbD1uLHM9ciwoby5yZWZzWzBdIT09YXx8by5yZWZzWzFdIT09aXx8by5yZWZzWzJdIT09bHx8by5yZWZzWzNdIT09cykmJmxRKGMsW2UsdCxuLHJdKSxjLmNhbGxiYWNrfWZ1bmN0aW9uIGxHKCl7cmV0dXJue2NhbGxiYWNrOm51bGwsY2xlYW51cDpudWxsLHJlZnM6W119fWZ1bmN0aW9uIGxRKGUsdCl7aWYoZS5yZWZzPXQsdC5ldmVyeShlPT5udWxsPT1lKSl7ZS5jYWxsYmFjaz1udWxsO3JldHVybn1lLmNhbGxiYWNrPW49PntpZihlLmNsZWFudXAmJihlLmNsZWFudXAoKSxlLmNsZWFudXA9bnVsbCksbnVsbCE9bil7bGV0IHI9QXJyYXkodC5sZW5ndGgpLmZpbGwobnVsbCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0xKXtsZXQgbz10W2VdO2lmKG51bGwhPW8pc3dpdGNoKHR5cGVvZiBvKXtjYXNlXCJmdW5jdGlvblwiOntsZXQgdD1vKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihyW2VdPXQpO2JyZWFrfWNhc2VcIm9iamVjdFwiOm8uY3VycmVudD1ufX1lLmNsZWFudXA9KCk9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTEpe2xldCBuPXRbZV07aWYobnVsbCE9bilzd2l0Y2godHlwZW9mIG4pe2Nhc2VcImZ1bmN0aW9uXCI6e2xldCB0PXJbZV07XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KCk6bihudWxsKTticmVha31jYXNlXCJvYmplY3RcIjpuLmN1cnJlbnQ9bnVsbH19fX19fWxldCBsSj1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydGluZ1N0eWxlPVwiZGF0YS1zdGFydGluZy1zdHlsZVwiLGUuZW5kaW5nU3R5bGU9XCJkYXRhLWVuZGluZy1zdHlsZVwiLGV9KHt9KSxsMD17W2xKLnN0YXJ0aW5nU3R5bGVdOlwiXCJ9LGwxPXtbbEouZW5kaW5nU3R5bGVdOlwiXCJ9LGwyPXt0cmFuc2l0aW9uU3RhdHVzOmU9Plwic3RhcnRpbmdcIj09PWU/bDA6XCJlbmRpbmdcIj09PWU/bDE6bnVsbH0sbDQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUub3Blbj1cImRhdGEtb3BlblwiLGUuY2xvc2VkPVwiZGF0YS1jbG9zZWRcIixlW2Uuc3RhcnRpbmdTdHlsZT1sSi5zdGFydGluZ1N0eWxlXT1cInN0YXJ0aW5nU3R5bGVcIixlW2UuZW5kaW5nU3R5bGU9bEouZW5kaW5nU3R5bGVdPVwiZW5kaW5nU3R5bGVcIixlLmFuY2hvckhpZGRlbj1cImRhdGEtYW5jaG9yLWhpZGRlblwiLGV9KHt9KSxsNT1mdW5jdGlvbihlKXtyZXR1cm4gZS5wb3B1cE9wZW49XCJkYXRhLXBvcHVwLW9wZW5cIixlLnByZXNzZWQ9XCJkYXRhLXByZXNzZWRcIixlfSh7fSksbDM9e1tsNS5wb3B1cE9wZW5dOlwiXCJ9LGw2PXtbbDUucG9wdXBPcGVuXTpcIlwiLFtsNS5wcmVzc2VkXTpcIlwifSxsOT17W2w0Lm9wZW5dOlwiXCJ9LGw4PXtbbDQuY2xvc2VkXTpcIlwifSxsNz17W2w0LmFuY2hvckhpZGRlbl06XCJcIn0sc2U9e29wZW46ZT0+ZT9sMzpudWxsfSxzdD17b3BlbjplPT5lP2w2Om51bGx9LHNuPXtvcGVuOmU9PmU/bDk6bDgsYW5jaG9ySGlkZGVuOmU9PmU/bDc6bnVsbH0sc3I9cGFyc2VJbnQody52ZXJzaW9uLDEwKTtmdW5jdGlvbiBzbyhlLHQsbj17fSl7bGV0IHI9dC5yZW5kZXIsbz1mdW5jdGlvbihlLHQ9e30pe3ZhciBuLHI7bGV0IG8se2NsYXNzTmFtZTphLHJlbmRlcjppfT1lLHtzdGF0ZTpsPWlaLHJlZjpzLHByb3BzOmMsZGlzYWJsZVN0eWxlSG9va3M6dSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmQsZW5hYmxlZDpmPSEwfT10LHA9Zj8obj1hLHI9bCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24ocik6bik6dm9pZCAwOyEwIT09dSYmKG89dy51c2VNZW1vKCgpPT5mP2Z1bmN0aW9uKGUsdCl7bGV0IG49e307Zm9yKGxldCByIGluIGUpe2xldCBvPWVbcl07aWYodD8uaGFzT3duUHJvcGVydHkocikpe2xldCBlPXRbcl0obyk7bnVsbCE9ZSYmT2JqZWN0LmFzc2lnbihuLGUpO2NvbnRpbnVlfSEwPT09bz9uW2BkYXRhLSR7ci50b0xvd2VyQ2FzZSgpfWBdPVwiXCI6byYmKG5bYGRhdGEtJHtyLnRvTG93ZXJDYXNlKCl9YF09by50b1N0cmluZygpKX1yZXR1cm4gbn0obCxkKTppWixbbCxkLGZdKSk7bGV0IGg9Zj9sTShvLEFycmF5LmlzQXJyYXkoYyk/ZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBsWjtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGxIKGVbMF0sbFopO2xldCB0PXsuLi5sSChlWzBdLGxaKX07Zm9yKGxldCBuPTE7bjxlLmxlbmd0aDtuKz0xKXQ9bEYodCxlW25dKTtyZXR1cm4gdH0oYyk6Yyk/P2laOmlaO3JldHVybihcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQmJihmP0FycmF5LmlzQXJyYXkocyk/aC5yZWY9ZnVuY3Rpb24oZSl7dmFyIHQsbjtsZXQgcj1hbChsRykuY3VycmVudDtyZXR1cm4gdD1yLG49ZSwodC5yZWZzLmxlbmd0aCE9PW4ubGVuZ3RofHx0LnJlZnMuc29tZSgoZSx0KT0+ZSE9PW5bdF0pKSYmbFEocixlKSxyLmNhbGxiYWNrfShbaC5yZWYsc2EoaSksLi4uc10pOmgucmVmPWxYKGgucmVmLHNhKGkpLHMpOmxYKG51bGwsbnVsbCkpLGYpPyh2b2lkIDAhPT1wJiYoaC5jbGFzc05hbWU9bCQoaC5jbGFzc05hbWUscCkpLGgpOmlafSh0LG4pO3JldHVybiExPT09bi5lbmFibGVkP251bGw6ZnVuY3Rpb24oZSx0LG4scil7aWYodCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gdChuLHIpO2xldCBlPWxVKG4sdC5wcm9wcyk7cmV0dXJuIGUucmVmPW4ucmVmLHcuY2xvbmVFbGVtZW50KHQsZSl9aWYoZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciBvLGE7cmV0dXJuIG89ZSxhPW4sXCJidXR0b25cIj09PW8/KDAsQS5qc3gpKFwiYnV0dG9uXCIse3R5cGU6XCJidXR0b25cIiwuLi5hfSk6XCJpbWdcIj09PW8/KDAsQS5qc3gpKFwiaW1nXCIse2FsdDpcIlwiLC4uLmF9KTp3LmNyZWF0ZUVsZW1lbnQobyxhKX10aHJvdyBFcnJvcihcIkJhc2UgVUk6IFJlbmRlciBlbGVtZW50IG9yIGZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZC5cIil9KGUscixvLG4uc3RhdGU/P2laKX1mdW5jdGlvbiBzYShlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT9zcj49MTk/ZS5wcm9wcy5yZWY6ZS5yZWY6bnVsbH1sZXQgc2k9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gc2woZT0hMSl7bGV0IHQ9dy51c2VDb250ZXh0KHNpKTtpZih2b2lkIDA9PT10JiYhZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IENvbXBvc2l0ZVJvb3RDb250ZXh0IGlzIG1pc3NpbmcuIENvbXBvc2l0ZSBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPENvbXBvc2l0ZS5Sb290Pi5cIik7cmV0dXJuIHR9ZnVuY3Rpb24gc3MoZT17fSl7bGV0e2Rpc2FibGVkOnQ9ITEsZm9jdXNhYmxlV2hlbkRpc2FibGVkOm4sdGFiSW5kZXg6cj0wLG5hdGl2ZTpvPSEwfT1lLGE9dy51c2VSZWYobnVsbCksaT12b2lkIDAhPT1zbCghMCksbD1haCgoKT0+e2xldCBlPWEuY3VycmVudDtyZXR1cm4hIShlPy50YWdOYW1lPT09XCJBXCImJmU/LmhyZWYpfSkse3Byb3BzOnN9PWZ1bmN0aW9uKGUpe2xldHtmb2N1c2FibGVXaGVuRGlzYWJsZWQ6dCxkaXNhYmxlZDpuLGNvbXBvc2l0ZTpyPSExLHRhYkluZGV4Om89MCxpc05hdGl2ZUJ1dHRvbjphfT1lLGk9ciYmITEhPT10LGw9ciYmITE9PT10O3JldHVybntwcm9wczp3LnVzZU1lbW8oKCk9PntsZXQgZT17b25LZXlEb3duKGUpe24mJnQmJlwiVGFiXCIhPT1lLmtleSYmZS5wcmV2ZW50RGVmYXVsdCgpfX07cmV0dXJuIHJ8fChlLnRhYkluZGV4PW8sIWEmJm4mJihlLnRhYkluZGV4PXQ/bzotMSkpLChhJiYodHx8aSl8fCFhJiZuKSYmKGVbXCJhcmlhLWRpc2FibGVkXCJdPW4pLGEmJighdHx8bCkmJihlLmRpc2FibGVkPW4pLGV9LFtyLG4sdCxpLGwsYSxvXSl9fSh7Zm9jdXNhYmxlV2hlbkRpc2FibGVkOm4sZGlzYWJsZWQ6dCxjb21wb3NpdGU6aSx0YWJJbmRleDpyLGlzTmF0aXZlQnV0dG9uOm99KTtyZXR1cm4gYUMoKCk9PntsZXQgZT1hLmN1cnJlbnQ7ZSBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50JiZpJiZ0JiZ2b2lkIDA9PT1zLmRpc2FibGVkJiZlLmRpc2FibGVkJiYoZS5kaXNhYmxlZD0hMSl9LFt0LHMuZGlzYWJsZWQsaV0pLHtnZXRCdXR0b25Qcm9wczp3LnVzZUNhbGxiYWNrKChlPXt9KT0+e2xldHtvbkNsaWNrOm4sb25Nb3VzZURvd246cixvbktleVVwOmEsb25LZXlEb3duOmksb25Qb2ludGVyRG93bjpjLC4uLnV9PWU7cmV0dXJuIGxVKHt0eXBlOm8/XCJidXR0b25cIjp2b2lkIDAsb25DbGljayhlKXtpZih0KXJldHVybiB2b2lkIGUucHJldmVudERlZmF1bHQoKTtuPy4oZSl9LG9uTW91c2VEb3duKGUpe3R8fHI/LihlKX0sb25LZXlEb3duKGUpe2lmKHR8fChsVihlKSxpPy4oZSkpLGUuYmFzZVVJSGFuZGxlclByZXZlbnRlZClyZXR1cm47bGV0IHI9ZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXQmJiFvJiYhbCgpJiYhdCxhPVwiRW50ZXJcIj09PWUua2V5LHM9XCIgXCI9PT1lLmtleTtyJiYoKHN8fGEpJiZlLnByZXZlbnREZWZhdWx0KCksYSYmbj8uKGUpKX0sb25LZXlVcChlKXt0fHwobFYoZSksYT8uKGUpKSwhZS5iYXNlVUlIYW5kbGVyUHJldmVudGVkJiYoZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXR8fG98fHR8fFwiIFwiIT09ZS5rZXl8fG4/LihlKSl9LG9uUG9pbnRlckRvd24oZSl7aWYodClyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7Yz8uKGUpfX0sbz92b2lkIDA6e3JvbGU6XCJidXR0b25cIn0scyx1KX0sW3QscyxvLGxdKSxidXR0b25SZWY6YX19bGV0IHNjPXcuY3JlYXRlQ29udGV4dCh7cmVnaXN0ZXI6KCk9Pnt9LHVucmVnaXN0ZXI6KCk9Pnt9LHN1YnNjcmliZU1hcENoYW5nZTooKT0+KCk9Pnt9LGVsZW1lbnRzUmVmOntjdXJyZW50OltdfSxuZXh0SW5kZXhSZWY6e2N1cnJlbnQ6MH19KSxzdT1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLk5vbmU9MF09XCJOb25lXCIsZVtlLkd1ZXNzRnJvbU9yZGVyPTFdPVwiR3Vlc3NGcm9tT3JkZXJcIixlfSh7fSk7ZnVuY3Rpb24gc2QoZT17fSl7bGV0e2xhYmVsOnQsbWV0YWRhdGE6bix0ZXh0UmVmOnIsaW5kZXhHdWVzc0JlaGF2aW9yOm99PWUse3JlZ2lzdGVyOmEsdW5yZWdpc3RlcjppLHN1YnNjcmliZU1hcENoYW5nZTpsLGVsZW1lbnRzUmVmOnMsbGFiZWxzUmVmOmMsbmV4dEluZGV4UmVmOnV9PXcudXNlQ29udGV4dChzYyksZD13LnVzZVJlZigtMSksW2YscF09dy51c2VTdGF0ZShvPT09c3UuR3Vlc3NGcm9tT3JkZXI/KCk9PntpZigtMT09PWQuY3VycmVudCl7bGV0IGU9dS5jdXJyZW50O3UuY3VycmVudCs9MSxkLmN1cnJlbnQ9ZX1yZXR1cm4gZC5jdXJyZW50fTotMSksaD13LnVzZVJlZihudWxsKSxtPXcudXNlQ2FsbGJhY2soZT0+e2lmKGguY3VycmVudD1lLC0xIT09ZiYmbnVsbCE9PWUmJihzLmN1cnJlbnRbZl09ZSxjKSl7bGV0IG49dm9pZCAwIT09dDtjLmN1cnJlbnRbZl09bj90OnI/LmN1cnJlbnQ/LnRleHRDb250ZW50Pz9lLnRleHRDb250ZW50fX0sW2YscyxjLHQscl0pO3JldHVybiBhQygoKT0+e2xldCBlPWguY3VycmVudDtpZihlKXJldHVybiBhKGUsbiksKCk9PntpKGUpfX0sW2EsaSxuXSksYUMoKCk9PmwoZT0+e2xldCB0PWguY3VycmVudD9lLmdldChoLmN1cnJlbnQpPy5pbmRleDpudWxsO251bGwhPXQmJnAodCl9KSxbbCxwXSksdy51c2VNZW1vKCgpPT4oe3JlZjptLGluZGV4OmZ9KSxbZixtXSl9ZnVuY3Rpb24gc2YoZSl7bGV0e3JlbmRlcjp0LGNsYXNzTmFtZTpuLHN0YXRlOnI9aVoscHJvcHM6bz1pVSxyZWZzOmE9aVUsbWV0YWRhdGE6aSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmwsdGFnOnM9XCJkaXZcIiwuLi5jfT1lLHtjb21wb3NpdGVQcm9wczp1LGNvbXBvc2l0ZVJlZjpkfT1mdW5jdGlvbihlPXt9KXtsZXR7aGlnaGxpZ2h0SXRlbU9uSG92ZXI6dCxoaWdobGlnaHRlZEluZGV4Om4sb25IaWdobGlnaHRlZEluZGV4Q2hhbmdlOnJ9PXNsKCkse3JlZjpvLGluZGV4OmF9PXNkKGUpLGk9bj09PWEsbD13LnVzZVJlZihudWxsKSxzPWxYKG8sbCk7cmV0dXJue2NvbXBvc2l0ZVByb3BzOncudXNlTWVtbygoKT0+KHt0YWJJbmRleDppPzA6LTEsb25Gb2N1cygpe3IoYSl9LG9uTW91c2VNb3ZlKCl7bGV0IGU9bC5jdXJyZW50O2lmKCF0fHwhZSlyZXR1cm47bGV0IG49ZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKXx8XCJ0cnVlXCI9PT1lLmFyaWFEaXNhYmxlZDtpfHxufHxlLmZvY3VzKCl9fSksW2kscixhLHRdKSxjb21wb3NpdGVSZWY6cyxpbmRleDphfX0oe21ldGFkYXRhOml9KTtyZXR1cm4gc28ocyxlLHtzdGF0ZTpyLHJlZjpbLi4uYSxkXSxwcm9wczpbdSwuLi5vLGNdLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6bH0pfWxldCBzcD13LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7cmVuZGVyOm4sY2xhc3NOYW1lOnIsZGlzYWJsZWQ6bz0hMSxuYXRpdmVCdXR0b246YT0hMCwuLi5pfT1lLHt0cmlnZ2VyUHJvcHM6bCxkaXNhYmxlZDpzLHNldFRyaWdnZXJFbGVtZW50OmMsb3Blbjp1LGFsbG93TW91c2VVcFRyaWdnZXJSZWY6ZCxwb3NpdGlvbmVyUmVmOmYscGFyZW50OnAsbGFzdE9wZW5DaGFuZ2VSZWFzb246aCxyb290SWQ6bX09bHcoKSxnPW98fHMseT13LnVzZVJlZihudWxsKSx2PWFkKCkse2dldEJ1dHRvblByb3BzOmIsYnV0dG9uUmVmOnh9PXNzKHtkaXNhYmxlZDpnLG5hdGl2ZTphfSksQz1sWCh4LGMpLHtldmVudHM6X309YWooKTt3LnVzZUVmZmVjdCgoKT0+e3V8fHZvaWQgMCE9PXAudHlwZXx8KGQuY3VycmVudD0hMSl9LFtkLHUscC50eXBlXSk7bGV0IGs9YWgoZT0+e2lmKCF5LmN1cnJlbnQpcmV0dXJuO3YuY2xlYXIoKSxkLmN1cnJlbnQ9ITE7bGV0IHQ9ZS50YXJnZXQ7aWYoaXYoeS5jdXJyZW50LHQpfHxpdihmLmN1cnJlbnQsdCl8fHQ9PT15LmN1cnJlbnR8fG51bGwhPXQmJmZ1bmN0aW9uIGUodCl7cmV0dXJuIGFOKHQpJiZ0Lmhhc0F0dHJpYnV0ZShcImRhdGEtcm9vdG93bmVyaWRcIik/dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJvb3Rvd25lcmlkXCIpPz92b2lkIDA6YVgodCk/dm9pZCAwOmUoYUoodCkpfSh0KT09PW0pcmV0dXJuO2xldCBuPWZ1bmN0aW9uKGUpe2xldCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLFwiOjpiZWZvcmVcIikscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLFwiOjphZnRlclwiKTtpZihcIm5vbmVcIj09PW4uY29udGVudCYmXCJub25lXCI9PT1yLmNvbnRlbnQpcmV0dXJuIHQ7bGV0IG89cGFyc2VGbG9hdChuLndpZHRoKXx8MCxhPXBhcnNlRmxvYXQobi5oZWlnaHQpfHwwLGk9cGFyc2VGbG9hdChyLndpZHRoKXx8MCxsPXBhcnNlRmxvYXQoci5oZWlnaHQpfHwwLHM9TWF0aC5tYXgodC53aWR0aCxvLGkpLGM9TWF0aC5tYXgodC5oZWlnaHQsYSxsKSx1PXMtdC53aWR0aCxkPWMtdC5oZWlnaHQ7cmV0dXJue2xlZnQ6dC5sZWZ0LXUvMixyaWdodDp0LnJpZ2h0K3UvMix0b3A6dC50b3AtZC8yLGJvdHRvbTp0LmJvdHRvbStkLzJ9fSh5LmN1cnJlbnQpO2UuY2xpZW50WD49bi5sZWZ0LTImJmUuY2xpZW50WDw9bi5yaWdodCsyJiZlLmNsaWVudFk+PW4udG9wLTImJmUuY2xpZW50WTw9bi5ib3R0b20rMnx8Xy5lbWl0KFwiY2xvc2VcIix7ZG9tRXZlbnQ6ZSxyZWFzb246XCJjYW5jZWwtb3BlblwifSl9KTt3LnVzZUVmZmVjdCgoKT0+e3UmJlwidHJpZ2dlci1ob3ZlclwiPT09aCYmbFMoeS5jdXJyZW50KS5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGsse29uY2U6ITB9KX0sW3UsayxoXSk7bGV0IEU9XCJtZW51YmFyXCI9PT1wLnR5cGUsaj13LnVzZUNhbGxiYWNrKGU9PmxVKEU/e3JvbGU6XCJtZW51aXRlbVwifTp7fSx7XCJhcmlhLWhhc3BvcHVwXCI6XCJtZW51XCIscmVmOkMsb25Nb3VzZURvd246ZT0+e3V8fCh2LnN0YXJ0KDIwMCwoKT0+e2QuY3VycmVudD0hMH0pLGxTKGUuY3VycmVudFRhcmdldCkuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixrLHtvbmNlOiEwfSkpfX0sZSxiKSxbYixDLHUsZCx2LGssRV0pLFM9dy51c2VNZW1vKCgpPT4oe2Rpc2FibGVkOmcsb3Blbjp1fSksW2csdV0pLE89W3ksdCx4XSxCPVtsLGksal0sUD1zbyhcImJ1dHRvblwiLGUse2VuYWJsZWQ6IUUsY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzdCxzdGF0ZTpTLHJlZjpPLHByb3BzOkJ9KTtyZXR1cm4gRT8oMCxBLmpzeCkoc2Yse3RhZzpcImJ1dHRvblwiLHJlbmRlcjpuLGNsYXNzTmFtZTpyLHN0YXRlOlMscmVmczpPLHByb3BzOkIsY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzdH0pOlB9KSxzaD17Y2xpcDpcInJlY3QoMCAwIDAgMClcIixvdmVyZmxvdzpcImhpZGRlblwiLHdoaXRlU3BhY2U6XCJub3dyYXBcIixwb3NpdGlvbjpcImZpeGVkXCIsdG9wOjAsbGVmdDowLGJvcmRlcjowLHBhZGRpbmc6MCx3aWR0aDoxLGhlaWdodDoxLG1hcmdpbjotMX0sc209dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0W24scl09dy51c2VTdGF0ZSgpO3JldHVybiBhQygoKT0+e2llJiZyKFwiYnV0dG9uXCIpfSxbXSksKDAsQS5qc3gpKFwic3BhblwiLHsuLi5lLHJlZjp0LHRhYkluZGV4OjAscm9sZTpuLFwiYXJpYS1oaWRkZW5cIjohbnx8dm9pZCAwLHN0eWxlOnNoLFwiZGF0YS1iYXNlLXVpLWZvY3VzLWd1YXJkXCI6XCJcIn0pfSk7dmFyIHNnPSdpbnB1dDpub3QoW2luZXJ0XSksc2VsZWN0Om5vdChbaW5lcnRdKSx0ZXh0YXJlYTpub3QoW2luZXJ0XSksYVtocmVmXTpub3QoW2luZXJ0XSksYnV0dG9uOm5vdChbaW5lcnRdKSxbdGFiaW5kZXhdOm5vdChzbG90KTpub3QoW2luZXJ0XSksYXVkaW9bY29udHJvbHNdOm5vdChbaW5lcnRdKSx2aWRlb1tjb250cm9sc106bm90KFtpbmVydF0pLFtjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIl0pOm5vdChbaW5lcnRdKSxkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZTpub3QoW2luZXJ0XSksZGV0YWlsczpub3QoW2luZXJ0XSknLHN5PVwidW5kZWZpbmVkXCI9PXR5cGVvZiBFbGVtZW50LHN2PXN5P2Z1bmN0aW9uKCl7fTpFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHxFbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3Rvcnx8RWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yLHNiPSFzeSYmRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGU/ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWV8fG51bGw9PSh0PWUuZ2V0Um9vdE5vZGUpP3ZvaWQgMDp0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplLm93bmVyRG9jdW1lbnR9LHNBPWZ1bmN0aW9uIGUodCxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHIsbz1udWxsPT10fHxudWxsPT0ocj10LmdldEF0dHJpYnV0ZSk/dm9pZCAwOnIuY2FsbCh0LFwiaW5lcnRcIik7cmV0dXJuXCJcIj09PW98fFwidHJ1ZVwiPT09b3x8biYmdCYmZSh0LnBhcmVudE5vZGUpfSxzeD1mdW5jdGlvbihlKXt2YXIgdCxuPW51bGw9PWV8fG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKT92b2lkIDA6dC5jYWxsKGUsXCJjb250ZW50ZWRpdGFibGVcIik7cmV0dXJuXCJcIj09PW58fFwidHJ1ZVwiPT09bn0sc3c9ZnVuY3Rpb24oZSx0LG4pe2lmKHNBKGUpKXJldHVybltdO3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShlLnF1ZXJ5U2VsZWN0b3JBbGwoc2cpKTtyZXR1cm4gdCYmc3YuY2FsbChlLHNnKSYmci51bnNoaWZ0KGUpLHI9ci5maWx0ZXIobil9LHNDPWZ1bmN0aW9uIGUodCxuLHIpe2Zvcih2YXIgbz1bXSxhPUFycmF5LmZyb20odCk7YS5sZW5ndGg7KXt2YXIgaT1hLnNoaWZ0KCk7aWYoIXNBKGksITEpKWlmKFwiU0xPVFwiPT09aS50YWdOYW1lKXt2YXIgbD1pLmFzc2lnbmVkRWxlbWVudHMoKSxzPWUobC5sZW5ndGg/bDppLmNoaWxkcmVuLCEwLHIpO3IuZmxhdHRlbj9vLnB1c2guYXBwbHkobyxzKTpvLnB1c2goe3Njb3BlUGFyZW50OmksY2FuZGlkYXRlczpzfSl9ZWxzZXtzdi5jYWxsKGksc2cpJiZyLmZpbHRlcihpKSYmKG58fCF0LmluY2x1ZGVzKGkpKSYmby5wdXNoKGkpO3ZhciBjPWkuc2hhZG93Um9vdHx8XCJmdW5jdGlvblwiPT10eXBlb2Ygci5nZXRTaGFkb3dSb290JiZyLmdldFNoYWRvd1Jvb3QoaSksdT0hc0EoYywhMSkmJighci5zaGFkb3dSb290RmlsdGVyfHxyLnNoYWRvd1Jvb3RGaWx0ZXIoaSkpO2lmKGMmJnUpe3ZhciBkPWUoITA9PT1jP2kuY2hpbGRyZW46Yy5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/by5wdXNoLmFwcGx5KG8sZCk6by5wdXNoKHtzY29wZVBhcmVudDppLGNhbmRpZGF0ZXM6ZH0pfWVsc2UgYS51bnNoaWZ0LmFwcGx5KGEsaS5jaGlsZHJlbil9fXJldHVybiBvfSxzXz1mdW5jdGlvbihlKXtyZXR1cm4haXNOYU4ocGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCkpfSxzaz1mdW5jdGlvbihlKXtpZighZSl0aHJvdyBFcnJvcihcIk5vIG5vZGUgcHJvdmlkZWRcIik7cmV0dXJuIGUudGFiSW5kZXg8MCYmKC9eKEFVRElPfFZJREVPfERFVEFJTFMpJC8udGVzdChlLnRhZ05hbWUpfHxzeChlKSkmJiFzXyhlKT8wOmUudGFiSW5kZXh9LHNFPWZ1bmN0aW9uKGUsdCl7dmFyIG49c2soZSk7cmV0dXJuIG48MCYmdCYmIXNfKGUpPzA6bn0sc2o9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50YWJJbmRleD09PXQudGFiSW5kZXg/ZS5kb2N1bWVudE9yZGVyLXQuZG9jdW1lbnRPcmRlcjplLnRhYkluZGV4LXQudGFiSW5kZXh9LHNTPWZ1bmN0aW9uKGUpe3JldHVyblwiSU5QVVRcIj09PWUudGFnTmFtZX0sc089ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dLmNoZWNrZWQmJmVbbl0uZm9ybT09PXQpcmV0dXJuIGVbbl19LHNCPWZ1bmN0aW9uKGUpe2lmKCFlLm5hbWUpcmV0dXJuITA7dmFyIHQsbj1lLmZvcm18fHNiKGUpLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInK2UrJ1wiXScpfTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQ1NTJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuQ1NTLmVzY2FwZSl0PXIod2luZG93LkNTUy5lc2NhcGUoZS5uYW1lKSk7ZWxzZSB0cnl7dD1yKGUubmFtZSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJMb29rcyBsaWtlIHlvdSBoYXZlIGEgcmFkaW8gYnV0dG9uIHdpdGggYSBuYW1lIGF0dHJpYnV0ZSBjb250YWluaW5nIGludmFsaWQgQ1NTIHNlbGVjdG9yIGNoYXJhY3RlcnMgYW5kIG5lZWQgdGhlIENTUy5lc2NhcGUgcG9seWZpbGw6ICVzXCIsZS5tZXNzYWdlKSwhMX12YXIgbz1zTyh0LGUuZm9ybSk7cmV0dXJuIW98fG89PT1lfSxzUD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gc1ModD1lKSYmXCJyYWRpb1wiPT09dC50eXBlJiYhc0IoZSl9LHNJPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9ZSYmc2IoZSksYz1udWxsPT0odD1zKT92b2lkIDA6dC5ob3N0LHU9ITE7aWYocyYmcyE9PWUpZm9yKHU9ISEobnVsbCE9KG49YykmJm51bGwhPShyPW4ub3duZXJEb2N1bWVudCkmJnIuY29udGFpbnMoYyl8fG51bGwhPWUmJm51bGwhPShvPWUub3duZXJEb2N1bWVudCkmJm8uY29udGFpbnMoZSkpOyF1JiZjOyl1PSEhKG51bGwhPShpPWM9bnVsbD09KGE9cz1zYihjKSk/dm9pZCAwOmEuaG9zdCkmJm51bGwhPShsPWkub3duZXJEb2N1bWVudCkmJmwuY29udGFpbnMoYykpO3JldHVybiB1fSxzVD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC53aWR0aCxyPXQuaGVpZ2h0O3JldHVybiAwPT09biYmMD09PXJ9LHN6PWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kaXNwbGF5Q2hlY2sscj10LmdldFNoYWRvd1Jvb3Q7aWYoXCJoaWRkZW5cIj09PWdldENvbXB1dGVkU3R5bGUoZSkudmlzaWJpbGl0eSlyZXR1cm4hMDt2YXIgbz1zdi5jYWxsKGUsXCJkZXRhaWxzPnN1bW1hcnk6Zmlyc3Qtb2YtdHlwZVwiKT9lLnBhcmVudEVsZW1lbnQ6ZTtpZihzdi5jYWxsKG8sXCJkZXRhaWxzOm5vdChbb3Blbl0pICpcIikpcmV0dXJuITA7aWYobiYmXCJmdWxsXCIhPT1uJiZcImxlZ2FjeS1mdWxsXCIhPT1uKXtpZihcIm5vbi16ZXJvLWFyZWFcIj09PW4pcmV0dXJuIHNUKGUpfWVsc2V7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7Zm9yKHZhciBhPWU7ZTspe3ZhciBpPWUucGFyZW50RWxlbWVudCxsPXNiKGUpO2lmKGkmJiFpLnNoYWRvd1Jvb3QmJiEwPT09cihpKSlyZXR1cm4gc1QoZSk7ZT1lLmFzc2lnbmVkU2xvdD9lLmFzc2lnbmVkU2xvdDppfHxsPT09ZS5vd25lckRvY3VtZW50P2k6bC5ob3N0fWU9YX1pZihzSShlKSlyZXR1cm4hZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDtpZihcImxlZ2FjeS1mdWxsXCIhPT1uKXJldHVybiEwfXJldHVybiExfSxzRD1mdW5jdGlvbihlKXtpZigvXihJTlBVVHxCVVRUT058U0VMRUNUfFRFWFRBUkVBKSQvLnRlc3QoZS50YWdOYW1lKSlmb3IodmFyIHQ9ZS5wYXJlbnRFbGVtZW50O3Q7KXtpZihcIkZJRUxEU0VUXCI9PT10LnRhZ05hbWUmJnQuZGlzYWJsZWQpe2Zvcih2YXIgbj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKXt2YXIgcj10LmNoaWxkcmVuLml0ZW0obik7aWYoXCJMRUdFTkRcIj09PXIudGFnTmFtZSlyZXR1cm4hIXN2LmNhbGwodCxcImZpZWxkc2V0W2Rpc2FibGVkXSAqXCIpfHwhci5jb250YWlucyhlKX1yZXR1cm4hMH10PXQucGFyZW50RWxlbWVudH1yZXR1cm4hMX0sc0w9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO3JldHVybiEodC5kaXNhYmxlZHx8c0EodCl8fHNTKG49dCkmJlwiaGlkZGVuXCI9PT1uLnR5cGV8fHN6KHQsZSl8fFwiREVUQUlMU1wiPT09KHI9dCkudGFnTmFtZSYmQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KHIuY2hpbGRyZW4pLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuXCJTVU1NQVJZXCI9PT1lLnRhZ05hbWV9KXx8c0QodCkpfSxzTj1mdW5jdGlvbihlLHQpe3JldHVybiEoc1AodCl8fDA+c2sodCkpJiYhIXNMKGUsdCl9LHNSPWZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApO3JldHVybiEhaXNOYU4odCl8fCEhKHQ+PTApfSxzTT1mdW5jdGlvbiBlKHQpe3ZhciBuPVtdLHI9W107cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LG8pe3ZhciBhPSEhdC5zY29wZVBhcmVudCxpPWE/dC5zY29wZVBhcmVudDp0LGw9c0UoaSxhKSxzPWE/ZSh0LmNhbmRpZGF0ZXMpOmk7MD09PWw/YT9uLnB1c2guYXBwbHkobixzKTpuLnB1c2goaSk6ci5wdXNoKHtkb2N1bWVudE9yZGVyOm8sdGFiSW5kZXg6bCxpdGVtOnQsaXNTY29wZTphLGNvbnRlbnQ6c30pfSksci5zb3J0KHNqKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5pc1Njb3BlP2UucHVzaC5hcHBseShlLHQuY29udGVudCk6ZS5wdXNoKHQuY29udGVudCksZX0sW10pLmNvbmNhdChuKX0sc1o9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc00oKHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/c0MoW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOnNOLmJpbmQobnVsbCx0KSxmbGF0dGVuOiExLGdldFNoYWRvd1Jvb3Q6dC5nZXRTaGFkb3dSb290LHNoYWRvd1Jvb3RGaWx0ZXI6c1J9KTpzdyhlLHQuaW5jbHVkZUNvbnRhaW5lcixzTi5iaW5kKG51bGwsdCkpKX0sc1U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4odD10fHx7fSkuZ2V0U2hhZG93Um9vdD9zQyhbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6c0wuYmluZChudWxsLHQpLGZsYXR0ZW46ITAsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3R9KTpzdyhlLHQuaW5jbHVkZUNvbnRhaW5lcixzTC5iaW5kKG51bGwsdCkpfSxzRj1mdW5jdGlvbihlLHQpe2lmKHQ9dHx8e30sIWUpdGhyb3cgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiExIT09c3YuY2FsbChlLHNnKSYmc04odCxlKX07bGV0IHNxPSgpPT4oe2dldFNoYWRvd1Jvb3Q6ITAsZGlzcGxheUNoZWNrOlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlc2l6ZU9ic2VydmVyJiZSZXNpemVPYnNlcnZlci50b1N0cmluZygpLmluY2x1ZGVzKFwiW25hdGl2ZSBjb2RlXVwiKT9cImZ1bGxcIjpcIm5vbmVcIn0pO2Z1bmN0aW9uIHNIKGUsdCl7bGV0IG49c1ooZSxzcSgpKSxyPW4ubGVuZ3RoO2lmKDA9PT1yKXJldHVybjtsZXQgbz1peShpeChlKSksYT1uLmluZGV4T2Yobyk7cmV0dXJuIG5bLTE9PT1hPzE9PT10PzA6ci0xOmErdF19ZnVuY3Rpb24gc1YoZSl7cmV0dXJuIHNIKGl4KGUpLmJvZHksMSl8fGV9ZnVuY3Rpb24gcyQoZSl7cmV0dXJuIHNIKGl4KGUpLmJvZHksLTEpfHxlfWZ1bmN0aW9uIHNXKGUsdCl7bGV0IG49dHx8ZS5jdXJyZW50VGFyZ2V0LHI9ZS5yZWxhdGVkVGFyZ2V0O3JldHVybiFyfHwhaXYobixyKX1mdW5jdGlvbiBzWShlKXtzWihlLHNxKCkpLmZvckVhY2goZT0+e2UuZGF0YXNldC50YWJpbmRleD1lLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpfHxcIlwiLGUuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpfSl9ZnVuY3Rpb24gc0soZSl7ZS5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGFiaW5kZXhdXCIpLmZvckVhY2goZT0+e2xldCB0PWUuZGF0YXNldC50YWJpbmRleDtkZWxldGUgZS5kYXRhc2V0LnRhYmluZGV4LHQ/ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLHQpOmUucmVtb3ZlQXR0cmlidXRlKFwidGFiaW5kZXhcIil9KX1sZXQgc1g9dy5jcmVhdGVDb250ZXh0KG51bGwpLHNHPSgpPT53LnVzZUNvbnRleHQoc1gpLHNRPWlrKFwicG9ydGFsXCIpO2Z1bmN0aW9uIHNKKGU9e30pe2xldHtpZDp0LHJvb3Q6bn09ZSxyPWF4KCksbz1zRygpLFthLGldPXcudXNlU3RhdGUobnVsbCksbD13LnVzZVJlZihudWxsKTtyZXR1cm4gYUMoKCk9PigpPT57YT8ucmVtb3ZlKCkscXVldWVNaWNyb3Rhc2soKCk9PntsLmN1cnJlbnQ9bnVsbH0pfSxbYV0pLGFDKCgpPT57aWYoIXJ8fGwuY3VycmVudClyZXR1cm47bGV0IGU9dD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTpudWxsO2lmKCFlKXJldHVybjtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uaWQ9cixuLnNldEF0dHJpYnV0ZShzUSxcIlwiKSxlLmFwcGVuZENoaWxkKG4pLGwuY3VycmVudD1uLGkobil9LFt0LHJdKSxhQygoKT0+e2lmKG51bGw9PT1ufHwhcnx8bC5jdXJyZW50KXJldHVybjtsZXQgZT1ufHxvPy5wb3J0YWxOb2RlO2UmJiFhRChlKSYmKGU9ZS5jdXJyZW50KSxlPWV8fGRvY3VtZW50LmJvZHk7bGV0IGE9bnVsbDt0JiYoKGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaWQ9dCxlLmFwcGVuZENoaWxkKGEpKTtsZXQgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3MuaWQ9cixzLnNldEF0dHJpYnV0ZShzUSxcIlwiKSwoZT1hfHxlKS5hcHBlbmRDaGlsZChzKSxsLmN1cnJlbnQ9cyxpKHMpfSxbdCxuLHIsb10pLGF9ZnVuY3Rpb24gczAoZSl7bGV0e2NoaWxkcmVuOnQsaWQ6bixyb290OnIscHJlc2VydmVUYWJPcmRlcjpvPSEwfT1lLGE9c0ooe2lkOm4scm9vdDpyfSksW2ksbF09dy51c2VTdGF0ZShudWxsKSxzPXcudXNlUmVmKG51bGwpLGM9dy51c2VSZWYobnVsbCksdT13LnVzZVJlZihudWxsKSxkPXcudXNlUmVmKG51bGwpLGY9aT8ubW9kYWwscD1pPy5vcGVuLGg9ISFpJiYhaS5tb2RhbCYmaS5vcGVuJiZvJiYhIShyfHxhKTtyZXR1cm4gdy51c2VFZmZlY3QoKCk9PntpZihhJiZvJiYhZilyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLGUsITApLGEuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsZSwhMCksKCk9PnthLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsZSwhMCksYS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIixlLCEwKX07ZnVuY3Rpb24gZShlKXtpZihhJiZzVyhlKSl7bGV0IHQ9XCJmb2N1c2luXCI9PT1lLnR5cGU7KHQ/c0s6c1kpKGEpfX19LFthLG8sZl0pLHcudXNlRWZmZWN0KCgpPT57YSYmKHB8fHNLKGEpKX0sW3AsYV0pLCgwLEEuanN4cykoc1guUHJvdmlkZXIse3ZhbHVlOncudXNlTWVtbygoKT0+KHtwcmVzZXJ2ZVRhYk9yZGVyOm8sYmVmb3JlT3V0c2lkZVJlZjpzLGFmdGVyT3V0c2lkZVJlZjpjLGJlZm9yZUluc2lkZVJlZjp1LGFmdGVySW5zaWRlUmVmOmQscG9ydGFsTm9kZTphLHNldEZvY3VzTWFuYWdlclN0YXRlOmx9KSxbbyxhXSksY2hpbGRyZW46W2gmJmEmJigwLEEuanN4KShzbSx7XCJkYXRhLXR5cGVcIjpcIm91dHNpZGVcIixyZWY6cyxvbkZvY3VzOmU9PntpZihzVyhlLGEpKXUuY3VycmVudD8uZm9jdXMoKTtlbHNle2xldCBlPXMkKGk/aS5kb21SZWZlcmVuY2U6bnVsbCk7ZT8uZm9jdXMoKX19fSksaCYmYSYmKDAsQS5qc3gpKFwic3BhblwiLHtcImFyaWEtb3duc1wiOmEuaWQsc3R5bGU6c2h9KSxhJiZlaC5jcmVhdGVQb3J0YWwodCxhKSxoJiZhJiYoMCxBLmpzeCkoc20se1wiZGF0YS10eXBlXCI6XCJvdXRzaWRlXCIscmVmOmMsb25Gb2N1czplPT57aWYoc1coZSxhKSlkLmN1cnJlbnQ/LmZvY3VzKCk7ZWxzZXtsZXQgdD1zVihpP2kuZG9tUmVmZXJlbmNlOm51bGwpO3Q/LmZvY3VzKCksaT8uY2xvc2VPbkZvY3VzT3V0JiZpPy5vbk9wZW5DaGFuZ2UoITEsZS5uYXRpdmVFdmVudCxcImZvY3VzLW91dFwiKX19fSldfSl9bGV0IHMxPXcuY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIHMyKGUpe2xldHtjaGlsZHJlbjp0LGtlZXBNb3VudGVkOm49ITEsY29udGFpbmVyOnJ9PWUse21vdW50ZWQ6b309bHcoKTtyZXR1cm4gb3x8bj8oMCxBLmpzeCkoczEuUHJvdmlkZXIse3ZhbHVlOm4sY2hpbGRyZW46KDAsQS5qc3gpKHMwLHtyb290OnIsY2hpbGRyZW46dH0pfSk6bnVsbH1sZXQgczQ9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gczUoZSx0LG4pe2xldCByLHtyZWZlcmVuY2U6byxmbG9hdGluZzphfT1lLGk9aTgodCksbD1pMyhpOCh0KSkscz1pNihsKSxjPWk0KHQpLHU9XCJ5XCI9PT1pLGQ9by54K28ud2lkdGgvMi1hLndpZHRoLzIsZj1vLnkrby5oZWlnaHQvMi1hLmhlaWdodC8yLHA9b1tzXS8yLWFbc10vMjtzd2l0Y2goYyl7Y2FzZVwidG9wXCI6cj17eDpkLHk6by55LWEuaGVpZ2h0fTticmVhaztjYXNlXCJib3R0b21cIjpyPXt4OmQseTpvLnkrby5oZWlnaHR9O2JyZWFrO2Nhc2VcInJpZ2h0XCI6cj17eDpvLngrby53aWR0aCx5OmZ9O2JyZWFrO2Nhc2VcImxlZnRcIjpyPXt4Om8ueC1hLndpZHRoLHk6Zn07YnJlYWs7ZGVmYXVsdDpyPXt4Om8ueCx5Om8ueX19c3dpdGNoKGk1KHQpKXtjYXNlXCJzdGFydFwiOnJbbF0tPXAqKG4mJnU/LTE6MSk7YnJlYWs7Y2FzZVwiZW5kXCI6cltsXSs9cCoobiYmdT8tMToxKX1yZXR1cm4gcn1sZXQgczM9YXN5bmMoZSx0LG4pPT57bGV0e3BsYWNlbWVudDpyPVwiYm90dG9tXCIsc3RyYXRlZ3k6bz1cImFic29sdXRlXCIsbWlkZGxld2FyZTphPVtdLHBsYXRmb3JtOml9PW4sbD1hLmZpbHRlcihCb29sZWFuKSxzPWF3YWl0IChudWxsPT1pLmlzUlRMP3ZvaWQgMDppLmlzUlRMKHQpKSxjPWF3YWl0IGkuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Om99KSx7eDp1LHk6ZH09czUoYyxyLHMpLGY9cixwPXt9LGg9MDtmb3IobGV0IG49MDtuPGwubGVuZ3RoO24rKyl7bGV0e25hbWU6YSxmbjptfT1sW25dLHt4OmcseTp5LGRhdGE6dixyZXNldDpifT1hd2FpdCBtKHt4OnUseTpkLGluaXRpYWxQbGFjZW1lbnQ6cixwbGFjZW1lbnQ6ZixzdHJhdGVneTpvLG1pZGRsZXdhcmVEYXRhOnAscmVjdHM6YyxwbGF0Zm9ybTppLGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxmbG9hdGluZzp0fX0pO3U9bnVsbCE9Zz9nOnUsZD1udWxsIT15P3k6ZCxwPXsuLi5wLFthXTp7Li4ucFthXSwuLi52fX0sYiYmaDw9NTAmJihoKyssXCJvYmplY3RcIj09dHlwZW9mIGImJihiLnBsYWNlbWVudCYmKGY9Yi5wbGFjZW1lbnQpLGIucmVjdHMmJihjPSEwPT09Yi5yZWN0cz9hd2FpdCBpLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTpvfSk6Yi5yZWN0cykse3g6dSx5OmR9PXM1KGMsZixzKSksbj0tMSl9cmV0dXJue3g6dSx5OmQscGxhY2VtZW50OmYsc3RyYXRlZ3k6byxtaWRkbGV3YXJlRGF0YTpwfX07YXN5bmMgZnVuY3Rpb24gczYoZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD17fSk7bGV0e3g6cix5Om8scGxhdGZvcm06YSxyZWN0czppLGVsZW1lbnRzOmwsc3RyYXRlZ3k6c309ZSx7Ym91bmRhcnk6Yz1cImNsaXBwaW5nQW5jZXN0b3JzXCIscm9vdEJvdW5kYXJ5OnU9XCJ2aWV3cG9ydFwiLGVsZW1lbnRDb250ZXh0OmQ9XCJmbG9hdGluZ1wiLGFsdEJvdW5kYXJ5OmY9ITEscGFkZGluZzpwPTB9PWkyKHQsZSksaD1sYShwKSxtPWxbZj9cImZsb2F0aW5nXCI9PT1kP1wicmVmZXJlbmNlXCI6XCJmbG9hdGluZ1wiOmRdLGc9bGkoYXdhaXQgYS5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6bnVsbD09KG49YXdhaXQgKG51bGw9PWEuaXNFbGVtZW50P3ZvaWQgMDphLmlzRWxlbWVudChtKSkpfHxuP206bS5jb250ZXh0RWxlbWVudHx8YXdhaXQgKG51bGw9PWEuZ2V0RG9jdW1lbnRFbGVtZW50P3ZvaWQgMDphLmdldERvY3VtZW50RWxlbWVudChsLmZsb2F0aW5nKSksYm91bmRhcnk6Yyxyb290Qm91bmRhcnk6dSxzdHJhdGVneTpzfSkpLHk9XCJmbG9hdGluZ1wiPT09ZD97eDpyLHk6byx3aWR0aDppLmZsb2F0aW5nLndpZHRoLGhlaWdodDppLmZsb2F0aW5nLmhlaWdodH06aS5yZWZlcmVuY2Usdj1hd2FpdCAobnVsbD09YS5nZXRPZmZzZXRQYXJlbnQ/dm9pZCAwOmEuZ2V0T2Zmc2V0UGFyZW50KGwuZmxvYXRpbmcpKSxiPWF3YWl0IChudWxsPT1hLmlzRWxlbWVudD92b2lkIDA6YS5pc0VsZW1lbnQodikpJiZhd2FpdCAobnVsbD09YS5nZXRTY2FsZT92b2lkIDA6YS5nZXRTY2FsZSh2KSl8fHt4OjEseToxfSxBPWxpKGEuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Q/YXdhaXQgYS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7ZWxlbWVudHM6bCxyZWN0Onksb2Zmc2V0UGFyZW50OnYsc3RyYXRlZ3k6c30pOnkpO3JldHVybnt0b3A6KGcudG9wLUEudG9wK2gudG9wKS9iLnksYm90dG9tOihBLmJvdHRvbS1nLmJvdHRvbStoLmJvdHRvbSkvYi55LGxlZnQ6KGcubGVmdC1BLmxlZnQraC5sZWZ0KS9iLngscmlnaHQ6KEEucmlnaHQtZy5yaWdodCtoLnJpZ2h0KS9iLnh9fWZ1bmN0aW9uIHM5KGUsdCl7cmV0dXJue3RvcDplLnRvcC10LmhlaWdodCxyaWdodDplLnJpZ2h0LXQud2lkdGgsYm90dG9tOmUuYm90dG9tLXQuaGVpZ2h0LGxlZnQ6ZS5sZWZ0LXQud2lkdGh9fWZ1bmN0aW9uIHM4KGUpe3JldHVybiBpWS5zb21lKHQ9PmVbdF0+PTApfWxldCBzNz1uZXcgU2V0KFtcImxlZnRcIixcInRvcFwiXSk7YXN5bmMgZnVuY3Rpb24gY2UoZSx0KXtsZXR7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czpvfT1lLGE9YXdhaXQgKG51bGw9PXIuaXNSVEw/dm9pZCAwOnIuaXNSVEwoby5mbG9hdGluZykpLGk9aTQobiksbD1pNShuKSxzPVwieVwiPT09aTgobiksYz1zNy5oYXMoaSk/LTE6MSx1PWEmJnM/LTE6MSxkPWkyKHQsZSkse21haW5BeGlzOmYsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczpofT1cIm51bWJlclwiPT10eXBlb2YgZD97bWFpbkF4aXM6ZCxjcm9zc0F4aXM6MCxhbGlnbm1lbnRBeGlzOm51bGx9OnttYWluQXhpczpkLm1haW5BeGlzfHwwLGNyb3NzQXhpczpkLmNyb3NzQXhpc3x8MCxhbGlnbm1lbnRBeGlzOmQuYWxpZ25tZW50QXhpc307cmV0dXJuIGwmJlwibnVtYmVyXCI9PXR5cGVvZiBoJiYocD1cImVuZFwiPT09bD8tMSpoOmgpLHM/e3g6cCp1LHk6ZipjfTp7eDpmKmMseTpwKnV9fWZ1bmN0aW9uIGN0KGUpe2xldCB0PWFHKGUpLG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxyPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwLG89YU4oZSksYT1vP2Uub2Zmc2V0V2lkdGg6bixpPW8/ZS5vZmZzZXRIZWlnaHQ6cixsPWlHKG4pIT09YXx8aUcocikhPT1pO3JldHVybiBsJiYobj1hLHI9aSkse3dpZHRoOm4saGVpZ2h0OnIsJDpsfX1mdW5jdGlvbiBjbihlKXtyZXR1cm4gYUwoZSk/ZTplLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIGNyKGUpe2xldCB0PWNuKGUpO2lmKCFhTih0KSlyZXR1cm4gaUooMSk7bGV0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6bywkOmF9PWN0KHQpLGk9KGE/aUcobi53aWR0aCk6bi53aWR0aCkvcixsPShhP2lHKG4uaGVpZ2h0KTpuLmhlaWdodCkvbztyZXR1cm4gaSYmTnVtYmVyLmlzRmluaXRlKGkpfHwoaT0xKSxsJiZOdW1iZXIuaXNGaW5pdGUobCl8fChsPTEpLHt4OmkseTpsfX1sZXQgY289aUooMCk7ZnVuY3Rpb24gY2EoZSl7bGV0IHQ9YVQoZSk7cmV0dXJuIGFZKCkmJnQudmlzdWFsVmlld3BvcnQ/e3g6dC52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LHk6dC52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3B9OmNvfWZ1bmN0aW9uIGNpKGUsdCxuLHIpe3ZhciBvLGEsaTt2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09biYmKG49ITEpO2xldCBsPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1jbihlKSxjPWlKKDEpO3QmJihyP2FMKHIpJiYoYz1jcihyKSk6Yz1jcihlKSk7bGV0IHU9KG89cyx2b2lkIDA9PT0oYT1uKSYmKGE9ITEpLChpPXIpJiYoIWF8fGk9PT1hVChvKSkmJmEpP2NhKHMpOmlKKDApLGQ9KGwubGVmdCt1LngpL2MueCxmPShsLnRvcCt1LnkpL2MueSxwPWwud2lkdGgvYy54LGg9bC5oZWlnaHQvYy55O2lmKHMpe2xldCBlPWFUKHMpLHQ9ciYmYUwocik/YVQocik6cixuPWUsbz1hMShuKTtmb3IoO28mJnImJnQhPT1uOyl7bGV0IGU9Y3IobyksdD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9YUcobyksYT10LmxlZnQrKG8uY2xpZW50TGVmdCtwYXJzZUZsb2F0KHIucGFkZGluZ0xlZnQpKSplLngsaT10LnRvcCsoby5jbGllbnRUb3ArcGFyc2VGbG9hdChyLnBhZGRpbmdUb3ApKSplLnk7ZCo9ZS54LGYqPWUueSxwKj1lLngsaCo9ZS55LGQrPWEsZis9aSxvPWExKG49YVQobykpfX1yZXR1cm4gbGkoe3dpZHRoOnAsaGVpZ2h0OmgseDpkLHk6Zn0pfWZ1bmN0aW9uIGNsKGUsdCl7bGV0IG49YVEoZSkuc2Nyb2xsTGVmdDtyZXR1cm4gdD90LmxlZnQrbjpjaShheihlKSkubGVmdCtufWZ1bmN0aW9uIGNzKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0hMSk7bGV0IHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIubGVmdCt0LnNjcm9sbExlZnQtKG4/MDpjbChlLHIpKTtyZXR1cm57eDpvLHk6ci50b3ArdC5zY3JvbGxUb3B9fWxldCBjYz1uZXcgU2V0KFtcImFic29sdXRlXCIsXCJmaXhlZFwiXSk7ZnVuY3Rpb24gY3UoZSx0LG4pe2xldCByO2lmKFwidmlld3BvcnRcIj09PXQpcj1mdW5jdGlvbihlLHQpe2xldCBuPWFUKGUpLHI9YXooZSksbz1uLnZpc3VhbFZpZXdwb3J0LGE9ci5jbGllbnRXaWR0aCxpPXIuY2xpZW50SGVpZ2h0LGw9MCxzPTA7aWYobyl7YT1vLndpZHRoLGk9by5oZWlnaHQ7bGV0IGU9YVkoKTsoIWV8fGUmJlwiZml4ZWRcIj09PXQpJiYobD1vLm9mZnNldExlZnQscz1vLm9mZnNldFRvcCl9cmV0dXJue3dpZHRoOmEsaGVpZ2h0OmkseDpsLHk6c319KGUsbik7ZWxzZSBpZihcImRvY3VtZW50XCI9PT10KXI9ZnVuY3Rpb24oZSl7bGV0IHQ9YXooZSksbj1hUShlKSxyPWUub3duZXJEb2N1bWVudC5ib2R5LG89aVgodC5zY3JvbGxXaWR0aCx0LmNsaWVudFdpZHRoLHIuc2Nyb2xsV2lkdGgsci5jbGllbnRXaWR0aCksYT1pWCh0LnNjcm9sbEhlaWdodCx0LmNsaWVudEhlaWdodCxyLnNjcm9sbEhlaWdodCxyLmNsaWVudEhlaWdodCksaT0tbi5zY3JvbGxMZWZ0K2NsKGUpLGw9LW4uc2Nyb2xsVG9wO3JldHVyblwicnRsXCI9PT1hRyhyKS5kaXJlY3Rpb24mJihpKz1pWCh0LmNsaWVudFdpZHRoLHIuY2xpZW50V2lkdGgpLW8pLHt3aWR0aDpvLGhlaWdodDphLHg6aSx5Omx9fShheihlKSk7ZWxzZSBpZihhTCh0KSlyPWZ1bmN0aW9uKGUsdCl7bGV0IG49Y2koZSwhMCxcImZpeGVkXCI9PT10KSxyPW4udG9wK2UuY2xpZW50VG9wLG89bi5sZWZ0K2UuY2xpZW50TGVmdCxhPWFOKGUpP2NyKGUpOmlKKDEpLGk9ZS5jbGllbnRXaWR0aCphLngsbD1lLmNsaWVudEhlaWdodCphLnkscz1vKmEueDtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6bCx4OnMseTpyKmEueX19KHQsbik7ZWxzZXtsZXQgbj1jYShlKTtyPXt4OnQueC1uLngseTp0Lnktbi55LHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX1yZXR1cm4gbGkocil9ZnVuY3Rpb24gY2QoZSl7cmV0dXJuXCJzdGF0aWNcIj09PWFHKGUpLnBvc2l0aW9ufWZ1bmN0aW9uIGNmKGUsdCl7aWYoIWFOKGUpfHxcImZpeGVkXCI9PT1hRyhlKS5wb3NpdGlvbilyZXR1cm4gbnVsbDtpZih0KXJldHVybiB0KGUpO2xldCBuPWUub2Zmc2V0UGFyZW50O3JldHVybiBheihlKT09PW4mJihuPW4ub3duZXJEb2N1bWVudC5ib2R5KSxufWZ1bmN0aW9uIGNwKGUsdCl7dmFyIG47bGV0IHI9YVQoZSk7aWYoYXEoZSkpcmV0dXJuIHI7aWYoIWFOKGUpKXtsZXQgdD1hSihlKTtmb3IoO3QmJiFhWCh0KTspe2lmKGFMKHQpJiYhY2QodCkpcmV0dXJuIHQ7dD1hSih0KX1yZXR1cm4gcn1sZXQgbz1jZihlLHQpO2Zvcig7byYmKG49byxhVS5oYXMoYUkobikpKSYmY2Qobyk7KW89Y2Yobyx0KTtyZXR1cm4gbyYmYVgobykmJmNkKG8pJiYhYVcobyk/cjpvfHxmdW5jdGlvbihlKXtsZXQgdD1hSihlKTtmb3IoO2FOKHQpJiYhYVgodCk7KXtpZihhVyh0KSlyZXR1cm4gdDtpZihhcSh0KSlicmVhazt0PWFKKHQpfXJldHVybiBudWxsfShlKXx8cn1sZXQgY2g9YXN5bmMgZnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fGNwLG49dGhpcy5nZXREaW1lbnNpb25zLHI9YXdhaXQgbihlLmZsb2F0aW5nKTtyZXR1cm57cmVmZXJlbmNlOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1hTih0KSxvPWF6KHQpLGE9XCJmaXhlZFwiPT09bixpPWNpKGUsITAsYSx0KSxsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LHM9aUooMCk7aWYocnx8IXImJiFhKWlmKChcImJvZHlcIiE9PWFJKHQpfHxhWihvKSkmJihsPWFRKHQpKSxyKXtsZXQgZT1jaSh0LCEwLGEsdCk7cy54PWUueCt0LmNsaWVudExlZnQscy55PWUueSt0LmNsaWVudFRvcH1lbHNlIG8mJihzLng9Y2wobykpO2EmJiFyJiZvJiYocy54PWNsKG8pKTtsZXQgYz0hb3x8cnx8YT9pSigwKTpjcyhvLGwpLHU9aS5sZWZ0K2wuc2Nyb2xsTGVmdC1zLngtYy54O3JldHVybnt4OnUseTppLnRvcCtsLnNjcm9sbFRvcC1zLnktYy55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX0oZS5yZWZlcmVuY2UsYXdhaXQgdChlLmZsb2F0aW5nKSxlLnN0cmF0ZWd5KSxmbG9hdGluZzp7eDowLHk6MCx3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH19fSxjbT17Y29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Q6ZnVuY3Rpb24oZSl7bGV0e2VsZW1lbnRzOnQscmVjdDpuLG9mZnNldFBhcmVudDpyLHN0cmF0ZWd5Om99PWUsYT1cImZpeGVkXCI9PT1vLGk9YXoociksbD0hIXQmJmFxKHQuZmxvYXRpbmcpO2lmKHI9PT1pfHxsJiZhKXJldHVybiBuO2xldCBzPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGM9aUooMSksdT1pSigwKSxkPWFOKHIpO2lmKChkfHwhZCYmIWEpJiYoKFwiYm9keVwiIT09YUkocil8fGFaKGkpKSYmKHM9YVEocikpLGFOKHIpKSl7bGV0IGU9Y2kocik7Yz1jcihyKSx1Lng9ZS54K3IuY2xpZW50TGVmdCx1Lnk9ZS55K3IuY2xpZW50VG9wfWxldCBmPSFpfHxkfHxhP2lKKDApOmNzKGkscywhMCk7cmV0dXJue3dpZHRoOm4ud2lkdGgqYy54LGhlaWdodDpuLmhlaWdodCpjLnkseDpuLngqYy54LXMuc2Nyb2xsTGVmdCpjLngrdS54K2YueCx5Om4ueSpjLnktcy5zY3JvbGxUb3AqYy55K3UueStmLnl9fSxnZXREb2N1bWVudEVsZW1lbnQ6YXosZ2V0Q2xpcHBpbmdSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50OnQsYm91bmRhcnk6bixyb290Qm91bmRhcnk6cixzdHJhdGVneTpvfT1lLGE9Wy4uLlwiY2xpcHBpbmdBbmNlc3RvcnNcIj09PW4/YXEodCk/W106ZnVuY3Rpb24oZSx0KXtsZXQgbj10LmdldChlKTtpZihuKXJldHVybiBuO2xldCByPWEwKGUsW10sITEpLmZpbHRlcihlPT5hTChlKSYmXCJib2R5XCIhPT1hSShlKSksbz1udWxsLGE9XCJmaXhlZFwiPT09YUcoZSkucG9zaXRpb24saT1hP2FKKGUpOmU7Zm9yKDthTChpKSYmIWFYKGkpOyl7bGV0IHQ9YUcoaSksbj1hVyhpKTtufHxcImZpeGVkXCIhPT10LnBvc2l0aW9ufHwobz1udWxsKSwoYT8hbiYmIW86IW4mJlwic3RhdGljXCI9PT10LnBvc2l0aW9uJiYhIW8mJmNjLmhhcyhvLnBvc2l0aW9uKXx8YVooaSkmJiFuJiZmdW5jdGlvbiBlKHQsbil7bGV0IHI9YUoodCk7cmV0dXJuIShyPT09bnx8IWFMKHIpfHxhWChyKSkmJihcImZpeGVkXCI9PT1hRyhyKS5wb3NpdGlvbnx8ZShyLG4pKX0oZSxpKSk/cj1yLmZpbHRlcihlPT5lIT09aSk6bz10LGk9YUooaSl9cmV0dXJuIHQuc2V0KGUscikscn0odCx0aGlzLl9jKTpbXS5jb25jYXQobikscl0saT1hWzBdLGw9YS5yZWR1Y2UoKGUsbik9PntsZXQgcj1jdSh0LG4sbyk7cmV0dXJuIGUudG9wPWlYKHIudG9wLGUudG9wKSxlLnJpZ2h0PWlLKHIucmlnaHQsZS5yaWdodCksZS5ib3R0b209aUsoci5ib3R0b20sZS5ib3R0b20pLGUubGVmdD1pWChyLmxlZnQsZS5sZWZ0KSxlfSxjdSh0LGksbykpO3JldHVybnt3aWR0aDpsLnJpZ2h0LWwubGVmdCxoZWlnaHQ6bC5ib3R0b20tbC50b3AseDpsLmxlZnQseTpsLnRvcH19LGdldE9mZnNldFBhcmVudDpjcCxnZXRFbGVtZW50UmVjdHM6Y2gsZ2V0Q2xpZW50UmVjdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmZyb20oZS5nZXRDbGllbnRSZWN0cygpKX0sZ2V0RGltZW5zaW9uczpmdW5jdGlvbihlKXtsZXR7d2lkdGg6dCxoZWlnaHQ6bn09Y3QoZSk7cmV0dXJue3dpZHRoOnQsaGVpZ2h0Om59fSxnZXRTY2FsZTpjcixpc0VsZW1lbnQ6YUwsaXNSVEw6ZnVuY3Rpb24oZSl7cmV0dXJuXCJydGxcIj09PWFHKGUpLmRpcmVjdGlvbn19O2Z1bmN0aW9uIGNnKGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBjeShlLHQsbixyKXtsZXQgbzt2b2lkIDA9PT1yJiYocj17fSk7bGV0e2FuY2VzdG9yU2Nyb2xsOmE9ITAsYW5jZXN0b3JSZXNpemU6aT0hMCxlbGVtZW50UmVzaXplOmw9XCJmdW5jdGlvblwiPT10eXBlb2YgUmVzaXplT2JzZXJ2ZXIsbGF5b3V0U2hpZnQ6cz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcixhbmltYXRpb25GcmFtZTpjPSExfT1yLHU9Y24oZSksZD1hfHxpP1suLi51P2EwKHUpOltdLC4uLmEwKHQpXTpbXTtkLmZvckVhY2goZT0+e2EmJmUuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLG4se3Bhc3NpdmU6ITB9KSxpJiZlLmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixuKX0pO2xldCBmPXUmJnM/ZnVuY3Rpb24oZSx0KXtsZXQgbixyPW51bGwsbz1heihlKTtmdW5jdGlvbiBhKCl7dmFyIGU7Y2xlYXJUaW1lb3V0KG4pLG51bGw9PShlPXIpfHxlLmRpc2Nvbm5lY3QoKSxyPW51bGx9cmV0dXJuIWZ1bmN0aW9uIGkobCxzKXt2b2lkIDA9PT1sJiYobD0hMSksdm9pZCAwPT09cyYmKHM9MSksYSgpO2xldCBjPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2xlZnQ6dSx0b3A6ZCx3aWR0aDpmLGhlaWdodDpwfT1jO2lmKGx8fHQoKSwhZnx8IXApcmV0dXJuO2xldCBoPWlRKGQpLG09aVEoby5jbGllbnRXaWR0aC0odStmKSksZz1pUShvLmNsaWVudEhlaWdodC0oZCtwKSkseT17cm9vdE1hcmdpbjotaCtcInB4IFwiKy1tK1wicHggXCIrLWcrXCJweCBcIistaVEodSkrXCJweFwiLHRocmVzaG9sZDppWCgwLGlLKDEscykpfHwxfSx2PSEwO2Z1bmN0aW9uIGIodCl7bGV0IHI9dFswXS5pbnRlcnNlY3Rpb25SYXRpbztpZihyIT09cyl7aWYoIXYpcmV0dXJuIGkoKTtyP2koITEscik6bj1zZXRUaW1lb3V0KCgpPT57aSghMSwxZS03KX0sMWUzKX0xIT09cnx8Y2coYyxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKXx8aSgpLHY9ITF9dHJ5e3I9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGIsey4uLnkscm9vdDpvLm93bmVyRG9jdW1lbnR9KX1jYXRjaChlKXtyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihiLHkpfXIub2JzZXJ2ZShlKX0oITApLGF9KHUsbik6bnVsbCxwPS0xLGg9bnVsbDtsJiYoaD1uZXcgUmVzaXplT2JzZXJ2ZXIoZT0+e2xldFtyXT1lO3ImJnIudGFyZ2V0PT09dSYmaCYmKGgudW5vYnNlcnZlKHQpLGNhbmNlbEFuaW1hdGlvbkZyYW1lKHApLHA9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIGU7bnVsbD09KGU9aCl8fGUub2JzZXJ2ZSh0KX0pKSxuKCl9KSx1JiYhYyYmaC5vYnNlcnZlKHUpLGgub2JzZXJ2ZSh0KSk7bGV0IG09Yz9jaShlKTpudWxsO3JldHVybiBjJiZmdW5jdGlvbiB0KCl7bGV0IHI9Y2koZSk7bSYmIWNnKG0scikmJm4oKSxtPXIsbz1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KCksbigpLCgpPT57dmFyIGU7ZC5mb3JFYWNoKGU9PnthJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixuKSxpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixuKX0pLG51bGw9PWZ8fGYoKSxudWxsPT0oZT1oKXx8ZS5kaXNjb25uZWN0KCksaD1udWxsLGMmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKG8pfX12YXIgY3Y9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50LGNiPWN2P3cudXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBjQShlLHQpe2xldCBuLHIsbztpZihlPT09dClyZXR1cm4hMDtpZih0eXBlb2YgZSE9dHlwZW9mIHQpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZS50b1N0cmluZygpPT09dC50b1N0cmluZygpKXJldHVybiEwO2lmKGUmJnQmJlwib2JqZWN0XCI9PXR5cGVvZiBlKXtpZihBcnJheS5pc0FycmF5KGUpKXtpZigobj1lLmxlbmd0aCkhPT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iocj1uOzAhPXItLTspaWYoIWNBKGVbcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoKG49KG89T2JqZWN0LmtleXMoZSkpLmxlbmd0aCkhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9bjswIT1yLS07KWlmKCEoe30pLmhhc093blByb3BlcnR5LmNhbGwodCxvW3JdKSlyZXR1cm4hMTtmb3Iocj1uOzAhPXItLTspe2xldCBuPW9bcl07aWYoKFwiX293bmVyXCIhPT1ufHwhZS4kJHR5cGVvZikmJiFjQShlW25dLHRbbl0pKXJldHVybiExfXJldHVybiEwfXJldHVybiBlIT1lJiZ0IT10fWZ1bmN0aW9uIGN4KGUpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/MTooZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmRldmljZVBpeGVsUmF0aW98fDF9ZnVuY3Rpb24gY3coZSx0KXtsZXQgbj1jeChlKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259ZnVuY3Rpb24gY0MoZSl7bGV0IHQ9dy51c2VSZWYoZSk7cmV0dXJuIGNiKCgpPT57dC5jdXJyZW50PWV9KSx0fWZ1bmN0aW9uIGNfKGUsdCxuKXtsZXQgcj1cImlubGluZS1zdGFydFwiPT09ZXx8XCJpbmxpbmUtZW5kXCI9PT1lO3JldHVybih7dG9wOlwidG9wXCIscmlnaHQ6cj9uP1wiaW5saW5lLXN0YXJ0XCI6XCJpbmxpbmUtZW5kXCI6XCJyaWdodFwiLGJvdHRvbTpcImJvdHRvbVwiLGxlZnQ6cj9uP1wiaW5saW5lLWVuZFwiOlwiaW5saW5lLXN0YXJ0XCI6XCJsZWZ0XCJ9KVt0XX1mdW5jdGlvbiBjayhlLHQsbil7bGV0e3JlY3RzOnIscGxhY2VtZW50Om99PWU7cmV0dXJue3NpZGU6Y18odCxpNChvKSxuKSxhbGlnbjppNShvKXx8XCJjZW50ZXJcIixhbmNob3I6e3dpZHRoOnIucmVmZXJlbmNlLndpZHRoLGhlaWdodDpyLnJlZmVyZW5jZS5oZWlnaHR9LHBvc2l0aW9uZXI6e3dpZHRoOnIuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OnIuZmxvYXRpbmcuaGVpZ2h0fX19ZnVuY3Rpb24gY0UoZSl7dmFyIHQsbixyLG8sYTtsZXQgaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix7YW5jaG9yOmIscG9zaXRpb25NZXRob2Q6QT1cImFic29sdXRlXCIsc2lkZTp4PVwiYm90dG9tXCIsc2lkZU9mZnNldDpDPTAsYWxpZ246Xz1cImNlbnRlclwiLGFsaWduT2Zmc2V0Oms9MCxjb2xsaXNpb25Cb3VuZGFyeTpFLGNvbGxpc2lvblBhZGRpbmc6aj01LHN0aWNreTpTPSExLGFycm93UGFkZGluZzpPPTUsdHJhY2tBbmNob3I6Qj0hMCxrZWVwTW91bnRlZDpQPSExLGZsb2F0aW5nUm9vdENvbnRleHQ6SSxtb3VudGVkOlQsY29sbGlzaW9uQXZvaWRhbmNlOnosc2hpZnRDcm9zc0F4aXM6RD0hMSxub2RlSWQ6TCxhZGFwdGl2ZU9yaWdpbjpOfT1lLFI9ei5zaWRlfHxcImZsaXBcIixNPXouYWxpZ258fFwiZmxpcFwiLFo9ei5mYWxsYmFja0F4aXNTaWRlfHxcImVuZFwiLFU9XCJmdW5jdGlvblwiPT10eXBlb2YgYj9iOnZvaWQgMCxGPWFoKFUpLHE9VT9GOmIsSD1hMihiKSxWPVwicnRsXCI9PT1saigpLCQ9e3RvcDpcInRvcFwiLHJpZ2h0OlwicmlnaHRcIixib3R0b206XCJib3R0b21cIixsZWZ0OlwibGVmdFwiLFwiaW5saW5lLWVuZFwiOlY/XCJsZWZ0XCI6XCJyaWdodFwiLFwiaW5saW5lLXN0YXJ0XCI6Vj9cInJpZ2h0XCI6XCJsZWZ0XCJ9W3hdLFc9XCJjZW50ZXJcIj09PV8/JDpgJHskfS0ke199YCxZPXtib3VuZGFyeTpcImNsaXBwaW5nLWFuY2VzdG9yc1wiPT09RT9cImNsaXBwaW5nQW5jZXN0b3JzXCI6RSxwYWRkaW5nOmp9LEs9dy51c2VSZWYobnVsbCksWD1hMihDKSxHPWEyKGspLFE9XCJmdW5jdGlvblwiIT10eXBlb2YgQz9DOjAsSj1bKGk9ZT0+e2xldCB0PWNrKGUseCxWKSxuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFguY3VycmVudD9YLmN1cnJlbnQodCk6WC5jdXJyZW50LHI9XCJmdW5jdGlvblwiPT10eXBlb2YgRy5jdXJyZW50P0cuY3VycmVudCh0KTpHLmN1cnJlbnQ7cmV0dXJue21haW5BeGlzOm4sY3Jvc3NBeGlzOnIsYWxpZ25tZW50QXhpczpyfX0sbD1bUSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBrP2s6MCxWLHhdLHsuLi4odm9pZCAwPT09KHQ9aSkmJih0PTApLHtuYW1lOlwib2Zmc2V0XCIsb3B0aW9uczp0LGFzeW5jIGZuKGUpe3ZhciBuLHI7bGV0e3g6byx5OmEscGxhY2VtZW50OmksbWlkZGxld2FyZURhdGE6bH09ZSxzPWF3YWl0IGNlKGUsdCk7cmV0dXJuIGk9PT0obnVsbD09KG49bC5vZmZzZXQpP3ZvaWQgMDpuLnBsYWNlbWVudCkmJm51bGwhPShyPWwuYXJyb3cpJiZyLmFsaWdubWVudE9mZnNldD97fTp7eDpvK3MueCx5OmErcy55LGRhdGE6ey4uLnMscGxhY2VtZW50Oml9fX19KSxvcHRpb25zOltpLGxdfSldLGVlPVwibm9uZVwiPT09TSYmXCJzaGlmdFwiIT09UixldD0hZWUmJihTfHxEfHxcInNoaWZ0XCI9PT1SKSxlbj1cIm5vbmVcIj09PVI/bnVsbDp7Li4ue25hbWU6XCJmbGlwXCIsb3B0aW9uczpuPXM9ey4uLlksbWFpbkF4aXM6IUQmJlwiZmxpcFwiPT09Uixjcm9zc0F4aXM6XCJmbGlwXCI9PT1NJiZcImFsaWdubWVudFwiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246Wn0sYXN5bmMgZm4oZSl7dmFyIHQscixvLGEsaTtsZXR7cGxhY2VtZW50OmwsbWlkZGxld2FyZURhdGE6cyxyZWN0czpjLGluaXRpYWxQbGFjZW1lbnQ6dSxwbGF0Zm9ybTpkLGVsZW1lbnRzOmZ9PWUse21haW5BeGlzOnA9ITAsY3Jvc3NBeGlzOmg9ITAsZmFsbGJhY2tQbGFjZW1lbnRzOm0sZmFsbGJhY2tTdHJhdGVneTpnPVwiYmVzdEZpdFwiLGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb246eT1cIm5vbmVcIixmbGlwQWxpZ25tZW50OnY9ITAsLi4uYn09aTIobixlKTtpZihudWxsIT0odD1zLmFycm93KSYmdC5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307bGV0IEE9aTQobCkseD1pOCh1KSx3PWk0KHUpPT09dSxDPWF3YWl0IChudWxsPT1kLmlzUlRMP3ZvaWQgMDpkLmlzUlRMKGYuZmxvYXRpbmcpKSxfPW18fCh3fHwhdj9bbG8odSldOmZ1bmN0aW9uKGUpe2xldCB0PWxvKGUpO3JldHVybltpNyhlKSx0LGk3KHQpXX0odSkpLGs9XCJub25lXCIhPT15OyFtJiZrJiZfLnB1c2goLi4uZnVuY3Rpb24oZSx0LG4scil7bGV0IG89aTUoZSksYT1mdW5jdGlvbihlLHQsbil7c3dpdGNoKGUpe2Nhc2VcInRvcFwiOmNhc2VcImJvdHRvbVwiOmlmKG4pcmV0dXJuIHQ/bHQ6bGU7cmV0dXJuIHQ/bGU6bHQ7Y2FzZVwibGVmdFwiOmNhc2VcInJpZ2h0XCI6cmV0dXJuIHQ/bG46bHI7ZGVmYXVsdDpyZXR1cm5bXX19KGk0KGUpLFwic3RhcnRcIj09PW4scik7cmV0dXJuIG8mJihhPWEubWFwKGU9PmUrXCItXCIrbyksdCYmKGE9YS5jb25jYXQoYS5tYXAoaTcpKSkpLGF9KHUsdix5LEMpKTtsZXQgRT1bdSwuLi5fXSxqPWF3YWl0IHM2KGUsYiksUz1bXSxPPShudWxsPT0ocj1zLmZsaXApP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdO2lmKHAmJlMucHVzaChqW0FdKSxoKXtsZXQgZT1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO2xldCByPWk1KGUpLG89aTMoaTgoZSkpLGE9aTYobyksaT1cInhcIj09PW8/cj09PShuP1wiZW5kXCI6XCJzdGFydFwiKT9cInJpZ2h0XCI6XCJsZWZ0XCI6XCJzdGFydFwiPT09cj9cImJvdHRvbVwiOlwidG9wXCI7cmV0dXJuIHQucmVmZXJlbmNlW2FdPnQuZmxvYXRpbmdbYV0mJihpPWxvKGkpKSxbaSxsbyhpKV19KGwsYyxDKTtTLnB1c2goaltlWzBdXSxqW2VbMV1dKX1pZihPPVsuLi5PLHtwbGFjZW1lbnQ6bCxvdmVyZmxvd3M6U31dLCFTLmV2ZXJ5KGU9PmU8PTApKXtsZXQgZT0oKG51bGw9PShvPXMuZmxpcCk/dm9pZCAwOm8uaW5kZXgpfHwwKSsxLHQ9RVtlXTtpZih0JiYoXCJhbGlnbm1lbnRcIiE9PWh8fHg9PT1pOCh0KXx8Ty5ldmVyeShlPT5pOChlLnBsYWNlbWVudCkhPT14fHxlLm92ZXJmbG93c1swXT4wKSkpcmV0dXJue2RhdGE6e2luZGV4OmUsb3ZlcmZsb3dzOk99LHJlc2V0OntwbGFjZW1lbnQ6dH19O2xldCBuPW51bGw9PShhPU8uZmlsdGVyKGU9PmUub3ZlcmZsb3dzWzBdPD0wKS5zb3J0KChlLHQpPT5lLm92ZXJmbG93c1sxXS10Lm92ZXJmbG93c1sxXSlbMF0pP3ZvaWQgMDphLnBsYWNlbWVudDtpZighbilzd2l0Y2goZyl7Y2FzZVwiYmVzdEZpdFwiOntsZXQgZT1udWxsPT0oaT1PLmZpbHRlcihlPT57aWYoayl7bGV0IHQ9aTgoZS5wbGFjZW1lbnQpO3JldHVybiB0PT09eHx8XCJ5XCI9PT10fXJldHVybiEwfSkubWFwKGU9PltlLnBsYWNlbWVudCxlLm92ZXJmbG93cy5maWx0ZXIoZT0+ZT4wKS5yZWR1Y2UoKGUsdCk9PmUrdCwwKV0pLnNvcnQoKGUsdCk9PmVbMV0tdFsxXSlbMF0pP3ZvaWQgMDppWzBdO2UmJihuPWUpO2JyZWFrfWNhc2VcImluaXRpYWxQbGFjZW1lbnRcIjpuPXV9aWYobCE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX0sb3B0aW9uczpbcyxjXX0sZXI9ZWU/bnVsbDoodT1lPT57dmFyIHQ7bGV0IG4scixvPWxTKGUuZWxlbWVudHMuZmxvYXRpbmcpLmRvY3VtZW50RWxlbWVudDtyZXR1cm57Li4uWSxyb290Qm91bmRhcnk6RD97eDowLHk6MCx3aWR0aDpvLmNsaWVudFdpZHRoLGhlaWdodDpvLmNsaWVudEhlaWdodH06dm9pZCAwLG1haW5BeGlzOlwibm9uZVwiIT09TSxjcm9zc0F4aXM6ZXQsbGltaXRlcjpTfHxEP3ZvaWQgMDp7Li4uKHZvaWQgMD09PSh0PW49KCk9PntpZighSy5jdXJyZW50KXJldHVybnt9O2xldHtoZWlnaHQ6ZX09Sy5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybntvZmZzZXQ6ZS8yKyhcIm51bWJlclwiPT10eXBlb2Ygaj9qOjApfX0pJiYodD17fSkse29wdGlvbnM6dCxmbihlKXtsZXR7eDpuLHk6cixwbGFjZW1lbnQ6byxyZWN0czphLG1pZGRsZXdhcmVEYXRhOml9PWUse29mZnNldDpsPTAsbWFpbkF4aXM6cz0hMCxjcm9zc0F4aXM6Yz0hMH09aTIodCxlKSx1PXt4Om4seTpyfSxkPWk4KG8pLGY9aTMoZCkscD11W2ZdLGg9dVtkXSxtPWkyKGwsZSksZz1cIm51bWJlclwiPT10eXBlb2YgbT97bWFpbkF4aXM6bSxjcm9zc0F4aXM6MH06e21haW5BeGlzOjAsY3Jvc3NBeGlzOjAsLi4ubX07aWYocyl7bGV0IGU9XCJ5XCI9PT1mP1wiaGVpZ2h0XCI6XCJ3aWR0aFwiLHQ9YS5yZWZlcmVuY2VbZl0tYS5mbG9hdGluZ1tlXStnLm1haW5BeGlzLG49YS5yZWZlcmVuY2VbZl0rYS5yZWZlcmVuY2VbZV0tZy5tYWluQXhpcztwPHQ/cD10OnA+biYmKHA9bil9aWYoYyl7dmFyIHksdjtsZXQgZT1cInlcIj09PWY/XCJ3aWR0aFwiOlwiaGVpZ2h0XCIsdD1zNy5oYXMoaTQobykpLG49YS5yZWZlcmVuY2VbZF0tYS5mbG9hdGluZ1tlXSsodCYmKG51bGw9PSh5PWkub2Zmc2V0KT92b2lkIDA6eVtkXSl8fDApKyh0PzA6Zy5jcm9zc0F4aXMpLHI9YS5yZWZlcmVuY2VbZF0rYS5yZWZlcmVuY2VbZV0rKHQ/MDoobnVsbD09KHY9aS5vZmZzZXQpP3ZvaWQgMDp2W2RdKXx8MCktKHQ/Zy5jcm9zc0F4aXM6MCk7aDxuP2g9bjpoPnImJihoPXIpfXJldHVybntbZl06cCxbZF06aH19fSksb3B0aW9uczpbbixyXX19fSxkPVtZLFMsRCxqLE1dLHsuLi4odm9pZCAwPT09KHI9dSkmJihyPXt9KSx7bmFtZTpcInNoaWZ0XCIsb3B0aW9uczpyLGFzeW5jIGZuKGUpe2xldHt4OnQseTpuLHBsYWNlbWVudDpvfT1lLHttYWluQXhpczphPSEwLGNyb3NzQXhpczppPSExLGxpbWl0ZXI6bD17Zm46ZT0+e2xldHt4OnQseTpufT1lO3JldHVybnt4OnQseTpufX19LC4uLnN9PWkyKHIsZSksYz17eDp0LHk6bn0sdT1hd2FpdCBzNihlLHMpLGQ9aTgoaTQobykpLGY9aTMoZCkscD1jW2ZdLGg9Y1tkXTtpZihhKXtsZXQgZT1cInlcIj09PWY/XCJ0b3BcIjpcImxlZnRcIix0PVwieVwiPT09Zj9cImJvdHRvbVwiOlwicmlnaHRcIixuPXArdVtlXSxyPXAtdVt0XTtwPWlYKG4saUsocCxyKSl9aWYoaSl7bGV0IGU9XCJ5XCI9PT1kP1widG9wXCI6XCJsZWZ0XCIsdD1cInlcIj09PWQ/XCJib3R0b21cIjpcInJpZ2h0XCIsbj1oK3VbZV0scj1oLXVbdF07aD1pWChuLGlLKGgscikpfWxldCBtPWwuZm4oey4uLmUsW2ZdOnAsW2RdOmh9KTtyZXR1cm57Li4ubSxkYXRhOnt4Om0ueC10LHk6bS55LW4sZW5hYmxlZDp7W2ZdOmEsW2RdOml9fX19fSksb3B0aW9uczpbdSxkXX0pO1wic2hpZnRcIj09PVJ8fFwic2hpZnRcIj09PU18fFwiY2VudGVyXCI9PT1fP0oucHVzaChlcixlbik6Si5wdXNoKGVuLGVyKSxKLnB1c2goey4uLntuYW1lOlwic2l6ZVwiLG9wdGlvbnM6bz1mPXsuLi5ZLGFwcGx5KHtlbGVtZW50czp7ZmxvYXRpbmc6ZX0scmVjdHM6e3JlZmVyZW5jZTp0fSxhdmFpbGFibGVXaWR0aDpuLGF2YWlsYWJsZUhlaWdodDpyfSl7T2JqZWN0LmVudHJpZXMoe1wiLS1hdmFpbGFibGUtd2lkdGhcIjpgJHtufXB4YCxcIi0tYXZhaWxhYmxlLWhlaWdodFwiOmAke3J9cHhgLFwiLS1hbmNob3Itd2lkdGhcIjpgJHt0LndpZHRofXB4YCxcIi0tYW5jaG9yLWhlaWdodFwiOmAke3QuaGVpZ2h0fXB4YH0pLmZvckVhY2goKFt0LG5dKT0+e2Uuc3R5bGUuc2V0UHJvcGVydHkodCxuKX0pfX0sYXN5bmMgZm4oZSl7dmFyIHQsbjtsZXQgcixhLHtwbGFjZW1lbnQ6aSxyZWN0czpsLHBsYXRmb3JtOnMsZWxlbWVudHM6Y309ZSx7YXBwbHk6dT0oKT0+e30sLi4uZH09aTIobyxlKSxmPWF3YWl0IHM2KGUsZCkscD1pNChpKSxoPWk1KGkpLG09XCJ5XCI9PT1pOChpKSx7d2lkdGg6ZyxoZWlnaHQ6eX09bC5mbG9hdGluZztcInRvcFwiPT09cHx8XCJib3R0b21cIj09PXA/KHI9cCxhPWg9PT0oYXdhaXQgKG51bGw9PXMuaXNSVEw/dm9pZCAwOnMuaXNSVEwoYy5mbG9hdGluZykpP1wic3RhcnRcIjpcImVuZFwiKT9cImxlZnRcIjpcInJpZ2h0XCIpOihhPXAscj1cImVuZFwiPT09aD9cInRvcFwiOlwiYm90dG9tXCIpO2xldCB2PXktZi50b3AtZi5ib3R0b20sYj1nLWYubGVmdC1mLnJpZ2h0LEE9aUsoeS1mW3JdLHYpLHg9aUsoZy1mW2FdLGIpLHc9IWUubWlkZGxld2FyZURhdGEuc2hpZnQsQz1BLF89eDtpZihudWxsIT0odD1lLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSYmdC5lbmFibGVkLngmJihfPWIpLG51bGwhPShuPWUubWlkZGxld2FyZURhdGEuc2hpZnQpJiZuLmVuYWJsZWQueSYmKEM9diksdyYmIWgpe2xldCBlPWlYKGYubGVmdCwwKSx0PWlYKGYucmlnaHQsMCksbj1pWChmLnRvcCwwKSxyPWlYKGYuYm90dG9tLDApO20/Xz1nLTIqKDAhPT1lfHwwIT09dD9lK3Q6aVgoZi5sZWZ0LGYucmlnaHQpKTpDPXktMiooMCE9PW58fDAhPT1yP24rcjppWChmLnRvcCxmLmJvdHRvbSkpfWF3YWl0IHUoey4uLmUsYXZhaWxhYmxlV2lkdGg6XyxhdmFpbGFibGVIZWlnaHQ6Q30pO2xldCBrPWF3YWl0IHMuZ2V0RGltZW5zaW9ucyhjLmZsb2F0aW5nKTtyZXR1cm4gZyE9PWsud2lkdGh8fHkhPT1rLmhlaWdodD97cmVzZXQ6e3JlY3RzOiEwfX06e319fSxvcHRpb25zOltmLHBdfSwoaD0oKT0+KHtlbGVtZW50OksuY3VycmVudHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxwYWRkaW5nOk8sb2Zmc2V0UGFyZW50OlwiZmxvYXRpbmdcIn0pLG09W09dLHsuLi57bmFtZTpcImFycm93XCIsb3B0aW9uczpnPWgsYXN5bmMgZm4oZSl7bGV0e3g6dCx5Om4scGxhY2VtZW50OnIscmVjdHM6byxwbGF0Zm9ybTphLGVsZW1lbnRzOmksbWlkZGxld2FyZURhdGE6bH09ZSx7ZWxlbWVudDpzLHBhZGRpbmc6Yz0wLG9mZnNldFBhcmVudDp1PVwicmVhbFwifT1pMihnLGUpfHx7fTtpZihudWxsPT1zKXJldHVybnt9O2xldCBkPWxhKGMpLGY9e3g6dCx5Om59LHA9aTMoaTgocikpLGg9aTYocCksbT1hd2FpdCBhLmdldERpbWVuc2lvbnMocykseT1cInlcIj09PXAsdj15P1wiY2xpZW50SGVpZ2h0XCI6XCJjbGllbnRXaWR0aFwiLGI9by5yZWZlcmVuY2VbaF0rby5yZWZlcmVuY2VbcF0tZltwXS1vLmZsb2F0aW5nW2hdLEE9ZltwXS1vLnJlZmVyZW5jZVtwXSx4PVwicmVhbFwiPT09dT9hd2FpdCBhLmdldE9mZnNldFBhcmVudD8uKHMpOmkuZmxvYXRpbmcsdz1pLmZsb2F0aW5nW3ZdfHxvLmZsb2F0aW5nW2hdO3cmJmF3YWl0IGEuaXNFbGVtZW50Py4oeCl8fCh3PWkuZmxvYXRpbmdbdl18fG8uZmxvYXRpbmdbaF0pO2xldCBDPXcvMi1tW2hdLzItMSxfPU1hdGgubWluKGRbeT9cInRvcFwiOlwibGVmdFwiXSxDKSxrPU1hdGgubWluKGRbeT9cImJvdHRvbVwiOlwicmlnaHRcIl0sQyksRT13LW1baF0tayxqPXcvMi1tW2hdLzIrKGIvMi1BLzIpLFM9aVgoXyxpSyhqLEUpKSxPPSFsLmFycm93JiZudWxsIT1pNShyKSYmaiE9PVMmJm8ucmVmZXJlbmNlW2hdLzItKGo8Xz9fOmspLW1baF0vMjwwLEI9Tz9qPF8/ai1fOmotRTowO3JldHVybntbcF06ZltwXStCLGRhdGE6e1twXTpTLGNlbnRlck9mZnNldDpqLVMtQiwuLi5PJiZ7YWxpZ25tZW50T2Zmc2V0OkJ9fSxyZXNldDpPfX19LG9wdGlvbnM6W2gsbV19KSx7Li4uKHZvaWQgMD09PShhPXkpJiYoYT17fSkse25hbWU6XCJoaWRlXCIsb3B0aW9uczphLGFzeW5jIGZuKGUpe2xldHtyZWN0czp0fT1lLHtzdHJhdGVneTpuPVwicmVmZXJlbmNlSGlkZGVuXCIsLi4ucn09aTIoYSxlKTtzd2l0Y2gobil7Y2FzZVwicmVmZXJlbmNlSGlkZGVuXCI6e2xldCBuPXM5KGF3YWl0IHM2KGUsey4uLnIsZWxlbWVudENvbnRleHQ6XCJyZWZlcmVuY2VcIn0pLHQucmVmZXJlbmNlKTtyZXR1cm57ZGF0YTp7cmVmZXJlbmNlSGlkZGVuT2Zmc2V0czpuLHJlZmVyZW5jZUhpZGRlbjpzOChuKX19fWNhc2VcImVzY2FwZWRcIjp7bGV0IG49czkoYXdhaXQgczYoZSx7Li4ucixhbHRCb3VuZGFyeTohMH0pLHQuZmxvYXRpbmcpO3JldHVybntkYXRhOntlc2NhcGVkT2Zmc2V0czpuLGVzY2FwZWQ6czgobil9fX1kZWZhdWx0OnJldHVybnt9fX19KSxvcHRpb25zOlt5LHZdfSx7bmFtZTpcInRyYW5zZm9ybU9yaWdpblwiLGZuKGUpe2xldHtlbGVtZW50czp0LG1pZGRsZXdhcmVEYXRhOm4scGxhY2VtZW50OnIscmVjdHM6byx5OmF9PWUsaT1pNChyKSxsPWk4KGkpLHM9Sy5jdXJyZW50LGM9bi5hcnJvdz8ueHx8MCx1PW4uYXJyb3c/Lnl8fDAsZD1zPy5jbGllbnRXaWR0aHx8MCxmPXM/LmNsaWVudEhlaWdodHx8MCxwPWMrZC8yLGg9dStmLzIsbT1NYXRoLmFicyhuLnNoaWZ0Py55fHwwKSxnPW8ucmVmZXJlbmNlLmhlaWdodC8yLHk9bT4oXCJmdW5jdGlvblwiPT10eXBlb2YgQz9DKGNrKGUseCxWKSk6Qyksdj17dG9wOmAke3B9cHggY2FsYygxMDAlICsgJHtDfXB4KWAsYm90dG9tOmAke3B9cHggJHstQ31weGAsbGVmdDpgY2FsYygxMDAlICsgJHtDfXB4KSAke2h9cHhgLHJpZ2h0OmAkey1DfXB4ICR7aH1weGB9W2ldLGI9YCR7cH1weCAke28ucmVmZXJlbmNlLnkrZy1hfXB4YDtyZXR1cm4gdC5mbG9hdGluZy5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHJhbnNmb3JtLW9yaWdpblwiLGV0JiZcInlcIj09PWwmJnk/Yjp2KSx7fX19LE4pO2xldCBlbz1JOyFUJiZJJiYoZW89ey4uLkksZWxlbWVudHM6e3JlZmVyZW5jZTpudWxsLGZsb2F0aW5nOm51bGwsZG9tUmVmZXJlbmNlOm51bGx9fSk7bGV0IGVhPXcudXNlTWVtbygoKT0+KHtlbGVtZW50UmVzaXplOkImJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBSZXNpemVPYnNlcnZlcixsYXlvdXRTaGlmdDpCJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJ9KSxbQl0pLHtyZWZzOmVpLGVsZW1lbnRzOmVsLHg6ZXMseTplYyxtaWRkbGV3YXJlRGF0YTpldSx1cGRhdGU6ZWQscGxhY2VtZW50OmVmLGNvbnRleHQ6ZXAsaXNQb3NpdGlvbmVkOmVtLGZsb2F0aW5nU3R5bGVzOmVnfT1mdW5jdGlvbihlPXt9KXtsZXR7bm9kZUlkOnR9PWUsbj1hQih7Li4uZSxlbGVtZW50czp7cmVmZXJlbmNlOm51bGwsZmxvYXRpbmc6bnVsbCwuLi5lLmVsZW1lbnRzfX0pLHI9ZS5yb290Q29udGV4dHx8bixvPXIuZWxlbWVudHMsW2EsaV09dy51c2VTdGF0ZShudWxsKSxbbCxzXT13LnVzZVN0YXRlKG51bGwpLGM9bz8uZG9tUmVmZXJlbmNlfHxhLHU9dy51c2VSZWYobnVsbCksZD1haigpO2FDKCgpPT57YyYmKHUuY3VycmVudD1jKX0sW2NdKTtsZXQgZj1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT17fSk7bGV0e3BsYWNlbWVudDp0PVwiYm90dG9tXCIsc3RyYXRlZ3k6bj1cImFic29sdXRlXCIsbWlkZGxld2FyZTpyPVtdLHBsYXRmb3JtOm8sZWxlbWVudHM6e3JlZmVyZW5jZTphLGZsb2F0aW5nOml9PXt9LHRyYW5zZm9ybTpsPSEwLHdoaWxlRWxlbWVudHNNb3VudGVkOnMsb3BlbjpjfT1lLFt1LGRdPXcudXNlU3RhdGUoe3g6MCx5OjAsc3RyYXRlZ3k6bixwbGFjZW1lbnQ6dCxtaWRkbGV3YXJlRGF0YTp7fSxpc1Bvc2l0aW9uZWQ6ITF9KSxbZixwXT13LnVzZVN0YXRlKHIpO2NBKGYscil8fHAocik7bGV0W2gsbV09dy51c2VTdGF0ZShudWxsKSxbZyx5XT13LnVzZVN0YXRlKG51bGwpLHY9dy51c2VDYWxsYmFjayhlPT57ZSE9PUMuY3VycmVudCYmKEMuY3VycmVudD1lLG0oZSkpfSxbXSksYj13LnVzZUNhbGxiYWNrKGU9PntlIT09Xy5jdXJyZW50JiYoXy5jdXJyZW50PWUseShlKSl9LFtdKSxBPWF8fGgseD1pfHxnLEM9dy51c2VSZWYobnVsbCksXz13LnVzZVJlZihudWxsKSxrPXcudXNlUmVmKHUpLEU9bnVsbCE9cyxqPWNDKHMpLFM9Y0MobyksTz1jQyhjKSxCPXcudXNlQ2FsbGJhY2soKCk9PntpZighQy5jdXJyZW50fHwhXy5jdXJyZW50KXJldHVybjtsZXQgZT17cGxhY2VtZW50OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlOmZ9O1MuY3VycmVudCYmKGUucGxhdGZvcm09Uy5jdXJyZW50KSwoKGUsdCxuKT0+e2xldCByPW5ldyBNYXAsbz17cGxhdGZvcm06Y20sLi4ubn0sYT17Li4uby5wbGF0Zm9ybSxfYzpyfTtyZXR1cm4gczMoZSx0LHsuLi5vLHBsYXRmb3JtOmF9KX0pKEMuY3VycmVudCxfLmN1cnJlbnQsZSkudGhlbihlPT57bGV0IHQ9ey4uLmUsaXNQb3NpdGlvbmVkOiExIT09Ty5jdXJyZW50fTtQLmN1cnJlbnQmJiFjQShrLmN1cnJlbnQsdCkmJihrLmN1cnJlbnQ9dCxlaC5mbHVzaFN5bmMoKCk9PntkKHQpfSkpfSl9LFtmLHQsbixTLE9dKTtjYigoKT0+eyExPT09YyYmay5jdXJyZW50LmlzUG9zaXRpb25lZCYmKGsuY3VycmVudC5pc1Bvc2l0aW9uZWQ9ITEsZChlPT4oey4uLmUsaXNQb3NpdGlvbmVkOiExfSkpKX0sW2NdKTtsZXQgUD13LnVzZVJlZighMSk7Y2IoKCk9PihQLmN1cnJlbnQ9ITAsKCk9PntQLmN1cnJlbnQ9ITF9KSxbXSksY2IoKCk9PntpZihBJiYoQy5jdXJyZW50PUEpLHgmJihfLmN1cnJlbnQ9eCksQSYmeCl7aWYoai5jdXJyZW50KXJldHVybiBqLmN1cnJlbnQoQSx4LEIpO0IoKX19LFtBLHgsQixqLEVdKTtsZXQgST13LnVzZU1lbW8oKCk9Pih7cmVmZXJlbmNlOkMsZmxvYXRpbmc6XyxzZXRSZWZlcmVuY2U6dixzZXRGbG9hdGluZzpifSksW3YsYl0pLFQ9dy51c2VNZW1vKCgpPT4oe3JlZmVyZW5jZTpBLGZsb2F0aW5nOnh9KSxbQSx4XSksej13LnVzZU1lbW8oKCk9PntsZXQgZT17cG9zaXRpb246bixsZWZ0OjAsdG9wOjB9O2lmKCFULmZsb2F0aW5nKXJldHVybiBlO2xldCB0PWN3KFQuZmxvYXRpbmcsdS54KSxyPWN3KFQuZmxvYXRpbmcsdS55KTtyZXR1cm4gbD97Li4uZSx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrdCtcInB4LCBcIityK1wicHgpXCIsLi4uY3goVC5mbG9hdGluZyk+PTEuNSYme3dpbGxDaGFuZ2U6XCJ0cmFuc2Zvcm1cIn19Ontwb3NpdGlvbjpuLGxlZnQ6dCx0b3A6cn19LFtuLGwsVC5mbG9hdGluZyx1LngsdS55XSk7cmV0dXJuIHcudXNlTWVtbygoKT0+KHsuLi51LHVwZGF0ZTpCLHJlZnM6SSxlbGVtZW50czpULGZsb2F0aW5nU3R5bGVzOnp9KSxbdSxCLEksVCx6XSl9KHsuLi5lLGVsZW1lbnRzOnsuLi5vLC4uLmwmJntyZWZlcmVuY2U6bH19fSkscD13LnVzZUNhbGxiYWNrKGU9PntsZXQgdD1hTChlKT97Z2V0Qm91bmRpbmdDbGllbnRSZWN0OigpPT5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGdldENsaWVudFJlY3RzOigpPT5lLmdldENsaWVudFJlY3RzKCksY29udGV4dEVsZW1lbnQ6ZX06ZTtzKHQpLGYucmVmcy5zZXRSZWZlcmVuY2UodCl9LFtmLnJlZnNdKSxoPXcudXNlQ2FsbGJhY2soZT0+eyhhTChlKXx8bnVsbD09PWUpJiYodS5jdXJyZW50PWUsaShlKSksKGFMKGYucmVmcy5yZWZlcmVuY2UuY3VycmVudCl8fG51bGw9PT1mLnJlZnMucmVmZXJlbmNlLmN1cnJlbnR8fG51bGwhPT1lJiYhYUwoZSkpJiZmLnJlZnMuc2V0UmVmZXJlbmNlKGUpfSxbZi5yZWZzXSksbT13LnVzZU1lbW8oKCk9Pih7Li4uZi5yZWZzLHNldFJlZmVyZW5jZTpoLHNldFBvc2l0aW9uUmVmZXJlbmNlOnAsZG9tUmVmZXJlbmNlOnV9KSxbZi5yZWZzLGgscF0pLGc9dy51c2VNZW1vKCgpPT4oey4uLmYuZWxlbWVudHMsZG9tUmVmZXJlbmNlOmN9KSxbZi5lbGVtZW50cyxjXSkseT13LnVzZU1lbW8oKCk9Pih7Li4uZiwuLi5yLHJlZnM6bSxlbGVtZW50czpnLG5vZGVJZDp0fSksW2YsbSxnLHQscl0pO3JldHVybiBhQygoKT0+e3IuZGF0YVJlZi5jdXJyZW50LmZsb2F0aW5nQ29udGV4dD15O2xldCBlPWQ/Lm5vZGVzUmVmLmN1cnJlbnQuZmluZChlPT5lLmlkPT09dCk7ZSYmKGUuY29udGV4dD15KX0pLHcudXNlTWVtbygoKT0+KHsuLi5mLGNvbnRleHQ6eSxyZWZzOm0sZWxlbWVudHM6Z30pLFtmLG0sZyx5XSl9KHtyb290Q29udGV4dDplbyxwbGFjZW1lbnQ6VyxtaWRkbGV3YXJlOkosc3RyYXRlZ3k6QSx3aGlsZUVsZW1lbnRzTW91bnRlZDpQP3ZvaWQgMDooLi4uZSk9PmN5KC4uLmUsZWEpLG5vZGVJZDpMfSkse3NpZGVYOmV5LHNpZGVZOmV2fT1ldS5hZGFwdGl2ZU9yaWdpbnx8e30sZWI9dy51c2VNZW1vKCgpPT5OP3twb3NpdGlvbjpBLFtleV06YCR7ZXN9cHhgLFtldl06YCR7ZWN9cHhgfTplZyxbTixleSxldixBLGVzLGVjLGVnXSksZUE9dy51c2VSZWYobnVsbCk7YUMoKCk9PntpZighVClyZXR1cm47bGV0IGU9SC5jdXJyZW50LHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKCk6ZSxuPShjaih0KT90LmN1cnJlbnQ6dCl8fG51bGw7biE9PWVBLmN1cnJlbnQmJihlaS5zZXRQb3NpdGlvblJlZmVyZW5jZShuKSxlQS5jdXJyZW50PW4pfSxbVCxlaSxxLEhdKSx3LnVzZUVmZmVjdCgoKT0+e2lmKCFUKXJldHVybjtsZXQgZT1ILmN1cnJlbnQ7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmY2ooZSkmJmUuY3VycmVudCE9PWVBLmN1cnJlbnQmJihlaS5zZXRQb3NpdGlvblJlZmVyZW5jZShlLmN1cnJlbnQpLGVBLmN1cnJlbnQ9ZS5jdXJyZW50KX0sW1QsZWkscSxIXSksdy51c2VFZmZlY3QoKCk9PntpZihQJiZUJiZlbC5kb21SZWZlcmVuY2UmJmVsLmZsb2F0aW5nKXJldHVybiBjeShlbC5kb21SZWZlcmVuY2UsZWwuZmxvYXRpbmcsZWQsZWEpfSxbUCxULGVsLGVkLGVhXSk7bGV0IGV4PWNfKHgsaTQoZWYpLFYpLGV3PWk1KGVmKXx8XCJjZW50ZXJcIixlQz0hIWV1LmhpZGU/LnJlZmVyZW5jZUhpZGRlbixlXz13LnVzZU1lbW8oKCk9Pih7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDpldS5hcnJvdz8ueSxsZWZ0OmV1LmFycm93Py54fSksW2V1LmFycm93XSksZWs9ZXUuYXJyb3c/LmNlbnRlck9mZnNldCE9PTA7cmV0dXJuIHcudXNlTWVtbygoKT0+KHtwb3NpdGlvbmVyU3R5bGVzOmViLGFycm93U3R5bGVzOmVfLGFycm93UmVmOkssYXJyb3dVbmNlbnRlcmVkOmVrLHNpZGU6ZXgsYWxpZ246ZXcsYW5jaG9ySGlkZGVuOmVDLHJlZnM6ZWksY29udGV4dDplcCxpc1Bvc2l0aW9uZWQ6ZW0sdXBkYXRlOmVkfSksW2ViLGVfLEssZWssZXgsZXcsZUMsZWksZXAsZW0sZWRdKX1mdW5jdGlvbiBjaihlKXtyZXR1cm4gbnVsbCE9ZSYmXCJjdXJyZW50XCJpbiBlfWZ1bmN0aW9uIGNTKGUpe2xldHtjaGlsZHJlbjp0LGVsZW1lbnRzUmVmOm4sbGFiZWxzUmVmOnIsb25NYXBDaGFuZ2U6b309ZSxhPXcudXNlUmVmKDApLGk9YWwoY0IpLmN1cnJlbnQsbD1hbChjTykuY3VycmVudCxbcyxjXT13LnVzZVN0YXRlKDApLHU9dy51c2VSZWYocyksZD1haCgoZSx0KT0+e2wuc2V0KGUsdD8/bnVsbCksdS5jdXJyZW50Kz0xLGModS5jdXJyZW50KX0pLGY9YWgoZT0+e2wuZGVsZXRlKGUpLHUuY3VycmVudCs9MSxjKHUuY3VycmVudCl9KSxwPXcudXNlTWVtbygoKT0+e2xldCBlPW5ldyBNYXA7cmV0dXJuIEFycmF5LmZyb20obC5rZXlzKCkpLnNvcnQoY1ApLmZvckVhY2goKHQsbik9PntsZXQgcj1sLmdldCh0KT8/e307ZS5zZXQodCx7Li4ucixpbmRleDpufSl9KSxlfSxbbCxzXSk7YUMoKCk9Pnt1LmN1cnJlbnQ9PT1zJiYobi5jdXJyZW50Lmxlbmd0aCE9PXAuc2l6ZSYmKG4uY3VycmVudC5sZW5ndGg9cC5zaXplKSxyJiZyLmN1cnJlbnQubGVuZ3RoIT09cC5zaXplJiYoci5jdXJyZW50Lmxlbmd0aD1wLnNpemUpKSxvPy4ocCl9LFtvLHAsbixyLHMsdV0pO2xldCBoPWFoKGU9PihpLmFkZChlKSwoKT0+e2kuZGVsZXRlKGUpfSkpO2FDKCgpPT57aS5mb3JFYWNoKGU9PmUocCkpfSxbaSxwXSk7bGV0IG09dy51c2VNZW1vKCgpPT4oe3JlZ2lzdGVyOmQsdW5yZWdpc3RlcjpmLHN1YnNjcmliZU1hcENoYW5nZTpoLGVsZW1lbnRzUmVmOm4sbGFiZWxzUmVmOnIsbmV4dEluZGV4UmVmOmF9KSxbZCxmLGgsbixyLGFdKTtyZXR1cm4oMCxBLmpzeCkoc2MuUHJvdmlkZXIse3ZhbHVlOm0sY2hpbGRyZW46dH0pfWZ1bmN0aW9uIGNPKCl7cmV0dXJuIG5ldyBNYXB9ZnVuY3Rpb24gY0IoKXtyZXR1cm4gbmV3IFNldH1mdW5jdGlvbiBjUChlLHQpe2xldCBuPWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk7cmV0dXJuIG4mTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkd8fG4mTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlk/LTE6biZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElOR3x8biZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TPzE6MH1sZXQgY0k9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0IG4se2N1dG91dDpyLC4uLm99PWU7aWYocil7bGV0IGU9cj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bj1gcG9seWdvbihcbiAgICAgIDAlIDAlLFxuICAgICAgMTAwJSAwJSxcbiAgICAgIDEwMCUgMTAwJSxcbiAgICAgIDAlIDEwMCUsXG4gICAgICAwJSAwJSxcbiAgICAgICR7ZS5sZWZ0fXB4ICR7ZS50b3B9cHgsXG4gICAgICAke2UubGVmdH1weCAke2UuYm90dG9tfXB4LFxuICAgICAgJHtlLnJpZ2h0fXB4ICR7ZS5ib3R0b219cHgsXG4gICAgICAke2UucmlnaHR9cHggJHtlLnRvcH1weCxcbiAgICAgICR7ZS5sZWZ0fXB4ICR7ZS50b3B9cHhcbiAgICApYH1yZXR1cm4oMCxBLmpzeCkoXCJkaXZcIix7cmVmOnQscm9sZTpcInByZXNlbnRhdGlvblwiLFwiZGF0YS1iYXNlLXVpLWluZXJ0XCI6XCJcIiwuLi5vLHN0eWxlOntwb3NpdGlvbjpcImZpeGVkXCIsaW5zZXQ6MCx1c2VyU2VsZWN0Olwibm9uZVwiLFdlYmtpdFVzZXJTZWxlY3Q6XCJub25lXCIsY2xpcFBhdGg6bn19KX0pLGNUPXcuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe3ZhciBuO2xldHthbmNob3I6cixwb3NpdGlvbk1ldGhvZDpvPVwiYWJzb2x1dGVcIixjbGFzc05hbWU6YSxyZW5kZXI6aSxzaWRlOmwsYWxpZ246cyxzaWRlT2Zmc2V0OmM9MCxhbGlnbk9mZnNldDp1PTAsY29sbGlzaW9uQm91bmRhcnk6ZD1cImNsaXBwaW5nLWFuY2VzdG9yc1wiLGNvbGxpc2lvblBhZGRpbmc6Zj01LGFycm93UGFkZGluZzpwPTUsc3RpY2t5Omg9ITEsdHJhY2tBbmNob3I6bT0hMCxjb2xsaXNpb25Bdm9pZGFuY2U6Zz1pRiwuLi55fT1lLHtvcGVuOnYsc2V0T3BlbjpiLGZsb2F0aW5nUm9vdENvbnRleHQ6eCxzZXRQb3NpdGlvbmVyRWxlbWVudDpDLGl0ZW1Eb21FbGVtZW50czpfLGl0ZW1MYWJlbHM6ayxtb3VudGVkOkUsbW9kYWw6aixsYXN0T3BlbkNoYW5nZVJlYXNvbjpTLHBhcmVudDpPLHNldEhvdmVyRW5hYmxlZDpCLHRyaWdnZXJFbGVtZW50OlB9PWx3KCksST1mdW5jdGlvbigpe2xldCBlPXcudXNlQ29udGV4dChzMSk7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IDxNZW51LlBvcnRhbD4gaXMgbWlzc2luZy5cIik7cmV0dXJuIGV9KCksVD1mdW5jdGlvbihlKXtsZXQgdD1heCgpLG49YWooKSxyPWFFKCksbz1yO3JldHVybiBhQygoKT0+e2lmKCF0KXJldHVybjtsZXQgZT17aWQ6dCxwYXJlbnRJZDpvfTtyZXR1cm4gbj8uYWRkTm9kZShlKSwoKT0+e24/LnJlbW92ZU5vZGUoZSl9fSxbbix0LG9dKSx0fSgpLHo9YUUoKSxEPWxOKCEwKSxMPXIsTj1jLFI9dSxNPXM7XCJjb250ZXh0LW1lbnVcIj09PU8udHlwZSYmKEw9Ty5jb250ZXh0Py5hbmNob3I/P3IsTT1lLmFsaWduPz9cInN0YXJ0XCIsUj1lLmFsaWduT2Zmc2V0Pz8yLE49ZS5zaWRlT2Zmc2V0Pz8tNSk7bGV0IFo9bCxVPU07XCJtZW51XCI9PT1PLnR5cGU/KFo9Wj8/XCJpbmxpbmUtZW5kXCIsVT1VPz9cInN0YXJ0XCIpOlwibWVudWJhclwiPT09Ty50eXBlJiYoWj1aPz9cImJvdHRvbVwiLFU9VT8/XCJzdGFydFwiKTtsZXQgRj1cImNvbnRleHQtbWVudVwiPT09Ty50eXBlLHE9Y0Uoe2FuY2hvcjpMLGZsb2F0aW5nUm9vdENvbnRleHQ6eCxwb3NpdGlvbk1ldGhvZDpEP1wiZml4ZWRcIjpvLG1vdW50ZWQ6RSxzaWRlOlosc2lkZU9mZnNldDpOLGFsaWduOlUsYWxpZ25PZmZzZXQ6UixhcnJvd1BhZGRpbmc6Rj8wOnAsY29sbGlzaW9uQm91bmRhcnk6ZCxjb2xsaXNpb25QYWRkaW5nOmYsc3RpY2t5Omgsbm9kZUlkOlQsa2VlcE1vdW50ZWQ6SSx0cmFja0FuY2hvcjptLGNvbGxpc2lvbkF2b2lkYW5jZTpnLHNoaWZ0Q3Jvc3NBeGlzOkZ9KSx7ZXZlbnRzOkh9PWFqKCksVj13LnVzZU1lbW8oKCk9PntsZXQgZT17fTtyZXR1cm4gdnx8KGUucG9pbnRlckV2ZW50cz1cIm5vbmVcIikse3JvbGU6XCJwcmVzZW50YXRpb25cIixoaWRkZW46IUUsc3R5bGU6ey4uLnEucG9zaXRpb25lclN0eWxlcywuLi5lfX19LFt2LEUscS5wb3NpdGlvbmVyU3R5bGVzXSk7dy51c2VFZmZlY3QoKCk9PntmdW5jdGlvbiBlKGUpe2Uub3Blbj8oZS5wYXJlbnROb2RlSWQ9PT1UJiZCKCExKSxlLm5vZGVJZCE9PVQmJmUucGFyZW50Tm9kZUlkPT09eiYmYighMSx2b2lkIDAsXCJzaWJsaW5nLW9wZW5cIikpOmUucGFyZW50Tm9kZUlkPT09VCYmQighMCl9cmV0dXJuIEgub24oXCJvcGVuY2hhbmdlXCIsZSksKCk9PntILm9mZihcIm9wZW5jaGFuZ2VcIixlKX19LFtILFQseixiLEJdKSx3LnVzZUVmZmVjdCgoKT0+e0guZW1pdChcIm9wZW5jaGFuZ2VcIix7b3Blbjp2LG5vZGVJZDpULHBhcmVudE5vZGVJZDp6fSl9LFtILHYsVCx6XSk7bGV0ICQ9dy51c2VNZW1vKCgpPT4oe29wZW46dixzaWRlOnEuc2lkZSxhbGlnbjpxLmFsaWduLGFuY2hvckhpZGRlbjpxLmFuY2hvckhpZGRlbixuZXN0ZWQ6XCJtZW51XCI9PT1PLnR5cGV9KSxbdixxLnNpZGUscS5hbGlnbixxLmFuY2hvckhpZGRlbixPLnR5cGVdKSxXPXcudXNlTWVtbygoKT0+KHtzaWRlOnEuc2lkZSxhbGlnbjpxLmFsaWduLGFycm93UmVmOnEuYXJyb3dSZWYsYXJyb3dVbmNlbnRlcmVkOnEuYXJyb3dVbmNlbnRlcmVkLGFycm93U3R5bGVzOnEuYXJyb3dTdHlsZXMsZmxvYXRpbmdDb250ZXh0OnEuY29udGV4dH0pLFtxLnNpZGUscS5hbGlnbixxLmFycm93UmVmLHEuYXJyb3dVbmNlbnRlcmVkLHEuYXJyb3dTdHlsZXMscS5jb250ZXh0XSksWT1zbyhcImRpdlwiLGUse3N0YXRlOiQsY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzbixyZWY6W3QsQ10scHJvcHM6ey4uLlYsLi4ueX19KSxLPUUmJlwibWVudVwiIT09Ty50eXBlJiYoXCJtZW51YmFyXCIhPT1PLnR5cGUmJmomJlwidHJpZ2dlci1ob3ZlclwiIT09U3x8XCJtZW51YmFyXCI9PT1PLnR5cGUmJk8uY29udGV4dC5tb2RhbCksWD1udWxsO3JldHVyblwibWVudWJhclwiPT09Ty50eXBlP1g9Ty5jb250ZXh0LmNvbnRlbnRFbGVtZW50OnZvaWQgMD09PU8udHlwZSYmKFg9UCksKDAsQS5qc3hzKShzNC5Qcm92aWRlcix7dmFsdWU6VyxjaGlsZHJlbjpbSyYmKDAsQS5qc3gpKGNJLHtyZWY6XCJjb250ZXh0LW1lbnVcIj09PU8udHlwZXx8XCJuZXN0ZWQtY29udGV4dC1tZW51XCI9PT1PLnR5cGU/Ty5jb250ZXh0LmludGVybmFsQmFja2Ryb3BSZWY6bnVsbCxpbmVydDoobj0hdixzcj49MTk/bjpuP1widHJ1ZVwiOnZvaWQgMCksY3V0b3V0Olh9KSwoMCxBLmpzeCkoYVMse2lkOlQsY2hpbGRyZW46KDAsQS5qc3gpKGNTLHtlbGVtZW50c1JlZjpfLGxhYmVsc1JlZjprLGNoaWxkcmVuOll9KX0pXX0pfSksY3o9e2luZXJ0Om5ldyBXZWFrTWFwLFwiYXJpYS1oaWRkZW5cIjpuZXcgV2Vha01hcCxub25lOm5ldyBXZWFrTWFwfTtmdW5jdGlvbiBjRChlKXtyZXR1cm5cImluZXJ0XCI9PT1lP2N6LmluZXJ0OlwiYXJpYS1oaWRkZW5cIj09PWU/Y3pbXCJhcmlhLWhpZGRlblwiXTpjei5ub25lfWxldCBjTD1uZXcgV2Vha1NldCxjTj17fSxjUj0wLGNNPWU9PmUmJihlLmhvc3R8fGNNKGUucGFyZW50Tm9kZSkpLGNaPVtdO2Z1bmN0aW9uIGNVKCl7Y1o9Y1ouZmlsdGVyKGU9PmUuaXNDb25uZWN0ZWQpfWZ1bmN0aW9uIGNGKCl7cmV0dXJuIGNVKCksY1pbY1oubGVuZ3RoLTFdfWZ1bmN0aW9uIGNxKGUsdCl7aWYoIXQuY3VycmVudC5pbmNsdWRlcyhcImZsb2F0aW5nXCIpJiYhZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpPy5pbmNsdWRlcyhcImRpYWxvZ1wiKSlyZXR1cm47bGV0IG49c3EoKSxyPXNVKGUsbikuZmlsdGVyKGU9PntsZXQgdD1lLmdldEF0dHJpYnV0ZShcImRhdGEtdGFiaW5kZXhcIil8fFwiXCI7cmV0dXJuIHNGKGUsbil8fGUuaGFzQXR0cmlidXRlKFwiZGF0YS10YWJpbmRleFwiKSYmIXQuc3RhcnRzV2l0aChcIi1cIil9KSxvPWUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIik7dC5jdXJyZW50LmluY2x1ZGVzKFwiZmxvYXRpbmdcIil8fDA9PT1yLmxlbmd0aD9cIjBcIiE9PW8mJmUuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIjBcIik6KFwiLTFcIiE9PW98fGUuaGFzQXR0cmlidXRlKFwiZGF0YS10YWJpbmRleFwiKSYmXCItMVwiIT09ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRhYmluZGV4XCIpKSYmKGUuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpLGUuc2V0QXR0cmlidXRlKFwiZGF0YS10YWJpbmRleFwiLFwiLTFcIikpfWZ1bmN0aW9uIGNIKGUpe2xldHtjb250ZXh0OnQsY2hpbGRyZW46bixkaXNhYmxlZDpyPSExLG9yZGVyOm89W1wiY29udGVudFwiXSxpbml0aWFsRm9jdXM6YT0wLHJldHVybkZvY3VzOmk9ITAscmVzdG9yZUZvY3VzOmw9ITEsbW9kYWw6cz0hMCxjbG9zZU9uRm9jdXNPdXQ6Yz0hMCxnZXRJbnNpZGVFbGVtZW50czp1PSgpPT5bXX09ZSx7b3BlbjpkLG9uT3BlbkNoYW5nZTpmLGV2ZW50czpwLGRhdGFSZWY6aCxlbGVtZW50czp7ZG9tUmVmZXJlbmNlOm0sZmxvYXRpbmc6Z319PXQseT1haCgoKT0+aC5jdXJyZW50LmZsb2F0aW5nQ29udGV4dD8ubm9kZUlkKSx2PWFoKHUpLGI9XCJudW1iZXJcIj09dHlwZW9mIGEmJmE8MCx4PWlDKG0pJiZiLEM9YTIobyksXz1hMihhKSxrPWEyKGkpLEU9YWooKSxqPXNHKCksUz13LnVzZVJlZihudWxsKSxPPXcudXNlUmVmKG51bGwpLEI9dy51c2VSZWYoITEpLFA9dy51c2VSZWYoITEpLEk9dy51c2VSZWYoLTEpLFQ9YWQoKSx6PW51bGwhPWosRD1pXyhnKSxMPWFoKChlPUQpPT5lP3NaKGUsc3EoKSk6W10pLE49YWgoZT0+e2xldCB0PUwoZSk7cmV0dXJuIEMuY3VycmVudC5tYXAoKCk9PnQpLmZpbHRlcihCb29sZWFuKS5mbGF0KCl9KTt3LnVzZUVmZmVjdCgoKT0+e2lmKHJ8fCFzKXJldHVybjtmdW5jdGlvbiBlKGUpe1wiVGFiXCI9PT1lLmtleSYmaXYoRCxpeShpeChEKSkpJiYwPT09TCgpLmxlbmd0aCYmIXgmJmlhKGUpfWxldCB0PWl4KEQpO3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSksKCk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSl9fSxbcixtLEQscyxDLHgsTCxOXSksdy51c2VFZmZlY3QoKCk9PntpZighciYmZylyZXR1cm4gZy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLGUpLCgpPT57Zy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLGUpfTtmdW5jdGlvbiBlKGUpe2xldCB0PWliKGUpLG49TCgpLmluZGV4T2YodCk7LTEhPT1uJiYoSS5jdXJyZW50PW4pfX0sW3IsZyxMXSksdy51c2VFZmZlY3QoKCk9PntpZihyfHwhYylyZXR1cm47ZnVuY3Rpb24gZSgpe1AuY3VycmVudD0hMH1mdW5jdGlvbiB0KGUpe2xldCB0PWUucmVsYXRlZFRhcmdldCxuPWUuY3VycmVudFRhcmdldCxyPWliKGUpO3F1ZXVlTWljcm90YXNrKCgpPT57bGV0IG89eSgpLGE9IShpdihtLHQpfHxpdihnLHQpfHxpdih0LGcpfHxpdihqPy5wb3J0YWxOb2RlLHQpfHx0Py5oYXNBdHRyaWJ1dGUoaWsoXCJmb2N1cy1ndWFyZFwiKSl8fEUmJihpQihFLm5vZGVzUmVmLmN1cnJlbnQsbykuZmluZChlPT5pdihlLmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nLHQpfHxpdihlLmNvbnRleHQ/LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSx0KSl8fGlQKEUubm9kZXNSZWYuY3VycmVudCxvKS5maW5kKGU9PltlLmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nLGlfKGUuY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcpXS5pbmNsdWRlcyh0KXx8ZS5jb250ZXh0Py5lbGVtZW50cy5kb21SZWZlcmVuY2U9PT10KSkpO2lmKG49PT1tJiZEJiZjcShELEMpLGwmJm4hPT1tJiYhcj8uaXNDb25uZWN0ZWQmJml5KGl4KEQpKT09PWl4KEQpLmJvZHkpe2FOKEQpJiZELmZvY3VzKCk7bGV0IGU9SS5jdXJyZW50LHQ9TCgpLG49dFtlXXx8dFt0Lmxlbmd0aC0xXXx8RDthTihuKSYmbi5mb2N1cygpfWlmKGguY3VycmVudC5pbnNpZGVSZWFjdFRyZWUpe2guY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITE7cmV0dXJufWlmKFAuY3VycmVudCl7UC5jdXJyZW50PSExO3JldHVybn0oeHx8IXMpJiZ0JiZhJiZ0IT09Y0YoKSYmKEIuY3VycmVudD0hMCxmKCExLGUsXCJmb2N1cy1vdXRcIikpfSl9bGV0IG49ISEoIUUmJmopO2Z1bmN0aW9uIG8oKXtoLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSEwLFQuc3RhcnQoMCwoKT0+e2guY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITF9KX1pZihnJiZhTihtKSlyZXR1cm4gbS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIix0KSxtLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLGUpLGcuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsdCksbiYmZy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIixvLCEwKSwoKT0+e20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsdCksbS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixlKSxnLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLHQpLG4mJmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsbywhMCl9fSxbcixtLGcsRCxzLEUsaixmLGMsbCxMLHgseSxDLGgsVF0pO2xldCBSPXcudXNlUmVmKG51bGwpLE09dy51c2VSZWYobnVsbCksWj1sWChSLGo/LmJlZm9yZUluc2lkZVJlZiksVT1sWChNLGo/LmFmdGVySW5zaWRlUmVmKTt3LnVzZUVmZmVjdCgoKT0+e2lmKHJ8fCFnKXJldHVybjtsZXQgZT1BcnJheS5mcm9tKGo/LnBvcnRhbE5vZGU/LnF1ZXJ5U2VsZWN0b3JBbGwoYFske2lrKFwicG9ydGFsXCIpfV1gKXx8W10pLHQ9RT9pUChFLm5vZGVzUmVmLmN1cnJlbnQseSgpKTpbXSxuPWZ1bmN0aW9uKGUsdD0hMSxuPSExKXtsZXQgcj1peChlWzBdKS5ib2R5O3JldHVybiBmdW5jdGlvbihlLHQsbixyKXtsZXQgbyxhPVwiZGF0YS1iYXNlLXVpLWluZXJ0XCIsaT1yP1wiaW5lcnRcIjpuP1wiYXJpYS1oaWRkZW5cIjpudWxsLGw9KG89dCxlLm1hcChlPT57aWYoby5jb250YWlucyhlKSlyZXR1cm4gZTtsZXQgdD1jTShlKTtyZXR1cm4gby5jb250YWlucyh0KT90Om51bGx9KS5maWx0ZXIoZT0+bnVsbCE9ZSkpLHM9bmV3IFNldCxjPW5ldyBTZXQobCksdT1bXTtjTlthXXx8KGNOW2FdPW5ldyBXZWFrTWFwKTtsZXQgZD1jTlthXTtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uIGUodCl7ISghdHx8cy5oYXModCkpJiYocy5hZGQodCksdC5wYXJlbnROb2RlJiZlKHQucGFyZW50Tm9kZSkpfSksZnVuY3Rpb24gZSh0KXshdHx8Yy5oYXModCl8fFtdLmZvckVhY2guY2FsbCh0LmNoaWxkcmVuLHQ9PntpZihcInNjcmlwdFwiIT09YUkodCkpaWYocy5oYXModCkpZSh0KTtlbHNle2xldCBlPWk/dC5nZXRBdHRyaWJ1dGUoaSk6bnVsbCxuPW51bGwhPT1lJiZcImZhbHNlXCIhPT1lLHI9Y0QoaSksbz0oci5nZXQodCl8fDApKzEsbD0oZC5nZXQodCl8fDApKzE7ci5zZXQodCxvKSxkLnNldCh0LGwpLHUucHVzaCh0KSwxPT09byYmbiYmY0wuYWRkKHQpLDE9PT1sJiZ0LnNldEF0dHJpYnV0ZShhLFwiXCIpLCFuJiZpJiZ0LnNldEF0dHJpYnV0ZShpLFwiaW5lcnRcIj09PWk/XCJcIjpcInRydWVcIil9fSl9KHQpLHMuY2xlYXIoKSxjUis9MSwoKT0+e3UuZm9yRWFjaChlPT57bGV0IHQ9Y0QoaSksbj0odC5nZXQoZSl8fDApLTEscj0oZC5nZXQoZSl8fDApLTE7dC5zZXQoZSxuKSxkLnNldChlLHIpLG58fCghY0wuaGFzKGUpJiZpJiZlLnJlbW92ZUF0dHJpYnV0ZShpKSxjTC5kZWxldGUoZSkpLHJ8fGUucmVtb3ZlQXR0cmlidXRlKGEpfSksKGNSLT0xKXx8KGN6LmluZXJ0PW5ldyBXZWFrTWFwLGN6W1wiYXJpYS1oaWRkZW5cIl09bmV3IFdlYWtNYXAsY3oubm9uZT1uZXcgV2Vha01hcCxjTD1uZXcgV2Vha1NldCxjTj17fSl9fShlLmNvbmNhdChBcnJheS5mcm9tKHIucXVlcnlTZWxlY3RvckFsbChcIlthcmlhLWxpdmVdXCIpKSkscix0LG4pfShbZyx0LmZpbmQoZT0+aUMoZS5jb250ZXh0Py5lbGVtZW50cy5kb21SZWZlcmVuY2V8fG51bGwpKT8uY29udGV4dD8uZWxlbWVudHMuZG9tUmVmZXJlbmNlLC4uLmUsLi4udigpLFMuY3VycmVudCxPLmN1cnJlbnQsUi5jdXJyZW50LE0uY3VycmVudCxqPy5iZWZvcmVPdXRzaWRlUmVmLmN1cnJlbnQsaj8uYWZ0ZXJPdXRzaWRlUmVmLmN1cnJlbnQseD9tOm51bGxdLmZpbHRlcihlPT5udWxsIT1lKSxzfHx4KTtyZXR1cm4oKT0+e24oKX19LFtyLG0sZyxzLEMsaix4LEUseSx2XSksYUMoKCk9PntpZihyfHwhYU4oRCkpcmV0dXJuO2xldCBlPWl5KGl4KEQpKTtxdWV1ZU1pY3JvdGFzaygoKT0+e2xldCB0PU4oRCksbj1fLmN1cnJlbnQscj0oXCJudW1iZXJcIj09dHlwZW9mIG4/dFtuXTpuLmN1cnJlbnQpfHxELG89aXYoRCxlKTtifHxvfHwhZHx8bGgocix7cHJldmVudFNjcm9sbDpyPT09RH0pfSl9LFtyLGQsRCxiLE4sX10pLGFDKCgpPT57dmFyIGU7aWYocnx8IUQpcmV0dXJuO2xldCB0PWl4KEQpO2Z1bmN0aW9uIG4oe3JlYXNvbjplLGV2ZW50OnQsbmVzdGVkOm59KXtpZihbXCJob3ZlclwiLFwic2FmZS1wb2x5Z29uXCJdLmluY2x1ZGVzKGUpJiZcIm1vdXNlbGVhdmVcIj09PXQudHlwZSYmKEIuY3VycmVudD0hMCksXCJvdXRzaWRlLXByZXNzXCI9PT1lKWlmKG4pQi5jdXJyZW50PSExO2Vsc2UgaWYoaWkodCl8fGlsKHQpKUIuY3VycmVudD0hMTtlbHNle2xldCBlPSExO2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuZm9jdXMoe2dldCBwcmV2ZW50U2Nyb2xsKCl7cmV0dXJuIGU9ITAsITF9fSksZT9CLmN1cnJlbnQ9ITE6Qi5jdXJyZW50PSEwfX1lPWl5KHQpLGNVKCksZSYmXCJib2R5XCIhPT1hSShlKSYmKGNaLnB1c2goZSksY1oubGVuZ3RoPjIwJiYoY1o9Y1ouc2xpY2UoLTIwKSkpLHAub24oXCJvcGVuY2hhbmdlXCIsbik7bGV0IG89dC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtyZXR1cm4gby5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIiksby5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSxPYmplY3QuYXNzaWduKG8uc3R5bGUsc2gpLHomJm0mJm0uaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJlbmRcIixvKSwoKT0+e3Aub2ZmKFwib3BlbmNoYW5nZVwiLG4pO2xldCBlPWl5KHQpLHI9aXYoZyxlKXx8RSYmaUIoRS5ub2Rlc1JlZi5jdXJyZW50LHkoKSwhMSkuc29tZSh0PT5pdih0LmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nLGUpKSxhPWZ1bmN0aW9uKCl7aWYoXCJib29sZWFuXCI9PXR5cGVvZiBrLmN1cnJlbnQpe2xldCBlPW18fGNGKCk7cmV0dXJuIGUmJmUuaXNDb25uZWN0ZWQ/ZTpvfXJldHVybiBrLmN1cnJlbnQuY3VycmVudHx8b30oKTtxdWV1ZU1pY3JvdGFzaygoKT0+e2xldCBuPWZ1bmN0aW9uKGUpe2xldCB0PXNxKCk7cmV0dXJuIHNGKGUsdCk/ZTpzWihlLHQpWzBdfHxlfShhKTtrLmN1cnJlbnQmJiFCLmN1cnJlbnQmJmFOKG4pJiYobj09PWV8fGU9PT10LmJvZHl8fHIpJiZuLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksby5yZW1vdmUoKX0pfX0sW3IsZyxELGssaCxwLEUseixtLHldKSx3LnVzZUVmZmVjdCgoKT0+e3F1ZXVlTWljcm90YXNrKCgpPT57Qi5jdXJyZW50PSExfSl9LFtyXSksdy51c2VFZmZlY3QoKCk9PntpZihyfHwhZClyZXR1cm47ZnVuY3Rpb24gZShlKXtsZXQgdD1pYihlKTt0Py5jbG9zZXN0KFwiW2RhdGEtYmFzZS11aS1jbGljay10cmlnZ2VyXVwiKSYmKFAuY3VycmVudD0hMCl9bGV0IHQ9aXgoRCk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsZSwhMCksKCk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLGUsITApfX0sW3IsZCxEXSksYUMoKCk9PntpZighciYmailyZXR1cm4gai5zZXRGb2N1c01hbmFnZXJTdGF0ZSh7bW9kYWw6cyxjbG9zZU9uRm9jdXNPdXQ6YyxvcGVuOmQsb25PcGVuQ2hhbmdlOmYsZG9tUmVmZXJlbmNlOm19KSwoKT0+e2ouc2V0Rm9jdXNNYW5hZ2VyU3RhdGUobnVsbCl9fSxbcixqLHMsZCxmLGMsbV0pLGFDKCgpPT57aWYoIXImJkQpcmV0dXJuIGNxKEQsQyksKCk9PntxdWV1ZU1pY3JvdGFzayhjVSl9fSxbcixELENdKTtsZXQgRj0hciYmKCFzfHwheCkmJih6fHxzKTtyZXR1cm4oMCxBLmpzeHMpKHcuRnJhZ21lbnQse2NoaWxkcmVuOltGJiYoMCxBLmpzeCkoc20se1wiZGF0YS10eXBlXCI6XCJpbnNpZGVcIixyZWY6WixvbkZvY3VzOmU9PntpZihzKXtsZXQgZT1OKCk7bGgoZVtlLmxlbmd0aC0xXSl9ZWxzZSBpZihqPy5wcmVzZXJ2ZVRhYk9yZGVyJiZqLnBvcnRhbE5vZGUpaWYoQi5jdXJyZW50PSExLHNXKGUsai5wb3J0YWxOb2RlKSl7bGV0IGU9c1YobSk7ZT8uZm9jdXMoKX1lbHNlIGouYmVmb3JlT3V0c2lkZVJlZi5jdXJyZW50Py5mb2N1cygpfX0pLG4sRiYmKDAsQS5qc3gpKHNtLHtcImRhdGEtdHlwZVwiOlwiaW5zaWRlXCIscmVmOlUsb25Gb2N1czplPT57aWYocylsaChOKClbMF0pO2Vsc2UgaWYoaj8ucHJlc2VydmVUYWJPcmRlciYmai5wb3J0YWxOb2RlKWlmKGMmJihCLmN1cnJlbnQ9ITApLHNXKGUsai5wb3J0YWxOb2RlKSl7bGV0IGU9cyQobSk7ZT8uZm9jdXMoKX1lbHNlIGouYWZ0ZXJPdXRzaWRlUmVmLmN1cnJlbnQ/LmZvY3VzKCl9fSldfSl9bGV0IGNWPXsuLi5zbiwuLi5sMn0sYyQ9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e3JlbmRlcjpuLGNsYXNzTmFtZTpyLGZpbmFsRm9jdXM6bywuLi5hfT1lLHtvcGVuOmksc2V0T3BlbjpsLHBvcHVwUmVmOnMsdHJhbnNpdGlvblN0YXR1czpjLHBvcHVwUHJvcHM6dSxtb3VudGVkOmQsaW5zdGFudFR5cGU6Zixvbk9wZW5DaGFuZ2VDb21wbGV0ZTpwLHBhcmVudDpoLGxhc3RPcGVuQ2hhbmdlUmVhc29uOm0scm9vdElkOmd9PWx3KCkse3NpZGU6eSxhbGlnbjp2LGZsb2F0aW5nQ29udGV4dDpifT1mdW5jdGlvbigpe2xldCBlPXcudXNlQ29udGV4dChzNCk7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IE1lbnVQb3NpdGlvbmVyQ29udGV4dCBpcyBtaXNzaW5nLiBNZW51UG9zaXRpb25lciBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPE1lbnUuUG9zaXRpb25lcj4uXCIpO3JldHVybiBlfSgpO2xrKHtvcGVuOmkscmVmOnMsb25Db21wbGV0ZSgpe2kmJnA/LighMCl9fSk7bGV0e2V2ZW50czp4fT1haigpO3cudXNlRWZmZWN0KCgpPT57ZnVuY3Rpb24gZShlKXtsKCExLGUuZG9tRXZlbnQsZS5yZWFzb24pfXJldHVybiB4Lm9uKFwiY2xvc2VcIixlKSwoKT0+e3gub2ZmKFwiY2xvc2VcIixlKX19LFt4LGxdKTtsZXQgQz1zbyhcImRpdlwiLGUse3N0YXRlOncudXNlTWVtbygoKT0+KHt0cmFuc2l0aW9uU3RhdHVzOmMsc2lkZTp5LGFsaWduOnYsb3BlbjppLG5lc3RlZDpcIm1lbnVcIj09PWgudHlwZSxpbnN0YW50OmZ9KSxbYyx5LHYsaSxoLnR5cGUsZl0pLHJlZjpbdCxzXSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmNWLHByb3BzOlt1LFwic3RhcnRpbmdcIj09PWM/aU06aVosYSx7XCJkYXRhLXJvb3Rvd25lcmlkXCI6Z31dfSksXz12b2lkIDA9PT1oLnR5cGV8fFwiY29udGV4dC1tZW51XCI9PT1oLnR5cGU7cmV0dXJuXCJtZW51YmFyXCI9PT1oLnR5cGUmJlwib3V0c2lkZS1wcmVzc1wiIT09bSYmKF89ITApLCgwLEEuanN4KShjSCx7Y29udGV4dDpiLG1vZGFsOiExLGRpc2FibGVkOiFkLHJldHVybkZvY3VzOm98fF8saW5pdGlhbEZvY3VzOlwibWVudVwiPT09aC50eXBlPy0xOjAscmVzdG9yZUZvY3VzOiEwLGNoaWxkcmVuOkN9KX0pLGNXPXcuY3JlYXRlQ29udGV4dCh2b2lkIDApLGNZPXcuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtyZW5kZXI6bixjbGFzc05hbWU6ciwuLi5vfT1lLFthLGldPXcudXNlU3RhdGUodm9pZCAwKSxsPXcudXNlTWVtbygoKT0+KHtzZXRMYWJlbElkOml9KSxbaV0pLHM9c28oXCJkaXZcIixlLHtyZWY6dCxwcm9wczp7cm9sZTpcImdyb3VwXCIsXCJhcmlhLWxhYmVsbGVkYnlcIjphLC4uLm99fSk7cmV0dXJuKDAsQS5qc3gpKGNXLlByb3ZpZGVyLHt2YWx1ZTpsLGNoaWxkcmVuOnN9KX0pO2Z1bmN0aW9uIGNLKGUpe3JldHVybiBheChlLFwiYmFzZS11aVwiKX1sZXQgY1g9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2NsYXNzTmFtZTpuLHJlbmRlcjpyLGlkOm8sLi4uYX09ZSxpPWNLKG8pLHtzZXRMYWJlbElkOmx9PWZ1bmN0aW9uKCl7bGV0IGU9dy51c2VDb250ZXh0KGNXKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogTWVudUdyb3VwUm9vdENvbnRleHQgaXMgbWlzc2luZy4gTWVudSBncm91cCBwYXJ0cyBtdXN0IGJlIHVzZWQgd2l0aGluIDxNZW51Lkdyb3VwPi5cIik7cmV0dXJuIGV9KCk7cmV0dXJuIGFDKCgpPT4obChpKSwoKT0+e2wodm9pZCAwKX0pLFtsLGldKSxzbyhcImRpdlwiLGUse3JlZjp0LHByb3BzOntpZDppLHJvbGU6XCJwcmVzZW50YXRpb25cIiwuLi5hfX0pfSksY0c9e3R5cGU6XCJyZWd1bGFyLWl0ZW1cIn0sY1E9dy5tZW1vKHcuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtjbGFzc05hbWU6bixjbG9zZU9uQ2xpY2s6cj0hMCxkaXNhYmxlZDpvPSExLGhpZ2hsaWdodGVkOmEsaWQ6aSxtZW51RXZlbnRzOmwsaXRlbVByb3BzOnMscmVuZGVyOmMsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjp1LHR5cGluZ1JlZjpkLG5hdGl2ZUJ1dHRvbjpmLC4uLnB9PWUse2dldEl0ZW1Qcm9wczpoLGl0ZW1SZWY6bX09ZnVuY3Rpb24oZSl7bGV0e2Nsb3NlT25DbGljazp0LGRpc2FibGVkOm49ITEsaGlnaGxpZ2h0ZWQ6cixpZDpvLG1lbnVFdmVudHM6YSxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOmksdHlwaW5nUmVmOmwsbmF0aXZlQnV0dG9uOnMsaXRlbU1ldGFkYXRhOmN9PWUsdT13LnVzZVJlZihudWxsKSx7Z2V0QnV0dG9uUHJvcHM6ZCxidXR0b25SZWY6Zn09c3Moe2Rpc2FibGVkOm4sZm9jdXNhYmxlV2hlbkRpc2FibGVkOiEwLG5hdGl2ZTpzfSkscD13LnVzZUNhbGxiYWNrKGU9PmxVKHtpZDpvLHJvbGU6XCJtZW51aXRlbVwiLHRhYkluZGV4OnI/MDotMSxvbk1vdXNlRW50ZXIoKXtcInN1Ym1lbnUtdHJpZ2dlclwiPT09Yy50eXBlJiZjLnNldEFjdGl2ZSgpfSxvbktleVVwOmU9PntcIiBcIj09PWUua2V5JiZsLmN1cnJlbnQmJmUucHJldmVudEJhc2VVSUhhbmRsZXIoKX0sb25DbGljazplPT57dCYmYS5lbWl0KFwiY2xvc2VcIix7ZG9tRXZlbnQ6ZSxyZWFzb246XCJpdGVtLXByZXNzXCJ9KX0sb25Nb3VzZVVwOigpPT57dS5jdXJyZW50JiZpLmN1cnJlbnQmJlwicmVndWxhci1pdGVtXCI9PT1jLnR5cGUmJnUuY3VycmVudC5jbGljaygpfX0sZSxkKSxbbyxyLGQsbCx0LGEsaSxjXSksaD1sWCh1LGYpO3JldHVybiB3LnVzZU1lbW8oKCk9Pih7Z2V0SXRlbVByb3BzOnAsaXRlbVJlZjpofSksW3AsaF0pfSh7Y2xvc2VPbkNsaWNrOnIsZGlzYWJsZWQ6byxoaWdobGlnaHRlZDphLGlkOmksbWVudUV2ZW50czpsLGFsbG93TW91c2VVcFRyaWdnZXJSZWY6dSx0eXBpbmdSZWY6ZCxuYXRpdmVCdXR0b246ZixpdGVtTWV0YWRhdGE6Y0d9KTtyZXR1cm4gc28oXCJkaXZcIixlLHtzdGF0ZTp3LnVzZU1lbW8oKCk9Pih7ZGlzYWJsZWQ6byxoaWdobGlnaHRlZDphfSksW28sYV0pLHJlZjpbbSx0XSxwcm9wczpbcyxwLGhdfSl9KSksY0o9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2lkOm4sbGFiZWw6cixuYXRpdmVCdXR0b246bz0hMSwuLi5hfT1lLGk9dy51c2VSZWYobnVsbCksbD1zZCh7bGFiZWw6cn0pLHM9bFgodCxsLnJlZixpKSx7aXRlbVByb3BzOmMsYWN0aXZlSW5kZXg6dSxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOmQsdHlwaW5nUmVmOmZ9PWx3KCkscD1jSyhuKSxoPWwuaW5kZXg9PT11LHtldmVudHM6bX09YWooKTtyZXR1cm4oMCxBLmpzeCkoY1Esey4uLmEsaWQ6cCxyZWY6cyxoaWdobGlnaHRlZDpoLG1lbnVFdmVudHM6bSxpdGVtUHJvcHM6YyxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOmQsdHlwaW5nUmVmOmYsbmF0aXZlQnV0dG9uOm99KX0pO3ZhciBjMD1cIl9fbmV4dF9idWlsdGluX19cIjtmdW5jdGlvbiBjMShlKXtyZXR1cm4gZS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJeXCIuY29uY2F0KGMwKSksXCJcIikucmVwbGFjZShuZXcgUmVnRXhwKFwiXCIuY29uY2F0KFwiQGJvdW5kYXJ5XCIsXCIkXCIpKSxcIlwiKX12YXIgYzI9XCJib3VuZGFyeTpcIjtmdW5jdGlvbiBjNChlKXtyZXR1cm4gZS5zdGFydHNXaXRoKGMyKX1mdW5jdGlvbiBjNShlKXtyZXR1cm4gZS5yZXBsYWNlKGMyLFwiXCIpfWZ1bmN0aW9uIGMzKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBjNihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gYzkoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIGM4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBjMyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBjMyhlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX12YXIgYzc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbihlKXt0LmZvckVhY2goZnVuY3Rpb24odCl7XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KGUpOnQmJih0LmN1cnJlbnQ9ZSl9KX19O2Z1bmN0aW9uIHVlKGUpe3ZhciB0LG49ZS5ub2RlU3RhdGUscj1lLmJvdW5kYXJpZXMsbz1uLnBhZ2VQYXRoLGE9bi5ib3VuZGFyeVR5cGUsaT1uLnNldEJvdW5kYXJ5VHlwZSxsPWM4KCgwLHcudXNlU3RhdGUpKCExKSwyKSxzPWxbMF0sYz1sWzFdLHU9ZGwoKS5zaGFkb3dSb290LGQ9KDAsdy51c2VSZWYpKG51bGwpLGY9KDAsdy51c2VSZWYpKG51bGwpO25lKGYsZCxzLGZ1bmN0aW9uKCl7YyghMSl9LG51bGw9PSh0PWQuY3VycmVudCk/dm9pZCAwOnQub3duZXJEb2N1bWVudCk7dmFyIHA9KE9iamVjdC52YWx1ZXMocikuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWV9KXx8XCJcIikuc3BsaXQoXCIuXCIpLnBvcCgpfHxcImpzXCIsaD0oMCx3LnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhyKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9YzgoZSwyKSxuPXRbMF0scj1jMSgodFsxXXx8XCJcIikuc3BsaXQoXCIvXCIpLnBvcCgpfHxcIlwiLmNvbmNhdChuLFwiLlwiKS5jb25jYXQocCkpO3JldHVybltuLHJdfSkpfSxbcixwXSksbT0ob3x8XCJcIikuc3BsaXQoXCIvXCIpLnBvcCgpfHxcIlwiLGc9YzEoYT9cInBhZ2UuXCIuY29uY2F0KHApOm18fFwicGFnZS5cIi5jb25jYXQocCkpLHk9W3tsYWJlbDpoLmxvYWRpbmcsdmFsdWU6XCJsb2FkaW5nXCIsaWNvbjooMCxBLmpzeCkodXQse30pLGRpc2FibGVkOiFyLmxvYWRpbmd9LHtsYWJlbDpoLmVycm9yLHZhbHVlOlwiZXJyb3JcIixpY29uOigwLEEuanN4KSh1bix7fSksZGlzYWJsZWQ6IXIuZXJyb3J9LHtsYWJlbDpoW1wibm90LWZvdW5kXCJdLHZhbHVlOlwibm90LWZvdW5kXCIsaWNvbjooMCxBLmpzeCkodXIse30pLGRpc2FibGVkOiFyW1wibm90LWZvdW5kXCJdfV0sdj17bGFiZWw6YT9cIlJlc2V0XCI6Zyx2YWx1ZTpcInJlc2V0XCIsaWNvbjooMCxBLmpzeCkodW8se30pLGRpc2FibGVkOm51bGw9PT1hfSxiPSgwLHcudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkxTZWFyY2hQYXJhbXMoe2ZpbGU6ZS5maWxlUGF0aCxpc0FwcFJlbGF0aXZlUGF0aDpcIjFcIn0pO2ZldGNoKFwiXCIuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCIsXCIvX19uZXh0anNfbGF1bmNoLWVkaXRvcj9cIikuY29uY2F0KHQudG9TdHJpbmcoKSkpLmNhdGNoKGNvbnNvbGUud2Fybil9LFtdKSx4PSgwLHcudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJub3QtZm91bmRcIjpjYXNlXCJsb2FkaW5nXCI6Y2FzZVwiZXJyb3JcIjppKGUpO2JyZWFrO2Nhc2VcInJlc2V0XCI6aShudWxsKTticmVhaztjYXNlXCJvcGVuLWVkaXRvclwiOm8mJmIoe2ZpbGVQYXRoOm99KX19LFtpLG8sYl0pLEM9KDAsdy51c2VNZW1vKShmdW5jdGlvbigpe3JldHVyblwibGF5b3V0XCIhPT1uLnR5cGUmJlwidGVtcGxhdGVcIiE9PW4udHlwZSYmT2JqZWN0LnZhbHVlcyhyKS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZX0pfSxbbi50eXBlLHJdKTtyZXR1cm4oMCxBLmpzeHMpKGxLLHtkZWxheTowLG1vZGFsOiExLG9wZW46cyxvbk9wZW5DaGFuZ2U6YyxjaGlsZHJlbjpbKDAsQS5qc3gpKHNwLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXJcIixcImRhdGEtbmV4dGpzLWRldi1vdmVybGF5LXNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci1idXR0b25cIjohMCxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9YzcoZS5yZWYsZCk7cmV0dXJuKDAsQS5qc3gpKHVpLGM5KGM2KHt9LGUpLHtyZWY6dH0pKX0sZGlzYWJsZWQ6IUN9KSwoMCxBLmpzeCkoczIse2NvbnRhaW5lcjp1LGNoaWxkcmVuOigwLEEuanN4KShjVCx7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1wb3NpdGlvbmVyXCIsc2lkZTpcImJvdHRvbVwiLGFsaWduOlwiY2VudGVyXCIsc2lkZU9mZnNldDo2LGFycm93UGFkZGluZzo4LHJlZjpmLGNoaWxkcmVuOigwLEEuanN4cykoYyQse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktZHJvcGRvd25cIixjaGlsZHJlbjpbKDAsQS5qc3hzKShjWSx7Y2hpbGRyZW46WygwLEEuanN4KShjWCx7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS1ncm91cC1sYWJlbFwiLGNoaWxkcmVuOlwiVG9nZ2xlIE92ZXJyaWRlc1wifSkseS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuKDAsQS5qc3hzKShjSix7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiB4KGUudmFsdWUpfSxkaXNhYmxlZDplLmRpc2FibGVkLGNoaWxkcmVuOltlLmljb24sZS5sYWJlbF19LGUudmFsdWUpfSldfSksKDAsQS5qc3gpKGNZLHtjaGlsZHJlbjooMCxBLmpzeHMpKGNKLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW1cIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHgodi52YWx1ZSl9LGRpc2FibGVkOnYuZGlzYWJsZWQsY2hpbGRyZW46W3YuaWNvbix2LmxhYmVsXX0sdi52YWx1ZSl9KV19KX0pfSldfSl9ZnVuY3Rpb24gdXQoKXt2YXIgZSx0LG49KDAseC5jKSgyKTtyZXR1cm4gblswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLEEuanN4KShcImdcIix7Y2xpcFBhdGg6XCJ1cmwoI2NsaXAwXzI3NTlfMTg2NilcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTAgMy41QzEzLjU4OTkgMy41IDE2LjUgNi40MTAxNSAxNi41IDEwQzE2LjUgMTMuNTg5OSAxMy41ODk5IDE2LjUgMTAgMTYuNUM2LjQxMDE1IDE2LjUgMy41IDEzLjU4OTkgMy41IDEwQzMuNSA2LjQxMDE1IDYuNDEwMTUgMy41IDEwIDMuNVpNMiAxMEMyIDE0LjQxODMgNS41ODE3MiAxOCAxMCAxOEMxNC40MTgzIDE4IDE4IDE0LjQxODMgMTggMTBDMTggNS41ODE3MiAxNC40MTgzIDIgMTAgMkM1LjU4MTcyIDIgMiA1LjU4MTcyIDIgMTBaTTEwLjc1IDkuNjI0MDJWNkg5LjI1VjkuODc1QzkuMjUgMTAuMTg5OCA5LjM5ODU4IDEwLjQ4NiA5LjY1MDM5IDEwLjY3NDhMMTEuNTQ5OCAxMi4wOTk2TDEyLjE1MDQgMTIuNTQ5OEwxMy4wNDk4IDExLjM0OTZMMTIuNDUwMiAxMC45MDA0TDEwLjc1IDkuNjI0MDJaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSxuWzBdPWUpOmU9blswXSxuWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3hzKShcInN2Z1wiLHt3aWR0aDpcIjIwcHhcIixoZWlnaHQ6XCIyMHB4XCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOltlLCgwLEEuanN4KShcImRlZnNcIix7Y2hpbGRyZW46KDAsQS5qc3gpKFwiY2xpcFBhdGhcIix7aWQ6XCJjbGlwMF8yNzU5XzE4NjZcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJ3aGl0ZVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgyIDIpXCJ9KX0pfSldfSksblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB1bigpe3ZhciBlLHQsbj0oMCx4LmMpKDIpO3JldHVybiBuWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwiZ1wiLHtjbGlwUGF0aDpcInVybCgjY2xpcDBfMjc1OV8xODgxKVwiLGNoaWxkcmVuOigwLEEuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0zLjUgNy4zMDc2MlYxMi42OTI0TDcuMzA3NjIgMTYuNUgxMi42OTI0TDE2LjUgMTIuNjkyNFY3LjMwNzYyTDEyLjY5MjQgMy41SDcuMzA3NjJMMy41IDcuMzA3NjJaTTE4IDEyLjg5OTRMMTcuOTk1MSAxMi45OThDMTcuOTcyNCAxMy4yMjcxIDE3Ljg3MTIgMTMuNDQyMyAxNy43MDcgMTMuNjA2NEwxMy42MDY0IDE3LjcwN0wxMy41MzMyIDE3Ljc3MzRDMTMuMzgwNiAxNy44OTg1IDEzLjE5NDQgMTcuOTc1NyAxMi45OTggMTcuOTk1MUwxMi44OTk0IDE4SDcuMTAwNTlMNy4wMDE5NSAxNy45OTUxQzYuODA1NjIgMTcuOTc1NyA2LjYxOTQgMTcuODk4NSA2LjQ2NjggMTcuNzczNEw2LjM5MzU1IDE3LjcwN0wyLjI5Mjk3IDEzLjYwNjRDMi4xMjg4MyAxMy40NDIzIDIuMDI3NTYgMTMuMjI3MSAyLjAwNDg4IDEyLjk5OEwyIDEyLjg5OTRWNy4xMDA1OUMyIDYuODM1MzkgMi4xMDU0NiA2LjU4MTA5IDIuMjkyOTcgNi4zOTM1NUw2LjM5MzU1IDIuMjkyOTdDNi41NTc3MSAyLjEyODgzIDYuNzcyOTQgMi4wMjc1NiA3LjAwMTk1IDIuMDA0ODhMNy4xMDA1OSAySDEyLjg5OTRMMTIuOTk4IDIuMDA0ODhDMTMuMjI3MSAyLjAyNzU2IDEzLjQ0MjMgMi4xMjg4MyAxMy42MDY0IDIuMjkyOTdMMTcuNzA3IDYuMzkzNTVDMTcuODk0NSA2LjU4MTA5IDE4IDYuODM1MzkgMTggNy4xMDA1OVYxMi44OTk0Wk05LjI1IDUuNzVIMTAuNzVMMTAuNzUgMTAuNzVIOS4yNUw5LjI1IDUuNzVaTTEwIDE0QzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM0MxMSAxMi40NDc3IDEwLjU1MjMgMTIgMTAgMTJDOS40NDc3MiAxMiA5IDEyLjQ0NzcgOSAxM0M5IDEzLjU1MjMgOS40NDc3MiAxNCAxMCAxNFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLG5bMF09ZSk6ZT1uWzBdLG5bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeHMpKFwic3ZnXCIse3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjpbZSwoMCxBLmpzeCkoXCJkZWZzXCIse2NoaWxkcmVuOigwLEEuanN4KShcImNsaXBQYXRoXCIse2lkOlwiY2xpcDBfMjc1OV8xODgxXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicmVjdFwiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIixmaWxsOlwid2hpdGVcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMiAyKVwifSl9KX0pXX0pLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gdXIoKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIyMHB4XCIsaGVpZ2h0OlwiMjBweFwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTAuNTU4NiAyLjVDMTEuMTM0MSAyLjUwMDA0IDExLjY1ODggMi44Mjk0IDExLjkwOTEgMy4zNDc2NkwxNy44MDc2IDE1LjU2NTRDMTguMTI3OCAxNi4yMjkyIDE3LjY0NDIgMTYuOTk5NyAxNi45MDcyIDE3SDMuMDkyNzRDMi4zNTU3NCAxNi45OTk3IDEuODcyMSAxNi4yMjkyIDIuMTkyMzUgMTUuNTY1NEw4LjA5MDc5IDMuMzQ3NjZDOC4zNDEwOSAyLjgyOTQgOC44NjU4MyAyLjUwMDA0IDkuNDQxMzcgMi41SDEwLjU1ODZaTTMuODkwNTkgMTUuNUgxNi4xMDkzTDEwLjU1ODYgNEg5LjQ0MTM3TDMuODkwNTkgMTUuNVpNOS4yNDk5NyA2Ljc1SDEwLjc1TDEwLjc1IDEwLjc1SDkuMjQ5OTdMOS4yNDk5NyA2Ljc1Wk05Ljk5OTk3IDE0QzEwLjU1MjMgMTQgMTEgMTMuNTUyMyAxMSAxM0MxMSAxMi40NDc3IDEwLjU1MjMgMTIgOS45OTk5NyAxMkM5LjQ0NzY4IDEyIDguOTk5OTcgMTIuNDQ3NyA4Ljk5OTk3IDEzQzguOTk5OTcgMTMuNTUyMyA5LjQ0NzY4IDE0IDkuOTk5OTcgMTRaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHVvKCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNOS45NjQ4NCAzQzEzLjg0NjMgMy4wMDAxOCAxNyA2LjEzMDEyIDE3IDEwQzE3IDEzLjg2OTkgMTMuODQ2MyAxNi45OTk4IDkuOTY0ODQgMTdDNy42MjQwNCAxNyA1LjU0ODc3IDE1Ljg2MTcgNC4yNzA1MSAxNC4xMTIzTDMuODI4MTIgMTMuNTA2OEw1LjAzOTA2IDEyLjYyMjFMNS40ODE0NSAxMy4yMjc1QzYuNDg4MTUgMTQuNjA1MyA4LjEyMDkyIDE1LjUgOS45NjQ4NCAxNS41QzEzLjAyNTkgMTUuNDk5OCAxNS41IDEzLjAzMzUgMTUuNSAxMEMxNS41IDYuOTY2NTQgMTMuMDI1OSA0LjUwMDE4IDkuOTY0ODQgNC41QzcuNDI5MDUgNC41IDUuMjk1NDQgNi4xOTQyOSA0LjYzODY3IDguNUg4VjEwSDIuNzVDMi4zMzU3OSAxMCAyIDkuNjY0MjEgMiA5LjI1VjRIMy41VjcuMjM3M0M0LjU3NzgxIDQuNzQzNzYgNy4wNjc0OSAzIDkuOTY0ODQgM1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gdWEoZSl7dmFyIHQsbixyPSgwLHguYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOC43MDcxIDIuMzk2NDRDOC4zMTY1OCAyLjAwNTkyIDcuNjgzNDEgMi4wMDU5MiA3LjI5Mjg5IDIuMzk2NDRMNC40Njk2NiA1LjIxOTY2TDMuOTM5MzMgNS43NDk5OUw0Ljk5OTk5IDYuODEwNjVMNS41MzAzMiA2LjI4MDMyTDcuOTk5OTkgMy44MTA2NUwxMC40Njk3IDYuMjgwMzJMMTEgNi44MTA2NUwxMi4wNjA3IDUuNzQ5OTlMMTEuNTMwMyA1LjIxOTY2TDguNzA3MSAyLjM5NjQ0Wk01LjUzMDMyIDkuNzE5NjZMNC45OTk5OSA5LjE4OTMzTDMuOTM5MzMgMTAuMjVMNC40Njk2NiAxMC43ODAzTDcuMjkyODkgMTMuNjAzNUM3LjY4MzQxIDEzLjk5NDEgOC4zMTY1OCAxMy45OTQxIDguNzA3MSAxMy42MDM1TDExLjUzMDMgMTAuNzgwM0wxMi4wNjA3IDEwLjI1TDExIDkuMTg5MzNMMTAuNDY5NyA5LjcxOTY2TDcuOTk5OTkgMTIuMTg5M0w1LjUzMDMyIDkuNzE5NjZaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PWU/KG49KDAsQS5qc3gpKFwic3ZnXCIsYzkoYzYoe3N0cm9rZUxpbmVqb2luOlwicm91bmRcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCJ9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHVpKGUpe3ZhciB0LG4scj0oMCx4LmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dFwiLGNoaWxkcmVuOigwLEEuanN4KSh1YSx7Y2xhc3NOYW1lOlwicGx1cy1pY29uXCJ9KX0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLEEuanN4KShcImJ1dHRvblwiLGM5KGM2KHt9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWxldCB1bD13LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiB1cygpe2xldCBlPXcudXNlQ29udGV4dCh1bCk7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IFRvb2x0aXBSb290Q29udGV4dCBpcyBtaXNzaW5nLiBUb29sdGlwIHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8VG9vbHRpcC5Sb290Pi5cIik7cmV0dXJuIGV9bGV0IHVjPXcuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtjbGFzc05hbWU6bixyZW5kZXI6ciwuLi5vfT1lLHtvcGVuOmEsc2V0VHJpZ2dlckVsZW1lbnQ6aSx0cmlnZ2VyUHJvcHM6bH09dXMoKTtyZXR1cm4gc28oXCJidXR0b25cIixlLHtzdGF0ZTp3LnVzZU1lbW8oKCk9Pih7b3BlbjphfSksW2FdKSxyZWY6W3QsaV0scHJvcHM6W2wsb10sY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzZX0pfSksdXU9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gdWQoKXtsZXQgZT13LnVzZUNvbnRleHQodXUpO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBUb29sdGlwUG9zaXRpb25lckNvbnRleHQgaXMgbWlzc2luZy4gVG9vbHRpcFBvc2l0aW9uZXIgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxUb29sdGlwLlBvc2l0aW9uZXI+LlwiKTtyZXR1cm4gZX1sZXQgdWY9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2NsYXNzTmFtZTpuLHJlbmRlcjpyLC4uLm99PWUse29wZW46YSxhcnJvd1JlZjppLHNpZGU6bCxhbGlnbjpzLGFycm93VW5jZW50ZXJlZDpjLGFycm93U3R5bGVzOnV9PXVkKCk7cmV0dXJuIHNvKFwiZGl2XCIsZSx7c3RhdGU6dy51c2VNZW1vKCgpPT4oe29wZW46YSxzaWRlOmwsYWxpZ246cyx1bmNlbnRlcmVkOmN9KSxbYSxsLHMsY10pLHJlZjpbdCxpXSxwcm9wczpbe3N0eWxlOnUsXCJhcmlhLWhpZGRlblwiOiEwfSxvXSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOnNufSl9KSx1cD17Li4uc24sLi4ubDJ9LHVoPXcuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtjbGFzc05hbWU6bixyZW5kZXI6ciwuLi5vfT1lLHtvcGVuOmEsaW5zdGFudFR5cGU6aSx0cmFuc2l0aW9uU3RhdHVzOmwscG9wdXBQcm9wczpzLHBvcHVwUmVmOmMsb25PcGVuQ2hhbmdlQ29tcGxldGU6dX09dXMoKSx7c2lkZTpkLGFsaWduOmZ9PXVkKCk7cmV0dXJuIGxrKHtvcGVuOmEscmVmOmMsb25Db21wbGV0ZSgpe2EmJnU/LighMCl9fSksc28oXCJkaXZcIixlLHtzdGF0ZTp3LnVzZU1lbW8oKCk9Pih7b3BlbjphLHNpZGU6ZCxhbGlnbjpmLGluc3RhbnQ6aSx0cmFuc2l0aW9uU3RhdHVzOmx9KSxbYSxkLGYsaSxsXSkscmVmOlt0LGNdLHByb3BzOltzLFwic3RhcnRpbmdcIj09PWw/aU06aVosb10sY3VzdG9tU3R5bGVIb29rTWFwcGluZzp1cH0pfSksdW09dy5jcmVhdGVDb250ZXh0KHZvaWQgMCksdWc9dy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e3JlbmRlcjpuLGNsYXNzTmFtZTpyLGFuY2hvcjpvLHBvc2l0aW9uTWV0aG9kOmE9XCJhYnNvbHV0ZVwiLHNpZGU6aT1cInRvcFwiLGFsaWduOmw9XCJjZW50ZXJcIixzaWRlT2Zmc2V0OnM9MCxhbGlnbk9mZnNldDpjPTAsY29sbGlzaW9uQm91bmRhcnk6dT1cImNsaXBwaW5nLWFuY2VzdG9yc1wiLGNvbGxpc2lvblBhZGRpbmc6ZD01LGFycm93UGFkZGluZzpmPTUsc3RpY2t5OnA9ITEsdHJhY2tBbmNob3I6aD0hMCxjb2xsaXNpb25Bdm9pZGFuY2U6bT1pcSwuLi5nfT1lLHtvcGVuOnksc2V0UG9zaXRpb25lckVsZW1lbnQ6dixtb3VudGVkOmIsZmxvYXRpbmdSb290Q29udGV4dDp4LHRyYWNrQ3Vyc29yQXhpczpDLGhvdmVyYWJsZTpffT11cygpLGs9Y0Uoe2FuY2hvcjpvLHBvc2l0aW9uTWV0aG9kOmEsZmxvYXRpbmdSb290Q29udGV4dDp4LG1vdW50ZWQ6YixzaWRlOmksc2lkZU9mZnNldDpzLGFsaWduOmwsYWxpZ25PZmZzZXQ6Yyxjb2xsaXNpb25Cb3VuZGFyeTp1LGNvbGxpc2lvblBhZGRpbmc6ZCxzdGlja3k6cCxhcnJvd1BhZGRpbmc6Zix0cmFja0FuY2hvcjpoLGtlZXBNb3VudGVkOmZ1bmN0aW9uKCl7bGV0IGU9dy51c2VDb250ZXh0KHVtKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogPFRvb2x0aXAuUG9ydGFsPiBpcyBtaXNzaW5nLlwiKTtyZXR1cm4gZX0oKSxjb2xsaXNpb25Bdm9pZGFuY2U6bX0pLEU9dy51c2VNZW1vKCgpPT57bGV0IGU9e307cmV0dXJuIHkmJlwiYm90aFwiIT09QyYmX3x8KGUucG9pbnRlckV2ZW50cz1cIm5vbmVcIikse3JvbGU6XCJwcmVzZW50YXRpb25cIixoaWRkZW46IWIsc3R5bGU6ey4uLmsucG9zaXRpb25lclN0eWxlcywuLi5lfX19LFt5LEMsXyxiLGsucG9zaXRpb25lclN0eWxlc10pLGo9dy51c2VNZW1vKCgpPT4oe3Byb3BzOkUsLi4ua30pLFtFLGtdKSxTPXcudXNlTWVtbygoKT0+KHtvcGVuOnksc2lkZTpqLnNpZGUsYWxpZ246ai5hbGlnbixhbmNob3JIaWRkZW46ai5hbmNob3JIaWRkZW59KSxbeSxqLnNpZGUsai5hbGlnbixqLmFuY2hvckhpZGRlbl0pLE89dy51c2VNZW1vKCgpPT4oey4uLlMsYXJyb3dSZWY6ai5hcnJvd1JlZixhcnJvd1N0eWxlczpqLmFycm93U3R5bGVzLGFycm93VW5jZW50ZXJlZDpqLmFycm93VW5jZW50ZXJlZH0pLFtTLGouYXJyb3dSZWYsai5hcnJvd1N0eWxlcyxqLmFycm93VW5jZW50ZXJlZF0pLEI9c28oXCJkaXZcIixlLHtzdGF0ZTpTLHByb3BzOltqLnByb3BzLGddLHJlZjpbdCx2XSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOnNufSk7cmV0dXJuKDAsQS5qc3gpKHV1LlByb3ZpZGVyLHt2YWx1ZTpPLGNoaWxkcmVuOkJ9KX0pO2Z1bmN0aW9uIHV5KGUpe2xldCB0PXNKKHtyb290OmUucm9vdH0pO3JldHVybiB0JiZlaC5jcmVhdGVQb3J0YWwoZS5jaGlsZHJlbix0KX1mdW5jdGlvbiB1dihlKXtsZXR7Y2hpbGRyZW46dCxrZWVwTW91bnRlZDpuPSExLGNvbnRhaW5lcjpyfT1lLHttb3VudGVkOm99PXVzKCk7cmV0dXJuIG98fG4/KDAsQS5qc3gpKHVtLlByb3ZpZGVyLHt2YWx1ZTpuLGNoaWxkcmVuOigwLEEuanN4KSh1eSx7cm9vdDpyLGNoaWxkcmVuOnR9KX0pOm51bGx9bGV0IHViPXcuY3JlYXRlQ29udGV4dCh7aGFzUHJvdmlkZXI6ITEsdGltZW91dE1zOjAsZGVsYXlSZWY6e2N1cnJlbnQ6MH0saW5pdGlhbERlbGF5UmVmOntjdXJyZW50OjB9LHRpbWVvdXQ6bmV3IGF1LGN1cnJlbnRJZFJlZjp7Y3VycmVudDpudWxsfSxjdXJyZW50Q29udGV4dFJlZjp7Y3VycmVudDpudWxsfX0pO2Z1bmN0aW9uIHVBKGUpe2xldHtjaGlsZHJlbjp0LGRlbGF5Om4sdGltZW91dE1zOnI9MH09ZSxvPXcudXNlUmVmKG4pLGE9dy51c2VSZWYobiksaT13LnVzZVJlZihudWxsKSxsPXcudXNlUmVmKG51bGwpLHM9YWQoKTtyZXR1cm4oMCxBLmpzeCkodWIuUHJvdmlkZXIse3ZhbHVlOncudXNlTWVtbygoKT0+KHtoYXNQcm92aWRlcjohMCxkZWxheVJlZjpvLGluaXRpYWxEZWxheVJlZjphLGN1cnJlbnRJZFJlZjppLHRpbWVvdXRNczpyLGN1cnJlbnRDb250ZXh0UmVmOmwsdGltZW91dDpzfSksW3Isc10pLGNoaWxkcmVuOnR9KX1sZXQgdXg9dy5jcmVhdGVDb250ZXh0KHZvaWQgMCksdXc9ZnVuY3Rpb24oZSl7bGV0e2RlbGF5OnQsY2xvc2VEZWxheTpuLHRpbWVvdXQ6cj00MDB9PWUsbz13LnVzZU1lbW8oKCk9Pih7ZGVsYXk6dCxjbG9zZURlbGF5Om59KSxbdCxuXSksYT13LnVzZU1lbW8oKCk9Pih7b3Blbjp0LGNsb3NlOm59KSxbdCxuXSk7cmV0dXJuKDAsQS5qc3gpKHV4LlByb3ZpZGVyLHt2YWx1ZTpvLGNoaWxkcmVuOigwLEEuanN4KSh1QSx7ZGVsYXk6YSx0aW1lb3V0TXM6cixjaGlsZHJlbjplLmNoaWxkcmVufSl9KX07ZnVuY3Rpb24gdUMoZSl7cmV0dXJuIG51bGwhPWUmJm51bGwhPWUuY2xpZW50WH1mdW5jdGlvbiB1XyhlKXtsZXR7ZGlzYWJsZWQ6dD0hMSxkZWZhdWx0T3BlbjpuPSExLG9uT3BlbkNoYW5nZTpyLG9wZW46byxkZWxheTphLGNsb3NlRGVsYXk6aSxob3ZlcmFibGU6bD0hMCx0cmFja0N1cnNvckF4aXM6cz1cIm5vbmVcIixhY3Rpb25zUmVmOmMsb25PcGVuQ2hhbmdlQ29tcGxldGU6dX09ZSxkPWE/PzYwMCxmPWk/PzAsW3AsaF09dy51c2VTdGF0ZShudWxsKSxbbSxnXT13LnVzZVN0YXRlKG51bGwpLFt5LHZdPXcudXNlU3RhdGUoKSxiPXcudXNlUmVmKG51bGwpLFt4LENdPWF5KHtjb250cm9sbGVkOm8sZGVmYXVsdDpuLG5hbWU6XCJUb29sdGlwXCIsc3RhdGU6XCJvcGVuXCJ9KSxfPSF0JiZ4O2Z1bmN0aW9uIGsoZSx0LG4pe2xldCBvPVwidHJpZ2dlci1ob3ZlclwiPT09bixhPWUmJlwidHJpZ2dlci1mb2N1c1wiPT09bixpPSFlJiYoXCJ0cmlnZ2VyLXByZXNzXCI9PT1ufHxcImVzY2FwZS1rZXlcIj09PW4pO2Z1bmN0aW9uIGwoKXtyPy4oZSx0LG4pLEMoZSl9bz9laC5mbHVzaFN5bmMobCk6bCgpLGF8fGk/dihhP1wiZm9jdXNcIjpcImRpc21pc3NcIik6XCJ0cmlnZ2VyLWhvdmVyXCI9PT1uJiZ2KHZvaWQgMCl9bGV0IEU9YWgoayk7eCYmdCYmayghMSx2b2lkIDAsXCJkaXNhYmxlZFwiKTtsZXR7bW91bnRlZDpqLHNldE1vdW50ZWQ6Uyx0cmFuc2l0aW9uU3RhdHVzOk99PWxfKF8pLEI9YWgoKCk9PntTKCExKSx1Py4oITEpfSk7bGsoe2VuYWJsZWQ6IWMsb3BlbjpfLHJlZjpiLG9uQ29tcGxldGUoKXtffHxCKCl9fSksdy51c2VJbXBlcmF0aXZlSGFuZGxlKGMsKCk9Pih7dW5tb3VudDpCfSksW0JdKTtsZXQgUD1hQih7ZWxlbWVudHM6e3JlZmVyZW5jZTpwLGZsb2F0aW5nOm19LG9wZW46Xyxvbk9wZW5DaGFuZ2UoZSx0LG4pe0UoZSx0LGxEKG4pKX19KSxJPXcudXNlQ29udGV4dCh1eCkse2RlbGF5UmVmOlQsaXNJbnN0YW50UGhhc2U6eixoYXNQcm92aWRlcjpEfT1mdW5jdGlvbihlLHQ9e30pe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZmxvYXRpbmdJZDpvfT1lLHtlbmFibGVkOmE9ITB9PXQse2N1cnJlbnRJZFJlZjppLGRlbGF5UmVmOmwsdGltZW91dE1zOnMsaW5pdGlhbERlbGF5UmVmOmMsY3VycmVudENvbnRleHRSZWY6dSxoYXNQcm92aWRlcjpkLHRpbWVvdXQ6Zn09dy51c2VDb250ZXh0KHViKSxbcCxoXT13LnVzZVN0YXRlKCExKTtyZXR1cm4gYUMoKCk9PntmdW5jdGlvbiBlKCl7aCghMSksdS5jdXJyZW50Py5zZXRJc0luc3RhbnRQaGFzZSghMSksaS5jdXJyZW50PW51bGwsdS5jdXJyZW50PW51bGwsbC5jdXJyZW50PWMuY3VycmVudH1pZihhJiZpLmN1cnJlbnQmJiFuJiZpLmN1cnJlbnQ9PT1vKXtpZihoKCExKSxzKXJldHVybiBmLnN0YXJ0KHMsZSksKCk9PntmLmNsZWFyKCl9O2UoKX19LFthLG4sbyxpLGwscyxjLHUsZl0pLGFDKCgpPT57aWYoIWF8fCFuKXJldHVybjtsZXQgZT11LmN1cnJlbnQsdD1pLmN1cnJlbnQ7dS5jdXJyZW50PXtvbk9wZW5DaGFuZ2U6cixzZXRJc0luc3RhbnRQaGFzZTpofSxpLmN1cnJlbnQ9byxsLmN1cnJlbnQ9e29wZW46MCxjbG9zZTppaihjLmN1cnJlbnQsXCJjbG9zZVwiKX0sbnVsbCE9PXQmJnQhPT1vPyhmLmNsZWFyKCksaCghMCksZT8uc2V0SXNJbnN0YW50UGhhc2UoITApLGU/Lm9uT3BlbkNoYW5nZSghMSkpOihoKCExKSxlPy5zZXRJc0luc3RhbnRQaGFzZSghMSkpfSxbYSxuLG8scixpLGwscyxjLHUsZl0pLGFDKCgpPT4oKT0+e3UuY3VycmVudD1udWxsfSxbdV0pLHcudXNlTWVtbygoKT0+KHtoYXNQcm92aWRlcjpkLGRlbGF5UmVmOmwsaXNJbnN0YW50UGhhc2U6cH0pLFtkLGwscF0pfShQKSxMPXo/XCJkZWxheVwiOnksTj1pTyhQLHtlbmFibGVkOiF0LG1vdXNlT25seTohMCxtb3ZlOiExLGhhbmRsZUNsb3NlOmwmJlwiYm90aFwiIT09cz9pVCgpOm51bGwscmVzdE1zKCl7bGV0IGU9ST8uZGVsYXksdD1cIm9iamVjdFwiPT10eXBlb2YgVC5jdXJyZW50P1QuY3VycmVudC5vcGVuOnZvaWQgMCxuPWQ7cmV0dXJuIEQmJihuPTAhPT10P2E/P2U/P2Q6MCksbn0sZGVsYXkoKXtsZXQgZT1cIm9iamVjdFwiPT10eXBlb2YgVC5jdXJyZW50P1QuY3VycmVudC5jbG9zZTp2b2lkIDAsdD1mO3JldHVybiBudWxsPT1pJiZEJiYodD1lKSx7Y2xvc2U6dH19fSksUj1pRChQLHtlbmFibGVkOiF0fSksTT1pJChQLHtlbmFibGVkOiF0LHJlZmVyZW5jZVByZXNzOiEwfSkse2dldFJlZmVyZW5jZVByb3BzOlosZ2V0RmxvYXRpbmdQcm9wczpVfT1sdihbTixSLE0sZnVuY3Rpb24oZSx0PXt9KXtsZXR7b3BlbjpuLGRhdGFSZWY6cixlbGVtZW50czp7ZmxvYXRpbmc6byxkb21SZWZlcmVuY2U6YX0scmVmczppfT1lLHtlbmFibGVkOmw9ITAsYXhpczpzPVwiYm90aFwiLHg6Yz1udWxsLHk6dT1udWxsfT10LGQ9dy51c2VSZWYoITEpLGY9dy51c2VSZWYobnVsbCksW3AsaF09dy51c2VTdGF0ZSgpLFttLGddPXcudXNlU3RhdGUoW10pLHk9YWgoKGUsdCk9PntpZighZC5jdXJyZW50JiYoIXIuY3VycmVudC5vcGVuRXZlbnR8fHVDKHIuY3VycmVudC5vcGVuRXZlbnQpKSl7dmFyIG4sbztsZXQgbCxjLHU7aS5zZXRQb3NpdGlvblJlZmVyZW5jZSgobj1hLG89e3g6ZSx5OnQsYXhpczpzLGRhdGFSZWY6cixwb2ludGVyVHlwZTpwfSxsPW51bGwsYz1udWxsLHU9ITEse2NvbnRleHRFbGVtZW50Om58fHZvaWQgMCxnZXRCb3VuZGluZ0NsaWVudFJlY3QoKXtsZXQgZT1uPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKXx8e3dpZHRoOjAsaGVpZ2h0OjAseDowLHk6MH0sdD1cInhcIj09PW8uYXhpc3x8XCJib3RoXCI9PT1vLmF4aXMscj1cInlcIj09PW8uYXhpc3x8XCJib3RoXCI9PT1vLmF4aXMsYT1bXCJtb3VzZWVudGVyXCIsXCJtb3VzZW1vdmVcIl0uaW5jbHVkZXMoby5kYXRhUmVmLmN1cnJlbnQub3BlbkV2ZW50Py50eXBlfHxcIlwiKSYmXCJ0b3VjaFwiIT09by5wb2ludGVyVHlwZSxpPWUud2lkdGgscz1lLmhlaWdodCxkPWUueCxmPWUueTtyZXR1cm4gbnVsbD09bCYmby54JiZ0JiYobD1lLngtby54KSxudWxsPT1jJiZvLnkmJnImJihjPWUueS1vLnkpLGQtPWx8fDAsZi09Y3x8MCxpPTAscz0wLCF1fHxhPyhpPVwieVwiPT09by5heGlzP2Uud2lkdGg6MCxzPVwieFwiPT09by5heGlzP2UuaGVpZ2h0OjAsZD10JiZudWxsIT1vLng/by54OmQsZj1yJiZudWxsIT1vLnk/by55OmYpOnUmJiFhJiYocz1cInhcIj09PW8uYXhpcz9lLmhlaWdodDpzLGk9XCJ5XCI9PT1vLmF4aXM/ZS53aWR0aDppKSx1PSEwLHt3aWR0aDppLGhlaWdodDpzLHg6ZCx5OmYsdG9wOmYscmlnaHQ6ZCtpLGJvdHRvbTpmK3MsbGVmdDpkfX19KSl9fSksdj1haChlPT57bnVsbD09YyYmbnVsbD09dSYmKG4/Zi5jdXJyZW50fHxnKFtdKTp5KGUuY2xpZW50WCxlLmNsaWVudFkpKX0pLGI9aXMocCk/bzpuLEE9dy51c2VDYWxsYmFjaygoKT0+e2lmKCFifHwhbHx8bnVsbCE9Y3x8bnVsbCE9dSlyZXR1cm47bGV0IGU9YVQobyk7ZnVuY3Rpb24gdChuKXtpdihvLGliKG4pKT8oZS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdCksZi5jdXJyZW50PW51bGwpOnkobi5jbGllbnRYLG4uY2xpZW50WSl9aWYoIXIuY3VycmVudC5vcGVuRXZlbnR8fHVDKHIuY3VycmVudC5vcGVuRXZlbnQpKXtlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0KTtsZXQgbj0oKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQpLGYuY3VycmVudD1udWxsfTtyZXR1cm4gZi5jdXJyZW50PW4sbn1pLnNldFBvc2l0aW9uUmVmZXJlbmNlKGEpfSxbYixsLGMsdSxvLHIsaSxhLHldKTt3LnVzZUVmZmVjdCgoKT0+QSgpLFtBLG1dKSx3LnVzZUVmZmVjdCgoKT0+e2wmJiFvJiYoZC5jdXJyZW50PSExKX0sW2wsb10pLHcudXNlRWZmZWN0KCgpPT57IWwmJm4mJihkLmN1cnJlbnQ9ITApfSxbbCxuXSksYUMoKCk9PntsJiYobnVsbCE9Y3x8bnVsbCE9dSkmJihkLmN1cnJlbnQ9ITEseShjLHUpKX0sW2wsYyx1LHldKTtsZXQgeD13LnVzZU1lbW8oKCk9PntmdW5jdGlvbiBlKGUpe2goZS5wb2ludGVyVHlwZSl9cmV0dXJue29uUG9pbnRlckRvd246ZSxvblBvaW50ZXJFbnRlcjplLG9uTW91c2VNb3ZlOnYsb25Nb3VzZUVudGVyOnZ9fSxbdl0pO3JldHVybiB3LnVzZU1lbW8oKCk9Pmw/e3JlZmVyZW5jZTp4fTp7fSxbbCx4XSl9KFAse2VuYWJsZWQ6IXQmJlwibm9uZVwiIT09cyxheGlzOlwibm9uZVwiPT09cz92b2lkIDA6c30pXSksRj13LnVzZU1lbW8oKCk9Pih7b3BlbjpfLHNldE9wZW46RSxtb3VudGVkOmosc2V0TW91bnRlZDpTLHNldFRyaWdnZXJFbGVtZW50OmgscG9zaXRpb25lckVsZW1lbnQ6bSxzZXRQb3NpdGlvbmVyRWxlbWVudDpnLHBvcHVwUmVmOmIsdHJpZ2dlclByb3BzOlooKSxwb3B1cFByb3BzOlUoKSxmbG9hdGluZ1Jvb3RDb250ZXh0OlAsaW5zdGFudFR5cGU6TCx0cmFuc2l0aW9uU3RhdHVzOk8sb25PcGVuQ2hhbmdlQ29tcGxldGU6dX0pLFtfLEUsaixTLGgsbSxnLGIsWixVLFAsTCxPLHVdKSxxPXcudXNlTWVtbygoKT0+KHsuLi5GLGRlbGF5OmQsY2xvc2VEZWxheTpmLHRyYWNrQ3Vyc29yQXhpczpzLGhvdmVyYWJsZTpsfSksW0YsZCxmLHMsbF0pO3JldHVybigwLEEuanN4KSh1bC5Qcm92aWRlcix7dmFsdWU6cSxjaGlsZHJlbjplLmNoaWxkcmVufSl9dmFyIHVrPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY3NzXCIpLHVFPXt9O3VFLnN0eWxlVGFnVHJhbnNmb3JtPW0oKSx1RS5zZXRBdHRyaWJ1dGVzPWQoKSx1RS5pbnNlcnQ9YygpLHVFLmRvbUFQST1sKCksdUUuaW5zZXJ0U3R5bGVFbGVtZW50PXAoKSxhKCkodWsuWix1RSksdWsuWiYmdWsuWi5sb2NhbHMmJnVrLloubG9jYWxzO3ZhciB1aj0oMCx3LmZvcndhcmRSZWYpKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGg9KDAseC5jKSgzNSksbT1lLmNsYXNzTmFtZSxnPWUuY2hpbGRyZW4seT1lLnRpdGxlLHY9ZS5kaXJlY3Rpb24sYj1lLmFycm93U2l6ZSx3PWUub2Zmc2V0LEM9dm9pZCAwPT09dj9cInRvcFwiOnYsXz12b2lkIDA9PT1iPzY6YixrPWRsKCkuc2hhZG93Um9vdDtpZigheSlyZXR1cm4gZztoWzBdIT09Zz8obj1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybigwLEEuanN4KShcInNwYW5cIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGUpLG49bj17Y2hpbGRyZW46Z30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSl9LGhbMF09ZyxoWzFdPW4pOm49aFsxXSxoWzJdIT09dHx8aFszXSE9PW4/KHI9KDAsQS5qc3gpKHVjLHtyZWY6dCxyZW5kZXI6bn0pLGhbMl09dCxoWzNdPW4saFs0XT1yKTpyPWhbNF07dmFyIEU9KHZvaWQgMD09PXc/ODp3KStfLGo9XCJcIi5jb25jYXQoXyxcInB4XCIpLFM9XCJcIi5jb25jYXQoXyxcInB4XCIpO2hbNV0hPT1qfHxoWzZdIT09Uz8obz17XCItLWFuY2hvci13aWR0aFwiOmosXCItLWFuY2hvci1oZWlnaHRcIjpTfSxoWzVdPWosaFs2XT1TLGhbN109byk6bz1oWzddO3ZhciBPPW87aFs4XSE9PW0/KGE9ZUooXCJ0b29sdGlwXCIsbSksaFs4XT1tLGhbOV09YSk6YT1oWzldO3ZhciBCPVwiXCIuY29uY2F0KF8sXCJweFwiKTtoWzEwXSE9PUI/KGk9e1wiLS1hcnJvdy1zaXplXCI6Qn0saFsxMF09QixoWzExXT1pKTppPWhbMTFdO3ZhciBQPWksST1cInRvb2x0aXAtYXJyb3ctLVwiLmNvbmNhdChDKTtoWzEyXSE9PUk/KGw9ZUooXCJ0b29sdGlwLWFycm93XCIsSSksaFsxMl09SSxoWzEzXT1sKTpsPWhbMTNdO3ZhciBUPVwiXCIuY29uY2F0KF8sXCJweFwiKTtoWzE0XSE9PVQ/KHM9e1wiLS1hcnJvdy1zaXplXCI6VH0saFsxNF09VCxoWzE1XT1zKTpzPWhbMTVdO3ZhciB6PXM7cmV0dXJuIGhbMTZdIT09bHx8aFsxN10hPT16PyhjPSgwLEEuanN4KSh1Zix7Y2xhc3NOYW1lOmwsc3R5bGU6en0pLGhbMTZdPWwsaFsxN109eixoWzE4XT1jKTpjPWhbMThdLGhbMTldIT09YXx8aFsyMF0hPT1QfHxoWzIxXSE9PWN8fGhbMjJdIT09eT8odT0oMCxBLmpzeHMpKHVoLHtjbGFzc05hbWU6YSxzdHlsZTpQLGNoaWxkcmVuOlt5LGNdfSksaFsxOV09YSxoWzIwXT1QLGhbMjFdPWMsaFsyMl09eSxoWzIzXT11KTp1PWhbMjNdLGhbMjRdIT09Q3x8aFsyNV0hPT1PfHxoWzI2XSE9PXV8fGhbMjddIT09RT8oZD0oMCxBLmpzeCkodWcse3NpZGU6QyxzaWRlT2Zmc2V0OkUsY2xhc3NOYW1lOlwidG9vbHRpcC1wb3NpdGlvbmVyXCIsc3R5bGU6TyxjaGlsZHJlbjp1fSksaFsyNF09QyxoWzI1XT1PLGhbMjZdPXUsaFsyN109RSxoWzI4XT1kKTpkPWhbMjhdLGhbMjldIT09a3x8aFszMF0hPT1kPyhmPSgwLEEuanN4KSh1dix7Y29udGFpbmVyOmssY2hpbGRyZW46ZH0pLGhbMjldPWssaFszMF09ZCxoWzMxXT1mKTpmPWhbMzFdLGhbMzJdIT09Znx8aFszM10hPT1yPyhwPSgwLEEuanN4KSh1dyx7Y2hpbGRyZW46KDAsQS5qc3hzKSh1Xyx7ZGVsYXk6NDAwLGNoaWxkcmVuOltyLGZdfSl9KSxoWzMyXT1mLGhbMzNdPXIsaFszNF09cCk6cD1oWzM0XSxwfSk7ZnVuY3Rpb24gdVMoZSl7dmFyIHQsbixyPSgwLHguYykoMyksbz1lLnBvc3NpYmxlRXh0ZW5zaW9uLGE9ZS5taXNzaW5nR2xvYmFsRXJyb3I/XCJObyBnbG9iYWwtZXJyb3IuXCIuY29uY2F0KG8sXCIgZm91bmQ6IEFkZCBvbmUgdG8gZW5zdXJlIHVzZXJzIHNlZSBhIGhlbHBmdWwgbWVzc2FnZSB3aGVuIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzLlwiKTpudWxsO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3gpKHVSLHt9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09YT8obj0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnNcIixjaGlsZHJlbjooMCxBLmpzeCkodWose2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnMtdG9vbHRpcFwiLHRpdGxlOmEsY2hpbGRyZW46dH0pfSksclsxXT1hLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gdU8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIHVCKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX12YXIgdVA9ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4hIShudWxsPT0odD1lLnZhbHVlKT92b2lkIDA6dC50eXBlKSYmISEobnVsbD09KG49ZS52YWx1ZSk/dm9pZCAwOm4ucGFnZVBhdGgpfTtmdW5jdGlvbiB1SShlKXt2YXIgdCxuLHI9KDAseC5jKSgzKSxvPWUucGFnZTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLEEuanN4KSh1TSx7fSksclswXT10KTp0PXJbMF0sclsxXSE9PW8/KG49KDAsQS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyXCIsY2hpbGRyZW46W3QsKDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyLXBhdGhcIixjaGlsZHJlbjpvfSldfSksclsxXT1vLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gdVQoZSl7dmFyIHQsbixyLG89KDAseC5jKSg5KSxhPWUuYWN0aXZlQm91bmRhcmllc0NvdW50LGk9ZS5vbkdsb2JhbFJlc2V0LGw9YT4wLHM9XCJzZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24gXCIuY29uY2F0KGw/XCJcIjpcInNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbi0tZGlzYWJsZWRcIiksYz1sP2k6dm9pZCAwLHU9IWw7cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLXRleHRcIixjaGlsZHJlbjpcIkNsZWFyIFNlZ21lbnQgT3ZlcnJpZGVzXCJ9KSxvWzBdPXQpOnQ9b1swXSxvWzFdIT09YXx8b1syXSE9PWw/KG49bCYmKDAsQS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1iYWRnZVwiLGNoaWxkcmVuOmF9KSxvWzFdPWEsb1syXT1sLG9bM109bik6bj1vWzNdLG9bNF0hPT1zfHxvWzVdIT09Y3x8b1s2XSE9PXV8fG9bN10hPT1uPyhyPSgwLEEuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZvb3RlclwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJidXR0b25cIix7Y2xhc3NOYW1lOnMsb25DbGljazpjLGRpc2FibGVkOnUsdHlwZTpcImJ1dHRvblwiLGNoaWxkcmVuOlt0LG5dfSl9KSxvWzRdPXMsb1s1XT1jLG9bNl09dSxvWzddPW4sb1s4XT1yKTpyPW9bOF0scn1mdW5jdGlvbiB1eihlKXt2YXIgdCxuLHIsbyxhLGk9KDAseC5jKSgxNSksbD1lLnR5cGUscz1lLmlzQnVpbHRpbixjPWUuaXNPdmVycmlkZGVuLHU9ZS5maWxlUGF0aCxkPWUuZmlsZU5hbWUsZj1cInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tXCIuY29uY2F0KGwpLHA9cyYmXCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLWJ1aWx0aW5cIixoPWMmJlwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1vdmVycmlkZGVuXCI7cmV0dXJuIGlbMF0hPT1mfHxpWzFdIT09cHx8aVsyXSE9PWg/KHQ9ZUooXCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWxcIixmLHAsaCksaVswXT1mLGlbMV09cCxpWzJdPWgsaVszXT10KTp0PWlbM10saVs0XSE9PXU/KG49ZnVuY3Rpb24oKXt2YXIgZTtlPW5ldyBVUkxTZWFyY2hQYXJhbXMoe2ZpbGU6e2ZpbGVQYXRoOnV9LmZpbGVQYXRoLGlzQXBwUmVsYXRpdmVQYXRoOlwiMVwifSksZmV0Y2goXCJcIi5jb25jYXQocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSHx8XCJcIixcIi9fX25leHRqc19sYXVuY2gtZWRpdG9yP1wiKS5jb25jYXQoZS50b1N0cmluZygpKSl9LGlbNF09dSxpWzVdPW4pOm49aVs1XSxpWzZdIT09ZD8ocj0oMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10ZXh0XCIsY2hpbGRyZW46ZH0pLGlbNl09ZCxpWzddPXIpOnI9aVs3XSxpWzhdIT09cz8obz1zPygwLEEuanN4KSh1Uix7fSk6KDAsQS5qc3gpKHVaLHtjbGFzc05hbWU6XCJjb2RlLWljb25cIn0pLGlbOF09cyxpWzldPW8pOm89aVs5XSxpWzEwXSE9PXR8fGlbMTFdIT09bnx8aVsxMl0hPT1yfHxpWzEzXSE9PW8/KGE9KDAsQS5qc3hzKShcInNwYW5cIix7Y2xhc3NOYW1lOnQsb25DbGljazpuLGNoaWxkcmVuOltyLG9dfSksaVsxMF09dCxpWzExXT1uLGlbMTJdPXIsaVsxM109byxpWzE0XT1hKTphPWlbMTRdLGF9ZnVuY3Rpb24gdUQoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHU9KDAseC5jKSgxNyksZD1lLnBhZ2UsZj0oMCx3LnVzZVN5bmNFeHRlcm5hbFN0b3JlKShvOCxvNyxhZSk7dVswXSE9PWY/KG49ZnVuY3Rpb24gZSh0KXt2YXIgbixyPTA7cmV0dXJuKG51bGw9PShuPXQudmFsdWUpP3ZvaWQgMDpuLnNldEJvdW5kYXJ5VHlwZSkmJm51bGwhPT10LnZhbHVlLmJvdW5kYXJ5VHlwZSYmIWM0KHQudmFsdWUudHlwZSkmJnIrKyxPYmplY3QudmFsdWVzKHQuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24odCl7dCYmKHIrPWUodCkpfSkscn0oZiksdVswXT1mLHVbMV09bik6bj11WzFdLHQ9bix1WzJdIT09Zj8ocj1mdW5jdGlvbigpeyFmdW5jdGlvbiBlKHQpe3ZhciBuOyhudWxsPT0obj10LnZhbHVlKT92b2lkIDA6bi5zZXRCb3VuZGFyeVR5cGUpJiZ0LnZhbHVlLnNldEJvdW5kYXJ5VHlwZShudWxsKSxPYmplY3QudmFsdWVzKHQuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24odCl7dCYmZSh0KX0pfShmKX0sdVsyXT1mLHVbM109cik6cj11WzNdO3ZhciBwPXI7cmV0dXJuIHVbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz17ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsaGVpZ2h0OlwiMTAwJVwifSx1WzRdPW8pOm89dVs0XSx1WzVdIT09ZD8oYT0oMCxBLmpzeCkodUkse3BhZ2U6ZH0pLHVbNV09ZCx1WzZdPWEpOmE9dVs2XSx1WzddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9e2ZsZXg6XCIxIDEgYXV0b1wiLG92ZXJmbG93OlwiYXV0b1wifSx1WzddPWkpOmk9dVs3XSx1WzhdIT09Zj8obD0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1jb250ZW50XCIsXCJkYXRhLW5leHRqcy1kZXZ0b29sLXNlZ21lbnQtZXhwbG9yZXJcIjohMCxzdHlsZTppLGNoaWxkcmVuOigwLEEuanN4KSh1Tix7bm9kZTpmLGxldmVsOjAsc2VnbWVudDpcIlwifSl9KSx1WzhdPWYsdVs5XT1sKTpsPXVbOV0sdVsxMF0hPT10fHx1WzExXSE9PXA/KHM9KDAsQS5qc3gpKHVULHthY3RpdmVCb3VuZGFyaWVzQ291bnQ6dCxvbkdsb2JhbFJlc2V0OnB9KSx1WzEwXT10LHVbMTFdPXAsdVsxMl09cyk6cz11WzEyXSx1WzEzXSE9PWF8fHVbMTRdIT09bHx8dVsxNV0hPT1zPyhjPSgwLEEuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kZXZ0b29scy1wYW5lbC1zZWdtZW50cy1leHBsb3JlclwiOiEwLHN0eWxlOm8sY2hpbGRyZW46W2EsbCxzXX0pLHVbMTNdPWEsdVsxNF09bCx1WzE1XT1zLHVbMTZdPWMpOmM9dVsxNl0sY312YXIgdUw9XCJnbG9iYWwtZXJyb3JcIjtmdW5jdGlvbiB1TihlKXt2YXIgdD1lLnNlZ21lbnQsbj1lLm5vZGUscj1lLmxldmVsLG89KDAsdy51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhuLmNoaWxkcmVuKX0sW24uY2hpbGRyZW5dKSxhPSgwLHcudXNlTWVtbykoZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uY2hpbGRyZW5bdF07aWYociYmci52YWx1ZSl7dmFyIG89YzUoci52YWx1ZS50eXBlKSxhPW89PT11TDsoYSYmIXIudmFsdWUucGFnZVBhdGguc3RhcnRzV2l0aChjMCl8fCFhJiZjNChyLnZhbHVlLnR5cGUpKSYmZS5wdXNoKG8pfX0pLDA9PT1yJiYhZS5pbmNsdWRlcyh1TCl9LFtuLmNoaWxkcmVuLG8scl0pLGk9by5zb3J0KGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5pbmNsdWRlcyhcIi5cIiksbz10LmluY2x1ZGVzKFwiLlwiKTtpZihyJiYhbylyZXR1cm4gLTE7aWYoIXImJm8pcmV0dXJuIDE7aWYociYmbyl7dmFyIGEsaSxsLHMsYyx1LGQsZixwPW51bGw9PShpPW4uY2hpbGRyZW5bZV0pfHxudWxsPT0oYT1pLnZhbHVlKT92b2lkIDA6YS50eXBlLGg9bnVsbD09KHM9bi5jaGlsZHJlblt0XSl8fG51bGw9PShsPXMudmFsdWUpP3ZvaWQgMDpsLnR5cGUsbT1mdW5jdGlvbihlKXtyZXR1cm4gZT9cImxheW91dFwiPT09ZT8xOlwidGVtcGxhdGVcIj09PWU/MjpcInBhZ2VcIj09PWU/MzpjNChlKT80OjU6NX0sZz1tKHApLHk9bShoKTtpZihnIT09eSlyZXR1cm4gZy15O3ZhciB2PShudWxsPT0odT1uLmNoaWxkcmVuW2VdKXx8bnVsbD09KGM9dS52YWx1ZSk/dm9pZCAwOmMucGFnZVBhdGgpfHxcIlwiLGI9KG51bGw9PShmPW4uY2hpbGRyZW5bdF0pfHxudWxsPT0oZD1mLnZhbHVlKT92b2lkIDA6ZC5wYWdlUGF0aCl8fFwiXCI7cmV0dXJuIHYubG9jYWxlQ29tcGFyZShiKX1yZXR1cm4gZS5sb2NhbGVDb21wYXJlKHQpfSksbD0wIT09cnx8dD90OlwiYXBwXCIscz1bXSxjPVtdLHU9ITAsZD0hMSxmPXZvaWQgMDt0cnl7Zm9yKHZhciBwLGg9aVtTeW1ib2wuaXRlcmF0b3JdKCk7ISh1PShwPWgubmV4dCgpKS5kb25lKTt1PSEwKXt2YXIgbT1wLnZhbHVlLGc9bi5jaGlsZHJlblttXTtpZihnKXtpZih1UChnKSl7Yy5wdXNoKG0pO2NvbnRpbnVlfXMucHVzaChtKX19fWNhdGNoKGUpe2Q9ITAsZj1lfWZpbmFsbHl7dHJ5e3V8fG51bGw9PWgucmV0dXJufHxoLnJldHVybigpfWZpbmFsbHl7aWYoZCl0aHJvdyBmfX1mb3IodmFyIHk9YzEoY1swXXx8XCJcIikuc3BsaXQoXCIuXCIpLnBvcCgpfHxcImpzXCIsdj1udWxsLGI9aS5sZW5ndGgtMTtiPj0wO2ItLSl7dmFyIHg9bi5jaGlsZHJlbltpW2JdXTtpZih4JiZ4LnZhbHVlKXt2YXIgQz1jNCh4LnZhbHVlLnR5cGUpO2lmKCF2JiYhQyl7dj14O2JyZWFrfX19dmFyIF89bnVsbCxrPSEwLEU9ITEsaj12b2lkIDA7dHJ5e2Zvcih2YXIgUyxPPWlbU3ltYm9sLml0ZXJhdG9yXSgpOyEoaz0oUz1PLm5leHQoKSkuZG9uZSk7az0hMCl7dmFyIEI9Uy52YWx1ZSxQPW4uY2hpbGRyZW5bQl07aWYoUCYmUC52YWx1ZSYmYzQoUC52YWx1ZS50eXBlKSl7Xz1QO2JyZWFrfX19Y2F0Y2goZSl7RT0hMCxqPWV9ZmluYWxseXt0cnl7a3x8bnVsbD09Ty5yZXR1cm58fE8ucmV0dXJuKCl9ZmluYWxseXtpZihFKXRocm93IGp9fXY9dnx8Xzt2YXIgST1jLmxlbmd0aD4wLFQ9e1wibm90LWZvdW5kXCI6bnVsbCxsb2FkaW5nOm51bGwsZXJyb3I6bnVsbCxcImdsb2JhbC1lcnJvclwiOm51bGx9O3JldHVybiBjLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5jaGlsZHJlbltlXTtpZih0JiZ0LnZhbHVlJiZjNCh0LnZhbHVlLnR5cGUpKXt2YXIgcj1jNSh0LnZhbHVlLnR5cGUpO3IgaW4gVCYmKFRbcl09dC52YWx1ZS5wYWdlUGF0aHx8bnVsbCl9fSksKDAsQS5qc3hzKShBLkZyYWdtZW50LHtjaGlsZHJlbjpbSSYmKDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItaXRlbVwiLFwiZGF0YS1uZXh0anMtZGV2dG9vbC1zZWdtZW50LWV4cGxvcmVyLXNlZ21lbnRcIjp0K1wiLVwiK3IsY2hpbGRyZW46KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3dcIixzdHlsZTp1Tyh7fSx7cGFkZGluZ0xlZnQ6XCJcIi5jb25jYXQoKHIrMSkqOCxcInB4XCIpfSksY2hpbGRyZW46KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3ctbWFpblwiLGNoaWxkcmVuOigwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1maWxlbmFtZVwiLGNoaWxkcmVuOltsJiYoMCxBLmpzeHMpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1wYXRoXCIsY2hpbGRyZW46W2wsKDAsQS5qc3gpKFwic21hbGxcIix7Y2hpbGRyZW46XCIvXCJ9KV19KSxhJiYoMCxBLmpzeCkodVMse3Bvc3NpYmxlRXh0ZW5zaW9uOnksbWlzc2luZ0dsb2JhbEVycm9yOmF9KSxjLmxlbmd0aD4wJiYoMCxBLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZmlsZXNcIixjaGlsZHJlbjpjLm1hcChmdW5jdGlvbihlKXt2YXIgdD1uLmNoaWxkcmVuW2VdO2lmKCF0fHwhdC52YWx1ZXx8YzQodC52YWx1ZS50eXBlKSlyZXR1cm4gbnVsbDt2YXIgcj10LnZhbHVlLnBhZ2VQYXRoLG89ci5zcGxpdChcIi9cIikucG9wKCl8fFwiXCIsYT1yLnN0YXJ0c1dpdGgoYzApLGk9YzEobyksbD1hP1wiVGhlIGRlZmF1bHQgTmV4dC5qcyBcIi5jb25jYXQodC52YWx1ZS50eXBlLFwiIGlzIGJlaW5nIHNob3duLiBZb3UgY2FuIGN1c3RvbWl6ZSB0aGlzIHBhZ2UgYnkgYWRkaW5nIHlvdXIgb3duIFwiKS5jb25jYXQoaSxcIiBmaWxlIHRvIHRoZSBhcHAvIGRpcmVjdG9yeS5cIik6bnVsbCxzPW51bGwhPT10LnZhbHVlLmJvdW5kYXJ5VHlwZTtyZXR1cm4oMCxBLmpzeCkodWose2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10b29sdGlwLS1cIisoYT9cImxnXCI6XCJzbVwiKSxkaXJlY3Rpb246YT9cInJpZ2h0XCI6XCJ0b3BcIix0aXRsZTpsLG9mZnNldDoxMixjaGlsZHJlbjooMCxBLmpzeCkodXose3R5cGU6dC52YWx1ZS50eXBlLGlzQnVpbHRpbjphLGlzT3ZlcnJpZGRlbjpzLGZpbGVQYXRoOnIsZmlsZU5hbWU6aX0pfSxlKX0pfSksdiYmdi52YWx1ZSYmKDAsQS5qc3gpKHVlLHtub2RlU3RhdGU6di52YWx1ZSxib3VuZGFyaWVzOlR9KV19KX0pfSl9KSxzLm1hcChmdW5jdGlvbihlKXt2YXIgbz1uLmNoaWxkcmVuW2VdO2lmKCFvKXJldHVybiBudWxsO3ZhciBhPUk/ZTp0K1wiIC8gXCIrZTtyZXR1cm4oMCxBLmpzeCkodU4se3NlZ21lbnQ6YSxub2RlOm8sbGV2ZWw6ST9yKzE6cn0sZSl9KV19KX1mdW5jdGlvbiB1UihlKXt2YXIgdCxuLHIsbz0oMCx4LmMpKDQpO3JldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTE0IDhDMTQgMTEuMzEzNyAxMS4zMTM3IDE0IDggMTRDNC42ODYyOSAxNCAyIDExLjMxMzcgMiA4QzIgNC42ODYyOSA0LjY4NjI5IDIgOCAyQzExLjMxMzcgMiAxNCA0LjY4NjI5IDE0IDhaXCIsZmlsbDpcInZhcigtLWNvbG9yLWdyYXktNDAwKVwifSksbj0oMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNNy43NSA3QzguMzAyMjggNy4wMDAwMSA4Ljc1IDcuNDQ3NzIgOC43NSA4VjExLjI1SDcuMjVWOC41SDYuMjVWN0g3Ljc1Wk04IDRDOC41NTIyOCA0IDkgNC40NDc3MiA5IDVDOSA1LjU1MjI4IDguNTUyMjggNiA4IDZDNy40NDc3MiA2IDcgNS41NTIyOCA3IDVDNyA0LjQ0NzcyIDcuNDQ3NzIgNCA4IDRaXCIsZmlsbDpcInZhcigtLWNvbG9yLWdyYXktOTAwKVwifSksb1swXT10LG9bMV09bik6KHQ9b1swXSxuPW9bMV0pLG9bMl0hPT1lPyhyPSgwLEEuanN4cykoXCJzdmdcIix1Qih1Tyh7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxlKSx7Y2hpbGRyZW46W3Qsbl19KSksb1syXT1lLG9bM109cik6cj1vWzNdLHJ9ZnVuY3Rpb24gdU0oKXt2YXIgZSx0PSgwLHguYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxBLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJ2YXIoLS1jb2xvci1ncmF5LTYwMClcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsQS5qc3gpKFwicGF0aFwiLHtkOlwiTTQuNSAxMS4yNUM0LjUgMTEuMzg4MSA0LjYxMTkzIDExLjUgNC43NSAxMS41SDE0LjQzOTVMMTEuOTM5NSA5TDEzIDcuOTM5NDVMMTYuNzgwMyAxMS43MTk3TDE2LjgzMiAxMS43NzY0QzE3LjA3MjMgMTIuMDcwOSAxNy4wNTQ5IDEyLjUwNTcgMTYuNzgwMyAxMi43ODAzTDEzIDE2LjU2MDVMMTEuOTM5NSAxNS41TDE0LjQzOTUgMTNINC43NUMzLjc4MzUgMTMgMyAxMi4yMTY1IDMgMTEuMjVWNC4yNUg0LjVWMTEuMjVaXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gdVooZSl7dmFyIHQsbixyPSgwLHguYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNy4yMjc2MyAxNC4xODE5TDEwLjIyNzYgMi4xODE5M0wxMC40MDk1IDEuNDU0MzJMOC45NTQzMiAxLjA5MDUyTDguNzcyNDIgMS44MTgxMkw1Ljc3MjQyIDEzLjgxODFMNS41OTA1MSAxNC41NDU3TDcuMDQ1NzMgMTQuOTA5NUw3LjIyNzYzIDE0LjE4MTlaTTMuNzUwMDIgMTIuMDYwN0wzLjIxOTY5IDExLjUzMDRMMC4zOTY0NyA4LjcwNzEzQzAuMDA1OTQ1NTkgOC4zMTY2MSAwLjAwNTk0NTU5IDcuNjgzNDQgMC4zOTY0NyA3LjI5MjkyTDMuMjE5NjkgNC40Njk2OUwzLjc1MDAyIDMuOTM5MzZMNC44MTA2OCA1LjAwMDAyTDQuMjgwMzUgNS41MzAzNUwxLjgxMDY4IDguMDAwMDNMNC4yODAzNSAxMC40Njk3TDQuODEwNjggMTFMMy43NTAwMiAxMi4wNjA3Wk0xMi4yNSAxMi4wNjA3TDEyLjc4MDQgMTEuNTMwNEwxNS42MDM2IDguNzA3MTNDMTUuOTk0MSA4LjMxNjYxIDE1Ljk5NDEgNy42ODM0NCAxNS42MDM2IDcuMjkyOTJMMTIuNzgwNCA0LjQ2OTY5TDEyLjI1IDMuOTM5MzZMMTEuMTg5NCA1LjAwMDAyTDExLjcxOTcgNS41MzAzNUwxNC4xODk0IDguMDAwMDNMMTEuNzE5NyAxMC40Njk3TDExLjE4OTQgMTFMMTIuMjUgMTIuMDYwN1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxBLmpzeCkoXCJzdmdcIix1Qih1Tyh7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjEyXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHVVKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgICAgICAgLmRldi10b29scy1pbmZvLWNsb3NlLWJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICB9XFxuICAgICAgXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHVVPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gdUYoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmPSgwLHguYykoMTgpLHA9ZS50aXRsZSxoPWUuY2hpbGRyZW4sbT1lLnJlZixnPXI1KCkuc2V0UGFuZWwseT0oMCx3LnVzZVJlZikobnVsbCk7cmV0dXJuIGZbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD1mdW5jdGlvbigpe3ZhciBlO251bGw9PShlPXkuY3VycmVudCl8fGUuZm9jdXMoKX0sbj1bXSxmWzBdPXQsZlsxXT1uKToodD1mWzBdLG49ZlsxXSksKDAsdy51c2VMYXlvdXRFZmZlY3QpKHQsbiksZlsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPXt3aWR0aDpcIjEwMCVcIixkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcInNwYWNlLWJldHdlZW5cIixwYWRkaW5nOlwiOHB4IDIwcHhcIix1c2VyU2VsZWN0Olwibm9uZVwiLFdlYmtpdFVzZXJTZWxlY3Q6XCJub25lXCIsYm9yZGVyQm90dG9tOlwiMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKVwifSxmWzJdPXIpOnI9ZlsyXSxmWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89e21hcmdpbjowLGZvbnRTaXplOlwiMTRweFwiLGNvbG9yOlwidmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5KVwiLGZvbnRXZWlnaHQ6XCJub3JtYWxcIn0sZlszXT1vKTpvPWZbM10sZls0XSE9PXA/KGE9KDAsQS5qc3gpKFwiaDNcIix7c3R5bGU6byxjaGlsZHJlbjpwfSksZls0XT1wLGZbNV09YSk6YT1mWzVdLGZbNl0hPT1nPyhpPWZ1bmN0aW9uKCl7ZyhcInBhbmVsLXNlbGVjdG9yXCIpfSxmWzZdPWcsZls3XT1pKTppPWZbN10sZls4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhsPXtiYWNrZ3JvdW5kOlwibm9uZVwiLGJvcmRlcjpcIm5vbmVcIixjdXJzb3I6XCJwb2ludGVyXCIscGFkZGluZzpcIjRweFwiLGRpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsYm9yZGVyUmFkaXVzOlwiNHB4XCIsY29sb3I6XCJ2YXIoLS1jb2xvci1ncmF5LTkwMClcIn0scz0oMCxBLmpzeCkodXEse30pLGZbOF09bCxmWzldPXMpOihsPWZbOF0scz1mWzldKSxmWzEwXSE9PWk/KGM9KDAsQS5qc3gpKFwiYnV0dG9uXCIse3JlZjp5LGlkOlwiX25leHQtZGV2dG9vbHMtcGFuZWwtY2xvc2VcIixjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jbG9zZS1idXR0b25cIixvbkNsaWNrOmksXCJhcmlhLWxhYmVsXCI6XCJDbG9zZSBkZXZ0b29scyBwYW5lbFwiLHN0eWxlOmwsY2hpbGRyZW46c30pLGZbMTBdPWksZlsxMV09Yyk6Yz1mWzExXSxmWzEyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLEEuanN4KShcInN0eWxlXCIse2NoaWxkcmVuOmV1KHVVKCkpfSksZlsxMl09dSk6dT1mWzEyXSxmWzEzXSE9PWh8fGZbMTRdIT09bXx8ZlsxNV0hPT1hfHxmWzE2XSE9PWM/KGQ9KDAsQS5qc3hzKShcImRpdlwiLHtzdHlsZTpyLHJlZjptLGNoaWxkcmVuOlthLGgsYyx1XX0pLGZbMTNdPWgsZlsxNF09bSxmWzE1XT1hLGZbMTZdPWMsZlsxN109ZCk6ZD1mWzE3XSxkfWZ1bmN0aW9uIHVxKGUpe3ZhciB0LG4scixvPSgwLHguYykoNCksYT1lLnNpemUsaT12b2lkIDA9PT1hPzIyOmE7cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxBLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTggNiA2IDE4XCJ9KSxuPSgwLEEuanN4KShcInBhdGhcIix7ZDpcIm02IDYgMTIgMTJcIn0pLG9bMF09dCxvWzFdPW4pOih0PW9bMF0sbj1vWzFdKSxvWzJdIT09aT8ocj0oMCxBLmpzeHMpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDppLGhlaWdodDppLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixjaGlsZHJlbjpbdCxuXX0pLG9bMl09aSxvWzNdPXIpOnI9b1szXSxyfWZ1bmN0aW9uIHVIKCl7dmFyIGUsdD0oMCx4LmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcIm5vbmVcIixjaGlsZHJlbjooMCxBLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixkOlwibTkuNyAzLjczNi4wNDUtLjIzNmguNTFsLjA0NC4yMzZhMi4wMjQgMi4wMjQgMCAwIDAgMS4zMzQgMS41MzZjLjE5LjA2Ni4zNzUuMTQzLjU1NC4yMy42MTguMzAxIDEuMzk4LjI5IDIuMDMtLjE0M2wuMTk5LS4xMzYuMzYuMzYxLS4xMzUuMTk5YTIuMDI0IDIuMDI0IDAgMCAwLS4xNDMgMi4wM2MuMDg3LjE3OS4xNjQuMzY0LjIzLjU1NC4yMjQuNjUuNzgzIDEuMTkyIDEuNTM2IDEuMzM0bC4yMzYuMDQ0di41MWwtLjIzNi4wNDRhMi4wMjQgMi4wMjQgMCAwIDAtMS41MzYgMS4zMzQgNC45NSA0Ljk1IDAgMCAxLS4yMy41NTQgMi4wMjQgMi4wMjQgMCAwIDAgLjE0MyAyLjAzbC4xMzYuMTk5LS4zNjEuMzYtLjE5OS0uMTM1YTIuMDI0IDIuMDI0IDAgMCAwLTIuMDMtLjE0M2MtLjE3OS4wODctLjM2NC4xNjQtLjU1NC4yM2EyLjAyNCAyLjAyNCAwIDAgMC0xLjMzNCAxLjUzNmwtLjA0NC4yMzZoLS41MWwtLjA0NC0uMjM2YTIuMDI0IDIuMDI0IDAgMCAwLTEuMzM0LTEuNTM2IDQuOTUyIDQuOTUyIDAgMCAxLS41NTQtLjIzIDIuMDI0IDIuMDI0IDAgMCAwLTIuMDMuMTQzbC0uMTk5LjEzNi0uMzYtLjM2MS4xMzUtLjE5OWEyLjAyNCAyLjAyNCAwIDAgMCAuMTQzLTIuMDMgNC45NTggNC45NTggMCAwIDEtLjIzLS41NTQgMi4wMjQgMi4wMjQgMCAwIDAtMS41MzYtMS4zMzRsLS4yMzYtLjA0NHYtLjUxbC4yMzYtLjA0NGEyLjAyNCAyLjAyNCAwIDAgMCAxLjUzNi0xLjMzNCA0Ljk2IDQuOTYgMCAwIDEgLjIzLS41NTQgMi4wMjQgMi4wMjQgMCAwIDAtLjE0My0yLjAzbC0uMTM2LS4xOTkuMzYxLS4zNi4xOTkuMTM1YTIuMDI0IDIuMDI0IDAgMCAwIDIuMDMuMTQzYy4xNzktLjA4Ny4zNjQtLjE2NC41NTQtLjIzYTIuMDI0IDIuMDI0IDAgMCAwIDEuMzM0LTEuNTM2Wk04LjUgMmgzbC4yNzQgMS40NmMuMDM0LjE4NS4xNy4zMzMuMzQ4LjM5NC4yNDguMDg2LjQ5LjE4Ni43MjIuMy4xNy4wODIuMzcuMDc0LjUyNi0uMDMzbDEuMjI2LS44MzkgMi4xMjIgMi4xMjItLjg0IDEuMjI2YS41MjQuNTI0IDAgMCAwLS4wMzIuNTI2Yy4xMTQuMjMzLjIxNC40NzQuMy43MjIuMDYxLjE3Ny4yMS4zMTQuMzk0LjM0OEwxOCA4LjV2M2wtMS40Ni4yNzRhLjUyNC41MjQgMCAwIDAtLjM5NC4zNDggNi40NyA2LjQ3IDAgMCAxLS4zLjcyMi41MjQuNTI0IDAgMCAwIC4wMzMuNTI2bC44MzkgMS4yMjYtMi4xMjIgMi4xMjItMS4yMjYtLjg0YS41MjQuNTI0IDAgMCAwLS41MjYtLjAzMiA2LjQ3NyA2LjQ3NyAwIDAgMS0uNzIyLjMuNTI0LjUyNCAwIDAgMC0uMzQ4LjM5NEwxMS41IDE4aC0zbC0uMjc0LTEuNDZhLjUyNC41MjQgMCAwIDAtLjM0OC0uMzk0IDYuNDc3IDYuNDc3IDAgMCAxLS43MjItLjMuNTI0LjUyNCAwIDAgMC0uNTI2LjAzM2wtMS4yMjYuODM5LTIuMTIyLTIuMTIyLjg0LTEuMjI2YS41MjQuNTI0IDAgMCAwIC4wMzItLjUyNiA2LjQ1MyA2LjQ1MyAwIDAgMS0uMy0uNzIyLjUyNC41MjQgMCAwIDAtLjM5NC0uMzQ4TDIgMTEuNXYtM2wxLjQ2LS4yNzRhLjUyNC41MjQgMCAwIDAgLjM5NC0uMzQ4Yy4wODYtLjI0OC4xODYtLjQ5LjMtLjcyMmEuNTI0LjUyNCAwIDAgMC0uMDMzLS41MjZsLS44MzktMS4yMjYgMi4xMjItMi4xMjIgMS4yMjYuODRhLjUyNC41MjQgMCAwIDAgLjUyNi4wMzIgNi40NiA2LjQ2IDAgMCAxIC43MjItLjMuNTI0LjUyNCAwIDAgMCAuMzQ4LS4zOTRMOC41IDJabTMgOGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMFptMS41IDBhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwWlwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSl9KSx0WzBdPWUpOmU9dFswXSxlfXZhciB1Vj1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L21lbnUvcGFuZWwtcm91dGVyLmNzc1wiKSx1JD17fTt1JC5zdHlsZVRhZ1RyYW5zZm9ybT1tKCksdSQuc2V0QXR0cmlidXRlcz1kKCksdSQuaW5zZXJ0PWMoKSx1JC5kb21BUEk9bCgpLHUkLmluc2VydFN0eWxlRWxlbWVudD1wKCksYSgpKHVWLlosdSQpLHVWLlomJnVWLloubG9jYWxzJiZ1Vi5aLmxvY2Fsczt2YXIgdVc9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGEsaSxsLHMsYyx1LGQ9KDAseC5jKSgzMiksZj1yNSgpLHA9Zi5zZXRQYW5lbCxoPWYuc2V0U2VsZWN0ZWRJbmRleCxtPWRsKCksZz1tLnN0YXRlLHk9bS5kaXNwYXRjaCx2PXUzKCkudG90YWxFcnJvckNvdW50LGI9XCJhcHBcIj09PWcucm91dGVyVHlwZTtkWzBdIT09eXx8ZFsxXSE9PXB8fGRbMl0hPT1ofHxkWzNdIT09Zy5pc0Vycm9yT3ZlcmxheU9wZW58fGRbNF0hPT12PyhlPXY+MCYme3RpdGxlOlwiXCIuY29uY2F0KHYsXCIgXCIpLmNvbmNhdCgxPT09dj9cImlzc3VlXCI6XCJpc3N1ZXNcIixcIiBmb3VuZC4gQ2xpY2sgdG8gdmlldyBkZXRhaWxzIGluIHRoZSBkZXYgb3ZlcmxheS5cIiksbGFiZWw6XCJJc3N1ZXNcIix2YWx1ZTooMCxBLmpzeCkob0Qse2NoaWxkcmVuOnZ9KSxvbkNsaWNrOmZ1bmN0aW9uKCl7aWYoZy5pc0Vycm9yT3ZlcmxheU9wZW4pe3koe3R5cGU6cX0pLHAobnVsbCk7cmV0dXJufXAobnVsbCksaCgtMSksdj4wJiZ5KHt0eXBlOkZ9KX19LGRbMF09eSxkWzFdPXAsZFsyXT1oLGRbM109Zy5pc0Vycm9yT3ZlcmxheU9wZW4sZFs0XT12LGRbNV09ZSk6ZT1kWzVdO3ZhciB3PVwiQ3VycmVudCByb3V0ZSBpcyBcIi5jb25jYXQoZy5zdGF0aWNJbmRpY2F0b3I/XCJzdGF0aWNcIjpcImR5bmFtaWNcIixcIi5cIiksQz1nLnN0YXRpY0luZGljYXRvcj9cIlN0YXRpY1wiOlwiRHluYW1pY1wiO2RbNl0hPT1wPyh0PWZ1bmN0aW9uKCl7cmV0dXJuIHAoXCJyb3V0ZS10eXBlXCIpfSxkWzZdPXAsZFs3XT10KTp0PWRbN107dmFyIF89Zy5zdGF0aWNJbmRpY2F0b3I/XCJzdGF0aWNcIjpcImR5bmFtaWNcIjtyZXR1cm4gZFs4XSE9PV8/KG49e1wiZGF0YS1uZXh0anMtcm91dGUtdHlwZVwiOl99LGRbOF09XyxkWzldPW4pOm49ZFs5XSxkWzEwXSE9PXd8fGRbMTFdIT09Q3x8ZFsxMl0hPT10fHxkWzEzXSE9PW4/KHI9e3RpdGxlOncsbGFiZWw6XCJSb3V0ZVwiLHZhbHVlOkMsb25DbGljazp0LGF0dHJpYnV0ZXM6bn0sZFsxMF09dyxkWzExXT1DLGRbMTJdPXQsZFsxM109bixkWzE0XT1yKTpyPWRbMTRdLGRbMTVdIT09cD8obz1wcm9jZXNzLmVudi5UVVJCT1BBQ0s/e3RpdGxlOlwiVHVyYm9wYWNrIGlzIGVuYWJsZWQuXCIsbGFiZWw6XCJUdXJib3BhY2tcIix2YWx1ZTpcIkVuYWJsZWRcIn06e3RpdGxlOlwiTGVhcm4gYWJvdXQgVHVyYm9wYWNrIGFuZCBob3cgdG8gZW5hYmxlIGl0IGluIHlvdXIgYXBwbGljYXRpb24uXCIsbGFiZWw6XCJUcnkgVHVyYm9wYWNrXCIsdmFsdWU6KDAsQS5qc3gpKG9MLHt9KSxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHAoXCJ0dXJiby1pbmZvXCIpfX0sZFsxNV09cCxkWzE2XT1vKTpvPWRbMTZdLGRbMTddIT09Ynx8ZFsxOF0hPT1wPyhhPSEhcHJvY2Vzcy5lbnYuX19ORVhUX0RFVlRPT0xfU0VHTUVOVF9FWFBMT1JFUiYmYiYme2xhYmVsOlwiUm91dGUgSW5mb1wiLHZhbHVlOigwLEEuanN4KShvTCx7fSksb25DbGljazpmdW5jdGlvbigpe3JldHVybiBwKFwic2VnbWVudC1leHBsb3JlclwiKX0sYXR0cmlidXRlczp7XCJkYXRhLXNlZ21lbnQtZXhwbG9yZXJcIjohMH19LGRbMTddPWIsZFsxOF09cCxkWzE5XT1hKTphPWRbMTldLGRbMjBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9KDAsQS5qc3gpKHVILHt9KSxkWzIwXT1pKTppPWRbMjBdLGRbMjFdIT09cD8obD1mdW5jdGlvbigpe3JldHVybiBwKFwicHJlZmVyZW5jZXNcIil9LGRbMjFdPXAsZFsyMl09bCk6bD1kWzIyXSxkWzIzXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhzPXtcImRhdGEtcHJlZmVyZW5jZXNcIjohMH0sZFsyM109cyk6cz1kWzIzXSxkWzI0XSE9PWw/KGM9e2xhYmVsOlwiUHJlZmVyZW5jZXNcIix2YWx1ZTppLG9uQ2xpY2s6bCxmb290ZXI6ITAsYXR0cmlidXRlczpzfSxkWzI0XT1sLGRbMjVdPWMpOmM9ZFsyNV0sZFsyNl0hPT1lfHxkWzI3XSE9PWN8fGRbMjhdIT09cnx8ZFsyOV0hPT1vfHxkWzMwXSE9PWE/KHU9KDAsQS5qc3gpKG9ULHtpdGVtczpbZSxyLG8sYSxjXX0pLGRbMjZdPWUsZFsyN109YyxkWzI4XT1yLGRbMjldPW8sZFszMF09YSxkWzMxXT11KTp1PWRbMzFdLHV9LHVZPWZ1bmN0aW9uKCl7dmFyIGUsdD0oMCx4LmMpKDQpLG49ZGwoKSxyPW4uc3RhdGUsbz1uLmRpc3BhdGNoLGE9bi5zaGFkb3dSb290O3JldHVybiB0WzBdIT09b3x8dFsxXSE9PWF8fHRbMl0hPT1yLmRpc2FibGVEZXZJbmRpY2F0b3I/KGU9ZnVuY3Rpb24oKXtvKHt0eXBlOlUsZGlzYWJsZWQ6IXIuZGlzYWJsZURldkluZGljYXRvcn0pO3ZhciBlPWEuZ2V0RWxlbWVudEJ5SWQoXCJwYW5lbC1yb3V0ZVwiKSx0PWEuZ2V0RWxlbWVudEJ5SWQoXCJkYXRhLWRldnRvb2xzLWluZGljYXRvclwiKTtpZihlJiZlLmZpcnN0RWxlbWVudENoaWxkKXt2YXIgbj1lLmZpcnN0RWxlbWVudENoaWxkLGk9XCJub25lXCI9PT1uLnN0eWxlLmRpc3BsYXk7bi5zdHlsZS5kaXNwbGF5PWk/XCJcIjpcIm5vbmVcIn1pZih0KXt2YXIgbD1cIm5vbmVcIj09PXQuc3R5bGUuZGlzcGxheTt0LnN0eWxlLmRpc3BsYXk9bD9cIlwiOlwibm9uZVwifX0sdFswXT1vLHRbMV09YSx0WzJdPXIuZGlzYWJsZURldkluZGljYXRvcix0WzNdPWUpOmU9dFszXSxlfSx1Sz1mdW5jdGlvbigpe3ZhciBlLHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LGIsQyxfLGssRSxqLFMsTz0oMCx4LmMpKDQ0KSxCPWRsKCkuc3RhdGUsUD1yNSgpLnRyaWdnZXJSZWYsST11WSgpLFQ9XCJhcHBcIj09PUIucm91dGVyVHlwZTtPWzBdIT09Qi5oaWRlU2hvcnRjdXR8fE9bMV0hPT1JPyhzPUIuaGlkZVNob3J0Y3V0PyhlPXt9LHQ9Qi5oaWRlU2hvcnRjdXQsbj1JLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGUpOnt9LE9bMF09Qi5oaWRlU2hvcnRjdXQsT1sxXT1JLE9bMl09cyk6cz1PWzJdLHI9cyxvPVAsKGw9KDAseC5jKSg0KSlbMF0hPT1vfHxsWzFdIT09cj8oYT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGUpe2lmKCEoKG49dDcoKHQ9bykuY3VycmVudCkpJiYoXCJ0cnVlXCI9PT1uLmNvbnRlbnRFZGl0YWJsZXx8XCJJTlBVVFwiPT09bi50YWdOYW1lfHxcIlRFWFRBUkVBXCI9PT1uLnRhZ05hbWV8fFwiU0VMRUNUXCI9PT1uLnRhZ05hbWV8fFwidHJ1ZVwiPT09bi5kYXRhc2V0W1wic2hvcnRjdXQtcmVjb3JkZXJcIl0pJiYhbi5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKSkpe3ZhciB0LG4sYT1bXTtlLm1ldGFLZXkmJmEucHVzaChcIk1ldGFcIiksZS5jdHJsS2V5JiZhLnB1c2goXCJDb250cm9sXCIpLGUuYWx0S2V5JiZhLnB1c2goXCJBbHRcIiksZS5zaGlmdEtleSYmYS5wdXNoKFwiU2hpZnRcIiksXCJNZXRhXCIhPT1lLmtleSYmXCJDb250cm9sXCIhPT1lLmtleSYmXCJBbHRcIiE9PWUua2V5JiZcIlNoaWZ0XCIhPT1lLmtleSYmYS5wdXNoKGUuY29kZSk7dmFyIGk9YS5qb2luKFwiK1wiKTtyW2ldJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHJbaV0oKSl9fTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSksZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSl9fSxpPVtvLHJdLGxbMF09byxsWzFdPXIsbFsyXT1hLGxbM109aSk6KGE9bFsyXSxpPWxbM10pLCgwLHcudXNlRWZmZWN0KShhLGkpLE9bM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYz0oMCxBLmpzeCkodTAse25hbWU6XCJwYW5lbC1zZWxlY3RvclwiLGNoaWxkcmVuOigwLEEuanN4KSh1Vyx7fSl9KSxPWzNdPWMpOmM9T1szXTt2YXIgej01MDAvQi5zY2FsZTtPWzRdIT09ej8odT17a2luZDpcImZpeGVkXCIsaGVpZ2h0Onosd2lkdGg6NTEyfSxPWzRdPXosT1s1XT11KTp1PU9bNV0sT1s2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLEEuanN4KSh1Rix7dGl0bGU6XCJQcmVmZXJlbmNlc1wifSksZj0oMCxBLmpzeCkodUcse30pLE9bNl09ZCxPWzddPWYpOihkPU9bNl0sZj1PWzddKSxPWzhdIT09dT8ocD0oMCxBLmpzeCkodTAse25hbWU6XCJwcmVmZXJlbmNlc1wiLGNoaWxkcmVuOigwLEEuanN4KShvMix7c2hhcmVQYW5lbFNpemVHbG9iYWxseTohMSxzaXplQ29uZmlnOnUsY2xvc2VPbkNsaWNrT3V0c2lkZTohMCxoZWFkZXI6ZCxjaGlsZHJlbjpmfSl9KSxPWzhdPXUsT1s5XT1wKTpwPU9bOV07dmFyIEQ9Qi5zdGF0aWNJbmRpY2F0b3I/XCJzdGF0aWNcIjpcImR5bmFtaWNcIixMPUIuc3RhdGljSW5kaWNhdG9yPzMwMC9CLnNjYWxlOjMyNS9CLnNjYWxlLE49NDAwL0Iuc2NhbGU7T1sxMF0hPT1MfHxPWzExXSE9PU4/KGg9e2tpbmQ6XCJmaXhlZFwiLGhlaWdodDpMLHdpZHRoOk59LE9bMTBdPUwsT1sxMV09TixPWzEyXT1oKTpoPU9bMTJdO3ZhciBSPVwiXCIuY29uY2F0KEIuc3RhdGljSW5kaWNhdG9yP1wiU3RhdGljXCI6XCJEeW5hbWljXCIsXCIgUm91dGVcIik7T1sxM10hPT1SPyhtPSgwLEEuanN4KSh1Rix7dGl0bGU6Un0pLE9bMTNdPVIsT1sxNF09bSk6bT1PWzE0XSxPWzE1XSE9PUIucm91dGVyVHlwZXx8T1sxNl0hPT1CLnN0YXRpY0luZGljYXRvcj8oZz0oMCxBLmpzeCkobjQse3JvdXRlclR5cGU6Qi5yb3V0ZXJUeXBlLGlzU3RhdGljUm91dGU6Qi5zdGF0aWNJbmRpY2F0b3J9KSxPWzE1XT1CLnJvdXRlclR5cGUsT1sxNl09Qi5zdGF0aWNJbmRpY2F0b3IsT1sxN109Zyk6Zz1PWzE3XTt2YXIgTT1uMltCLnJvdXRlclR5cGVdW0Iuc3RhdGljSW5kaWNhdG9yP1wic3RhdGljXCI6XCJkeW5hbWljXCJdO09bMThdIT09TT8oeT0oMCxBLmpzeCkodVgse2hyZWY6TX0pLE9bMThdPU0sT1sxOV09eSk6eT1PWzE5XSxPWzIwXSE9PWd8fE9bMjFdIT09eT8odj0oMCxBLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInBhbmVsLWNvbnRlbnRcIixjaGlsZHJlbjpbZyx5XX0pLE9bMjBdPWcsT1syMV09eSxPWzIyXT12KTp2PU9bMjJdLE9bMjNdIT09aHx8T1syNF0hPT1tfHxPWzI1XSE9PXZ8fE9bMjZdIT09RD8oYj0oMCxBLmpzeCkodTAse25hbWU6XCJyb3V0ZS10eXBlXCIsY2hpbGRyZW46KDAsQS5qc3gpKG8yLHtzaGFyZVBhbmVsU2l6ZUdsb2JhbGx5OiExLHNpemVDb25maWc6aCxjbG9zZU9uQ2xpY2tPdXRzaWRlOiEwLGhlYWRlcjptLGNoaWxkcmVuOnZ9LEQpfSksT1syM109aCxPWzI0XT1tLE9bMjVdPXYsT1syNl09RCxPWzI3XT1iKTpiPU9bMjddLE9bMjhdIT09VHx8T1syOV0hPT1CLnBhZ2V8fE9bMzBdIT09Qi5zY2FsZT8oQz1wcm9jZXNzLmVudi5fX05FWFRfREVWVE9PTF9TRUdNRU5UX0VYUExPUkVSJiZUJiYoMCxBLmpzeCkodTAse25hbWU6XCJzZWdtZW50LWV4cGxvcmVyXCIsY2hpbGRyZW46KDAsQS5qc3gpKG8yLHtzaGFyZVBhbmVsU2l6ZUdsb2JhbGx5OiExLHNoYXJlUGFuZWxQb3NpdGlvbkdsb2JhbGx5OiExLGRyYWdnYWJsZTohMCxzaXplQ29uZmlnOntraW5kOlwicmVzaXphYmxlXCIsbWF4SGVpZ2h0OlwiOTB2aFwiLG1heFdpZHRoOlwiOTB2d1wiLG1pbkhlaWdodDoyMDAvQi5zY2FsZSxtaW5XaWR0aDoyNTAvQi5zY2FsZSxpbml0aWFsU2l6ZTp7aGVpZ2h0OjM3NS9CLnNjYWxlLHdpZHRoOjQwMC9CLnNjYWxlfX0saGVhZGVyOigwLEEuanN4KSh1Rix7dGl0bGU6XCJSb3V0ZSBJbmZvXCJ9KSxjaGlsZHJlbjooMCxBLmpzeCkodUQse3BhZ2U6Qi5wYWdlfSl9KX0pLE9bMjhdPVQsT1syOV09Qi5wYWdlLE9bMzBdPUIuc2NhbGUsT1szMV09Qyk6Qz1PWzMxXTt2YXIgWj00NzAvQi5zY2FsZSxVPTQwMC9CLnNjYWxlO3JldHVybiBPWzMyXSE9PVp8fE9bMzNdIT09VT8oXz17a2luZDpcImZpeGVkXCIsaGVpZ2h0Olosd2lkdGg6VX0sT1szMl09WixPWzMzXT1VLE9bMzRdPV8pOl89T1szNF0sT1szNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaz0oMCxBLmpzeCkodUYse3RpdGxlOlwiVHJ5IFR1cmJvcGFja1wifSksT1szNV09ayk6az1PWzM1XSxPWzM2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhFPSgwLEEuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicGFuZWwtY29udGVudFwiLGNoaWxkcmVuOlsoMCxBLmpzeCkoblgse30pLCgwLEEuanN4KSh1WCx7aHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL3R1cmJvcGFja1wifSldfSksT1szNl09RSk6RT1PWzM2XSxPWzM3XSE9PV8/KGo9KDAsQS5qc3gpKHUwLHtuYW1lOlwidHVyYm8taW5mb1wiLGNoaWxkcmVuOigwLEEuanN4KShvMix7c2hhcmVQYW5lbFNpemVHbG9iYWxseTohMSxzaXplQ29uZmlnOl8sY2xvc2VPbkNsaWNrT3V0c2lkZTohMCxoZWFkZXI6ayxjaGlsZHJlbjpFfSl9KSxPWzM3XT1fLE9bMzhdPWopOmo9T1szOF0sT1szOV0hPT1ifHxPWzQwXSE9PUN8fE9bNDFdIT09anx8T1s0Ml0hPT1wPyhTPSgwLEEuanN4cykoQS5GcmFnbWVudCx7Y2hpbGRyZW46W2MscCxiLEMsal19KSxPWzM5XT1iLE9bNDBdPUMsT1s0MV09aixPWzQyXT1wLE9bNDNdPVMpOlM9T1s0M10sU30sdVg9ZnVuY3Rpb24oZSl7dmFyIHQsbj0oMCx4LmMpKDIpLHI9ZS5ocmVmO3JldHVybiBuWzBdIT09cj8odD0oMCxBLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tYnV0dG9uLWNvbnRhaW5lclwiLGNoaWxkcmVuOigwLEEuanN4KShcImFcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tbGVhcm4tbW9yZS1idXR0b25cIixocmVmOnIsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwiLGNoaWxkcmVuOlwiTGVhcm4gTW9yZVwifSl9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH0sdUc9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvPSgwLHguYykoMTcpLGE9ZGwoKSxpPWEuZGlzcGF0Y2gsbD1hLnN0YXRlLHM9cjUoKSxjPXMuc2V0UGFuZWwsdT1zLnNldFNlbGVjdGVkSW5kZXgsZD1vXygpO3JldHVybiBvWzBdIT09aT8oZT1mdW5jdGlvbihlKXtpKHt0eXBlOkcsc2NhbGU6ZX0pfSxvWzBdPWksb1sxXT1lKTplPW9bMV0sb1syXSE9PWl8fG9bM10hPT1kPyh0PWZ1bmN0aW9uKGUpe2koe3R5cGU6SyxkZXZUb29sc1Bvc2l0aW9uOmV9KSxkKGUpfSxvWzJdPWksb1szXT1kLG9bNF09dCk6dD1vWzRdLG9bNV0hPT1pfHxvWzZdIT09Y3x8b1s3XSE9PXU/KG49ZnVuY3Rpb24oKXtpKHt0eXBlOlUsZGlzYWJsZWQ6ITB9KSx1KC0xKSxjKG51bGwpLGZldGNoKFwiL19fbmV4dGpzX2Rpc2FibGVfZGV2X2luZGljYXRvclwiLHttZXRob2Q6XCJQT1NUXCJ9KX0sb1s1XT1pLG9bNl09YyxvWzddPXUsb1s4XT1uKTpuPW9bOF0sb1s5XSE9PWwuZGV2VG9vbHNQb3NpdGlvbnx8b1sxMF0hPT1sLmhpZGVTaG9ydGN1dHx8b1sxMV0hPT1sLnNjYWxlfHxvWzEyXSE9PWwudGhlbWV8fG9bMTNdIT09ZXx8b1sxNF0hPT10fHxvWzE1XSE9PW4/KHI9KDAsQS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInVzZXItcHJlZmVyZW5jZXMtd3JhcHBlclwiLGNoaWxkcmVuOigwLEEuanN4KShyayx7dGhlbWU6bC50aGVtZSxwb3NpdGlvbjpsLmRldlRvb2xzUG9zaXRpb24sc2NhbGU6bC5zY2FsZSxzZXRTY2FsZTplLHNldFBvc2l0aW9uOnQsaGlkZVNob3J0Y3V0OmwuaGlkZVNob3J0Y3V0LHNldEhpZGVTaG9ydGN1dDp1MSxoaWRlOm59KX0pLG9bOV09bC5kZXZUb29sc1Bvc2l0aW9uLG9bMTBdPWwuaGlkZVNob3J0Y3V0LG9bMTFdPWwuc2NhbGUsb1sxMl09bC50aGVtZSxvWzEzXT1lLG9bMTRdPXQsb1sxNV09bixvWzE2XT1yKTpyPW9bMTZdLHJ9LHVRPWZ1bmN0aW9uKCl7cmV0dXJuKDAsdy51c2VDb250ZXh0KSh1Sil9LHVKPSgwLHcuY3JlYXRlQ29udGV4dCkobnVsbCk7ZnVuY3Rpb24gdTAoZSl7dmFyIHQsbixyLG8sYSxpPSgwLHguYykoMTIpLGw9ZS5jaGlsZHJlbixzPWUubmFtZSxjPXI1KCkucGFuZWw7aVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXtlbnRlckRlbGF5OjAsZXhpdERlbGF5OjIwMH0saVswXT10KTp0PWlbMF07dmFyIHU9ck4ocz09PWMsdCksZD11Lm1vdW50ZWQsZj11LnJlbmRlcmVkO2lmKCFkKXJldHVybiBudWxsO2lbMV0hPT1kfHxpWzJdIT09cz8obj17bmFtZTpzLG1vdW50ZWQ6ZH0saVsxXT1kLGlbMl09cyxpWzNdPW4pOm49aVszXTt2YXIgcD0rISFmO2lbNF0hPT1wPyhyPXtcIi0tcGFuZWwtb3BhY2l0eVwiOnAsXCItLXBhbmVsLXRyYW5zaXRpb25cIjpcIm9wYWNpdHkgXCIuY29uY2F0KDIwMCxcIm1zIFwiKS5jb25jYXQobnQpfSxpWzRdPXAsaVs1XT1yKTpyPWlbNV07dmFyIGg9cjtyZXR1cm4gaVs2XSE9PWx8fGlbN10hPT1oPyhvPSgwLEEuanN4KShcImRpdlwiLHtpZDpcInBhbmVsLXJvdXRlXCIsY2xhc3NOYW1lOlwicGFuZWwtcm91dGVcIixzdHlsZTpoLGNoaWxkcmVuOmx9KSxpWzZdPWwsaVs3XT1oLGlbOF09byk6bz1pWzhdLGlbOV0hPT1ufHxpWzEwXSE9PW8/KGE9KDAsQS5qc3gpKHVKLHt2YWx1ZTpuLGNoaWxkcmVuOm99KSxpWzldPW4saVsxMF09byxpWzExXT1hKTphPWlbMTFdLGF9ZnVuY3Rpb24gdTEoZSl7cncoe2hpZGVTaG9ydGN1dDplfSl9ZnVuY3Rpb24gdTIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHU0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB1MihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB1MihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX12YXIgdTU9KDAsdy5jcmVhdGVDb250ZXh0KShudWxsKSx1Mz1mdW5jdGlvbigpe3JldHVybigwLHcudXNlQ29udGV4dCkodTUpfTtmdW5jdGlvbiB1Nigpe3ZhciBlLHQsbixyLG89KDAseC5jKSgxMSksYT11NCgoMCx3LnVzZVN0YXRlKShudWxsKSwyKSxpPWFbMF0sbD1hWzFdLHM9dTQoKDAsdy51c2VTdGF0ZSkoLTEpLDIpLGM9c1swXSx1PXNbMV0sZD1kbCgpLGY9ZC5zdGF0ZSxwPWQuZGlzcGF0Y2gsaD1kLmdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzLG09KDAsdy51c2VSZWYpKG51bGwpO3JldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsQS5qc3gpKHJZLHt9KSx0PSgwLEEuanN4KShyeix7fSksb1swXT1lLG9bMV09dCk6KGU9b1swXSx0PW9bMV0pLG9bMl0hPT1wfHxvWzNdIT09aHx8b1s0XSE9PWl8fG9bNV0hPT1jfHxvWzZdIT09Zj8obj1mdW5jdGlvbihlKXt2YXIgdD1lLnJ1bnRpbWVFcnJvcnMsbj1lLnRvdGFsRXJyb3JDb3VudDtyZXR1cm4oMCxBLmpzeCkoQS5GcmFnbWVudCx7Y2hpbGRyZW46Zi5zaG93SW5kaWNhdG9yPygwLEEuanN4KShBLkZyYWdtZW50LHtjaGlsZHJlbjooMCxBLmpzeCkodTUse3ZhbHVlOntydW50aW1lRXJyb3JzOnQsdG90YWxFcnJvckNvdW50Om59LGNoaWxkcmVuOigwLEEuanN4cykocjQse3ZhbHVlOntwYW5lbDppLHNldFBhbmVsOmwsdHJpZ2dlclJlZjptLHNlbGVjdGVkSW5kZXg6YyxzZXRTZWxlY3RlZEluZGV4OnV9LGNoaWxkcmVuOlsoMCxBLmpzeCkoclose3N0YXRlOmYsZGlzcGF0Y2g6cCxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczpoLHJ1bnRpbWVFcnJvcnM6dCxlcnJvckNvdW50Om59KSwoMCxBLmpzeCkodUsse30pLCgwLEEuanN4KShvQyx7fSldfSl9KX0pOm51bGx9KX0sb1syXT1wLG9bM109aCxvWzRdPWksb1s1XT1jLG9bNl09ZixvWzddPW4pOm49b1s3XSxvWzhdIT09Znx8b1s5XSE9PW4/KHI9KDAsQS5qc3hzKShlbSx7Y2hpbGRyZW46W2UsdCwoMCxBLmpzeCkoclYse3N0YXRlOmYsaXNBcHBEaXI6ITAsY2hpbGRyZW46bn0pXX0pLG9bOF09ZixvWzldPW4sb1sxMF09cik6cj1vWzEwXSxyfWZ1bmN0aW9uIHU5KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB1OChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdTkoZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8dTcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHU3KGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHU5KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHU5KGUsdCl9fXZhciBkZT1udWxsLGR0PVtdO2Z1bmN0aW9uIGRuKGUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07ZGU/ZS5hcHBseSh2b2lkIDAsW2RlXS5jb25jYXQodTgobikpKTpkdC5wdXNoKGZ1bmN0aW9uKHQpe2UuYXBwbHkodm9pZCAwLFt0XS5jb25jYXQodTgobikpKX0pfX12YXIgZHI9e29uQnVpbGRPazpkbihmdW5jdGlvbihlKXtlKHt0eXBlOkl9KX0pLG9uQnVpbGRFcnJvcjpkbihmdW5jdGlvbihlLHQpe2Uoe3R5cGU6VCxtZXNzYWdlOnR9KX0pLG9uQmVmb3JlUmVmcmVzaDpkbihmdW5jdGlvbihlKXtlKHt0eXBlOnp9KX0pLG9uUmVmcmVzaDpkbihmdW5jdGlvbihlKXtlKHt0eXBlOkR9KX0pLG9uVmVyc2lvbkluZm86ZG4oZnVuY3Rpb24oZSx0KXtlKHt0eXBlOkwsdmVyc2lvbkluZm86dH0pfSksb25TdGF0aWNJbmRpY2F0b3I6ZG4oZnVuY3Rpb24oZSx0KXtlKHt0eXBlOlAsc3RhdGljSW5kaWNhdG9yOnR9KX0pLG9uRGVidWdJbmZvOmRuKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpNLGRlYnVnSW5mbzp0fSl9KSxvbkRldkluZGljYXRvcjpkbihmdW5jdGlvbihlLHQpe2Uoe3R5cGU6WixkZXZJbmRpY2F0b3I6dH0pfSksb25EZXZUb29sc0NvbmZpZzpkbihmdW5jdGlvbihlLHQpe2Uoe3R5cGU6USxkZXZUb29sc0NvbmZpZzp0fSl9KSxvblVuaGFuZGxlZEVycm9yOmRuKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpOLHJlYXNvbjp0fSl9KSxvblVuaGFuZGxlZFJlamVjdGlvbjpkbihmdW5jdGlvbihlLHQpe2Uoe3R5cGU6UixyZWFzb246dH0pfSksb3BlbkVycm9yT3ZlcmxheTpkbihmdW5jdGlvbihlKXtlKHt0eXBlOkZ9KX0pLGNsb3NlRXJyb3JPdmVybGF5OmRuKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6cX0pfSksdG9nZ2xlRXJyb3JPdmVybGF5OmRuKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6SH0pfSksYnVpbGRpbmdJbmRpY2F0b3JIaWRlOmRuKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6JH0pfSksYnVpbGRpbmdJbmRpY2F0b3JTaG93OmRuKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6Vn0pfSkscmVuZGVyaW5nSW5kaWNhdG9ySGlkZTpkbihmdW5jdGlvbihlKXtlKHt0eXBlOll9KX0pLHJlbmRlcmluZ0luZGljYXRvclNob3c6ZG4oZnVuY3Rpb24oZSl7ZSh7dHlwZTpXfSl9KSxzZWdtZW50RXhwbG9yZXJOb2RlQWRkOmRuKGZ1bmN0aW9uKGUsdCl7YW4odCl9KSxzZWdtZW50RXhwbG9yZXJOb2RlUmVtb3ZlOmRuKGZ1bmN0aW9uKGUsdCl7YXIodCl9KSxzZWdtZW50RXhwbG9yZXJVcGRhdGVSb3V0ZVN0YXRlOmRuKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTplcixwYWdlOnR9KX0pfTtmdW5jdGlvbiBkYShlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsYixDPSgwLHguYykoMTgpLEI9ZS5nZXRPd25lclN0YWNrLEo9ZS5nZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlscyxlZT1lLmlzUmVjb3ZlcmFibGVFcnJvcixldD1lLnJvdXRlclR5cGUsZW49ZS5zaGFkb3dSb290LGVvPSh0PWV0LG49QixyPWVlLChzPSgwLHguYykoNykpWzBdIT09bnx8c1sxXSE9PXI/KGE9ZnVuY3Rpb24oZSx0LG8pe3ZhciBhLGk9bihvKSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpwcm9jZXNzLmVudi5fX05FWFRfRElTVF9ESVI7cmV0dXJuIGU/KGU9ZS5zcGxpdChcIlxcblwiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5jbHVkZXMoXCIoZXZhbCBcIikmJihlPWUucmVwbGFjZSgvZXZhbCBjb2RlL2csXCJldmFsXCIpLnJlcGxhY2UoL1xcKGV2YWwgYXQgW14oKV0qIFxcKC8sXCIoZmlsZTovL1wiKS5yZXBsYWNlKC9cXCksLiokL2csXCIpXCIpKSxlfSkuam9pbihcIlxcblwiKSwoMCxfLnBhcnNlKShlKS5tYXAoZnVuY3Rpb24oZSl7dHJ5e3ZhciBuPW5ldyBVUkwoZS5maWxlKSxyPWsuZXhlYyhuLnBhdGhuYW1lKTtpZihyKXt2YXIgbyxhPW51bGw9PXR8fG51bGw9PShvPXQucmVwbGFjZSgvXFxcXC9nLFwiL1wiKSk/dm9pZCAwOm8ucmVwbGFjZSgvXFwvJC8sXCJcIik7YSYmKGUuZmlsZT1cImZpbGU6Ly9cIithLmNvbmNhdChyLnBvcCgpKStuLnNlYXJjaCl9fWNhdGNoKGUpe31yZXR1cm57ZmlsZTplLmZpbGUsbGluZTE6ZS5saW5lTnVtYmVyLGNvbHVtbjE6ZS5jb2x1bW4sbWV0aG9kTmFtZTplLm1ldGhvZE5hbWUsYXJndW1lbnRzOmUuYXJndW1lbnRzfX0pKTpbXX0oKG8uc3RhY2t8fFwiXCIpKyhpfHxcIlwiKSkscz17aWQ6dCxlcnJvcjpvLGZyYW1lczpsLHR5cGU6cihvKT9cInJlY292ZXJhYmxlXCI6KGE9bykmJlwiTkVYVF9DT05TT0xFX0VSUk9SXCI9PT1hW0VdP1wiY29uc29sZVwiOlwicnVudGltZVwifSxjPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVycm9yLnN0YWNrIT09cy5lcnJvci5zdGFjayYmZWEoZS5lcnJvci5zdGFjaykhPT1lYShzLmVycm9yLnN0YWNrKXx8bihlLmVycm9yKSE9PW4ocy5lcnJvcil9KTtyZXR1cm4gYy5sZW5ndGg9PT1lLmxlbmd0aD8oYy5wdXNoKHMpLGMpOmV9LHNbMF09bixzWzFdPXIsc1syXT1hKTphPXNbMl0sYz1hLChzWzNdIT09Yz8oaT1mdW5jdGlvbihlLHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgTTpyZXR1cm4gTyhTKHt9LGUpLHtkZWJ1Z0luZm86dC5kZWJ1Z0luZm99KTtjYXNlIFA6cmV0dXJuIE8oUyh7fSxlKSx7c3RhdGljSW5kaWNhdG9yOnQuc3RhdGljSW5kaWNhdG9yfSk7Y2FzZSBJOnJldHVybiBPKFMoe30sZSkse2J1aWxkRXJyb3I6bnVsbH0pO2Nhc2UgVDpyZXR1cm4gTyhTKHt9LGUpLHtidWlsZEVycm9yOnQubWVzc2FnZX0pO2Nhc2UgejpyZXR1cm4gTyhTKHt9LGUpLHtyZWZyZXNoU3RhdGU6e3R5cGU6XCJwZW5kaW5nXCIsZXJyb3JzOltdfX0pO2Nhc2UgRDpyZXR1cm4gTyhTKHt9LGUpLHtidWlsZEVycm9yOm51bGwsZXJyb3JzOlwicGVuZGluZ1wiPT09ZS5yZWZyZXNoU3RhdGUudHlwZT9lLnJlZnJlc2hTdGF0ZS5lcnJvcnM6W10scmVmcmVzaFN0YXRlOnt0eXBlOlwiaWRsZVwifX0pO2Nhc2UgTjpjYXNlIFI6c3dpdGNoKGUucmVmcmVzaFN0YXRlLnR5cGUpe2Nhc2VcImlkbGVcIjpyZXR1cm4gTyhTKHt9LGUpLHtuZXh0SWQ6ZS5uZXh0SWQrMSxlcnJvcnM6YyhlLmVycm9ycyxlLm5leHRJZCx0LnJlYXNvbil9KTtjYXNlXCJwZW5kaW5nXCI6cmV0dXJuIE8oUyh7fSxlKSx7bmV4dElkOmUubmV4dElkKzEscmVmcmVzaFN0YXRlOk8oUyh7fSxlLnJlZnJlc2hTdGF0ZSkse2Vycm9yczpjKGUuZXJyb3JzLGUubmV4dElkLHQucmVhc29uKX0pfSk7ZGVmYXVsdDpyZXR1cm4gZX1jYXNlIEw6cmV0dXJuIE8oUyh7fSxlKSx7dmVyc2lvbkluZm86dC52ZXJzaW9uSW5mb30pO2Nhc2UgVTpyZXR1cm4gTyhTKHt9LGUpLHtkaXNhYmxlRGV2SW5kaWNhdG9yOnQuZGlzYWJsZWR9KTtjYXNlIFo6cmV0dXJuIE8oUyh7fSxlKSx7c2hvd0luZGljYXRvcjohMCxkaXNhYmxlRGV2SW5kaWNhdG9yOmVpfHwhIXQuZGV2SW5kaWNhdG9yLmRpc2FibGVkVW50aWx9KTtjYXNlIEY6cmV0dXJuIE8oUyh7fSxlKSx7aXNFcnJvck92ZXJsYXlPcGVuOiEwfSk7Y2FzZSBxOnJldHVybiBPKFMoe30sZSkse2lzRXJyb3JPdmVybGF5T3BlbjohMX0pO2Nhc2UgSDpyZXR1cm4gTyhTKHt9LGUpLHtpc0Vycm9yT3ZlcmxheU9wZW46IWUuaXNFcnJvck92ZXJsYXlPcGVufSk7Y2FzZSBWOnJldHVybiBPKFMoe30sZSkse2J1aWxkaW5nSW5kaWNhdG9yOiEwfSk7Y2FzZSAkOnJldHVybiBPKFMoe30sZSkse2J1aWxkaW5nSW5kaWNhdG9yOiExfSk7Y2FzZSBXOnJldHVybiBPKFMoe30sZSkse3JlbmRlcmluZ0luZGljYXRvcjohMH0pO2Nhc2UgWTpyZXR1cm4gTyhTKHt9LGUpLHtyZW5kZXJpbmdJbmRpY2F0b3I6ITF9KTtjYXNlIEs6cmV0dXJuIE8oUyh7fSxlKSx7ZGV2VG9vbHNQb3NpdGlvbjp0LmRldlRvb2xzUG9zaXRpb259KTtjYXNlIFg6cmV0dXJuIE8oUyh7fSxlKSx7ZGV2VG9vbHNQYW5lbFBvc2l0aW9uOk8oUyh7fSxlLmRldlRvb2xzUGFuZWxQb3NpdGlvbiksaih7fSx0LmtleSx0LmRldlRvb2xzUGFuZWxQb3NpdGlvbikpfSk7Y2FzZSBHOnJldHVybiBPKFMoe30sZSkse3NjYWxlOnQuc2NhbGV9KTtjYXNlIGVyOnJldHVybiBPKFMoe30sZSkse3BhZ2U6dC5wYWdlfSk7Y2FzZSBROnZhciBuPXQuZGV2VG9vbHNDb25maWcscj1uLnRoZW1lLG89bi5kaXNhYmxlRGV2SW5kaWNhdG9yLGE9bi5kZXZUb29sc1Bvc2l0aW9uLGk9bi5kZXZUb29sc1BhbmVsUG9zaXRpb24sbD1uLmRldlRvb2xzUGFuZWxTaXplLHM9bi5zY2FsZSx1PW4uaGlkZVNob3J0Y3V0O3JldHVybiBPKFMoe30sZSkse3RoZW1lOm51bGwhPXI/cjplLnRoZW1lLGRpc2FibGVEZXZJbmRpY2F0b3I6bnVsbCE9bz9vOmUuZGlzYWJsZURldkluZGljYXRvcixkZXZUb29sc1Bvc2l0aW9uOm51bGwhPWE/YTplLmRldlRvb2xzUG9zaXRpb24sZGV2VG9vbHNQYW5lbFBvc2l0aW9uOm51bGwhPWk/aTplLmRldlRvb2xzUGFuZWxQb3NpdGlvbixzY2FsZTpudWxsIT1zP3M6ZS5zY2FsZSxkZXZUb29sc1BhbmVsU2l6ZTpudWxsIT1sP2w6ZS5kZXZUb29sc1BhbmVsU2l6ZSxoaWRlU2hvcnRjdXQ6dm9pZCAwIT09dT91OmUuaGlkZVNob3J0Y3V0fSk7ZGVmYXVsdDpyZXR1cm4gZX19LHNbM109YyxzWzRdPWkpOmk9c1s0XSxzWzVdIT09dCk/KG89dCxsPU8oUyh7fSxlcykse2lzRXJyb3JPdmVybGF5T3BlbjpcInBhZ2VzXCI9PT1vLHJvdXRlclR5cGU6b30pLHNbNV09dCxzWzZdPWwpOmw9c1s2XSx1PSgwLHcudXNlUmVkdWNlcikoaSxsKSxkPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odSwyKXx8dTcodSxkKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksZWw9ZW9bMF0sZWM9ZW9bMV07cmV0dXJuIENbMF0hPT1lbi5ob3N0fHxDWzFdIT09ZWwudGhlbWU/KGY9ZnVuY3Rpb24oKXt2YXIgZT1lbi5ob3N0O1wiZGFya1wiPT09ZWwudGhlbWU/KGUuY2xhc3NMaXN0LmFkZChcImRhcmtcIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwibGlnaHRcIikpOlwibGlnaHRcIj09PWVsLnRoZW1lPyhlLmNsYXNzTGlzdC5hZGQoXCJsaWdodFwiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJkYXJrXCIpKTooZS5jbGFzc0xpc3QucmVtb3ZlKFwiZGFya1wiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJsaWdodFwiKSl9LENbMF09ZW4uaG9zdCxDWzFdPWVsLnRoZW1lLENbMl09Zik6Zj1DWzJdLENbM10hPT1lbnx8Q1s0XSE9PWVsLnRoZW1lPyhwPVtlbixlbC50aGVtZV0sQ1szXT1lbixDWzRdPWVsLnRoZW1lLENbNV09cCk6cD1DWzVdLCgwLHcudXNlTGF5b3V0RWZmZWN0KShmLHApLENbNl0hPT1lYz8oaD1mdW5jdGlvbigpe2RlPWVjO3ZhciBlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PSEwLG49ITEscj12b2lkIDA7dHJ5e2Zvcih2YXIgbyxhPWR0W1N5bWJvbC5pdGVyYXRvcl0oKTshKHQ9KG89YS5uZXh0KCkpLmRvbmUpO3Q9ITApKDAsby52YWx1ZSkoZSl9Y2F0Y2goZSl7bj0hMCxyPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09YS5yZXR1cm58fGEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fX1maW5hbGx5e2R0Lmxlbmd0aD0wfX0oZWMpfSk7cmV0dXJuIGZ1bmN0aW9uKCl7ZGU9bnVsbCxjbGVhclRpbWVvdXQoZSl9fSxDWzZdPWVjLENbN109aCk6aD1DWzddLENbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obT1bXSxDWzhdPW0pOm09Q1s4XSwoMCx3LnVzZUluc2VydGlvbkVmZmVjdCkoaCxtKSxDWzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGc9KDAsQS5qc3gpKGVmLHt9KSxDWzldPWcpOmc9Q1s5XSxDWzEwXSE9PWVjfHxDWzExXSE9PUp8fENbMTJdIT09ZW58fENbMTNdIT09ZWw/KHk9e2Rpc3BhdGNoOmVjLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOkosc2hhZG93Um9vdDplbixzdGF0ZTplbH0sQ1sxMF09ZWMsQ1sxMV09SixDWzEyXT1lbixDWzEzXT1lbCxDWzE0XT15KTp5PUNbMTRdLENbMTVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHY9KDAsQS5qc3gpKHU2LHt9KSxDWzE1XT12KTp2PUNbMTVdLENbMTZdIT09eT8oYj0oMCxBLmpzeHMpKEEuRnJhZ21lbnQse2NoaWxkcmVuOltnLCgwLEEuanN4KShkaSx7dmFsdWU6eSxjaGlsZHJlbjp2fSldfSksQ1sxNl09eSxDWzE3XT1iKTpiPUNbMTddLGJ9dmFyIGRpPSgwLHcuY3JlYXRlQ29udGV4dCkobnVsbCksZGw9ZnVuY3Rpb24oKXtyZXR1cm4oMCx3LnVzZUNvbnRleHQpKGRpKX0sZHM9ITEsZGM9ITE7ZnVuY3Rpb24gZHUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBkZChlLHQpe2lmKGRzKXRocm93IEVycm9yKFwiTmV4dCBEZXZUb29sczogUGFnZXMgRGV2IE92ZXJsYXkgaXMgYWxyZWFkeSBtb3VudGVkLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanNcIik7aWYoIWRjKXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO24uc3R5bGUuZGlzcGxheT1cImJsb2NrXCIsbi5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsbi5zZXRBdHRyaWJ1dGUoXCJkYXRhLW5leHRqcy1kZXYtb3ZlcmxheVwiLFwidHJ1ZVwiKTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibmV4dGpzLXBvcnRhbFwiKTtuLmFwcGVuZENoaWxkKHIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobik7dmFyIG89KDAsZWMuY3JlYXRlUm9vdCkocix7aWRlbnRpZmllclByZWZpeDpcIm5kdC1cIn0pLGE9ci5hdHRhY2hTaGFkb3coe21vZGU6XCJvcGVuXCJ9KTsoMCx3LnN0YXJ0VHJhbnNpdGlvbikoZnVuY3Rpb24oKXtvLnJlbmRlcigoMCxBLmpzeCkoZGEse2dldE93bmVyU3RhY2s6ZSxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczpkdSxpc1JlY292ZXJhYmxlRXJyb3I6dCxyb3V0ZXJUeXBlOlwiYXBwXCIsc2hhZG93Um9vdDphfSkpfSksZGM9ITB9fWZ1bmN0aW9uIGRmKGUsdCxuKXtpZihkYyl0aHJvdyBFcnJvcihcIk5leHQgRGV2VG9vbHM6IEFwcCBEZXYgT3ZlcmxheSBpcyBhbHJlYWR5IG1vdW50ZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc1wiKTtpZighZHMpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJuZXh0anMtcG9ydGFsXCIpO3Iuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGUpe3ZhciB0PSEwLG49ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxpPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEodD0oYT1pLm5leHQoKSkuZG9uZSk7dD0hMCl7dmFyIGw9YS52YWx1ZTtpZihcImNoaWxkTGlzdFwiPT09bC50eXBlKXt2YXIgcz0hMCxjPSExLHU9dm9pZCAwO3RyeXtmb3IodmFyIGQsZj1sLnJlbW92ZWROb2Rlc1tTeW1ib2wuaXRlcmF0b3JdKCk7IShzPShkPWYubmV4dCgpKS5kb25lKTtzPSEwKWQudmFsdWU9PT1yJiZkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpfWNhdGNoKGUpe2M9ITAsdT1lfWZpbmFsbHl7dHJ5e3N8fG51bGw9PWYucmV0dXJufHxmLnJldHVybigpfWZpbmFsbHl7aWYoYyl0aHJvdyB1fX19fX1jYXRjaChlKXtuPSEwLG89ZX1maW5hbGx5e3RyeXt0fHxudWxsPT1pLnJldHVybnx8aS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgb319fSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6ITB9KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpO3ZhciBvPSgwLGVjLmNyZWF0ZVJvb3QpKHIse2lkZW50aWZpZXJQcmVmaXg6XCJuZHQtXCJ9KSxhPXIuYXR0YWNoU2hhZG93KHttb2RlOlwib3BlblwifSk7KDAsdy5zdGFydFRyYW5zaXRpb24pKGZ1bmN0aW9uKCl7by5yZW5kZXIoKDAsQS5qc3gpKGRhLHtnZXRPd25lclN0YWNrOmUsZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6dCxpc1JlY292ZXJhYmxlRXJyb3I6bixyb3V0ZXJUeXBlOlwicGFnZXNcIixzaGFkb3dSb290OmF9KSl9KSxkcz0hMH19fSkoKSxleHBvcnRzLkRldk92ZXJsYXlDb250ZXh0PV9fd2VicGFja19leHBvcnRzX18uRGV2T3ZlcmxheUNvbnRleHQsZXhwb3J0cy5kaXNwYXRjaGVyPV9fd2VicGFja19leHBvcnRzX18uZGlzcGF0Y2hlcixleHBvcnRzLnJlbmRlckFwcERldk92ZXJsYXk9X193ZWJwYWNrX2V4cG9ydHNfXy5yZW5kZXJBcHBEZXZPdmVybGF5LGV4cG9ydHMucmVuZGVyUGFnZXNEZXZPdmVybGF5PV9fd2VicGFja19leHBvcnRzX18ucmVuZGVyUGFnZXNEZXZPdmVybGF5LGV4cG9ydHMudXNlRGV2T3ZlcmxheUNvbnRleHQ9X193ZWJwYWNrX2V4cG9ydHNfXy51c2VEZXZPdmVybGF5Q29udGV4dCxfX3dlYnBhY2tfZXhwb3J0c19fKS0xPT09W1wiRGV2T3ZlcmxheUNvbnRleHRcIixcImRpc3BhdGNoZXJcIixcInJlbmRlckFwcERldk92ZXJsYXlcIixcInJlbmRlclBhZ2VzRGV2T3ZlcmxheVwiLFwidXNlRGV2T3ZlcmxheUNvbnRleHRcIl0uaW5kZXhPZihfX3dlYnBhY2tfaV9fKSYmKGV4cG9ydHNbX193ZWJwYWNrX2lfX109X193ZWJwYWNrX2V4cG9ydHNfX1tfX3dlYnBhY2tfaV9fXSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/compiled/safe-stable-stringify/index.js ***! \************************************************************************/ /***/ ((module) => { eval("(function(){\"use strict\";var e={879:function(e,t){const{hasOwnProperty:n}=Object.prototype;const r=configure();r.configure=configure;r.stringify=r;r.default=r;t.stringify=r;t.configure=configure;e.exports=r;const i=/[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/;function strEscape(e){if(e.length<5e3&&!i.test(e)){return`\"${e}\"`}return JSON.stringify(e)}function sort(e,t){if(e.length>200||t){return e.sort(t)}for(let t=1;tn){e[r]=e[r-1];r--}e[r]=n}return e}const f=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function isTypedArrayWithEntries(e){return f.call(e)!==undefined&&e.length!==0}function stringifyTypedArray(e,t,n){if(e.length= 1`)}}return r===undefined?Infinity:r}function getItemCount(e){if(e===1){return\"1 item\"}return`${e} items`}function getUniqueReplacerSet(e){const t=new Set;for(const n of e){if(typeof n===\"string\"||typeof n===\"number\"){t.add(String(n))}}return t}function getStrictOption(e){if(n.call(e,\"strict\")){const t=e.strict;if(typeof t!==\"boolean\"){throw new TypeError('The \"strict\" argument must be of type boolean')}if(t){return e=>{let t=`Object can not safely be stringified. Received type ${typeof e}`;if(typeof e!==\"function\")t+=` (${e.toString()})`;throw new Error(t)}}}}function configure(e){e={...e};const t=getStrictOption(e);if(t){if(e.bigint===undefined){e.bigint=false}if(!(\"circularValue\"in e)){e.circularValue=Error}}const n=getCircularValueOption(e);const r=getBooleanOption(e,\"bigint\");const i=getDeterministicOption(e);const f=typeof i===\"function\"?i:undefined;const u=getPositiveIntegerOption(e,\"maximumDepth\");const o=getPositiveIntegerOption(e,\"maximumBreadth\");function stringifyFnReplacer(e,s,l,c,a,g){let p=s[e];if(typeof p===\"object\"&&p!==null&&typeof p.toJSON===\"function\"){p=p.toJSON(e)}p=c.call(s,e,p);switch(typeof p){case\"string\":return strEscape(p);case\"object\":{if(p===null){return\"null\"}if(l.indexOf(p)!==-1){return n}let e=\"\";let t=\",\";const r=g;if(Array.isArray(p)){if(p.length===0){return\"[]\"}if(uo){const n=p.length-o-1;e+=`${t}\"... ${getItemCount(n)} not stringified\"`}if(a!==\"\"){e+=`\\n${r}`}l.pop();return`[${e}]`}let s=Object.keys(p);const y=s.length;if(y===0){return\"{}\"}if(uo){const n=y-o;e+=`${h}\"...\":${d}\"${getItemCount(n)} not stringified\"`;h=t}if(a!==\"\"&&h.length>1){e=`\\n${g}${e}\\n${r}`}l.pop();return`{${e}}`}case\"number\":return isFinite(p)?String(p):t?t(p):\"null\";case\"boolean\":return p===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(p)}default:return t?t(p):undefined}}function stringifyArrayReplacer(e,i,f,s,l,c){if(typeof i===\"object\"&&i!==null&&typeof i.toJSON===\"function\"){i=i.toJSON(e)}switch(typeof i){case\"string\":return strEscape(i);case\"object\":{if(i===null){return\"null\"}if(f.indexOf(i)!==-1){return n}const e=c;let t=\"\";let r=\",\";if(Array.isArray(i)){if(i.length===0){return\"[]\"}if(uo){const e=i.length-o-1;t+=`${r}\"... ${getItemCount(e)} not stringified\"`}if(l!==\"\"){t+=`\\n${e}`}f.pop();return`[${t}]`}f.push(i);let a=\"\";if(l!==\"\"){c+=l;r=`,\\n${c}`;a=\" \"}let g=\"\";for(const e of s){const n=stringifyArrayReplacer(e,i[e],f,s,l,c);if(n!==undefined){t+=`${g}${strEscape(e)}:${a}${n}`;g=r}}if(l!==\"\"&&g.length>1){t=`\\n${c}${t}\\n${e}`}f.pop();return`{${t}}`}case\"number\":return isFinite(i)?String(i):t?t(i):\"null\";case\"boolean\":return i===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(i)}default:return t?t(i):undefined}}function stringifyIndent(e,s,l,c,a){switch(typeof s){case\"string\":return strEscape(s);case\"object\":{if(s===null){return\"null\"}if(typeof s.toJSON===\"function\"){s=s.toJSON(e);if(typeof s!==\"object\"){return stringifyIndent(e,s,l,c,a)}if(s===null){return\"null\"}}if(l.indexOf(s)!==-1){return n}const t=a;if(Array.isArray(s)){if(s.length===0){return\"[]\"}if(uo){const t=s.length-o-1;e+=`${n}\"... ${getItemCount(t)} not stringified\"`}e+=`\\n${t}`;l.pop();return`[${e}]`}let r=Object.keys(s);const g=r.length;if(g===0){return\"{}\"}if(uo){const e=g-o;y+=`${d}\"...\": \"${getItemCount(e)} not stringified\"`;d=p}if(d!==\"\"){y=`\\n${a}${y}\\n${t}`}l.pop();return`{${y}}`}case\"number\":return isFinite(s)?String(s):t?t(s):\"null\";case\"boolean\":return s===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(s)}default:return t?t(s):undefined}}function stringifySimple(e,s,l){switch(typeof s){case\"string\":return strEscape(s);case\"object\":{if(s===null){return\"null\"}if(typeof s.toJSON===\"function\"){s=s.toJSON(e);if(typeof s!==\"object\"){return stringifySimple(e,s,l)}if(s===null){return\"null\"}}if(l.indexOf(s)!==-1){return n}let t=\"\";const r=s.length!==undefined;if(r&&Array.isArray(s)){if(s.length===0){return\"[]\"}if(uo){const e=s.length-o-1;t+=`,\"... ${getItemCount(e)} not stringified\"`}l.pop();return`[${t}]`}let c=Object.keys(s);const a=c.length;if(a===0){return\"{}\"}if(uo){const e=a-o;t+=`${g}\"...\":\"${getItemCount(e)} not stringified\"`}l.pop();return`{${t}}`}case\"number\":return isFinite(s)?String(s):t?t(s):\"null\";case\"boolean\":return s===true?\"true\":\"false\";case\"undefined\":return undefined;case\"bigint\":if(r){return String(s)}default:return t?t(s):undefined}}function stringify(e,t,n){if(arguments.length>1){let r=\"\";if(typeof n===\"number\"){r=\" \".repeat(Math.min(n,10))}else if(typeof n===\"string\"){r=n.slice(0,10)}if(t!=null){if(typeof t===\"function\"){return stringifyFnReplacer(\"\",{\"\":e},[],t,r,\"\")}if(Array.isArray(t)){return stringifyArrayReplacer(\"\",e,[],getUniqueReplacerSet(t),r,\"\")}}if(r.length!==0){return stringifyIndent(\"\",e,[],r,\"\")}}return stringifySimple(\"\",e,[])}return stringify}}};var t={};function __nccwpck_require__(n){var r=t[n];if(r!==undefined){return r.exports}var i=t[n]={exports:{}};var f=true;try{e[n](i,i.exports,__nccwpck_require__);f=false}finally{if(f)delete t[n]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var n=__nccwpck_require__(879);module.exports=n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3NhZmUtc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxZQUFZLGFBQWEsT0FBTyxrQkFBa0IsTUFBTSxpQkFBaUIsa0JBQWtCLG9CQUFvQixzQkFBc0IsY0FBYyxZQUFZLGNBQWMsc0JBQXNCLFlBQVksbURBQW1ELHNCQUFzQiw2QkFBNkIsVUFBVSxFQUFFLEdBQUcseUJBQXlCLG1CQUFtQixvQkFBb0IsaUJBQWlCLFlBQVksV0FBVyxLQUFLLGFBQWEsUUFBUSx1QkFBdUIsWUFBWSxJQUFJLE9BQU8sU0FBUyw0SEFBNEgsb0NBQW9DLDJDQUEyQyxvQ0FBb0MsZUFBZSxXQUFXLHVCQUF1QixhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxtQ0FBbUMsOEJBQThCLHdCQUF3Qix3QkFBd0IsVUFBVSxFQUFFLEdBQUcsWUFBWSxTQUFTLDZCQUE2QixPQUFPLFdBQVcsK0RBQStELDBHQUEwRyxxQkFBcUIsbUNBQW1DLE1BQU0sOEJBQThCLGtCQUFrQixnREFBZ0Qsb0dBQW9HLDRCQUE0QiwrQkFBK0IsTUFBTSxnQkFBZ0IsT0FBTyx5QkFBeUIsNEJBQTRCLEVBQUUsc0NBQXNDLDRCQUE0Qix1Q0FBdUMsTUFBTSxnQkFBZ0IsT0FBTyx3QkFBd0IsNEJBQTRCLEVBQUUsb0NBQW9DLHlCQUF5Qiw0QkFBNEIsRUFBRSxnQ0FBZ0MsUUFBUSw2QkFBNkIsRUFBRSwyQkFBMkIsZ0NBQWdDLHlCQUF5QixVQUFVLGVBQWUsU0FBUyxHQUFHLE9BQU8saUNBQWlDLGdCQUFnQixrQkFBa0IsNkNBQTZDLGtCQUFrQixTQUFTLDRCQUE0Qix1QkFBdUIsaUJBQWlCLHlCQUF5QixxRUFBcUUsTUFBTSxXQUFXLDZEQUE2RCxTQUFTLEVBQUUsaUNBQWlDLGFBQWEsR0FBRyxzQkFB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R0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxjb21waWxlZFxcc2FmZS1zdGFibGUtc3RyaW5naWZ5XFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZT17ODc5OmZ1bmN0aW9uKGUsdCl7Y29uc3R7aGFzT3duUHJvcGVydHk6bn09T2JqZWN0LnByb3RvdHlwZTtjb25zdCByPWNvbmZpZ3VyZSgpO3IuY29uZmlndXJlPWNvbmZpZ3VyZTtyLnN0cmluZ2lmeT1yO3IuZGVmYXVsdD1yO3Quc3RyaW5naWZ5PXI7dC5jb25maWd1cmU9Y29uZmlndXJlO2UuZXhwb3J0cz1yO2NvbnN0IGk9L1tcXHUwMDAwLVxcdTAwMWZcXHUwMDIyXFx1MDA1Y1xcdWQ4MDAtXFx1ZGZmZl0vO2Z1bmN0aW9uIHN0ckVzY2FwZShlKXtpZihlLmxlbmd0aDw1ZTMmJiFpLnRlc3QoZSkpe3JldHVybmBcIiR7ZX1cImB9cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIHNvcnQoZSx0KXtpZihlLmxlbmd0aD4yMDB8fHQpe3JldHVybiBlLnNvcnQodCl9Zm9yKGxldCB0PTE7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtsZXQgcj10O3doaWxlKHIhPT0wJiZlW3ItMV0+bil7ZVtyXT1lW3ItMV07ci0tfWVbcl09bn1yZXR1cm4gZX1jb25zdCBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgSW50OEFycmF5KSksU3ltYm9sLnRvU3RyaW5nVGFnKS5nZXQ7ZnVuY3Rpb24gaXNUeXBlZEFycmF5V2l0aEVudHJpZXMoZSl7cmV0dXJuIGYuY2FsbChlKSE9PXVuZGVmaW5lZCYmZS5sZW5ndGghPT0wfWZ1bmN0aW9uIHN0cmluZ2lmeVR5cGVkQXJyYXkoZSx0LG4pe2lmKGUubGVuZ3RoPG4pe249ZS5sZW5ndGh9Y29uc3Qgcj10PT09XCIsXCI/XCJcIjpcIiBcIjtsZXQgaT1gXCIwXCI6JHtyfSR7ZVswXX1gO2ZvcihsZXQgZj0xO2Y8bjtmKyspe2krPWAke3R9XCIke2Z9XCI6JHtyfSR7ZVtmXX1gfXJldHVybiBpfWZ1bmN0aW9uIGdldENpcmN1bGFyVmFsdWVPcHRpb24oZSl7aWYobi5jYWxsKGUsXCJjaXJjdWxhclZhbHVlXCIpKXtjb25zdCB0PWUuY2lyY3VsYXJWYWx1ZTtpZih0eXBlb2YgdD09PVwic3RyaW5nXCIpe3JldHVybmBcIiR7dH1cImB9aWYodD09bnVsbCl7cmV0dXJuIHR9aWYodD09PUVycm9yfHx0PT09VHlwZUVycm9yKXtyZXR1cm57dG9TdHJpbmcoKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTlwiKX19fXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNpcmN1bGFyVmFsdWVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIHRoZSB2YWx1ZSBudWxsIG9yIHVuZGVmaW5lZCcpfXJldHVybidcIltDaXJjdWxhcl1cIid9ZnVuY3Rpb24gZ2V0RGV0ZXJtaW5pc3RpY09wdGlvbihlKXtsZXQgdDtpZihuLmNhbGwoZSxcImRldGVybWluaXN0aWNcIikpe3Q9ZS5kZXRlcm1pbmlzdGljO2lmKHR5cGVvZiB0IT09XCJib29sZWFuXCImJnR5cGVvZiB0IT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJkZXRlcm1pbmlzdGljXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgY29tcGFyYXRvciBmdW5jdGlvbicpfX1yZXR1cm4gdD09PXVuZGVmaW5lZD90cnVlOnR9ZnVuY3Rpb24gZ2V0Qm9vbGVhbk9wdGlvbihlLHQpe2xldCByO2lmKG4uY2FsbChlLHQpKXtyPWVbdF07aWYodHlwZW9mIHIhPT1cImJvb2xlYW5cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFwiJHt0fVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBib29sZWFuYCl9fXJldHVybiByPT09dW5kZWZpbmVkP3RydWU6cn1mdW5jdGlvbiBnZXRQb3NpdGl2ZUludGVnZXJPcHRpb24oZSx0KXtsZXQgcjtpZihuLmNhbGwoZSx0KSl7cj1lW3RdO2lmKHR5cGVvZiByIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFwiJHt0fVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXJgKX1pZighTnVtYmVyLmlzSW50ZWdlcihyKSl7dGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFwiJHt0fVwiIGFyZ3VtZW50IG11c3QgYmUgYW4gaW50ZWdlcmApfWlmKHI8MSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlID49IDFgKX19cmV0dXJuIHI9PT11bmRlZmluZWQ/SW5maW5pdHk6cn1mdW5jdGlvbiBnZXRJdGVtQ291bnQoZSl7aWYoZT09PTEpe3JldHVyblwiMSBpdGVtXCJ9cmV0dXJuYCR7ZX0gaXRlbXNgfWZ1bmN0aW9uIGdldFVuaXF1ZVJlcGxhY2VyU2V0KGUpe2NvbnN0IHQ9bmV3IFNldDtmb3IoY29uc3QgbiBvZiBlKXtpZih0eXBlb2Ygbj09PVwic3RyaW5nXCJ8fHR5cGVvZiBuPT09XCJudW1iZXJcIil7dC5hZGQoU3RyaW5nKG4pKX19cmV0dXJuIHR9ZnVuY3Rpb24gZ2V0U3RyaWN0T3B0aW9uKGUpe2lmKG4uY2FsbChlLFwic3RyaWN0XCIpKXtjb25zdCB0PWUuc3RyaWN0O2lmKHR5cGVvZiB0IT09XCJib29sZWFuXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmljdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBib29sZWFuJyl9aWYodCl7cmV0dXJuIGU9PntsZXQgdD1gT2JqZWN0IGNhbiBub3Qgc2FmZWx5IGJlIHN0cmluZ2lmaWVkLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGV9YDtpZih0eXBlb2YgZSE9PVwiZnVuY3Rpb25cIil0Kz1gICgke2UudG9TdHJpbmcoKX0pYDt0aHJvdyBuZXcgRXJyb3IodCl9fX19ZnVuY3Rpb24gY29uZmlndXJlKGUpe2U9ey4uLmV9O2NvbnN0IHQ9Z2V0U3RyaWN0T3B0aW9uKGUpO2lmKHQpe2lmKGUuYmlnaW50PT09dW5kZWZpbmVkKXtlLmJpZ2ludD1mYWxzZX1pZighKFwiY2lyY3VsYXJWYWx1ZVwiaW4gZSkpe2UuY2lyY3VsYXJWYWx1ZT1FcnJvcn19Y29uc3Qgbj1nZXRDaXJjdWxhclZhbHVlT3B0aW9uKGUpO2NvbnN0IHI9Z2V0Qm9vbGVhbk9wdGlvbihlLFwiYmlnaW50XCIpO2NvbnN0IGk9Z2V0RGV0ZXJtaW5pc3RpY09wdGlvbihlKTtjb25zdCBmPXR5cGVvZiBpPT09XCJmdW5jdGlvblwiP2k6dW5kZWZpbmVkO2NvbnN0IHU9Z2V0UG9zaXRpdmVJbnRlZ2VyT3B0aW9uKGUsXCJtYXhpbXVtRGVwdGhcIik7Y29uc3Qgbz1nZXRQb3NpdGl2ZUludGVnZXJPcHRpb24oZSxcIm1heGltdW1CcmVhZHRoXCIpO2Z1bmN0aW9uIHN0cmluZ2lmeUZuUmVwbGFjZXIoZSxzLGwsYyxhLGcpe2xldCBwPXNbZV07aWYodHlwZW9mIHA9PT1cIm9iamVjdFwiJiZwIT09bnVsbCYmdHlwZW9mIHAudG9KU09OPT09XCJmdW5jdGlvblwiKXtwPXAudG9KU09OKGUpfXA9Yy5jYWxsKHMsZSxwKTtzd2l0Y2godHlwZW9mIHApe2Nhc2VcInN0cmluZ1wiOnJldHVybiBzdHJFc2NhcGUocCk7Y2FzZVwib2JqZWN0XCI6e2lmKHA9PT1udWxsKXtyZXR1cm5cIm51bGxcIn1pZihsLmluZGV4T2YocCkhPT0tMSl7cmV0dXJuIG59bGV0IGU9XCJcIjtsZXQgdD1cIixcIjtjb25zdCByPWc7aWYoQXJyYXkuaXNBcnJheShwKSl7aWYocC5sZW5ndGg9PT0wKXtyZXR1cm5cIltdXCJ9aWYodTxsLmxlbmd0aCsxKXtyZXR1cm4nXCJbQXJyYXldXCInfWwucHVzaChwKTtpZihhIT09XCJcIil7Zys9YTtlKz1gXFxuJHtnfWA7dD1gLFxcbiR7Z31gfWNvbnN0IG49TWF0aC5taW4ocC5sZW5ndGgsbyk7bGV0IGk9MDtmb3IoO2k8bi0xO2krKyl7Y29uc3Qgbj1zdHJpbmdpZnlGblJlcGxhY2VyKFN0cmluZyhpKSxwLGwsYyxhLGcpO2UrPW4hPT11bmRlZmluZWQ/bjpcIm51bGxcIjtlKz10fWNvbnN0IGY9c3RyaW5naWZ5Rm5SZXBsYWNlcihTdHJpbmcoaSkscCxsLGMsYSxnKTtlKz1mIT09dW5kZWZpbmVkP2Y6XCJudWxsXCI7aWYocC5sZW5ndGgtMT5vKXtjb25zdCBuPXAubGVuZ3RoLW8tMTtlKz1gJHt0fVwiLi4uICR7Z2V0SXRlbUNvdW50KG4pfSBub3Qgc3RyaW5naWZpZWRcImB9aWYoYSE9PVwiXCIpe2UrPWBcXG4ke3J9YH1sLnBvcCgpO3JldHVybmBbJHtlfV1gfWxldCBzPU9iamVjdC5rZXlzKHApO2NvbnN0IHk9cy5sZW5ndGg7aWYoeT09PTApe3JldHVyblwie31cIn1pZih1PGwubGVuZ3RoKzEpe3JldHVybidcIltPYmplY3RdXCInfWxldCBkPVwiXCI7bGV0IGg9XCJcIjtpZihhIT09XCJcIil7Zys9YTt0PWAsXFxuJHtnfWA7ZD1cIiBcIn1jb25zdCAkPU1hdGgubWluKHksbyk7aWYoaSYmIWlzVHlwZWRBcnJheVdpdGhFbnRyaWVzKHApKXtzPXNvcnQocyxmKX1sLnB1c2gocCk7Zm9yKGxldCBuPTA7bjwkO24rKyl7Y29uc3Qgcj1zW25dO2NvbnN0IGk9c3RyaW5naWZ5Rm5SZXBsYWNlcihyLHAsbCxjLGEsZyk7aWYoaSE9PXVuZGVmaW5lZCl7ZSs9YCR7aH0ke3N0ckVzY2FwZShyKX06JHtkfSR7aX1gO2g9dH19aWYoeT5vKXtjb25zdCBuPXktbztlKz1gJHtofVwiLi4uXCI6JHtkfVwiJHtnZXRJdGVtQ291bnQobil9IG5vdCBzdHJpbmdpZmllZFwiYDtoPXR9aWYoYSE9PVwiXCImJmgubGVuZ3RoPjEpe2U9YFxcbiR7Z30ke2V9XFxuJHtyfWB9bC5wb3AoKTtyZXR1cm5geyR7ZX19YH1jYXNlXCJudW1iZXJcIjpyZXR1cm4gaXNGaW5pdGUocCk/U3RyaW5nKHApOnQ/dChwKTpcIm51bGxcIjtjYXNlXCJib29sZWFuXCI6cmV0dXJuIHA9PT10cnVlP1widHJ1ZVwiOlwiZmFsc2VcIjtjYXNlXCJ1bmRlZmluZWRcIjpyZXR1cm4gdW5kZWZpbmVkO2Nhc2VcImJpZ2ludFwiOmlmKHIpe3JldHVybiBTdHJpbmcocCl9ZGVmYXVsdDpyZXR1cm4gdD90KHApOnVuZGVmaW5lZH19ZnVuY3Rpb24gc3RyaW5naWZ5QXJyYXlSZXBsYWNlcihlLGksZixzLGwsYyl7aWYodHlwZW9mIGk9PT1cIm9iamVjdFwiJiZpIT09bnVsbCYmdHlwZW9mIGkudG9KU09OPT09XCJmdW5jdGlvblwiKXtpPWkudG9KU09OKGUpfXN3aXRjaCh0eXBlb2YgaSl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHN0ckVzY2FwZShpKTtjYXNlXCJvYmplY3RcIjp7aWYoaT09PW51bGwpe3JldHVyblwibnVsbFwifWlmKGYuaW5kZXhPZihpKSE9PS0xKXtyZXR1cm4gbn1jb25zdCBlPWM7bGV0IHQ9XCJcIjtsZXQgcj1cIixcIjtpZihBcnJheS5pc0FycmF5KGkpKXtpZihpLmxlbmd0aD09PTApe3JldHVyblwiW11cIn1pZih1PGYubGVuZ3RoKzEpe3JldHVybidcIltBcnJheV1cIid9Zi5wdXNoKGkpO2lmKGwhPT1cIlwiKXtjKz1sO3QrPWBcXG4ke2N9YDtyPWAsXFxuJHtjfWB9Y29uc3Qgbj1NYXRoLm1pbihpLmxlbmd0aCxvKTtsZXQgYT0wO2Zvcig7YTxuLTE7YSsrKXtjb25zdCBlPXN0cmluZ2lmeUFycmF5UmVwbGFjZXIoU3RyaW5nKGEpLGlbYV0sZixzLGwsYyk7dCs9ZSE9PXVuZGVmaW5lZD9lOlwibnVsbFwiO3QrPXJ9Y29uc3QgZz1zdHJpbmdpZnlBcnJheVJlcGxhY2VyKFN0cmluZyhhKSxpW2FdLGYscyxsLGMpO3QrPWchPT11bmRlZmluZWQ/ZzpcIm51bGxcIjtpZihpLmxlbmd0aC0xPm8pe2NvbnN0IGU9aS5sZW5ndGgtby0xO3QrPWAke3J9XCIuLi4gJHtnZXRJdGVtQ291bnQoZSl9IG5vdCBzdHJpbmdpZmllZFwiYH1pZihsIT09XCJcIil7dCs9YFxcbiR7ZX1gfWYucG9wKCk7cmV0dXJuYFske3R9XWB9Zi5wdXNoKGkpO2xldCBhPVwiXCI7aWYobCE9PVwiXCIpe2MrPWw7cj1gLFxcbiR7Y31gO2E9XCIgXCJ9bGV0IGc9XCJcIjtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBuPXN0cmluZ2lmeUFycmF5UmVwbGFjZXIoZSxpW2VdLGYscyxsLGMpO2lmKG4hPT11bmRlZmluZWQpe3QrPWAke2d9JHtzdHJFc2NhcGUoZSl9OiR7YX0ke259YDtnPXJ9fWlmKGwhPT1cIlwiJiZnLmxlbmd0aD4xKXt0PWBcXG4ke2N9JHt0fVxcbiR7ZX1gfWYucG9wKCk7cmV0dXJuYHske3R9fWB9Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGlzRmluaXRlKGkpP1N0cmluZyhpKTp0P3QoaSk6XCJudWxsXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBpPT09dHJ1ZT9cInRydWVcIjpcImZhbHNlXCI7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHVuZGVmaW5lZDtjYXNlXCJiaWdpbnRcIjppZihyKXtyZXR1cm4gU3RyaW5nKGkpfWRlZmF1bHQ6cmV0dXJuIHQ/dChpKTp1bmRlZmluZWR9fWZ1bmN0aW9uIHN0cmluZ2lmeUluZGVudChlLHMsbCxjLGEpe3N3aXRjaCh0eXBlb2Ygcyl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHN0ckVzY2FwZShzKTtjYXNlXCJvYmplY3RcIjp7aWYocz09PW51bGwpe3JldHVyblwibnVsbFwifWlmKHR5cGVvZiBzLnRvSlNPTj09PVwiZnVuY3Rpb25cIil7cz1zLnRvSlNPTihlKTtpZih0eXBlb2YgcyE9PVwib2JqZWN0XCIpe3JldHVybiBzdHJpbmdpZnlJbmRlbnQoZSxzLGwsYyxhKX1pZihzPT09bnVsbCl7cmV0dXJuXCJudWxsXCJ9fWlmKGwuaW5kZXhPZihzKSE9PS0xKXtyZXR1cm4gbn1jb25zdCB0PWE7aWYoQXJyYXkuaXNBcnJheShzKSl7aWYocy5sZW5ndGg9PT0wKXtyZXR1cm5cIltdXCJ9aWYodTxsLmxlbmd0aCsxKXtyZXR1cm4nXCJbQXJyYXldXCInfWwucHVzaChzKTthKz1jO2xldCBlPWBcXG4ke2F9YDtjb25zdCBuPWAsXFxuJHthfWA7Y29uc3Qgcj1NYXRoLm1pbihzLmxlbmd0aCxvKTtsZXQgaT0wO2Zvcig7aTxyLTE7aSsrKXtjb25zdCB0PXN0cmluZ2lmeUluZGVudChTdHJpbmcoaSksc1tpXSxsLGMsYSk7ZSs9dCE9PXVuZGVmaW5lZD90OlwibnVsbFwiO2UrPW59Y29uc3QgZj1zdHJpbmdpZnlJbmRlbnQoU3RyaW5nKGkpLHNbaV0sbCxjLGEpO2UrPWYhPT11bmRlZmluZWQ/ZjpcIm51bGxcIjtpZihzLmxlbmd0aC0xPm8pe2NvbnN0IHQ9cy5sZW5ndGgtby0xO2UrPWAke259XCIuLi4gJHtnZXRJdGVtQ291bnQodCl9IG5vdCBzdHJpbmdpZmllZFwiYH1lKz1gXFxuJHt0fWA7bC5wb3AoKTtyZXR1cm5gWyR7ZX1dYH1sZXQgcj1PYmplY3Qua2V5cyhzKTtjb25zdCBnPXIubGVuZ3RoO2lmKGc9PT0wKXtyZXR1cm5cInt9XCJ9aWYodTxsLmxlbmd0aCsxKXtyZXR1cm4nXCJbT2JqZWN0XVwiJ31hKz1jO2NvbnN0IHA9YCxcXG4ke2F9YDtsZXQgeT1cIlwiO2xldCBkPVwiXCI7bGV0IGg9TWF0aC5taW4oZyxvKTtpZihpc1R5cGVkQXJyYXlXaXRoRW50cmllcyhzKSl7eSs9c3RyaW5naWZ5VHlwZWRBcnJheShzLHAsbyk7cj1yLnNsaWNlKHMubGVuZ3RoKTtoLT1zLmxlbmd0aDtkPXB9aWYoaSl7cj1zb3J0KHIsZil9bC5wdXNoKHMpO2ZvcihsZXQgZT0wO2U8aDtlKyspe2NvbnN0IHQ9cltlXTtjb25zdCBuPXN0cmluZ2lmeUluZGVudCh0LHNbdF0sbCxjLGEpO2lmKG4hPT11bmRlZmluZWQpe3krPWAke2R9JHtzdHJFc2NhcGUodCl9OiAke259YDtkPXB9fWlmKGc+byl7Y29uc3QgZT1nLW87eSs9YCR7ZH1cIi4uLlwiOiBcIiR7Z2V0SXRlbUNvdW50KGUpfSBub3Qgc3RyaW5naWZpZWRcImA7ZD1wfWlmKGQhPT1cIlwiKXt5PWBcXG4ke2F9JHt5fVxcbiR7dH1gfWwucG9wKCk7cmV0dXJuYHske3l9fWB9Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGlzRmluaXRlKHMpP1N0cmluZyhzKTp0P3Qocyk6XCJudWxsXCI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiBzPT09dHJ1ZT9cInRydWVcIjpcImZhbHNlXCI7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHVuZGVmaW5lZDtjYXNlXCJiaWdpbnRcIjppZihyKXtyZXR1cm4gU3RyaW5nKHMpfWRlZmF1bHQ6cmV0dXJuIHQ/dChzKTp1bmRlZmluZWR9fWZ1bmN0aW9uIHN0cmluZ2lmeVNpbXBsZShlLHMsbCl7c3dpdGNoKHR5cGVvZiBzKXtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gc3RyRXNjYXBlKHMpO2Nhc2VcIm9iamVjdFwiOntpZihzPT09bnVsbCl7cmV0dXJuXCJudWxsXCJ9aWYodHlwZW9mIHMudG9KU09OPT09XCJmdW5jdGlvblwiKXtzPXMudG9KU09OKGUpO2lmKHR5cGVvZiBzIT09XCJvYmplY3RcIil7cmV0dXJuIHN0cmluZ2lmeVNpbXBsZShlLHMsbCl9aWYocz09PW51bGwpe3JldHVyblwibnVsbFwifX1pZihsLmluZGV4T2YocykhPT0tMSl7cmV0dXJuIG59bGV0IHQ9XCJcIjtjb25zdCByPXMubGVuZ3RoIT09dW5kZWZpbmVkO2lmKHImJkFycmF5LmlzQXJyYXkocykpe2lmKHMubGVuZ3RoPT09MCl7cmV0dXJuXCJbXVwifWlmKHU8bC5sZW5ndGgrMSl7cmV0dXJuJ1wiW0FycmF5XVwiJ31sLnB1c2gocyk7Y29uc3QgZT1NYXRoLm1pbihzLmxlbmd0aCxvKTtsZXQgbj0wO2Zvcig7bjxlLTE7bisrKXtjb25zdCBlPXN0cmluZ2lmeVNpbXBsZShTdHJpbmcobiksc1tuXSxsKTt0Kz1lIT09dW5kZWZpbmVkP2U6XCJudWxsXCI7dCs9XCIsXCJ9Y29uc3Qgcj1zdHJpbmdpZnlTaW1wbGUoU3RyaW5nKG4pLHNbbl0sbCk7dCs9ciE9PXVuZGVmaW5lZD9yOlwibnVsbFwiO2lmKHMubGVuZ3RoLTE+byl7Y29uc3QgZT1zLmxlbmd0aC1vLTE7dCs9YCxcIi4uLiAke2dldEl0ZW1Db3VudChlKX0gbm90IHN0cmluZ2lmaWVkXCJgfWwucG9wKCk7cmV0dXJuYFske3R9XWB9bGV0IGM9T2JqZWN0LmtleXMocyk7Y29uc3QgYT1jLmxlbmd0aDtpZihhPT09MCl7cmV0dXJuXCJ7fVwifWlmKHU8bC5sZW5ndGgrMSl7cmV0dXJuJ1wiW09iamVjdF1cIid9bGV0IGc9XCJcIjtsZXQgcD1NYXRoLm1pbihhLG8pO2lmKHImJmlzVHlwZWRBcnJheVdpdGhFbnRyaWVzKHMpKXt0Kz1zdHJpbmdpZnlUeXBlZEFycmF5KHMsXCIsXCIsbyk7Yz1jLnNsaWNlKHMubGVuZ3RoKTtwLT1zLmxlbmd0aDtnPVwiLFwifWlmKGkpe2M9c29ydChjLGYpfWwucHVzaChzKTtmb3IobGV0IGU9MDtlPHA7ZSsrKXtjb25zdCBuPWNbZV07Y29uc3Qgcj1zdHJpbmdpZnlTaW1wbGUobixzW25dLGwpO2lmKHIhPT11bmRlZmluZWQpe3QrPWAke2d9JHtzdHJFc2NhcGUobil9OiR7cn1gO2c9XCIsXCJ9fWlmKGE+byl7Y29uc3QgZT1hLW87dCs9YCR7Z31cIi4uLlwiOlwiJHtnZXRJdGVtQ291bnQoZSl9IG5vdCBzdHJpbmdpZmllZFwiYH1sLnBvcCgpO3JldHVybmB7JHt0fX1gfWNhc2VcIm51bWJlclwiOnJldHVybiBpc0Zpbml0ZShzKT9TdHJpbmcocyk6dD90KHMpOlwibnVsbFwiO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gcz09PXRydWU/XCJ0cnVlXCI6XCJmYWxzZVwiO2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB1bmRlZmluZWQ7Y2FzZVwiYmlnaW50XCI6aWYocil7cmV0dXJuIFN0cmluZyhzKX1kZWZhdWx0OnJldHVybiB0P3Qocyk6dW5kZWZpbmVkfX1mdW5jdGlvbiBzdHJpbmdpZnkoZSx0LG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7bGV0IHI9XCJcIjtpZih0eXBlb2Ygbj09PVwibnVtYmVyXCIpe3I9XCIgXCIucmVwZWF0KE1hdGgubWluKG4sMTApKX1lbHNlIGlmKHR5cGVvZiBuPT09XCJzdHJpbmdcIil7cj1uLnNsaWNlKDAsMTApfWlmKHQhPW51bGwpe2lmKHR5cGVvZiB0PT09XCJmdW5jdGlvblwiKXtyZXR1cm4gc3RyaW5naWZ5Rm5SZXBsYWNlcihcIlwiLHtcIlwiOmV9LFtdLHQscixcIlwiKX1pZihBcnJheS5pc0FycmF5KHQpKXtyZXR1cm4gc3RyaW5naWZ5QXJyYXlSZXBsYWNlcihcIlwiLGUsW10sZ2V0VW5pcXVlUmVwbGFjZXJTZXQodCkscixcIlwiKX19aWYoci5sZW5ndGghPT0wKXtyZXR1cm4gc3RyaW5naWZ5SW5kZW50KFwiXCIsZSxbXSxyLFwiXCIpfX1yZXR1cm4gc3RyaW5naWZ5U2ltcGxlKFwiXCIsZSxbXSl9cmV0dXJuIHN0cmluZ2lmeX19fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKG4pe3ZhciByPXRbbl07aWYociE9PXVuZGVmaW5lZCl7cmV0dXJuIHIuZXhwb3J0c312YXIgaT10W25dPXtleHBvcnRzOnt9fTt2YXIgZj10cnVlO3RyeXtlW25dKGksaS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2Y9ZmFsc2V9ZmluYWxseXtpZihmKWRlbGV0ZSB0W25dfXJldHVybiBpLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBuPV9fbmNjd3Bja19yZXF1aXJlX18oODc5KTttb2R1bGUuZXhwb3J0cz1ufSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js": /*!*************************************************************!*\ !*** ./node_modules/next/dist/compiled/strip-ansi/index.js ***! \*************************************************************/ /***/ ((module) => { "use strict"; eval("\n(()=>{\n \"use strict\";\n var e = {\n 511: (e)=>{\n e.exports = ({ onlyFirst: e = false } = {})=>{\n const r = [\n \"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\n \"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"\n ].join(\"|\");\n return new RegExp(r, e ? undefined : \"g\");\n };\n },\n 532: (e, r, _)=>{\n const t = _(511);\n e.exports = (e)=>typeof e === \"string\" ? e.replace(t(), \"\") : e;\n }\n };\n var r = {};\n function __nccwpck_require__(_) {\n var t = r[_];\n if (t !== undefined) {\n return t.exports;\n }\n var a = r[_] = {\n exports: {}\n };\n var n = true;\n try {\n e[_](a, a.exports, __nccwpck_require__);\n n = false;\n } finally{\n if (n) delete r[_];\n }\n return a.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var _ = __nccwpck_require__(532);\n module.exports = _;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanMiLCJtYXBwaW5ncyI6IjtBQUFDO0lBQUs7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSUEsQ0FBQUE7WUFBSUEsRUFBRUMsT0FBTyxHQUFDLENBQUMsRUFBQ0MsV0FBVUYsSUFBRSxLQUFLLEVBQUMsR0FBQyxDQUFDLENBQUM7Z0JBQUksTUFBTUcsSUFBRTtvQkFBQztvQkFBK0g7aUJBQTJELENBQUNDLElBQUksQ0FBQztnQkFBSyxPQUFPLElBQUlDLE9BQU9GLEdBQUVILElBQUVNLFlBQVU7WUFBSTtRQUFDO1FBQUUsS0FBSSxDQUFDTixHQUFFRyxHQUFFSTtZQUFLLE1BQU1DLElBQUVELEVBQUU7WUFBS1AsRUFBRUMsT0FBTyxHQUFDRCxDQUFBQSxJQUFHLE9BQU9BLE1BQUksV0FBU0EsRUFBRVMsT0FBTyxDQUFDRCxLQUFJLE1BQUlSO1FBQUM7SUFBQztJQUFFLElBQUlHLElBQUUsQ0FBQztJQUFFLFNBQVNPLG9CQUFvQkgsQ0FBQztRQUFFLElBQUlDLElBQUVMLENBQUMsQ0FBQ0ksRUFBRTtRQUFDLElBQUdDLE1BQUlGLFdBQVU7WUFBQyxPQUFPRSxFQUFFUCxPQUFPO1FBQUE7UUFBQyxJQUFJVSxJQUFFUixDQUFDLENBQUNJLEVBQUUsR0FBQztZQUFDTixTQUFRLENBQUM7UUFBQztRQUFFLElBQUlXLElBQUU7UUFBSyxJQUFHO1lBQUNaLENBQUMsQ0FBQ08sRUFBRSxDQUFDSSxHQUFFQSxFQUFFVixPQUFPLEVBQUNTO1lBQXFCRSxJQUFFO1FBQUssU0FBUTtZQUFDLElBQUdBLEdBQUUsT0FBT1QsQ0FBQyxDQUFDSSxFQUFFO1FBQUE7UUFBQyxPQUFPSSxFQUFFVixPQUFPO0lBQUE7SUFBQyxJQUFHLE9BQU9TLHdCQUFzQixhQUFZQSxvQkFBb0JHLEVBQUUsR0FBQ0MsWUFBVTtJQUFJLElBQUlQLElBQUVHLG9CQUFvQjtJQUFLSyxPQUFPZCxPQUFPLEdBQUNNO0FBQUMiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxzdHJpcC1hbnNpXFxpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17NTExOmU9PntlLmV4cG9ydHM9KHtvbmx5Rmlyc3Q6ZT1mYWxzZX09e30pPT57Y29uc3Qgcj1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cChyLGU/dW5kZWZpbmVkOlwiZ1wiKX19LDUzMjooZSxyLF8pPT57Y29uc3QgdD1fKDUxMSk7ZS5leHBvcnRzPWU9PnR5cGVvZiBlPT09XCJzdHJpbmdcIj9lLnJlcGxhY2UodCgpLFwiXCIpOmV9fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKF8pe3ZhciB0PXJbX107aWYodCE9PXVuZGVmaW5lZCl7cmV0dXJuIHQuZXhwb3J0c312YXIgYT1yW19dPXtleHBvcnRzOnt9fTt2YXIgbj10cnVlO3RyeXtlW19dKGEsYS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO249ZmFsc2V9ZmluYWxseXtpZihuKWRlbGV0ZSByW19dfXJldHVybiBhLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBfPV9fbmNjd3Bja19yZXF1aXJlX18oNTMyKTttb2R1bGUuZXhwb3J0cz1ffSkoKTsiXSwibmFtZXMiOlsiZSIsImV4cG9ydHMiLCJvbmx5Rmlyc3QiLCJyIiwiam9pbiIsIlJlZ0V4cCIsInVuZGVmaW5lZCIsIl8iLCJ0IiwicmVwbGFjZSIsIl9fbmNjd3Bja19yZXF1aXJlX18iLCJhIiwibiIsImFiIiwiX19kaXJuYW1lIiwibW9kdWxlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/lib/framework/boundary-components.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n MetadataBoundary: function() {\n return MetadataBoundary;\n },\n OutletBoundary: function() {\n return OutletBoundary;\n },\n RootLayoutBoundary: function() {\n return RootLayoutBoundary;\n },\n ViewportBoundary: function() {\n return ViewportBoundary;\n }\n});\nconst _boundaryconstants = __webpack_require__(/*! ./boundary-constants */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\n// We use a namespace object to allow us to recover the name of the function\n// at runtime even when production bundling/minification is used.\nconst NameSpace = {\n [_boundaryconstants.METADATA_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.VIEWPORT_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.OUTLET_BOUNDARY_NAME]: function({ children }) {\n return children;\n },\n [_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME]: function({ children }) {\n return children;\n }\n};\nconst MetadataBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.METADATA_BOUNDARY_NAME.slice(0)];\nconst ViewportBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.VIEWPORT_BOUNDARY_NAME.slice(0)];\nconst OutletBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.OUTLET_BOUNDARY_NAME.slice(0)];\nconst RootLayoutBoundary = // so it retains the name inferred from the namespace object\nNameSpace[_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]; //# sourceMappingURL=boundary-components.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29tcG9uZW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUErQmFBLGdCQUFnQjtlQUFoQkE7O0lBVUFDLGNBQWM7ZUFBZEE7O0lBS0FDLGtCQUFrQjtlQUFsQkE7O0lBVkFDLGdCQUFnQjtlQUFoQkE7OzsrQ0E1Qk47QUFFUCw0RUFBNEU7QUFDNUUsaUVBQWlFO0FBQ2pFLE1BQU1DLFlBQVk7SUFDaEIsQ0FBQ0MsbUJBQUFBLHNCQUFzQixDQUFDLEVBQUUsU0FBVSxFQUFFQyxRQUFRLEVBQTJCO1FBQ3ZFLE9BQU9BO0lBQ1Q7SUFDQSxDQUFDQyxtQkFBQUEsc0JBQXNCLENBQUMsRUFBRSxTQUFVLEVBQUVELFFBQVEsRUFBMkI7UUFDdkUsT0FBT0E7SUFDVDtJQUNBLENBQUNFLG1CQUFBQSxvQkFBb0IsQ0FBQyxFQUFFLFNBQVUsRUFBRUYsUUFBUSxFQUEyQjtRQUNyRSxPQUFPQTtJQUNUO0lBQ0EsQ0FBQ0csbUJBQUFBLHlCQUF5QixDQUFDLEVBQUUsU0FBVSxFQUNyQ0gsUUFBUSxFQUdUO1FBQ0MsT0FBT0E7SUFDVDtBQUNGO0FBRU8sTUFBTU4sbUJBQ1gsNERBQzREO0FBQzVESSxTQUFTLENBQUNDLG1CQUFBQSxzQkFBc0IsQ0FBQ0ssS0FBSyxDQUFDLEdBQW9DO0FBRXRFLE1BQU1QLG1CQUNYLDREQUM0RDtBQUM1REMsU0FBUyxDQUFDRyxtQkFBQUEsc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxHQUFvQztBQUV0RSxNQUFNVCxpQkFDWCw0REFDNEQ7QUFDNURHLFNBQVMsQ0FBQ0ksbUJBQUFBLG9CQUFvQixDQUFDRSxLQUFLLENBQUMsR0FBa0M7QUFFbEUsTUFBTVIscUJBQ1gsNERBQzREO0FBQzVERSxTQUFTLENBQ1BLLG1CQUFBQSx5QkFBeUIsQ0FBQ0MsS0FBSyxDQUFDLEdBQ2pDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcbGliXFxmcmFtZXdvcmtcXGJvdW5kYXJ5LWNvbXBvbmVudHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgTUVUQURBVEFfQk9VTkRBUllfTkFNRSxcbiAgVklFV1BPUlRfQk9VTkRBUllfTkFNRSxcbiAgT1VUTEVUX0JPVU5EQVJZX05BTUUsXG4gIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUUsXG59IGZyb20gJy4vYm91bmRhcnktY29uc3RhbnRzJ1xuXG4vLyBXZSB1c2UgYSBuYW1lc3BhY2Ugb2JqZWN0IHRvIGFsbG93IHVzIHRvIHJlY292ZXIgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uXG4vLyBhdCBydW50aW1lIGV2ZW4gd2hlbiBwcm9kdWN0aW9uIGJ1bmRsaW5nL21pbmlmaWNhdGlvbiBpcyB1c2VkLlxuY29uc3QgTmFtZVNwYWNlID0ge1xuICBbTUVUQURBVEFfQk9VTkRBUllfTkFNRV06IGZ1bmN0aW9uICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuXG4gIH0sXG4gIFtWSUVXUE9SVF9CT1VOREFSWV9OQU1FXTogZnVuY3Rpb24gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfSxcbiAgW09VVExFVF9CT1VOREFSWV9OQU1FXTogZnVuY3Rpb24gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfSxcbiAgW1JPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUVdOiBmdW5jdGlvbiAoe1xuICAgIGNoaWxkcmVuLFxuICB9OiB7XG4gICAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB9KSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBNZXRhZGF0YUJvdW5kYXJ5ID1cbiAgLy8gV2UgdXNlIHNsaWNlKDApIHRvIHRyaWNrIHRoZSBidW5kbGVyIGludG8gbm90IGlubGluaW5nL21pbmlmeWluZyB0aGUgZnVuY3Rpb25cbiAgLy8gc28gaXQgcmV0YWlucyB0aGUgbmFtZSBpbmZlcnJlZCBmcm9tIHRoZSBuYW1lc3BhY2Ugb2JqZWN0XG4gIE5hbWVTcGFjZVtNRVRBREFUQV9CT1VOREFSWV9OQU1FLnNsaWNlKDApIGFzIHR5cGVvZiBNRVRBREFUQV9CT1VOREFSWV9OQU1FXVxuXG5leHBvcnQgY29uc3QgVmlld3BvcnRCb3VuZGFyeSA9XG4gIC8vIFdlIHVzZSBzbGljZSgwKSB0byB0cmljayB0aGUgYnVuZGxlciBpbnRvIG5vdCBpbmxpbmluZy9taW5pZnlpbmcgdGhlIGZ1bmN0aW9uXG4gIC8vIHNvIGl0IHJldGFpbnMgdGhlIG5hbWUgaW5mZXJyZWQgZnJvbSB0aGUgbmFtZXNwYWNlIG9iamVjdFxuICBOYW1lU3BhY2VbVklFV1BPUlRfQk9VTkRBUllfTkFNRS5zbGljZSgwKSBhcyB0eXBlb2YgVklFV1BPUlRfQk9VTkRBUllfTkFNRV1cblxuZXhwb3J0IGNvbnN0IE91dGxldEJvdW5kYXJ5ID1cbiAgLy8gV2UgdXNlIHNsaWNlKDApIHRvIHRyaWNrIHRoZSBidW5kbGVyIGludG8gbm90IGlubGluaW5nL21pbmlmeWluZyB0aGUgZnVuY3Rpb25cbiAgLy8gc28gaXQgcmV0YWlucyB0aGUgbmFtZSBpbmZlcnJlZCBmcm9tIHRoZSBuYW1lc3BhY2Ugb2JqZWN0XG4gIE5hbWVTcGFjZVtPVVRMRVRfQk9VTkRBUllfTkFNRS5zbGljZSgwKSBhcyB0eXBlb2YgT1VUTEVUX0JPVU5EQVJZX05BTUVdXG5cbmV4cG9ydCBjb25zdCBSb290TGF5b3V0Qm91bmRhcnkgPVxuICAvLyBXZSB1c2Ugc2xpY2UoMCkgdG8gdHJpY2sgdGhlIGJ1bmRsZXIgaW50byBub3QgaW5saW5pbmcvbWluaWZ5aW5nIHRoZSBmdW5jdGlvblxuICAvLyBzbyBpdCByZXRhaW5zIHRoZSBuYW1lIGluZmVycmVkIGZyb20gdGhlIG5hbWVzcGFjZSBvYmplY3RcbiAgTmFtZVNwYWNlW1xuICAgIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUUuc2xpY2UoMCkgYXMgdHlwZW9mIFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUVcbiAgXVxuIl0sIm5hbWVzIjpbIk1ldGFkYXRhQm91bmRhcnkiLCJPdXRsZXRCb3VuZGFyeSIsIlJvb3RMYXlvdXRCb3VuZGFyeSIsIlZpZXdwb3J0Qm91bmRhcnkiLCJOYW1lU3BhY2UiLCJNRVRBREFUQV9CT1VOREFSWV9OQU1FIiwiY2hpbGRyZW4iLCJWSUVXUE9SVF9CT1VOREFSWV9OQU1FIiwiT1VUTEVUX0JPVU5EQVJZX05BTUUiLCJST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FIiwic2xpY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/lib/framework/boundary-constants.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n METADATA_BOUNDARY_NAME: function() {\n return METADATA_BOUNDARY_NAME;\n },\n OUTLET_BOUNDARY_NAME: function() {\n return OUTLET_BOUNDARY_NAME;\n },\n ROOT_LAYOUT_BOUNDARY_NAME: function() {\n return ROOT_LAYOUT_BOUNDARY_NAME;\n },\n VIEWPORT_BOUNDARY_NAME: function() {\n return VIEWPORT_BOUNDARY_NAME;\n }\n});\nconst METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nconst VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nconst OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nconst ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9mcmFtZXdvcmsvYm91bmRhcnktY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQUtMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxmcmFtZXdvcmtcXGJvdW5kYXJ5LWNvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgT1VUTEVUX0JPVU5EQVJZX05BTUU6IG51bGwsXG4gICAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTogbnVsbCxcbiAgICBWSUVXUE9SVF9CT1VOREFSWV9OQU1FOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIE1FVEFEQVRBX0JPVU5EQVJZX05BTUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTUVUQURBVEFfQk9VTkRBUllfTkFNRTtcbiAgICB9LFxuICAgIE9VVExFVF9CT1VOREFSWV9OQU1FOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE9VVExFVF9CT1VOREFSWV9OQU1FO1xuICAgIH0sXG4gICAgUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FO1xuICAgIH0sXG4gICAgVklFV1BPUlRfQk9VTkRBUllfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBWSUVXUE9SVF9CT1VOREFSWV9OQU1FO1xuICAgIH1cbn0pO1xuY29uc3QgTUVUQURBVEFfQk9VTkRBUllfTkFNRSA9ICdfX25leHRfbWV0YWRhdGFfYm91bmRhcnlfXyc7XG5jb25zdCBWSUVXUE9SVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF92aWV3cG9ydF9ib3VuZGFyeV9fJztcbmNvbnN0IE9VVExFVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9vdXRsZXRfYm91bmRhcnlfXyc7XG5jb25zdCBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FID0gJ19fbmV4dF9yb290X2xheW91dF9ib3VuZGFyeV9fJztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Ym91bmRhcnktY29uc3RhbnRzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/lib/is-error.js": /*!************************************************!*\ !*** ./node_modules/next/dist/lib/is-error.js ***! \************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ default: function() {\n return isError;\n },\n getProperError: function() {\n return getProperError;\n }\n});\nconst _isplainobject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js\");\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction safeStringify(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error((0, _isplainobject.isPlainObject)(err) ? safeStringify(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx1QkFBdUIsbUJBQU8sQ0FBQyxtR0FBK0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFzQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxsaWJcXGlzLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBnZXRQcm9wZXJFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICAvKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIE5leHRFcnJvci5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJpbnQgYSBtb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCBwcm9wZXJ0aWVzIGxpa2UgYGNvZGVgICYgYGRpZ2VzdGAuXG4gKi8gZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0Vycm9yO1xuICAgIH0sXG4gICAgZ2V0UHJvcGVyRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0UHJvcGVyRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfaXNwbGFpbm9iamVjdCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2lzLXBsYWluLW9iamVjdFwiKTtcbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZXJyICYmICdtZXNzYWdlJyBpbiBlcnI7XG59XG5mdW5jdGlvbiBzYWZlU3RyaW5naWZ5KG9iaikge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIChfa2V5LCB2YWx1ZSk9PntcbiAgICAgICAgLy8gSWYgdmFsdWUgaXMgYW4gb2JqZWN0IGFuZCBhbHJlYWR5IHNlZW4sIHJlcGxhY2Ugd2l0aCBcIltDaXJjdWxhcl1cIlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0UHJvcGVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKGlzRXJyb3IoZXJyKSkge1xuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgLy8gcHJvdmlkZSBiZXR0ZXIgZXJyb3IgZm9yIGNhc2Ugd2hlcmUgYHRocm93IHVuZGVmaW5lZGBcbiAgICAgICAgLy8gaXMgY2FsbGVkIGluIGRldmVsb3BtZW50XG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0FuIHVuZGVmaW5lZCBlcnJvciB3YXMgdGhyb3duLCAnICsgJ3NlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFOThcIixcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdBIG51bGwgZXJyb3Igd2FzIHRocm93biwgJyArICdzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy90aHJldy11bmRlZmluZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTMzNlwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoKDAsIF9pc3BsYWlub2JqZWN0LmlzUGxhaW5PYmplY3QpKGVycikgPyBzYWZlU3RyaW5naWZ5KGVycikgOiBlcnIgKyAnJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/is-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/lib/metadata/generate/icon-mark.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"IconMark\", ({\n enumerable: true,\n get: function() {\n return IconMark;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst IconMark = ()=>{\n if (false) {}\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"\\xabnxt-icon\\xbb\"\n });\n}; //# sourceMappingURL=icon-mark.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9tZXRhZGF0YS9nZW5lcmF0ZS9pY29uLW1hcmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs0Q0FRYUE7OztlQUFBQTs7OztBQUFOLE1BQU1BLFdBQVc7SUFDdEIsSUFBSSxLQUE2QixFQUFFLEVBRWxDO0lBQ0QscUJBQU8scUJBQUNFLFFBQUFBO1FBQUtDLE1BQUs7O0FBQ3BCIiwic291cmNlcyI6WyJEOlxcc3JjXFxsaWJcXG1ldGFkYXRhXFxnZW5lcmF0ZVxcaWNvbi1tYXJrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLy8gVGhpcyBpcyBhIGNsaWVudCBjb21wb25lbnQgdGhhdCBvbmx5IHJlbmRlcnMgZHVyaW5nIFNTUixcbi8vIGJ1dCB3aWxsIGJlIHJlcGxhY2VkIGR1cmluZyBzdHJlYW1pbmcgd2l0aCBhbiBpY29uIGluc2VydGlvbiBzY3JpcHQgdGFnLlxuLy8gV2UgZG9uJ3Qgd2FudCBpdCB0byBiZSBwcmVzZW50ZWQgYW55d2hlcmUgc28gaXQncyBvbmx5IHZpc2libGUgZHVyaW5nIHN0cmVhbWluZyxcbi8vIHJpZ2h0IGFmdGVyIHRoZSBpY29uIG1ldGEgdGFncyBzbyB0aGF0IGJyb3dzZXIgY2FuIHBpY2sgaXQgdXAgYXMgc29vbiBhcyBpdCdzIHJlbmRlcmVkLlxuLy8gTm90ZTogd2UgZG9uJ3QganVzdCBlbWl0IHRoZSBzY3JpcHQgaGVyZSBiZWNhdXNlIHdlIG9ubHkgbmVlZCB0aGUgc2NyaXB0IGlmIGl0J3Mgbm90IGluIHRoZSBoZWFkLFxuLy8gYW5kIHdlIG5lZWQgaXQgdG8gYmUgaG9pc3RhYmxlIGFsb25nc2lkZSB0aGUgb3RoZXIgbWV0YWRhdGEgYnV0IHN5bmMgc2NyaXB0cyBhcmUgbm90IGhvaXN0YWJsZS5cbmV4cG9ydCBjb25zdCBJY29uTWFyayA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gPG1ldGEgbmFtZT1cIsKrbnh0LWljb27Cu1wiIC8+XG59XG4iXSwibmFtZXMiOlsiSWNvbk1hcmsiLCJ3aW5kb3ciLCJtZXRhIiwibmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/lib/scheduler.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/lib/scheduler.js ***! \*************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n atLeastOneTask: function() {\n return atLeastOneTask;\n },\n scheduleImmediate: function() {\n return scheduleImmediate;\n },\n scheduleOnNextTick: function() {\n return scheduleOnNextTick;\n },\n waitAtLeastOneReactRenderTask: function() {\n return waitAtLeastOneReactRenderTask;\n }\n});\nconst scheduleOnNextTick = (cb)=>{\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(()=>{\n if (false) {} else {\n process.nextTick(cb);\n }\n });\n};\nconst scheduleImmediate = (cb)=>{\n if (false) {} else {\n setImmediate(cb);\n }\n};\nfunction atLeastOneTask() {\n return new Promise((resolve)=>scheduleImmediate(resolve));\n}\nfunction waitAtLeastOneReactRenderTask() {\n if (false) {} else {\n return new Promise((r)=>setImmediate(r));\n }\n}\n\n//# sourceMappingURL=scheduler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9zY2hlZHVsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFFBQVEsS0FBbUMsRUFBRSxFQUV4QyxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNOO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbGliXFxzY2hlZHVsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhdExlYXN0T25lVGFzazogbnVsbCxcbiAgICBzY2hlZHVsZUltbWVkaWF0ZTogbnVsbCxcbiAgICBzY2hlZHVsZU9uTmV4dFRpY2s6IG51bGwsXG4gICAgd2FpdEF0TGVhc3RPbmVSZWFjdFJlbmRlclRhc2s6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgYXRMZWFzdE9uZVRhc2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXRMZWFzdE9uZVRhc2s7XG4gICAgfSxcbiAgICBzY2hlZHVsZUltbWVkaWF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzY2hlZHVsZUltbWVkaWF0ZTtcbiAgICB9LFxuICAgIHNjaGVkdWxlT25OZXh0VGljazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzY2hlZHVsZU9uTmV4dFRpY2s7XG4gICAgfSxcbiAgICB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3YWl0QXRMZWFzdE9uZVJlYWN0UmVuZGVyVGFzaztcbiAgICB9XG59KTtcbmNvbnN0IHNjaGVkdWxlT25OZXh0VGljayA9IChjYik9PntcbiAgICAvLyBXZSB1c2UgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigpIGhlcmUgc28gdGhhdCB0aGUgb3BlcmF0aW9uIGlzIHNjaGVkdWxlZCBhdFxuICAgIC8vIHRoZSBlbmQgb2YgdGhlIHByb21pc2Ugam9iIHF1ZXVlLCB3ZSB0aGVuIGFkZCBpdCB0byB0aGUgbmV4dCBwcm9jZXNzIHRpY2tcbiAgICAvLyB0byBlbnN1cmUgaXQncyBldmFsdWF0ZWQgYWZ0ZXJ3YXJkcy5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2FzIGluc3BpcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRGF0YUxvYWRlciBpbnRlcmZhY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2RhdGFsb2FkZXIvYmxvYi9kMzM2YmQxNTI4MjY2NGUwYmU0YjRhNjU3Y2I3OTZmMDliYWZiYzZiL3NyYy9pbmRleC5qcyNMMjEzLUwyNTVcbiAgICAvL1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2IpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuY29uc3Qgc2NoZWR1bGVJbW1lZGlhdGUgPSAoY2IpPT57XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHNldFRpbWVvdXQoY2IsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEltbWVkaWF0ZShjYik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGF0TGVhc3RPbmVUYXNrKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PnNjaGVkdWxlSW1tZWRpYXRlKHJlc29sdmUpKTtcbn1cbmZ1bmN0aW9uIHdhaXRBdExlYXN0T25lUmVhY3RSZW5kZXJUYXNrKCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHIpPT5zZXRUaW1lb3V0KHIsIDApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHIpPT5zZXRJbW1lZGlhdGUocikpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2NoZWR1bGVyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/lib/scheduler.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/shared/console-error.js ***! \**********************************************************************/ /***/ ((module, exports) => { "use strict"; eval("// To distinguish from React error.digest, we use a different symbol here to determine if the error is from console.error or unhandled promise rejection.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createConsoleError: function() {\n return createConsoleError;\n },\n isConsoleError: function() {\n return isConsoleError;\n }\n});\nconst digestSym = Symbol.for('next.console.error.digest');\nfunction createConsoleError(message, environmentName) {\n const error = typeof message === 'string' ? Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n }) : message;\n error[digestSym] = 'NEXT_CONSOLE_ERROR';\n if (environmentName && !error.environmentName) {\n error.environmentName = environmentName;\n }\n return error;\n}\nconst isConsoleError = (error)=>{\n return error && error[digestSym] === 'NEXT_CONSOLE_ERROR';\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=console-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvc2hhcmVkL2NvbnNvbGUtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxuZXh0LWRldnRvb2xzXFxzaGFyZWRcXGNvbnNvbGUtZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGlzdGluZ3Vpc2ggZnJvbSBSZWFjdCBlcnJvci5kaWdlc3QsIHdlIHVzZSBhIGRpZmZlcmVudCBzeW1ib2wgaGVyZSB0byBkZXRlcm1pbmUgaWYgdGhlIGVycm9yIGlzIGZyb20gY29uc29sZS5lcnJvciBvciB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24uXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUNvbnNvbGVFcnJvcjogbnVsbCxcbiAgICBpc0NvbnNvbGVFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjcmVhdGVDb25zb2xlRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29uc29sZUVycm9yO1xuICAgIH0sXG4gICAgaXNDb25zb2xlRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNDb25zb2xlRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBkaWdlc3RTeW0gPSBTeW1ib2wuZm9yKCduZXh0LmNvbnNvbGUuZXJyb3IuZGlnZXN0Jyk7XG5mdW5jdGlvbiBjcmVhdGVDb25zb2xlRXJyb3IobWVzc2FnZSwgZW52aXJvbm1lbnROYW1lKSB7XG4gICAgY29uc3QgZXJyb3IgPSB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKG1lc3NhZ2UpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiRTM5NFwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSkgOiBtZXNzYWdlO1xuICAgIGVycm9yW2RpZ2VzdFN5bV0gPSAnTkVYVF9DT05TT0xFX0VSUk9SJztcbiAgICBpZiAoZW52aXJvbm1lbnROYW1lICYmICFlcnJvci5lbnZpcm9ubWVudE5hbWUpIHtcbiAgICAgICAgZXJyb3IuZW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gZXJyb3I7XG59XG5jb25zdCBpc0NvbnNvbGVFcnJvciA9IChlcnJvcik9PntcbiAgICByZXR1cm4gZXJyb3IgJiYgZXJyb3JbZGlnZXN0U3ltXSA9PT0gJ05FWFRfQ09OU09MRV9FUlJPUic7XG59O1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zb2xlLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js": /*!****************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js ***! \****************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n UNDEFINED_MARKER: function() {\n return UNDEFINED_MARKER;\n },\n patchConsoleMethod: function() {\n return patchConsoleMethod;\n }\n});\nconst UNDEFINED_MARKER = '__next_tagged_undefined';\nfunction patchConsoleMethod(methodName, wrapper) {\n const descriptor = Object.getOwnPropertyDescriptor(console, methodName);\n if (descriptor && (descriptor.configurable || descriptor.writable) && typeof descriptor.value === 'function') {\n const originalMethod = descriptor.value;\n const originalName = Object.getOwnPropertyDescriptor(originalMethod, 'name');\n const wrapperMethod = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n wrapper(methodName, ...args);\n originalMethod.apply(this, args);\n };\n if (originalName) {\n Object.defineProperty(wrapperMethod, 'name', originalName);\n }\n Object.defineProperty(console, methodName, {\n value: wrapperMethod\n });\n return ()=>{\n Object.defineProperty(console, methodName, {\n value: originalMethod,\n writable: descriptor.writable,\n configurable: descriptor.configurable\n });\n };\n }\n return ()=>{};\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=forward-logs-shared.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvc2hhcmVkL2ZvcndhcmQtbG9ncy1zaGFyZWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBR0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsYUFBYTtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxuZXh0LWRldnRvb2xzXFxzaGFyZWRcXGZvcndhcmQtbG9ncy1zaGFyZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBVTkRFRklORURfTUFSS0VSOiBudWxsLFxuICAgIHBhdGNoQ29uc29sZU1ldGhvZDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBVTkRFRklORURfTUFSS0VSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9NQVJLRVI7XG4gICAgfSxcbiAgICBwYXRjaENvbnNvbGVNZXRob2Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGF0Y2hDb25zb2xlTWV0aG9kO1xuICAgIH1cbn0pO1xuY29uc3QgVU5ERUZJTkVEX01BUktFUiA9ICdfX25leHRfdGFnZ2VkX3VuZGVmaW5lZCc7XG5mdW5jdGlvbiBwYXRjaENvbnNvbGVNZXRob2QobWV0aG9kTmFtZSwgd3JhcHBlcikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbnNvbGUsIG1ldGhvZE5hbWUpO1xuICAgIGlmIChkZXNjcmlwdG9yICYmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSB8fCBkZXNjcmlwdG9yLndyaXRhYmxlKSAmJiB0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3JpZ2luYWxNZXRob2QsICduYW1lJyk7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJNZXRob2QgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JhcHBlcihtZXRob2ROYW1lLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAob3JpZ2luYWxOYW1lKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlck1ldGhvZCwgJ25hbWUnLCBvcmlnaW5hbE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25zb2xlLCBtZXRob2ROYW1lLCB7XG4gICAgICAgICAgICB2YWx1ZTogd3JhcHBlck1ldGhvZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc29sZSwgbWV0aG9kTmFtZSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBvcmlnaW5hbE1ldGhvZCxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogZGVzY3JpcHRvci53cml0YWJsZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuICgpPT57fTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9yd2FyZC1sb2dzLXNoYXJlZC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js": /*!**********************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js ***! \**********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppDevOverlayErrorBoundary\", ({\n enumerable: true,\n get: function() {\n return AppDevOverlayErrorBoundary;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../../client/dev/runtime-error-handler */ \"(ssr)/./node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _errorboundary = __webpack_require__(/*! ../../../client/components/error-boundary */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../client/components/builtin/global-error */ \"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst _segmentexplorernode = __webpack_require__(/*! ./segment-explorer-node */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\nfunction ErroredHtml(param) {\n let { globalError: [GlobalError, globalErrorStyles], error } = param;\n if (!error) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {}),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"body\", {})\n ]\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_errorboundary.ErrorBoundary, {\n errorComponent: _globalerror.default,\n children: [\n globalErrorStyles,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(GlobalError, {\n error: error\n })\n ]\n });\n}\nclass AppDevOverlayErrorBoundary extends _react.PureComponent {\n static getDerivedStateFromError(error) {\n _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError = true;\n return {\n reactError: error\n };\n }\n componentDidCatch(err) {\n if ( true && err.message === _segmentexplorernode.SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE) {\n return;\n }\n _nextdevtools.dispatcher.openErrorOverlay();\n }\n render() {\n const { children, globalError } = this.props;\n const { reactError } = this.state;\n const fallback = /*#__PURE__*/ (0, _jsxruntime.jsx)(ErroredHtml, {\n globalError: globalError,\n error: reactError\n });\n return reactError !== null ? fallback : children;\n }\n constructor(...args){\n super(...args), this.state = {\n reactError: null\n };\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=app-dev-overlay-error-boundary.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiw4REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixpQ0FBaUMsbUJBQU8sQ0FBQyxrSEFBeUM7QUFDbEYsb0JBQW9CLG1CQUFPLENBQUMseUhBQW1CO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyxpR0FBTztBQUM5QixzQkFBc0IsbUJBQU8sQ0FBQyx3R0FBa0M7QUFDaEUsNkJBQTZCLG1CQUFPLENBQUMscUhBQTJDO0FBQ2hGLHVCQUF1QixtQkFBTyxDQUFDLHFIQUEyQztBQUMxRSw4REFBOEQsbUJBQU8sQ0FBQyxpSUFBaUQ7QUFDdkgsNkJBQTZCLG1CQUFPLENBQUMsb0hBQXlCO0FBQzlEO0FBQ0EsVUFBVSx1REFBdUQ7QUFDakU7QUFDQTtBQUNBO0FBQ0EsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQXNDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isd0JBQXdCO0FBQ3hDLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxuZXh0LWRldnRvb2xzXFx1c2Vyc3BhY2VcXGFwcFxcYXBwLWRldi1vdmVybGF5LWVycm9yLWJvdW5kYXJ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnlcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5O1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9qc3hydW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xuY29uc3QgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuY29uc3QgX25leHRkZXZ0b29scyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29sc1wiKTtcbmNvbnN0IF9ydW50aW1lZXJyb3JoYW5kbGVyID0gcmVxdWlyZShcIi4uLy4uLy4uL2NsaWVudC9kZXYvcnVudGltZS1lcnJvci1oYW5kbGVyXCIpO1xuY29uc3QgX2Vycm9yYm91bmRhcnkgPSByZXF1aXJlKFwiLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIik7XG5jb25zdCBfZ2xvYmFsZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvclwiKSk7XG5jb25zdCBfc2VnbWVudGV4cGxvcmVybm9kZSA9IHJlcXVpcmUoXCIuL3NlZ21lbnQtZXhwbG9yZXItbm9kZVwiKTtcbmZ1bmN0aW9uIEVycm9yZWRIdG1sKHBhcmFtKSB7XG4gICAgbGV0IHsgZ2xvYmFsRXJyb3I6IFtHbG9iYWxFcnJvciwgZ2xvYmFsRXJyb3JTdHlsZXNdLCBlcnJvciB9ID0gcGFyYW07XG4gICAgaWYgKCFlcnJvcikge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4cykoXCJodG1sXCIsIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShcImhlYWRcIiwge30pLFxuICAgICAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoXCJib2R5XCIsIHt9KVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeHMpKF9lcnJvcmJvdW5kYXJ5LkVycm9yQm91bmRhcnksIHtcbiAgICAgICAgZXJyb3JDb21wb25lbnQ6IF9nbG9iYWxlcnJvci5kZWZhdWx0LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgZ2xvYmFsRXJyb3JTdHlsZXMsXG4gICAgICAgICAgICAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKEdsb2JhbEVycm9yLCB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgfSk7XG59XG5jbGFzcyBBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeSBleHRlbmRzIF9yZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSB7XG4gICAgICAgIF9ydW50aW1lZXJyb3JoYW5kbGVyLlJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlYWN0RXJyb3I6IGVycm9yXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbXBvbmVudERpZENhdGNoKGVycikge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgZXJyLm1lc3NhZ2UgPT09IF9zZWdtZW50ZXhwbG9yZXJub2RlLlNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfbmV4dGRldnRvb2xzLmRpc3BhdGNoZXIub3BlbkVycm9yT3ZlcmxheSgpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIGdsb2JhbEVycm9yIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHJlYWN0RXJyb3IgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrID0gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShFcnJvcmVkSHRtbCwge1xuICAgICAgICAgICAgZ2xvYmFsRXJyb3I6IGdsb2JhbEVycm9yLFxuICAgICAgICAgICAgZXJyb3I6IHJlYWN0RXJyb3JcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZWFjdEVycm9yICE9PSBudWxsID8gZmFsbGJhY2sgOiBjaGlsZHJlbjtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoLi4uYXJncyl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3MpLCB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcmVhY3RFcnJvcjogbnVsbFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLWRldi1vdmVybGF5LWVycm9yLWJvdW5kYXJ5LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js": /*!*********************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReplaySsrOnlyErrors\", ({\n enumerable: true,\n get: function() {\n return ReplaySsrOnlyErrors;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _useerrorhandler = __webpack_require__(/*! ./use-error-handler */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../../../client/components/is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _constants = __webpack_require__(/*! ../../../../shared/lib/errors/constants */ \"(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js\");\nfunction readSsrError() {\n if (typeof document === 'undefined') {\n return null;\n }\n const ssrErrorTemplateTag = document.querySelector('template[data-next-error-message]');\n if (ssrErrorTemplateTag) {\n const message = ssrErrorTemplateTag.getAttribute('data-next-error-message');\n const stack = ssrErrorTemplateTag.getAttribute('data-next-error-stack');\n const digest = ssrErrorTemplateTag.getAttribute('data-next-error-digest');\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n if (digest) {\n ;\n error.digest = digest;\n }\n // Skip Next.js SSR'd internal errors that which will be handled by the error boundaries.\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n return null;\n }\n error.stack = stack || '';\n return error;\n }\n return null;\n}\nfunction ReplaySsrOnlyErrors(param) {\n let { onBlockingError } = param;\n if (true) {\n // Need to read during render. The attributes will be gone after commit.\n const ssrError = readSsrError();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n if (ssrError !== null) {\n // TODO(veil): Include original Owner Stack (NDX-905)\n // TODO(veil): Mark as recoverable error\n // TODO(veil): console.error\n (0, _useerrorhandler.handleClientError)(ssrError);\n // If it's missing root tags, we can't recover, make it blocking.\n if (ssrError.digest === _constants.MISSING_ROOT_TAGS_ERROR) {\n onBlockingError();\n }\n }\n }, [\n ssrError,\n onBlockingError\n ]);\n }\n return null;\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=replay-ssr-only-errors.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvcmVwbGF5LXNzci1vbmx5LWVycm9ycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHVEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLGVBQWUsbUJBQU8sQ0FBQyxpR0FBTztBQUM5Qix5QkFBeUIsbUJBQU8sQ0FBQyxtSEFBcUI7QUFDdEQsMkJBQTJCLG1CQUFPLENBQUMsb0lBQW9EO0FBQ3ZGLG1CQUFtQixtQkFBTyxDQUFDLDhHQUF5QztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxrQkFBa0I7QUFDNUIsUUFBUSxJQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCxhQUFhO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbmV4dC1kZXZ0b29sc1xcdXNlcnNwYWNlXFxhcHBcXGVycm9yc1xccmVwbGF5LXNzci1vbmx5LWVycm9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcGxheVNzck9ubHlFcnJvcnNcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJlcGxheVNzck9ubHlFcnJvcnM7XG4gICAgfVxufSk7XG5jb25zdCBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5jb25zdCBfdXNlZXJyb3JoYW5kbGVyID0gcmVxdWlyZShcIi4vdXNlLWVycm9yLWhhbmRsZXJcIik7XG5jb25zdCBfaXNuZXh0cm91dGVyZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3JcIik7XG5jb25zdCBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3NoYXJlZC9saWIvZXJyb3JzL2NvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIHJlYWRTc3JFcnJvcigpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc3NyRXJyb3JUZW1wbGF0ZVRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlW2RhdGEtbmV4dC1lcnJvci1tZXNzYWdlXScpO1xuICAgIGlmIChzc3JFcnJvclRlbXBsYXRlVGFnKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBzc3JFcnJvclRlbXBsYXRlVGFnLmdldEF0dHJpYnV0ZSgnZGF0YS1uZXh0LWVycm9yLW1lc3NhZ2UnKTtcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBzc3JFcnJvclRlbXBsYXRlVGFnLmdldEF0dHJpYnV0ZSgnZGF0YS1uZXh0LWVycm9yLXN0YWNrJyk7XG4gICAgICAgIGNvbnN0IGRpZ2VzdCA9IHNzckVycm9yVGVtcGxhdGVUYWcuZ2V0QXR0cmlidXRlKCdkYXRhLW5leHQtZXJyb3ItZGlnZXN0Jyk7XG4gICAgICAgIGNvbnN0IGVycm9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihtZXNzYWdlKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRpZ2VzdCkge1xuICAgICAgICAgICAgO1xuICAgICAgICAgICAgZXJyb3IuZGlnZXN0ID0gZGlnZXN0O1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgTmV4dC5qcyBTU1InZCBpbnRlcm5hbCBlcnJvcnMgdGhhdCB3aGljaCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGVycm9yIGJvdW5kYXJpZXMuXG4gICAgICAgIGlmICgoMCwgX2lzbmV4dHJvdXRlcmVycm9yLmlzTmV4dFJvdXRlckVycm9yKShlcnJvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2sgfHwgJyc7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBSZXBsYXlTc3JPbmx5RXJyb3JzKHBhcmFtKSB7XG4gICAgbGV0IHsgb25CbG9ja2luZ0Vycm9yIH0gPSBwYXJhbTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBOZWVkIHRvIHJlYWQgZHVyaW5nIHJlbmRlci4gVGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBnb25lIGFmdGVyIGNvbW1pdC5cbiAgICAgICAgY29uc3Qgc3NyRXJyb3IgPSByZWFkU3NyRXJyb3IoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICgwLCBfcmVhY3QudXNlRWZmZWN0KSgoKT0+e1xuICAgICAgICAgICAgaWYgKHNzckVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyh2ZWlsKTogSW5jbHVkZSBvcmlnaW5hbCBPd25lciBTdGFjayAoTkRYLTkwNSlcbiAgICAgICAgICAgICAgICAvLyBUT0RPKHZlaWwpOiBNYXJrIGFzIHJlY292ZXJhYmxlIGVycm9yXG4gICAgICAgICAgICAgICAgLy8gVE9ETyh2ZWlsKTogY29uc29sZS5lcnJvclxuICAgICAgICAgICAgICAgICgwLCBfdXNlZXJyb3JoYW5kbGVyLmhhbmRsZUNsaWVudEVycm9yKShzc3JFcnJvcik7XG4gICAgICAgICAgICAgICAgLy8gSWYgaXQncyBtaXNzaW5nIHJvb3QgdGFncywgd2UgY2FuJ3QgcmVjb3ZlciwgbWFrZSBpdCBibG9ja2luZy5cbiAgICAgICAgICAgICAgICBpZiAoc3NyRXJyb3IuZGlnZXN0ID09PSBfY29uc3RhbnRzLk1JU1NJTkdfUk9PVF9UQUdTX0VSUk9SKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uQmxvY2tpbmdFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW1xuICAgICAgICAgICAgc3NyRXJyb3IsXG4gICAgICAgICAgICBvbkJsb2NraW5nRXJyb3JcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXBsYXktc3NyLW9ubHktZXJyb3JzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js": /*!*************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js ***! \*************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n coerceError: function() {\n return coerceError;\n },\n decorateDevError: function() {\n return decorateDevError;\n },\n getOwnerStack: function() {\n return getOwnerStack;\n },\n setOwnerStack: function() {\n return setOwnerStack;\n },\n setOwnerStackIfAvailable: function() {\n return setOwnerStackIfAvailable;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nconst ownerStacks = new WeakMap();\nfunction getOwnerStack(error) {\n return ownerStacks.get(error);\n}\nfunction setOwnerStack(error, stack) {\n ownerStacks.set(error, stack);\n}\nfunction coerceError(value) {\n return (0, _iserror.default)(value) ? value : Object.defineProperty(new Error('' + value), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\nfunction setOwnerStackIfAvailable(error) {\n // React 18 and prod does not have `captureOwnerStack`\n if ('captureOwnerStack' in _react.default) {\n setOwnerStack(error, _react.default.captureOwnerStack());\n }\n}\nfunction decorateDevError(thrownValue) {\n const error = coerceError(thrownValue);\n setOwnerStackIfAvailable(error);\n return error;\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=stitched-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvc3RpdGNoZWQtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUNBQWlDLG1CQUFPLENBQUMsa0hBQXlDO0FBQ2xGLHdEQUF3RCxtQkFBTyxDQUFDLGlHQUFPO0FBQ3ZFLDBEQUEwRCxtQkFBTyxDQUFDLGdGQUEwQjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELGFBQWE7QUFDdEU7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxuZXh0LWRldnRvb2xzXFx1c2Vyc3BhY2VcXGFwcFxcZXJyb3JzXFxzdGl0Y2hlZC1lcnJvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNvZXJjZUVycm9yOiBudWxsLFxuICAgIGRlY29yYXRlRGV2RXJyb3I6IG51bGwsXG4gICAgZ2V0T3duZXJTdGFjazogbnVsbCxcbiAgICBzZXRPd25lclN0YWNrOiBudWxsLFxuICAgIHNldE93bmVyU3RhY2tJZkF2YWlsYWJsZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBjb2VyY2VFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb2VyY2VFcnJvcjtcbiAgICB9LFxuICAgIGRlY29yYXRlRGV2RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGVjb3JhdGVEZXZFcnJvcjtcbiAgICB9LFxuICAgIGdldE93bmVyU3RhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0T3duZXJTdGFjaztcbiAgICB9LFxuICAgIHNldE93bmVyU3RhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2V0T3duZXJTdGFjaztcbiAgICB9LFxuICAgIHNldE93bmVyU3RhY2tJZkF2YWlsYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZXRPd25lclN0YWNrSWZBdmFpbGFibGU7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX2lzZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9saWIvaXMtZXJyb3JcIikpO1xuY29uc3Qgb3duZXJTdGFja3MgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gZ2V0T3duZXJTdGFjayhlcnJvcikge1xuICAgIHJldHVybiBvd25lclN0YWNrcy5nZXQoZXJyb3IpO1xufVxuZnVuY3Rpb24gc2V0T3duZXJTdGFjayhlcnJvciwgc3RhY2spIHtcbiAgICBvd25lclN0YWNrcy5zZXQoZXJyb3IsIHN0YWNrKTtcbn1cbmZ1bmN0aW9uIGNvZXJjZUVycm9yKHZhbHVlKSB7XG4gICAgcmV0dXJuICgwLCBfaXNlcnJvci5kZWZhdWx0KSh2YWx1ZSkgPyB2YWx1ZSA6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJycgKyB2YWx1ZSksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMzk0XCIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHNldE93bmVyU3RhY2tJZkF2YWlsYWJsZShlcnJvcikge1xuICAgIC8vIFJlYWN0IDE4IGFuZCBwcm9kIGRvZXMgbm90IGhhdmUgYGNhcHR1cmVPd25lclN0YWNrYFxuICAgIGlmICgnY2FwdHVyZU93bmVyU3RhY2snIGluIF9yZWFjdC5kZWZhdWx0KSB7XG4gICAgICAgIHNldE93bmVyU3RhY2soZXJyb3IsIF9yZWFjdC5kZWZhdWx0LmNhcHR1cmVPd25lclN0YWNrKCkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRlY29yYXRlRGV2RXJyb3IodGhyb3duVmFsdWUpIHtcbiAgICBjb25zdCBlcnJvciA9IGNvZXJjZUVycm9yKHRocm93blZhbHVlKTtcbiAgICBzZXRPd25lclN0YWNrSWZBdmFpbGFibGUoZXJyb3IpO1xuICAgIHJldHVybiBlcnJvcjtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RpdGNoZWQtZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js": /*!****************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js ***! \****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientError: function() {\n return handleClientError;\n },\n handleConsoleError: function() {\n return handleConsoleError;\n },\n handleGlobalErrors: function() {\n return handleGlobalErrors;\n },\n useErrorHandler: function() {\n return useErrorHandler;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../../../../client/components/is-next-router-error */ \"(ssr)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _console = __webpack_require__(/*! ../../../../client/lib/console */ \"(ssr)/./node_modules/next/dist/client/lib/console.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../lib/is-error */ \"(ssr)/./node_modules/next/dist/lib/is-error.js\"));\nconst _consoleerror = __webpack_require__(/*! ../../../shared/console-error */ \"(ssr)/./node_modules/next/dist/next-devtools/shared/console-error.js\");\nconst _stitchederror = __webpack_require__(/*! ./stitched-error */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\nconst _forwardlogs = __webpack_require__(/*! ../forward-logs */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\");\nconst queueMicroTask = globalThis.queueMicrotask || ((cb)=>Promise.resolve().then(cb));\nconst errorQueue = [];\nconst errorHandlers = [];\nconst rejectionQueue = [];\nconst rejectionHandlers = [];\nfunction handleConsoleError(originError, consoleErrorArgs) {\n let error;\n const { environmentName } = (0, _console.parseConsoleArgs)(consoleErrorArgs);\n if ((0, _iserror.default)(originError)) {\n error = (0, _consoleerror.createConsoleError)(originError, environmentName);\n } else {\n error = (0, _consoleerror.createConsoleError)((0, _console.formatConsoleArgs)(consoleErrorArgs), environmentName);\n }\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n errorQueue.push(error);\n for (const handler of errorHandlers){\n // Delayed the error being passed to React Dev Overlay,\n // avoid the state being synchronously updated in the component.\n queueMicroTask(()=>{\n handler(error);\n });\n }\n}\nfunction handleClientError(error) {\n errorQueue.push(error);\n for (const handler of errorHandlers){\n // Delayed the error being passed to React Dev Overlay,\n // avoid the state being synchronously updated in the component.\n queueMicroTask(()=>{\n handler(error);\n });\n }\n}\nfunction useErrorHandler(handleOnUnhandledError, handleOnUnhandledRejection) {\n (0, _react.useEffect)(()=>{\n // Handle queued errors.\n errorQueue.forEach(handleOnUnhandledError);\n rejectionQueue.forEach(handleOnUnhandledRejection);\n // Listen to new errors.\n errorHandlers.push(handleOnUnhandledError);\n rejectionHandlers.push(handleOnUnhandledRejection);\n return ()=>{\n // Remove listeners.\n errorHandlers.splice(errorHandlers.indexOf(handleOnUnhandledError), 1);\n rejectionHandlers.splice(rejectionHandlers.indexOf(handleOnUnhandledRejection), 1);\n // Reset error queues.\n errorQueue.splice(0, errorQueue.length);\n rejectionQueue.splice(0, rejectionQueue.length);\n };\n }, [\n handleOnUnhandledError,\n handleOnUnhandledRejection\n ]);\n}\nfunction onUnhandledError(event) {\n const thrownValue = event.error;\n if ((0, _isnextroutererror.isNextRouterError)(thrownValue)) {\n event.preventDefault();\n return false;\n }\n // When there's an error property present, we log the error to error overlay.\n // Otherwise we don't do anything as it's not logging in the console either.\n if (thrownValue) {\n const error = (0, _stitchederror.coerceError)(thrownValue);\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n handleClientError(error);\n if (_forwardlogs.isTerminalLoggingEnabled) {\n (0, _forwardlogs.forwardUnhandledError)(error);\n }\n }\n}\nfunction onUnhandledRejection(ev) {\n const reason = ev == null ? void 0 : ev.reason;\n if ((0, _isnextroutererror.isNextRouterError)(reason)) {\n ev.preventDefault();\n return;\n }\n const error = (0, _stitchederror.coerceError)(reason);\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n rejectionQueue.push(error);\n for (const handler of rejectionHandlers){\n handler(error);\n }\n if (_forwardlogs.isTerminalLoggingEnabled) {\n (0, _forwardlogs.logUnhandledRejection)(reason);\n }\n}\nfunction handleGlobalErrors() {\n if (typeof window !== 'undefined') {\n try {\n // Increase the number of stack frames on the client\n Error.stackTraceLimit = 50;\n } catch (e) {}\n window.addEventListener('error', onUnhandledError);\n window.addEventListener('unhandledrejection', onUnhandledRejection);\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-error-handler.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWVycm9yLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBS0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlDQUFpQyxtQkFBTyxDQUFDLGtIQUF5QztBQUNsRixlQUFlLG1CQUFPLENBQUMsaUdBQU87QUFDOUIsMkJBQTJCLG1CQUFPLENBQUMsb0lBQW9EO0FBQ3ZGLGlCQUFpQixtQkFBTyxDQUFDLDRGQUFnQztBQUN6RCwwREFBMEQsbUJBQU8sQ0FBQyxnRkFBMEI7QUFDNUYsc0JBQXNCLG1CQUFPLENBQUMsMkdBQStCO0FBQzdELHVCQUF1QixtQkFBTyxDQUFDLDZHQUFrQjtBQUNqRCxxQkFBcUIsbUJBQU8sQ0FBQyxtR0FBaUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtCQUFrQjtBQUM5QjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCxhQUFhO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbmV4dC1kZXZ0b29sc1xcdXNlcnNwYWNlXFxhcHBcXGVycm9yc1xcdXNlLWVycm9yLWhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBoYW5kbGVDbGllbnRFcnJvcjogbnVsbCxcbiAgICBoYW5kbGVDb25zb2xlRXJyb3I6IG51bGwsXG4gICAgaGFuZGxlR2xvYmFsRXJyb3JzOiBudWxsLFxuICAgIHVzZUVycm9ySGFuZGxlcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBoYW5kbGVDbGllbnRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVDbGllbnRFcnJvcjtcbiAgICB9LFxuICAgIGhhbmRsZUNvbnNvbGVFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVDb25zb2xlRXJyb3I7XG4gICAgfSxcbiAgICBoYW5kbGVHbG9iYWxFcnJvcnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFuZGxlR2xvYmFsRXJyb3JzO1xuICAgIH0sXG4gICAgdXNlRXJyb3JIYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHVzZUVycm9ySGFuZGxlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5jb25zdCBfaXNuZXh0cm91dGVyZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3JcIik7XG5jb25zdCBfY29uc29sZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9jbGllbnQvbGliL2NvbnNvbGVcIik7XG5jb25zdCBfaXNlcnJvciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uLy4uLy4uLy4uL2xpYi9pcy1lcnJvclwiKSk7XG5jb25zdCBfY29uc29sZWVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uL3NoYXJlZC9jb25zb2xlLWVycm9yXCIpO1xuY29uc3QgX3N0aXRjaGVkZXJyb3IgPSByZXF1aXJlKFwiLi9zdGl0Y2hlZC1lcnJvclwiKTtcbmNvbnN0IF9mb3J3YXJkbG9ncyA9IHJlcXVpcmUoXCIuLi9mb3J3YXJkLWxvZ3NcIik7XG5jb25zdCBxdWV1ZU1pY3JvVGFzayA9IGdsb2JhbFRoaXMucXVldWVNaWNyb3Rhc2sgfHwgKChjYik9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oY2IpKTtcbmNvbnN0IGVycm9yUXVldWUgPSBbXTtcbmNvbnN0IGVycm9ySGFuZGxlcnMgPSBbXTtcbmNvbnN0IHJlamVjdGlvblF1ZXVlID0gW107XG5jb25zdCByZWplY3Rpb25IYW5kbGVycyA9IFtdO1xuZnVuY3Rpb24gaGFuZGxlQ29uc29sZUVycm9yKG9yaWdpbkVycm9yLCBjb25zb2xlRXJyb3JBcmdzKSB7XG4gICAgbGV0IGVycm9yO1xuICAgIGNvbnN0IHsgZW52aXJvbm1lbnROYW1lIH0gPSAoMCwgX2NvbnNvbGUucGFyc2VDb25zb2xlQXJncykoY29uc29sZUVycm9yQXJncyk7XG4gICAgaWYgKCgwLCBfaXNlcnJvci5kZWZhdWx0KShvcmlnaW5FcnJvcikpIHtcbiAgICAgICAgZXJyb3IgPSAoMCwgX2NvbnNvbGVlcnJvci5jcmVhdGVDb25zb2xlRXJyb3IpKG9yaWdpbkVycm9yLCBlbnZpcm9ubWVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yID0gKDAsIF9jb25zb2xlZXJyb3IuY3JlYXRlQ29uc29sZUVycm9yKSgoMCwgX2NvbnNvbGUuZm9ybWF0Q29uc29sZUFyZ3MpKGNvbnNvbGVFcnJvckFyZ3MpLCBlbnZpcm9ubWVudE5hbWUpO1xuICAgIH1cbiAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgZXJyb3JRdWV1ZS5wdXNoKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgZXJyb3JIYW5kbGVycyl7XG4gICAgICAgIC8vIERlbGF5ZWQgdGhlIGVycm9yIGJlaW5nIHBhc3NlZCB0byBSZWFjdCBEZXYgT3ZlcmxheSxcbiAgICAgICAgLy8gYXZvaWQgdGhlIHN0YXRlIGJlaW5nIHN5bmNocm9ub3VzbHkgdXBkYXRlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAgICBxdWV1ZU1pY3JvVGFzaygoKT0+e1xuICAgICAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUNsaWVudEVycm9yKGVycm9yKSB7XG4gICAgZXJyb3JRdWV1ZS5wdXNoKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgZXJyb3JIYW5kbGVycyl7XG4gICAgICAgIC8vIERlbGF5ZWQgdGhlIGVycm9yIGJlaW5nIHBhc3NlZCB0byBSZWFjdCBEZXYgT3ZlcmxheSxcbiAgICAgICAgLy8gYXZvaWQgdGhlIHN0YXRlIGJlaW5nIHN5bmNocm9ub3VzbHkgdXBkYXRlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAgICBxdWV1ZU1pY3JvVGFzaygoKT0+e1xuICAgICAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHVzZUVycm9ySGFuZGxlcihoYW5kbGVPblVuaGFuZGxlZEVycm9yLCBoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbikge1xuICAgICgwLCBfcmVhY3QudXNlRWZmZWN0KSgoKT0+e1xuICAgICAgICAvLyBIYW5kbGUgcXVldWVkIGVycm9ycy5cbiAgICAgICAgZXJyb3JRdWV1ZS5mb3JFYWNoKGhhbmRsZU9uVW5oYW5kbGVkRXJyb3IpO1xuICAgICAgICByZWplY3Rpb25RdWV1ZS5mb3JFYWNoKGhhbmRsZU9uVW5oYW5kbGVkUmVqZWN0aW9uKTtcbiAgICAgICAgLy8gTGlzdGVuIHRvIG5ldyBlcnJvcnMuXG4gICAgICAgIGVycm9ySGFuZGxlcnMucHVzaChoYW5kbGVPblVuaGFuZGxlZEVycm9yKTtcbiAgICAgICAgcmVqZWN0aW9uSGFuZGxlcnMucHVzaChoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbik7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgLy8gUmVtb3ZlIGxpc3RlbmVycy5cbiAgICAgICAgICAgIGVycm9ySGFuZGxlcnMuc3BsaWNlKGVycm9ySGFuZGxlcnMuaW5kZXhPZihoYW5kbGVPblVuaGFuZGxlZEVycm9yKSwgMSk7XG4gICAgICAgICAgICByZWplY3Rpb25IYW5kbGVycy5zcGxpY2UocmVqZWN0aW9uSGFuZGxlcnMuaW5kZXhPZihoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvbiksIDEpO1xuICAgICAgICAgICAgLy8gUmVzZXQgZXJyb3IgcXVldWVzLlxuICAgICAgICAgICAgZXJyb3JRdWV1ZS5zcGxpY2UoMCwgZXJyb3JRdWV1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgcmVqZWN0aW9uUXVldWUuc3BsaWNlKDAsIHJlamVjdGlvblF1ZXVlLmxlbmd0aCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVPblVuaGFuZGxlZEVycm9yLFxuICAgICAgICBoYW5kbGVPblVuaGFuZGxlZFJlamVjdGlvblxuICAgIF0pO1xufVxuZnVuY3Rpb24gb25VbmhhbmRsZWRFcnJvcihldmVudCkge1xuICAgIGNvbnN0IHRocm93blZhbHVlID0gZXZlbnQuZXJyb3I7XG4gICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKHRocm93blZhbHVlKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFdoZW4gdGhlcmUncyBhbiBlcnJvciBwcm9wZXJ0eSBwcmVzZW50LCB3ZSBsb2cgdGhlIGVycm9yIHRvIGVycm9yIG92ZXJsYXkuXG4gICAgLy8gT3RoZXJ3aXNlIHdlIGRvbid0IGRvIGFueXRoaW5nIGFzIGl0J3Mgbm90IGxvZ2dpbmcgaW4gdGhlIGNvbnNvbGUgZWl0aGVyLlxuICAgIGlmICh0aHJvd25WYWx1ZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9ICgwLCBfc3RpdGNoZWRlcnJvci5jb2VyY2VFcnJvcikodGhyb3duVmFsdWUpO1xuICAgICAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgICAgIGhhbmRsZUNsaWVudEVycm9yKGVycm9yKTtcbiAgICAgICAgaWYgKF9mb3J3YXJkbG9ncy5pc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgICgwLCBfZm9yd2FyZGxvZ3MuZm9yd2FyZFVuaGFuZGxlZEVycm9yKShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBvblVuaGFuZGxlZFJlamVjdGlvbihldikge1xuICAgIGNvbnN0IHJlYXNvbiA9IGV2ID09IG51bGwgPyB2b2lkIDAgOiBldi5yZWFzb247XG4gICAgaWYgKCgwLCBfaXNuZXh0cm91dGVyZXJyb3IuaXNOZXh0Um91dGVyRXJyb3IpKHJlYXNvbikpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9ICgwLCBfc3RpdGNoZWRlcnJvci5jb2VyY2VFcnJvcikocmVhc29uKTtcbiAgICAoMCwgX3N0aXRjaGVkZXJyb3Iuc2V0T3duZXJTdGFja0lmQXZhaWxhYmxlKShlcnJvcik7XG4gICAgcmVqZWN0aW9uUXVldWUucHVzaChlcnJvcik7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHJlamVjdGlvbkhhbmRsZXJzKXtcbiAgICAgICAgaGFuZGxlcihlcnJvcik7XG4gICAgfVxuICAgIGlmIChfZm9yd2FyZGxvZ3MuaXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgICgwLCBfZm9yd2FyZGxvZ3MubG9nVW5oYW5kbGVkUmVqZWN0aW9uKShyZWFzb24pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUdsb2JhbEVycm9ycygpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEluY3JlYXNlIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIG9uIHRoZSBjbGllbnRcbiAgICAgICAgICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDUwO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvblVuaGFuZGxlZEVycm9yKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIG9uVW5oYW5kbGVkUmVqZWN0aW9uKTtcbiAgICB9XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZS1lcnJvci1oYW5kbGVyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js": /*!**********************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js ***! \**********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useForwardConsoleLog\", ({\n enumerable: true,\n get: function() {\n return useForwardConsoleLog;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _forwardlogs = __webpack_require__(/*! ../forward-logs */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\");\nconst useForwardConsoleLog = (socketRef)=>{\n (0, _react.useEffect)(()=>{\n if (!_forwardlogs.isTerminalLoggingEnabled) {\n return;\n }\n const socket = socketRef.current;\n if (!socket) {\n return;\n }\n const onOpen = ()=>{\n _forwardlogs.logQueue.onSocketReady(socket);\n };\n socket.addEventListener('open', onOpen);\n return ()=>{\n socket.removeEventListener('open', onOpen);\n };\n }, [\n socketRef\n ]);\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-forward-console-log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWZvcndhcmQtY29uc29sZS1sb2cuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRix3REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixlQUFlLG1CQUFPLENBQUMsaUdBQU87QUFDOUIscUJBQXFCLG1CQUFPLENBQUMsbUdBQWlCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCxhQUFhO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcbmV4dC1kZXZ0b29sc1xcdXNlcnNwYWNlXFxhcHBcXGVycm9yc1xcdXNlLWZvcndhcmQtY29uc29sZS1sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1c2VGb3J3YXJkQ29uc29sZUxvZ1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdXNlRm9yd2FyZENvbnNvbGVMb2c7XG4gICAgfVxufSk7XG5jb25zdCBfcmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIik7XG5jb25zdCBfZm9yd2FyZGxvZ3MgPSByZXF1aXJlKFwiLi4vZm9yd2FyZC1sb2dzXCIpO1xuY29uc3QgdXNlRm9yd2FyZENvbnNvbGVMb2cgPSAoc29ja2V0UmVmKT0+e1xuICAgICgwLCBfcmVhY3QudXNlRWZmZWN0KSgoKT0+e1xuICAgICAgICBpZiAoIV9mb3J3YXJkbG9ncy5pc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb2NrZXQgPSBzb2NrZXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFzb2NrZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbk9wZW4gPSAoKT0+e1xuICAgICAgICAgICAgX2ZvcndhcmRsb2dzLmxvZ1F1ZXVlLm9uU29ja2V0UmVhZHkoc29ja2V0KTtcbiAgICAgICAgfTtcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCBvbk9wZW4pO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIHNvY2tldC5yZW1vdmVFdmVudExpc3RlbmVyKCdvcGVuJywgb25PcGVuKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIHNvY2tldFJlZlxuICAgIF0pO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlLWZvcndhcmQtY29uc29sZS1sb2cuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js": /*!****************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js ***! \****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PROMISE_MARKER: function() {\n return PROMISE_MARKER;\n },\n UNAVAILABLE_MARKER: function() {\n return UNAVAILABLE_MARKER;\n },\n forwardErrorLog: function() {\n return forwardErrorLog;\n },\n forwardUnhandledError: function() {\n return forwardUnhandledError;\n },\n initializeDebugLogForwarding: function() {\n return initializeDebugLogForwarding;\n },\n isTerminalLoggingEnabled: function() {\n return isTerminalLoggingEnabled;\n },\n logQueue: function() {\n return logQueue;\n },\n logStringify: function() {\n return logStringify;\n },\n logUnhandledRejection: function() {\n return logUnhandledRejection;\n },\n preLogSerializationClone: function() {\n return preLogSerializationClone;\n }\n});\nconst _safestablestringify = __webpack_require__(/*! next/dist/compiled/safe-stable-stringify */ \"(ssr)/./node_modules/next/dist/compiled/safe-stable-stringify/index.js\");\nconst _stitchederror = __webpack_require__(/*! ./errors/stitched-error */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\nconst _errorsource = __webpack_require__(/*! ../../../shared/lib/error-source */ \"(ssr)/./node_modules/next/dist/shared/lib/error-source.js\");\nconst _terminalloggingconfig = __webpack_require__(/*! ./terminal-logging-config */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js\");\nconst _forwardlogsshared = __webpack_require__(/*! ../../shared/forward-logs-shared */ \"(ssr)/./node_modules/next/dist/next-devtools/shared/forward-logs-shared.js\");\nconst terminalLoggingConfig = (0, _terminalloggingconfig.getTerminalLoggingConfig)();\nconst PROMISE_MARKER = 'Promise {}';\nconst UNAVAILABLE_MARKER = '[Unable to view]';\nconst maximumDepth = typeof terminalLoggingConfig === 'object' && terminalLoggingConfig.depthLimit ? terminalLoggingConfig.depthLimit : 5;\nconst maximumBreadth = typeof terminalLoggingConfig === 'object' && terminalLoggingConfig.edgeLimit ? terminalLoggingConfig.edgeLimit : 100;\nconst stringify = (0, _safestablestringify.configure)({\n maximumDepth,\n maximumBreadth\n});\nconst isTerminalLoggingEnabled = (0, _terminalloggingconfig.getIsTerminalLoggingEnabled)();\nconst methods = [\n 'log',\n 'info',\n 'warn',\n 'debug',\n 'table',\n 'assert',\n 'dir',\n 'dirxml',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'trace'\n];\nfunction preLogSerializationClone(value, seen) {\n if (seen === void 0) seen = new WeakMap();\n if (value === undefined) return _forwardlogsshared.UNDEFINED_MARKER;\n if (value === null || typeof value !== 'object') return value;\n if (seen.has(value)) return seen.get(value);\n try {\n Object.keys(value);\n } catch (e) {\n return UNAVAILABLE_MARKER;\n }\n try {\n if (typeof value.then === 'function') return PROMISE_MARKER;\n } catch (e) {\n return UNAVAILABLE_MARKER;\n }\n if (Array.isArray(value)) {\n const out = [];\n seen.set(value, out);\n for (const item of value){\n try {\n out.push(preLogSerializationClone(item, seen));\n } catch (e) {\n out.push(UNAVAILABLE_MARKER);\n }\n }\n return out;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto === Object.prototype || proto === null) {\n const out = {};\n seen.set(value, out);\n for (const key of Object.keys(value)){\n try {\n out[key] = preLogSerializationClone(value[key], seen);\n } catch (e) {\n out[key] = UNAVAILABLE_MARKER;\n }\n }\n return out;\n }\n return Object.prototype.toString.call(value);\n}\nconst logStringify = (data)=>{\n try {\n const result = stringify(data);\n return result != null ? result : '\"' + UNAVAILABLE_MARKER + '\"';\n } catch (e) {\n return '\"' + UNAVAILABLE_MARKER + '\"';\n }\n};\nconst afterThisFrame = (cb)=>{\n let timeout;\n const rafId = requestAnimationFrame(()=>{\n timeout = setTimeout(()=>{\n cb();\n });\n });\n return ()=>{\n cancelAnimationFrame(rafId);\n clearTimeout(timeout);\n };\n};\nlet isPatched = false;\nconst serializeEntries = (entries)=>entries.map((clientEntry)=>{\n switch(clientEntry.kind){\n case 'any-logged-error':\n case 'console':\n {\n return {\n ...clientEntry,\n args: clientEntry.args.map(stringifyUserArg)\n };\n }\n case 'formatted-error':\n {\n return clientEntry;\n }\n default:\n {\n return null;\n }\n }\n });\nconst logQueue = {\n entries: [],\n flushScheduled: false,\n cancelFlush: null,\n socket: null,\n sourceType: undefined,\n router: null,\n scheduleLogSend: (entry)=>{\n logQueue.entries.push(entry);\n if (logQueue.flushScheduled) {\n return;\n }\n // safe to deref and use in setTimeout closure since we cancel on new socket\n const socket = logQueue.socket;\n if (!socket) {\n return;\n }\n // we probably dont need this\n logQueue.flushScheduled = true;\n // non blocking log flush, runs at most once per frame\n logQueue.cancelFlush = afterThisFrame(()=>{\n logQueue.flushScheduled = false;\n // just incase\n try {\n const payload = JSON.stringify({\n event: 'browser-logs',\n entries: serializeEntries(logQueue.entries),\n router: logQueue.router,\n // needed for source mapping, we just assign the sourceType from the last error for the whole batch\n sourceType: logQueue.sourceType\n });\n socket.send(payload);\n logQueue.entries = [];\n logQueue.sourceType = undefined;\n } catch (e) {\n // error (make sure u don't infinite loop)\n /* noop */ }\n });\n },\n onSocketReady: (socket)=>{\n if (socket.readyState !== WebSocket.OPEN) {\n // invariant\n return;\n }\n // incase an existing timeout was going to run with a stale socket\n logQueue.cancelFlush == null ? void 0 : logQueue.cancelFlush.call(logQueue);\n logQueue.socket = socket;\n try {\n const payload = JSON.stringify({\n event: 'browser-logs',\n entries: serializeEntries(logQueue.entries),\n router: logQueue.router,\n sourceType: logQueue.sourceType\n });\n socket.send(payload);\n logQueue.entries = [];\n logQueue.sourceType = undefined;\n } catch (e) {\n /** noop just incase */ }\n }\n};\nconst stringifyUserArg = (arg)=>{\n if (arg.kind !== 'arg') {\n return arg;\n }\n return {\n ...arg,\n data: logStringify(arg.data)\n };\n};\nconst createErrorArg = (error)=>{\n const stack = stackWithOwners(error);\n return {\n kind: 'formatted-error-arg',\n prefix: error.message ? error.name + \": \" + error.message : \"\" + error.name,\n stack\n };\n};\nconst createLogEntry = (level, args)=>{\n // do not abstract this, it implicitly relies on which functions call it. forcing the inlined implementation makes you think about callers\n // error capture stack trace maybe\n const stack = stackWithOwners(new Error());\n const stackLines = stack == null ? void 0 : stack.split('\\n');\n const cleanStack = stackLines == null ? void 0 : stackLines.slice(3).join('\\n') // this is probably ignored anyways\n ;\n const entry = {\n kind: 'console',\n consoleMethodStack: cleanStack != null ? cleanStack : null,\n method: level,\n args: args.map((arg)=>{\n if (arg instanceof Error) {\n return createErrorArg(arg);\n }\n return {\n kind: 'arg',\n data: preLogSerializationClone(arg)\n };\n })\n };\n logQueue.scheduleLogSend(entry);\n};\nconst forwardErrorLog = (args)=>{\n const errorObjects = args.filter((arg)=>arg instanceof Error);\n const first = errorObjects.at(0);\n if (first) {\n const source = (0, _errorsource.getErrorSource)(first);\n if (source) {\n logQueue.sourceType = source;\n }\n }\n /**\n * browser shows stack regardless of type of data passed to console.error, so we should do the same\n *\n * do not abstract this, it implicitly relies on which functions call it. forcing the inlined implementation makes you think about callers\n */ const stack = stackWithOwners(new Error());\n const stackLines = stack == null ? void 0 : stack.split('\\n');\n const cleanStack = stackLines == null ? void 0 : stackLines.slice(3).join('\\n');\n const entry = {\n kind: 'any-logged-error',\n method: 'error',\n consoleErrorStack: cleanStack != null ? cleanStack : '',\n args: args.map((arg)=>{\n if (arg instanceof Error) {\n return createErrorArg(arg);\n }\n return {\n kind: 'arg',\n data: preLogSerializationClone(arg)\n };\n })\n };\n logQueue.scheduleLogSend(entry);\n};\nconst createUncaughtErrorEntry = (errorName, errorMessage, fullStack)=>{\n const entry = {\n kind: 'formatted-error',\n prefix: \"Uncaught \" + errorName + \": \" + errorMessage,\n stack: fullStack,\n method: 'error'\n };\n logQueue.scheduleLogSend(entry);\n};\nconst stackWithOwners = (error)=>{\n let ownerStack = '';\n (0, _stitchederror.setOwnerStackIfAvailable)(error);\n ownerStack = (0, _stitchederror.getOwnerStack)(error) || '';\n const stack = (error.stack || '') + ownerStack;\n return stack;\n};\nfunction logUnhandledRejection(reason) {\n if (reason instanceof Error) {\n createUnhandledRejectionErrorEntry(reason, stackWithOwners(reason));\n return;\n }\n createUnhandledRejectionNonErrorEntry(reason);\n}\nconst createUnhandledRejectionErrorEntry = (error, fullStack)=>{\n const source = (0, _errorsource.getErrorSource)(error);\n if (source) {\n logQueue.sourceType = source;\n }\n const entry = {\n kind: 'formatted-error',\n prefix: \"⨯ unhandledRejection: \" + error.name + \": \" + error.message,\n stack: fullStack,\n method: 'error'\n };\n logQueue.scheduleLogSend(entry);\n};\nconst createUnhandledRejectionNonErrorEntry = (reason)=>{\n const entry = {\n kind: 'any-logged-error',\n // we can't access the stack since the event is dispatched async and creating an inline error would be meaningless\n consoleErrorStack: '',\n method: 'error',\n args: [\n {\n kind: 'arg',\n data: \"⨯ unhandledRejection:\",\n isRejectionMessage: true\n },\n {\n kind: 'arg',\n data: preLogSerializationClone(reason)\n }\n ]\n };\n logQueue.scheduleLogSend(entry);\n};\nconst isHMR = (args)=>{\n const firstArg = args[0];\n if (typeof firstArg !== 'string') {\n return false;\n }\n if (firstArg.startsWith('[Fast Refresh]')) {\n return true;\n }\n if (firstArg.startsWith('[HMR]')) {\n return true;\n }\n return false;\n};\nconst isIgnoredLog = (args)=>{\n if (args.length < 3) {\n return false;\n }\n const [format, styles, label] = args;\n if (typeof format !== 'string' || typeof styles !== 'string' || typeof label !== 'string') {\n return false;\n }\n // kinda hacky, we should define a common format for these strings so we can safely ignore\n return format.startsWith('%c%s%c') && styles.includes('background:');\n};\nfunction forwardUnhandledError(error) {\n createUncaughtErrorEntry(error.name, error.message, stackWithOwners(error));\n}\nconst initializeDebugLogForwarding = (router)=>{\n // probably don't need this\n if (isPatched) {\n return;\n }\n // TODO(rob): why does this break rendering on server, important to know incase the same bug appears in browser\n if (typeof window === 'undefined') {\n return;\n }\n // better to be safe than sorry\n try {\n methods.forEach((method)=>(0, _forwardlogsshared.patchConsoleMethod)(method, function(_) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (isHMR(args)) {\n return;\n }\n if (isIgnoredLog(args)) {\n return;\n }\n createLogEntry(method, args);\n }));\n } catch (e) {}\n logQueue.router = router;\n isPatched = true;\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=forward-logs.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9mb3J3YXJkLWxvZ3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBV0w7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDZCQUE2QixtQkFBTyxDQUFDLHdIQUEwQztBQUMvRSx1QkFBdUIsbUJBQU8sQ0FBQyxvSEFBeUI7QUFDeEQscUJBQXFCLG1CQUFPLENBQUMsbUdBQWtDO0FBQy9ELCtCQUErQixtQkFBTyxDQUFDLHdIQUEyQjtBQUNsRSwyQkFBMkIsbUJBQU8sQ0FBQyxvSEFBa0M7QUFDckU7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0dBQXNHLGFBQWE7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXG5leHQtZGV2dG9vbHNcXHVzZXJzcGFjZVxcYXBwXFxmb3J3YXJkLWxvZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBQUk9NSVNFX01BUktFUjogbnVsbCxcbiAgICBVTkFWQUlMQUJMRV9NQVJLRVI6IG51bGwsXG4gICAgZm9yd2FyZEVycm9yTG9nOiBudWxsLFxuICAgIGZvcndhcmRVbmhhbmRsZWRFcnJvcjogbnVsbCxcbiAgICBpbml0aWFsaXplRGVidWdMb2dGb3J3YXJkaW5nOiBudWxsLFxuICAgIGlzVGVybWluYWxMb2dnaW5nRW5hYmxlZDogbnVsbCxcbiAgICBsb2dRdWV1ZTogbnVsbCxcbiAgICBsb2dTdHJpbmdpZnk6IG51bGwsXG4gICAgbG9nVW5oYW5kbGVkUmVqZWN0aW9uOiBudWxsLFxuICAgIHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBQUk9NSVNFX01BUktFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBQUk9NSVNFX01BUktFUjtcbiAgICB9LFxuICAgIFVOQVZBSUxBQkxFX01BUktFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBVTkFWQUlMQUJMRV9NQVJLRVI7XG4gICAgfSxcbiAgICBmb3J3YXJkRXJyb3JMb2c6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZm9yd2FyZEVycm9yTG9nO1xuICAgIH0sXG4gICAgZm9yd2FyZFVuaGFuZGxlZEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZvcndhcmRVbmhhbmRsZWRFcnJvcjtcbiAgICB9LFxuICAgIGluaXRpYWxpemVEZWJ1Z0xvZ0ZvcndhcmRpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZURlYnVnTG9nRm9yd2FyZGluZztcbiAgICB9LFxuICAgIGlzVGVybWluYWxMb2dnaW5nRW5hYmxlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQ7XG4gICAgfSxcbiAgICBsb2dRdWV1ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsb2dRdWV1ZTtcbiAgICB9LFxuICAgIGxvZ1N0cmluZ2lmeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsb2dTdHJpbmdpZnk7XG4gICAgfSxcbiAgICBsb2dVbmhhbmRsZWRSZWplY3Rpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbG9nVW5oYW5kbGVkUmVqZWN0aW9uO1xuICAgIH0sXG4gICAgcHJlTG9nU2VyaWFsaXphdGlvbkNsb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZTtcbiAgICB9XG59KTtcbmNvbnN0IF9zYWZlc3RhYmxlc3RyaW5naWZ5ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zYWZlLXN0YWJsZS1zdHJpbmdpZnlcIik7XG5jb25zdCBfc3RpdGNoZWRlcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9ycy9zdGl0Y2hlZC1lcnJvclwiKTtcbmNvbnN0IF9lcnJvcnNvdXJjZSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9zaGFyZWQvbGliL2Vycm9yLXNvdXJjZVwiKTtcbmNvbnN0IF90ZXJtaW5hbGxvZ2dpbmdjb25maWcgPSByZXF1aXJlKFwiLi90ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZ1wiKTtcbmNvbnN0IF9mb3J3YXJkbG9nc3NoYXJlZCA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvZm9yd2FyZC1sb2dzLXNoYXJlZFwiKTtcbmNvbnN0IHRlcm1pbmFsTG9nZ2luZ0NvbmZpZyA9ICgwLCBfdGVybWluYWxsb2dnaW5nY29uZmlnLmdldFRlcm1pbmFsTG9nZ2luZ0NvbmZpZykoKTtcbmNvbnN0IFBST01JU0VfTUFSS0VSID0gJ1Byb21pc2Uge30nO1xuY29uc3QgVU5BVkFJTEFCTEVfTUFSS0VSID0gJ1tVbmFibGUgdG8gdmlld10nO1xuY29uc3QgbWF4aW11bURlcHRoID0gdHlwZW9mIHRlcm1pbmFsTG9nZ2luZ0NvbmZpZyA9PT0gJ29iamVjdCcgJiYgdGVybWluYWxMb2dnaW5nQ29uZmlnLmRlcHRoTGltaXQgPyB0ZXJtaW5hbExvZ2dpbmdDb25maWcuZGVwdGhMaW1pdCA6IDU7XG5jb25zdCBtYXhpbXVtQnJlYWR0aCA9IHR5cGVvZiB0ZXJtaW5hbExvZ2dpbmdDb25maWcgPT09ICdvYmplY3QnICYmIHRlcm1pbmFsTG9nZ2luZ0NvbmZpZy5lZGdlTGltaXQgPyB0ZXJtaW5hbExvZ2dpbmdDb25maWcuZWRnZUxpbWl0IDogMTAwO1xuY29uc3Qgc3RyaW5naWZ5ID0gKDAsIF9zYWZlc3RhYmxlc3RyaW5naWZ5LmNvbmZpZ3VyZSkoe1xuICAgIG1heGltdW1EZXB0aCxcbiAgICBtYXhpbXVtQnJlYWR0aFxufSk7XG5jb25zdCBpc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQgPSAoMCwgX3Rlcm1pbmFsbG9nZ2luZ2NvbmZpZy5nZXRJc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQpKCk7XG5jb25zdCBtZXRob2RzID0gW1xuICAgICdsb2cnLFxuICAgICdpbmZvJyxcbiAgICAnd2FybicsXG4gICAgJ2RlYnVnJyxcbiAgICAndGFibGUnLFxuICAgICdhc3NlcnQnLFxuICAgICdkaXInLFxuICAgICdkaXJ4bWwnLFxuICAgICdncm91cCcsXG4gICAgJ2dyb3VwQ29sbGFwc2VkJyxcbiAgICAnZ3JvdXBFbmQnLFxuICAgICd0cmFjZSdcbl07XG5mdW5jdGlvbiBwcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUodmFsdWUsIHNlZW4pIHtcbiAgICBpZiAoc2VlbiA9PT0gdm9pZCAwKSBzZWVuID0gbmV3IFdlYWtNYXAoKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIF9mb3J3YXJkbG9nc3NoYXJlZC5VTkRFRklORURfTUFSS0VSO1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIHNlZW4uZ2V0KHZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gVU5BVkFJTEFCTEVfTUFSS0VSO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHJldHVybiBQUk9NSVNFX01BUktFUjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBVTkFWQUlMQUJMRV9NQVJLRVI7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBvdXQgPSBbXTtcbiAgICAgICAgc2Vlbi5zZXQodmFsdWUsIG91dCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSl7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZShpdGVtLCBzZWVuKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goVU5BVkFJTEFCTEVfTUFSS0VSKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gICAgaWYgKHByb3RvID09PSBPYmplY3QucHJvdG90eXBlIHx8IHByb3RvID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IHt9O1xuICAgICAgICBzZWVuLnNldCh2YWx1ZSwgb3V0KTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKXtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb3V0W2tleV0gPSBwcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUodmFsdWVba2V5XSwgc2Vlbik7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgb3V0W2tleV0gPSBVTkFWQUlMQUJMRV9NQVJLRVI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5jb25zdCBsb2dTdHJpbmdpZnkgPSAoZGF0YSk9PntcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBzdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgIT0gbnVsbCA/IHJlc3VsdCA6ICdcIicgKyBVTkFWQUlMQUJMRV9NQVJLRVIgKyAnXCInO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICdcIicgKyBVTkFWQUlMQUJMRV9NQVJLRVIgKyAnXCInO1xuICAgIH1cbn07XG5jb25zdCBhZnRlclRoaXNGcmFtZSA9IChjYik9PntcbiAgICBsZXQgdGltZW91dDtcbiAgICBjb25zdCByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpPT57XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH07XG59O1xubGV0IGlzUGF0Y2hlZCA9IGZhbHNlO1xuY29uc3Qgc2VyaWFsaXplRW50cmllcyA9IChlbnRyaWVzKT0+ZW50cmllcy5tYXAoKGNsaWVudEVudHJ5KT0+e1xuICAgICAgICBzd2l0Y2goY2xpZW50RW50cnkua2luZCl7XG4gICAgICAgICAgICBjYXNlICdhbnktbG9nZ2VkLWVycm9yJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbnNvbGUnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNsaWVudEVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogY2xpZW50RW50cnkuYXJncy5tYXAoc3RyaW5naWZ5VXNlckFyZylcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdmb3JtYXR0ZWQtZXJyb3InOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudEVudHJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbmNvbnN0IGxvZ1F1ZXVlID0ge1xuICAgIGVudHJpZXM6IFtdLFxuICAgIGZsdXNoU2NoZWR1bGVkOiBmYWxzZSxcbiAgICBjYW5jZWxGbHVzaDogbnVsbCxcbiAgICBzb2NrZXQ6IG51bGwsXG4gICAgc291cmNlVHlwZTogdW5kZWZpbmVkLFxuICAgIHJvdXRlcjogbnVsbCxcbiAgICBzY2hlZHVsZUxvZ1NlbmQ6IChlbnRyeSk9PntcbiAgICAgICAgbG9nUXVldWUuZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgaWYgKGxvZ1F1ZXVlLmZsdXNoU2NoZWR1bGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FmZSB0byBkZXJlZiBhbmQgdXNlIGluIHNldFRpbWVvdXQgY2xvc3VyZSBzaW5jZSB3ZSBjYW5jZWwgb24gbmV3IHNvY2tldFxuICAgICAgICBjb25zdCBzb2NrZXQgPSBsb2dRdWV1ZS5zb2NrZXQ7XG4gICAgICAgIGlmICghc29ja2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UgcHJvYmFibHkgZG9udCBuZWVkIHRoaXNcbiAgICAgICAgbG9nUXVldWUuZmx1c2hTY2hlZHVsZWQgPSB0cnVlO1xuICAgICAgICAvLyBub24gYmxvY2tpbmcgbG9nIGZsdXNoLCBydW5zIGF0IG1vc3Qgb25jZSBwZXIgZnJhbWVcbiAgICAgICAgbG9nUXVldWUuY2FuY2VsRmx1c2ggPSBhZnRlclRoaXNGcmFtZSgoKT0+e1xuICAgICAgICAgICAgbG9nUXVldWUuZmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIGp1c3QgaW5jYXNlXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiAnYnJvd3Nlci1sb2dzJyxcbiAgICAgICAgICAgICAgICAgICAgZW50cmllczogc2VyaWFsaXplRW50cmllcyhsb2dRdWV1ZS5lbnRyaWVzKSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyOiBsb2dRdWV1ZS5yb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgIC8vIG5lZWRlZCBmb3Igc291cmNlIG1hcHBpbmcsIHdlIGp1c3QgYXNzaWduIHRoZSBzb3VyY2VUeXBlIGZyb20gdGhlIGxhc3QgZXJyb3IgZm9yIHRoZSB3aG9sZSBiYXRjaFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VUeXBlOiBsb2dRdWV1ZS5zb3VyY2VUeXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc29ja2V0LnNlbmQocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgbG9nUXVldWUuZW50cmllcyA9IFtdO1xuICAgICAgICAgICAgICAgIGxvZ1F1ZXVlLnNvdXJjZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBlcnJvciAobWFrZSBzdXJlIHUgZG9uJ3QgaW5maW5pdGUgbG9vcClcbiAgICAgICAgICAgIC8qIG5vb3AgKi8gfVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIG9uU29ja2V0UmVhZHk6IChzb2NrZXQpPT57XG4gICAgICAgIGlmIChzb2NrZXQucmVhZHlTdGF0ZSAhPT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICAgIC8vIGludmFyaWFudFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluY2FzZSBhbiBleGlzdGluZyB0aW1lb3V0IHdhcyBnb2luZyB0byBydW4gd2l0aCBhIHN0YWxlIHNvY2tldFxuICAgICAgICBsb2dRdWV1ZS5jYW5jZWxGbHVzaCA9PSBudWxsID8gdm9pZCAwIDogbG9nUXVldWUuY2FuY2VsRmx1c2guY2FsbChsb2dRdWV1ZSk7XG4gICAgICAgIGxvZ1F1ZXVlLnNvY2tldCA9IHNvY2tldDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZXZlbnQ6ICdicm93c2VyLWxvZ3MnLFxuICAgICAgICAgICAgICAgIGVudHJpZXM6IHNlcmlhbGl6ZUVudHJpZXMobG9nUXVldWUuZW50cmllcyksXG4gICAgICAgICAgICAgICAgcm91dGVyOiBsb2dRdWV1ZS5yb3V0ZXIsXG4gICAgICAgICAgICAgICAgc291cmNlVHlwZTogbG9nUXVldWUuc291cmNlVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzb2NrZXQuc2VuZChwYXlsb2FkKTtcbiAgICAgICAgICAgIGxvZ1F1ZXVlLmVudHJpZXMgPSBbXTtcbiAgICAgICAgICAgIGxvZ1F1ZXVlLnNvdXJjZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyoqIG5vb3AganVzdCBpbmNhc2UgKi8gfVxuICAgIH1cbn07XG5jb25zdCBzdHJpbmdpZnlVc2VyQXJnID0gKGFyZyk9PntcbiAgICBpZiAoYXJnLmtpbmQgIT09ICdhcmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFyZyxcbiAgICAgICAgZGF0YTogbG9nU3RyaW5naWZ5KGFyZy5kYXRhKVxuICAgIH07XG59O1xuY29uc3QgY3JlYXRlRXJyb3JBcmcgPSAoZXJyb3IpPT57XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja1dpdGhPd25lcnMoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdmb3JtYXR0ZWQtZXJyb3ItYXJnJyxcbiAgICAgICAgcHJlZml4OiBlcnJvci5tZXNzYWdlID8gZXJyb3IubmFtZSArIFwiOiBcIiArIGVycm9yLm1lc3NhZ2UgOiBcIlwiICsgZXJyb3IubmFtZSxcbiAgICAgICAgc3RhY2tcbiAgICB9O1xufTtcbmNvbnN0IGNyZWF0ZUxvZ0VudHJ5ID0gKGxldmVsLCBhcmdzKT0+e1xuICAgIC8vIGRvIG5vdCBhYnN0cmFjdCB0aGlzLCBpdCBpbXBsaWNpdGx5IHJlbGllcyBvbiB3aGljaCBmdW5jdGlvbnMgY2FsbCBpdC4gZm9yY2luZyB0aGUgaW5saW5lZCBpbXBsZW1lbnRhdGlvbiBtYWtlcyB5b3UgdGhpbmsgYWJvdXQgY2FsbGVyc1xuICAgIC8vIGVycm9yIGNhcHR1cmUgc3RhY2sgdHJhY2UgbWF5YmVcbiAgICBjb25zdCBzdGFjayA9IHN0YWNrV2l0aE93bmVycyhuZXcgRXJyb3IoKSk7XG4gICAgY29uc3Qgc3RhY2tMaW5lcyA9IHN0YWNrID09IG51bGwgPyB2b2lkIDAgOiBzdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgY2xlYW5TdGFjayA9IHN0YWNrTGluZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YWNrTGluZXMuc2xpY2UoMykuam9pbignXFxuJykgLy8gdGhpcyBpcyBwcm9iYWJseSBpZ25vcmVkIGFueXdheXNcbiAgICA7XG4gICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgIGtpbmQ6ICdjb25zb2xlJyxcbiAgICAgICAgY29uc29sZU1ldGhvZFN0YWNrOiBjbGVhblN0YWNrICE9IG51bGwgPyBjbGVhblN0YWNrIDogbnVsbCxcbiAgICAgICAgbWV0aG9kOiBsZXZlbCxcbiAgICAgICAgYXJnczogYXJncy5tYXAoKGFyZyk9PntcbiAgICAgICAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVFcnJvckFyZyhhcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBraW5kOiAnYXJnJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBwcmVMb2dTZXJpYWxpemF0aW9uQ2xvbmUoYXJnKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICB9O1xuICAgIGxvZ1F1ZXVlLnNjaGVkdWxlTG9nU2VuZChlbnRyeSk7XG59O1xuY29uc3QgZm9yd2FyZEVycm9yTG9nID0gKGFyZ3MpPT57XG4gICAgY29uc3QgZXJyb3JPYmplY3RzID0gYXJncy5maWx0ZXIoKGFyZyk9PmFyZyBpbnN0YW5jZW9mIEVycm9yKTtcbiAgICBjb25zdCBmaXJzdCA9IGVycm9yT2JqZWN0cy5hdCgwKTtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gKDAsIF9lcnJvcnNvdXJjZS5nZXRFcnJvclNvdXJjZSkoZmlyc3QpO1xuICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBsb2dRdWV1ZS5zb3VyY2VUeXBlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBicm93c2VyIHNob3dzIHN0YWNrIHJlZ2FyZGxlc3Mgb2YgdHlwZSBvZiBkYXRhIHBhc3NlZCB0byBjb25zb2xlLmVycm9yLCBzbyB3ZSBzaG91bGQgZG8gdGhlIHNhbWVcbiAgICpcbiAgICogZG8gbm90IGFic3RyYWN0IHRoaXMsIGl0IGltcGxpY2l0bHkgcmVsaWVzIG9uIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIGl0LiBmb3JjaW5nIHRoZSBpbmxpbmVkIGltcGxlbWVudGF0aW9uIG1ha2VzIHlvdSB0aGluayBhYm91dCBjYWxsZXJzXG4gICAqLyBjb25zdCBzdGFjayA9IHN0YWNrV2l0aE93bmVycyhuZXcgRXJyb3IoKSk7XG4gICAgY29uc3Qgc3RhY2tMaW5lcyA9IHN0YWNrID09IG51bGwgPyB2b2lkIDAgOiBzdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgY2xlYW5TdGFjayA9IHN0YWNrTGluZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YWNrTGluZXMuc2xpY2UoMykuam9pbignXFxuJyk7XG4gICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgIGtpbmQ6ICdhbnktbG9nZ2VkLWVycm9yJyxcbiAgICAgICAgbWV0aG9kOiAnZXJyb3InLFxuICAgICAgICBjb25zb2xlRXJyb3JTdGFjazogY2xlYW5TdGFjayAhPSBudWxsID8gY2xlYW5TdGFjayA6ICcnLFxuICAgICAgICBhcmdzOiBhcmdzLm1hcCgoYXJnKT0+e1xuICAgICAgICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yQXJnKGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZShhcmcpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIH07XG4gICAgbG9nUXVldWUuc2NoZWR1bGVMb2dTZW5kKGVudHJ5KTtcbn07XG5jb25zdCBjcmVhdGVVbmNhdWdodEVycm9yRW50cnkgPSAoZXJyb3JOYW1lLCBlcnJvck1lc3NhZ2UsIGZ1bGxTdGFjayk9PntcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAga2luZDogJ2Zvcm1hdHRlZC1lcnJvcicsXG4gICAgICAgIHByZWZpeDogXCJVbmNhdWdodCBcIiArIGVycm9yTmFtZSArIFwiOiBcIiArIGVycm9yTWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IGZ1bGxTdGFjayxcbiAgICAgICAgbWV0aG9kOiAnZXJyb3InXG4gICAgfTtcbiAgICBsb2dRdWV1ZS5zY2hlZHVsZUxvZ1NlbmQoZW50cnkpO1xufTtcbmNvbnN0IHN0YWNrV2l0aE93bmVycyA9IChlcnJvcik9PntcbiAgICBsZXQgb3duZXJTdGFjayA9ICcnO1xuICAgICgwLCBfc3RpdGNoZWRlcnJvci5zZXRPd25lclN0YWNrSWZBdmFpbGFibGUpKGVycm9yKTtcbiAgICBvd25lclN0YWNrID0gKDAsIF9zdGl0Y2hlZGVycm9yLmdldE93bmVyU3RhY2spKGVycm9yKSB8fCAnJztcbiAgICBjb25zdCBzdGFjayA9IChlcnJvci5zdGFjayB8fCAnJykgKyBvd25lclN0YWNrO1xuICAgIHJldHVybiBzdGFjaztcbn07XG5mdW5jdGlvbiBsb2dVbmhhbmRsZWRSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGNyZWF0ZVVuaGFuZGxlZFJlamVjdGlvbkVycm9yRW50cnkocmVhc29uLCBzdGFja1dpdGhPd25lcnMocmVhc29uKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3JlYXRlVW5oYW5kbGVkUmVqZWN0aW9uTm9uRXJyb3JFbnRyeShyZWFzb24pO1xufVxuY29uc3QgY3JlYXRlVW5oYW5kbGVkUmVqZWN0aW9uRXJyb3JFbnRyeSA9IChlcnJvciwgZnVsbFN0YWNrKT0+e1xuICAgIGNvbnN0IHNvdXJjZSA9ICgwLCBfZXJyb3Jzb3VyY2UuZ2V0RXJyb3JTb3VyY2UpKGVycm9yKTtcbiAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGxvZ1F1ZXVlLnNvdXJjZVR5cGUgPSBzb3VyY2U7XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICBraW5kOiAnZm9ybWF0dGVkLWVycm9yJyxcbiAgICAgICAgcHJlZml4OiBcIuKoryB1bmhhbmRsZWRSZWplY3Rpb246IFwiICsgZXJyb3IubmFtZSArIFwiOiBcIiArIGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBmdWxsU3RhY2ssXG4gICAgICAgIG1ldGhvZDogJ2Vycm9yJ1xuICAgIH07XG4gICAgbG9nUXVldWUuc2NoZWR1bGVMb2dTZW5kKGVudHJ5KTtcbn07XG5jb25zdCBjcmVhdGVVbmhhbmRsZWRSZWplY3Rpb25Ob25FcnJvckVudHJ5ID0gKHJlYXNvbik9PntcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAga2luZDogJ2FueS1sb2dnZWQtZXJyb3InLFxuICAgICAgICAvLyB3ZSBjYW4ndCBhY2Nlc3MgdGhlIHN0YWNrIHNpbmNlIHRoZSBldmVudCBpcyBkaXNwYXRjaGVkIGFzeW5jIGFuZCBjcmVhdGluZyBhbiBpbmxpbmUgZXJyb3Igd291bGQgYmUgbWVhbmluZ2xlc3NcbiAgICAgICAgY29uc29sZUVycm9yU3RhY2s6ICcnLFxuICAgICAgICBtZXRob2Q6ICdlcnJvcicsXG4gICAgICAgIGFyZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBraW5kOiAnYXJnJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBcIuKoryB1bmhhbmRsZWRSZWplY3Rpb246XCIsXG4gICAgICAgICAgICAgICAgaXNSZWplY3Rpb25NZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdhcmcnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHByZUxvZ1NlcmlhbGl6YXRpb25DbG9uZShyZWFzb24pXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuICAgIGxvZ1F1ZXVlLnNjaGVkdWxlTG9nU2VuZChlbnRyeSk7XG59O1xuY29uc3QgaXNITVIgPSAoYXJncyk9PntcbiAgICBjb25zdCBmaXJzdEFyZyA9IGFyZ3NbMF07XG4gICAgaWYgKHR5cGVvZiBmaXJzdEFyZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlyc3RBcmcuc3RhcnRzV2l0aCgnW0Zhc3QgUmVmcmVzaF0nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpcnN0QXJnLnN0YXJ0c1dpdGgoJ1tITVJdJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBpc0lnbm9yZWRMb2cgPSAoYXJncyk9PntcbiAgICBpZiAoYXJncy5sZW5ndGggPCAzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgW2Zvcm1hdCwgc3R5bGVzLCBsYWJlbF0gPSBhcmdzO1xuICAgIGlmICh0eXBlb2YgZm9ybWF0ICE9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygc3R5bGVzICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8ga2luZGEgaGFja3ksIHdlIHNob3VsZCBkZWZpbmUgYSBjb21tb24gZm9ybWF0IGZvciB0aGVzZSBzdHJpbmdzIHNvIHdlIGNhbiBzYWZlbHkgaWdub3JlXG4gICAgcmV0dXJuIGZvcm1hdC5zdGFydHNXaXRoKCclYyVzJWMnKSAmJiBzdHlsZXMuaW5jbHVkZXMoJ2JhY2tncm91bmQ6Jyk7XG59O1xuZnVuY3Rpb24gZm9yd2FyZFVuaGFuZGxlZEVycm9yKGVycm9yKSB7XG4gICAgY3JlYXRlVW5jYXVnaHRFcnJvckVudHJ5KGVycm9yLm5hbWUsIGVycm9yLm1lc3NhZ2UsIHN0YWNrV2l0aE93bmVycyhlcnJvcikpO1xufVxuY29uc3QgaW5pdGlhbGl6ZURlYnVnTG9nRm9yd2FyZGluZyA9IChyb3V0ZXIpPT57XG4gICAgLy8gcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzXG4gICAgaWYgKGlzUGF0Y2hlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE8ocm9iKTogd2h5IGRvZXMgdGhpcyBicmVhayByZW5kZXJpbmcgb24gc2VydmVyLCBpbXBvcnRhbnQgdG8ga25vdyBpbmNhc2UgdGhlIHNhbWUgYnVnIGFwcGVhcnMgaW4gYnJvd3NlclxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGJldHRlciB0byBiZSBzYWZlIHRoYW4gc29ycnlcbiAgICB0cnkge1xuICAgICAgICBtZXRob2RzLmZvckVhY2goKG1ldGhvZCk9PigwLCBfZm9yd2FyZGxvZ3NzaGFyZWQucGF0Y2hDb25zb2xlTWV0aG9kKShtZXRob2QsIGZ1bmN0aW9uKF8pIHtcbiAgICAgICAgICAgICAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzSE1SKGFyZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzSWdub3JlZExvZyhhcmdzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNyZWF0ZUxvZ0VudHJ5KG1ldGhvZCwgYXJncyk7XG4gICAgICAgICAgICB9KSk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICBsb2dRdWV1ZS5yb3V0ZXIgPSByb3V0ZXI7XG4gICAgaXNQYXRjaGVkID0gdHJ1ZTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcndhcmQtbG9ncy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/forward-logs.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js": /*!*************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js ***! \*************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE: function() {\n return SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE;\n },\n SegmentBoundaryTriggerNode: function() {\n return SegmentBoundaryTriggerNode;\n },\n SegmentStateProvider: function() {\n return SegmentStateProvider;\n },\n SegmentViewNode: function() {\n return SegmentViewNode;\n },\n SegmentViewStateNode: function() {\n return SegmentViewStateNode;\n },\n useSegmentState: function() {\n return useSegmentState;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _notfound = __webpack_require__(/*! ../../../client/components/not-found */ \"(ssr)/./node_modules/next/dist/client/components/not-found.js\");\nconst SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE = 'NEXT_DEVTOOLS_SIMULATED_ERROR';\nfunction SegmentTrieNode(param) {\n let { type, pagePath } = param;\n const { boundaryType, setBoundaryType } = useSegmentState();\n const nodeState = (0, _react.useMemo)(()=>{\n return {\n type,\n pagePath,\n boundaryType,\n setBoundaryType\n };\n }, [\n type,\n pagePath,\n boundaryType,\n setBoundaryType\n ]);\n // Use `useLayoutEffect` to ensure the state is updated during suspense.\n // `useEffect` won't work as the state is preserved during suspense.\n (0, _react.useLayoutEffect)(()=>{\n _nextdevtools.dispatcher.segmentExplorerNodeAdd(nodeState);\n return ()=>{\n _nextdevtools.dispatcher.segmentExplorerNodeRemove(nodeState);\n };\n }, [\n nodeState\n ]);\n return null;\n}\nfunction NotFoundSegmentNode() {\n (0, _notfound.notFound)();\n}\nfunction ErrorSegmentNode() {\n throw Object.defineProperty(new Error(SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\nconst forever = new Promise(()=>{});\nfunction LoadingSegmentNode() {\n (0, _react.use)(forever);\n return null;\n}\nfunction SegmentViewStateNode(param) {\n let { page } = param;\n (0, _react.useLayoutEffect)(()=>{\n _nextdevtools.dispatcher.segmentExplorerUpdateRouteState(page);\n return ()=>{\n _nextdevtools.dispatcher.segmentExplorerUpdateRouteState('');\n };\n }, [\n page\n ]);\n return null;\n}\nfunction SegmentBoundaryTriggerNode() {\n const { boundaryType } = useSegmentState();\n let segmentNode = null;\n if (boundaryType === 'loading') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(LoadingSegmentNode, {});\n } else if (boundaryType === 'not-found') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(NotFoundSegmentNode, {});\n } else if (boundaryType === 'error') {\n segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorSegmentNode, {});\n }\n return segmentNode;\n}\nfunction SegmentViewNode(param) {\n let { type, pagePath, children } = param;\n const segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentTrieNode, {\n type: type,\n pagePath: pagePath\n }, type);\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n segmentNode,\n children\n ]\n });\n}\nconst SegmentStateContext = /*#__PURE__*/ (0, _react.createContext)({\n boundaryType: null,\n setBoundaryType: ()=>{}\n});\nfunction SegmentStateProvider(param) {\n let { children } = param;\n const [boundaryType, setBoundaryType] = (0, _react.useState)(null);\n const [errorBoundaryKey, setErrorBoundaryKey] = (0, _react.useState)(0);\n const reloadBoundary = (0, _react.useCallback)(()=>setErrorBoundaryKey((prev)=>prev + 1), []);\n const setBoundaryTypeAndReload = (0, _react.useCallback)((type)=>{\n if (type === null) {\n reloadBoundary();\n }\n setBoundaryType(type);\n }, [\n reloadBoundary\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentStateContext.Provider, {\n value: {\n boundaryType,\n setBoundaryType: setBoundaryTypeAndReload\n },\n children: children\n }, errorBoundaryKey);\n}\nfunction useSegmentState() {\n return (0, _react.useContext)(SegmentStateContext);\n}\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=segment-explorer-node.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBcUJhQSx3Q0FBd0M7ZUFBeENBOztJQStER0MsMEJBQTBCO2VBQTFCQTs7SUEwQ0FDLG9CQUFvQjtlQUFwQkE7O0lBN0JBQyxlQUFlO2VBQWZBOztJQXZCQUMsb0JBQW9CO2VBQXBCQTs7SUFzRkFDLGVBQWU7ZUFBZkE7Ozs7bUNBdEpUOzBDQUVvQjtzQ0FDRjtBQVFsQixNQUFNTCwyQ0FDWDtBQVNGLFNBQVNNLGdCQUFnQixLQU14QjtJQU53QixNQUN2QkMsSUFBSSxFQUNKQyxRQUFRLEVBSVQsR0FOd0I7SUFPdkIsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLGVBQWUsRUFBRSxHQUFHTDtJQUMxQyxNQUFNTSxZQUE4QkMsQ0FBQUEsR0FBQUEsT0FBQUEsT0FBQUEsRUFBUTtRQUMxQyxPQUFPO1lBQ0xMO1lBQ0FDO1lBQ0FDO1lBQ0FDO1FBQ0Y7SUFDRixHQUFHO1FBQUNIO1FBQU1DO1FBQVVDO1FBQWNDO0tBQWdCO0lBRWxELHdFQUF3RTtJQUN4RSxvRUFBb0U7SUFDcEVHLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1FBQ2RDLGNBQUFBLFVBQVUsQ0FBQ0Msc0JBQXNCLENBQUNKO1FBQ2xDLE9BQU87WUFDTEcsY0FBQUEsVUFBVSxDQUFDRSx5QkFBeUIsQ0FBQ0w7UUFDdkM7SUFDRixHQUFHO1FBQUNBO0tBQVU7SUFFZCxPQUFPO0FBQ1Q7QUFFQSxTQUFTTTtJQUNQQyxDQUFBQSxHQUFBQSxVQUFBQSxRQUFBQTtBQUNGO0FBRUEsU0FBU0M7SUFDUCxNQUFNLHFCQUFtRCxDQUFuRCxJQUFJQyxNQUFNcEIsMkNBQVY7ZUFBQTtvQkFBQTtzQkFBQTtJQUFrRDtBQUMxRDtBQUVBLE1BQU1xQixVQUFVLElBQUlDLFFBQVEsS0FBTztBQUNuQyxTQUFTQztJQUNQQyxDQUFBQSxHQUFBQSxPQUFBQSxHQUFBQSxFQUFJSDtJQUNKLE9BQU87QUFDVDtBQUVPLFNBQVNqQixxQkFBcUIsS0FBMEI7SUFBMUIsTUFBRXFCLElBQUksRUFBb0IsR0FBMUI7SUFDbkNaLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1FBQ2RDLGNBQUFBLFVBQVUsQ0FBQ1ksK0JBQStCLENBQUNEO1FBQzNDLE9BQU87WUFDTFgsY0FBQUEsVUFBVSxDQUFDWSwrQkFBK0IsQ0FBQztRQUM3QztJQUNGLEdBQUc7UUFBQ0Q7S0FBSztJQUNULE9BQU87QUFDVDtBQUVPLFNBQVN4QjtJQUNkLE1BQU0sRUFBRVEsWUFBWSxFQUFFLEdBQUdKO0lBQ3pCLElBQUlzQixjQUErQjtJQUNuQyxJQUFJbEIsaUJBQWlCLFdBQVc7UUFDOUJrQixjQUFBQSxXQUFBQSxHQUFjLHFCQUFDSixvQkFBQUEsQ0FBQUE7SUFDakIsT0FBTyxJQUFJZCxpQkFBaUIsYUFBYTtRQUN2Q2tCLGNBQUFBLFdBQUFBLEdBQWMscUJBQUNWLHFCQUFBQSxDQUFBQTtJQUNqQixPQUFPLElBQUlSLGlCQUFpQixTQUFTO1FBQ25Da0IsY0FBYyxXQUFkQSxHQUFjLHFCQUFDUixrQkFBQUEsQ0FBQUE7SUFDakI7SUFDQSxPQUFPUTtBQUNUO0FBRU8sU0FBU3hCLGdCQUFnQixLQVEvQjtJQVIrQixNQUM5QkksSUFBSSxFQUNKQyxRQUFRLEVBQ1JvQixRQUFRLEVBS1QsR0FSK0I7SUFTOUIsTUFBTUQsY0FDSixXQURJQSxHQUNKLHFCQUFDckIsaUJBQUFBO1FBQTJCQyxNQUFNQTtRQUFNQyxVQUFVQTtPQUE1QkQ7SUFHeEIscUJBQ0U7O1lBQ0dvQjtZQUNBQzs7O0FBR1A7QUFFQSxNQUFNQyxzQkFBQUEsV0FBQUEsR0FBc0JDLENBQUFBLEdBQUFBLE9BQUFBLGFBQUFBLEVBR3pCO0lBQ0RyQixjQUFjO0lBQ2RDLGlCQUFpQixLQUFPO0FBQzFCO0FBRU8sU0FBU1IscUJBQXFCLEtBQXFDO0lBQXJDLE1BQUUwQixRQUFRLEVBQTJCLEdBQXJDO0lBQ25DLE1BQU0sQ0FBQ25CLGNBQWNDLGdCQUFnQixHQUFHcUIsQ0FBQUEsR0FBQUEsT0FBQUEsUUFBQUEsRUFDdEM7SUFHRixNQUFNLENBQUNDLGtCQUFrQkMsb0JBQW9CLEdBQUdGLENBQUFBLEdBQUFBLE9BQUFBLFFBQUFBLEVBQVM7SUFDekQsTUFBTUcsaUJBQWlCQyxDQUFBQSxHQUFBQSxPQUFBQSxXQUFBQSxFQUNyQixJQUFNRixvQkFBb0IsQ0FBQ0csT0FBU0EsT0FBTyxJQUMzQyxFQUFFO0lBR0osTUFBTUMsMkJBQTJCRixDQUFBQSxHQUFBQSxPQUFBQSxXQUFBQSxFQUMvQixDQUFDNUI7UUFDQyxJQUFJQSxTQUFTLE1BQU07WUFDakIyQjtRQUNGO1FBQ0F4QixnQkFBZ0JIO0lBQ2xCLEdBQ0E7UUFBQzJCO0tBQWU7SUFHbEIscUJBQ0UscUJBQUNMLG9CQUFvQlMsUUFBUTtRQUUzQkMsT0FBTztZQUNMOUI7WUFDQUMsaUJBQWlCMkI7UUFDbkI7a0JBRUNUO09BTklJO0FBU1g7QUFFTyxTQUFTM0I7SUFDZCxPQUFPbUMsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV1g7QUFDcEIiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXG5leHQtZGV2dG9vbHNcXHVzZXJzcGFjZVxcYXBwXFxzZWdtZW50LWV4cGxvcmVyLW5vZGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdXNlU3RhdGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZSxcbiAgdXNlTWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBkaXNwYXRjaGVyIH0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5pbXBvcnQgeyBub3RGb3VuZCB9IGZyb20gJy4uLy4uLy4uL2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZCdcblxuZXhwb3J0IHR5cGUgU2VnbWVudEJvdW5kYXJ5VHlwZSA9XG4gIHwgJ25vdC1mb3VuZCdcbiAgfCAnZXJyb3InXG4gIHwgJ2xvYWRpbmcnXG4gIHwgJ2dsb2JhbC1lcnJvcidcblxuZXhwb3J0IGNvbnN0IFNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UgPVxuICAnTkVYVF9ERVZUT09MU19TSU1VTEFURURfRVJST1InXG5cbmV4cG9ydCB0eXBlIFNlZ21lbnROb2RlU3RhdGUgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBwYWdlUGF0aDogc3RyaW5nXG4gIGJvdW5kYXJ5VHlwZTogc3RyaW5nIHwgbnVsbFxuICBzZXRCb3VuZGFyeVR5cGU6ICh0eXBlOiBTZWdtZW50Qm91bmRhcnlUeXBlIHwgbnVsbCkgPT4gdm9pZFxufVxuXG5mdW5jdGlvbiBTZWdtZW50VHJpZU5vZGUoe1xuICB0eXBlLFxuICBwYWdlUGF0aCxcbn06IHtcbiAgdHlwZTogc3RyaW5nXG4gIHBhZ2VQYXRoOiBzdHJpbmdcbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGJvdW5kYXJ5VHlwZSwgc2V0Qm91bmRhcnlUeXBlIH0gPSB1c2VTZWdtZW50U3RhdGUoKVxuICBjb25zdCBub2RlU3RhdGU6IFNlZ21lbnROb2RlU3RhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZSxcbiAgICAgIHBhZ2VQYXRoLFxuICAgICAgYm91bmRhcnlUeXBlLFxuICAgICAgc2V0Qm91bmRhcnlUeXBlLFxuICAgIH1cbiAgfSwgW3R5cGUsIHBhZ2VQYXRoLCBib3VuZGFyeVR5cGUsIHNldEJvdW5kYXJ5VHlwZV0pXG5cbiAgLy8gVXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGVuc3VyZSB0aGUgc3RhdGUgaXMgdXBkYXRlZCBkdXJpbmcgc3VzcGVuc2UuXG4gIC8vIGB1c2VFZmZlY3RgIHdvbid0IHdvcmsgYXMgdGhlIHN0YXRlIGlzIHByZXNlcnZlZCBkdXJpbmcgc3VzcGVuc2UuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgZGlzcGF0Y2hlci5zZWdtZW50RXhwbG9yZXJOb2RlQWRkKG5vZGVTdGF0ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hlci5zZWdtZW50RXhwbG9yZXJOb2RlUmVtb3ZlKG5vZGVTdGF0ZSlcbiAgICB9XG4gIH0sIFtub2RlU3RhdGVdKVxuXG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIE5vdEZvdW5kU2VnbWVudE5vZGUoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgbm90Rm91bmQoKVxufVxuXG5mdW5jdGlvbiBFcnJvclNlZ21lbnROb2RlKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHRocm93IG5ldyBFcnJvcihTRUdNRU5UX0VYUExPUkVSX1NJTVVMQVRFRF9FUlJPUl9NRVNTQUdFKVxufVxuXG5jb25zdCBmb3JldmVyID0gbmV3IFByb21pc2UoKCkgPT4ge30pXG5mdW5jdGlvbiBMb2FkaW5nU2VnbWVudE5vZGUoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgdXNlKGZvcmV2ZXIpXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWdtZW50Vmlld1N0YXRlTm9kZSh7IHBhZ2UgfTogeyBwYWdlOiBzdHJpbmcgfSkge1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGRpc3BhdGNoZXIuc2VnbWVudEV4cGxvcmVyVXBkYXRlUm91dGVTdGF0ZShwYWdlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkaXNwYXRjaGVyLnNlZ21lbnRFeHBsb3JlclVwZGF0ZVJvdXRlU3RhdGUoJycpXG4gICAgfVxuICB9LCBbcGFnZV0pXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWdtZW50Qm91bmRhcnlUcmlnZ2VyTm9kZSgpIHtcbiAgY29uc3QgeyBib3VuZGFyeVR5cGUgfSA9IHVzZVNlZ21lbnRTdGF0ZSgpXG4gIGxldCBzZWdtZW50Tm9kZTogUmVhY3QuUmVhY3ROb2RlID0gbnVsbFxuICBpZiAoYm91bmRhcnlUeXBlID09PSAnbG9hZGluZycpIHtcbiAgICBzZWdtZW50Tm9kZSA9IDxMb2FkaW5nU2VnbWVudE5vZGUgLz5cbiAgfSBlbHNlIGlmIChib3VuZGFyeVR5cGUgPT09ICdub3QtZm91bmQnKSB7XG4gICAgc2VnbWVudE5vZGUgPSA8Tm90Rm91bmRTZWdtZW50Tm9kZSAvPlxuICB9IGVsc2UgaWYgKGJvdW5kYXJ5VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIHNlZ21lbnROb2RlID0gPEVycm9yU2VnbWVudE5vZGUgLz5cbiAgfVxuICByZXR1cm4gc2VnbWVudE5vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlZ21lbnRWaWV3Tm9kZSh7XG4gIHR5cGUsXG4gIHBhZ2VQYXRoLFxuICBjaGlsZHJlbixcbn06IHtcbiAgdHlwZTogc3RyaW5nXG4gIHBhZ2VQYXRoOiBzdHJpbmdcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGVcbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBzZWdtZW50Tm9kZSA9IChcbiAgICA8U2VnbWVudFRyaWVOb2RlIGtleT17dHlwZX0gdHlwZT17dHlwZX0gcGFnZVBhdGg9e3BhZ2VQYXRofSAvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NlZ21lbnROb2RlfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApXG59XG5cbmNvbnN0IFNlZ21lbnRTdGF0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PHtcbiAgYm91bmRhcnlUeXBlOiBTZWdtZW50Qm91bmRhcnlUeXBlIHwgbnVsbFxuICBzZXRCb3VuZGFyeVR5cGU6ICh0eXBlOiBTZWdtZW50Qm91bmRhcnlUeXBlIHwgbnVsbCkgPT4gdm9pZFxufT4oe1xuICBib3VuZGFyeVR5cGU6IG51bGwsXG4gIHNldEJvdW5kYXJ5VHlwZTogKCkgPT4ge30sXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gU2VnbWVudFN0YXRlUHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCBbYm91bmRhcnlUeXBlLCBzZXRCb3VuZGFyeVR5cGVdID0gdXNlU3RhdGU8U2VnbWVudEJvdW5kYXJ5VHlwZSB8IG51bGw+KFxuICAgIG51bGxcbiAgKVxuXG4gIGNvbnN0IFtlcnJvckJvdW5kYXJ5S2V5LCBzZXRFcnJvckJvdW5kYXJ5S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IHJlbG9hZEJvdW5kYXJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gc2V0RXJyb3JCb3VuZGFyeUtleSgocHJldikgPT4gcHJldiArIDEpLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBzZXRCb3VuZGFyeVR5cGVBbmRSZWxvYWQgPSB1c2VDYWxsYmFjayhcbiAgICAodHlwZTogU2VnbWVudEJvdW5kYXJ5VHlwZSB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIHJlbG9hZEJvdW5kYXJ5KClcbiAgICAgIH1cbiAgICAgIHNldEJvdW5kYXJ5VHlwZSh0eXBlKVxuICAgIH0sXG4gICAgW3JlbG9hZEJvdW5kYXJ5XVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U2VnbWVudFN0YXRlQ29udGV4dC5Qcm92aWRlclxuICAgICAga2V5PXtlcnJvckJvdW5kYXJ5S2V5fVxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgYm91bmRhcnlUeXBlLFxuICAgICAgICBzZXRCb3VuZGFyeVR5cGU6IHNldEJvdW5kYXJ5VHlwZUFuZFJlbG9hZCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU2VnbWVudFN0YXRlQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VnbWVudFN0YXRlKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChTZWdtZW50U3RhdGVDb250ZXh0KVxufVxuIl0sIm5hbWVzIjpbIlNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UiLCJTZWdtZW50Qm91bmRhcnlUcmlnZ2VyTm9kZSIsIlNlZ21lbnRTdGF0ZVByb3ZpZGVyIiwiU2VnbWVudFZpZXdOb2RlIiwiU2VnbWVudFZpZXdTdGF0ZU5vZGUiLCJ1c2VTZWdtZW50U3RhdGUiLCJTZWdtZW50VHJpZU5vZGUiLCJ0eXBlIiwicGFnZVBhdGgiLCJib3VuZGFyeVR5cGUiLCJzZXRCb3VuZGFyeVR5cGUiLCJub2RlU3RhdGUiLCJ1c2VNZW1vIiwidXNlTGF5b3V0RWZmZWN0IiwiZGlzcGF0Y2hlciIsInNlZ21lbnRFeHBsb3Jlck5vZGVBZGQiLCJzZWdtZW50RXhwbG9yZXJOb2RlUmVtb3ZlIiwiTm90Rm91bmRTZWdtZW50Tm9kZSIsIm5vdEZvdW5kIiwiRXJyb3JTZWdtZW50Tm9kZSIsIkVycm9yIiwiZm9yZXZlciIsIlByb21pc2UiLCJMb2FkaW5nU2VnbWVudE5vZGUiLCJ1c2UiLCJwYWdlIiwic2VnbWVudEV4cGxvcmVyVXBkYXRlUm91dGVTdGF0ZSIsInNlZ21lbnROb2RlIiwiY2hpbGRyZW4iLCJTZWdtZW50U3RhdGVDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsInVzZVN0YXRlIiwiZXJyb3JCb3VuZGFyeUtleSIsInNldEVycm9yQm91bmRhcnlLZXkiLCJyZWxvYWRCb3VuZGFyeSIsInVzZUNhbGxiYWNrIiwicHJldiIsInNldEJvdW5kYXJ5VHlwZUFuZFJlbG9hZCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VDb250ZXh0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js": /*!***************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js ***! \***************************************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getIsTerminalLoggingEnabled: function() {\n return getIsTerminalLoggingEnabled;\n },\n getTerminalLoggingConfig: function() {\n return getTerminalLoggingConfig;\n }\n});\nfunction getTerminalLoggingConfig() {\n try {\n return JSON.parse(\"false\" || 0);\n } catch (e) {\n return false;\n }\n}\nfunction getIsTerminalLoggingEnabled() {\n const config = getTerminalLoggingConfig();\n return Boolean(config);\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=terminal-logging-config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC90ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FHTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsMEJBQTBCLE9BQWlELElBQUksQ0FBTztBQUN0RixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsYUFBYTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXG5leHQtZGV2dG9vbHNcXHVzZXJzcGFjZVxcYXBwXFx0ZXJtaW5hbC1sb2dnaW5nLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGdldElzVGVybWluYWxMb2dnaW5nRW5hYmxlZDogbnVsbCxcbiAgICBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWc6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgZ2V0SXNUZXJtaW5hbExvZ2dpbmdFbmFibGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldElzVGVybWluYWxMb2dnaW5nRW5hYmxlZDtcbiAgICB9LFxuICAgIGdldFRlcm1pbmFsTG9nZ2luZ0NvbmZpZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWc7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBnZXRUZXJtaW5hbExvZ2dpbmdDb25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocHJvY2Vzcy5lbnYuX19ORVhUX0JST1dTRVJfREVCVUdfSU5GT19JTl9URVJNSU5BTCB8fCAnZmFsc2UnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRJc1Rlcm1pbmFsTG9nZ2luZ0VuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0VGVybWluYWxMb2dnaW5nQ29uZmlnKCk7XG4gICAgcmV0dXJuIEJvb2xlYW4oY29uZmlnKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGVybWluYWwtbG9nZ2luZy1jb25maWcuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/app/terminal-logging-config.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js": /*!*******************************************************************************************!*\ !*** ./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js ***! \*******************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useAppDevRenderingIndicator\", ({\n enumerable: true,\n get: function() {\n return useAppDevRenderingIndicator;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(ssr)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst useAppDevRenderingIndicator = ()=>{\n const [isPending, startTransition] = (0, _react.useTransition)();\n (0, _react.useEffect)(()=>{\n if (isPending) {\n _nextdevtools.dispatcher.renderingIndicatorShow();\n } else {\n _nextdevtools.dispatcher.renderingIndicatorHide();\n }\n }, [\n isPending\n ]);\n return startTransition;\n};\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-app-dev-rendering-indicator.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL3VzZS1hcHAtZGV2LXJlbmRlcmluZy1pbmRpY2F0b3IuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREFLYUE7OztlQUFBQTs7O21DQUg0QjswQ0FDZDtBQUVwQixNQUFNQSw4QkFBOEI7SUFDekMsTUFBTSxDQUFDQyxXQUFXQyxnQkFBZ0IsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsYUFBQUE7SUFFckNDLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJSCxXQUFXO1lBQ2JJLGNBQUFBLFVBQVUsQ0FBQ0Msc0JBQXNCO1FBQ25DLE9BQU87WUFDTEQsY0FBQUEsVUFBVSxDQUFDRSxzQkFBc0I7UUFDbkM7SUFDRixHQUFHO1FBQUNOO0tBQVU7SUFFZCxPQUFPQztBQUNUIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcbmV4dC1kZXZ0b29sc1xcdXNlcnNwYWNlXFx1c2UtYXBwLWRldi1yZW5kZXJpbmctaW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBkaXNwYXRjaGVyIH0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5cbmV4cG9ydCBjb25zdCB1c2VBcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IgPSAoKSA9PiB7XG4gIGNvbnN0IFtpc1BlbmRpbmcsIHN0YXJ0VHJhbnNpdGlvbl0gPSB1c2VUcmFuc2l0aW9uKClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1BlbmRpbmcpIHtcbiAgICAgIGRpc3BhdGNoZXIucmVuZGVyaW5nSW5kaWNhdG9yU2hvdygpXG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoZXIucmVuZGVyaW5nSW5kaWNhdG9ySGlkZSgpXG4gICAgfVxuICB9LCBbaXNQZW5kaW5nXSlcblxuICByZXR1cm4gc3RhcnRUcmFuc2l0aW9uXG59XG4iXSwibmFtZXMiOlsidXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yIiwiaXNQZW5kaW5nIiwic3RhcnRUcmFuc2l0aW9uIiwidXNlVHJhbnNpdGlvbiIsInVzZUVmZmVjdCIsImRpc3BhdGNoZXIiLCJyZW5kZXJpbmdJbmRpY2F0b3JTaG93IiwicmVuZGVyaW5nSW5kaWNhdG9ySGlkZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/dynamic-rendering.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Postpone: function() {\n return Postpone;\n },\n PreludeState: function() {\n return PreludeState;\n },\n abortAndThrowOnSynchronousRequestDataAccess: function() {\n return abortAndThrowOnSynchronousRequestDataAccess;\n },\n abortOnSynchronousPlatformIOAccess: function() {\n return abortOnSynchronousPlatformIOAccess;\n },\n accessedDynamicData: function() {\n return accessedDynamicData;\n },\n annotateDynamicAccess: function() {\n return annotateDynamicAccess;\n },\n consumeDynamicAccess: function() {\n return consumeDynamicAccess;\n },\n createDynamicTrackingState: function() {\n return createDynamicTrackingState;\n },\n createDynamicValidationState: function() {\n return createDynamicValidationState;\n },\n createHangingInputAbortSignal: function() {\n return createHangingInputAbortSignal;\n },\n createRenderInBrowserAbortSignal: function() {\n return createRenderInBrowserAbortSignal;\n },\n delayUntilRuntimeStage: function() {\n return delayUntilRuntimeStage;\n },\n formatDynamicAPIAccesses: function() {\n return formatDynamicAPIAccesses;\n },\n getFirstDynamicReason: function() {\n return getFirstDynamicReason;\n },\n isDynamicPostpone: function() {\n return isDynamicPostpone;\n },\n isPrerenderInterruptedError: function() {\n return isPrerenderInterruptedError;\n },\n logDisallowedDynamicError: function() {\n return logDisallowedDynamicError;\n },\n markCurrentScopeAsDynamic: function() {\n return markCurrentScopeAsDynamic;\n },\n postponeWithTracking: function() {\n return postponeWithTracking;\n },\n throwIfDisallowedDynamic: function() {\n return throwIfDisallowedDynamic;\n },\n throwToInterruptStaticGeneration: function() {\n return throwToInterruptStaticGeneration;\n },\n trackAllowedDynamicAccess: function() {\n return trackAllowedDynamicAccess;\n },\n trackDynamicDataInDynamicRender: function() {\n return trackDynamicDataInDynamicRender;\n },\n trackSynchronousPlatformIOAccessInDev: function() {\n return trackSynchronousPlatformIOAccessInDev;\n },\n trackSynchronousRequestDataAccessInDev: function() {\n return trackSynchronousRequestDataAccessInDev;\n },\n useDynamicRouteParams: function() {\n return useDynamicRouteParams;\n },\n warnOnSyncDynamicError: function() {\n return warnOnSyncDynamicError;\n }\n});\nconst _react = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nconst _hooksservercontext = __webpack_require__(/*! ../../client/components/hooks-server-context */ \"(ssr)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ./work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _boundaryconstants = __webpack_require__(/*! ../../lib/framework/boundary-constants */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-constants.js\");\nconst _scheduler = __webpack_require__(/*! ../../lib/scheduler */ \"(ssr)/./node_modules/next/dist/lib/scheduler.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst hasPostpone = typeof _react.default.unstable_postpone === 'function';\nfunction createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null\n };\n}\nfunction createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nfunction getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\nfunction markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E553\",\n enumerable: false,\n configurable: true\n });\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-ppr':\n return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking);\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E550\",\n enumerable: false,\n configurable: true\n });\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n }\n}\nfunction throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = Object.defineProperty(new _hooksservercontext.DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E558\",\n enumerable: false,\n configurable: true\n });\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\nfunction trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break;\n case 'request':\n if (true) {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n}\nfunction trackSynchronousPlatformIOAccessInDev(requestStore) {\n // We don't actually have a controller to abort but we do the semantic equivalent by\n // advancing the request store out of prerender mode\n requestStore.prerenderPhase = false;\n}\nfunction abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nfunction warnOnSyncDynamicError(dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack) {\n // the server did something sync dynamic, likely\n // leading to an early termination of the prerender.\n console.error(dynamicTracking.syncDynamicErrorWithStack);\n }\n}\nconst trackSynchronousRequestDataAccessInDev = trackSynchronousPlatformIOAccessInDev;\nfunction Postpone({ reason, route }) {\n const prerenderStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\n postponeWithTracking(route, reason, dynamicTracking);\n}\nfunction postponeWithTracking(route, expression, dynamicTracking) {\n assertPostpone();\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n _react.default.unstable_postpone(createPostponeReason(route, expression));\n}\nfunction createPostponeReason(route, expression) {\n return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;\n}\nfunction isDynamicPostpone(err) {\n if (typeof err === 'object' && err !== null && typeof err.message === 'string') {\n return isDynamicPostponeReason(err.message);\n }\n return false;\n}\nfunction isDynamicPostponeReason(reason) {\n return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error');\n}\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E296\",\n enumerable: false,\n configurable: true\n });\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nfunction isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nfunction accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nfunction consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nfunction formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n') // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' ()')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E224\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction createRenderInBrowserAbortSignal() {\n const controller = new AbortController();\n controller.abort(Object.defineProperty(new _bailouttocsr.BailoutToCSRError('Render in Browser'), \"__NEXT_ERROR_CODE\", {\n value: \"E721\",\n enumerable: false,\n configurable: true\n }));\n return controller.signal;\n}\nfunction createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = (0, _workunitasyncstorageexternal.getRuntimeStagePromise)(workUnitStore);\n if (runtimeStagePromise) {\n runtimeStagePromise.then(()=>(0, _scheduler.scheduleOnNextTick)(()=>controller.abort()));\n } else {\n (0, _scheduler.scheduleOnNextTick)(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined;\n default:\n workUnitStore;\n }\n}\nfunction annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nfunction useDynamicRouteParams(expression) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workStore && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-client':\n case 'prerender':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n _react.default.use((0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, expression));\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E771\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense ()\n// at __next_root_layout_boundary__ ()\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense ()\n// at SomeComponent ()\n// at __next_root_layout_boundary__ ()\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nfunction trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a \"use cache\" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */ function createErrorWithComponentOrOwnerStack(message, componentStack) {\n const ownerStack = true && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null;\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = error.name + ': ' + message + (ownerStack ?? componentStack);\n return error;\n}\nvar PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nfunction logDisallowedDynamicError(workStore, error) {\n console.error(error);\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`);\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`);\n }\n }\n}\nfunction throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) {\n if (prelude !== 0) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return;\n }\n if (serverDynamic.syncDynamicErrorWithStack) {\n // There is no shell and the server did something sync dynamic likely\n // leading to an early termination of the prerender before the shell\n // could be completed. We terminate the build/validating render.\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(`Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n } else {\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(`Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`);\n throw new _staticgenerationbailout.StaticGenBailoutError();\n }\n }\n}\nfunction delayUntilRuntimeStage(prerenderStore, result) {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(()=>result);\n }\n return result;\n} //# sourceMappingURL=dynamic-rendering.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQzs7Ozs7Ozs7Ozs7O0lBNlZlQSxRQUFRO2VBQVJBOztJQTRYSkMsWUFBWTtlQUFaQTs7SUFwYklDLDJDQUEyQztlQUEzQ0E7O0lBckNBQyxrQ0FBa0M7ZUFBbENBOztJQXVMQUMsbUJBQW1CO2VBQW5CQTs7SUFrSUFDLHFCQUFxQjtlQUFyQkE7O0lBNUhBQyxvQkFBb0I7ZUFBcEJBOztJQXJYQUMsMEJBQTBCO2VBQTFCQTs7SUFVQUMsNEJBQTRCO2VBQTVCQTs7SUFtYkFDLDZCQUE2QjtlQUE3QkE7O0lBWEFDLGdDQUFnQztlQUFoQ0E7O0lBOFRBQyxzQkFBc0I7ZUFBdEJBOztJQWhYQUMsd0JBQXdCO2VBQXhCQTs7SUE1V0FDLHFCQUFxQjtlQUFyQkE7O0lBc1NBQyxpQkFBaUI7ZUFBakJBOztJQXdDQUMsMkJBQTJCO2VBQTNCQTs7SUFxVEFDLHlCQUF5QjtlQUF6QkE7O0lBdG5CQUMseUJBQXlCO2VBQXpCQTs7SUE2UEFDLG9CQUFvQjtlQUFwQkE7O0lBNFlBQyx3QkFBd0I7ZUFBeEJBOztJQS9qQkFDLGdDQUFnQztlQUFoQ0E7O0lBdWVBQyx5QkFBeUI7ZUFBekJBOztJQTljQUMsK0JBQStCO2VBQS9CQTs7SUF1RUFDLHFDQUFxQztlQUFyQ0E7O0lBZ0VIQyxzQ0FBc0M7ZUFBdENBOztJQXFQR0MscUJBQXFCO2VBQXJCQTs7SUE5UEFDLHNCQUFzQjtlQUF0QkE7OzswRUE5VEU7Z0RBRWlCO3FEQUNHOzBEQUkvQjtzREFDMEI7bURBQ0U7K0NBTTVCO3VDQUM0QjswQ0FDRDs0Q0FDSDs7Ozs7O0FBRS9CLE1BQU1DLGNBQWMsT0FBT0MsT0FBQUEsT0FBSyxDQUFDQyxpQkFBaUIsS0FBSztBQXdDaEQsU0FBU3RCLDJCQUNkdUIsc0JBQTJDO0lBRTNDLE9BQU87UUFD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XHNyY1xcc2VydmVyXFxhcHAtcmVuZGVyXFxkeW5hbWljLXJlbmRlcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgY2VydGFpbiBwcm9wZXJ0aWVzXG4gKiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29kZSBzbyB0aGF0IE5leHQuanMgY2FuIG1ha2UgZGVjaXNpb25zIG9uIGhvdyB0byBoYW5kbGVcbiAqIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBpbiBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIHN1Y2ggYXMgcHJlLXJlbmRlcmluZywgcmVzdW1pbmcsIGFuZCBTU1IuXG4gKlxuICogVG9kYXkgTmV4dC5qcyB0cmVhdHMgYWxsIGNvZGUgYXMgcG90ZW50aWFsbHkgc3RhdGljLiBDZXJ0YWluIEFQSXMgbWF5IG9ubHkgbWFrZSBzZW5zZSB3aGVuIGR5bmFtaWNhbGx5IHJlbmRlcmluZy5cbiAqIFRyYWRpdGlvbmFsbHkgdGhpcyBtZWFudCBkZW9wdGluZyB0aGUgZW50aXJlIHJlbmRlciB0byBkeW5hbWljIGhvd2V2ZXIgd2l0aCBQUFIgd2UgY2FuIG5vdyBkZW9wdCBwYXJ0c1xuICogb2YgYSBSZWFjdCB0cmVlIGFzIGR5bmFtaWMgd2hpbGUgc3RpbGwga2VlcGluZyBvdGhlciBwYXJ0cyBzdGF0aWMuIFRoZXJlIGFyZSByZWFsbHkgdHdvIGRpZmZlcmVudCBraW5kcyBvZlxuICogRHluYW1pYyBpbmRpY2F0aW9ucy5cbiAqXG4gKiBUaGUgZmlyc3QgaXMgc2ltcGx5IGFuIGludGVudGlvbiB0byBiZSBkeW5hbWljLiB1bnN0YWJsZV9ub1N0b3JlIGlzIGFuIGV4YW1wbGUgb2YgdGhpcyB3aGVyZVxuICogdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSBzaW1wbHkgZGVjbGFyZXMgdGhhdCB0aGUgY3VycmVudCBzY29wZSBpcyBkeW5hbWljIGJ1dCBpZiB5b3UgdXNlIGl0XG4gKiBpbnNpZGUgdW5zdGFibGVfY2FjaGUgaXQgY2FuIHN0aWxsIGJlIGNhY2hlZC4gVGhpcyB0eXBlIG9mIGluZGljYXRpb24gY2FuIGJlIHJlbW92ZWQgaWYgd2UgZXZlclxuICogbWFrZSB0aGUgZGVmYXVsdCBkeW5hbWljIHRvIGJlZ2luIHdpdGggYmVjYXVzZSB0aGUgb25seSB3YXkgeW91IHdvdWxkIGV2ZXIgYmUgc3RhdGljIGlzIGluc2lkZVxuICogYSBjYWNoZSBzY29wZSB3aGljaCB0aGlzIGluZGljYXRpb24gZG9lcyBub3QgYWZmZWN0LlxuICpcbiAqIFRoZSBzZWNvbmQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IGEgZHluYW1pYyBkYXRhIHNvdXJjZSB3YXMgcmVhZC4gVGhpcyBpcyBhIHN0cm9uZ2VyIGZvcm0gb2YgZHluYW1pY1xuICogYmVjYXVzZSBpdCBtZWFucyB0aGF0IGl0IGlzIGluYXBwcm9wcmlhdGUgdG8gY2FjaGUgdGhpcyBhdCBhbGwuIHVzaW5nIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBpbnNpZGVcbiAqIHVuc3RhYmxlX2NhY2hlIHNob3VsZCBlcnJvci4gSWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgZHluYW1pYyBkYXRhIGluc2lkZSB1bnN0YWJsZV9jYWNoZSB5b3Ugc2hvdWxkXG4gKiByZWFkIHRoYXQgZGF0YSBvdXRzaWRlIHRoZSBjYWNoZSBhbmQgcGFzcyBpdCBpbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLlxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya1N0b3JlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgdHlwZSB7XG4gIFdvcmtVbml0U3RvcmUsXG4gIFJlcXVlc3RTdG9yZSxcbiAgUHJlcmVuZGVyU3RvcmVMZWdhY3ksXG4gIFByZXJlbmRlclN0b3JlTW9kZXJuLFxuICBQcmVyZW5kZXJTdG9yZU1vZGVyblJ1bnRpbWUsXG59IGZyb20gJy4uL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5cbi8vIE9uY2UgcG9zdHBvbmUgaXMgaW4gc3RhYmxlIHdlIHNob3VsZCBzd2l0Y2ggdG8gaW1wb3J0aW5nIHRoZSBwb3N0cG9uZSBleHBvcnQgZGlyZWN0bHlcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgRHluYW1pY1NlcnZlckVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHQnXG5pbXBvcnQgeyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0J1xuaW1wb3J0IHtcbiAgZ2V0UnVudGltZVN0YWdlUHJvbWlzZSxcbiAgd29ya1VuaXRBc3luY1N0b3JhZ2UsXG59IGZyb20gJy4vd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyB3b3JrQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnXG5pbXBvcnQgeyBtYWtlSGFuZ2luZ1Byb21pc2UgfSBmcm9tICcuLi9keW5hbWljLXJlbmRlcmluZy11dGlscydcbmltcG9ydCB7XG4gIE1FVEFEQVRBX0JPVU5EQVJZX05BTUUsXG4gIFZJRVdQT1JUX0JPVU5EQVJZX05BTUUsXG4gIE9VVExFVF9CT1VOREFSWV9OQU1FLFxuICBST09UX0xBWU9VVF9CT1VOREFSWV9OQU1FLFxufSBmcm9tICcuLi8uLi9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbnN0YW50cydcbmltcG9ydCB7IHNjaGVkdWxlT25OZXh0VGljayB9IGZyb20gJy4uLy4uL2xpYi9zY2hlZHVsZXInXG5pbXBvcnQgeyBCYWlsb3V0VG9DU1JFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyJ1xuaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2ludmFyaWFudC1lcnJvcidcblxuY29uc3QgaGFzUG9zdHBvbmUgPSB0eXBlb2YgUmVhY3QudW5zdGFibGVfcG9zdHBvbmUgPT09ICdmdW5jdGlvbidcblxuZXhwb3J0IHR5cGUgRHluYW1pY0FjY2VzcyA9IHtcbiAgLyoqXG4gICAqIElmIGRlYnVnZ2luZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIHN0YWNrIHRyYWNlIG9mIHdoZXJlIHRoZSBkeW5hbWljIGFjY2Vzc1xuICAgKiBvY2N1cnJlZC4gVGhpcyBpcyB1c2VkIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiB0byB0aGUgdXNlciBhYm91dCB3aHlcbiAgICogdGhlaXIgcGFnZSBpcyBiZWluZyByZW5kZXJlZCBkeW5hbWljYWxseS5cbiAgICovXG4gIHN0YWNrPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBleHByZXNzaW9uIHRoYXQgd2FzIGFjY2Vzc2VkIGR5bmFtaWNhbGx5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogc3RyaW5nXG59XG5cbi8vIFN0b3JlcyBkeW5hbWljIHJlYXNvbnMgdXNlZCBkdXJpbmcgYW4gUlNDIHJlbmRlci5cbmV4cG9ydCB0eXBlIER5bmFtaWNUcmFja2luZ1N0YXRlID0ge1xuICAvKipcbiAgICogV2hlbiB0cnVlLCBzdGFjayBpbmZvcm1hdGlvbiB3aWxsIGFsc28gYmUgdHJhY2tlZCBkdXJpbmcgZHluYW1pYyBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzOiBib29sZWFuIHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIFRoZSBkeW5hbWljIGFjY2Vzc2VzIHRoYXQgb2NjdXJyZWQgZHVyaW5nIHRoZSByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG5cbiAgc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjazogbnVsbCB8IEVycm9yXG59XG5cbi8vIFN0b3JlcyBkeW5hbWljIHJlYXNvbnMgdXNlZCBkdXJpbmcgYW4gU1NSIHJlbmRlci5cbmV4cG9ydCB0eXBlIER5bmFtaWNWYWxpZGF0aW9uU3RhdGUgPSB7XG4gIGhhc1N1c3BlbnNlQWJvdmVCb2R5OiBib29sZWFuXG4gIGhhc0R5bmFtaWNNZXRhZGF0YTogYm9vbGVhblxuICBoYXNEeW5hbWljVmlld3BvcnQ6IGJvb2xlYW5cbiAgaGFzQWxsb3dlZER5bmFtaWM6IGJvb2xlYW5cbiAgZHluYW1pY0Vycm9yczogQXJyYXk8RXJyb3I+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljVHJhY2tpbmdTdGF0ZShcbiAgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlczogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogRHluYW1pY1RyYWNraW5nU3RhdGUge1xuICByZXR1cm4ge1xuICAgIGlzRGVidWdEeW5hbWljQWNjZXNzZXMsXG4gICAgZHluYW1pY0FjY2Vzc2VzOiBbXSxcbiAgICBzeW5jRHluYW1pY0Vycm9yV2l0aFN0YWNrOiBudWxsLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljVmFsaWRhdGlvblN0YXRlKCk6IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUge1xuICByZXR1cm4ge1xuICAgIGhhc1N1c3BlbnNlQWJvdmVCb2R5OiBmYWxzZSxcbiAgICBoYXNEeW5hbWljTWV0YWRhdGE6IGZhbHNlLFxuICAgIGhhc0R5bmFtaWNWaWV3cG9ydDogZmFsc2UsXG4gICAgaGFzQWxsb3dlZER5bmFtaWM6IGZhbHNlLFxuICAgIGR5bmFtaWNFcnJvcnM6IFtdLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJzdER5bmFtaWNSZWFzb24oXG4gIHRyYWNraW5nU3RhdGU6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiB1bmRlZmluZWQgfCBzdHJpbmcge1xuICByZXR1cm4gdHJhY2tpbmdTdGF0ZS5keW5hbWljQWNjZXNzZXNbMF0/LmV4cHJlc3Npb25cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB0aGF0IHRoZSBjdXJyZW50IHNjb3BlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGR5bmFtaWMuXG4gKlxuICogSW4gbW9zdCBjYXNlcyB0aGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgYnV0IGlmIGNhbGxlZCBkdXJpbmdcbiAqIGEgUFBSIHByZXJlbmRlciBpdCB3aWxsIHBvc3Rwb25lIHRoZSBjdXJyZW50IHN1Yi10cmVlIGFuZCBjYWxsaW5nXG4gKiBpdCBkdXJpbmcgYSBub3JtYWwgcHJlcmVuZGVyIHdpbGwgY2F1c2UgdGhlIGVudGlyZSBwcmVyZW5kZXIgdG8gYWJvcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDdXJyZW50U2NvcGVBc0R5bmFtaWMoXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHdvcmtVbml0U3RvcmU6IHVuZGVmaW5lZCB8IEV4Y2x1ZGU8V29ya1VuaXRTdG9yZSwgUHJlcmVuZGVyU3RvcmVNb2Rlcm4+LFxuICBleHByZXNzaW9uOiBzdHJpbmdcbik6IHZvaWQge1xuICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdjYWNoZSc6XG4gICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgIC8vIEluc2lkZSBjYWNoZSBzY29wZXMsIG1hcmtpbmcgYSBzY29wZSBhcyBkeW5hbWljIGhhcyBubyBlZmZlY3QsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIG91dGVyIGNhY2hlIHNjb3BlIGNyZWF0ZXMgYSBjYWNoZSBib3VuZGFyeS4gVGhpcyBpc1xuICAgICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAgIC8vIGZvcmJpZGRlbiBpbnNpZGUgYSBjYWNoZSBzY29wZS5cbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgLy8gQSBwcml2YXRlIGNhY2hlIHNjb3BlIGlzIGFscmVhZHkgZHluYW1pYyBieSBkZWZpbml0aW9uLlxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZyBkeW5hbWljIHJlbmRlcmluZyBvciB3ZSdyZSBmb3JjaW5nIHN0YXRpYyByZW5kZXJpbmcsIHdlXG4gIC8vIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIHRoZSBlbnRpcmUgcGFnZSBpcyBhbHJlYWR5IGR5bmFtaWNcbiAgLy8gb3IgaXQncyBzdGF0aWMgYW5kIGl0IHNob3VsZCBub3QgdGhyb3cgb3IgcG9zdHBvbmUgaGVyZS5cbiAgaWYgKHN0b3JlLmZvcmNlRHluYW1pYyB8fCBzdG9yZS5mb3JjZVN0YXRpYykgcmV0dXJuXG5cbiAgaWYgKHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoXG4gICAgICBgUm91dGUgJHtzdG9yZS5yb3V0ZX0gd2l0aCBcXGBkeW5hbWljID0gXCJlcnJvclwiXFxgIGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1hbmQtZHluYW1pYyNkeW5hbWljLXJlbmRlcmluZ2BcbiAgICApXG4gIH1cblxuICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgcmV0dXJuIHBvc3Rwb25lV2l0aFRyYWNraW5nKFxuICAgICAgICAgIHN0b3JlLnJvdXRlLFxuICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgd29ya1VuaXRTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgICAgICAgKVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgIHdvcmtVbml0U3RvcmUucmV2YWxpZGF0ZSA9IDBcblxuICAgICAgICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nLCBidXQgd2UgYXJlIGdlbmVyYXRpbmcgYSBzdGF0aWMgcGFnZS4gV2UgbmVlZFxuICAgICAgICAvLyB0byBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgY29uc3QgZXJyID0gbmV3IER5bmFtaWNTZXJ2ZXJFcnJvcihcbiAgICAgICAgICBgUm91dGUgJHtzdG9yZS5yb3V0ZX0gY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9keW5hbWljLXNlcnZlci1lcnJvcmBcbiAgICAgICAgKVxuICAgICAgICBzdG9yZS5keW5hbWljVXNhZ2VEZXNjcmlwdGlvbiA9IGV4cHJlc3Npb25cbiAgICAgICAgc3RvcmUuZHluYW1pY1VzYWdlU3RhY2sgPSBlcnIuc3RhY2tcblxuICAgICAgICB0aHJvdyBlcnJcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdvcmtVbml0U3RvcmUudXNlZER5bmFtaWMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSB1c2VkIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGhvdXQgY2FjaGVDb21wb25lbnRzIG9yIFBQUi5cbiAqIFdoZW4gY2FsbGVkIGR1cmluZyBhIGJ1aWxkIGl0IHdpbGwgY2F1c2UgTmV4dC5qcyB0byBjb25zaWRlciB0aGUgcm91dGUgYXMgZHluYW1pYy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHN0b3JlOiBXb3JrU3RvcmUsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZUxlZ2FjeVxuKTogbmV2ZXIge1xuICAvLyBXZSBhcmVuJ3QgcHJlcmVuZGVyaW5nIGJ1dCB3ZSBhcmUgZ2VuZXJhdGluZyBhIHN0YXRpYyBwYWdlLiBXZSBuZWVkIHRvIGJhaWwgb3V0IG9mIHN0YXRpYyBnZW5lcmF0aW9uXG4gIGNvbnN0IGVyciA9IG5ldyBEeW5hbWljU2VydmVyRXJyb3IoXG4gICAgYFJvdXRlICR7c3RvcmUucm91dGV9IGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIFxcYCR7ZXhwcmVzc2lvbn1cXGAuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZHluYW1pYy1zZXJ2ZXItZXJyb3JgXG4gIClcblxuICBwcmVyZW5kZXJTdG9yZS5yZXZhbGlkYXRlID0gMFxuXG4gIHN0b3JlLmR5bmFtaWNVc2FnZURlc2NyaXB0aW9uID0gZXhwcmVzc2lvblxuICBzdG9yZS5keW5hbWljVXNhZ2VTdGFjayA9IGVyci5zdGFja1xuXG4gIHRocm93IGVyclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdHJhY2sgd2hldGhlciBzb21ldGhpbmcgZHluYW1pYyBoYXBwZW5lZCBldmVuIHdoZW5cbiAqIHdlIGFyZSBpbiBhIGR5bmFtaWMgcmVuZGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgRGV2IHdoZXJlIGFsbCByZW5kZXJzIGFyZSBkeW5hbWljIGJ1dFxuICogd2Ugc3RpbGwgdHJhY2sgd2hldGhlciBkeW5hbWljIEFQSXMgd2VyZSBhY2Nlc3NlZCBmb3IgaGVscGZ1bCBtZXNzYWdpbmdcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIod29ya1VuaXRTdG9yZTogV29ya1VuaXRTdG9yZSkge1xuICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAvLyBJbnNpZGUgY2FjaGUgc2NvcGVzLCBtYXJraW5nIGEgc2NvcGUgYXMgZHluYW1pYyBoYXMgbm8gZWZmZWN0LFxuICAgICAgLy8gYmVjYXVzZSB0aGUgb3V0ZXIgY2FjaGUgc2NvcGUgY3JlYXRlcyBhIGNhY2hlIGJvdW5kYXJ5LiBUaGlzIGlzXG4gICAgICAvLyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gcmVhZGluZyBhIGR5bmFtaWMgZGF0YSBzb3VyY2UsIHdoaWNoIGlzXG4gICAgICAvLyBmb3JiaWRkZW4gaW5zaWRlIGEgY2FjaGUgc2NvcGUuXG4gICAgICByZXR1cm5cbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIC8vIEEgcHJpdmF0ZSBjYWNoZSBzY29wZSBpcyBhbHJlYWR5IGR5bmFtaWMgYnkgZGVmaW5pdGlvbi5cbiAgICAgIHJldHVyblxuICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgYnJlYWtcbiAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdvcmtVbml0U3RvcmUudXNlZER5bmFtaWMgPSB0cnVlXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrVW5pdFN0b3JlIHNhdGlzZmllcyBuZXZlclxuICB9XG59XG5cbmZ1bmN0aW9uIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIHByZXJlbmRlclN0b3JlOiBQcmVyZW5kZXJTdG9yZU1vZGVyblxuKTogdm9pZCB7XG4gIGNvbnN0IHJlYXNvbiA9IGBSb3V0ZSAke3JvdXRlfSBuZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQgJHtleHByZXNzaW9ufS5gXG5cbiAgY29uc3QgZXJyb3IgPSBjcmVhdGVQcmVyZW5kZXJJbnRlcnJ1cHRlZEVycm9yKHJlYXNvbilcblxuICBwcmVyZW5kZXJTdG9yZS5jb250cm9sbGVyLmFib3J0KGVycm9yKVxuXG4gIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgZHluYW1pY1RyYWNraW5nLmR5bmFtaWNBY2Nlc3Nlcy5wdXNoKHtcbiAgICAgIC8vIFdoZW4gd2UgYXJlbid0IGRlYnVnZ2luZywgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBlcnJvciBmb3IgdGhlXG4gICAgICAvLyBzdGFjayB0cmFjZS5cbiAgICAgIHN0YWNrOiBkeW5hbWljVHJhY2tpbmcuaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlc1xuICAgICAgICA/IG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXhwcmVzc2lvbixcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydE9uU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGVycm9yV2l0aFN0YWNrOiBFcnJvcixcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuXG4pOiB2b2lkIHtcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID0gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKHJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSlcbiAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ugc2V0IHRoaXMgdHJhY2tpbmcgdmFsdWUgYWZ0ZXIgYWJvcnRpbmcuIEFib3J0cyBhcmUgZXhlY3V0ZWRcbiAgLy8gc3luY2hyb25vdXNseSBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBhYm9ydCBkdXJpbmcgcmVuZGVyIGl0c2VsZi4gQnkgc2V0dGluZyB0aGlzXG4gIC8vIHZhbHVlIGxhdGUgd2UgY2FuIHVzZSBpdCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhYm9ydGVkIHRhc2tzIGFyZSB0aGUgdGFzayB0aGF0XG4gIC8vIGNhbGxlZCB0aGUgc3luYyBJTyBleHByZXNzaW9uIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGlmIChkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9PT0gbnVsbCkge1xuICAgICAgZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2sgPSBlcnJvcldpdGhTdGFja1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2tTeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3NJbkRldihcbiAgcmVxdWVzdFN0b3JlOiBSZXF1ZXN0U3RvcmVcbik6IHZvaWQge1xuICAvLyBXZSBkb24ndCBhY3R1YWxseSBoYXZlIGEgY29udHJvbGxlciB0byBhYm9ydCBidXQgd2UgZG8gdGhlIHNlbWFudGljIGVxdWl2YWxlbnQgYnlcbiAgLy8gYWR2YW5jaW5nIHRoZSByZXF1ZXN0IHN0b3JlIG91dCBvZiBwcmVyZW5kZXIgbW9kZVxuICByZXF1ZXN0U3RvcmUucHJlcmVuZGVyUGhhc2UgPSBmYWxzZVxufVxuXG4vKipcbiAqIHVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gcHJlcmVuZGVyaW5nIHdpdGggY2FjaGVDb21wb25lbnRzLiBJZiB3ZSBhcmUgZG9pbmcgYVxuICogcHJvc3BlY3RpdmUgcHJlcmVuZGVyIHdlIGRvbid0IGFjdHVhbGx5IGFib3J0IGJlY2F1c2Ugd2Ugd2FudCB0byBkaXNjb3ZlclxuICogYWxsIGNhY2hlcyBmb3IgdGhlIHNoZWxsLiBJZiB0aGlzIGlzIHRoZSBhY3R1YWwgcHJlcmVuZGVyIHdlIGRvIGFib3J0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHByZXJlbmRlclN0b3JlIGJ1dCB0aGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgd2UncmVcbiAqIGFjdHVhbGx5IHJ1bm5pbmcgaW4gY2FjaGVDb21wb25lbnRzIG1vZGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydEFuZFRocm93T25TeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmcsXG4gIGVycm9yV2l0aFN0YWNrOiBFcnJvcixcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuXG4pOiBuZXZlciB7XG4gIGNvbnN0IHByZXJlbmRlclNpZ25hbCA9IHByZXJlbmRlclN0b3JlLmNvbnRyb2xsZXIuc2lnbmFsXG4gIGlmIChwcmVyZW5kZXJTaWduYWwuYWJvcnRlZCA9PT0gZmFsc2UpIHtcbiAgICAvLyBUT0RPIGl0IHdvdWxkIGJlIGJldHRlciB0byBtb3ZlIHRoaXMgYWJvcnRlZCBjaGVjayBpbnRvIHRoZSBjYWxsc2l0ZSBzbyB3ZSBjYW4gYXZvaWQgbWFraW5nXG4gICAgLy8gdGhlIGVycm9yIG9iamVjdCB3aGVuIGl0IGlzbid0IHJlbGV2YW50IHRvIHRoZSBhYm9ydGluZyBvZiB0aGUgcHJlcmVuZGVyIGhvd2V2ZXJcbiAgICAvLyBzaW5jZSB3ZSBuZWVkIHRoZSB0aHJvdyBzZW1hbnRpY3MgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlIGFib3J0IGl0IGlzIGVhc2llciB0byBsYW5kXG4gICAgLy8gdGhpcyB3YXkuIFNlZSBob3cgdGhpcyB3YXMgaGFuZGxlZCB3aXRoIGBhYm9ydE9uU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzYCBmb3IgYSBjbG9zZXJcbiAgICAvLyB0byBpZGVhbCBpbXBsZW1lbnRhdGlvblxuICAgIGFib3J0T25TeW5jaHJvbm91c0R5bmFtaWNEYXRhQWNjZXNzKHJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZSlcbiAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBzZXQgdGhpcyB0cmFja2luZyB2YWx1ZSBhZnRlciBhYm9ydGluZy4gQWJvcnRzIGFyZSBleGVjdXRlZFxuICAgIC8vIHN5bmNocm9ub3VzbHkgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3UgYWJvcnQgZHVyaW5nIHJlbmRlciBpdHNlbGYuIEJ5IHNldHRpbmcgdGhpc1xuICAgIC8vIHZhbHVlIGxhdGUgd2UgY2FuIHVzZSBpdCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhYm9ydGVkIHRhc2tzIGFyZSB0aGUgdGFzayB0aGF0XG4gICAgLy8gY2FsbGVkIHRoZSBzeW5jIElPIGV4cHJlc3Npb24gaW4gdGhlIGZpcnN0IHBsYWNlLlxuICAgIGNvbnN0IGR5bmFtaWNUcmFja2luZyA9IHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgIGlmIChkeW5hbWljVHJhY2tpbmcpIHtcbiAgICAgIGlmIChkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9PT0gbnVsbCkge1xuICAgICAgICBkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayA9IGVycm9yV2l0aFN0YWNrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRocm93IGNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IoXG4gICAgYFJvdXRlICR7cm91dGV9IG5lZWRzIHRvIGJhaWwgb3V0IG9mIHByZXJlbmRlcmluZyBhdCB0aGlzIHBvaW50IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LmBcbiAgKVxufVxuXG4vKipcbiAqIFVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gZHluYW1pY2FsbHkgcHJlcmVuZGVyaW5nIHdpdGggZHluYW1pY0lPLlxuICogV2UgZG9uJ3Qgd2FudCB0byBlcnJvciwgYmVjYXVzZSBpdCdzIGJldHRlciB0byByZXR1cm4gc29tZXRoaW5nXG4gKiAoYW5kIHdlJ3ZlIGFscmVhZHkgYWJvcnRlZCB0aGUgcmVuZGVyIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgc3luYyBkeW5hbWljIGVycm9yIG9jY3VyZWQpLFxuICogYnV0IHdlIHNob3VsZCBsb2cgYW4gZXJyb3Igc2VydmVyLXNpZGUuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhcm5PblN5bmNEeW5hbWljRXJyb3IoZHluYW1pY1RyYWNraW5nOiBEeW5hbWljVHJhY2tpbmdTdGF0ZSkge1xuICBpZiAoZHluYW1pY1RyYWNraW5nLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyB0aGUgc2VydmVyIGRpZCBzb21ldGhpbmcgc3luYyBkeW5hbWljLCBsaWtlbHlcbiAgICAvLyBsZWFkaW5nIHRvIGFuIGVhcmx5IHRlcm1pbmF0aW9uIG9mIHRoZSBwcmVyZW5kZXIuXG4gICAgY29uc29sZS5lcnJvcihkeW5hbWljVHJhY2tpbmcuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaylcbiAgfVxufVxuXG4vLyBGb3Igbm93IHRoZXNlIGltcGxlbWVudGF0aW9ucyBhcmUgdGhlIHNhbWUgc28gd2UganVzdCByZWV4cG9ydFxuZXhwb3J0IGNvbnN0IHRyYWNrU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2Vzc0luRGV2ID1cbiAgdHJhY2tTeW5jaHJvbm91c1BsYXRmb3JtSU9BY2Nlc3NJbkRldlxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdpbGwgY2FsbCBgUmVhY3QucG9zdHBvbmVgIHRoYXQgdGhyb3dzIHRoZSBwb3N0cG9uZWQgZXJyb3IuXG4gKi9cbnR5cGUgUG9zdHBvbmVQcm9wcyA9IHtcbiAgcmVhc29uOiBzdHJpbmdcbiAgcm91dGU6IHN0cmluZ1xufVxuZXhwb3J0IGZ1bmN0aW9uIFBvc3Rwb25lKHsgcmVhc29uLCByb3V0ZSB9OiBQb3N0cG9uZVByb3BzKTogbmV2ZXIge1xuICBjb25zdCBwcmVyZW5kZXJTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3QgZHluYW1pY1RyYWNraW5nID1cbiAgICBwcmVyZW5kZXJTdG9yZSAmJiBwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcidcbiAgICAgID8gcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nXG4gICAgICA6IG51bGxcbiAgcG9zdHBvbmVXaXRoVHJhY2tpbmcocm91dGUsIHJlYXNvbiwgZHluYW1pY1RyYWNraW5nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zdHBvbmVXaXRoVHJhY2tpbmcoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZyxcbiAgZHluYW1pY1RyYWNraW5nOiBudWxsIHwgRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IG5ldmVyIHtcbiAgYXNzZXJ0UG9zdHBvbmUoKVxuICBpZiAoZHluYW1pY1RyYWNraW5nKSB7XG4gICAgZHluYW1pY1RyYWNraW5nLmR5bmFtaWNBY2Nlc3Nlcy5wdXNoKHtcbiAgICAgIC8vIFdoZW4gd2UgYXJlbid0IGRlYnVnZ2luZywgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBlcnJvciBmb3IgdGhlXG4gICAgICAvLyBzdGFjayB0cmFjZS5cbiAgICAgIHN0YWNrOiBkeW5hbWljVHJhY2tpbmcuaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlc1xuICAgICAgICA/IG5ldyBFcnJvcigpLnN0YWNrXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXhwcmVzc2lvbixcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudW5zdGFibGVfcG9zdHBvbmUoY3JlYXRlUG9zdHBvbmVSZWFzb24ocm91dGUsIGV4cHJlc3Npb24pKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQb3N0cG9uZVJlYXNvbihyb3V0ZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICBgUm91dGUgJHtyb3V0ZX0gbmVlZHMgdG8gYmFpbCBvdXQgb2YgcHJlcmVuZGVyaW5nIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIGAgK1xuICAgIGBSZWFjdCB0aHJvd3MgdGhpcyBzcGVjaWFsIG9iamVjdCB0byBpbmRpY2F0ZSB3aGVyZS4gSXQgc2hvdWxkIG5vdCBiZSBjYXVnaHQgYnkgYCArXG4gICAgYHlvdXIgb3duIHRyeS9jYXRjaC4gTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHByLWNhdWdodC1lcnJvcmBcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEeW5hbWljUG9zdHBvbmUoZXJyOiB1bmtub3duKSB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJlxuICAgIGVyciAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiAoZXJyIGFzIGFueSkubWVzc2FnZSA9PT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGlzRHluYW1pY1Bvc3Rwb25lUmVhc29uKChlcnIgYXMgYW55KS5tZXNzYWdlKVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbihyZWFzb246IHN0cmluZykge1xuICByZXR1cm4gKFxuICAgIHJlYXNvbi5pbmNsdWRlcyhcbiAgICAgICduZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQnXG4gICAgKSAmJlxuICAgIHJlYXNvbi5pbmNsdWRlcyhcbiAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9wcHItY2F1Z2h0LWVycm9yJ1xuICAgIClcbiAgKVxufVxuXG5pZiAoaXNEeW5hbWljUG9zdHBvbmVSZWFzb24oY3JlYXRlUG9zdHBvbmVSZWFzb24oJyUlJScsICdeXl4nKSkgPT09IGZhbHNlKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnSW52YXJpYW50OiBpc0R5bmFtaWNQb3N0cG9uZSBtaXNpZGVudGlmaWVkIGEgcG9zdHBvbmUgcmVhc29uLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMnXG4gIClcbn1cblxuY29uc3QgTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQgPSAnTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQnXG5cbmZ1bmN0aW9uIGNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IobWVzc2FnZTogc3RyaW5nKTogRXJyb3Ige1xuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuICA7KGVycm9yIGFzIGFueSkuZGlnZXN0ID0gTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURURcbiAgcmV0dXJuIGVycm9yXG59XG5cbnR5cGUgRGlnZXN0RXJyb3IgPSBFcnJvciAmIHtcbiAgZGlnZXN0OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlcmVuZGVySW50ZXJydXB0ZWRFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIERpZ2VzdEVycm9yIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmXG4gICAgZXJyb3IgIT09IG51bGwgJiZcbiAgICAoZXJyb3IgYXMgYW55KS5kaWdlc3QgPT09IE5FWFRfUFJFUkVOREVSX0lOVEVSUlVQVEVEICYmXG4gICAgJ25hbWUnIGluIGVycm9yICYmXG4gICAgJ21lc3NhZ2UnIGluIGVycm9yICYmXG4gICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvclxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY2Nlc3NlZER5bmFtaWNEYXRhKFxuICBkeW5hbWljQWNjZXNzZXM6IEFycmF5PER5bmFtaWNBY2Nlc3M+XG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGR5bmFtaWNBY2Nlc3Nlcy5sZW5ndGggPiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lRHluYW1pY0FjY2VzcyhcbiAgc2VydmVyRHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGUsXG4gIGNsaWVudER5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pOiBEeW5hbWljVHJhY2tpbmdTdGF0ZVsnZHluYW1pY0FjY2Vzc2VzJ10ge1xuICAvLyBXZSBtdXRhdGUgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlIHdlIGFyZSBubyBsb25nZXIgd3JpdGluZ1xuICAvLyB0byB0aGUgZHluYW1pY1RyYWNraW5nU3RhdGUgYW5kIGl0J3MgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVhdGluZyBhIG5ld1xuICAvLyBhcnJheS5cbiAgc2VydmVyRHluYW1pYy5keW5hbWljQWNjZXNzZXMucHVzaCguLi5jbGllbnREeW5hbWljLmR5bmFtaWNBY2Nlc3NlcylcbiAgcmV0dXJuIHNlcnZlckR5bmFtaWMuZHluYW1pY0FjY2Vzc2VzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREeW5hbWljQVBJQWNjZXNzZXMoXG4gIGR5bmFtaWNBY2Nlc3NlczogQXJyYXk8RHluYW1pY0FjY2Vzcz5cbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGR5bmFtaWNBY2Nlc3Nlc1xuICAgIC5maWx0ZXIoXG4gICAgICAoYWNjZXNzKTogYWNjZXNzIGlzIFJlcXVpcmVkPER5bmFtaWNBY2Nlc3M+ID0+XG4gICAgICAgIHR5cGVvZiBhY2Nlc3Muc3RhY2sgPT09ICdzdHJpbmcnICYmIGFjY2Vzcy5zdGFjay5sZW5ndGggPiAwXG4gICAgKVxuICAgIC5tYXAoKHsgZXhwcmVzc2lvbiwgc3RhY2sgfSkgPT4ge1xuICAgICAgc3RhY2sgPSBzdGFja1xuICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgXCJFcnJvcjogXCIgcHJlZml4IGZyb20gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHN0YWNrIHRyYWNlIGFzXG4gICAgICAgIC8vIHdlbGwgYXMgdGhlIGZpcnN0IDQgbGluZXMgb2YgdGhlIHN0YWNrIHRyYWNlIHdoaWNoIGlzIHRoZSBkaXN0YW5jZVxuICAgICAgICAvLyBmcm9tIHRoZSB1c2VyIGNvZGUgYW5kIHRoZSBgbmV3IEVycm9yKCkuc3RhY2tgIGNhbGwuXG4gICAgICAgIC5zbGljZSg0KVxuICAgICAgICAuZmlsdGVyKChsaW5lKSA9PiB7XG4gICAgICAgICAgLy8gRXhjbHVkZSBOZXh0LmpzIGludGVybmFscyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnbm9kZV9tb2R1bGVzL25leHQvJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgYW5vbnltb3VzIGZ1bmN0aW9ucyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnICg8YW5vbnltb3VzPiknKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRXhjbHVkZSBOb2RlLmpzIGludGVybmFscyBmcm9tIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgICAgICBpZiAobGluZS5pbmNsdWRlcygnIChub2RlOicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICAgIHJldHVybiBgRHluYW1pYyBBUEkgVXNhZ2UgRGVidWcgLSAke2V4cHJlc3Npb259OlxcbiR7c3RhY2t9YFxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIGFzc2VydFBvc3Rwb25lKCkge1xuICBpZiAoIWhhc1Bvc3Rwb25lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFyaWFudDogUmVhY3QudW5zdGFibGVfcG9zdHBvbmUgaXMgbm90IGRlZmluZWQuIFRoaXMgc3VnZ2VzdHMgdGhlIHdyb25nIHZlcnNpb24gb2YgUmVhY3Qgd2FzIGxvYWRlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzYFxuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrIHRvIGFsbG93IHVzIHRvIGFib3J0IGEgcmVuZGVyIHVzaW5nIGEgUG9zdHBvbmUgaW5zdGFuY2UgaW5zdGVhZCBvZiBhbiBFcnJvciB3aGljaCBjaGFuZ2VzIFJlYWN0J3NcbiAqIGFib3J0IHNlbWFudGljcyBzbGlnaHRseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlckluQnJvd3NlckFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb250cm9sbGVyLmFib3J0KG5ldyBCYWlsb3V0VG9DU1JFcnJvcignUmVuZGVyIGluIEJyb3dzZXInKSlcbiAgcmV0dXJuIGNvbnRyb2xsZXIuc2lnbmFsXG59XG5cbi8qKlxuICogSW4gYSBwcmVyZW5kZXIsIHdlIG1heSBlbmQgdXAgd2l0aCBoYW5naW5nIFByb21pc2VzIGFzIGlucHV0cyBkdWUgdGhlbVxuICogc3RhbGxpbmcgb24gY29ubmVjdGlvbigpIG9yIGJlY2F1c2UgdGhleSdyZSBsb2FkaW5nIGR5bmFtaWMgZGF0YS4gSW4gdGhhdFxuICogY2FzZSB3ZSBuZWVkIHRvIGFib3J0IHRoZSBlbmNvZGluZyBvZiBhcmd1bWVudHMgc2luY2UgdGhleSdsbCBuZXZlciBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhhbmdpbmdJbnB1dEFib3J0U2lnbmFsKFxuICB3b3JrVW5pdFN0b3JlOiBXb3JrVW5pdFN0b3JlXG4pOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGlmICh3b3JrVW5pdFN0b3JlLmNhY2hlU2lnbmFsKSB7XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBjYWNoZVNpZ25hbCBpdCBtZWFucyB3ZSdyZSBpbiBhIHByb3NwZWN0aXZlIHJlbmRlci4gSWZcbiAgICAgICAgLy8gdGhlIGlucHV0IHdlJ3JlIHdhaXRpbmcgb24gaXMgY29taW5nIGZyb20gYW5vdGhlciBjYWNoZSwgd2UgZG8gd2FudFxuICAgICAgICAvLyB0byB3YWl0IGZvciBpdCBzbyB0aGF0IHdlIGNhbiByZXNvbHZlIHRoaXMgY2FjaGUgZW50cnkgdG9vLlxuICAgICAgICB3b3JrVW5pdFN0b3JlLmNhY2hlU2lnbmFsLmlucHV0UmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb250cm9sbGVyLmFib3J0KClcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSB3ZSdyZSBpbiB0aGUgZmluYWwgcmVuZGVyIGFuZCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbFxuICAgICAgICAvLyBvdXIgY2FjaGVzIGZpbGxlZC5cbiAgICAgICAgLy8gSWYgdGhlIHByZXJlbmRlciB1c2VzIHN0YWdlcywgd2UgaGF2ZSB3YWl0IHVudGlsIHRoZSBydW50aW1lIHN0YWdlLFxuICAgICAgICAvLyBhdCB3aGljaCBwb2ludCBhbGwgcnVudGltZSBpbnB1dHMgd2lsbCBiZSByZXNvbHZlZC5cbiAgICAgICAgLy8gKG90aGVyd2lzZSwgYSBydW50aW1lIHByZXJlbmRlciBtaWdodCBjb25zaWRlciBgY29va2llcygpYCBoYW5naW5nXG4gICAgICAgIC8vICBldmVuIHRob3VnaCB0aGV5J2QgcmVzb2x2ZSBpbiB0aGUgbmV4dCB0YXNrLilcbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgYmUgd2FpdGluZyBvbiBzb21lIG1pY3JvdGFza3Mgc28gd2VcbiAgICAgICAgLy8gd2FpdCBvbmUgdGljayBiZWZvcmUgZ2l2aW5nIHVwLiBXaGVuIHdlIGdpdmUgdXAsIHdlIHN0aWxsIHdhbnQgdG9cbiAgICAgICAgLy8gcmVuZGVyIHRoZSBjb250ZW50IG9mIHRoaXMgY2FjaGUgYXMgZGVlcGx5IGFzIHdlIGNhbiBzbyB0aGF0IHdlIGNhblxuICAgICAgICAvLyBzdXNwZW5kIGFzIGRlZXBseSBhcyBwb3NzaWJsZSBpbiB0aGUgdHJlZSBvciBub3QgYXQgYWxsIGlmIHdlIGRvbid0XG4gICAgICAgIC8vIGVuZCB1cCB3YWl0aW5nIGZvciB0aGUgaW5wdXQuXG4gICAgICAgIGNvbnN0IHJ1bnRpbWVTdGFnZVByb21pc2UgPSBnZXRSdW50aW1lU3RhZ2VQcm9taXNlKHdvcmtVbml0U3RvcmUpXG4gICAgICAgIGlmIChydW50aW1lU3RhZ2VQcm9taXNlKSB7XG4gICAgICAgICAgcnVudGltZVN0YWdlUHJvbWlzZS50aGVuKCgpID0+XG4gICAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY2hlZHVsZU9uTmV4dFRpY2soKCkgPT4gY29udHJvbGxlci5hYm9ydCgpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250cm9sbGVyLnNpZ25hbFxuICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgIGNhc2UgJ2NhY2hlJzpcbiAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgZGVmYXVsdDpcbiAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFubm90YXRlRHluYW1pY0FjY2VzcyhcbiAgZXhwcmVzc2lvbjogc3RyaW5nLFxuICBwcmVyZW5kZXJTdG9yZTogUHJlcmVuZGVyU3RvcmVNb2Rlcm5cbikge1xuICBjb25zdCBkeW5hbWljVHJhY2tpbmcgPSBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmdcbiAgaWYgKGR5bmFtaWNUcmFja2luZykge1xuICAgIGR5bmFtaWNUcmFja2luZy5keW5hbWljQWNjZXNzZXMucHVzaCh7XG4gICAgICBzdGFjazogZHluYW1pY1RyYWNraW5nLmlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgPyBuZXcgRXJyb3IoKS5zdGFja1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV4cHJlc3Npb24sXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRHluYW1pY1JvdXRlUGFyYW1zKGV4cHJlc3Npb246IHN0cmluZykge1xuICBjb25zdCB3b3JrU3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IHdvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgaWYgKHdvcmtTdG9yZSAmJiB3b3JrVW5pdFN0b3JlKSB7XG4gICAgc3dpdGNoICh3b3JrVW5pdFN0b3JlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgY2FzZSAncHJlcmVuZGVyJzoge1xuICAgICAgICBjb25zdCBmYWxsYmFja1BhcmFtcyA9IHdvcmtVbml0U3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtc1xuICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMgJiYgZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBwcmVyZW5kZXIgd2l0aCBjYWNoZUNvbXBvbmVudHMgc2VtYW50aWNzLiBXZSBhcmUgZ29pbmcgdG9cbiAgICAgICAgICAvLyBoYW5nIGhlcmUgYW5kIG5ldmVyIHJlc29sdmUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY3VycmVudGx5XG4gICAgICAgICAgLy8gcmVuZGVyaW5nIGNvbXBvbmVudCB0byBlZmZlY3RpdmVseSBiZSBhIGR5bmFtaWMgaG9sZS5cbiAgICAgICAgICBSZWFjdC51c2UoXG4gICAgICAgICAgICBtYWtlSGFuZ2luZ1Byb21pc2UoXG4gICAgICAgICAgICAgIHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLFxuICAgICAgICAgICAgICB3b3JrU3RvcmUucm91dGUsXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOiB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIGlmIChmYWxsYmFja1BhcmFtcyAmJiBmYWxsYmFja1BhcmFtcy5zaXplID4gMCkge1xuICAgICAgICAgIHJldHVybiBwb3N0cG9uZVdpdGhUcmFja2luZyhcbiAgICAgICAgICAgIHdvcmtTdG9yZS5yb3V0ZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb24sXG4gICAgICAgICAgICB3b3JrVW5pdFN0b3JlLmR5bmFtaWNUcmFja2luZ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgYFxcYCR7ZXhwcmVzc2lvbn1cXGAgd2FzIGNhbGxlZCBkdXJpbmcgYSBydW50aW1lIHByZXJlbmRlci4gTmV4dC5qcyBzaG91bGQgYmUgcHJldmVudGluZyAke2V4cHJlc3Npb259IGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gc2VydmVyIGNvbXBvbmVudHMgc3RhdGljYWxseSwgYnV0IGRpZCBub3QgaW4gdGhpcyBjYXNlLmBcbiAgICAgICAgKVxuICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgIHRocm93IG5ldyBJbnZhcmlhbnRFcnJvcihcbiAgICAgICAgICBgXFxgJHtleHByZXNzaW9ufVxcYCB3YXMgY2FsbGVkIGluc2lkZSBhIGNhY2hlIHNjb3BlLiBOZXh0LmpzIHNob3VsZCBiZSBwcmV2ZW50aW5nICR7ZXhwcmVzc2lvbn0gZnJvbSBiZWluZyBpbmNsdWRlZCBpbiBzZXJ2ZXIgY29tcG9uZW50cyBzdGF0aWNhbGx5LCBidXQgZGlkIG5vdCBpbiB0aGlzIGNhc2UuYFxuICAgICAgICApXG4gICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaGFzU3VzcGVuc2VSZWdleCA9IC9cXG5cXHMrYXQgU3VzcGVuc2UgXFwoPGFub255bW91cz5cXCkvXG5cbi8vIENvbW1vbiBpbXBsaWNpdCBib2R5IHRhZ3MgdGhhdCBSZWFjdCB3aWxsIHRyZWF0IGFzIGJvZHkgd2hlbiBwbGFjZWQgZGlyZWN0bHkgaW4gaHRtbFxuY29uc3QgYm9keUFuZEltcGxpY2l0VGFncyA9XG4gICdib2R5fGRpdnxtYWlufHNlY3Rpb258YXJ0aWNsZXxhc2lkZXxoZWFkZXJ8Zm9vdGVyfG5hdnxmb3JtfHB8c3BhbnxoMXxoMnxoM3xoNHxoNXxoNidcblxuLy8gRGV0ZWN0cyB3aGVuIFJvb3RMYXlvdXRCb3VuZGFyeSAob3VyIGZyYW1ld29yayBtYXJrZXIgY29tcG9uZW50KSBhcHBlYXJzXG4vLyBhZnRlciBTdXNwZW5zZSBpbiB0aGUgY29tcG9uZW50IHN0YWNrLCBpbmRpY2F0aW5nIHRoZSByb290IGxheW91dCBpcyB3cmFwcGVkXG4vLyB3aXRoaW4gYSBTdXNwZW5zZSBib3VuZGFyeS4gRW5zdXJlcyBubyBib2R5L2h0bWwvaW1wbGljaXQtYm9keSBjb21wb25lbnRzIGFyZSBpbiBiZXR3ZWVuLlxuLy9cbi8vIEV4YW1wbGUgbWF0Y2hlczpcbi8vICAgYXQgU3VzcGVuc2UgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyAoPGFub255bW91cz4pXG4vL1xuLy8gT3Igd2l0aCBvdGhlciBjb21wb25lbnRzIGluIGJldHdlZW4gKGJ1dCBub3QgYm9keS9odG1sL2ltcGxpY2l0LWJvZHkpOlxuLy8gICBhdCBTdXNwZW5zZSAoPGFub255bW91cz4pXG4vLyAgIGF0IFNvbWVDb21wb25lbnQgKDxhbm9ueW1vdXM+KVxuLy8gICBhdCBfX25leHRfcm9vdF9sYXlvdXRfYm91bmRhcnlfXyAoPGFub255bW91cz4pXG5jb25zdCBoYXNTdXNwZW5zZUJlZm9yZVJvb3RMYXlvdXRXaXRob3V0Qm9keU9ySW1wbGljaXRCb2R5UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgXFxcXG5cXFxccythdCBTdXNwZW5zZSBcXFxcKDxhbm9ueW1vdXM+XFxcXCkoPzooPyFcXFxcblxcXFxzK2F0ICg/OiR7Ym9keUFuZEltcGxpY2l0VGFnc30pIFxcXFwoPGFub255bW91cz5cXFxcKSlbXFxcXHNcXFxcU10pKj9cXFxcblxcXFxzK2F0ICR7Uk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRX0gXFxcXChbXlxcXFxuXSpcXFxcKWBcbilcblxuY29uc3QgaGFzTWV0YWRhdGFSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBcXFxcblxcXFxzK2F0ICR7TUVUQURBVEFfQk9VTkRBUllfTkFNRX1bXFxcXG5cXFxcc11gXG4pXG5jb25zdCBoYXNWaWV3cG9ydFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgYFxcXFxuXFxcXHMrYXQgJHtWSUVXUE9SVF9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWBcbilcbmNvbnN0IGhhc091dGxldFJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXG5cXFxccythdCAke09VVExFVF9CT1VOREFSWV9OQU1FfVtcXFxcblxcXFxzXWApXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFja0FsbG93ZWREeW5hbWljQWNjZXNzKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgY29tcG9uZW50U3RhY2s6IHN0cmluZyxcbiAgZHluYW1pY1ZhbGlkYXRpb246IER5bmFtaWNWYWxpZGF0aW9uU3RhdGUsXG4gIGNsaWVudER5bmFtaWM6IER5bmFtaWNUcmFja2luZ1N0YXRlXG4pIHtcbiAgaWYgKGhhc091dGxldFJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB0cmFjayB0aGF0IHRoaXMgaXMgZHluYW1pYy4gSXQgaXMgb25seSBzbyB3aGVuIHNvbWV0aGluZyBlbHNlIGlzIGFsc28gZHluYW1pYy5cbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNNZXRhZGF0YVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzRHluYW1pY01ldGFkYXRhID0gdHJ1ZVxuICAgIHJldHVyblxuICB9IGVsc2UgaWYgKGhhc1ZpZXdwb3J0UmVnZXgudGVzdChjb21wb25lbnRTdGFjaykpIHtcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljVmlld3BvcnQgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4LnRlc3QoXG4gICAgICBjb21wb25lbnRTdGFja1xuICAgIClcbiAgKSB7XG4gICAgLy8gRm9yIFN1c3BlbnNlIHdpdGhpbiBib2R5LCB0aGUgcHJlbHVkZSB3b3VsZG4ndCBiZSBlbXB0eSBzbyBpdCB3b3VsZG4ndCB2aW9sYXRlIHRoZSBlbXB0eSBzdGF0aWMgc2hlbGxzIHJ1bGUuXG4gICAgLy8gQnV0IGlmIHlvdSBoYXZlIFN1c3BlbnNlIGFib3ZlIGJvZHksIHRoZSBwcmVsdWRlIGlzIGVtcHR5IGJ1dCB3ZSBhbGxvdyB0aGF0IGJlY2F1c2UgaGF2aW5nIFN1c3BlbnNlXG4gICAgLy8gaXMgYW4gZXhwbGljaXQgc2lnbmFsIGZyb20gdGhlIHVzZXIgdGhhdCB0aGV5IGFja25vd2xlZGdlIHRoZSBlbXB0eSBzaGVsbCBhbmQgd2FudCBkeW5hbWljIHJlbmRlcmluZy5cbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNTdXNwZW5zZUFib3ZlQm9keSA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChoYXNTdXNwZW5zZVJlZ2V4LnRlc3QoY29tcG9uZW50U3RhY2spKSB7XG4gICAgLy8gdGhpcyBlcnJvciBoYWQgYSBTdXNwZW5zZSBib3VuZGFyeSBhYm92ZSBpdCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdCBhcyBhIHNvdXJjZVxuICAgIC8vIG9mIGRpc2FsbG93ZWRcbiAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNBbGxvd2VkRHluYW1pYyA9IHRydWVcbiAgICByZXR1cm5cbiAgfSBlbHNlIGlmIChjbGllbnREeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2spIHtcbiAgICAvLyBUaGlzIHRhc2sgd2FzIHRoZSB0YXNrIHRoYXQgY2FsbGVkIHRoZSBzeW5jIGVycm9yLlxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChcbiAgICAgIGNsaWVudER5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFja1xuICAgIClcbiAgICByZXR1cm5cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFJvdXRlIFwiJHt3b3JrU3RvcmUucm91dGV9XCI6IEEgY29tcG9uZW50IGFjY2Vzc2VkIGRhdGEsIGhlYWRlcnMsIHBhcmFtcywgc2VhcmNoUGFyYW1zLCBvciBhIHNob3J0LWxpdmVkIGNhY2hlIHdpdGhvdXQgYSBTdXNwZW5zZSBib3VuZGFyeSBub3IgYSBcInVzZSBjYWNoZVwiIGFib3ZlIGl0LiBTZWUgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXByZXJlbmRlci1taXNzaW5nLXN1c3BlbnNlYFxuICAgIGNvbnN0IGVycm9yID0gY3JlYXRlRXJyb3JXaXRoQ29tcG9uZW50T3JPd25lclN0YWNrKG1lc3NhZ2UsIGNvbXBvbmVudFN0YWNrKVxuICAgIGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnMucHVzaChlcnJvcilcbiAgICByZXR1cm5cbiAgfVxufVxuXG4vKipcbiAqIEluIGRldiBtb2RlLCB3ZSBwcmVmZXIgdXNpbmcgdGhlIG93bmVyIHN0YWNrLCBvdGhlcndpc2UgdGhlIHByb3ZpZGVkXG4gKiBjb21wb25lbnQgc3RhY2sgaXMgdXNlZC5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXJyb3JXaXRoQ29tcG9uZW50T3JPd25lclN0YWNrKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIGNvbXBvbmVudFN0YWNrOiBzdHJpbmdcbikge1xuICBjb25zdCBvd25lclN0YWNrID1cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIFJlYWN0LmNhcHR1cmVPd25lclN0YWNrXG4gICAgICA/IFJlYWN0LmNhcHR1cmVPd25lclN0YWNrKClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpXG4gIGVycm9yLnN0YWNrID0gZXJyb3IubmFtZSArICc6ICcgKyBtZXNzYWdlICsgKG93bmVyU3RhY2sgPz8gY29tcG9uZW50U3RhY2spXG4gIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZW51bSBQcmVsdWRlU3RhdGUge1xuICBGdWxsID0gMCxcbiAgRW1wdHkgPSAxLFxuICBFcnJvcmVkID0gMixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0Rpc2FsbG93ZWREeW5hbWljRXJyb3IoXG4gIHdvcmtTdG9yZTogV29ya1N0b3JlLFxuICBlcnJvcjogRXJyb3Jcbik6IHZvaWQge1xuICBjb25zb2xlLmVycm9yKGVycm9yKVxuXG4gIGlmICghd29ya1N0b3JlLmRldikge1xuICAgIGlmICh3b3JrU3RvcmUuaGFzUmVhZGFibGVFcnJvclN0YWNrcykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRvIGdldCBhIG1vcmUgZGV0YWlsZWQgc3RhY2sgdHJhY2UgYW5kIHBpbnBvaW50IHRoZSBpc3N1ZSwgc3RhcnQgdGhlIGFwcCBpbiBkZXZlbG9wbWVudCBtb2RlIGJ5IHJ1bm5pbmcgXFxgbmV4dCBkZXZcXGAsIHRoZW4gb3BlbiBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGluIHlvdXIgYnJvd3NlciB0byBpbnZlc3RpZ2F0ZSB0aGUgZXJyb3IuYFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUbyBnZXQgYSBtb3JlIGRldGFpbGVkIHN0YWNrIHRyYWNlIGFuZCBwaW5wb2ludCB0aGUgaXNzdWUsIHRyeSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiAgLSBTdGFydCB0aGUgYXBwIGluIGRldmVsb3BtZW50IG1vZGUgYnkgcnVubmluZyBcXGBuZXh0IGRldlxcYCwgdGhlbiBvcGVuIFwiJHt3b3JrU3RvcmUucm91dGV9XCIgaW4geW91ciBicm93c2VyIHRvIGludmVzdGlnYXRlIHRoZSBlcnJvci5cbiAgLSBSZXJ1biB0aGUgcHJvZHVjdGlvbiBidWlsZCB3aXRoIFxcYG5leHQgYnVpbGQgLS1kZWJ1Zy1wcmVyZW5kZXJcXGAgdG8gZ2VuZXJhdGUgYmV0dGVyIHN0YWNrIHRyYWNlcy5gKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dJZkRpc2FsbG93ZWREeW5hbWljKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgcHJlbHVkZTogUHJlbHVkZVN0YXRlLFxuICBkeW5hbWljVmFsaWRhdGlvbjogRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSxcbiAgc2VydmVyRHluYW1pYzogRHluYW1pY1RyYWNraW5nU3RhdGVcbik6IHZvaWQge1xuICBpZiAocHJlbHVkZSAhPT0gUHJlbHVkZVN0YXRlLkZ1bGwpIHtcbiAgICBpZiAoZHluYW1pY1ZhbGlkYXRpb24uaGFzU3VzcGVuc2VBYm92ZUJvZHkpIHtcbiAgICAgIC8vIFRoaXMgcm91dGUgaGFzIG9wdGVkIGludG8gYWxsb3dpbmcgZnVsbHkgZHluYW1pYyByZW5kZXJpbmdcbiAgICAgIC8vIGJ5IGluY2x1ZGluZyBhIFN1c3BlbnNlIGJvdW5kYXJ5IGFib3ZlIHRoZSBib2R5LiBJbiB0aGlzIGNhc2VcbiAgICAgIC8vIGEgbGFjayBvZiBhIHNoZWxsIGlzIG5vdCBjb25zaWRlcmVkIGRpc2FsbG93ZWQgc28gd2Ugc2ltcGx5IHJldHVyblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHNlcnZlckR5bmFtaWMuc3luY0R5bmFtaWNFcnJvcldpdGhTdGFjaykge1xuICAgICAgLy8gVGhlcmUgaXMgbm8gc2hlbGwgYW5kIHRoZSBzZXJ2ZXIgZGlkIHNvbWV0aGluZyBzeW5jIGR5bmFtaWMgbGlrZWx5XG4gICAgICAvLyBsZWFkaW5nIHRvIGFuIGVhcmx5IHRlcm1pbmF0aW9uIG9mIHRoZSBwcmVyZW5kZXIgYmVmb3JlIHRoZSBzaGVsbFxuICAgICAgLy8gY291bGQgYmUgY29tcGxldGVkLiBXZSB0ZXJtaW5hdGUgdGhlIGJ1aWxkL3ZhbGlkYXRpbmcgcmVuZGVyLlxuICAgICAgbG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvcihcbiAgICAgICAgd29ya1N0b3JlLFxuICAgICAgICBzZXJ2ZXJEeW5hbWljLnN5bmNEeW5hbWljRXJyb3JXaXRoU3RhY2tcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIC8vIFdlIGRpZG4ndCBoYXZlIGFueSBzeW5jIGJhaWxvdXRzIGJ1dCB0aGVyZSBtYXkgYmUgdXNlciBjb2RlIHdoaWNoXG4gICAgLy8gYmxvY2tlZCB0aGUgcm9vdC4gV2Ugd291bGQgaGF2ZSBjYXB0dXJlZCB0aGVzZSBkdXJpbmcgdGhlIHByZXJlbmRlclxuICAgIC8vIGFuZCBjYW4gbG9nIHRoZW0gaGVyZSBhbmQgdGhlbiB0ZXJtaW5hdGUgdGhlIGJ1aWxkL3ZhbGlkYXRpbmcgcmVuZGVyXG4gICAgY29uc3QgZHluYW1pY0Vycm9ycyA9IGR5bmFtaWNWYWxpZGF0aW9uLmR5bmFtaWNFcnJvcnNcbiAgICBpZiAoZHluYW1pY0Vycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNFcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbG9nRGlzYWxsb3dlZER5bmFtaWNFcnJvcih3b3JrU3RvcmUsIGR5bmFtaWNFcnJvcnNbaV0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cblxuICAgIC8vIElmIHdlIGdvdCB0aGlzIGZhciB0aGVuIHRoZSBvbmx5IG90aGVyIHRoaW5nIHRoYXQgY291bGQgYmUgYmxvY2tpbmdcbiAgICAvLyB0aGUgcm9vdCBpcyBkeW5hbWljIFZpZXdwb3J0LiBJZiB0aGlzIGlzIGR5bmFtaWMgdGhlblxuICAgIC8vIHlvdSBuZWVkIHRvIG9wdCBpbnRvIHRoYXQgYnkgYWRkaW5nIGEgU3VzcGVuc2UgYm91bmRhcnkgYWJvdmUgdGhlIGJvZHlcbiAgICAvLyB0byBpbmRpY2F0ZSB5b3VyIGFyZSBvayB3aXRoIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nLlxuICAgIGlmIChkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljVmlld3BvcnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGhhcyBhIFxcYGdlbmVyYXRlVmlld3BvcnRcXGAgdGhhdCBkZXBlbmRzIG9uIFJlcXVlc3QgZGF0YSAoXFxgY29va2llcygpXFxgLCBldGMuLi4pIG9yIHVuY2FjaGVkIGV4dGVybmFsIGRhdGEgKFxcYGZldGNoKC4uLilcXGAsIGV0Yy4uLikgd2l0aG91dCBleHBsaWNpdGx5IGFsbG93aW5nIGZ1bGx5IGR5bmFtaWMgcmVuZGVyaW5nLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcHJlcmVuZGVyLWR5bmFtaWMtdmlld3BvcnRgXG4gICAgICApXG4gICAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKClcbiAgICB9XG5cbiAgICBpZiAocHJlbHVkZSA9PT0gUHJlbHVkZVN0YXRlLkVtcHR5KSB7XG4gICAgICAvLyBJZiB3ZSBldmVyIGdldCB0aGlzIGZhciB0aGVuIHdlIG1lc3NlZCB1cCB0aGUgdHJhY2tpbmcgb2YgaW52YWxpZCBkeW5hbWljLlxuICAgICAgLy8gV2Ugc3RpbGwgYWRoZXJlIHRvIHRoZSBjb25zdHJhaW50IHRoYXQgeW91IG11c3QgcHJvZHVjZSBhIHNoZWxsIGJ1dCBpbnZpdGUgdGhlXG4gICAgICAvLyB1c2VyIHRvIHJlcG9ydCB0aGlzIGFzIGEgYnVnIGluIE5leHQuanMuXG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUm91dGUgXCIke3dvcmtTdG9yZS5yb3V0ZX1cIiBkaWQgbm90IHByb2R1Y2UgYSBzdGF0aWMgc2hlbGwgYW5kIE5leHQuanMgd2FzIHVuYWJsZSB0byBkZXRlcm1pbmUgYSByZWFzb24uIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy5gXG4gICAgICApXG4gICAgICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKFxuICAgICAgZHluYW1pY1ZhbGlkYXRpb24uaGFzQWxsb3dlZER5bmFtaWMgPT09IGZhbHNlICYmXG4gICAgICBkeW5hbWljVmFsaWRhdGlvbi5oYXNEeW5hbWljTWV0YWRhdGFcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSb3V0ZSBcIiR7d29ya1N0b3JlLnJvdXRlfVwiIGhhcyBhIFxcYGdlbmVyYXRlTWV0YWRhdGFcXGAgdGhhdCBkZXBlbmRzIG9uIFJlcXVlc3QgZGF0YSAoXFxgY29va2llcygpXFxgLCBldGMuLi4pIG9yIHVuY2FjaGVkIGV4dGVybmFsIGRhdGEgKFxcYGZldGNoKC4uLilcXGAsIGV0Yy4uLikgd2hlbiB0aGUgcmVzdCBvZiB0aGUgcm91dGUgZG9lcyBub3QuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1wcmVyZW5kZXItZHluYW1pYy1tZXRhZGF0YWBcbiAgICAgIClcbiAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsYXlVbnRpbFJ1bnRpbWVTdGFnZTxUPihcbiAgcHJlcmVuZGVyU3RvcmU6IFByZXJlbmRlclN0b3JlTW9kZXJuUnVudGltZSxcbiAgcmVzdWx0OiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+IHtcbiAgaWYgKHByZXJlbmRlclN0b3JlLnJ1bnRpbWVTdGFnZVByb21pc2UpIHtcbiAgICByZXR1cm4gcHJlcmVuZGVyU3RvcmUucnVudGltZVN0YWdlUHJvbWlzZS50aGVuKCgpID0+IHJlc3VsdClcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsiUG9zdHBvbmUiLCJQcmVsdWRlU3RhdGUiLCJhYm9ydEFuZFRocm93T25TeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzIiwiYWJvcnRPblN5bmNocm9ub3VzUGxhdGZvcm1JT0FjY2VzcyIsImFjY2Vzc2VkRHluYW1pY0RhdGEiLCJhbm5vdGF0ZUR5bmFtaWNBY2Nlc3MiLCJjb25zdW1lRHluYW1pY0FjY2VzcyIsImNyZWF0ZUR5bmFtaWNUcmFja2luZ1N0YXRlIiwiY3JlYXRlRHluYW1pY1ZhbGlkYXRpb25TdGF0ZSIsImNyZWF0ZUhhbmdpbmdJbnB1dEFib3J0U2lnbmFsIiwiY3JlYXRlUmVuZGVySW5Ccm93c2VyQWJvcnRTaWduYWwiLCJkZWxheVVudGlsUnVudGltZVN0YWdlIiwiZm9ybWF0RHluYW1pY0FQSUFjY2Vzc2VzIiwiZ2V0Rmlyc3REeW5hbWljUmVhc29uIiwiaXNEeW5hbWljUG9zdHBvbmUiLCJpc1ByZXJlbmRlckludGVycnVwdGVkRXJyb3IiLCJsb2dEaXNhbGxvd2VkRHluYW1pY0Vycm9yIiwibWFya0N1cnJlbnRTY29wZUFzRHluYW1pYyIsInBvc3Rwb25lV2l0aFRyYWNraW5nIiwidGhyb3dJZkRpc2FsbG93ZWREeW5hbWljIiwidGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24iLCJ0cmFja0FsbG93ZWREeW5hbWljQWNjZXNzIiwidHJhY2tEeW5hbWljRGF0YUluRHluYW1pY1JlbmRlciIsInRyYWNrU3luY2hyb25vdXNQbGF0Zm9ybUlPQWNjZXNzSW5EZXYiLCJ0cmFja1N5bmNocm9ub3VzUmVxdWVzdERhdGFBY2Nlc3NJbkRldiIsInVzZUR5bmFtaWNSb3V0ZVBhcmFtcyIsIndhcm5PblN5bmNEeW5hbWljRXJyb3IiLCJoYXNQb3N0cG9uZSIsIlJlYWN0IiwidW5zdGFibGVfcG9zdHBvbmUiLCJpc0RlYnVnRHluYW1pY0FjY2Vzc2VzIiwiZHluYW1pY0FjY2Vzc2VzIiwic3luY0R5bmFtaWNFcnJvcldpdGhTdGFjayIsImhhc1N1c3BlbnNlQWJvdmVCb2R5IiwiaGFzRHluYW1pY01ldGFkYXRhIiwiaGFzRHluYW1pY1ZpZXdwb3J0IiwiaGFzQWxsb3dlZER5bmFtaWMiLCJkeW5hbWljRXJyb3JzIiwidHJhY2tpbmdTdGF0ZSIsImV4cHJlc3Npb24iLCJzdG9yZSIsIndvcmtVbml0U3RvcmUiLCJ0eXBlIiwiZm9yY2VEeW5hbWljIiwiZm9yY2VTdGF0aWMiLCJkeW5hbWljU2hvdWxkRXJyb3IiLCJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJyb3V0ZSIsImR5bmFtaWNUcmFja2luZyIsInJldmFsaWRhdGUiLCJlcnIiLCJEeW5hbWljU2VydmVyRXJyb3IiLCJkeW5hbWljVXNhZ2VEZXNjcmlwdGlvbiIsImR5bmFtaWNVc2FnZVN0YWNrIiwic3RhY2siLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ1c2VkRHluYW1pYyIsInByZXJlbmRlclN0b3JlIiwiYWJvcnRPblN5bmNocm9ub3VzRHluYW1pY0RhdGFBY2Nlc3MiLCJyZWFzb24iLCJlcnJvciIsImNyZWF0ZVByZXJlbmRlckludGVycnVwdGVkRXJyb3IiLCJjb250cm9sbGVyIiwiYWJvcnQiLCJwdXNoIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJlcnJvcldpdGhTdGFjayIsInJlcXVlc3RTdG9yZSIsInByZXJlbmRlclBoYXNlIiwicHJlcmVuZGVyU2lnbmFsIiwic2lnbmFsIiwiYWJvcnRlZCIsImNvbnNvbGUiLCJ3b3JrVW5pdEFzeW5jU3RvcmFnZSIsImdldFN0b3JlIiwiYXNzZXJ0UG9zdHBvbmUiLCJjcmVhdGVQb3N0cG9uZVJlYXNvbiIsIm1lc3NhZ2UiLCJpc0R5bmFtaWNQb3N0cG9uZVJlYXNvbiIsImluY2x1ZGVzIiwiTkVYVF9QUkVSRU5ERVJfSU5URVJSVVBURUQiLCJkaWdlc3QiLCJsZW5ndGgiLCJzZXJ2ZXJEeW5hbWljIiwiY2xpZW50RHluYW1pYyIsImZpbHRlciIsImFjY2VzcyIsIm1hcCIsInNwbGl0Iiwic2xpY2UiLCJsaW5lIiwiam9pbiIsIkFib3J0Q29udHJvbGxlciIsIkJhaWxvdXRUb0NTUkVycm9yIiwiY2FjaGVTaWduYWwiLCJpbnB1dFJlYWR5IiwidGhlbiIsInJ1bnRpbWVTdGFnZVByb21pc2UiLCJnZXRSdW50aW1lU3RhZ2VQcm9taXNlIiwic2NoZWR1bGVPbk5leHRUaWNrIiwid29ya1N0b3JlIiwid29ya0FzeW5jU3RvcmFnZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2UiLCJtYWtlSGFuZ2luZ1Byb21pc2UiLCJyZW5kZXJTaWduYWwiLCJJbnZhcmlhbnRFcnJvciIsImhhc1N1c3BlbnNlUmVnZXgiLCJib2R5QW5kSW1wbGljaXRUYWdzIiwiaGFzU3VzcGVuc2VCZWZvcmVSb290TGF5b3V0V2l0aG91dEJvZHlPckltcGxpY2l0Qm9keVJlZ2V4IiwiUmVnRXhwIiwiUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRSIsImhhc01ldGFkYXRhUmVnZXgiLCJNRVRBREFUQV9CT1VOREFSWV9OQU1FIiwiaGFzVmlld3BvcnRSZWdleCIsIlZJRVdQT1JUX0JPVU5EQVJZX05BTUUiLCJoYXNPdXRsZXRSZWdleCIsIk9VVExFVF9CT1VOREFSWV9OQU1FIiwiY29tcG9uZW50U3RhY2siLCJkeW5hbWljVmFsaWRhdGlvbiIsInRlc3QiLCJjcmVhdGVFcnJvcldpdGhDb21wb25lbnRPck93bmVyU3RhY2siLCJvd25lclN0YWNrIiwiY2FwdHVyZU93bmVyU3RhY2siLCJuYW1lIiwiZGV2IiwiaGFzUmVhZGFibGVFcnJvclN0YWNrcyIsInByZWx1ZGUiLCJpIiwicmVzdWx0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createDedupedByCallsiteServerErrorLoggerDev\", ({\n enumerable: true,\n get: function() {\n return createDedupedByCallsiteServerErrorLoggerDev;\n }\n}));\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nconst errorRef = {\n current: null\n};\n// React.cache is currently only available in canary/experimental React channels.\nconst cache = typeof _react.cache === 'function' ? _react.cache : (fn)=>fn;\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = false ? 0 : console.warn;\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n(key)=>{\n try {\n logErrorOrWarn(errorRef.current);\n } finally{\n errorRef.current = null;\n }\n});\nfunction createDedupedByCallsiteServerErrorLoggerDev(getMessage) {\n return function logDedupedError(...args) {\n const message = getMessage(...args);\n if (true) {\n var _stack;\n const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\\n');\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message);\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // \n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4];\n errorRef.current = message;\n flushCurrentErrorIfNew(key);\n }\n } else {}\n };\n}\n\n//# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsK0VBQThFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsdURBQXVELG1CQUFPLENBQUMsaUdBQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE1BQW1DLEdBQUcsQ0FBYTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQXFDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsS0FBSyxFQUVOO0FBQ1Q7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxjcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldlwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldjtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbFxuICAgIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5jb25zdCBlcnJvclJlZiA9IHtcbiAgICBjdXJyZW50OiBudWxsXG59O1xuLy8gUmVhY3QuY2FjaGUgaXMgY3VycmVudGx5IG9ubHkgYXZhaWxhYmxlIGluIGNhbmFyeS9leHBlcmltZW50YWwgUmVhY3QgY2hhbm5lbHMuXG5jb25zdCBjYWNoZSA9IHR5cGVvZiBfcmVhY3QuY2FjaGUgPT09ICdmdW5jdGlvbicgPyBfcmVhY3QuY2FjaGUgOiAoZm4pPT5mbjtcbi8vIFdoZW4gQ2FjaGUgQ29tcG9uZW50cyBpcyBlbmFibGVkLCB3ZSByZWNvcmQgdGhlc2UgYXMgZXJyb3JzIHNvIHRoYXQgdGhleVxuLy8gYXJlIGNhcHR1cmVkIGJ5IHRoZSBkZXYgb3ZlcmxheSBhcyBpdCdzIG1vcmUgY3JpdGljYWwgdG8gZml4IHRoZXNlXG4vLyB3aGVuIGVuYWJsZWQuXG5jb25zdCBsb2dFcnJvck9yV2FybiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTID8gY29uc29sZS5lcnJvciA6IGNvbnNvbGUud2Fybjtcbi8vIFdlIGRvbid0IHdhbnQgdG8gZGVkdXBlIGFjcm9zcyByZXF1ZXN0cy5cbi8vIFRoZSBkZXZlbG9wZXIgbWlnaHQndmUganVzdCBhdHRlbXB0ZWQgdG8gZml4IHRoZSB3YXJuaW5nIHNvIHdlIHNob3VsZCB3YXJuIGFnYWluIGlmIGl0IHN0aWxsIGhhcHBlbnMuXG5jb25zdCBmbHVzaEN1cnJlbnRFcnJvcklmTmV3ID0gY2FjaGUoLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBjYWNoZSBrZXlcbihrZXkpPT57XG4gICAgdHJ5IHtcbiAgICAgICAgbG9nRXJyb3JPcldhcm4oZXJyb3JSZWYuY3VycmVudCk7XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICBlcnJvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGNyZWF0ZURlZHVwZWRCeUNhbGxzaXRlU2VydmVyRXJyb3JMb2dnZXJEZXYoZ2V0TWVzc2FnZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBsb2dEZWR1cGVkRXJyb3IoLi4uYXJncykge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZ2V0TWVzc2FnZSguLi5hcmdzKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2s7XG4gICAgICAgICAgICBjb25zdCBjYWxsU3RhY2tGcmFtZXMgPSAoX3N0YWNrID0gbmV3IEVycm9yKCkuc3RhY2spID09IG51bGwgPyB2b2lkIDAgOiBfc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgaWYgKGNhbGxTdGFja0ZyYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGNhbGxTdGFja0ZyYW1lcy5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3JPcldhcm4obWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yOlxuICAgICAgICAgICAgICAgIC8vICAgbG9nRGVkdXBlZEVycm9yXG4gICAgICAgICAgICAgICAgLy8gICBhc3luY0FwaUJlaW5nQWNjZXNzZWRTeW5jaHJvbm91c2x5XG4gICAgICAgICAgICAgICAgLy8gICA8dXNlcmxhbmQgY2FsbHNpdGU+XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBicmVha3MgaWYgc291cmNlbWFwcyB3aXRoIGlnbm9yZSBsaXN0cyBhcmUgZW5hYmxlZC5cbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBjYWxsU3RhY2tGcmFtZXNbNF07XG4gICAgICAgICAgICAgICAgZXJyb3JSZWYuY3VycmVudCA9IG1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgZmx1c2hDdXJyZW50RXJyb3JJZk5ldyhrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nRXJyb3JPcldhcm4obWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtZGVkdXBlZC1ieS1jYWxsc2l0ZS1zZXJ2ZXItZXJyb3ItbG9nZ2VyLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/server/dev/hot-reloader-types.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HMR_ACTIONS_SENT_TO_BROWSER\", ({\n enumerable: true,\n get: function() {\n return HMR_ACTIONS_SENT_TO_BROWSER;\n }\n}));\nvar HMR_ACTIONS_SENT_TO_BROWSER = /*#__PURE__*/ function(HMR_ACTIONS_SENT_TO_BROWSER) {\n HMR_ACTIONS_SENT_TO_BROWSER[\"ADDED_PAGE\"] = \"addedPage\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"REMOVED_PAGE\"] = \"removedPage\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"RELOAD_PAGE\"] = \"reloadPage\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"SERVER_COMPONENT_CHANGES\"] = \"serverComponentChanges\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"MIDDLEWARE_CHANGES\"] = \"middlewareChanges\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"CLIENT_CHANGES\"] = \"clientChanges\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"SERVER_ONLY_CHANGES\"] = \"serverOnlyChanges\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"SYNC\"] = \"sync\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"BUILT\"] = \"built\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"BUILDING\"] = \"building\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"DEV_PAGES_MANIFEST_UPDATE\"] = \"devPagesManifestUpdate\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"TURBOPACK_MESSAGE\"] = \"turbopack-message\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"SERVER_ERROR\"] = \"serverError\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"TURBOPACK_CONNECTED\"] = \"turbopack-connected\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"ISR_MANIFEST\"] = \"isrManifest\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"DEV_INDICATOR\"] = \"devIndicator\";\n HMR_ACTIONS_SENT_TO_BROWSER[\"DEVTOOLS_CONFIG\"] = \"devtoolsConfig\";\n return HMR_ACTIONS_SENT_TO_BROWSER;\n}({});\n\n//# sourceMappingURL=hot-reloader-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsK0RBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUoiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcZGV2XFxob3QtcmVsb2FkZXItdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUjtcbiAgICB9XG59KTtcbnZhciBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUikge1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIkFEREVEX1BBR0VcIl0gPSBcImFkZGVkUGFnZVwiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIlJFTU9WRURfUEFHRVwiXSA9IFwicmVtb3ZlZFBhZ2VcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJSRUxPQURfUEFHRVwiXSA9IFwicmVsb2FkUGFnZVwiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFU1wiXSA9IFwic2VydmVyQ29tcG9uZW50Q2hhbmdlc1wiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIk1JRERMRVdBUkVfQ0hBTkdFU1wiXSA9IFwibWlkZGxld2FyZUNoYW5nZXNcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJDTElFTlRfQ0hBTkdFU1wiXSA9IFwiY2xpZW50Q2hhbmdlc1wiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIlNFUlZFUl9PTkxZX0NIQU5HRVNcIl0gPSBcInNlcnZlck9ubHlDaGFuZ2VzXCI7XG4gICAgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSW1wiU1lOQ1wiXSA9IFwic3luY1wiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIkJVSUxUXCJdID0gXCJidWlsdFwiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIkJVSUxESU5HXCJdID0gXCJidWlsZGluZ1wiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIkRFVl9QQUdFU19NQU5JRkVTVF9VUERBVEVcIl0gPSBcImRldlBhZ2VzTWFuaWZlc3RVcGRhdGVcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJUVVJCT1BBQ0tfTUVTU0FHRVwiXSA9IFwidHVyYm9wYWNrLW1lc3NhZ2VcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJTRVJWRVJfRVJST1JcIl0gPSBcInNlcnZlckVycm9yXCI7XG4gICAgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSW1wiVFVSQk9QQUNLX0NPTk5FQ1RFRFwiXSA9IFwidHVyYm9wYWNrLWNvbm5lY3RlZFwiO1xuICAgIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUltcIklTUl9NQU5JRkVTVFwiXSA9IFwiaXNyTWFuaWZlc3RcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJERVZfSU5ESUNBVE9SXCJdID0gXCJkZXZJbmRpY2F0b3JcIjtcbiAgICBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVJbXCJERVZUT09MU19DT05GSUdcIl0gPSBcImRldnRvb2xzQ29uZmlnXCI7XG4gICAgcmV0dXJuIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUjtcbn0oe30pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ob3QtcmVsb2FkZXItdHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/dev/hot-reloader-types.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/server/dynamic-rendering-utils.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isHangingPromiseRejectionError: function() {\n return isHangingPromiseRejectionError;\n },\n makeDevtoolsIOAwarePromise: function() {\n return makeDevtoolsIOAwarePromise;\n },\n makeHangingPromise: function() {\n return makeHangingPromise;\n }\n});\nfunction isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst abortListenersBySignal = new WeakMap();\nfunction makeHangingPromise(signal, route, expression) {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression));\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\nfunction makeDevtoolsIOAwarePromise(underlying) {\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9keW5hbWljLXJlbmRlcmluZy11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxZQUFZLHNHQUFzRyxZQUFZLCtLQUErSyxNQUFNO0FBQ3pWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsc0JBQXNCO0FBQ3pEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxkeW5hbWljLXJlbmRlcmluZy11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjogbnVsbCxcbiAgICBtYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZTogbnVsbCxcbiAgICBtYWtlSGFuZ2luZ1Byb21pc2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcjtcbiAgICB9LFxuICAgIG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlO1xuICAgIH0sXG4gICAgbWFrZUhhbmdpbmdQcm9taXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VIYW5naW5nUHJvbWlzZTtcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGlzSGFuZ2luZ1Byb21pc2VSZWplY3Rpb25FcnJvcihlcnIpIHtcbiAgICBpZiAodHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHwgZXJyID09PSBudWxsIHx8ICEoJ2RpZ2VzdCcgaW4gZXJyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBlcnIuZGlnZXN0ID09PSBIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OO1xufVxuY29uc3QgSEFOR0lOR19QUk9NSVNFX1JFSkVDVElPTiA9ICdIQU5HSU5HX1BST01JU0VfUkVKRUNUSU9OJztcbmNsYXNzIEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3Iocm91dGUsIGV4cHJlc3Npb24pe1xuICAgICAgICBzdXBlcihgRHVyaW5nIHByZXJlbmRlcmluZywgJHtleHByZXNzaW9ufSByZWplY3RzIHdoZW4gdGhlIHByZXJlbmRlciBpcyBjb21wbGV0ZS4gVHlwaWNhbGx5IHRoZXNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSBSZWFjdCBidXQgaWYgeW91IG1vdmUgJHtleHByZXNzaW9ufSB0byBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHVzaW5nIFxcYHNldFRpbWVvdXRcXGAsIFxcYGFmdGVyXFxgLCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB5b3UgbWF5IG9ic2VydmUgdGhpcyBlcnJvciBhbmQgeW91IHNob3VsZCBoYW5kbGUgaXQgaW4gdGhhdCBjb250ZXh0LiBUaGlzIG9jY3VycmVkIGF0IHJvdXRlIFwiJHtyb3V0ZX1cIi5gKSwgdGhpcy5yb3V0ZSA9IHJvdXRlLCB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uLCB0aGlzLmRpZ2VzdCA9IEhBTkdJTkdfUFJPTUlTRV9SRUpFQ1RJT047XG4gICAgfVxufVxuY29uc3QgYWJvcnRMaXN0ZW5lcnNCeVNpZ25hbCA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBtYWtlSGFuZ2luZ1Byb21pc2Uoc2lnbmFsLCByb3V0ZSwgZXhwcmVzc2lvbikge1xuICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEhhbmdpbmdQcm9taXNlUmVqZWN0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5naW5nUHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpPT57XG4gICAgICAgICAgICBjb25zdCBib3VuZFJlamVjdGlvbiA9IHJlamVjdC5iaW5kKG51bGwsIG5ldyBIYW5naW5nUHJvbWlzZVJlamVjdGlvbkVycm9yKHJvdXRlLCBleHByZXNzaW9uKSk7XG4gICAgICAgICAgICBsZXQgY3VycmVudExpc3RlbmVycyA9IGFib3J0TGlzdGVuZXJzQnlTaWduYWwuZ2V0KHNpZ25hbCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudExpc3RlbmVycykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRMaXN0ZW5lcnMucHVzaChib3VuZFJlamVjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgYm91bmRSZWplY3Rpb25cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGFib3J0TGlzdGVuZXJzQnlTaWduYWwuc2V0KHNpZ25hbCwgbGlzdGVuZXJzKTtcbiAgICAgICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKT0+e1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSBhcmUgZmluZSBpZiBubyBvbmUgYWN0dWFsbHkgYXdhaXRzIHRoaXMgcHJvbWlzZS4gV2Ugc2hvdWxkbid0IGNvbnNpZGVyIHRoaXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBzb1xuICAgICAgICAvLyB3ZSBhdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgaGVyZSB0byBzdXBwcmVzcyB0aGlzIHdhcm5pbmcuIElmIHlvdSBhY3R1YWxseSBhd2FpdCBzb21ld2hlcmUgb3IgY29uc3RydWN0XG4gICAgICAgIC8vIHlvdXIgb3duIHByb21pc2Ugb3V0IG9mIGl0IHlvdSdsbCBuZWVkIHRvIGVuc3VyZSB5b3UgaGFuZGxlIHRoZSBlcnJvciB3aGVuIGl0IHJlamVjdHMuXG4gICAgICAgIGhhbmdpbmdQcm9taXNlLmNhdGNoKGlnbm9yZVJlamVjdCk7XG4gICAgICAgIHJldHVybiBoYW5naW5nUHJvbWlzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBpZ25vcmVSZWplY3QoKSB7fVxuZnVuY3Rpb24gbWFrZURldnRvb2xzSU9Bd2FyZVByb21pc2UodW5kZXJseWluZykge1xuICAgIC8vIGluIFJlYWN0IERldlRvb2xzIGlmIHdlIHJlc29sdmUgaW4gYSBzZXRUaW1lb3V0IHdlIHdpbGwgb2JzZXJ2ZVxuICAgIC8vIHRoZSBwcm9taXNlIHJlc29sdXRpb24gYXMgc29tZXRoaW5nIHRoYXQgY2FuIHN1c3BlbmQgYSBib3VuZGFyeSBvciByb290LlxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgLy8gTXVzdCB1c2Ugc2V0VGltZW91dCB0byBiZSBjb25zaWRlcmVkIElPIFJlYWN0IERldlRvb2xzLiBzZXRJbW1lZGlhdGUgd2lsbCBub3Qgd29yay5cbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZSh1bmRlcmx5aW5nKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5bmFtaWMtcmVuZGVyaW5nLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/server/lib/router-utils/is-postpone.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isPostpone\", ({\n enumerable: true,\n get: function() {\n return isPostpone;\n }\n}));\nconst REACT_POSTPONE_TYPE = Symbol.for('react.postpone');\nfunction isPostpone(error) {\n return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE;\n}\n\n//# sourceMappingURL=is-postpone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9saWIvcm91dGVyLXV0aWxzL2lzLXBvc3Rwb25lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsOENBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxcbGliXFxyb3V0ZXItdXRpbHNcXGlzLXBvc3Rwb25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNQb3N0cG9uZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNQb3N0cG9uZTtcbiAgICB9XG59KTtcbmNvbnN0IFJFQUNUX1BPU1RQT05FX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3N0cG9uZScpO1xuZnVuY3Rpb24gaXNQb3N0cG9uZShlcnJvcikge1xuICAgIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmIGVycm9yLiQkdHlwZW9mID09PSBSRUFDVF9QT1NUUE9ORV9UWVBFO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wb3N0cG9uZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/lib/router-utils/is-postpone.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/request/params.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/server/request/params.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createParamsFromClient: function() {\n return createParamsFromClient;\n },\n createPrerenderParamsForClientSegment: function() {\n return createPrerenderParamsForClientSegment;\n },\n createServerParamsForMetadata: function() {\n return createServerParamsForMetadata;\n },\n createServerParamsForRoute: function() {\n return createServerParamsForRoute;\n },\n createServerParamsForServerSegment: function() {\n return createServerParamsForServerSegment;\n }\n});\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"./work-async-storage.external\");\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _dynamicaccessasyncstorageexternal = __webpack_require__(/*! ../app-render/dynamic-access-async-storage.external */ \"../app-render/dynamic-access-async-storage.external\");\nfunction createParamsFromClient(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E736\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E770\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nconst createServerParamsForMetadata = createServerParamsForServerSegment;\nfunction createServerParamsForRoute(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForRoute should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E738\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createServerParamsForServerSegment(underlyingParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E743\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore);\n } else {}\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderParamsForClientSegment(underlyingParams) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new _invarianterror.InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), \"__NEXT_ERROR_CODE\", {\n value: \"E773\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`params`');\n }\n }\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E734\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // We're prerendering in a mode that does not abort. We resolve the promise without\n // any tracking because we're just transporting a value from server to client where the tracking\n // will be applied.\n return Promise.resolve(underlyingParams);\n}\nfunction createStaticPrerenderParams(underlyingParams, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingParams(underlyingParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n return makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n if (false) {} else {\n return makeUntrackedExoticParams(underlyingParams);\n }\n}\nfunction createRuntimePrerenderParams(underlyingParams, workUnitStore) {\n return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, false ? 0 : makeUntrackedExoticParams(underlyingParams));\n}\nfunction createRenderParamsInProd(underlyingParams) {\n if (false) {}\n return makeUntrackedExoticParams(underlyingParams);\n}\nfunction createRenderParamsInDev(underlyingParams, devFallbackParams, workStore) {\n let hasFallbackParams = false;\n if (devFallbackParams) {\n for(let key in underlyingParams){\n if (devFallbackParams.has(key)) {\n hasFallbackParams = true;\n break;\n }\n }\n }\n if (false) {}\n return makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore);\n}\nconst CachedParams = new WeakMap();\nconst fallbackParamsProxyHandler = {\n get: function get(target, prop, receiver) {\n if (prop === 'then' || prop === 'catch' || prop === 'finally') {\n const originalMethod = _reflect.ReflectAdapter.get(target, prop, receiver);\n return ({\n [prop]: (...args)=>{\n const store = _dynamicaccessasyncstorageexternal.dynamicAccessAsyncStorage.getStore();\n if (store) {\n store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \\`params\\` during prerendering.`), \"__NEXT_ERROR_CODE\", {\n value: \"E691\",\n enumerable: false,\n configurable: true\n }));\n }\n return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler);\n }\n })[prop];\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n};\nfunction makeHangingParams(underlyingParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = new Proxy((0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeErroringExoticParams(underlyingParams, fallbackParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const augmentedUnderlying = {\n ...underlyingParams\n };\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(augmentedUnderlying);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n if (fallbackParams.has(prop)) {\n Object.defineProperty(augmentedUnderlying, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n enumerable: true\n });\n Object.defineProperty(promise, prop, {\n get () {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n },\n set (newValue) {\n Object.defineProperty(promise, prop, {\n value: newValue,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n } else {\n ;\n promise[prop] = underlyingParams[prop];\n }\n }\n });\n return promise;\n}\nfunction makeUntrackedExoticParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n ;\n promise[prop] = underlyingParams[prop];\n }\n });\n return promise;\n}\nfunction makeUntrackedParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedExoticParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams);\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n promise[prop] = underlyingParams[prop];\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n syncIODev(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n syncIODev(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\n// Similar to `makeDynamicallyTrackedExoticParamsWithDevWarnings`, but just\n// logging the sync access without actually defining the params on the promise.\nfunction makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, store) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingParams) : Promise.resolve(underlyingParams);\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n Object.keys(underlyingParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('params', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return _reflect.ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n warnForIncompleteEnumeration(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction syncIODev(route, expression, missingProperties) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n if (workUnitStore.prerenderPhase === true) {\n // When we're rendering dynamically in dev, we need to advance out of\n // the Prerender environment when we read Request data synchronously.\n (0, _dynamicrendering.trackSynchronousRequestDataAccessInDev)(workUnitStore);\n }\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n // In all cases we warn normally\n if (missingProperties && missingProperties.length > 0) {\n warnForIncompleteEnumeration(route, expression, missingProperties);\n } else {\n warnForSyncAccess(route, expression);\n }\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createParamsAccessError);\nconst warnForIncompleteEnumeration = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createIncompleteEnumerationError);\nfunction createParamsAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` should be awaited before using its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E307\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createIncompleteEnumerationError(route, expression, missingProperties) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` should be awaited before using its properties. ` + `The following properties were not available through enumeration ` + `because they conflict with builtin property names: ` + `${describeListOfPropertyNames(missingProperties)}. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E482\",\n enumerable: false,\n configurable: true\n });\n}\nfunction describeListOfPropertyNames(properties) {\n switch(properties.length){\n case 0:\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected describeListOfPropertyNames to be called with a non-empty list of strings.'), \"__NEXT_ERROR_CODE\", {\n value: \"E531\",\n enumerable: false,\n configurable: true\n });\n case 1:\n return `\\`${properties[0]}\\``;\n case 2:\n return `\\`${properties[0]}\\` and \\`${properties[1]}\\``;\n default:\n {\n let description = '';\n for(let i = 0; i < properties.length - 1; i++){\n description += `\\`${properties[i]}\\`, `;\n }\n description += `, and \\`${properties[properties.length - 1]}\\``;\n return description;\n }\n }\n}\n\n//# sourceMappingURL=params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3BhcmFtcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FNTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrQ0FBa0MsbUJBQU8sQ0FBQyxnRkFBMkM7QUFDckYsaUJBQWlCLG1CQUFPLENBQUMsNEhBQXdDO0FBQ2pFLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxzQ0FBc0MsbUJBQU8sQ0FBQywwRkFBZ0Q7QUFDOUYsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLHNCQUFzQixtQkFBTyxDQUFDLDhHQUFzQztBQUNwRSwrQkFBK0IsbUJBQU8sQ0FBQyxvR0FBNEI7QUFDbkUsa0RBQWtELG1CQUFPLENBQUMsa0pBQW1EO0FBQzdHLDJDQUEyQyxtQkFBTyxDQUFDLGdIQUFxRDtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esb0JBQW9CLElBQXNDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsS0FBSyxFQUVOO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFD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YyxXQUFXLGNBQWM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDJCQUEyQjtBQUMxRCx3Q0FBd0MsY0FBYztBQUN0RDtBQUNBLDBDQUEwQyxrQ0FBa0M7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccmVxdWVzdFxccGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUGFyYW1zRnJvbUNsaWVudDogbnVsbCxcbiAgICBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJQYXJhbXNGb3JDbGllbnRTZWdtZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZXJ2ZXJQYXJhbXNGb3JSb3V0ZTtcbiAgICB9LFxuICAgIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDtcbiAgICB9XG59KTtcbmNvbnN0IF93b3JrYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX2ludmFyaWFudGVycm9yID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yXCIpO1xuY29uc3QgX3JlZmxlY3R1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL3V0aWxzL3JlZmxlY3QtdXRpbHNcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLWFjY2Vzcy1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuZnVuY3Rpb24gY3JlYXRlUGFyYW1zRnJvbUNsaWVudCh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUGFyYW1zRnJvbUNsaWVudCBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBhIHJ1bnRpbWUgcHJlcmVuZGVyLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc3MFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VtYW50aWNhbGx5IHdlIG9ubHkgbmVlZCB0aGUgZGV2IHRyYWNraW5nIHdoZW4gcnVubmluZyBpbiBgbmV4dCBkZXZgXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBzaW5jZSB5b3Ugd291bGQgbmV2ZXIgdXNlIG5leHQgZGV2IHdpdGggcHJvZHVjdGlvbiBOT0RFX0VOViB3ZSB1c2UgdGhpc1xuICAgICAgICAgICAgICAgICAgICAvLyBhcyBhIHByb3h5IHNvIHdlIGNhbiBzdGF0aWNhbGx5IGV4Y2x1ZGUgdGhpcyBjb2RlIGZyb20gcHJvZHVjdGlvbiBidWlsZHMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldkZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5kZXZGYWxsYmFja1BhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luRGV2KHVuZGVybHlpbmdQYXJhbXMsIGRldkZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJQYXJhbXNJblByb2QodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmNvbnN0IGNyZWF0ZVNlcnZlclBhcmFtc0Zvck1ldGFkYXRhID0gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudDtcbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclBhcmFtc0ZvclJvdXRlKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyUGFyYW1zRm9yUm91dGUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM4XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUnVudGltZVByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV2RmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmRldkZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGFyYW1zRm9yU2VydmVyU2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrU3RvcmUsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlcnZlclBhcmFtc0ZvclNlcnZlclNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzQzXCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUnVudGltZVByZXJlbmRlclBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZW1hbnRpY2FsbHkgd2Ugb25seSBuZWVkIHRoZSBkZXYgdHJhY2tpbmcgd2hlbiBydW5uaW5nIGluIGBuZXh0IGRldmBcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHNpbmNlIHlvdSB3b3VsZCBuZXZlciB1c2UgbmV4dCBkZXYgd2l0aCBwcm9kdWN0aW9uIE5PREVfRU5WIHdlIHVzZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV2RmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmRldkZhbGxiYWNrUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclBhcmFtc0luUHJvZCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKDAsIF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLnRocm93SW52YXJpYW50Rm9yTWlzc2luZ1N0b3JlKSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJlcmVuZGVyUGFyYW1zRm9yQ2xpZW50U2VnbWVudCh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCF3b3JrU3RvcmUpIHtcbiAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ01pc3Npbmcgd29ya1N0b3JlIGluIGNyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogXCJFNzczXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXM7XG4gICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQga2V5IGluIHVuZGVybHlpbmdQYXJhbXMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUGFyYW1zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwYXJhbXMgb2JqZWN0IGhhcyBvbmUgb3IgbW9yZSBmYWxsYmFjayBwYXJhbXMsIHNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBjb25zaWRlciB0aGUgYXdhaXRpbmcgb2YgdGhpcyBwYXJhbXMgb2JqZWN0IFwiZHluYW1pY1wiLiBTaW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBpbiBjYWNoZUNvbXBvbmVudHMgbW9kZSB3ZSBlbmNvZGUgdGhpcyBhcyBhIHByb21pc2UgdGhhdCBuZXZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHdvcmtVbml0U3RvcmUucmVuZGVyU2lnbmFsLCB3b3JrU3RvcmUucm91dGUsICdgcGFyYW1zYCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVByZXJlbmRlclBhcmFtc0ZvckNsaWVudFNlZ21lbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM0XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBXZSdyZSBwcmVyZW5kZXJpbmcgaW4gYSBtb2RlIHRoYXQgZG9lcyBub3QgYWJvcnQuIFdlIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aG91dFxuICAgIC8vIGFueSB0cmFja2luZyBiZWNhdXNlIHdlJ3JlIGp1c3QgdHJhbnNwb3J0aW5nIGEgdmFsdWUgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50IHdoZXJlIHRoZSB0cmFja2luZ1xuICAgIC8vIHdpbGwgYmUgYXBwbGllZC5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVybHlpbmdQYXJhbXMpO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdGljUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBzd2l0Y2gocHJlcmVuZGVyU3RvcmUudHlwZSl7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcGFyYW1zIG9iamVjdCBoYXMgb25lIG9yIG1vcmUgZmFsbGJhY2sgcGFyYW1zLCBzbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gY29uc2lkZXIgdGhlIGF3YWl0aW5nIG9mIHRoaXMgcGFyYW1zIG9iamVjdCBcImR5bmFtaWNcIi4gU2luY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgaW4gY2FjaGVDb21wb25lbnRzIG1vZGUgd2UgZW5jb2RlIHRoaXMgYXMgYSBwcm9taXNlIHRoYXQgbmV2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdQYXJhbXModW5kZXJseWluZ1BhcmFtcywgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gcHJlcmVuZGVyU3RvcmUuZmFsbGJhY2tSb3V0ZVBhcmFtcztcbiAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcHJlcmVuZGVyU3RvcmU7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZEV4b3RpY1BhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtVbml0U3RvcmUpIHtcbiAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5nLmRlbGF5VW50aWxSdW50aW1lU3RhZ2UpKHdvcmtVbml0U3RvcmUsIHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTID8gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSA6IG1ha2VVbnRyYWNrZWRFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcykpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5Qcm9kKHVuZGVybHlpbmdQYXJhbXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRQYXJhbXModW5kZXJseWluZ1BhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBtYWtlVW50cmFja2VkRXhvdGljUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVuZGVyUGFyYW1zSW5EZXYodW5kZXJseWluZ1BhcmFtcywgZGV2RmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGxldCBoYXNGYWxsYmFja1BhcmFtcyA9IGZhbHNlO1xuICAgIGlmIChkZXZGYWxsYmFja1BhcmFtcykge1xuICAgICAgICBmb3IobGV0IGtleSBpbiB1bmRlcmx5aW5nUGFyYW1zKXtcbiAgICAgICAgICAgIGlmIChkZXZGYWxsYmFja1BhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGhhc0ZhbGxiYWNrUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NBQ0hFX0NPTVBPTkVOVFMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgfVxuICAgIHJldHVybiBtYWtlRHluYW1pY2FsbHlUcmFja2VkRXhvdGljUGFyYW1zV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdQYXJhbXMsIGhhc0ZhbGxiYWNrUGFyYW1zLCB3b3JrU3RvcmUpO1xufVxuY29uc3QgQ2FjaGVkUGFyYW1zID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGZhbGxiYWNrUGFyYW1zUHJveHlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgaWYgKHByb3AgPT09ICd0aGVuJyB8fCBwcm9wID09PSAnY2F0Y2gnIHx8IHByb3AgPT09ICdmaW5hbGx5Jykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICBbcHJvcF06ICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IF9keW5hbWljYWNjZXNzYXN5bmNzdG9yYWdlZXh0ZXJuYWwuZHluYW1pY0FjY2Vzc0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmFib3J0Q29udHJvbGxlci5hYm9ydChPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBBY2Nlc3NlZCBmYWxsYmFjayBcXGBwYXJhbXNcXGAgZHVyaW5nIHByZXJlbmRlcmluZy5gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTY5MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkob3JpZ2luYWxNZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdzKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pW3Byb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgfVxufTtcbmZ1bmN0aW9uIG1ha2VIYW5naW5nUGFyYW1zKHVuZGVybHlpbmdQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm94eSgoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlSGFuZ2luZ1Byb21pc2UpKHByZXJlbmRlclN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHBhcmFtc2AnKSwgZmFsbGJhY2tQYXJhbXNQcm94eUhhbmRsZXIpO1xuICAgIENhY2hlZFBhcmFtcy5zZXQodW5kZXJseWluZ1BhcmFtcywgcHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlRXJyb3JpbmdFeG90aWNQYXJhbXModW5kZXJseWluZ1BhcmFtcywgZmFsbGJhY2tQYXJhbXMsIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRQYXJhbXMgPSBDYWNoZWRQYXJhbXMuZ2V0KHVuZGVybHlpbmdQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgYXVnbWVudGVkVW5kZXJseWluZyA9IHtcbiAgICAgICAgLi4udW5kZXJseWluZ1BhcmFtc1xuICAgIH07XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2UgcGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShhdWdtZW50ZWRVbmRlcmx5aW5nKTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmIChfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAvLyB0cnVlIHVuZGVybHlpbmcgdmFsdWUgZm9yIFByb21pc2VzIHRvIHdvcmsgY29ycmVjdGx5IGF0IHJ1bnRpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja1BhcmFtcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXVnbWVudGVkVW5kZXJseWluZywgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdwYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgZHluYW1pYyBBUElzIHdlIGFsc28gdGhyb3cgaWYgYGR5bmFtaWMgPSBcImVycm9yXCJgIGhvd2V2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBwYXJhbXMgaXMgb25seSBkeW5hbWljIHdoZW4gd2UncmUgZ2VuZXJhdGluZyBhIGZhbGxiYWNrIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlbiB3aGVuIGBkeW5hbWljID0gXCJlcnJvclwiYCB3ZSBzdGlsbCBzdXBwb3J0IGdlbmVyYXRpbmcgZHluYW1pY1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsbGJhY2sgc2hlbGxzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBjYWNoZUNvbXBvbmVudHMgaXMgdGhlIGRlZmF1bHQgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgbm8gYGR5bmFtaWMgPSBcImVycm9yXCJgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCBleHByZXNzaW9uLCBwcmVyZW5kZXJTdG9yZS5keW5hbWljVHJhY2tpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRocm93VG9JbnRlcnJ1cHRTdGF0aWNHZW5lcmF0aW9uKShleHByZXNzaW9uLCB3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9taXNlLCBwcm9wLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3BhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gbW9zdCBkeW5hbWljIEFQSXMgd2UgYWxzbyB0aHJvdyBpZiBgZHluYW1pYyA9IFwiZXJyb3JcImAgaG93ZXZlclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHBhcmFtcyBpcyBvbmx5IGR5bmFtaWMgd2hlbiB3ZSdyZSBnZW5lcmF0aW5nIGEgZmFsbGJhY2sgc2hlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBldmVuIHdoZW4gYGR5bmFtaWMgPSBcImVycm9yXCJgIHdlIHN0aWxsIHN1cHBvcnQgZ2VuZXJhdGluZyBkeW5hbWljXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWxsYmFjayBzaGVsbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgY29tbWVudCB3aGVuIGNhY2hlQ29tcG9uZW50cyBpcyB0aGUgZGVmYXVsdCBzaW5jZSB0aGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBubyBgZHluYW1pYyA9IFwiZXJyb3JcImBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQUFIgUHJlcmVuZGVyIChubyBjYWNoZUNvbXBvbmVudHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZ2FjeSBQcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzZXQgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZEV4b3RpY1BhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlKTtcbiAgICBPYmplY3Qua2V5cyh1bmRlcmx5aW5nUGFyYW1zKS5mb3JFYWNoKChwcm9wKT0+e1xuICAgICAgICBpZiAoX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBzaGFkb3dlZCBiZWNhdXNlIHRoZXkgbmVlZCB0byBiZSB0aGVcbiAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZVVudHJhY2tlZFBhcmFtcyh1bmRlcmx5aW5nUGFyYW1zKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZXJseWluZ1BhcmFtcyk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm9taXNlKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VEeW5hbWljYWxseVRyYWNrZWRFeG90aWNQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1BhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgICAgICBwcm9taXNlW3Byb3BdID0gdW5kZXJseWluZ1BhcmFtc1twcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IHdhcyBwcm94aWVkIHRvIHRoZSBwcm9taXNlIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgcHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZVN0cmluZ1Byb3BlcnR5QWNjZXNzKSgncGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYC4uLnBhcmFtc2Agb3Igc2ltaWxhciBleHByZXNzaW9uJztcbiAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgdW5wcm94aWVkUHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRQYXJhbXMuc2V0KHVuZGVybHlpbmdQYXJhbXMsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG4vLyBTaW1pbGFyIHRvIGBtYWtlRHluYW1pY2FsbHlUcmFja2VkRXhvdGljUGFyYW1zV2l0aERldldhcm5pbmdzYCwgYnV0IGp1c3Rcbi8vIGxvZ2dpbmcgdGhlIHN5bmMgYWNjZXNzIHdpdGhvdXQgYWN0dWFsbHkgZGVmaW5pbmcgdGhlIHBhcmFtcyBvbiB0aGUgcHJvbWlzZS5cbmZ1bmN0aW9uIG1ha2VEeW5hbWljYWxseVRyYWNrZWRQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1BhcmFtcywgaGFzRmFsbGJhY2tQYXJhbXMsIHN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkUGFyYW1zID0gQ2FjaGVkUGFyYW1zLmdldCh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRQYXJhbXM7XG4gICAgfVxuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSBoYXNGYWxsYmFja1BhcmFtcyA/ICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VEZXZ0b29sc0lPQXdhcmVQcm9taXNlKSh1bmRlcmx5aW5nUGFyYW1zKSA6IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1BhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICgvLyBXZSBhcmUgYWNjZXNzaW5nIGEgcHJvcGVydHkgdGhhdCB3YXMgcHJveGllZCB0byB0aGUgcHJvbWlzZSBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3BhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2VzcyhzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYC4uLnBhcmFtc2Agb3Igc2ltaWxhciBleHByZXNzaW9uJztcbiAgICAgICAgICAgIHdhcm5Gb3JJbmNvbXBsZXRlRW51bWVyYXRpb24oc3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHVucHJveGllZFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgQ2FjaGVkUGFyYW1zLnNldCh1bmRlcmx5aW5nUGFyYW1zLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gc3luY0lPRGV2KHJvdXRlLCBleHByZXNzaW9uLCBtaXNzaW5nUHJvcGVydGllcykge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUucHJlcmVuZGVyUGhhc2UgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgZHluYW1pY2FsbHkgaW4gZGV2LCB3ZSBuZWVkIHRvIGFkdmFuY2Ugb3V0IG9mXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBQcmVyZW5kZXIgZW52aXJvbm1lbnQgd2hlbiB3ZSByZWFkIFJlcXVlc3QgZGF0YSBzeW5jaHJvbm91c2x5LlxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudHJhY2tTeW5jaHJvbm91c1JlcXVlc3REYXRhQWNjZXNzSW5EZXYpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBJbiBhbGwgY2FzZXMgd2Ugd2FybiBub3JtYWxseVxuICAgIGlmIChtaXNzaW5nUHJvcGVydGllcyAmJiBtaXNzaW5nUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHdhcm5Gb3JJbmNvbXBsZXRlRW51bWVyYXRpb24ocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuRm9yU3luY0FjY2Vzcyhyb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgfVxufVxuY29uc3Qgd2FybkZvclN5bmNBY2Nlc3MgPSAoMCwgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIuY3JlYXRlRGVkdXBlZEJ5Q2FsbHNpdGVTZXJ2ZXJFcnJvckxvZ2dlckRldikoY3JlYXRlUGFyYW1zQWNjZXNzRXJyb3IpO1xuY29uc3Qgd2FybkZvckluY29tcGxldGVFbnVtZXJhdGlvbiA9ICgwLCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlci5jcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2KShjcmVhdGVJbmNvbXBsZXRlRW51bWVyYXRpb25FcnJvcik7XG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNBY2Nlc3NFcnJvcihyb3V0ZSwgZXhwcmVzc2lvbikge1xuICAgIGNvbnN0IHByZWZpeCA9IHJvdXRlID8gYFJvdXRlIFwiJHtyb3V0ZX1cIiBgIDogJ1RoaXMgcm91dGUgJztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgJHtwcmVmaXh9dXNlZCAke2V4cHJlc3Npb259LiBgICsgYFxcYHBhcmFtc1xcYCBzaG91bGQgYmUgYXdhaXRlZCBiZWZvcmUgdXNpbmcgaXRzIHByb3BlcnRpZXMuIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkUzMDdcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSW5jb21wbGV0ZUVudW1lcmF0aW9uRXJyb3Iocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgcHJlZml4ID0gcm91dGUgPyBgUm91dGUgXCIke3JvdXRlfVwiIGAgOiAnVGhpcyByb3V0ZSAnO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGAke3ByZWZpeH11c2VkICR7ZXhwcmVzc2lvbn0uIGAgKyBgXFxgcGFyYW1zXFxgIHNob3VsZCBiZSBhd2FpdGVkIGJlZm9yZSB1c2luZyBpdHMgcHJvcGVydGllcy4gYCArIGBUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgd2VyZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZW51bWVyYXRpb24gYCArIGBiZWNhdXNlIHRoZXkgY29uZmxpY3Qgd2l0aCBidWlsdGluIHByb3BlcnR5IG5hbWVzOiBgICsgYCR7ZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzKG1pc3NpbmdQcm9wZXJ0aWVzKX0uIGAgKyBgTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvc3luYy1keW5hbWljLWFwaXNgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgIHZhbHVlOiBcIkU0ODJcIixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzKHByb3BlcnRpZXMpIHtcbiAgICBzd2l0Y2gocHJvcGVydGllcy5sZW5ndGgpe1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgZGVzY3JpYmVMaXN0T2ZQcm9wZXJ0eU5hbWVzIHRvIGJlIGNhbGxlZCB3aXRoIGEgbm9uLWVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiRTUzMVwiLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBgXFxgJHtwcm9wZXJ0aWVzWzBdfVxcYGA7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBgXFxgJHtwcm9wZXJ0aWVzWzBdfVxcYCBhbmQgXFxgJHtwcm9wZXJ0aWVzWzFdfVxcYGA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYFxcYCR7cHJvcGVydGllc1tpXX1cXGAsIGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9IGAsIGFuZCBcXGAke3Byb3BlcnRpZXNbcHJvcGVydGllcy5sZW5ndGggLSAxXX1cXGBgO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcmFtcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/params.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/request/search-params.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/server/request/search-params.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createPrerenderSearchParamsForClientPage: function() {\n return createPrerenderSearchParamsForClientPage;\n },\n createSearchParamsFromClient: function() {\n return createSearchParamsFromClient;\n },\n createServerSearchParamsForMetadata: function() {\n return createServerSearchParamsForMetadata;\n },\n createServerSearchParamsForServerPage: function() {\n return createServerSearchParamsForServerPage;\n },\n makeErroringSearchParamsForUseCache: function() {\n return makeErroringSearchParamsForUseCache;\n }\n});\nconst _reflect = __webpack_require__(/*! ../web/spec-extension/adapters/reflect */ \"(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(ssr)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(ssr)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _creatededupedbycallsiteservererrorlogger = __webpack_require__(/*! ../create-deduped-by-callsite-server-error-logger */ \"(ssr)/./node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js\");\nconst _reflectutils = __webpack_require__(/*! ../../shared/lib/utils/reflect-utils */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/next/dist/server/request/utils.js\");\nfunction createSearchParamsFromClient(underlyingSearchParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E769\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createSearchParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E739\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nconst createServerSearchParamsForMetadata = createServerSearchParamsForServerPage;\nfunction createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createServerSearchParamsForServerPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E747\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore);\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore);\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createPrerenderSearchParamsForClientPage(workStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n // We're prerendering in a mode that aborts (cacheComponents) and should stall\n // the promise to ensure the RSC side is considered dynamic\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, workStore.route, '`searchParams`');\n case 'prerender-runtime':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E768\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new _invarianterror.InvariantError('createPrerenderSearchParamsForClientPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E746\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n return Promise.resolve({});\n default:\n workUnitStore;\n }\n }\n (0, _workunitasyncstorageexternal.throwInvariantForMissingStore)();\n}\nfunction createStaticPrerenderSearchParams(workStore, prerenderStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n // We are in a cacheComponents (PPR or otherwise) prerender\n return makeHangingSearchParams(workStore, prerenderStore);\n case 'prerender-ppr':\n case 'prerender-legacy':\n // We are in a legacy static generation and need to interrupt the\n // prerender when search params are accessed.\n return makeErroringExoticSearchParams(workStore, prerenderStore);\n default:\n return prerenderStore;\n }\n}\nfunction createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore) {\n return (0, _dynamicrendering.delayUntilRuntimeStage)(workUnitStore, false ? 0 : makeUntrackedExoticSearchParams(underlyingSearchParams));\n}\nfunction createRenderSearchParams(underlyingSearchParams, workStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n } else {\n if (true) {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n if (false) {}\n return makeDynamicallyTrackedExoticSearchParamsWithDevWarnings(underlyingSearchParams, workStore);\n } else {}\n }\n}\nconst CachedSearchParams = new WeakMap();\nconst CachedSearchParamsForUseCache = new WeakMap();\nfunction makeHangingSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(prerenderStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = (0, _dynamicrenderingutils.makeHangingPromise)(prerenderStore.renderSignal, workStore.route, '`searchParams`');\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n (0, _dynamicrendering.annotateDynamicAccess)(expression, prerenderStore);\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n default:\n {\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n }\n });\n CachedSearchParams.set(prerenderStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringExoticSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const underlyingSearchParams = {};\n // For search params we don't construct a ReactPromise because we want to interrupt\n // rendering on any property access that was not set from outside and so we only want\n // to have properties like value and status if React sets them.\n const promise = Promise.resolve(underlyingSearchParams);\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return;\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return;\n }\n default:\n {\n if (typeof prop === 'string' && !_reflectutils.wellKnownProperties.has(prop)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n },\n has (target, prop) {\n // We don't expect key checking to be used except for testing the existence of\n // searchParams so we make all has tests trigger dynamic. this means that `promise.then`\n // can resolve to the then function on the Promise prototype but 'then' in promise will assume\n // you are testing whether the searchParams has a 'then' property.\n if (typeof prop === 'string') {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n return false;\n }\n return _reflect.ReflectAdapter.has(target, prop);\n },\n ownKeys () {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n if (workStore.dynamicShouldError) {\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n (0, _dynamicrendering.throwToInterruptStaticGeneration)(expression, workStore, prerenderStore);\n }\n }\n });\n CachedSearchParams.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParamsForUseCache(workStore) {\n const cachedSearchParams = CachedSearchParamsForUseCache.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve({});\n const proxiedPromise = new Proxy(promise, {\n get: function get(target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it. We know it\n // isn't a dynamic access because it can only be something that was\n // previously written to the promise and thus not an underlying\n // searchParam value\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, get);\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has: function has(target, prop) {\n // We don't expect key checking to be used except for testing the existence of\n // searchParams so we make all has tests throw an error. this means that `promise.then`\n // can resolve to the then function on the Promise prototype but 'then' in promise will assume\n // you are testing whether the searchParams has a 'then' property.\n if (typeof prop === 'string' && (prop === 'then' || !_reflectutils.wellKnownProperties.has(prop))) {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, has);\n }\n return _reflect.ReflectAdapter.has(target, prop);\n },\n ownKeys: function ownKeys() {\n (0, _utils.throwForSearchParamsAccessInUseCache)(workStore, ownKeys);\n }\n });\n CachedSearchParamsForUseCache.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeUntrackedExoticSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n // We don't use makeResolvedReactPromise here because searchParams\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (!_reflectutils.wellKnownProperties.has(prop)) {\n Object.defineProperty(promise, prop, {\n get () {\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore);\n }\n return underlyingSearchParams[prop];\n },\n set (value) {\n Object.defineProperty(promise, prop, {\n value,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n }\n });\n return promise;\n}\nfunction makeUntrackedSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedExoticSearchParamsWithDevWarnings(underlyingSearchParams, store) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n // We have an unfortunate sequence of events that requires this initialization logic. We want to instrument the underlying\n // searchParams object to detect if you are accessing values in dev. This is used for warnings and for things like the static prerender\n // indicator. However when we pass this proxy to our Promise.resolve() below the VM checks if the resolved value is a promise by looking\n // at the `.then` property. To our dynamic tracking logic this is indistinguishable from a `then` searchParam and so we would normally trigger\n // dynamic tracking. However we know that this .then is not real dynamic access, it's just how thenables resolve in sequence. So we introduce\n // this initialization concept so we omit the dynamic check until after we've constructed our resolved promise.\n let promiseInitialized = false;\n const proxiedUnderlying = new Proxy(underlyingSearchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && promiseInitialized) {\n if (store.dynamicShouldError) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workUnitStore);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (store.dynamicShouldError) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n if (store.dynamicShouldError) {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n return Reflect.ownKeys(target);\n }\n });\n // We don't use makeResolvedReactPromise here because searchParams\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingSearchParams);\n promise.then(()=>{\n promiseInitialized = true;\n });\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n Object.defineProperty(promise, prop, {\n get () {\n return proxiedUnderlying[prop];\n },\n set (newValue) {\n Object.defineProperty(promise, prop, {\n value: newValue,\n writable: true,\n enumerable: true\n });\n },\n enumerable: true,\n configurable: true\n });\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (prop === 'then' && store.dynamicShouldError) {\n const expression = '`searchParams.then`';\n (0, _utils.throwWithStaticGenerationBailoutErrorWithDynamicError)(store.route, expression);\n }\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n syncIODev(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n syncIODev(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n syncIODev(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedSearchParams.set(underlyingSearchParams, proxiedPromise);\n return proxiedPromise;\n}\n// Similar to `makeDynamicallyTrackedExoticSearchParamsWithDevWarnings`, but\n// just logging the sync access without actually defining the search params on\n// the promise.\nfunction makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, store) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const proxiedProperties = new Set();\n const unproxiedProperties = [];\n const promise = (0, _dynamicrenderingutils.makeDevtoolsIOAwarePromise)(underlyingSearchParams);\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (_reflectutils.wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n unproxiedProperties.push(prop);\n } else {\n proxiedProperties.add(prop);\n }\n });\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeStringPropertyAccess)('searchParams', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!_reflectutils.wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = (0, _reflectutils.describeHasCheckingStringProperty)('searchParams', prop);\n warnForSyncAccess(store.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n warnForIncompleteEnumeration(store.route, expression, unproxiedProperties);\n return Reflect.ownKeys(target);\n }\n });\n CachedSearchParams.set(underlyingSearchParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction syncIODev(route, expression, missingProperties) {\n // In all cases we warn normally\n if (missingProperties && missingProperties.length > 0) {\n warnForIncompleteEnumeration(route, expression, missingProperties);\n } else {\n warnForSyncAccess(route, expression);\n }\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n if (workUnitStore.prerenderPhase === true) {\n // When we're rendering dynamically in dev, we need to advance out of\n // the Prerender environment when we read Request data synchronously.\n (0, _dynamicrendering.trackSynchronousRequestDataAccessInDev)(workUnitStore);\n }\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nconst warnForSyncAccess = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createSearchAccessError);\nconst warnForIncompleteEnumeration = (0, _creatededupedbycallsiteservererrorlogger.createDedupedByCallsiteServerErrorLoggerDev)(createIncompleteEnumerationError);\nfunction createSearchAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` should be awaited before using its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E249\",\n enumerable: false,\n configurable: true\n });\n}\nfunction createIncompleteEnumerationError(route, expression, missingProperties) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` should be awaited before using its properties. ` + `The following properties were not available through enumeration ` + `because they conflict with builtin or well-known property names: ` + `${describeListOfPropertyNames(missingProperties)}. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E2\",\n enumerable: false,\n configurable: true\n });\n}\nfunction describeListOfPropertyNames(properties) {\n switch(properties.length){\n case 0:\n throw Object.defineProperty(new _invarianterror.InvariantError('Expected describeListOfPropertyNames to be called with a non-empty list of strings.'), \"__NEXT_ERROR_CODE\", {\n value: \"E531\",\n enumerable: false,\n configurable: true\n });\n case 1:\n return `\\`${properties[0]}\\``;\n case 2:\n return `\\`${properties[0]}\\` and \\`${properties[1]}\\``;\n default:\n {\n let description = '';\n for(let i = 0; i < properties.length - 1; i++){\n description += `\\`${properties[i]}\\`, `;\n }\n description += `, and \\`${properties[properties.length - 1]}\\``;\n return description;\n }\n }\n}\n\n//# sourceMappingURL=search-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3NlYXJjaC1wYXJhbXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixNQUFNLENBTUw7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLG1CQUFPLENBQUMsNEhBQXdDO0FBQ2pFLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxzQ0FBc0MsbUJBQU8sQ0FBQywwRkFBZ0Q7QUFDOUYsd0JBQXdCLG1CQUFPLENBQUMsc0dBQWtDO0FBQ2xFLCtCQUErQixtQkFBTyxDQUFDLG9HQUE0QjtBQUNuRSxrREFBa0QsbUJBQU8sQ0FBQyxrSkFBbUQ7QUFDN0csc0JBQXNCLG1CQUFPLENBQUMsOEdBQXNDO0FBQ3BFLGVBQWUsbUJBQU8sQ0FBQyx1RUFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE1BQU07QUFDM0MsOENBQThDLE9BQU8sT0FBTyxXQUFXO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUNBQXFDLE1BQU07QUFDM0MsOENBQThDLE9BQU8sT0FBTyxXQUFXLHlOQUF5TiwrQ0FBK0M7QUFDL1U7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBLHdCQUF3QixjQUFjLFdBQVcsY0FBYztBQUMvRDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkJBQTJCO0FBQzFELHdDQUF3QyxjQUFjO0FBQ3REO0FBQ0EsMENBQTBDLGtDQUFrQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyZXF1ZXN0XFxzZWFyY2gtcGFyYW1zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogbnVsbCxcbiAgICBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50OiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0Zvck1ldGFkYXRhOiBudWxsLFxuICAgIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U6IG51bGwsXG4gICAgbWFrZUVycm9yaW5nU2VhcmNoUGFyYW1zRm9yVXNlQ2FjaGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVyZW5kZXJTZWFyY2hQYXJhbXNGb3JDbGllbnRQYWdlO1xuICAgIH0sXG4gICAgY3JlYXRlU2VhcmNoUGFyYW1zRnJvbUNsaWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50O1xuICAgIH0sXG4gICAgY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yTWV0YWRhdGE7XG4gICAgfSxcbiAgICBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG4gICAgfSxcbiAgICBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZTtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWZsZWN0ID0gcmVxdWlyZShcIi4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZWZsZWN0XCIpO1xuY29uc3QgX2R5bmFtaWNyZW5kZXJpbmcgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZ1wiKTtcbmNvbnN0IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIik7XG5jb25zdCBfaW52YXJpYW50ZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9pbnZhcmlhbnQtZXJyb3JcIik7XG5jb25zdCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzID0gcmVxdWlyZShcIi4uL2R5bmFtaWMtcmVuZGVyaW5nLXV0aWxzXCIpO1xuY29uc3QgX2NyZWF0ZWRlZHVwZWRieWNhbGxzaXRlc2VydmVyZXJyb3Jsb2dnZXIgPSByZXF1aXJlKFwiLi4vY3JlYXRlLWRlZHVwZWQtYnktY2FsbHNpdGUtc2VydmVyLWVycm9yLWxvZ2dlclwiKTtcbmNvbnN0IF9yZWZsZWN0dXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi91dGlscy9yZWZsZWN0LXV0aWxzXCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXNGcm9tQ2xpZW50KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gYSBydW50aW1lIHByZXJlbmRlci4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NjlcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBfaW52YXJpYW50ZXJyb3IuSW52YXJpYW50RXJyb3IoJ2NyZWF0ZVNlYXJjaFBhcmFtc0Zyb21DbGllbnQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW4gY2FjaGUgY29udGV4dHMuJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzM5XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgd29ya1N0b3JlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgd29ya1VuaXRTdG9yZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAoMCwgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwudGhyb3dJbnZhcmlhbnRGb3JNaXNzaW5nU3RvcmUpKCk7XG59XG5jb25zdCBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JNZXRhZGF0YSA9IGNyZWF0ZVNlcnZlclNlYXJjaFBhcmFtc0ZvclNlcnZlclBhZ2U7XG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJTZWFyY2hQYXJhbXNGb3JTZXJ2ZXJQYWdlKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICh3b3JrVW5pdFN0b3JlKSB7XG4gICAgICAgIHN3aXRjaCh3b3JrVW5pdFN0b3JlLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3RhdGljUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlU2VydmVyU2VhcmNoUGFyYW1zRm9yU2VydmVyUGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDdcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXJ1bnRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSdW50aW1lUHJlcmVuZGVyU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVByZXJlbmRlclNlYXJjaFBhcmFtc0ZvckNsaWVudFBhZ2Uod29ya1N0b3JlKSB7XG4gICAgaWYgKHdvcmtTdG9yZS5mb3JjZVN0YXRpYykge1xuICAgICAgICAvLyBXaGVuIHVzaW5nIGZvcmNlU3RhdGljIHdlIG92ZXJyaWRlIGFsbCBvdGhlciBsb2dpYyBhbmQgYWx3YXlzIGp1c3QgcmV0dXJuIGFuIGVtcHR5XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgb2JqZWN0LlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgc3dpdGNoKHdvcmtVbml0U3RvcmUudHlwZSl7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICAgICAgLy8gV2UncmUgcHJlcmVuZGVyaW5nIGluIGEgbW9kZSB0aGF0IGFib3J0cyAoY2FjaGVDb21wb25lbnRzKSBhbmQgc2hvdWxkIHN0YWxsXG4gICAgICAgICAgICAgICAgLy8gdGhlIHByb21pc2UgdG8gZW5zdXJlIHRoZSBSU0Mgc2lkZSBpcyBjb25zaWRlcmVkIGR5bmFtaWNcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKSh3b3JrVW5pdFN0b3JlLnJlbmRlclNpZ25hbCwgd29ya1N0b3JlLnJvdXRlLCAnYHNlYXJjaFBhcmFtc2AnKTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBhIHJ1bnRpbWUgcHJlcmVuZGVyLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTc2OFwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlICdjYWNoZSc6XG4gICAgICAgICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgICAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IF9pbnZhcmlhbnRlcnJvci5JbnZhcmlhbnRFcnJvcignY3JlYXRlUHJlcmVuZGVyU2VhcmNoUGFyYW1zRm9yQ2xpZW50UGFnZSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiBjYWNoZSBjb250ZXh0cy4nKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU3NDZcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB3b3JrVW5pdFN0b3JlO1xuICAgICAgICB9XG4gICAgfVxuICAgICgwLCBfd29ya3VuaXRhc3luY3N0b3JhZ2VleHRlcm5hbC50aHJvd0ludmFyaWFudEZvck1pc3NpbmdTdG9yZSkoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ByZXJlbmRlclNlYXJjaFBhcmFtcyh3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKSB7XG4gICAgaWYgKHdvcmtTdG9yZS5mb3JjZVN0YXRpYykge1xuICAgICAgICAvLyBXaGVuIHVzaW5nIGZvcmNlU3RhdGljIHdlIG92ZXJyaWRlIGFsbCBvdGhlciBsb2dpYyBhbmQgYWx3YXlzIGp1c3QgcmV0dXJuIGFuIGVtcHR5XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgb2JqZWN0LlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9XG4gICAgc3dpdGNoKHByZXJlbmRlclN0b3JlLnR5cGUpe1xuICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItY2xpZW50JzpcbiAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGNhY2hlQ29tcG9uZW50cyAoUFBSIG9yIG90aGVyd2lzZSkgcHJlcmVuZGVyXG4gICAgICAgICAgICByZXR1cm4gbWFrZUhhbmdpbmdTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgIGNhc2UgJ3ByZXJlbmRlci1wcHInOlxuICAgICAgICBjYXNlICdwcmVyZW5kZXItbGVnYWN5JzpcbiAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGxlZ2FjeSBzdGF0aWMgZ2VuZXJhdGlvbiBhbmQgbmVlZCB0byBpbnRlcnJ1cHQgdGhlXG4gICAgICAgICAgICAvLyBwcmVyZW5kZXIgd2hlbiBzZWFyY2ggcGFyYW1zIGFyZSBhY2Nlc3NlZC5cbiAgICAgICAgICAgIHJldHVybiBtYWtlRXJyb3JpbmdFeG90aWNTZWFyY2hQYXJhbXMod29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcHJlcmVuZGVyU3RvcmU7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlUnVudGltZVByZXJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrVW5pdFN0b3JlKSB7XG4gICAgcmV0dXJuICgwLCBfZHluYW1pY3JlbmRlcmluZy5kZWxheVVudGlsUnVudGltZVN0YWdlKSh3b3JrVW5pdFN0b3JlLCBwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUyA/IG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykgOiBtYWtlVW50cmFja2VkRXhvdGljU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlclNlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpIHtcbiAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgIC8vIFdoZW4gdXNpbmcgZm9yY2VTdGF0aWMgd2Ugb3ZlcnJpZGUgYWxsIG90aGVyIGxvZ2ljIGFuZCBhbHdheXMganVzdCByZXR1cm4gYW4gZW1wdHlcbiAgICAgICAgLy8gZGljdGlvbmFyeSBvYmplY3QuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgLy8gU2VtYW50aWNhbGx5IHdlIG9ubHkgbmVlZCB0aGUgZGV2IHRyYWNraW5nIHdoZW4gcnVubmluZyBpbiBgbmV4dCBkZXZgXG4gICAgICAgICAgICAvLyBidXQgc2luY2UgeW91IHdvdWxkIG5ldmVyIHVzZSBuZXh0IGRldiB3aXRoIHByb2R1Y3Rpb24gTk9ERV9FTlYgd2UgdXNlIHRoaXNcbiAgICAgICAgICAgIC8vIGFzIGEgcHJveHkgc28gd2UgY2FuIHN0YXRpY2FsbHkgZXhjbHVkZSB0aGlzIGNvZGUgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0FDSEVfQ09NUE9ORU5UUykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zV2l0aERldldhcm5pbmdzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHdvcmtTdG9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB3b3JrU3RvcmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DQUNIRV9DT01QT05FTlRTKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXModW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWFrZVVudHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtcyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNvbnN0IENhY2hlZFNlYXJjaFBhcmFtcyA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCBDYWNoZWRTZWFyY2hQYXJhbXNGb3JVc2VDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBtYWtlSGFuZ2luZ1NlYXJjaFBhcmFtcyh3b3JrU3RvcmUsIHByZXJlbmRlclN0b3JlKSB7XG4gICAgY29uc3QgY2FjaGVkU2VhcmNoUGFyYW1zID0gQ2FjaGVkU2VhcmNoUGFyYW1zLmdldChwcmVyZW5kZXJTdG9yZSk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCBwcm9taXNlID0gKDAsIF9keW5hbWljcmVuZGVyaW5ndXRpbHMubWFrZUhhbmdpbmdQcm9taXNlKShwcmVyZW5kZXJTdG9yZS5yZW5kZXJTaWduYWwsIHdvcmtTdG9yZS5yb3V0ZSwgJ2BzZWFyY2hQYXJhbXNgJyk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKHByb21pc2UsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHByb21pc2UgaGFzIHRoaXMgcHJvcGVydHkgZGlyZWN0bHkuIHdlIG11c3QgcmV0dXJuIGl0LlxuICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgaXQgaXNuJ3QgYSBkeW5hbWljIGFjY2VzcyBiZWNhdXNlIGl0IGNhbiBvbmx5IGJlIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoYXQgd2FzIHByZXZpb3VzbHkgd3JpdHRlbiB0byB0aGUgcHJvbWlzZSBhbmQgdGh1cyBub3QgYW4gdW5kZXJseWluZyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICAgICAgY2FzZSAndGhlbic6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYGF3YWl0IHNlYXJjaFBhcmFtc2AsIGBzZWFyY2hQYXJhbXMudGhlbmAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLmFubm90YXRlRHluYW1pY0FjY2VzcykoZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHVzZShzZWFyY2hQYXJhbXMpYCwgYHNlYXJjaFBhcmFtcy5zdGF0dXNgLCBvciBzaW1pbGFyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5hbm5vdGF0ZUR5bmFtaWNBY2Nlc3MpKGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHByZXJlbmRlclN0b3JlLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUVycm9yaW5nRXhvdGljU2VhcmNoUGFyYW1zKHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHdvcmtTdG9yZSk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCB1bmRlcmx5aW5nU2VhcmNoUGFyYW1zID0ge307XG4gICAgLy8gRm9yIHNlYXJjaCBwYXJhbXMgd2UgZG9uJ3QgY29uc3RydWN0IGEgUmVhY3RQcm9taXNlIGJlY2F1c2Ugd2Ugd2FudCB0byBpbnRlcnJ1cHRcbiAgICAvLyByZW5kZXJpbmcgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IHdhcyBub3Qgc2V0IGZyb20gb3V0c2lkZSBhbmQgc28gd2Ugb25seSB3YW50XG4gICAgLy8gdG8gaGF2ZSBwcm9wZXJ0aWVzIGxpa2UgdmFsdWUgYW5kIHN0YXR1cyBpZiBSZWFjdCBzZXRzIHRoZW0uXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvbWlzZSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgdGhpcyBwcm9wZXJ0eSBkaXJlY3RseS4gd2UgbXVzdCByZXR1cm4gaXQuXG4gICAgICAgICAgICAgICAgLy8gV2Uga25vdyBpdCBpc24ndCBhIGR5bmFtaWMgYWNjZXNzIGJlY2F1c2UgaXQgY2FuIG9ubHkgYmUgc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgLy8gdGhhdCB3YXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBwcm9taXNlIGFuZCB0aHVzIG5vdCBhbiB1bmRlcmx5aW5nIHNlYXJjaFBhcmFtIHZhbHVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGVuJzpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgYXdhaXQgc2VhcmNoUGFyYW1zYCwgYHNlYXJjaFBhcmFtcy50aGVuYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdzdGF0dXMnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2B1c2Uoc2VhcmNoUGFyYW1zKWAsIGBzZWFyY2hQYXJhbXMuc3RhdHVzYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3MpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlcmVuZGVyU3RvcmUudHlwZSA9PT0gJ3ByZXJlbmRlci1wcHInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnBvc3Rwb25lV2l0aFRyYWNraW5nKSh3b3JrU3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHByZXJlbmRlclN0b3JlLmR5bmFtaWNUcmFja2luZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKGV4cHJlc3Npb24sIHdvcmtTdG9yZSwgcHJlcmVuZGVyU3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBrZXkgY2hlY2tpbmcgdG8gYmUgdXNlZCBleGNlcHQgZm9yIHRlc3RpbmcgdGhlIGV4aXN0ZW5jZSBvZlxuICAgICAgICAgICAgLy8gc2VhcmNoUGFyYW1zIHNvIHdlIG1ha2UgYWxsIGhhcyB0ZXN0cyB0cmlnZ2VyIGR5bmFtaWMuIHRoaXMgbWVhbnMgdGhhdCBgcHJvbWlzZS50aGVuYFxuICAgICAgICAgICAgLy8gY2FuIHJlc29sdmUgdG8gdGhlIHRoZW4gZnVuY3Rpb24gb24gdGhlIFByb21pc2UgcHJvdG90eXBlIGJ1dCAndGhlbicgaW4gcHJvbWlzZSB3aWxsIGFzc3VtZVxuICAgICAgICAgICAgLy8geW91IGFyZSB0ZXN0aW5nIHdoZXRoZXIgdGhlIHNlYXJjaFBhcmFtcyBoYXMgYSAndGhlbicgcHJvcGVydHkuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICgwLCBfcmVmbGVjdHV0aWxzLmRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eSkoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgIGlmICh3b3JrU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcmVyZW5kZXJTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLXBwcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUFBSIFByZXJlbmRlciAobm8gY2FjaGVDb21wb25lbnRzKVxuICAgICAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyAoKSB7XG4gICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gJ2B7Li4uc2VhcmNoUGFyYW1zfWAsIGBPYmplY3Qua2V5cyhzZWFyY2hQYXJhbXMpYCwgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByZXJlbmRlclN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGNhY2hlQ29tcG9uZW50cylcbiAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcucG9zdHBvbmVXaXRoVHJhY2tpbmcpKHdvcmtTdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgcHJlcmVuZGVyU3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTGVnYWN5IFByZXJlbmRlclxuICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50aHJvd1RvSW50ZXJydXB0U3RhdGljR2VuZXJhdGlvbikoZXhwcmVzc2lvbiwgd29ya1N0b3JlLCBwcmVyZW5kZXJTdG9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHdvcmtTdG9yZSwgcHJveGllZFByb21pc2UpO1xuICAgIHJldHVybiBwcm94aWVkUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIG1ha2VFcnJvcmluZ1NlYXJjaFBhcmFtc0ZvclVzZUNhY2hlKHdvcmtTdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLmdldCh3b3JrU3RvcmUpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgY29uc3QgcHJveGllZFByb21pc2UgPSBuZXcgUHJveHkocHJvbWlzZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihwcm9taXNlLCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyB0aGlzIHByb3BlcnR5IGRpcmVjdGx5LiB3ZSBtdXN0IHJldHVybiBpdC4gV2Uga25vdyBpdFxuICAgICAgICAgICAgICAgIC8vIGlzbid0IGEgZHluYW1pYyBhY2Nlc3MgYmVjYXVzZSBpdCBjYW4gb25seSBiZSBzb21ldGhpbmcgdGhhdCB3YXNcbiAgICAgICAgICAgICAgICAvLyBwcmV2aW91c2x5IHdyaXR0ZW4gdG8gdGhlIHByb21pc2UgYW5kIHRodXMgbm90IGFuIHVuZGVybHlpbmdcbiAgICAgICAgICAgICAgICAvLyBzZWFyY2hQYXJhbSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIChwcm9wID09PSAndGhlbicgfHwgIV9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpKSB7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd0ZvclNlYXJjaFBhcmFtc0FjY2Vzc0luVXNlQ2FjaGUpKHdvcmtTdG9yZSwgZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhczogZnVuY3Rpb24gaGFzKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IGtleSBjaGVja2luZyB0byBiZSB1c2VkIGV4Y2VwdCBmb3IgdGVzdGluZyB0aGUgZXhpc3RlbmNlIG9mXG4gICAgICAgICAgICAvLyBzZWFyY2hQYXJhbXMgc28gd2UgbWFrZSBhbGwgaGFzIHRlc3RzIHRocm93IGFuIGVycm9yLiB0aGlzIG1lYW5zIHRoYXQgYHByb21pc2UudGhlbmBcbiAgICAgICAgICAgIC8vIGNhbiByZXNvbHZlIHRvIHRoZSB0aGVuIGZ1bmN0aW9uIG9uIHRoZSBQcm9taXNlIHByb3RvdHlwZSBidXQgJ3RoZW4nIGluIHByb21pc2Ugd2lsbCBhc3N1bWVcbiAgICAgICAgICAgIC8vIHlvdSBhcmUgdGVzdGluZyB3aGV0aGVyIHRoZSBzZWFyY2hQYXJhbXMgaGFzIGEgJ3RoZW4nIHByb3BlcnR5LlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiAocHJvcCA9PT0gJ3RoZW4nIHx8ICFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApKSkge1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dGb3JTZWFyY2hQYXJhbXNBY2Nlc3NJblVzZUNhY2hlKSh3b3JrU3RvcmUsIGhhcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX3JlZmxlY3QuUmVmbGVjdEFkYXB0ZXIuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXM6IGZ1bmN0aW9uIG93bktleXMoKSB7XG4gICAgICAgICAgICAoMCwgX3V0aWxzLnRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSkod29ya1N0b3JlLCBvd25LZXlzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIENhY2hlZFNlYXJjaFBhcmFtc0ZvclVzZUNhY2hlLnNldCh3b3JrU3RvcmUsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkRXhvdGljU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1ha2VSZXNvbHZlZFJlYWN0UHJvbWlzZSBoZXJlIGJlY2F1c2Ugc2VhcmNoUGFyYW1zXG4gICAgLy8gc3VwcG9ydHMgY29weWluZyB3aXRoIHNwcmVhZCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1bm5lY2Vzc2FyaWx5XG4gICAgLy8gaW5zdHJ1bWVudCB0aGUgcHJvbWlzZSB3aXRoIHNwcmVhZGFibGUgcHJvcGVydGllcyBvZiBSZWFjdFByb21pc2UuXG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UpO1xuICAgIE9iamVjdC5rZXlzKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy50cmFja0R5bmFtaWNEYXRhSW5EeW5hbWljUmVuZGVyKSh3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZXJseWluZ1NlYXJjaFBhcmFtc1twcm9wXTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlVW50cmFja2VkU2VhcmNoUGFyYW1zKHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zKTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb21pc2UpO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZnVuY3Rpb24gbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5ncyh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBzdG9yZSkge1xuICAgIGNvbnN0IGNhY2hlZFNlYXJjaFBhcmFtcyA9IENhY2hlZFNlYXJjaFBhcmFtcy5nZXQodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgaWYgKGNhY2hlZFNlYXJjaFBhcmFtcykge1xuICAgICAgICByZXR1cm4gY2FjaGVkU2VhcmNoUGFyYW1zO1xuICAgIH1cbiAgICBjb25zdCBwcm94aWVkUHJvcGVydGllcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1bnByb3hpZWRQcm9wZXJ0aWVzID0gW107XG4gICAgLy8gV2UgaGF2ZSBhbiB1bmZvcnR1bmF0ZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCByZXF1aXJlcyB0aGlzIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBXZSB3YW50IHRvIGluc3RydW1lbnQgdGhlIHVuZGVybHlpbmdcbiAgICAvLyBzZWFyY2hQYXJhbXMgb2JqZWN0IHRvIGRldGVjdCBpZiB5b3UgYXJlIGFjY2Vzc2luZyB2YWx1ZXMgaW4gZGV2LiBUaGlzIGlzIHVzZWQgZm9yIHdhcm5pbmdzIGFuZCBmb3IgdGhpbmdzIGxpa2UgdGhlIHN0YXRpYyBwcmVyZW5kZXJcbiAgICAvLyBpbmRpY2F0b3IuIEhvd2V2ZXIgd2hlbiB3ZSBwYXNzIHRoaXMgcHJveHkgdG8gb3VyIFByb21pc2UucmVzb2x2ZSgpIGJlbG93IHRoZSBWTSBjaGVja3MgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGEgcHJvbWlzZSBieSBsb29raW5nXG4gICAgLy8gYXQgdGhlIGAudGhlbmAgcHJvcGVydHkuIFRvIG91ciBkeW5hbWljIHRyYWNraW5nIGxvZ2ljIHRoaXMgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGB0aGVuYCBzZWFyY2hQYXJhbSBhbmQgc28gd2Ugd291bGQgbm9ybWFsbHkgdHJpZ2dlclxuICAgIC8vIGR5bmFtaWMgdHJhY2tpbmcuIEhvd2V2ZXIgd2Uga25vdyB0aGF0IHRoaXMgLnRoZW4gaXMgbm90IHJlYWwgZHluYW1pYyBhY2Nlc3MsIGl0J3MganVzdCBob3cgdGhlbmFibGVzIHJlc29sdmUgaW4gc2VxdWVuY2UuIFNvIHdlIGludHJvZHVjZVxuICAgIC8vIHRoaXMgaW5pdGlhbGl6YXRpb24gY29uY2VwdCBzbyB3ZSBvbWl0IHRoZSBkeW5hbWljIGNoZWNrIHVudGlsIGFmdGVyIHdlJ3ZlIGNvbnN0cnVjdGVkIG91ciByZXNvbHZlZCBwcm9taXNlLlxuICAgIGxldCBwcm9taXNlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBwcm94aWVkVW5kZXJseWluZyA9IG5ldyBQcm94eSh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9taXNlSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZVN0cmluZ1Byb3BlcnR5QWNjZXNzKSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIpKHdvcmtVbml0U3RvcmUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5KSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyAodGFyZ2V0KSB7XG4gICAgICAgICAgICBpZiAoc3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgey4uLnNlYXJjaFBhcmFtc31gLCBgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAsIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgICAgICgwLCBfdXRpbHMudGhyb3dXaXRoU3RhdGljR2VuZXJhdGlvbkJhaWxvdXRFcnJvcldpdGhEeW5hbWljRXJyb3IpKHN0b3JlLnJvdXRlLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIFdlIGRvbid0IHVzZSBtYWtlUmVzb2x2ZWRSZWFjdFByb21pc2UgaGVyZSBiZWNhdXNlIHNlYXJjaFBhcmFtc1xuICAgIC8vIHN1cHBvcnRzIGNvcHlpbmcgd2l0aCBzcHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gdW5uZWNlc3NhcmlseVxuICAgIC8vIGluc3RydW1lbnQgdGhlIHByb21pc2Ugd2l0aCBzcHJlYWRhYmxlIHByb3BlcnRpZXMgb2YgUmVhY3RQcm9taXNlLlxuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSkodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgcHJvbWlzZS50aGVuKCgpPT57XG4gICAgICAgIHByb21pc2VJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvbWlzZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIGdldCAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94aWVkVW5kZXJseWluZ1twcm9wXTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldCAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb21pc2UsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHByb3hpZWRQcm9taXNlID0gbmV3IFByb3h5KHByb21pc2UsIHtcbiAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RoZW4nICYmIHN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYHNlYXJjaFBhcmFtcy50aGVuYCc7XG4gICAgICAgICAgICAgICAgKDAsIF91dGlscy50aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvcikoc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICBzeW5jSU9EZXYoc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCAodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5kZWxldGUocHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBoYXMgKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5KSgnc2VhcmNoUGFyYW1zJywgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNJT0RldihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIG93bktleXMgKHRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9ICdgT2JqZWN0LmtleXMoc2VhcmNoUGFyYW1zKWAgb3Igc2ltaWxhcic7XG4gICAgICAgICAgICBzeW5jSU9EZXYoc3RvcmUucm91dGUsIGV4cHJlc3Npb24sIHVucHJveGllZFByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgQ2FjaGVkU2VhcmNoUGFyYW1zLnNldCh1bmRlcmx5aW5nU2VhcmNoUGFyYW1zLCBwcm94aWVkUHJvbWlzZSk7XG4gICAgcmV0dXJuIHByb3hpZWRQcm9taXNlO1xufVxuLy8gU2ltaWxhciB0byBgbWFrZUR5bmFtaWNhbGx5VHJhY2tlZEV4b3RpY1NlYXJjaFBhcmFtc1dpdGhEZXZXYXJuaW5nc2AsIGJ1dFxuLy8ganVzdCBsb2dnaW5nIHRoZSBzeW5jIGFjY2VzcyB3aXRob3V0IGFjdHVhbGx5IGRlZmluaW5nIHRoZSBzZWFyY2ggcGFyYW1zIG9uXG4vLyB0aGUgcHJvbWlzZS5cbmZ1bmN0aW9uIG1ha2VVbnRyYWNrZWRTZWFyY2hQYXJhbXNXaXRoRGV2V2FybmluZ3ModW5kZXJseWluZ1NlYXJjaFBhcmFtcywgc3RvcmUpIHtcbiAgICBjb25zdCBjYWNoZWRTZWFyY2hQYXJhbXMgPSBDYWNoZWRTZWFyY2hQYXJhbXMuZ2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMpO1xuICAgIGlmIChjYWNoZWRTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNlYXJjaFBhcmFtcztcbiAgICB9XG4gICAgY29uc3QgcHJveGllZFByb3BlcnRpZXMgPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgdW5wcm94aWVkUHJvcGVydGllcyA9IFtdO1xuICAgIGNvbnN0IHByb21pc2UgPSAoMCwgX2R5bmFtaWNyZW5kZXJpbmd1dGlscy5tYWtlRGV2dG9vbHNJT0F3YXJlUHJvbWlzZSkodW5kZXJseWluZ1NlYXJjaFBhcmFtcyk7XG4gICAgT2JqZWN0LmtleXModW5kZXJseWluZ1NlYXJjaFBhcmFtcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgaWYgKF9yZWZsZWN0dXRpbHMud2VsbEtub3duUHJvcGVydGllcy5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNoYWRvd2VkIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIHRoZVxuICAgICAgICAgICAgLy8gdHJ1ZSB1bmRlcmx5aW5nIHZhbHVlIGZvciBQcm9taXNlcyB0byB3b3JrIGNvcnJlY3RseSBhdCBydW50aW1lXG4gICAgICAgICAgICB1bnByb3hpZWRQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm94aWVkUHJvcGVydGllcy5hZGQocHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBwcm94aWVkUHJvbWlzZSA9IG5ldyBQcm94eShwcm9taXNlLCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghX3JlZmxlY3R1dGlscy53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyhwcm9wKSAmJiAocHJveGllZFByb3BlcnRpZXMuaGFzKHByb3ApIHx8IC8vIFdlIGFyZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHByb21pc2Ugbm9yXG4gICAgICAgICAgICAgICAgLy8gdGhlIHVuZGVybHlpbmcgc2VhcmNoUGFyYW1zLlxuICAgICAgICAgICAgICAgIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCkgPT09IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gKDAsIF9yZWZsZWN0dXRpbHMuZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcykoJ3NlYXJjaFBhcmFtcycsIHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuRm9yU3luY0FjY2VzcyhzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9yZWZsZWN0LlJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0ICh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHByb3hpZWRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldCh0YXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGhhcyAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfcmVmbGVjdHV0aWxzLndlbGxLbm93blByb3BlcnRpZXMuaGFzKHByb3ApICYmIChwcm94aWVkUHJvcGVydGllcy5oYXMocHJvcCkgfHwgLy8gV2UgYXJlIGFjY2Vzc2luZyBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdCBvbiB0aGUgcHJvbWlzZSBub3JcbiAgICAgICAgICAgICAgICAvLyB0aGUgdW5kZXJseWluZyBzZWFyY2hQYXJhbXMuXG4gICAgICAgICAgICAgICAgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wKSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAoMCwgX3JlZmxlY3R1dGlscy5kZXNjcmliZUhhc0NoZWNraW5nU3RyaW5nUHJvcGVydHkpKCdzZWFyY2hQYXJhbXMnLCBwcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Moc3RvcmUucm91dGUsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3ApO1xuICAgICAgICB9LFxuICAgICAgICBvd25LZXlzICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAnYE9iamVjdC5rZXlzKHNlYXJjaFBhcmFtcylgIG9yIHNpbWlsYXInO1xuICAgICAgICAgICAgd2FybkZvckluY29tcGxldGVFbnVtZXJhdGlvbihzdG9yZS5yb3V0ZSwgZXhwcmVzc2lvbiwgdW5wcm94aWVkUHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBDYWNoZWRTZWFyY2hQYXJhbXMuc2V0KHVuZGVybHlpbmdTZWFyY2hQYXJhbXMsIHByb3hpZWRQcm9taXNlKTtcbiAgICByZXR1cm4gcHJveGllZFByb21pc2U7XG59XG5mdW5jdGlvbiBzeW5jSU9EZXYocm91dGUsIGV4cHJlc3Npb24sIG1pc3NpbmdQcm9wZXJ0aWVzKSB7XG4gICAgLy8gSW4gYWxsIGNhc2VzIHdlIHdhcm4gbm9ybWFsbHlcbiAgICBpZiAobWlzc2luZ1Byb3BlcnRpZXMgJiYgbWlzc2luZ1Byb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB3YXJuRm9ySW5jb21wbGV0ZUVudW1lcmF0aW9uKHJvdXRlLCBleHByZXNzaW9uLCBtaXNzaW5nUHJvcGVydGllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2FybkZvclN5bmNBY2Nlc3Mocm91dGUsIGV4cHJlc3Npb24pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwud29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAod29ya1VuaXRTdG9yZSkge1xuICAgICAgICBzd2l0Y2god29ya1VuaXRTdG9yZS50eXBlKXtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOlxuICAgICAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlLnByZXJlbmRlclBoYXNlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gd2UncmUgcmVuZGVyaW5nIGR5bmFtaWNhbGx5IGluIGRldiwgd2UgbmVlZCB0byBhZHZhbmNlIG91dCBvZlxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUHJlcmVuZGVyIGVudmlyb25tZW50IHdoZW4gd2UgcmVhZCBSZXF1ZXN0IGRhdGEgc3luY2hyb25vdXNseS5cbiAgICAgICAgICAgICAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRyYWNrU3luY2hyb25vdXNSZXF1ZXN0RGF0YUFjY2Vzc0luRGV2KSh3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICAgICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgICAgICAgY2FzZSAnY2FjaGUnOlxuICAgICAgICAgICAgY2FzZSAncHJpdmF0ZS1jYWNoZSc6XG4gICAgICAgICAgICBjYXNlICd1bnN0YWJsZS1jYWNoZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdvcmtVbml0U3RvcmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCB3YXJuRm9yU3luY0FjY2VzcyA9ICgwLCBfY3JlYXRlZGVkdXBlZGJ5Y2FsbHNpdGVzZXJ2ZXJlcnJvcmxvZ2dlci5jcmVhdGVEZWR1cGVkQnlDYWxsc2l0ZVNlcnZlckVycm9yTG9nZ2VyRGV2KShjcmVhdGVTZWFyY2hBY2Nlc3NFcnJvcik7XG5jb25zdCB3YXJuRm9ySW5jb21wbGV0ZUVudW1lcmF0aW9uID0gKDAsIF9jcmVhdGVkZWR1cGVkYnljYWxsc2l0ZXNlcnZlcmVycm9ybG9nZ2VyLmNyZWF0ZURlZHVwZWRCeUNhbGxzaXRlU2VydmVyRXJyb3JMb2dnZXJEZXYpKGNyZWF0ZUluY29tcGxldGVFbnVtZXJhdGlvbkVycm9yKTtcbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaEFjY2Vzc0Vycm9yKHJvdXRlLCBleHByZXNzaW9uKSB7XG4gICAgY29uc3QgcHJlZml4ID0gcm91dGUgPyBgUm91dGUgXCIke3JvdXRlfVwiIGAgOiAnVGhpcyByb3V0ZSAnO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGAke3ByZWZpeH11c2VkICR7ZXhwcmVzc2lvbn0uIGAgKyBgXFxgc2VhcmNoUGFyYW1zXFxgIHNob3VsZCBiZSBhd2FpdGVkIGJlZm9yZSB1c2luZyBpdHMgcHJvcGVydGllcy4gYCArIGBMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9zeW5jLWR5bmFtaWMtYXBpc2ApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiRTI0OVwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVJbmNvbXBsZXRlRW51bWVyYXRpb25FcnJvcihyb3V0ZSwgZXhwcmVzc2lvbiwgbWlzc2luZ1Byb3BlcnRpZXMpIHtcbiAgICBjb25zdCBwcmVmaXggPSByb3V0ZSA/IGBSb3V0ZSBcIiR7cm91dGV9XCIgYCA6ICdUaGlzIHJvdXRlICc7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYCR7cHJlZml4fXVzZWQgJHtleHByZXNzaW9ufS4gYCArIGBcXGBzZWFyY2hQYXJhbXNcXGAgc2hvdWxkIGJlIGF3YWl0ZWQgYmVmb3JlIHVzaW5nIGl0cyBwcm9wZXJ0aWVzLiBgICsgYFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB3ZXJlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBlbnVtZXJhdGlvbiBgICsgYGJlY2F1c2UgdGhleSBjb25mbGljdCB3aXRoIGJ1aWx0aW4gb3Igd2VsbC1rbm93biBwcm9wZXJ0eSBuYW1lczogYCArIGAke2Rlc2NyaWJlTGlzdE9mUHJvcGVydHlOYW1lcyhtaXNzaW5nUHJvcGVydGllcyl9LiBgICsgYExlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3N5bmMtZHluYW1pYy1hcGlzYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICB2YWx1ZTogXCJFMlwiLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBkZXNjcmliZUxpc3RPZlByb3BlcnR5TmFtZXMocHJvcGVydGllcykge1xuICAgIHN3aXRjaChwcm9wZXJ0aWVzLmxlbmd0aCl7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgX2ludmFyaWFudGVycm9yLkludmFyaWFudEVycm9yKCdFeHBlY3RlZCBkZXNjcmliZUxpc3RPZlByb3BlcnR5TmFtZXMgdG8gYmUgY2FsbGVkIHdpdGggYSBub24tZW1wdHkgbGlzdCBvZiBzdHJpbmdzLicpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNTMxXCIsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIGBcXGAke3Byb3BlcnRpZXNbMF19XFxgYDtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIGBcXGAke3Byb3BlcnRpZXNbMF19XFxgIGFuZCBcXGAke3Byb3BlcnRpZXNbMV19XFxgYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSAnJztcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSBgXFxgJHtwcm9wZXJ0aWVzW2ldfVxcYCwgYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYCwgYW5kIFxcYCR7cHJvcGVydGllc1twcm9wZXJ0aWVzLmxlbmd0aCAtIDFdfVxcYGA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VhcmNoLXBhcmFtcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/search-params.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/request/utils.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/server/request/utils.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isRequestAPICallableInsideAfter: function() {\n return isRequestAPICallableInsideAfter;\n },\n throwForSearchParamsAccessInUseCache: function() {\n return throwForSearchParamsAccessInUseCache;\n },\n throwWithStaticGenerationBailoutError: function() {\n return throwWithStaticGenerationBailoutError;\n },\n throwWithStaticGenerationBailoutErrorWithDynamicError: function() {\n return throwWithStaticGenerationBailoutErrorWithDynamicError;\n }\n});\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _aftertaskasyncstorageexternal = __webpack_require__(/*! ../app-render/after-task-async-storage.external */ \"../app-render/after-task-async-storage.external\");\nfunction throwWithStaticGenerationBailoutError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E576\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) {\n throw Object.defineProperty(new _staticgenerationbailout.StaticGenBailoutError(`Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E543\",\n enumerable: false,\n configurable: true\n });\n}\nfunction throwForSearchParamsAccessInUseCache(workStore, constructorOpt) {\n const error = Object.defineProperty(new Error(`Route ${workStore.route} used \"searchParams\" inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \"searchParams\" outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), \"__NEXT_ERROR_CODE\", {\n value: \"E779\",\n enumerable: false,\n configurable: true\n });\n Error.captureStackTrace(error, constructorOpt);\n workStore.invalidDynamicUsageError ??= error;\n throw error;\n}\nfunction isRequestAPICallableInsideAfter() {\n const afterTaskStore = _aftertaskasyncstorageexternal.afterTaskAsyncStorage.getStore();\n return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action';\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQW9DZ0JBLCtCQUErQjtlQUEvQkE7O0lBZEFDLG9DQUFvQztlQUFwQ0E7O0lBbEJBQyxxQ0FBcUM7ZUFBckNBOztJQVNBQyxxREFBcUQ7ZUFBckRBOzs7cURBYnNCOzJEQUNBO0FBRy9CLFNBQVNELHNDQUNkRSxLQUFhLEVBQ2JDLFVBQWtCO0lBRWxCLE1BQU0scUJBRUwsQ0FGSyxJQUFJQyx5QkFBQUEscUJBQXFCLENBQzdCLENBQUMsTUFBTSxFQUFFRixNQUFNLGlEQUFpRCxFQUFFQyxXQUFXLDBIQUEwSCxDQUFDLEdBRHBNO2VBQUE7b0JBQUE7c0JBQUE7SUFFTjtBQUNGO0FBRU8sU0FBU0Ysc0RBQ2RDLEtBQWEsRUFDYkMsVUFBa0I7SUFFbEIsTUFBTSxxQkFFTCxDQUZLLElBQUlDLHlCQUFBQSxxQkFBcUIsQ0FDN0IsQ0FBQyxNQUFNLEVBQUVGLE1BQU0sNEVBQTRFLEVBQUVDLFdBQVcsMEhBQTBILENBQUMsR0FEL047ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0Y7QUFFTyxTQUFTSixxQ0FDZE0sU0FBb0IsRUFDcEJDLGNBQXdCO0lBRXhCLE1BQU1DLFFBQVEscUJBRWIsQ0FGYSxJQUFJQyxNQUNoQixDQUFDLE1BQU0sRUFBRUgsVUFBVUgsS0FBSyxDQUFDLHVYQUF1WCxDQUFDLEdBRHJZO2VBQUE7b0JBQUE7c0JBQUE7SUFFZDtJQUVBTSxNQUFNQyxpQkFBaUIsQ0FBQ0YsT0FBT0Q7SUFDL0JELFVBQVVLLHdCQUF3QixLQUFLSDtJQUV2QyxNQUFNQTtBQUNSO0FBRU8sU0FBU1Q7SUFDZCxNQUFNYSxpQkFBaUJDLCtCQUFBQSxxQkFBcUIsQ0FBQ0MsUUFBUTtJQUNyRCxPQUFPRixDQUFBQSxrQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBZ0JHLGtCQUFBQSxNQUF1QjtBQUNoRCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNlcnZlclxccmVxdWVzdFxcdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGljR2VuQmFpbG91dEVycm9yIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dCdcbmltcG9ydCB7IGFmdGVyVGFza0FzeW5jU3RvcmFnZSB9IGZyb20gJy4uL2FwcC1yZW5kZXIvYWZ0ZXItdGFzay1hc3luYy1zdG9yYWdlLmV4dGVybmFsJ1xuaW1wb3J0IHR5cGUgeyBXb3JrU3RvcmUgfSBmcm9tICcuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCdcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3IoXG4gIHJvdXRlOiBzdHJpbmcsXG4gIGV4cHJlc3Npb246IHN0cmluZ1xuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgU3RhdGljR2VuQmFpbG91dEVycm9yKFxuICAgIGBSb3V0ZSAke3JvdXRlfSBjb3VsZG4ndCBiZSByZW5kZXJlZCBzdGF0aWNhbGx5IGJlY2F1c2UgaXQgdXNlZCAke2V4cHJlc3Npb259LiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zdGF0aWMtYW5kLWR5bmFtaWMjZHluYW1pYy1yZW5kZXJpbmdgXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3JXaXRoRHluYW1pY0Vycm9yKFxuICByb3V0ZTogc3RyaW5nLFxuICBleHByZXNzaW9uOiBzdHJpbmdcbik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcihcbiAgICBgUm91dGUgJHtyb3V0ZX0gd2l0aCBcXGBkeW5hbWljID0gXCJlcnJvclwiXFxgIGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkICR7ZXhwcmVzc2lvbn0uIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1hbmQtZHluYW1pYyNkeW5hbWljLXJlbmRlcmluZ2BcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dGb3JTZWFyY2hQYXJhbXNBY2Nlc3NJblVzZUNhY2hlKFxuICB3b3JrU3RvcmU6IFdvcmtTdG9yZSxcbiAgY29uc3RydWN0b3JPcHQ6IEZ1bmN0aW9uXG4pOiBuZXZlciB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgIGBSb3V0ZSAke3dvcmtTdG9yZS5yb3V0ZX0gdXNlZCBcInNlYXJjaFBhcmFtc1wiIGluc2lkZSBcInVzZSBjYWNoZVwiLiBBY2Nlc3NpbmcgZHluYW1pYyByZXF1ZXN0IGRhdGEgaW5zaWRlIGEgY2FjaGUgc2NvcGUgaXMgbm90IHN1cHBvcnRlZC4gSWYgeW91IG5lZWQgc29tZSBzZWFyY2ggcGFyYW1zIGluc2lkZSBhIGNhY2hlZCBmdW5jdGlvbiBhd2FpdCBcInNlYXJjaFBhcmFtc1wiIG91dHNpZGUgb2YgdGhlIGNhY2hlZCBmdW5jdGlvbiBhbmQgcGFzcyBvbmx5IHRoZSByZXF1aXJlZCBzZWFyY2ggcGFyYW1zIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcmVxdWVzdC1pbi11c2UtY2FjaGVgXG4gIClcblxuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgY29uc3RydWN0b3JPcHQpXG4gIHdvcmtTdG9yZS5pbnZhbGlkRHluYW1pY1VzYWdlRXJyb3IgPz89IGVycm9yXG5cbiAgdGhyb3cgZXJyb3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEFQSUNhbGxhYmxlSW5zaWRlQWZ0ZXIoKSB7XG4gIGNvbnN0IGFmdGVyVGFza1N0b3JlID0gYWZ0ZXJUYXNrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgcmV0dXJuIGFmdGVyVGFza1N0b3JlPy5yb290VGFza1NwYXduUGhhc2UgPT09ICdhY3Rpb24nXG59XG4iXSwibmFtZXMiOlsiaXNSZXF1ZXN0QVBJQ2FsbGFibGVJbnNpZGVBZnRlciIsInRocm93Rm9yU2VhcmNoUGFyYW1zQWNjZXNzSW5Vc2VDYWNoZSIsInRocm93V2l0aFN0YXRpY0dlbmVyYXRpb25CYWlsb3V0RXJyb3IiLCJ0aHJvd1dpdGhTdGF0aWNHZW5lcmF0aW9uQmFpbG91dEVycm9yV2l0aER5bmFtaWNFcnJvciIsInJvdXRlIiwiZXhwcmVzc2lvbiIsIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsIndvcmtTdG9yZSIsImNvbnN0cnVjdG9yT3B0IiwiZXJyb3IiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwiaW52YWxpZER5bmFtaWNVc2FnZUVycm9yIiwiYWZ0ZXJUYXNrU3RvcmUiLCJhZnRlclRhc2tBc3luY1N0b3JhZ2UiLCJnZXRTdG9yZSIsInJvb3RUYXNrU3Bhd25QaGFzZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/request/utils.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/module.compiled.js ***! \*********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n if (false) {} else {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-page.runtime.dev.js */ \"next/dist/compiled/next-server/app-page.runtime.dev.js\");\n }\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcz82YTRkIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsSUFBSSxLQUFtQyxFQUFFLEVBRXhDLENBQUM7QUFDRixRQUFRLEtBQXFDLEVBQUUsRUFjMUMsQ0FBQztBQUNOLFlBQVksSUFBc0M7QUFDbEQsZ0JBQWdCLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNkLGdCQUFnQiw0SkFBa0Y7QUFDbEc7QUFDQSxVQUFVLEtBQUssRUFNTjtBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXG1vZHVsZS5jb21waWxlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5qcycpO1xufSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby1leHBlcmltZW50YWwucnVudGltZS5kZXYuanMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtZXhwZXJpbWVudGFsLnJ1bnRpbWUuZGV2LmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtdHVyYm8tZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS1leHBlcmltZW50YWwucnVudGltZS5wcm9kLmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1wYWdlLXR1cmJvLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLnByb2QuanMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/module.compiled.js ***! \*********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n if (false) {} else {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-page.runtime.dev.js */ \"next/dist/compiled/next-server/app-page.runtime.dev.js\");\n }\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZC5qcz9kM2M0IiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsSUFBSSxLQUFtQyxFQUFFLEVBRXhDLENBQUM7QUFDRixRQUFRLEtBQXFDLEVBQUUsRUFjMUMsQ0FBQztBQUNOLFlBQVksSUFBc0M7QUFDbEQsZ0JBQWdCLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNkLGdCQUFnQiw0SkFBa0Y7QUFDbEc7QUFDQSxVQUFVLEtBQUssRUFNTjtBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXG1vZHVsZS5jb21waWxlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdlZGdlJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5qcycpO1xufSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9SRUFDVCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby1leHBlcmltZW50YWwucnVudGltZS5kZXYuanMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtZXhwZXJpbWVudGFsLnJ1bnRpbWUuZGV2LmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXBhZ2UtdHVyYm8tZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS1leHBlcmltZW50YWwucnVudGltZS5wcm9kLmpzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS10dXJiby5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1wYWdlLXR1cmJvLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcGFnZS5ydW50aW1lLnByb2QuanMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js": /*!******************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored.contexts.AppRouterContext;\n\n//# sourceMappingURL=app-router-context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2FwcC1yb3V0ZXItY29udGV4dC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDRMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXHZlbmRvcmVkXFxjb250ZXh0c1xcYXBwLXJvdXRlci1jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsnY29udGV4dHMnXS5BcHBSb3V0ZXJDb250ZXh0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcm91dGVyLWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js": /*!********************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored.contexts.HooksClientContext;\n\n//# sourceMappingURL=hooks-client-context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL2hvb2tzLWNsaWVudC1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOExBQXlGOztBQUV6RiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyb3V0ZS1tb2R1bGVzXFxhcHAtcGFnZVxcdmVuZG9yZWRcXGNvbnRleHRzXFxob29rcy1jbGllbnQtY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ2NvbnRleHRzJ10uSG9va3NDbGllbnRDb250ZXh0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ob29rcy1jbGllbnQtY29udGV4dC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js": /*!********************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored.contexts.ServerInsertedHtml;\n\n//# sourceMappingURL=server-inserted-html.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL2NvbnRleHRzL3NlcnZlci1pbnNlcnRlZC1odG1sLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOExBQXlGOztBQUV6RiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyb3V0ZS1tb2R1bGVzXFxhcHAtcGFnZVxcdmVuZG9yZWRcXGNvbnRleHRzXFxzZXJ2ZXItaW5zZXJ0ZWQtaHRtbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ2NvbnRleHRzJ10uU2VydmVySW5zZXJ0ZWRIdG1sO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXJ2ZXItaW5zZXJ0ZWQtaHRtbC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js": /*!****************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js ***! \****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored[\"react-ssr\"].ReactDOM;\n\n//# sourceMappingURL=react-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1kb20uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix3TEFBZ0Y7O0FBRWhGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJvdXRlLW1vZHVsZXNcXGFwcC1wYWdlXFx2ZW5kb3JlZFxcc3NyXFxyZWFjdC1kb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1zc3InXS5SZWFjdERPTTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtZG9tLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js": /*!****************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored[\"react-ssr\"].ReactJsxDevRuntime;\n\n//# sourceMappingURL=react-jsx-dev-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixrTUFBMEY7O0FBRTFGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcbm9kZV9tb2R1bGVzXFxuZXh0XFxkaXN0XFxzZXJ2ZXJcXHJvdXRlLW1vZHVsZXNcXGFwcC1wYWdlXFx2ZW5kb3JlZFxcc3NyXFxyZWFjdC1qc3gtZGV2LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZS5jb21waWxlZCcpLnZlbmRvcmVkWydyZWFjdC1zc3InXS5SZWFjdEpzeERldlJ1bnRpbWU7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWpzeC1kZXYtcnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js": /*!************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored[\"react-ssr\"].ReactJsxRuntime;\n\n//# sourceMappingURL=react-jsx-runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1qc3gtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLCtMQUF1Rjs7QUFFdkYiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXHZlbmRvcmVkXFxzc3JcXHJlYWN0LWpzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3Qtc3NyJ10uUmVhY3RKc3hSdW50aW1lO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWFjdC1qc3gtcnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored[\"react-ssr\"].ReactServerDOMWebpackClient;\n\n//# sourceMappingURL=react-server-dom-webpack-client.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2stY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsMk1BQW1HOztBQUVuRyIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFxyb3V0ZS1tb2R1bGVzXFxhcHAtcGFnZVxcdmVuZG9yZWRcXHNzclxccmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlLmNvbXBpbGVkJykudmVuZG9yZWRbJ3JlYWN0LXNzciddLlJlYWN0U2VydmVyRE9NV2VicGFja0NsaWVudDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLWNsaWVudC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js": /*!************************************************************************************!*\ !*** ./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js ***! \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?d3c4\").vendored[\"react-ssr\"].React;\n\n//# sourceMappingURL=react.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL3ZlbmRvcmVkL3Nzci9yZWFjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLHFMQUE2RTs7QUFFN0UiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXHNlcnZlclxccm91dGUtbW9kdWxlc1xcYXBwLXBhZ2VcXHZlbmRvcmVkXFxzc3JcXHJlYWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGUuY29tcGlsZWQnKS52ZW5kb3JlZFsncmVhY3Qtc3NyJ10uUmVhY3Q7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js": /*!******************************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ReflectAdapter\", ({\n enumerable: true,\n get: function() {\n return ReflectAdapter;\n }\n}));\nclass ReflectAdapter {\n static get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') {\n return value.bind(target);\n }\n return value;\n }\n static set(target, prop, value, receiver) {\n return Reflect.set(target, prop, value, receiver);\n }\n static has(target, prop) {\n return Reflect.has(target, prop);\n }\n static deleteProperty(target, prop) {\n return Reflect.deleteProperty(target, prop);\n }\n}\n\n//# sourceMappingURL=reflect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXG5vZGVfbW9kdWxlc1xcbmV4dFxcZGlzdFxcc2VydmVyXFx3ZWJcXHNwZWMtZXh0ZW5zaW9uXFxhZGFwdGVyc1xccmVmbGVjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlZmxlY3RBZGFwdGVyXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlcjtcbiAgICB9XG59KTtcbmNsYXNzIFJlZmxlY3RBZGFwdGVyIHtcbiAgICBzdGF0aWMgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBzZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgc3RhdGljIGhhcyh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgfVxuICAgIHN0YXRpYyBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZmxlY3QuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/error-source.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/shared/lib/error-source.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n decorateServerError: function() {\n return decorateServerError;\n },\n getErrorSource: function() {\n return getErrorSource;\n }\n});\nconst symbolError = Symbol.for('NextjsError');\nfunction getErrorSource(error) {\n return error[symbolError] || null;\n}\nfunction decorateServerError(error, type) {\n Object.defineProperty(error, symbolError, {\n writable: false,\n enumerable: false,\n configurable: false,\n value: type\n });\n} //# sourceMappingURL=error-source.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3Itc291cmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVFnQkEsbUJBQW1CO2VBQW5CQTs7SUFOQUMsY0FBYztlQUFkQTs7O0FBRmhCLE1BQU1DLGNBQWNDLE9BQU9DLEdBQUcsQ0FBQztBQUV4QixTQUFTSCxlQUFlSSxLQUFZO0lBQ3pDLE9BQVFBLEtBQWEsQ0FBQ0gsWUFBWSxJQUFJO0FBQ3hDO0FBSU8sU0FBU0Ysb0JBQW9CSyxLQUFZLEVBQUVDLElBQXFCO0lBQ3JFQyxPQUFPQyxjQUFjLENBQUNILE9BQU9ILGFBQWE7UUFDeENPLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxjQUFjO1FBQ2RDLE9BQU9OO0lBQ1Q7QUFDRiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNoYXJlZFxcbGliXFxlcnJvci1zb3VyY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3ltYm9sRXJyb3IgPSBTeW1ib2wuZm9yKCdOZXh0anNFcnJvcicpXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvclNvdXJjZShlcnJvcjogRXJyb3IpOiAnc2VydmVyJyB8ICdlZGdlLXNlcnZlcicgfCBudWxsIHtcbiAgcmV0dXJuIChlcnJvciBhcyBhbnkpW3N5bWJvbEVycm9yXSB8fCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yU291cmNlVHlwZSA9ICdlZGdlLXNlcnZlcicgfCAnc2VydmVyJ1xuXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdGVTZXJ2ZXJFcnJvcihlcnJvcjogRXJyb3IsIHR5cGU6IEVycm9yU291cmNlVHlwZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsIHN5bWJvbEVycm9yLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IHR5cGUsXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiZGVjb3JhdGVTZXJ2ZXJFcnJvciIsImdldEVycm9yU291cmNlIiwic3ltYm9sRXJyb3IiLCJTeW1ib2wiLCJmb3IiLCJlcnJvciIsInR5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInZhbHVlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/error-source.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/errors/constants.js ***! \***************************************************************/ /***/ ((module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"MISSING_ROOT_TAGS_ERROR\", ({\n enumerable: true,\n get: function() {\n return MISSING_ROOT_TAGS_ERROR;\n }\n}));\nconst MISSING_ROOT_TAGS_ERROR = 'NEXT_MISSING_ROOT_TAGS';\nif ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZXJyb3JzL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OzJEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxlcnJvcnNcXGNvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTUlTU0lOR19ST09UX1RBR1NfRVJST1IgPSAnTkVYVF9NSVNTSU5HX1JPT1RfVEFHUydcbiJdLCJuYW1lcyI6WyJNSVNTSU5HX1JPT1RfVEFHU19FUlJPUiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/errors/constants.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/format-webpack-messages.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("/**\nMIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return formatWebpackMessages;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(ssr)/./node_modules/next/dist/compiled/strip-ansi/index.js\"));\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = 'Syntax error:';\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = '\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.';\nfunction isLikelyASyntaxError(message) {\n return (0, _stripansi.default)(message).includes(friendlySyntaxErrorLabel);\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === 'object' && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|route|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n message = (message.moduleName ? (0, _stripansi.default)(message.moduleName) + '\\n' : '') + (message.file ? (0, _stripansi.default)(message.file) + '\\n' : '') + body + (message.details && verbose ? '\\n' + message.details : '') + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || '\\n\\nImport trace for requested module:') + filteredModuleTrace.map((trace)=>\"\\n\" + trace.moduleName).join('') : '') + (message.stack && verbose ? '\\n' + message.stack : '');\n }\n let lines = message.split('\\n');\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter((line)=>!/Module [A-z ]+\\(from/.test(line));\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return friendlySyntaxErrorLabel + \" \" + errorMessage + \" (\" + errorLine + \":\" + errorColumn + \")\";\n });\n message = lines.join('\\n');\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, \"\" + friendlySyntaxErrorLabel + \" $3 ($1:$2)\\n\");\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$2'.\");\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$2' does not contain a default export (imported as '$1').\");\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$3' (imported as '$2').\");\n lines = message.split('\\n');\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === '') {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].startsWith('Module not found: ')) {\n lines = [\n lines[0],\n lines[1].replace('Error: ', '').replace('Module not found: Cannot find file:', 'Cannot find file:'),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<>) => ./file.module.scss\n const firstLine = lines[0].split('!');\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += 'Run `npm i sass` or `yarn add sass` inside your workspace.\\n';\n lines[1] += '\\nLearn more: https://nextjs.org/docs/messages/install-sass';\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join('\\n');\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, '') // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s(\\n|$)/gm, '') // at \n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, '');\n lines = message.split('\\n');\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== '' || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join('\\n');\n return message.trim();\n}\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes('An error occurred in `next/font`.');\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes('ReactServerComponentsError')) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = {\n ...json,\n errors: formattedErrors,\n warnings: formattedWarnings\n };\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\n} //# sourceMappingURL=format-webpack-messages.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7Ozs7MkNBaUtBOzs7ZUFBd0JBOzs7O2dGQWhLRjtBQUN0QixxS0FBcUs7QUFDckssMERBQTBEO0FBRTFELE1BQU1DLDJCQUEyQjtBQUVqQyxNQUFNQyxvQ0FDSjtBQUVGLFNBQVNDLHFCQUFxQkMsT0FBZTtJQUMzQyxPQUFPQyxDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxTQUFTRSxRQUFRLENBQUNMO0FBQ3JDO0FBRUEsSUFBSU0sc0JBQXNCO0FBRTFCLG9DQUFvQztBQUNwQyxTQUFTQyxjQUNQSixPQUFZLEVBQ1pLLE9BQWlCLEVBQ2pCQyxlQUF5QjtJQUV6Qiw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPTixZQUFZLFlBQVlBLFFBQVFBLE9BQU8sRUFBRTtRQUNsRCxNQUFNTyxzQkFDSlAsUUFBUVEsV0FBVyxJQUNuQlIsUUFBUVEsV0FBVyxDQUFDQyxNQUFNLENBQ3hCLENBQUNDLFFBQ0MsQ0FBQyxnRUFBZ0VDLElBQUksQ0FDbkVELE1BQU1FLFVBQVU7UUFJeEIsSUFBSUMsT0FBT2IsUUFBUUEsT0FBTztRQUMxQixNQUFNYyxzQkFBc0JELEtBQUtFLE9BQU8sQ0FBQ2pCO1FBQ3pDLElBQUlnQix1QkFBdUIsR0FBRztZQUM1QkQsT0FBT0EsS0FBS0csS0FBSyxDQUFDLEdBQUdGO1FBQ3ZCO1FBRUFkLFVBQ0dBLENBQUFBLFFBQVFpQixVQUFVLEdBQUdoQixDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxRQUFRaUIsVUFBVSxJQUFJLE9BQU8sR0FBQyxHQUM3RGpCLENBQUFBLFFBQVFrQixJQUFJLEdBQUdqQixDQUFBQSxHQUFBQSxXQUFBQSxPQUFBQSxFQUFVRCxRQUFRa0IsSUFBSSxJQUFJLE9BQU8sR0FBQyxHQUNsREwsT0FDQ2IsQ0FBQUEs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QUNELEtBQUssQ0FBQyxFQUFFO0lBQ2xDO0lBRUEsTUFBTUUsU0FBUztRQUNiLEdBQUdWLElBQUk7UUFDUEUsUUFBUUQ7UUFDUkksVUFBVUQ7SUFDWjtJQUNBLElBQUksQ0FBQ3ZDLFdBQVc2QyxPQUFPUixNQUFNLENBQUNTLElBQUksQ0FBQ3BELHVCQUF1QjtRQUN4RCxrREFBa0Q7UUFDbERtRCxPQUFPUixNQUFNLEdBQUdRLE9BQU9SLE1BQU0sQ0FBQ2pDLE1BQU0sQ0FBQ1Y7UUFDckNtRCxPQUFPTCxRQUFRLEdBQUcsRUFBRTtJQUN0QjtJQUNBLE9BQU9LO0FBQ1QiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxzaGFyZWRcXGxpYlxcZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcblNPRlRXQVJFLlxuKi9cbmltcG9ydCBzdHJpcEFuc2kgZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2knXG4vLyBUaGlzIGZpbGUgaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvYmxvYi83YjFhMzJiZTZlYzlmOTlhNmM5YTNjNjY4MTNmM2FjMDljNDczNmI5L3BhY2thZ2VzL3JlYWN0LWRldi11dGlscy9mb3JtYXRXZWJwYWNrTWVzc2FnZXMuanNcbi8vIEl0J3MgYmVlbiBlZGl0ZWQgdG8gcmVtb3ZlIGNoYWxrIGFuZCBDUkEtc3BlY2lmaWMgbG9naWNcblxuY29uc3QgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsID0gJ1N5bnRheCBlcnJvcjonXG5cbmNvbnN0IFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyA9XG4gICdcXG5cXG5CUkVBS0lORyBDSEFOR0U6IHdlYnBhY2sgPCA1IHVzZWQgdG8gaW5jbHVkZSBwb2x5ZmlsbHMgZm9yIG5vZGUuanMgY29yZSBtb2R1bGVzIGJ5IGRlZmF1bHQuJ1xuXG5mdW5jdGlvbiBpc0xpa2VseUFTeW50YXhFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmlwQW5zaShtZXNzYWdlKS5pbmNsdWRlcyhmcmllbmRseVN5bnRheEVycm9yTGFiZWwpXG59XG5cbmxldCBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gZmFsc2VcblxuLy8gQ2xlYW5zIHVwIHdlYnBhY2sgZXJyb3IgbWVzc2FnZXMuXG5mdW5jdGlvbiBmb3JtYXRNZXNzYWdlKFxuICBtZXNzYWdlOiBhbnksXG4gIHZlcmJvc2U/OiBib29sZWFuLFxuICBpbXBvcnRUcmFjZU5vdGU/OiBib29sZWFuXG4pIHtcbiAgLy8gVE9ETzogUmVwbGFjZSB0aGlzIG9uY2Ugd2VicGFjayA1IGlzIHN0YWJsZVxuICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdvYmplY3QnICYmIG1lc3NhZ2UubWVzc2FnZSkge1xuICAgIGNvbnN0IGZpbHRlcmVkTW9kdWxlVHJhY2UgPVxuICAgICAgbWVzc2FnZS5tb2R1bGVUcmFjZSAmJlxuICAgICAgbWVzc2FnZS5tb2R1bGVUcmFjZS5maWx0ZXIoXG4gICAgICAgICh0cmFjZTogYW55KSA9PlxuICAgICAgICAgICEvbmV4dC0obWlkZGxld2FyZXxjbGllbnQtcGFnZXN8cm91dGV8ZWRnZS1mdW5jdGlvbiktbG9hZGVyXFwuanMvLnRlc3QoXG4gICAgICAgICAgICB0cmFjZS5vcmlnaW5OYW1lXG4gICAgICAgICAgKVxuICAgICAgKVxuXG4gICAgbGV0IGJvZHkgPSBtZXNzYWdlLm1lc3NhZ2VcbiAgICBjb25zdCBicmVha2luZ0NoYW5nZUluZGV4ID0gYm9keS5pbmRleE9mKFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUylcbiAgICBpZiAoYnJlYWtpbmdDaGFuZ2VJbmRleCA+PSAwKSB7XG4gICAgICBib2R5ID0gYm9keS5zbGljZSgwLCBicmVha2luZ0NoYW5nZUluZGV4KVxuICAgIH1cblxuICAgIG1lc3NhZ2UgPVxuICAgICAgKG1lc3NhZ2UubW9kdWxlTmFtZSA/IHN0cmlwQW5zaShtZXNzYWdlLm1vZHVsZU5hbWUpICsgJ1xcbicgOiAnJykgK1xuICAgICAgKG1lc3NhZ2UuZmlsZSA/IHN0cmlwQW5zaShtZXNzYWdlLmZpbGUpICsgJ1xcbicgOiAnJykgK1xuICAgICAgYm9keSArXG4gICAgICAobWVzc2FnZS5kZXRhaWxzICYmIHZlcmJvc2UgPyAnXFxuJyArIG1lc3NhZ2UuZGV0YWlscyA6ICcnKSArXG4gICAgICAoZmlsdGVyZWRNb2R1bGVUcmFjZSAmJiBmaWx0ZXJlZE1vZHVsZVRyYWNlLmxlbmd0aFxuICAgICAgICA/IChpbXBvcnRUcmFjZU5vdGUgfHwgJ1xcblxcbkltcG9ydCB0cmFjZSBmb3IgcmVxdWVzdGVkIG1vZHVsZTonKSArXG4gICAgICAgICAgZmlsdGVyZWRNb2R1bGVUcmFjZVxuICAgICAgICAgICAgLm1hcCgodHJhY2U6IGFueSkgPT4gYFxcbiR7dHJhY2UubW9kdWxlTmFtZX1gKVxuICAgICAgICAgICAgLmpvaW4oJycpXG4gICAgICAgIDogJycpICtcbiAgICAgIChtZXNzYWdlLnN0YWNrICYmIHZlcmJvc2UgPyAnXFxuJyArIG1lc3NhZ2Uuc3RhY2sgOiAnJylcbiAgfVxuICBsZXQgbGluZXMgPSBtZXNzYWdlLnNwbGl0KCdcXG4nKVxuXG4gIC8vIFN0cmlwIFdlYnBhY2stYWRkZWQgaGVhZGVycyBvZmYgZXJyb3JzL3dhcm5pbmdzXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svYmxvYi9tYXN0ZXIvbGliL01vZHVsZUVycm9yLmpzXG4gIGxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lOiBzdHJpbmcpID0+ICEvTW9kdWxlIFtBLXogXStcXChmcm9tLy50ZXN0KGxpbmUpKVxuXG4gIC8vIFRyYW5zZm9ybSBwYXJzaW5nIGVycm9yIGludG8gc3ludGF4IGVycm9yXG4gIC8vIFRPRE86IG1vdmUgdGhpcyB0byBvdXIgRVNMaW50IGZvcm1hdHRlcj9cbiAgbGluZXMgPSBsaW5lcy5tYXAoKGxpbmU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHBhcnNpbmdFcnJvciA9IC9MaW5lIChcXGQrKTooPzooXFxkKyk6KT9cXHMqUGFyc2luZyBlcnJvcjogKC4rKSQvLmV4ZWMoXG4gICAgICBsaW5lXG4gICAgKVxuICAgIGlmICghcGFyc2luZ0Vycm9yKSB7XG4gICAgICByZXR1cm4gbGluZVxuICAgIH1cbiAgICBjb25zdCBbLCBlcnJvckxpbmUsIGVycm9yQ29sdW1uLCBlcnJvck1lc3NhZ2VdID0gcGFyc2luZ0Vycm9yXG4gICAgcmV0dXJuIGAke2ZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbH0gJHtlcnJvck1lc3NhZ2V9ICgke2Vycm9yTGluZX06JHtlcnJvckNvbHVtbn0pYFxuICB9KVxuXG4gIG1lc3NhZ2UgPSBsaW5lcy5qb2luKCdcXG4nKVxuICAvLyBTbW9vc2ggc3ludGF4IGVycm9ycyAoY29tbW9ubHkgZm91bmQgaW4gQ1NTKVxuICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgIC9TeW50YXhFcnJvclxccytcXCgoXFxkKyk6KFxcZCspXFwpXFxzKiguKz8pXFxuL2csXG4gICAgYCR7ZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsfSAkMyAoJDE6JDIpXFxuYFxuICApXG4gIC8vIENsZWFuIHVwIGV4cG9ydCBlcnJvcnNcbiAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAvXi4qZXhwb3J0ICcoLis/KScgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLFxuICAgIGBBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDEnIGlzIG5vdCBleHBvcnRlZCBmcm9tICckMicuYFxuICApXG4gIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXG4gICAgL14uKmV4cG9ydCAnZGVmYXVsdCcgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sXG4gICAgYEF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMicgZG9lcyBub3QgY29udGFpbiBhIGRlZmF1bHQgZXhwb3J0IChpbXBvcnRlZCBhcyAnJDEnKS5gXG4gIClcbiAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAvXi4qZXhwb3J0ICcoLis/KScgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sXG4gICAgYEF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQzJyAoaW1wb3J0ZWQgYXMgJyQyJykuYFxuICApXG4gIGxpbmVzID0gbWVzc2FnZS5zcGxpdCgnXFxuJylcblxuICAvLyBSZW1vdmUgbGVhZGluZyBuZXdsaW5lXG4gIGlmIChsaW5lcy5sZW5ndGggPiAyICYmIGxpbmVzWzFdLnRyaW0oKSA9PT0gJycpIHtcbiAgICBsaW5lcy5zcGxpY2UoMSwgMSlcbiAgfVxuXG4gIC8vIENsZWFucyB1cCB2ZXJib3NlIFwibW9kdWxlIG5vdCBmb3VuZFwiIG1lc3NhZ2VzIGZvciBmaWxlcyBhbmQgcGFja2FnZXMuXG4gIGlmIChsaW5lc1sxXSAmJiBsaW5lc1sxXS5zdGFydHNXaXRoKCdNb2R1bGUgbm90IGZvdW5kOiAnKSkge1xuICAgIGxpbmVzID0gW1xuICAgICAgbGluZXNbMF0sXG4gICAgICBsaW5lc1sxXVxuICAgICAgICAucmVwbGFjZSgnRXJyb3I6ICcsICcnKVxuICAgICAgICAucmVwbGFjZSgnTW9kdWxlIG5vdCBmb3VuZDogQ2Fubm90IGZpbmQgZmlsZTonLCAnQ2Fubm90IGZpbmQgZmlsZTonKSxcbiAgICAgIC4uLmxpbmVzLnNsaWNlKDIpLFxuICAgIF1cbiAgfVxuXG4gIC8vIEFkZCBoZWxwZnVsIG1lc3NhZ2UgZm9yIHVzZXJzIHRyeWluZyB0byB1c2UgU2FzcyBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgaWYgKGxpbmVzWzFdICYmIGxpbmVzWzFdLm1hdGNoKC9DYW5ub3QgZmluZCBtb2R1bGUuK3Nhc3MvKSkge1xuICAgIC8vIC4vZmlsZS5tb2R1bGUuc2NzcyAoPDxsb2FkZXIgaW5mbz4+KSA9PiAuL2ZpbGUubW9kdWxlLnNjc3NcbiAgICBjb25zdCBmaXJzdExpbmUgPSBsaW5lc1swXS5zcGxpdCgnIScpXG4gICAgbGluZXNbMF0gPSBmaXJzdExpbmVbZmlyc3RMaW5lLmxlbmd0aCAtIDFdXG5cbiAgICBsaW5lc1sxXSA9XG4gICAgICBcIlRvIHVzZSBOZXh0LmpzJyBidWlsdC1pbiBTYXNzIHN1cHBvcnQsIHlvdSBmaXJzdCBuZWVkIHRvIGluc3RhbGwgYHNhc3NgLlxcblwiXG4gICAgbGluZXNbMV0gKz0gJ1J1biBgbnBtIGkgc2Fzc2Agb3IgYHlhcm4gYWRkIHNhc3NgIGluc2lkZSB5b3VyIHdvcmtzcGFjZS5cXG4nXG4gICAgbGluZXNbMV0gKz0gJ1xcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2luc3RhbGwtc2FzcydcblxuICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlXG4gICAgbGluZXMgPSBsaW5lcy5zbGljZSgwLCAyKVxuICAgIGhhZE1pc3NpbmdTYXNzRXJyb3IgPSB0cnVlXG4gIH0gZWxzZSBpZiAoXG4gICAgaGFkTWlzc2luZ1Nhc3NFcnJvciAmJlxuICAgIG1lc3NhZ2UubWF0Y2goLyhzYXNzLWxvYWRlcnxyZXNvbHZlLXVybC1sb2FkZXI6IENTUyBlcnJvcikvKVxuICApIHtcbiAgICAvLyBkaXNwb3NlIG9mIHVuaGVscGZ1bCBzdGFjayB0cmFjZSBmb2xsb3dpbmcgbWlzc2luZyBzYXNzIG1vZHVsZVxuICAgIGxpbmVzID0gW11cbiAgfVxuXG4gIGlmICghdmVyYm9zZSkge1xuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKCdcXG4nKVxuICAgIC8vIEludGVybmFsIHN0YWNrcyBhcmUgZ2VuZXJhbGx5IHVzZWxlc3Mgc28gd2Ugc3RyaXAgdGhlbS4uLiB3aXRoIHRoZVxuICAgIC8vIGV4Y2VwdGlvbiBvZiBzdGFja3MgY29udGFpbmluZyBgd2VicGFjazpgIGJlY2F1c2UgdGhleSdyZSBub3JtYWxseVxuICAgIC8vIGZyb20gdXNlciBjb2RlIGdlbmVyYXRlZCBieSBXZWJwYWNrLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9wdWxsLzEwNTBcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgL15cXHMqYXRcXHMoKD8hd2VicGFjazopLikqOlxcZCs6XFxkK1tcXHMpXSooXFxufCQpL2dtLFxuICAgICAgJydcbiAgICApIC8vIGF0IC4uLiAuLi46eDp5XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXlxccyphdFxcczxhbm9ueW1vdXM+KFxcbnwkKS9nbSwgJycpIC8vIGF0IDxhbm9ueW1vdXM+XG5cbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgL0ZpbGUgd2FzIHByb2Nlc3NlZCB3aXRoIHRoZXNlIGxvYWRlcnM6XFxuKC4rW1xcXFwvXShuZXh0W1xcXFwvXWRpc3RbXFxcXC9dLit8QG5leHRbXFxcXC9dcmVhY3QtcmVmcmVzaC11dGlsc1tcXFxcL11sb2FkZXIpXFwuanNcXG4pKllvdSBtYXkgbmVlZCBhbiBhZGRpdGlvbmFsIGxvYWRlciB0byBoYW5kbGUgdGhlIHJlc3VsdCBvZiB0aGVzZSBsb2FkZXJzLlxcbi9nLFxuICAgICAgJydcbiAgICApXG5cbiAgICBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoJ1xcbicpXG4gIH1cblxuICAvLyBSZW1vdmUgZHVwbGljYXRlZCBuZXdsaW5lc1xuICBsaW5lcyA9IChsaW5lcyBhcyBzdHJpbmdbXSkuZmlsdGVyKFxuICAgIChsaW5lLCBpbmRleCwgYXJyKSA9PlxuICAgICAgaW5kZXggPT09IDAgfHwgbGluZS50cmltKCkgIT09ICcnIHx8IGxpbmUudHJpbSgpICE9PSBhcnJbaW5kZXggLSAxXS50cmltKClcbiAgKVxuXG4gIC8vIFJlYXNzZW1ibGUgdGhlIG1lc3NhZ2VcbiAgbWVzc2FnZSA9IGxpbmVzLmpvaW4oJ1xcbicpXG4gIHJldHVybiBtZXNzYWdlLnRyaW0oKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRXZWJwYWNrTWVzc2FnZXMoanNvbjogYW55LCB2ZXJib3NlPzogYm9vbGVhbikge1xuICBjb25zdCBmb3JtYXR0ZWRFcnJvcnMgPSBqc29uLmVycm9ycy5tYXAoKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgIGNvbnN0IGlzVW5rbm93bk5leHRGb250RXJyb3IgPSBtZXNzYWdlLm1lc3NhZ2UuaW5jbHVkZXMoXG4gICAgICAnQW4gZXJyb3Igb2NjdXJyZWQgaW4gYG5leHQvZm9udGAuJ1xuICAgIClcbiAgICByZXR1cm4gZm9ybWF0TWVzc2FnZShtZXNzYWdlLCBpc1Vua25vd25OZXh0Rm9udEVycm9yIHx8IHZlcmJvc2UpXG4gIH0pXG4gIGNvbnN0IGZvcm1hdHRlZFdhcm5pbmdzID0ganNvbi53YXJuaW5ncy5tYXAoKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgIHJldHVybiBmb3JtYXRNZXNzYWdlKG1lc3NhZ2UsIHZlcmJvc2UpXG4gIH0pXG5cbiAgLy8gUmVvcmRlciBlcnJvcnMgdG8gcHV0IHRoZSBtb3N0IHJlbGV2YW50IG9uZXMgZmlyc3QuXG4gIGxldCByZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciA9IC0xXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWRFcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlcnJvciA9IGZvcm1hdHRlZEVycm9yc1tpXVxuICAgIGlmIChlcnJvci5pbmNsdWRlcygnUmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3InKSkge1xuICAgICAgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgPSBpXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIE1vdmUgdGhlIHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yIHRvIHRoZSB0b3AgaWYgaXQgZXhpc3RzXG4gIGlmIChyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciAhPT0gLTEpIHtcbiAgICBjb25zdCBlcnJvciA9IGZvcm1hdHRlZEVycm9ycy5zcGxpY2UocmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IsIDEpXG4gICAgZm9ybWF0dGVkRXJyb3JzLnVuc2hpZnQoZXJyb3JbMF0pXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uanNvbixcbiAgICBlcnJvcnM6IGZvcm1hdHRlZEVycm9ycyxcbiAgICB3YXJuaW5nczogZm9ybWF0dGVkV2FybmluZ3MsXG4gIH1cbiAgaWYgKCF2ZXJib3NlICYmIHJlc3VsdC5lcnJvcnMuc29tZShpc0xpa2VseUFTeW50YXhFcnJvcikpIHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN5bnRheCBlcnJvcnMsIHNob3cganVzdCB0aGVtLlxuICAgIHJlc3VsdC5lcnJvcnMgPSByZXN1bHQuZXJyb3JzLmZpbHRlcihpc0xpa2VseUFTeW50YXhFcnJvcilcbiAgICByZXN1bHQud2FybmluZ3MgPSBbXVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRXZWJwYWNrTWVzc2FnZXMiLCJmcmllbmRseVN5bnRheEVycm9yTGFiZWwiLCJXRUJQQUNLX0JSRUFLSU5HX0NIQU5HRV9QT0xZRklMTFMiLCJpc0xpa2VseUFTeW50YXhFcnJvciIsIm1lc3NhZ2UiLCJzdHJpcEFuc2kiLCJpbmNsdWRlcyIsImhhZE1pc3NpbmdTYXNzRXJyb3IiLCJmb3JtYXRNZXNzYWdlIiwidmVyYm9zZSIsImltcG9ydFRyYWNlTm90ZSIsImZpbHRlcmVkTW9kdWxlVHJhY2UiLCJtb2R1bGVUcmFjZSIsImZpbHRlciIsInRyYWNlIiwidGVzdCIsIm9yaWdpbk5hbWUiLCJib2R5IiwiYnJlYWtpbmdDaGFuZ2VJbmRleCIsImluZGV4T2YiLCJzbGljZSIsIm1vZHVsZU5hbWUiLCJmaWxlIiwiZGV0YWlscyIsImxlbmd0aCIsIm1hcCIsImpvaW4iLCJzdGFjayIsImxpbmVzIiwic3BsaXQiLCJsaW5lIiwicGFyc2luZ0Vycm9yIiwiZXhlYyIsImVycm9yTGluZSIsImVycm9yQ29sdW1uIiwiZXJyb3JNZXNzYWdlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpY2UiLCJzdGFydHNXaXRoIiwibWF0Y2giLCJmaXJzdExpbmUiLCJpbmRleCIsImFyciIsImpzb24iLCJmb3JtYXR0ZWRFcnJvcnMiLCJlcnJvcnMiLCJpc1Vua25vd25OZXh0Rm9udEVycm9yIiwiZm9ybWF0dGVkV2FybmluZ3MiLCJ3YXJuaW5ncyIsInJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yIiwiaSIsImVycm9yIiwidW5zaGlmdCIsInJlc3VsdCIsInNvbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/format-webpack-messages.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/hash.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/shared/lib/hash.js ***! \***************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n djb2Hash: function() {\n return djb2Hash;\n },\n hexHash: function() {\n return hexHash;\n }\n});\nfunction djb2Hash(str) {\n let hash = 5381;\n for(let i = 0; i < str.length; i++){\n const char = str.charCodeAt(i);\n hash = (hash << 5) + hash + char & 0xffffffff;\n }\n return hash >>> 0;\n}\nfunction hexHash(str) {\n return djb2Hash(str).toString(36).slice(0, 5);\n} //# sourceMappingURL=hash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaGFzaC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDLGlIQUFpSDtBQUNqSCx3RkFBd0Y7QUFDeEYsZ0dBQWdHO0FBQ2hHLHdIQUF3SDtBQUN4SCx3REFBd0Q7Ozs7Ozs7Ozs7Ozs7SUFDeENBLFFBQVE7ZUFBUkE7O0lBU0FDLE9BQU87ZUFBUEE7OztBQVRULFNBQVNELFNBQVNFLEdBQVc7SUFDbEMsSUFBSUMsT0FBTztJQUNYLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRixJQUFJRyxNQUFNLEVBQUVELElBQUs7UUFDbkMsTUFBTUUsT0FBT0osSUFBSUssVUFBVSxDQUFDSDtRQUM1QkQsT0FBU0EsQ0FBQUEsU0FBUSxJQUFLQSxPQUFPRyxPQUFRO0lBQ3ZDO0lBQ0EsT0FBT0gsU0FBUztBQUNsQjtBQUVPLFNBQVNGLFFBQVFDLEdBQVc7SUFDakMsT0FBT0YsU0FBU0UsS0FBS00sUUFBUSxDQUFDLElBQUlDLEtBQUssQ0FBQyxHQUFHO0FBQzdDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXGhhc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cDovL3d3dy5jc2UueW9ya3UuY2Evfm96L2hhc2guaHRtbFxuLy8gTW9yZSBzcGVjaWZpY2FsbHksIDMyLWJpdCBoYXNoIHZpYSBkamJ4b3Jcbi8vIChyZWY6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2VwbGF3bGVzcy81MjgxM2IxZDhhZDlhZjUxMGQ4NT9wZXJtYWxpbmtfY29tbWVudF9pZD0zMzY3NzY1I2dpc3Rjb21tZW50LTMzNjc3NjUpXG4vLyBUaGlzIGlzIGR1ZSB0byBudW1iZXIgdHlwZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHJ1c3QgZm9yIHR1cmJvcGFjayB0byBqcyBudW1iZXIgdHlwZXMsXG4vLyB3aGVyZSBydXN0IGRvZXMgbm90IGhhdmUgZWFzeSB3YXkgdG8gcmVwcmVlc250IGpzJ3MgNTMtYml0IGZsb2F0IG51bWJlciB0eXBlIGZvciB0aGUgbWF0Y2hpbmdcbi8vIG92ZXJmbG93IGJlaGF2aW9yLiBUaGlzIGlzIG1vcmUgYGNvcnJlY3RgIGluIHRlcm1zIG9mIGhhdmluZyBjYW5vbmljYWwgaGFzaCBhY3Jvc3MgZGlmZmVyZW50IHJ1bnRpbWUgLyBpbXBsZW1lbnRhdGlvblxuLy8gYXMgY2FuIGdhdXJhbnRlZSBkZXRlcm1pbnN0aWMgb3V0cHV0IGZyb20gMzJiaXQgaGFzaC5cbmV4cG9ydCBmdW5jdGlvbiBkamIySGFzaChzdHI6IHN0cmluZykge1xuICBsZXQgaGFzaCA9IDUzODFcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoYXNoID0gKChoYXNoIDw8IDUpICsgaGFzaCArIGNoYXIpICYgMHhmZmZmZmZmZlxuICB9XG4gIHJldHVybiBoYXNoID4+PiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhIYXNoKHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiBkamIySGFzaChzdHIpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA1KVxufVxuIl0sIm5hbWVzIjpbImRqYjJIYXNoIiwiaGV4SGFzaCIsInN0ciIsImhhc2giLCJpIiwibGVuZ3RoIiwiY2hhciIsImNoYXJDb2RlQXQiLCJ0b1N0cmluZyIsInNsaWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/hash.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/invariant-error.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"InvariantError\", ({\n enumerable: true,\n get: function() {\n return InvariantError;\n }\n}));\nclass InvariantError extends Error {\n constructor(message, options){\n super(\"Invariant: \" + (message.endsWith('.') ? message : message + '.') + \" This is a bug in Next.js.\", options);\n this.name = 'InvariantError';\n }\n} //# sourceMappingURL=invariant-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBQWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF1QkM7SUFDbENDLFlBQVlDLE9BQWUsRUFBRUMsT0FBc0IsQ0FBRTtRQUNuRCxLQUFLLENBQ0YsZ0JBQWFELENBQUFBLFFBQVFFLFFBQVEsQ0FBQyxPQUFPRixVQUFVQSxVQUFVLElBQUUsR0FBRSw4QkFDOURDO1FBRUYsSUFBSSxDQUFDRSxJQUFJLEdBQUc7SUFDZDtBQUNGIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXGludmFyaWFudC1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW52YXJpYW50RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IEVycm9yT3B0aW9ucykge1xuICAgIHN1cGVyKFxuICAgICAgYEludmFyaWFudDogJHttZXNzYWdlLmVuZHNXaXRoKCcuJykgPyBtZXNzYWdlIDogbWVzc2FnZSArICcuJ30gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLmAsXG4gICAgICBvcHRpb25zXG4gICAgKVxuICAgIHRoaXMubmFtZSA9ICdJbnZhcmlhbnRFcnJvcidcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkludmFyaWFudEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIm1lc3NhZ2UiLCJvcHRpb25zIiwiZW5kc1dpdGgiLCJuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/invariant-error.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/is-plain-object.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getObjectClassLabel: function() {\n return getObjectClassLabel;\n },\n isPlainObject: function() {\n return isPlainObject;\n }\n});\nfunction getObjectClassLabel(value) {\n return Object.prototype.toString.call(value);\n}\nfunction isPlainObject(value) {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');\n} //# sourceMappingURL=is-plain-object.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFnQkEsbUJBQW1CO2VBQW5CQTs7SUFJQUMsYUFBYTtlQUFiQTs7O0FBSlQsU0FBU0Qsb0JBQW9CRSxLQUFVO0lBQzVDLE9BQU9DLE9BQU9DLFNBQVMsQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJLENBQUNKO0FBQ3hDO0FBRU8sU0FBU0QsY0FBY0MsS0FBVTtJQUN0QyxJQUFJRixvQkFBb0JFLFdBQVcsbUJBQW1CO1FBQ3BELE9BQU87SUFDVDtJQUVBLE1BQU1FLFlBQVlELE9BQU9JLGNBQWMsQ0FBQ0w7SUFFeEM7Ozs7Ozs7O0dBUUMsR0FDRCxPQUFPRSxjQUFjLFFBQVFBLFVBQVVJLGNBQWMsQ0FBQztBQUN4RCIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxzcmNcXHNoYXJlZFxcbGliXFxpcy1wbGFpbi1vYmplY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdENsYXNzTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKGdldE9iamVjdENsYXNzTGFiZWwodmFsdWUpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuXG4gIC8qKlxuICAgKiB0aGlzIHVzZWQgdG8gYmUgcHJldmlvdXNseTpcbiAgICpcbiAgICogYHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlYFxuICAgKlxuICAgKiBidXQgRWRnZSBSdW50aW1lIGV4cG9zZSBPYmplY3QgZnJvbSB2bSwgYmVpbmcgdGhhdCBraW5kIG9mIHR5cGUtY2hlY2tpbmcgd3JvbmdseSBmYWlsLlxuICAgKlxuICAgKiBJdCB3YXMgY2hhbmdlZCB0byB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzaW5jZSBpdCdzIHJlc2lsaWVudCB0byBzZXJpYWxpemF0aW9uLlxuICAgKi9cbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2lzUHJvdG90eXBlT2YnKVxufVxuIl0sIm5hbWVzIjpbImdldE9iamVjdENsYXNzTGFiZWwiLCJpc1BsYWluT2JqZWN0IiwidmFsdWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJnZXRQcm90b3R5cGVPZiIsImhhc093blByb3BlcnR5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/is-plain-object.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/shared/lib/is-thenable.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isThenable\", ({\n enumerable: true,\n get: function() {\n return isThenable;\n }\n}));\nfunction isThenable(promise) {\n return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function';\n} //# sourceMappingURL=is-thenable.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvaXMtdGhlbmFibGUuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7OENBQ2VBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFdBQ2RDLE9BQXVCO0lBRXZCLE9BQ0VBLFlBQVksUUFDWixPQUFPQSxZQUFZLFlBQ25CLFVBQVVBLFdBQ1YsT0FBT0EsUUFBUUMsSUFBSSxLQUFLO0FBRTVCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXGlzLXRoZW5hYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGEgdmFsdWUgaXMgVGhlbmFibGUuXG4gKlxuICogQHBhcmFtIHByb21pc2UgdGhlIG1heWJlLXRoZW5hYmxlIHZhbHVlXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyB0aGVuYWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUaGVuYWJsZTxUID0gdW5rbm93bj4oXG4gIHByb21pc2U6IFByb21pc2U8VD4gfCBUXG4pOiBwcm9taXNlIGlzIFByb21pc2U8VD4ge1xuICByZXR1cm4gKFxuICAgIHByb21pc2UgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgcHJvbWlzZSA9PT0gJ29iamVjdCcgJiZcbiAgICAndGhlbicgaW4gcHJvbWlzZSAmJlxuICAgIHR5cGVvZiBwcm9taXNlLnRoZW4gPT09ICdmdW5jdGlvbidcbiAgKVxufVxuIl0sIm5hbWVzIjpbImlzVGhlbmFibGUiLCJwcm9taXNlIiwidGhlbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/is-thenable.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This has to be a shared module which is shared between client component error boundary and dynamic component\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n BailoutToCSRError: function() {\n return BailoutToCSRError;\n },\n isBailoutToCSRError: function() {\n return isBailoutToCSRError;\n }\n});\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING';\nclass BailoutToCSRError extends Error {\n constructor(reason){\n super(\"Bail out to client-side rendering: \" + reason), this.reason = reason, this.digest = BAILOUT_TO_CSR;\n }\n}\nfunction isBailoutToCSRError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === BAILOUT_TO_CSR;\n} //# sourceMappingURL=bailout-to-csr.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyLmpzIiwibWFwcGluZ3MiOiJBQUFBLCtHQUErRzs7Ozs7Ozs7Ozs7OztJQUlsR0EsaUJBQWlCO2VBQWpCQTs7SUFTR0MsbUJBQW1CO2VBQW5CQTs7O0FBWmhCLE1BQU1DLGlCQUFpQjtBQUdoQixNQUFNRiwwQkFBMEJHO0lBR3JDQyxZQUE0QkMsTUFBYyxDQUFFO1FBQzFDLEtBQUssQ0FBRSx3Q0FBcUNBLFNBQUFBLElBQUFBLENBRGxCQSxNQUFBQSxHQUFBQSxRQUFBQSxJQUFBQSxDQUZaQyxNQUFBQSxHQUFTSjtJQUl6QjtBQUNGO0FBR08sU0FBU0Qsb0JBQW9CTSxHQUFZO0lBQzlDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLFFBQVEsQ0FBRSxhQUFZQSxHQUFBQSxDQUFFLEVBQUk7UUFDakUsT0FBTztJQUNUO0lBRUEsT0FBT0EsSUFBSUQsTUFBTSxLQUFLSjtBQUN4QiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXGxhenktZHluYW1pY1xcYmFpbG91dC10by1jc3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBoYXMgdG8gYmUgYSBzaGFyZWQgbW9kdWxlIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuIGNsaWVudCBjb21wb25lbnQgZXJyb3IgYm91bmRhcnkgYW5kIGR5bmFtaWMgY29tcG9uZW50XG5jb25zdCBCQUlMT1VUX1RPX0NTUiA9ICdCQUlMT1VUX1RPX0NMSUVOVF9TSURFX1JFTkRFUklORydcblxuLyoqIEFuIGVycm9yIHRoYXQgc2hvdWxkIGJlIHRocm93biB3aGVuIHdlIHdhbnQgdG8gYmFpbCBvdXQgdG8gY2xpZW50LXNpZGUgcmVuZGVyaW5nLiAqL1xuZXhwb3J0IGNsYXNzIEJhaWxvdXRUb0NTUkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgZGlnZXN0ID0gQkFJTE9VVF9UT19DU1JcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQmFpbCBvdXQgdG8gY2xpZW50LXNpZGUgcmVuZGVyaW5nOiAke3JlYXNvbn1gKVxuICB9XG59XG5cbi8qKiBDaGVja3MgaWYgYSBwYXNzZWQgYXJndW1lbnQgaXMgYW4gZXJyb3IgdGhhdCBpcyB0aHJvd24gaWYgd2Ugd2FudCB0byBiYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCYWlsb3V0VG9DU1JFcnJvcihlcnI6IHVua25vd24pOiBlcnIgaXMgQmFpbG91dFRvQ1NSRXJyb3Ige1xuICBpZiAodHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHwgZXJyID09PSBudWxsIHx8ICEoJ2RpZ2VzdCcgaW4gZXJyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIGVyci5kaWdlc3QgPT09IEJBSUxPVVRfVE9fQ1NSXG59XG4iXSwibmFtZXMiOlsiQmFpbG91dFRvQ1NSRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiQkFJTE9VVF9UT19DU1IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwicmVhc29uIiwiZGlnZXN0IiwiZXJyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/normalized-asset-prefix.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizedAssetPrefix\", ({\n enumerable: true,\n get: function() {\n return normalizedAssetPrefix;\n }\n}));\nfunction normalizedAssetPrefix(assetPrefix) {\n // remove all leading slashes and trailing slashes\n const escapedAssetPrefix = (assetPrefix == null ? void 0 : assetPrefix.replace(/^\\/+|\\/+$/g, '')) || false;\n // if an assetPrefix was '/', we return empty string\n // because it could be an unnecessary trailing slash\n if (!escapedAssetPrefix) {\n return '';\n }\n if (URL.canParse(escapedAssetPrefix)) {\n const url = new URL(escapedAssetPrefix).toString();\n return url.endsWith('/') ? url.slice(0, -1) : url;\n }\n // assuming assetPrefix here is a pathname-style,\n // restore the leading slash\n return \"/\" + escapedAssetPrefix;\n} //# sourceMappingURL=normalized-asset-prefix.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozt5REFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHNCQUFzQkMsV0FBK0I7SUFDbkUsa0RBQWtEO0lBQ2xELE1BQU1DLHFCQUFxQkQsQ0FBQUEsZUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsWUFBYUUsT0FBTyxDQUFDLGNBQWMsUUFBTztJQUVyRSxvREFBb0Q7SUFDcEQsb0RBQW9EO0lBQ3BELElBQUksQ0FBQ0Qsb0JBQW9CO1FBQ3ZCLE9BQU87SUFDVDtJQUVBLElBQUlFLElBQUlDLFFBQVEsQ0FBQ0gscUJBQXFCO1FBQ3BDLE1BQU1JLE1BQU0sSUFBSUYsSUFBSUYsb0JBQW9CSyxRQUFRO1FBQ2hELE9BQU9ELElBQUlFLFFBQVEsQ0FBQyxPQUFPRixJQUFJRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUtIO0lBQ2hEO0lBRUEsaURBQWlEO0lBQ2pELDRCQUE0QjtJQUM1QixPQUFRLE1BQUdKO0FBQ2IiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcc3JjXFxzaGFyZWRcXGxpYlxcbm9ybWFsaXplZC1hc3NldC1wcmVmaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZWRBc3NldFByZWZpeChhc3NldFByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgLy8gcmVtb3ZlIGFsbCBsZWFkaW5nIHNsYXNoZXMgYW5kIHRyYWlsaW5nIHNsYXNoZXNcbiAgY29uc3QgZXNjYXBlZEFzc2V0UHJlZml4ID0gYXNzZXRQcmVmaXg/LnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCBmYWxzZVxuXG4gIC8vIGlmIGFuIGFzc2V0UHJlZml4IHdhcyAnLycsIHdlIHJldHVybiBlbXB0eSBzdHJpbmdcbiAgLy8gYmVjYXVzZSBpdCBjb3VsZCBiZSBhbiB1bm5lY2Vzc2FyeSB0cmFpbGluZyBzbGFzaFxuICBpZiAoIWVzY2FwZWRBc3NldFByZWZpeCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKFVSTC5jYW5QYXJzZShlc2NhcGVkQXNzZXRQcmVmaXgpKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChlc2NhcGVkQXNzZXRQcmVmaXgpLnRvU3RyaW5nKClcbiAgICByZXR1cm4gdXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsXG4gIH1cblxuICAvLyBhc3N1bWluZyBhc3NldFByZWZpeCBoZXJlIGlzIGEgcGF0aG5hbWUtc3R5bGUsXG4gIC8vIHJlc3RvcmUgdGhlIGxlYWRpbmcgc2xhc2hcbiAgcmV0dXJuIGAvJHtlc2NhcGVkQXNzZXRQcmVmaXh9YFxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZWRBc3NldFByZWZpeCIsImFzc2V0UHJlZml4IiwiZXNjYXBlZEFzc2V0UHJlZml4IiwicmVwbGFjZSIsIlVSTCIsImNhblBhcnNlIiwidXJsIiwidG9TdHJpbmciLCJlbmRzV2l0aCIsInNsaWNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ensureLeadingSlash\", ({\n enumerable: true,\n get: function() {\n return ensureLeadingSlash;\n }\n}));\nfunction ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : \"/\" + path;\n} //# sourceMappingURL=ensure-leading-slash.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7OztzREFDZUE7OztlQUFBQTs7O0FBQVQsU0FBU0EsbUJBQW1CQyxJQUFZO0lBQzdDLE9BQU9BLEtBQUtDLFVBQVUsQ0FBQyxPQUFPRCxPQUFRLE1BQUdBO0FBQzNDIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccGFnZS1wYXRoXFxlbnN1cmUtbGVhZGluZy1zbGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvciBhIGdpdmVuIHBhZ2UgcGF0aCwgdGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgYSBsZWFkaW5nIHNsYXNoLlxuICogSWYgdGhlcmUgaXMgbm90IGEgbGVhZGluZyBzbGFzaCwgb25lIGlzIGFkZGVkLCBvdGhlcndpc2UgaXQgaXMgbm9vcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6IGAvJHtwYXRofWBcbn1cbiJdLCJuYW1lcyI6WyJlbnN1cmVMZWFkaW5nU2xhc2giLCJwYXRoIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/app-paths.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalizeAppPath: function() {\n return normalizeAppPath;\n },\n normalizeRscURL: function() {\n return normalizeRscURL;\n }\n});\nconst _ensureleadingslash = __webpack_require__(/*! ../../page-path/ensure-leading-slash */ \"(ssr)/./node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js\");\nconst _segment = __webpack_require__(/*! ../../segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction normalizeAppPath(route) {\n return (0, _ensureleadingslash.ensureLeadingSlash)(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if ((0, _segment.isGroupSegment)(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return pathname + \"/\" + segment;\n }, ''));\n}\nfunction normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, '$1');\n} //# sourceMappingURL=app-paths.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFzQmdCQSxnQkFBZ0I7ZUFBaEJBOztJQW1DQUMsZUFBZTtlQUFmQTs7O2dEQXpEbUI7cUNBQ0o7QUFxQnhCLFNBQVNELGlCQUFpQkUsS0FBYTtJQUM1QyxPQUFPQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQ0xELE1BQU1FLEtBQUssQ0FBQyxLQUFLQyxNQUFNLENBQUMsQ0FBQ0MsVUFBVUMsU0FBU0MsT0FBT0M7UUFDakQsOEJBQThCO1FBQzlCLElBQUksQ0FBQ0YsU0FBUztZQUNaLE9BQU9EO1FBQ1Q7UUFFQSxzQkFBc0I7UUFDdEIsSUFBSUksQ0FBQUEsR0FBQUEsU0FBQUEsY0FBQUEsRUFBZUgsVUFBVTtZQUMzQixPQUFPRDtRQUNUO1FBRUEsaUNBQWlDO1FBQ2pDLElBQUlDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSztZQUN0QixPQUFPRDtRQUNUO1FBRUEsdURBQXVEO1FBQ3ZELElBQ0dDLENBQUFBLFlBQVksVUFBVUEsWUFBWSxRQUFNLElBQ3pDQyxVQUFVQyxTQUFTRSxNQUFNLEdBQUcsR0FDNUI7WUFDQSxPQUFPTDtRQUNUO1FBRUEsT0FBVUEsV0FBUyxNQUFHQztJQUN4QixHQUFHO0FBRVA7QUFNTyxTQUFTTixnQkFBZ0JXLEdBQVc7SUFDekMsT0FBT0EsSUFBSUMsT0FBTyxDQUNoQixlQUNBO0FBR0oiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxhcHAtcGF0aHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5zdXJlTGVhZGluZ1NsYXNoIH0gZnJvbSAnLi4vLi4vcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoJ1xuaW1wb3J0IHsgaXNHcm91cFNlZ21lbnQgfSBmcm9tICcuLi8uLi9zZWdtZW50J1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gYXBwIHJvdXRlIHNvIGl0IHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXF1ZXN0IHBhdGguIEVzc2VudGlhbGx5XG4gKiBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zOlxuICpcbiAqIC0gYC8oZGFzaGJvYXJkKS91c2VyL1tpZF0vcGFnZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9wYWdlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvdXNlci9baWRdL3BhZ2VgIHRvIGAvdXNlci9baWRdYFxuICogLSBgL2FjY291bnQvcGFnZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3BhZ2VgIHRvIGAvYFxuICogLSBgLyhkYXNoYm9hcmQpL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvKGRhc2hib2FyZCkvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3VzZXIvW2lkXS9yb3V0ZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvYWNjb3VudC9yb3V0ZWAgdG8gYC9hY2NvdW50YFxuICogLSBgL3JvdXRlYCB0byBgL2BcbiAqIC0gYC9gIHRvIGAvYFxuICpcbiAqIEBwYXJhbSByb3V0ZSB0aGUgYXBwIHJvdXRlIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcGF0aG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFwcFBhdGgocm91dGU6IHN0cmluZykge1xuICByZXR1cm4gZW5zdXJlTGVhZGluZ1NsYXNoKFxuICAgIHJvdXRlLnNwbGl0KCcvJykucmVkdWNlKChwYXRobmFtZSwgc2VnbWVudCwgaW5kZXgsIHNlZ21lbnRzKSA9PiB7XG4gICAgICAvLyBFbXB0eSBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmICghc2VnbWVudCkge1xuICAgICAgICByZXR1cm4gcGF0aG5hbWVcbiAgICAgIH1cblxuICAgICAgLy8gR3JvdXBzIGFyZSBpZ25vcmVkLlxuICAgICAgaWYgKGlzR3JvdXBTZWdtZW50KHNlZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICAvLyBQYXJhbGxlbCBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgIGlmIChzZWdtZW50WzBdID09PSAnQCcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhuYW1lXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsYXN0IHNlZ21lbnQgKGlmIGl0J3MgYSBsZWFmKSBzaG91bGQgYmUgaWdub3JlZC5cbiAgICAgIGlmIChcbiAgICAgICAgKHNlZ21lbnQgPT09ICdwYWdlJyB8fCBzZWdtZW50ID09PSAncm91dGUnKSAmJlxuICAgICAgICBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7cGF0aG5hbWV9LyR7c2VnbWVudH1gXG4gICAgfSwgJycpXG4gIClcbn1cblxuLyoqXG4gKiBTdHJpcHMgdGhlIGAucnNjYCBleHRlbnNpb24gaWYgaXQncyBpbiB0aGUgcGF0aG5hbWUuXG4gKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb24gZnVsbCB1cmxzIGl0IGNoZWNrcyBgP2AgZm9yIHNlYXJjaFBhcmFtcyBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJzY1VSTCh1cmw6IHN0cmluZykge1xuICByZXR1cm4gdXJsLnJlcGxhY2UoXG4gICAgL1xcLnJzYygkfFxcPykvLFxuICAgIC8vICQxIGVuc3VyZXMgYD9gIGlzIHByZXNlcnZlZFxuICAgICckMSdcbiAgKVxufVxuIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZUFwcFBhdGgiLCJub3JtYWxpemVSc2NVUkwiLCJyb3V0ZSIsImVuc3VyZUxlYWRpbmdTbGFzaCIsInNwbGl0IiwicmVkdWNlIiwicGF0aG5hbWUiLCJzZWdtZW50IiwiaW5kZXgiLCJzZWdtZW50cyIsImlzR3JvdXBTZWdtZW50IiwibGVuZ3RoIiwidXJsIiwicmVwbGFjZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js": /*!**************************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"computeCacheBustingSearchParam\", ({\n enumerable: true,\n get: function() {\n return computeCacheBustingSearchParam;\n }\n}));\nconst _hash = __webpack_require__(/*! ../../hash */ \"(ssr)/./node_modules/next/dist/shared/lib/hash.js\");\nfunction computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) {\n return '';\n }\n return (0, _hash.hexHash)([\n prefetchHeader || '0',\n segmentPrefetchHeader || '0',\n stateTreeHeader || '0',\n nextUrlHeader || '0'\n ].join(','));\n} //# sourceMappingURL=cache-busting-search-param.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2NhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0VBRWdCQTs7O2VBQUFBOzs7a0NBRlE7QUFFakIsU0FBU0EsK0JBQ2RDLGNBQTJDLEVBQzNDQyxxQkFBb0QsRUFDcERDLGVBQThDLEVBQzlDQyxhQUE0QztJQUU1QyxJQUNHSCxDQUFBQSxtQkFBbUJJLGFBQWFKLG1CQUFtQixJQUFFLElBQ3REQywwQkFBMEJHLGFBQzFCRixvQkFBb0JFLGFBQ3BCRCxrQkFBa0JDLFdBQ2xCO1FBQ0EsT0FBTztJQUNUO0lBQ0EsT0FBT0MsQ0FBQUEsR0FBQUEsTUFBQUEsT0FBQUEsRUFDTDtRQUNFTCxrQkFBa0I7UUFDbEJDLHlCQUF5QjtRQUN6QkMsbUJBQW1CO1FBQ25CQyxpQkFBaUI7S0FDbEIsQ0FBQ0csSUFBSSxDQUFDO0FBRVgiLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxjYWNoZS1idXN0aW5nLXNlYXJjaC1wYXJhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhIYXNoIH0gZnJvbSAnLi4vLi4vaGFzaCdcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbShcbiAgcHJlZmV0Y2hIZWFkZXI6ICcxJyB8ICcyJyB8ICcwJyB8IHVuZGVmaW5lZCxcbiAgc2VnbWVudFByZWZldGNoSGVhZGVyOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgc3RhdGVUcmVlSGVhZGVyOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgbmV4dFVybEhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWRcbik6IHN0cmluZyB7XG4gIGlmIChcbiAgICAocHJlZmV0Y2hIZWFkZXIgPT09IHVuZGVmaW5lZCB8fCBwcmVmZXRjaEhlYWRlciA9PT0gJzAnKSAmJlxuICAgIHNlZ21lbnRQcmVmZXRjaEhlYWRlciA9PT0gdW5kZWZpbmVkICYmXG4gICAgc3RhdGVUcmVlSGVhZGVyID09PSB1bmRlZmluZWQgJiZcbiAgICBuZXh0VXJsSGVhZGVyID09PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbiAgcmV0dXJuIGhleEhhc2goXG4gICAgW1xuICAgICAgcHJlZmV0Y2hIZWFkZXIgfHwgJzAnLFxuICAgICAgc2VnbWVudFByZWZldGNoSGVhZGVyIHx8ICcwJyxcbiAgICAgIHN0YXRlVHJlZUhlYWRlciB8fCAnMCcsXG4gICAgICBuZXh0VXJsSGVhZGVyIHx8ICcwJyxcbiAgICBdLmpvaW4oJywnKVxuICApXG59XG4iXSwibmFtZXMiOlsiY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIiwicHJlZmV0Y2hIZWFkZXIiLCJzZWdtZW50UHJlZmV0Y2hIZWFkZXIiLCJzdGF0ZVRyZWVIZWFkZXIiLCJuZXh0VXJsSGVhZGVyIiwidW5kZWZpbmVkIiwiaGV4SGFzaCIsImpvaW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js": /*!*********************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"disableSmoothScrollDuringRouteTransition\", ({\n enumerable: true,\n get: function() {\n return disableSmoothScrollDuringRouteTransition;\n }\n}));\nconst _warnonce = __webpack_require__(/*! ../../utils/warn-once */ \"(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nfunction disableSmoothScrollDuringRouteTransition(fn, options) {\n if (options === void 0) options = {};\n // if only the hash is changed, we don't need to disable smooth scrolling\n // we only care to prevent smooth scrolling when navigating to a new page to avoid jarring UX\n if (options.onlyHashChange) {\n fn();\n return;\n }\n const htmlElement = document.documentElement;\n const hasDataAttribute = htmlElement.dataset.scrollBehavior === 'smooth';\n // Since this is a breaking change, this is temporarily flagged\n // and will be false by default.\n // In the next major (v16), this will be automatically enabled\n if (false) {} else {\n // Old behavior: always manipulate styles, but warn about upcoming change\n // Warn if smooth scrolling is detected but no data attribute is present\n if ( true && !hasDataAttribute && getComputedStyle(htmlElement).scrollBehavior === 'smooth') {\n (0, _warnonce.warnOnce)('Detected `scroll-behavior: smooth` on the `` element. In a future version, ' + 'Next.js will no longer automatically disable smooth scrolling during route transitions. ' + 'To prepare for this change, add `data-scroll-behavior=\"smooth\"` to your element. ' + 'Learn more: https://nextjs.org/docs/messages/missing-data-scroll-behavior');\n }\n }\n // Proceed with temporarily disabling smooth scrolling\n const existing = htmlElement.style.scrollBehavior;\n htmlElement.style.scrollBehavior = 'auto';\n if (!options.dontForceLayout) {\n // In Chrome-based browsers we need to force reflow before calling `scrollTo`.\n // Otherwise it will not pickup the change in scrollBehavior\n // More info here: https://github.com/vercel/next.js/issues/40719#issuecomment-1336248042\n htmlElement.getClientRects();\n }\n fn();\n htmlElement.style.scrollBehavior = existing;\n} //# sourceMappingURL=disable-smooth-scroll.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Rpc2FibGUtc21vb3RoLXNjcm9sbC5qcyIsIm1hcHBpbmdzIjoiOzs7OzRFQU1nQkE7OztlQUFBQTs7O3NDQU5TO0FBTWxCLFNBQVNBLHlDQUNkQyxFQUFjLEVBQ2RDLE9BQXFFO0lBQXJFQSxJQUFBQSxZQUFBQSxLQUFBQSxHQUFBQSxVQUFtRSxDQUFDO0lBRXBFLHlFQUF5RTtJQUN6RSw2RkFBNkY7SUFDN0YsSUFBSUEsUUFBUUMsY0FBYyxFQUFFO1FBQzFCRjtRQUNBO0lBQ0Y7SUFFQSxNQUFNRyxjQUFjQyxTQUFTQyxlQUFlO0lBQzVDLE1BQU1DLG1CQUFtQkgsWUFBWUksT0FBTyxDQUFDQyxjQUFjLEtBQUs7SUFFaEUsK0RBQStEO0lBQy9ELGdDQUFnQztJQUNoQyw4REFBOEQ7SUFDOUQsSUFBSUMsS0FBeUMsRUFBRSxFQU05QyxNQUFNO1FBQ0wseUVBQXlFO1FBRXpFLHdFQUF3RTtRQUN4RSxJQUNFQSxLQUFvQixJQUNwQixDQUFDSCxvQkFDRE8saUJBQWlCVixhQUFhSyxjQUFjLEtBQUssVUFDakQ7WUFDQU0sQ0FBQUEsR0FBQUEsVUFBQUEsUUFBQUEsRUFDRSxzRkFDRSw2RkFDQSw2RkFDQTtRQUVOO0lBQ0Y7SUFFQSxzREFBc0Q7SUFDdEQsTUFBTUMsV0FBV1osWUFBWWEsS0FBSyxDQUFDUixjQUFjO0lBQ2pETCxZQUFZYSxLQUFLLENBQUNSLGNBQWMsR0FBRztJQUNuQyxJQUFJLENBQUNQLFFBQVFnQixlQUFlLEVBQUU7UUFDNUIsOEVBQThFO1FBQzlFLDREQUE0RDtRQUM1RCx5RkFBeUY7UUFDekZkLFlBQVllLGNBQWM7SUFDNUI7SUFDQWxCO0lBQ0FHLFlBQVlhLEtBQUssQ0FBQ1IsY0FBYyxHQUFHTztBQUNyQyIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHJvdXRlclxcdXRpbHNcXGRpc2FibGUtc21vb3RoLXNjcm9sbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uLy4uL3V0aWxzL3dhcm4tb25jZSdcblxuLyoqXG4gKiBSdW4gZnVuY3Rpb24gd2l0aCBgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvYCBhcHBsaWVkIHRvIGA8aHRtbC8+YC5cbiAqIFRoaXMgY3NzIGNoYW5nZSB3aWxsIGJlIHJldmVydGVkIGFmdGVyIHRoZSBmdW5jdGlvbiBmaW5pc2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb24oXG4gIGZuOiAoKSA9PiB2b2lkLFxuICBvcHRpb25zOiB7IGRvbnRGb3JjZUxheW91dD86IGJvb2xlYW47IG9ubHlIYXNoQ2hhbmdlPzogYm9vbGVhbiB9ID0ge31cbikge1xuICAvLyBpZiBvbmx5IHRoZSBoYXNoIGlzIGNoYW5nZWQsIHdlIGRvbid0IG5lZWQgdG8gZGlzYWJsZSBzbW9vdGggc2Nyb2xsaW5nXG4gIC8vIHdlIG9ubHkgY2FyZSB0byBwcmV2ZW50IHNtb290aCBzY3JvbGxpbmcgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UgdG8gYXZvaWQgamFycmluZyBVWFxuICBpZiAob3B0aW9ucy5vbmx5SGFzaENoYW5nZSkge1xuICAgIGZuKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gIGNvbnN0IGhhc0RhdGFBdHRyaWJ1dGUgPSBodG1sRWxlbWVudC5kYXRhc2V0LnNjcm9sbEJlaGF2aW9yID09PSAnc21vb3RoJ1xuXG4gIC8vIFNpbmNlIHRoaXMgaXMgYSBicmVha2luZyBjaGFuZ2UsIHRoaXMgaXMgdGVtcG9yYXJpbHkgZmxhZ2dlZFxuICAvLyBhbmQgd2lsbCBiZSBmYWxzZSBieSBkZWZhdWx0LlxuICAvLyBJbiB0aGUgbmV4dCBtYWpvciAodjE2KSwgdGhpcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZFxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX09QVElNSVpFX1JPVVRFUl9TQ1JPTEwpIHtcbiAgICBpZiAoIWhhc0RhdGFBdHRyaWJ1dGUpIHtcbiAgICAgIC8vIE5vIHNtb290aCBzY3JvbGxpbmcgY29uZmlndXJlZCwgcnVuIGRpcmVjdGx5IHdpdGhvdXQgc3R5bGUgbWFuaXB1bGF0aW9uXG4gICAgICBmbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gT2xkIGJlaGF2aW9yOiBhbHdheXMgbWFuaXB1bGF0ZSBzdHlsZXMsIGJ1dCB3YXJuIGFib3V0IHVwY29taW5nIGNoYW5nZVxuXG4gICAgLy8gV2FybiBpZiBzbW9vdGggc2Nyb2xsaW5nIGlzIGRldGVjdGVkIGJ1dCBubyBkYXRhIGF0dHJpYnV0ZSBpcyBwcmVzZW50XG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgICFoYXNEYXRhQXR0cmlidXRlICYmXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGh0bWxFbGVtZW50KS5zY3JvbGxCZWhhdmlvciA9PT0gJ3Ntb290aCdcbiAgICApIHtcbiAgICAgIHdhcm5PbmNlKFxuICAgICAgICAnRGV0ZWN0ZWQgYHNjcm9sbC1iZWhhdmlvcjogc21vb3RoYCBvbiB0aGUgYDxodG1sPmAgZWxlbWVudC4gSW4gYSBmdXR1cmUgdmVyc2lvbiwgJyArXG4gICAgICAgICAgJ05leHQuanMgd2lsbCBubyBsb25nZXIgYXV0b21hdGljYWxseSBkaXNhYmxlIHNtb290aCBzY3JvbGxpbmcgZHVyaW5nIHJvdXRlIHRyYW5zaXRpb25zLiAnICtcbiAgICAgICAgICAnVG8gcHJlcGFyZSBmb3IgdGhpcyBjaGFuZ2UsIGFkZCBgZGF0YS1zY3JvbGwtYmVoYXZpb3I9XCJzbW9vdGhcImAgdG8geW91ciA8aHRtbD4gZWxlbWVudC4gJyArXG4gICAgICAgICAgJ0xlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL21pc3NpbmctZGF0YS1zY3JvbGwtYmVoYXZpb3InXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLy8gUHJvY2VlZCB3aXRoIHRlbXBvcmFyaWx5IGRpc2FibGluZyBzbW9vdGggc2Nyb2xsaW5nXG4gIGNvbnN0IGV4aXN0aW5nID0gaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3JcbiAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnYXV0bydcbiAgaWYgKCFvcHRpb25zLmRvbnRGb3JjZUxheW91dCkge1xuICAgIC8vIEluIENocm9tZS1iYXNlZCBicm93c2VycyB3ZSBuZWVkIHRvIGZvcmNlIHJlZmxvdyBiZWZvcmUgY2FsbGluZyBgc2Nyb2xsVG9gLlxuICAgIC8vIE90aGVyd2lzZSBpdCB3aWxsIG5vdCBwaWNrdXAgdGhlIGNoYW5nZSBpbiBzY3JvbGxCZWhhdmlvclxuICAgIC8vIE1vcmUgaW5mbyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvaXNzdWVzLzQwNzE5I2lzc3VlY29tbWVudC0xMzM2MjQ4MDQyXG4gICAgaHRtbEVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKVxuICB9XG4gIGZuKClcbiAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBleGlzdGluZ1xufVxuIl0sIm5hbWVzIjpbImRpc2FibGVTbW9vdGhTY3JvbGxEdXJpbmdSb3V0ZVRyYW5zaXRpb24iLCJmbiIsIm9wdGlvbnMiLCJvbmx5SGFzaENoYW5nZSIsImh0bWxFbGVtZW50IiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJoYXNEYXRhQXR0cmlidXRlIiwiZGF0YXNldCIsInNjcm9sbEJlaGF2aW9yIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9PUFRJTUlaRV9ST1VURVJfU0NST0xMIiwiTk9ERV9FTlYiLCJnZXRDb21wdXRlZFN0eWxlIiwid2Fybk9uY2UiLCJleGlzdGluZyIsInN0eWxlIiwiZG9udEZvcmNlTGF5b3V0IiwiZ2V0Q2xpZW50UmVjdHMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/disable-smooth-scroll.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/html-bots.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This regex contains the bots that we need to do a blocking render for and can't safely stream the response\n// due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent.\n// Note: The pattern [\\w-]+-Google captures all Google crawlers with \"-Google\" suffix (e.g., Mediapartners-Google, AdsBot-Google, Storebot-Google)\n// as well as crawlers starting with \"Google-\" (e.g., Google-PageRenderer, Google-InspectionTool)\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTML_LIMITED_BOT_UA_RE\", ({\n enumerable: true,\n get: function() {\n return HTML_LIMITED_BOT_UA_RE;\n }\n}));\nconst HTML_LIMITED_BOT_UA_RE = /[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i; //# sourceMappingURL=html-bots.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2h0bWwtYm90cy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2R0FBNkc7QUFDN0csc0tBQXNLO0FBQ3RLLGtKQUFrSjtBQUNsSixpR0FBaUc7Ozs7OzBEQUNwRkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQ1giLCJzb3VyY2VzIjpbIkQ6XFxzcmNcXHNoYXJlZFxcbGliXFxyb3V0ZXJcXHV0aWxzXFxodG1sLWJvdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCBjb250YWlucyB0aGUgYm90cyB0aGF0IHdlIG5lZWQgdG8gZG8gYSBibG9ja2luZyByZW5kZXIgZm9yIGFuZCBjYW4ndCBzYWZlbHkgc3RyZWFtIHRoZSByZXNwb25zZVxuLy8gZHVlIHRvIGhvdyB0aGV5IHBhcnNlIHRoZSBET00uIEZvciBleGFtcGxlLCB0aGV5IG1pZ2h0IGV4cGxpY2l0bHkgY2hlY2sgZm9yIG1ldGFkYXRhIGluIHRoZSBgaGVhZGAgdGFnLCBzbyB3ZSBjYW4ndCBzdHJlYW0gbWV0YWRhdGEgdGFncyBhZnRlciB0aGUgYGhlYWRgIHdhcyBzZW50LlxuLy8gTm90ZTogVGhlIHBhdHRlcm4gW1xcdy1dKy1Hb29nbGUgY2FwdHVyZXMgYWxsIEdvb2dsZSBjcmF3bGVycyB3aXRoIFwiLUdvb2dsZVwiIHN1ZmZpeCAoZS5nLiwgTWVkaWFwYXJ0bmVycy1Hb29nbGUsIEFkc0JvdC1Hb29nbGUsIFN0b3JlYm90LUdvb2dsZSlcbi8vIGFzIHdlbGwgYXMgY3Jhd2xlcnMgc3RhcnRpbmcgd2l0aCBcIkdvb2dsZS1cIiAoZS5nLiwgR29vZ2xlLVBhZ2VSZW5kZXJlciwgR29vZ2xlLUluc3BlY3Rpb25Ub29sKVxuZXhwb3J0IGNvbnN0IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUgPVxuICAvW1xcdy1dKy1Hb29nbGV8R29vZ2xlLVtcXHctXSt8Q2hyb21lLUxpZ2h0aG91c2V8U2x1cnB8RHVja0R1Y2tCb3R8YmFpZHVzcGlkZXJ8eWFuZGV4fHNvZ291fGJpdGx5Ym90fHR1bWJscnx2a1NoYXJlfHF1b3JhIGxpbmsgcHJldmlld3xyZWRkaXRib3R8aWFfYXJjaGl2ZXJ8QmluZ2JvdHxCaW5nUHJldmlld3xhcHBsZWJvdHxmYWNlYm9va2V4dGVybmFsaGl0fGZhY2Vib29rY2F0YWxvZ3xUd2l0dGVyYm90fExpbmtlZEluQm90fFNsYWNrYm90fERpc2NvcmRib3R8V2hhdHNBcHB8U2t5cGVVcmlQcmV2aWV3fFlldGl8Z29vZ2xld2VibGlnaHQvaVxuIl0sIm5hbWVzIjpbIkhUTUxfTElNSVRFRF9CT1RfVUFfUkUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/interception-routes.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERCEPTION_ROUTE_MARKERS: function() {\n return INTERCEPTION_ROUTE_MARKERS;\n },\n extractInterceptionRouteInformation: function() {\n return extractInterceptionRouteInformation;\n },\n isInterceptionRouteAppPath: function() {\n return isInterceptionRouteAppPath;\n }\n});\nconst _apppaths = __webpack_require__(/*! ./app-paths */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/app-paths.js\");\nconst INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)'\n];\nfunction isInterceptionRouteAppPath(path) {\n // TODO-APP: add more serious validation\n return path.split('/').find((segment)=>INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m))) !== undefined;\n}\nfunction extractInterceptionRouteInformation(path) {\n let interceptingRoute, marker, interceptedRoute;\n for (const segment of path.split('/')){\n marker = INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n ;\n [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Must be in the format //(..|...|..)(..)/\"), \"__NEXT_ERROR_CODE\", {\n value: \"E269\",\n enumerable: false,\n configurable: true\n });\n }\n interceptingRoute = (0, _apppaths.normalizeAppPath)(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n ;\n switch(marker){\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = \"/\" + interceptedRoute;\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute;\n }\n break;\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Cannot use (..) marker at the root level, use (.) instead.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E207\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = interceptingRoute.split('/').slice(0, -1).concat(interceptedRoute).join('/');\n break;\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute;\n break;\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n const splitInterceptingRoute = interceptingRoute.split('/');\n if (splitInterceptingRoute.length <= 2) {\n throw Object.defineProperty(new Error(\"Invalid interception route: \" + path + \". Cannot use (..)(..) marker at the root level or one level up.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E486\",\n enumerable: false,\n configurable: true\n });\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join('/');\n break;\n default:\n throw Object.defineProperty(new Error('Invariant: unexpected marker'), \"__NEXT_ERROR_CODE\", {\n value: \"E112\",\n enumerable: false,\n configurable: true\n });\n }\n return {\n interceptingRoute,\n interceptedRoute\n };\n} //# sourceMappingURL=interception-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBR2FBLDBCQUEwQjtlQUExQkE7O0lBa0JHQyxtQ0FBbUM7ZUFBbkNBOztJQVhBQywwQkFBMEI7ZUFBMUJBOzs7c0NBVmlCO0FBRzFCLE1BQU1GLDZCQUE2QjtJQUN4QztJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRU0sU0FBU0UsMkJBQTJCQyxJQUFZO0lBQ3JELHdDQUF3QztJQUN4QyxPQUNFQSxLQUNHQyxLQUFLLENBQUMsS0FDTkMsSUFBSSxDQUFDLENBQUNDLFVBQ0xOLDJCQUEyQkssSUFBSSxDQUFDLENBQUNFLElBQU1ELFFBQVFFLFVBQVUsQ0FBQ0QsU0FDdERFO0FBRVo7QUFFTyxTQUFTUixvQ0FBb0NFLElBQVk7SUFDOUQsSUFBSU8sbUJBQ0ZDLFFBQ0FDO0lBRUYsS0FBSyxNQUFNTixXQUFXSCxLQUFLQyxLQUFLLENBQUMsS0FBTTtRQUNyQ08sU0FBU1gsMkJBQTJCSyxJQUFJLENBQUMsQ0FBQ0UsSUFBTUQsUUFBUUUsVUFBVSxDQUFDRDtRQUNuRSxJQUFJSSxRQUFROztZQUNULENBQUNELG1CQUFtQkUsaUJBQWlCLEdBQUdULEtBQUtDLEtBQUssQ0FBQ08sUUFBUTtZQUM1RDtRQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUNELHFCQUFxQixDQUFDQyxVQUFVLENBQUNDLGtCQUFrQjtRQUN0RCxNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUCxpQ0FBOEJWLE9BQUssc0ZBRGhDO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBTyxvQkFBb0JJLENBQUFBLEdBQUFBLFVBQUFBLGdCQUFBQSxFQUFpQkosbUJBQW1CLGlEQUFpRDs7SUFFekcsT0FBUUM7UUFDTixLQUFLO1lBQ0gsb0lBQW9JO1lBQ3BJLElBQUlELHNCQUFzQixLQUFLO2dCQUM3QkUsbUJBQW9CLE1BQUdBO1lBQ3pCLE9BQU87Z0JBQ0xBLG1CQUFtQkYsb0JBQW9CLE1BQU1FO1lBQy9DO1lBQ0E7UUFDRixLQUFLO1lBQ0gsdUhBQXVIO1lBQ3ZILElBQUlGLHNCQUFzQixLQUFLO2dCQUM3QixNQUFNLHFCQUVMLENBRkssSUFBSUcsTUFDUCxpQ0FBOEJWLE9BQUssaUVBRGhDOzJCQUFBO2dDQUFBO2tDQUFBO2dCQUVOO1lBQ0Y7WUFDQVMsbUJBQW1CRixrQkFDaEJOLEtBQUssQ0FBQyxLQUNOVyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQ1ZDLE1BQU0sQ0FBQ0osa0JBQ1BLLElBQUksQ0FBQztZQUNSO1FBQ0YsS0FBSztZQUNILGtJQUFrSTtZQUNsSUwsbUJBQW1CLE1BQU1BO1lBQ3pCO1FBQ0YsS0FBSztZQUNILGlJQUFpSTtZQUVqSSxNQUFNTSx5QkFBeUJSLGtCQUFrQk4sS0FBSyxDQUFDO1lBQ3ZELElBQUljLHVCQUF1QkMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3RDLE1BQU0scUJBRUwsQ0FGSyxJQUFJTixNQUNQLGlDQUE4QlYsT0FBSyxvRUFEaEM7MkJBQUE7Z0NBQUE7a0NBQUE7Z0JBRU47WUFDRjtZQUVBUyxtQkFBbUJNLHVCQUNoQkgsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUNWQyxNQUFNLENBQUNKLGtCQUNQSyxJQUFJLENBQUM7WUFDUjtRQUNGO1lBQ0UsTUFBTSxxQkFBeUMsQ0FBekMsSUFBSUosTUFBTSxpQ0FBVjt1QkFBQTs0QkFBQTs4QkFBQTtZQUF3QztJQUNsRDtJQUVBLE9BQU87UUFBRUg7UUFBbUJFO0lBQWlCO0FBQy9DIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxccm91dGVyXFx1dGlsc1xcaW50ZXJjZXB0aW9uLXJvdXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSAnLi9hcHAtcGF0aHMnXG5cbi8vIG9yZGVyIG1hdHRlcnMgaGVyZSwgdGhlIGZpcnN0IG1hdGNoIHdpbGwgYmUgdXNlZFxuZXhwb3J0IGNvbnN0IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTID0gW1xuICAnKC4uKSguLiknLFxuICAnKC4pJyxcbiAgJyguLiknLFxuICAnKC4uLiknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRPRE8tQVBQOiBhZGQgbW9yZSBzZXJpb3VzIHZhbGlkYXRpb25cbiAgcmV0dXJuIChcbiAgICBwYXRoXG4gICAgICAuc3BsaXQoJy8nKVxuICAgICAgLmZpbmQoKHNlZ21lbnQpID0+XG4gICAgICAgIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLmZpbmQoKG0pID0+IHNlZ21lbnQuc3RhcnRzV2l0aChtKSlcbiAgICAgICkgIT09IHVuZGVmaW5lZFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0SW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbihwYXRoOiBzdHJpbmcpIHtcbiAgbGV0IGludGVyY2VwdGluZ1JvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbWFya2VyOiAodHlwZW9mIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTKVtudW1iZXJdIHwgdW5kZWZpbmVkLFxuICAgIGludGVyY2VwdGVkUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoLnNwbGl0KCcvJykpIHtcbiAgICBtYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtKSA9PiBzZWdtZW50LnN0YXJ0c1dpdGgobSkpXG4gICAgaWYgKG1hcmtlcikge1xuICAgICAgO1tpbnRlcmNlcHRpbmdSb3V0ZSwgaW50ZXJjZXB0ZWRSb3V0ZV0gPSBwYXRoLnNwbGl0KG1hcmtlciwgMilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpbnRlcmNlcHRpbmdSb3V0ZSB8fCAhbWFya2VyIHx8ICFpbnRlcmNlcHRlZFJvdXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgaW50ZXJjZXB0aW9uIHJvdXRlOiAke3BhdGh9LiBNdXN0IGJlIGluIHRoZSBmb3JtYXQgLzxpbnRlcmNlcHRpbmcgcm91dGU+LyguLnwuLi58Li4pKC4uKS88aW50ZXJjZXB0ZWQgcm91dGU+YFxuICAgIClcbiAgfVxuXG4gIGludGVyY2VwdGluZ1JvdXRlID0gbm9ybWFsaXplQXBwUGF0aChpbnRlcmNlcHRpbmdSb3V0ZSkgLy8gbm9ybWFsaXplIHRoZSBwYXRoLCBlLmcuIC8oYmxvZykvZmVlZCAtPiAvZmVlZFxuXG4gIHN3aXRjaCAobWFya2VyKSB7XG4gICAgY2FzZSAnKC4pJzpcbiAgICAgIC8vICguKSBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBzaWJsaW5nIHJvdXRlcywgc28gd2UganVzdCBuZWVkIHRvIGFwcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGUgdG8gdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGAvJHtpbnRlcmNlcHRlZFJvdXRlfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZSArICcvJyArIGludGVyY2VwdGVkUm91dGVcbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnKC4uKSc6XG4gICAgICAvLyAoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCBvbmUgbGV2ZWwgdXAsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSAnLycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pIG1hcmtlciBhdCB0aGUgcm9vdCBsZXZlbCwgdXNlICguKSBpbnN0ZWFkLmBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGludGVyY2VwdGluZ1JvdXRlXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgLmNvbmNhdChpbnRlcmNlcHRlZFJvdXRlKVxuICAgICAgICAuam9pbignLycpXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLi4pJzpcbiAgICAgIC8vICguLi4pIHdpbGwgbWF0Y2ggdGhlIHJvdXRlIHNlZ21lbnQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGVcbiAgICAgIGludGVyY2VwdGVkUm91dGUgPSAnLycgKyBpbnRlcmNlcHRlZFJvdXRlXG4gICAgICBicmVha1xuICAgIGNhc2UgJyguLikoLi4pJzpcbiAgICAgIC8vICguLikoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCB0d28gbGV2ZWxzIHVwLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgbGFzdCB0d28gc2VnbWVudHMgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuXG4gICAgICBjb25zdCBzcGxpdEludGVyY2VwdGluZ1JvdXRlID0gaW50ZXJjZXB0aW5nUm91dGUuc3BsaXQoJy8nKVxuICAgICAgaWYgKHNwbGl0SW50ZXJjZXB0aW5nUm91dGUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogJHtwYXRofS4gQ2Fubm90IHVzZSAoLi4pKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwgb3Igb25lIGxldmVsIHVwLmBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpbnRlcmNlcHRlZFJvdXRlID0gc3BsaXRJbnRlcmNlcHRpbmdSb3V0ZVxuICAgICAgICAuc2xpY2UoMCwgLTIpXG4gICAgICAgIC5jb25jYXQoaW50ZXJjZXB0ZWRSb3V0ZSlcbiAgICAgICAgLmpvaW4oJy8nKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhcmlhbnQ6IHVuZXhwZWN0ZWQgbWFya2VyJylcbiAgfVxuXG4gIHJldHVybiB7IGludGVyY2VwdGluZ1JvdXRlLCBpbnRlcmNlcHRlZFJvdXRlIH1cbn1cbiJdLCJuYW1lcyI6WyJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImV4dHJhY3RJbnRlcmNlcHRpb25Sb3V0ZUluZm9ybWF0aW9uIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJwYXRoIiwic3BsaXQiLCJmaW5kIiwic2VnbWVudCIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiaW50ZXJjZXB0aW5nUm91dGUiLCJtYXJrZXIiLCJpbnRlcmNlcHRlZFJvdXRlIiwiRXJyb3IiLCJub3JtYWxpemVBcHBQYXRoIiwic2xpY2UiLCJjb25jYXQiLCJqb2luIiwic3BsaXRJbnRlcmNlcHRpbmdSb3V0ZSIsImxlbmd0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/router/utils/is-bot.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n HTML_LIMITED_BOT_UA_RE: function() {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE;\n },\n HTML_LIMITED_BOT_UA_RE_STRING: function() {\n return HTML_LIMITED_BOT_UA_RE_STRING;\n },\n getBotType: function() {\n return getBotType;\n },\n isBot: function() {\n return isBot;\n }\n});\nconst _htmlbots = __webpack_require__(/*! ./html-bots */ \"(ssr)/./node_modules/next/dist/shared/lib/router/utils/html-bots.js\");\n// Bot crawler that will spin up a headless browser and execute JS.\n// Only the main Googlebot search crawler executes JavaScript, not other Google crawlers.\n// x-ref: https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers\n// This regex specifically matches \"Googlebot\" but NOT \"Mediapartners-Google\", \"AdsBot-Google\", etc.\nconst HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i;\nconst HTML_LIMITED_BOT_UA_RE_STRING = _htmlbots.HTML_LIMITED_BOT_UA_RE.source;\nfunction isDomBotUA(userAgent) {\n return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent);\n}\nfunction isHtmlLimitedBotUA(userAgent) {\n return _htmlbots.HTML_LIMITED_BOT_UA_RE.test(userAgent);\n}\nfunction isBot(userAgent) {\n return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent);\n}\nfunction getBotType(userAgent) {\n if (isDomBotUA(userAgent)) {\n return 'dom';\n }\n if (isHtmlLimitedBotUA(userAgent)) {\n return 'html';\n }\n return undefined;\n} //# sourceMappingURL=is-bot.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVU0Esc0JBQXNCO2VBQXRCQSxVQUFBQSxzQkFBc0I7O0lBRmxCQyw2QkFBNkI7ZUFBN0JBOztJQWdCR0MsVUFBVTtlQUFWQTs7SUFKQUMsS0FBSztlQUFMQTs7O3NDQXBCdUI7QUFFdkMsbUVBQW1FO0FBQ25FLHlGQUF5RjtBQUN6Riw0RkFBNEY7QUFDNUYsb0dBQW9HO0FBQ3BHLE1BQU1DLDZCQUE2QjtBQUU1QixNQUFNSCxnQ0FBZ0NELFVBQUFBLHNCQUFzQixDQUFDSyxNQUFNO0FBSTFFLFNBQVNDLFdBQVdDLFNBQWlCO0lBQ25DLE9BQU9ILDJCQUEyQkksSUFBSSxDQUFDRDtBQUN6QztBQUVBLFNBQVNFLG1CQUFtQkYsU0FBaUI7SUFDM0MsT0FBT1AsVUFBQUEsc0JBQXNCLENBQUNRLElBQUksQ0FBQ0Q7QUFDckM7QUFFTyxTQUFTSixNQUFNSSxTQUFpQjtJQUNyQyxPQUFPRCxXQUFXQyxjQUFjRSxtQkFBbUJGO0FBQ3JEO0FBRU8sU0FBU0wsV0FBV0ssU0FBaUI7SUFDMUMsSUFBSUQsV0FBV0MsWUFBWTtRQUN6QixPQUFPO0lBQ1Q7SUFDQSxJQUFJRSxtQkFBbUJGLFlBQVk7UUFDakMsT0FBTztJQUNUO0lBQ0EsT0FBT0c7QUFDVCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHJvdXRlclxcdXRpbHNcXGlzLWJvdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVE1MX0xJTUlURURfQk9UX1VBX1JFIH0gZnJvbSAnLi9odG1sLWJvdHMnXG5cbi8vIEJvdCBjcmF3bGVyIHRoYXQgd2lsbCBzcGluIHVwIGEgaGVhZGxlc3MgYnJvd3NlciBhbmQgZXhlY3V0ZSBKUy5cbi8vIE9ubHkgdGhlIG1haW4gR29vZ2xlYm90IHNlYXJjaCBjcmF3bGVyIGV4ZWN1dGVzIEphdmFTY3JpcHQsIG5vdCBvdGhlciBHb29nbGUgY3Jhd2xlcnMuXG4vLyB4LXJlZjogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc2VhcmNoL2RvY3MvY3Jhd2xpbmctaW5kZXhpbmcvZ29vZ2xlLWNvbW1vbi1jcmF3bGVyc1xuLy8gVGhpcyByZWdleCBzcGVjaWZpY2FsbHkgbWF0Y2hlcyBcIkdvb2dsZWJvdFwiIGJ1dCBOT1QgXCJNZWRpYXBhcnRuZXJzLUdvb2dsZVwiLCBcIkFkc0JvdC1Hb29nbGVcIiwgZXRjLlxuY29uc3QgSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUgPSAvR29vZ2xlYm90KD8hLSl8R29vZ2xlYm90JC9pXG5cbmV4cG9ydCBjb25zdCBIVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORyA9IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUuc291cmNlXG5cbmV4cG9ydCB7IEhUTUxfTElNSVRFRF9CT1RfVUFfUkUgfVxuXG5mdW5jdGlvbiBpc0RvbUJvdFVBKHVzZXJBZ2VudDogc3RyaW5nKSB7XG4gIHJldHVybiBIRUFETEVTU19CUk9XU0VSX0JPVF9VQV9SRS50ZXN0KHVzZXJBZ2VudClcbn1cblxuZnVuY3Rpb24gaXNIdG1sTGltaXRlZEJvdFVBKHVzZXJBZ2VudDogc3RyaW5nKSB7XG4gIHJldHVybiBIVE1MX0xJTUlURURfQk9UX1VBX1JFLnRlc3QodXNlckFnZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb3QodXNlckFnZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzRG9tQm90VUEodXNlckFnZW50KSB8fCBpc0h0bWxMaW1pdGVkQm90VUEodXNlckFnZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm90VHlwZSh1c2VyQWdlbnQ6IHN0cmluZyk6ICdkb20nIHwgJ2h0bWwnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzRG9tQm90VUEodXNlckFnZW50KSkge1xuICAgIHJldHVybiAnZG9tJ1xuICB9XG4gIGlmIChpc0h0bWxMaW1pdGVkQm90VUEodXNlckFnZW50KSkge1xuICAgIHJldHVybiAnaHRtbCdcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG4iXSwibmFtZXMiOlsiSFRNTF9MSU1JVEVEX0JPVF9VQV9SRSIsIkhUTUxfTElNSVRFRF9CT1RfVUFfUkVfU1RSSU5HIiwiZ2V0Qm90VHlwZSIsImlzQm90IiwiSEVBRExFU1NfQlJPV1NFUl9CT1RfVUFfUkUiLCJzb3VyY2UiLCJpc0RvbUJvdFVBIiwidXNlckFnZW50IiwidGVzdCIsImlzSHRtbExpbWl0ZWRCb3RVQSIsInVuZGVmaW5lZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ROOT_SEGMENT_CACHE_KEY: function() {\n return ROOT_SEGMENT_CACHE_KEY;\n },\n ROOT_SEGMENT_REQUEST_KEY: function() {\n return ROOT_SEGMENT_REQUEST_KEY;\n },\n appendSegmentCacheKeyPart: function() {\n return appendSegmentCacheKeyPart;\n },\n appendSegmentRequestKeyPart: function() {\n return appendSegmentRequestKeyPart;\n },\n convertSegmentPathToStaticExportFilename: function() {\n return convertSegmentPathToStaticExportFilename;\n },\n createSegmentCacheKeyPart: function() {\n return createSegmentCacheKeyPart;\n },\n createSegmentRequestKeyPart: function() {\n return createSegmentRequestKeyPart;\n }\n});\nconst _segment = __webpack_require__(/*! ../segment */ \"(ssr)/./node_modules/next/dist/shared/lib/segment.js\");\nconst ROOT_SEGMENT_REQUEST_KEY = '';\nconst ROOT_SEGMENT_CACHE_KEY = '';\nfunction createSegmentRequestKeyPart(segment) {\n if (typeof segment === 'string') {\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n // The Flight Router State type sometimes includes the search params in\n // the page segment. However, the Segment Cache tracks this as a separate\n // key. So, we strip the search params here, and then add them back when\n // the cache entry is turned back into a FlightRouterState. This is an\n // unfortunate consequence of the FlightRouteState being used both as a\n // transport type and as a cache key; we'll address this once more of the\n // Segment Cache implementation has settled.\n // TODO: We should hoist the search params out of the FlightRouterState\n // type entirely, This is our plan for dynamic route params, too.\n return _segment.PAGE_SEGMENT_KEY;\n }\n const safeName = // But params typically don't include the leading slash. We should use\n // a different encoding to avoid this special case.\n segment === '/_not-found' ? '_not-found' : encodeToFilesystemAndURLSafeString(segment);\n // Since this is not a dynamic segment, it's fully encoded. It does not\n // need to be \"hydrated\" with a param value.\n return safeName;\n }\n const name = segment[0];\n const paramType = segment[2];\n const safeName = encodeToFilesystemAndURLSafeString(name);\n const encodedName = '$' + paramType + '$' + safeName;\n return encodedName;\n}\nfunction appendSegmentRequestKeyPart(parentRequestKey, parallelRouteKey, childRequestKeyPart) {\n // Aside from being filesystem safe, segment keys are also designed so that\n // each segment and parallel route creates its own subdirectory. Roughly in\n // the same shape as the source app directory. This is mostly just for easier\n // debugging (you can open up the build folder and navigate the output); if\n // we wanted to do we could just use a flat structure.\n // Omit the parallel route key for children, since this is the most\n // common case. Saves some bytes (and it's what the app directory does).\n const slotKey = parallelRouteKey === 'children' ? childRequestKeyPart : \"@\" + encodeToFilesystemAndURLSafeString(parallelRouteKey) + \"/\" + childRequestKeyPart;\n return parentRequestKey + '/' + slotKey;\n}\nfunction createSegmentCacheKeyPart(requestKeyPart, segment) {\n if (typeof segment === 'string') {\n return requestKeyPart;\n }\n const paramValue = segment[1];\n const safeValue = encodeToFilesystemAndURLSafeString(paramValue);\n return requestKeyPart + '$' + safeValue;\n}\nfunction appendSegmentCacheKeyPart(parentSegmentKey, parallelRouteKey, childCacheKeyPart) {\n const slotKey = parallelRouteKey === 'children' ? childCacheKeyPart : \"@\" + encodeToFilesystemAndURLSafeString(parallelRouteKey) + \"/\" + childCacheKeyPart;\n return parentSegmentKey + '/' + slotKey;\n}\n// Define a regex pattern to match the most common characters found in a route\n// param. It excludes anything that might not be cross-platform filesystem\n// compatible, like |. It does not need to be precise because the fallback is to\n// just base64url-encode the whole parameter, which is fine; we just don't do it\n// by default for compactness, and for easier debugging.\nconst simpleParamValueRegex = /^[a-zA-Z0-9\\-_@]+$/;\nfunction encodeToFilesystemAndURLSafeString(value) {\n if (simpleParamValueRegex.test(value)) {\n return value;\n }\n // If there are any unsafe characters, base64url-encode the entire value.\n // We also add a ! prefix so it doesn't collide with the simple case.\n const base64url = btoa(value).replace(/\\+/g, '-') // Replace '+' with '-'\n .replace(/\\//g, '_') // Replace '/' with '_'\n .replace(/=+$/, '') // Remove trailing '='\n ;\n return '!' + base64url;\n}\nfunction convertSegmentPathToStaticExportFilename(segmentPath) {\n return \"__next\" + segmentPath.replace(/\\//g, '.') + \".txt\";\n} //# sourceMappingURL=segment-value-encoding.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC1jYWNoZS9zZWdtZW50LXZhbHVlLWVuY29kaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVlhQSxzQkFBc0I7ZUFBdEJBOztJQURBQyx3QkFBd0I7ZUFBeEJBOztJQXVFR0MseUJBQXlCO2VBQXpCQTs7SUFoQ0FDLDJCQUEyQjtlQUEzQkE7O0lBZ0VBQyx3Q0FBd0M7ZUFBeENBOztJQTVDQUMseUJBQXlCO2VBQXpCQTs7SUF4REFDLDJCQUEyQjtlQUEzQkE7OztxQ0FkaUI7QUFXMUIsTUFBTUwsMkJBQTJCO0FBQ2pDLE1BQU1ELHlCQUF5QjtBQUUvQixTQUFTTSw0QkFDZEMsT0FBaUM7SUFFakMsSUFBSSxPQUFPQSxZQUFZLFVBQVU7UUFDL0IsSUFBSUEsUUFBUUMsVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRztZQUN4Qyx1RUFBdUU7WUFDdkUseUVBQXlFO1lBQ3pFLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSw0Q0FBNEM7WUFDNUMsdUVBQXVFO1lBQ3ZFLGlFQUFpRTtZQUNqRSxPQUFPQSxTQUFBQSxnQkFBZ0I7UUFDekI7UUFDQSxNQUFNQyxXQUNKLHFFQUFxRSxDQUNDO1FBQ3RFLG1EQUFtRDtRQUNuREgsWUFBWSxnQkFDUixlQUNBSSxtQ0FBbUNKO1FBQ3pDLHVFQUF1RTtRQUN2RSw0Q0FBNEM7UUFDNUMsT0FBT0c7SUFDVDtJQUVBLE1BQU1FLE9BQU9MLE9BQU8sQ0FBQyxFQUFFO0lBQ3ZCLE1BQU1NLFlBQVlOLE9BQU8sQ0FBQyxFQUFFO0lBQzVCLE1BQU1HLFdBQVdDLG1DQUFtQ0M7SUFFcEQsTUFBTUUsY0FBYyxNQUFNRCxZQUFZLE1BQU1IO0lBQzVDLE9BQU9JO0FBQ1Q7QUFFTyxTQUFTWCw0QkFDZFksZ0JBQW1DLEVBQ25DQyxnQkFBd0IsRUFDeEJDLG1CQUEwQztJQUUxQywyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSwyRUFBMkU7SUFDM0Usc0RBQXNEO0lBRXRELG1FQUFtRTtJQUNuRSx3RUFBd0U7SUFDeEUsTUFBTUMsVUFDSkYscUJBQXFCLGFBQ2pCQyxzQkFDQyxNQUFHTixtQ0FBbUNLLG9CQUFrQixNQUFHQztJQUNsRSxPQUFRRixtQkFBbUIsTUFBTUc7QUFDbkM7QUFFTyxTQUFTYiwwQkFDZGMsY0FBcUMsRUFDckNaLE9BQWlDO0lBRWpDLElBQUksT0FBT0EsWUFBWSxVQUFVO1FBQy9CLE9BQU9ZO0lBQ1Q7SUFDQSxNQUFNQyxhQUFhYixPQUFPLENBQUMsRUFBRTtJQUM3QixNQUFNYyxZQUFZVixtQ0FBbUNTO0lBQ3JELE9BQVFELGlCQUFpQixNQUFNRTtBQUNqQztBQUVPLFNBQVNuQiwwQkFDZG9CLGdCQUFpQyxFQUNqQ04sZ0JBQXdCLEVBQ3hCTyxpQkFBc0M7SUFFdEMsTUFBTUwsVUFDSkYscUJBQXFCLGFBQ2pCTyxvQkFDQyxNQUFHWixtQ0FBbUNLLG9CQUFrQixNQUFHTztJQUNsRSxPQUFRRCxtQkFBbUIsTUFBTUo7QUFDbkM7QUFFQSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBQzFFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsd0RBQXdEO0FBQ3hELE1BQU1NLHdCQUF3QjtBQUU5QixTQUFTYixtQ0FBbUNjLEtBQWE7SUFDdkQsSUFBSUQsc0JBQXNCRSxJQUFJLENBQUNELFFBQVE7UUFDckMsT0FBT0E7SUFDVDtJQUNBLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsTUFBTUUsWUFBWUMsS0FBS0gsT0FDcEJJLE9BQU8sQ0FBQyxPQUFPLEtBQUssdUJBQXVCO0tBQzNDQSxPQUFPLENBQUMsT0FBTyxLQUFLLHVCQUF1QjtLQUMzQ0EsT0FBTyxDQUFDLE9BQU8sSUFBSSxzQkFBc0I7O0lBQzVDLE9BQU8sTUFBTUY7QUFDZjtBQUVPLFNBQVN2Qix5Q0FDZDBCLFdBQW1CO0lBRW5CLE9BQVEsV0FBUUEsWUFBWUQsT0FBTyxDQUFDLE9BQU8sT0FBSztBQUNsRCIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHNlZ21lbnQtY2FjaGVcXHNlZ21lbnQtdmFsdWUtZW5jb2RpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uL3NlZ21lbnQnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQgYXMgRmxpZ2h0Um91dGVyU3RhdGVTZWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5cbi8vIFR5cGVTY3JpcHQgdHJpY2sgdG8gc2ltdWxhdGUgb3BhcXVlIHR5cGVzLCBsaWtlIGluIEZsb3cuXG50eXBlIE9wYXF1ZTxLLCBUPiA9IFQgJiB7IF9fYnJhbmQ6IEsgfVxuXG5leHBvcnQgdHlwZSBTZWdtZW50UmVxdWVzdEtleVBhcnQgPSBPcGFxdWU8J1NlZ21lbnRSZXF1ZXN0S2V5UGFydCcsIHN0cmluZz5cbmV4cG9ydCB0eXBlIFNlZ21lbnRSZXF1ZXN0S2V5ID0gT3BhcXVlPCdTZWdtZW50UmVxdWVzdEtleScsIHN0cmluZz5cbmV4cG9ydCB0eXBlIFNlZ21lbnRDYWNoZUtleVBhcnQgPSBPcGFxdWU8J1NlZ21lbnRDYWNoZUtleVBhcnQnLCBzdHJpbmc+XG5leHBvcnQgdHlwZSBTZWdtZW50Q2FjaGVLZXkgPSBPcGFxdWU8J1NlZ21lbnRDYWNoZUtleScsIHN0cmluZz5cblxuZXhwb3J0IGNvbnN0IFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSA9ICcnIGFzIFNlZ21lbnRSZXF1ZXN0S2V5XG5leHBvcnQgY29uc3QgUk9PVF9TRUdNRU5UX0NBQ0hFX0tFWSA9ICcnIGFzIFNlZ21lbnRDYWNoZUtleVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0KFxuICBzZWdtZW50OiBGbGlnaHRSb3V0ZXJTdGF0ZVNlZ21lbnRcbik6IFNlZ21lbnRSZXF1ZXN0S2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgICAvLyBUaGUgRmxpZ2h0IFJvdXRlciBTdGF0ZSB0eXBlIHNvbWV0aW1lcyBpbmNsdWRlcyB0aGUgc2VhcmNoIHBhcmFtcyBpblxuICAgICAgLy8gdGhlIHBhZ2Ugc2VnbWVudC4gSG93ZXZlciwgdGhlIFNlZ21lbnQgQ2FjaGUgdHJhY2tzIHRoaXMgYXMgYSBzZXBhcmF0ZVxuICAgICAgLy8ga2V5LiBTbywgd2Ugc3RyaXAgdGhlIHNlYXJjaCBwYXJhbXMgaGVyZSwgYW5kIHRoZW4gYWRkIHRoZW0gYmFjayB3aGVuXG4gICAgICAvLyB0aGUgY2FjaGUgZW50cnkgaXMgdHVybmVkIGJhY2sgaW50byBhIEZsaWdodFJvdXRlclN0YXRlLiBUaGlzIGlzIGFuXG4gICAgICAvLyB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZSBvZiB0aGUgRmxpZ2h0Um91dGVTdGF0ZSBiZWluZyB1c2VkIGJvdGggYXMgYVxuICAgICAgLy8gdHJhbnNwb3J0IHR5cGUgYW5kIGFzIGEgY2FjaGUga2V5OyB3ZSdsbCBhZGRyZXNzIHRoaXMgb25jZSBtb3JlIG9mIHRoZVxuICAgICAgLy8gU2VnbWVudCBDYWNoZSBpbXBsZW1lbnRhdGlvbiBoYXMgc2V0dGxlZC5cbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBob2lzdCB0aGUgc2VhcmNoIHBhcmFtcyBvdXQgb2YgdGhlIEZsaWdodFJvdXRlclN0YXRlXG4gICAgICAvLyB0eXBlIGVudGlyZWx5LCBUaGlzIGlzIG91ciBwbGFuIGZvciBkeW5hbWljIHJvdXRlIHBhcmFtcywgdG9vLlxuICAgICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVkgYXMgU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4gICAgfVxuICAgIGNvbnN0IHNhZmVOYW1lID1cbiAgICAgIC8vIFRPRE86IEZsaWdodFJvdXRlclN0YXRlIGVuY29kZXMgTm90IEZvdW5kIHJvdXRlcyBhcyBcIi9fbm90LWZvdW5kXCIuXG4gICAgICAvLyBCdXQgcGFyYW1zIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIHRoZSBsZWFkaW5nIHNsYXNoLiBXZSBzaG91bGQgdXNlXG4gICAgICAvLyBhIGRpZmZlcmVudCBlbmNvZGluZyB0byBhdm9pZCB0aGlzIHNwZWNpYWwgY2FzZS5cbiAgICAgIHNlZ21lbnQgPT09ICcvX25vdC1mb3VuZCdcbiAgICAgICAgPyAnX25vdC1mb3VuZCdcbiAgICAgICAgOiBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHNlZ21lbnQpXG4gICAgLy8gU2luY2UgdGhpcyBpcyBub3QgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgZnVsbHkgZW5jb2RlZC4gSXQgZG9lcyBub3RcbiAgICAvLyBuZWVkIHRvIGJlIFwiaHlkcmF0ZWRcIiB3aXRoIGEgcGFyYW0gdmFsdWUuXG4gICAgcmV0dXJuIHNhZmVOYW1lIGFzIFNlZ21lbnRSZXF1ZXN0S2V5UGFydFxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHNlZ21lbnRbMF1cbiAgY29uc3QgcGFyYW1UeXBlID0gc2VnbWVudFsyXVxuICBjb25zdCBzYWZlTmFtZSA9IGVuY29kZVRvRmlsZXN5c3RlbUFuZFVSTFNhZmVTdHJpbmcobmFtZSlcblxuICBjb25zdCBlbmNvZGVkTmFtZSA9ICckJyArIHBhcmFtVHlwZSArICckJyArIHNhZmVOYW1lXG4gIHJldHVybiBlbmNvZGVkTmFtZSBhcyBTZWdtZW50UmVxdWVzdEtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydChcbiAgcGFyZW50UmVxdWVzdEtleTogU2VnbWVudFJlcXVlc3RLZXksXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyxcbiAgY2hpbGRSZXF1ZXN0S2V5UGFydDogU2VnbWVudFJlcXVlc3RLZXlQYXJ0XG4pOiBTZWdtZW50UmVxdWVzdEtleSB7XG4gIC8vIEFzaWRlIGZyb20gYmVpbmcgZmlsZXN5c3RlbSBzYWZlLCBzZWdtZW50IGtleXMgYXJlIGFsc28gZGVzaWduZWQgc28gdGhhdFxuICAvLyBlYWNoIHNlZ21lbnQgYW5kIHBhcmFsbGVsIHJvdXRlIGNyZWF0ZXMgaXRzIG93biBzdWJkaXJlY3RvcnkuIFJvdWdobHkgaW5cbiAgLy8gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHNvdXJjZSBhcHAgZGlyZWN0b3J5LiBUaGlzIGlzIG1vc3RseSBqdXN0IGZvciBlYXNpZXJcbiAgLy8gZGVidWdnaW5nICh5b3UgY2FuIG9wZW4gdXAgdGhlIGJ1aWxkIGZvbGRlciBhbmQgbmF2aWdhdGUgdGhlIG91dHB1dCk7IGlmXG4gIC8vIHdlIHdhbnRlZCB0byBkbyB3ZSBjb3VsZCBqdXN0IHVzZSBhIGZsYXQgc3RydWN0dXJlLlxuXG4gIC8vIE9taXQgdGhlIHBhcmFsbGVsIHJvdXRlIGtleSBmb3IgY2hpbGRyZW4sIHNpbmNlIHRoaXMgaXMgdGhlIG1vc3RcbiAgLy8gY29tbW9uIGNhc2UuIFNhdmVzIHNvbWUgYnl0ZXMgKGFuZCBpdCdzIHdoYXQgdGhlIGFwcCBkaXJlY3RvcnkgZG9lcykuXG4gIGNvbnN0IHNsb3RLZXkgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gY2hpbGRSZXF1ZXN0S2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZFJlcXVlc3RLZXlQYXJ0fWBcbiAgcmV0dXJuIChwYXJlbnRSZXF1ZXN0S2V5ICsgJy8nICsgc2xvdEtleSkgYXMgU2VnbWVudFJlcXVlc3RLZXlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlZ21lbnRDYWNoZUtleVBhcnQoXG4gIHJlcXVlc3RLZXlQYXJ0OiBTZWdtZW50UmVxdWVzdEtleVBhcnQsXG4gIHNlZ21lbnQ6IEZsaWdodFJvdXRlclN0YXRlU2VnbWVudFxuKTogU2VnbWVudENhY2hlS2V5UGFydCB7XG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcmVxdWVzdEtleVBhcnQgYXMgYW55IGFzIFNlZ21lbnRDYWNoZUtleVBhcnRcbiAgfVxuICBjb25zdCBwYXJhbVZhbHVlID0gc2VnbWVudFsxXVxuICBjb25zdCBzYWZlVmFsdWUgPSBlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nKHBhcmFtVmFsdWUpXG4gIHJldHVybiAocmVxdWVzdEtleVBhcnQgKyAnJCcgKyBzYWZlVmFsdWUpIGFzIFNlZ21lbnRDYWNoZUtleVBhcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlZ21lbnRDYWNoZUtleVBhcnQoXG4gIHBhcmVudFNlZ21lbnRLZXk6IFNlZ21lbnRDYWNoZUtleSxcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nLFxuICBjaGlsZENhY2hlS2V5UGFydDogU2VnbWVudENhY2hlS2V5UGFydFxuKTogU2VnbWVudENhY2hlS2V5IHtcbiAgY29uc3Qgc2xvdEtleSA9XG4gICAgcGFyYWxsZWxSb3V0ZUtleSA9PT0gJ2NoaWxkcmVuJ1xuICAgICAgPyBjaGlsZENhY2hlS2V5UGFydFxuICAgICAgOiBgQCR7ZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyhwYXJhbGxlbFJvdXRlS2V5KX0vJHtjaGlsZENhY2hlS2V5UGFydH1gXG4gIHJldHVybiAocGFyZW50U2VnbWVudEtleSArICcvJyArIHNsb3RLZXkpIGFzIFNlZ21lbnRDYWNoZUtleVxufVxuXG4vLyBEZWZpbmUgYSByZWdleCBwYXR0ZXJuIHRvIG1hdGNoIHRoZSBtb3N0IGNvbW1vbiBjaGFyYWN0ZXJzIGZvdW5kIGluIGEgcm91dGVcbi8vIHBhcmFtLiBJdCBleGNsdWRlcyBhbnl0aGluZyB0aGF0IG1pZ2h0IG5vdCBiZSBjcm9zcy1wbGF0Zm9ybSBmaWxlc3lzdGVtXG4vLyBjb21wYXRpYmxlLCBsaWtlIHwuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmUgcHJlY2lzZSBiZWNhdXNlIHRoZSBmYWxsYmFjayBpcyB0b1xuLy8ganVzdCBiYXNlNjR1cmwtZW5jb2RlIHRoZSB3aG9sZSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGZpbmU7IHdlIGp1c3QgZG9uJ3QgZG8gaXRcbi8vIGJ5IGRlZmF1bHQgZm9yIGNvbXBhY3RuZXNzLCBhbmQgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG5jb25zdCBzaW1wbGVQYXJhbVZhbHVlUmVnZXggPSAvXlthLXpBLVowLTlcXC1fQF0rJC9cblxuZnVuY3Rpb24gZW5jb2RlVG9GaWxlc3lzdGVtQW5kVVJMU2FmZVN0cmluZyh2YWx1ZTogc3RyaW5nKSB7XG4gIGlmIChzaW1wbGVQYXJhbVZhbHVlUmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuICAvLyBJZiB0aGVyZSBhcmUgYW55IHVuc2FmZSBjaGFyYWN0ZXJzLCBiYXNlNjR1cmwtZW5jb2RlIHRoZSBlbnRpcmUgdmFsdWUuXG4gIC8vIFdlIGFsc28gYWRkIGEgISBwcmVmaXggc28gaXQgZG9lc24ndCBjb2xsaWRlIHdpdGggdGhlIHNpbXBsZSBjYXNlLlxuICBjb25zdCBiYXNlNjR1cmwgPSBidG9hKHZhbHVlKVxuICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKSAvLyBSZXBsYWNlICcrJyB3aXRoICctJ1xuICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKSAvLyBSZXBsYWNlICcvJyB3aXRoICdfJ1xuICAgIC5yZXBsYWNlKC89KyQvLCAnJykgLy8gUmVtb3ZlIHRyYWlsaW5nICc9J1xuICByZXR1cm4gJyEnICsgYmFzZTY0dXJsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U2VnbWVudFBhdGhUb1N0YXRpY0V4cG9ydEZpbGVuYW1lKFxuICBzZWdtZW50UGF0aDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYF9fbmV4dCR7c2VnbWVudFBhdGgucmVwbGFjZSgvXFwvL2csICcuJyl9LnR4dGBcbn1cbiJdLCJuYW1lcyI6WyJST09UX1NFR01FTlRfQ0FDSEVfS0VZIiwiUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIiwiYXBwZW5kU2VnbWVudENhY2hlS2V5UGFydCIsImFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydCIsImNvbnZlcnRTZWdtZW50UGF0aFRvU3RhdGljRXhwb3J0RmlsZW5hbWUiLCJjcmVhdGVTZWdtZW50Q2FjaGVLZXlQYXJ0IiwiY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0Iiwic2VnbWVudCIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwic2FmZU5hbWUiLCJlbmNvZGVUb0ZpbGVzeXN0ZW1BbmRVUkxTYWZlU3RyaW5nIiwibmFtZSIsInBhcmFtVHlwZSIsImVuY29kZWROYW1lIiwicGFyZW50UmVxdWVzdEtleSIsInBhcmFsbGVsUm91dGVLZXkiLCJjaGlsZFJlcXVlc3RLZXlQYXJ0Iiwic2xvdEtleSIsInJlcXVlc3RLZXlQYXJ0IiwicGFyYW1WYWx1ZSIsInNhZmVWYWx1ZSIsInBhcmVudFNlZ21lbnRLZXkiLCJjaGlsZENhY2hlS2V5UGFydCIsInNpbXBsZVBhcmFtVmFsdWVSZWdleCIsInZhbHVlIiwidGVzdCIsImJhc2U2NHVybCIsImJ0b2EiLCJyZXBsYWNlIiwic2VnbWVudFBhdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/segment.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/shared/lib/segment.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_SEGMENT_KEY: function() {\n return DEFAULT_SEGMENT_KEY;\n },\n PAGE_SEGMENT_KEY: function() {\n return PAGE_SEGMENT_KEY;\n },\n addSearchParamsIfPageSegment: function() {\n return addSearchParamsIfPageSegment;\n },\n isGroupSegment: function() {\n return isGroupSegment;\n },\n isParallelRouteSegment: function() {\n return isParallelRouteSegment;\n }\n});\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nfunction isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nfunction addSearchParamsIfPageSegment(segment, searchParams) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY);\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams);\n return stringifiedQuery !== '{}' ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery : PAGE_SEGMENT_KEY;\n }\n return segment;\n}\nconst PAGE_SEGMENT_KEY = '__PAGE__';\nconst DEFAULT_SEGMENT_KEY = '__DEFAULT__'; //# sourceMappingURL=segment.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvc2VnbWVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE0QmFBLG1CQUFtQjtlQUFuQkE7O0lBREFDLGdCQUFnQjtlQUFoQkE7O0lBaEJHQyw0QkFBNEI7ZUFBNUJBOztJQVRBQyxjQUFjO2VBQWRBOztJQUtBQyxzQkFBc0I7ZUFBdEJBOzs7QUFMVCxTQUFTRCxlQUFlRSxPQUFlO0lBQzVDLHNDQUFzQztJQUN0QyxPQUFPQSxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU9BLFFBQVFDLFFBQVEsQ0FBQztBQUNoRDtBQUVPLFNBQVNGLHVCQUF1QkMsT0FBZTtJQUNwRCxPQUFPQSxRQUFRRSxVQUFVLENBQUMsUUFBUUYsWUFBWTtBQUNoRDtBQUVPLFNBQVNILDZCQUNkRyxPQUFnQixFQUNoQkcsWUFBMkQ7SUFFM0QsTUFBTUMsZ0JBQWdCSixRQUFRSyxRQUFRLENBQUNUO0lBRXZDLElBQUlRLGVBQWU7UUFDakIsTUFBTUUsbUJBQW1CQyxLQUFLQyxTQUFTLENBQUNMO1FBQ3hDLE9BQU9HLHFCQUFxQixPQUN4QlYsbUJBQW1CLE1BQU1VLG1CQUN6QlY7SUFDTjtJQUVBLE9BQU9JO0FBQ1Q7QUFFTyxNQUFNSixtQkFBbUI7QUFDekIsTUFBTUQsc0JBQXNCIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXHNyY1xcc2hhcmVkXFxsaWJcXHNlZ21lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWdtZW50IH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwU2VnbWVudChzZWdtZW50OiBzdHJpbmcpIHtcbiAgLy8gVXNlIGFycmF5WzBdIGZvciBwZXJmb3JtYW50IHB1cnBvc2VcbiAgcmV0dXJuIHNlZ21lbnRbMF0gPT09ICcoJyAmJiBzZWdtZW50LmVuZHNXaXRoKCcpJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYWxsZWxSb3V0ZVNlZ21lbnQoc2VnbWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBzZWdtZW50LnN0YXJ0c1dpdGgoJ0AnKSAmJiBzZWdtZW50ICE9PSAnQGNoaWxkcmVuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudChcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5cbikge1xuICBjb25zdCBpc1BhZ2VTZWdtZW50ID0gc2VnbWVudC5pbmNsdWRlcyhQQUdFX1NFR01FTlRfS0VZKVxuXG4gIGlmIChpc1BhZ2VTZWdtZW50KSB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWRRdWVyeSA9IEpTT04uc3RyaW5naWZ5KHNlYXJjaFBhcmFtcylcbiAgICByZXR1cm4gc3RyaW5naWZpZWRRdWVyeSAhPT0gJ3t9J1xuICAgICAgPyBQQUdFX1NFR01FTlRfS0VZICsgJz8nICsgc3RyaW5naWZpZWRRdWVyeVxuICAgICAgOiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuXG5leHBvcnQgY29uc3QgUEFHRV9TRUdNRU5UX0tFWSA9ICdfX1BBR0VfXydcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFR01FTlRfS0VZID0gJ19fREVGQVVMVF9fJ1xuIl0sIm5hbWVzIjpbIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJQQUdFX1NFR01FTlRfS0VZIiwiYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCIsImlzR3JvdXBTZWdtZW50IiwiaXNQYXJhbGxlbFJvdXRlU2VnbWVudCIsInNlZ21lbnQiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJzZWFyY2hQYXJhbXMiLCJpc1BhZ2VTZWdtZW50IiwiaW5jbHVkZXMiLCJzdHJpbmdpZmllZFF1ZXJ5IiwiSlNPTiIsInN0cmluZ2lmeSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/segment.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/utils/reflect-utils.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n describeHasCheckingStringProperty: function() {\n return describeHasCheckingStringProperty;\n },\n describeStringPropertyAccess: function() {\n return describeStringPropertyAccess;\n },\n wellKnownProperties: function() {\n return wellKnownProperties;\n }\n});\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nfunction describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return \"`\" + target + \".\" + prop + \"`\";\n }\n return \"`\" + target + \"[\" + JSON.stringify(prop) + \"]`\";\n}\nfunction describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return \"`Reflect.has(\" + target + \", \" + stringifiedProp + \")`, `\" + stringifiedProp + \" in \" + target + \"`, or similar\";\n}\nconst wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n // fallthrough\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n // fallthrough\n 'status',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n // fallthrough\n 'toJSON',\n '$$typeof',\n '__esModule'\n]); //# sourceMappingURL=reflect-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvcmVmbGVjdC11dGlscy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsaUZBQWlGO0FBQ2pGLDBGQUEwRjtBQUMxRix1RkFBdUY7QUFDdkYsMkRBQTJEOzs7Ozs7Ozs7Ozs7O0lBVTNDQSxpQ0FBaUM7ZUFBakNBOztJQVBBQyw0QkFBNEI7ZUFBNUJBOztJQWVIQyxtQkFBbUI7ZUFBbkJBOzs7QUFqQmIsTUFBTUMsK0JBQStCO0FBRTlCLFNBQVNGLDZCQUE2QkcsTUFBYyxFQUFFQyxJQUFZO0lBQ3ZFLElBQUlGLDZCQUE2QkcsSUFBSSxDQUFDRCxPQUFPO1FBQzNDLE9BQVEsTUFBSUQsU0FBTyxNQUFHQyxPQUFLO0lBQzdCO0lBQ0EsT0FBUSxNQUFJRCxTQUFPLE1BQUdHLEtBQUtDLFNBQVMsQ0FBQ0gsUUFBTTtBQUM3QztBQUVPLFNBQVNMLGtDQUNkSSxNQUFjLEVBQ2RDLElBQVk7SUFFWixNQUFNSSxrQkFBa0JGLEtBQUtDLFNBQVMsQ0FBQ0g7SUFDdkMsT0FBUSxrQkFBZ0JELFNBQU8sT0FBSUssa0JBQWdCLFVBQVNBLGtCQUFnQixTQUFNTCxTQUFPO0FBQzNGO0FBRU8sTUFBTUYsc0JBQXNCLElBQUlRLElBQUk7SUFDekM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBRUEsb0JBQW9CO0lBQ3BCLGNBQWM7SUFDZDtJQUNBO0lBQ0E7SUFFQSwwQkFBMEI7SUFDMUIsY0FBYztJQUNkO0lBRUEsc0JBQXNCO0lBQ3RCO0lBQ0E7SUFFQSwyQkFBMkI7SUFDM0IsY0FBYztJQUNkO0lBQ0E7SUFDQTtDQUNEIiwic291cmNlcyI6WyJEOlxcc3JjXFxzaGFyZWRcXGxpYlxcdXRpbHNcXHJlZmxlY3QtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyByZWdleCB3aWxsIGhhdmUgZmFzdCBuZWdhdGl2ZXMgbWVhbmluZyB2YWxpZCBpZGVudGlmaWVycyBtYXkgbm90IHBhc3Ncbi8vIHRoaXMgdGVzdC4gSG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgc3RhdGljIGdlbmVyYXRpb24gdG8gcHJvdmlkZSBoaW50c1xuLy8gYWJvdXQgd2h5IGEgcGFnZSBiYWlsZWQgb3V0IG9mIHNvbWUgb3IgYWxsIHByZXJlbmRlcmluZyBhbmQgd2UgY2FuIHVzZSBicmFja2V0IG5vdGF0aW9uXG4vLyBmb3IgZXhhbXBsZSB3aGlsZSBg4LKgX+CyoGAgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGl0J3Mgb2sgdG8gcHJpbnQgYHNlYXJjaFBhcmFtc1sn4LKgX+CyoCddYFxuLy8gZXZlbiBpZiB0aGlzIHdvdWxkIGhhdmUgYmVlbiBmaW5lIHRvbyBgc2VhcmNoUGFyYW1zLuCyoF/gsqBgXG5jb25zdCBpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyID0gL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IHN0cmluZywgcHJvcDogc3RyaW5nKSB7XG4gIGlmIChpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyLnRlc3QocHJvcCkpIHtcbiAgICByZXR1cm4gYFxcYCR7dGFyZ2V0fS4ke3Byb3B9XFxgYFxuICB9XG4gIHJldHVybiBgXFxgJHt0YXJnZXR9WyR7SlNPTi5zdHJpbmdpZnkocHJvcCl9XVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlSGFzQ2hlY2tpbmdTdHJpbmdQcm9wZXJ0eShcbiAgdGFyZ2V0OiBzdHJpbmcsXG4gIHByb3A6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0cmluZ2lmaWVkUHJvcCA9IEpTT04uc3RyaW5naWZ5KHByb3ApXG4gIHJldHVybiBgXFxgUmVmbGVjdC5oYXMoJHt0YXJnZXR9LCAke3N0cmluZ2lmaWVkUHJvcH0pXFxgLCBcXGAke3N0cmluZ2lmaWVkUHJvcH0gaW4gJHt0YXJnZXR9XFxgLCBvciBzaW1pbGFyYFxufVxuXG5leHBvcnQgY29uc3Qgd2VsbEtub3duUHJvcGVydGllcyA9IG5ldyBTZXQoW1xuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcblxuICAvLyBQcm9taXNlIHByb3RvdHlwZVxuICAvLyBmYWxsdGhyb3VnaFxuICAndGhlbicsXG4gICdjYXRjaCcsXG4gICdmaW5hbGx5JyxcblxuICAvLyBSZWFjdCBQcm9taXNlIGV4dGVuc2lvblxuICAvLyBmYWxsdGhyb3VnaFxuICAnc3RhdHVzJyxcblxuICAvLyBSZWFjdCBpbnRyb3NwZWN0aW9uXG4gICdkaXNwbGF5TmFtZScsXG4gICdfZGVidWdJbmZvJyxcblxuICAvLyBDb21tb24gdGVzdGVkIHByb3BlcnRpZXNcbiAgLy8gZmFsbHRocm91Z2hcbiAgJ3RvSlNPTicsXG4gICckJHR5cGVvZicsXG4gICdfX2VzTW9kdWxlJyxcbl0pXG4iXSwibmFtZXMiOlsiZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5IiwiZGVzY3JpYmVTdHJpbmdQcm9wZXJ0eUFjY2VzcyIsIndlbGxLbm93blByb3BlcnRpZXMiLCJpc0RlZmluaXRlbHlBVmFsaWRJZGVudGlmaWVyIiwidGFyZ2V0IiwicHJvcCIsInRlc3QiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RyaW5naWZpZWRQcm9wIiwiU2V0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils/reflect-utils.js\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/shared/lib/utils/warn-once.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"warnOnce\", ({\n enumerable: true,\n get: function() {\n return warnOnce;\n }\n}));\nlet warnOnce = (_)=>{};\nif (true) {\n const warnings = new Set();\n warnOnce = (msg)=>{\n if (!warnings.has(msg)) {\n console.warn(msg);\n }\n warnings.add(msg);\n };\n} //# sourceMappingURL=warn-once.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvdXRpbHMvd2Fybi1vbmNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NENBV1NBOzs7ZUFBQUE7OztBQVhULElBQUlBLFdBQVcsQ0FBQ0MsS0FBZTtBQUMvQixJQUFJQyxJQUFvQixFQUFtQjtJQUN6QyxNQUFNRyxXQUFXLElBQUlDO0lBQ3JCTixXQUFXLENBQUNPO1FBQ1YsSUFBSSxDQUFDRixTQUFTRyxHQUFHLENBQUNELE1BQU07WUFDdEJFLFFBQVFDLElBQUksQ0FBQ0g7UUFDZjtRQUNBRixTQUFTTSxHQUFHLENBQUNKO0lBQ2Y7QUFDRiIsInNvdXJjZXMiOlsiRDpcXHNyY1xcc2hhcmVkXFxsaWJcXHV0aWxzXFx3YXJuLW9uY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IHdhcm5PbmNlID0gKF86IHN0cmluZykgPT4ge31cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHdhcm5pbmdzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgd2Fybk9uY2UgPSAobXNnOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIXdhcm5pbmdzLmhhcyhtc2cpKSB7XG4gICAgICBjb25zb2xlLndhcm4obXNnKVxuICAgIH1cbiAgICB3YXJuaW5ncy5hZGQobXNnKVxuICB9XG59XG5cbmV4cG9ydCB7IHdhcm5PbmNlIH1cbiJdLCJuYW1lcyI6WyJ3YXJuT25jZSIsIl8iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ3YXJuaW5ncyIsIlNldCIsIm1zZyIsImhhcyIsImNvbnNvbGUiLCJ3YXJuIiwiYWRkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/shared/lib/utils/warn-once.js\n"); /***/ }) }; ;