You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1443 lines
2.8 MiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// runtime can't be in strict mode because a global variable is assign and maybe created.
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/api/config/route"],{
/***/ "node:async_hooks":
/*!***********************************!*\
!*** external "node:async_hooks" ***!
\***********************************/
/***/ ((module) => {
"use strict";
module.exports = require("node:async_hooks");
/***/ }),
/***/ "buffer":
/*!******************************!*\
!*** external "node:buffer" ***!
\******************************/
/***/ ((module) => {
"use strict";
module.exports = require("node:buffer");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fconfig%2Froute&page=%2Fapi%2Fconfig%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fconfig%2Froute.ts&appDir=D%3A%5CNextChatCD%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CNextChatCD&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!./app/api/config/route.ts?__next_edge_ssr_entry__":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fconfig%2Froute&page=%2Fapi%2Fconfig%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fconfig%2Froute.ts&appDir=D%3A%5CNextChatCD%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CNextChatCD&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!./app/api/config/route.ts?__next_edge_ssr_entry__ ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ headerHooks: () => (/* binding */ headerHooks),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage),\n/* harmony export */ staticGenerationBailout: () => (/* binding */ staticGenerationBailout)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-kind.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/esm/server/lib/patch-fetch.js\");\n/* harmony import */ var D_NextChatCD_app_api_config_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/config/route.ts */ \"(rsc)/./app/api/config/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"standalone\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/config/route\",\n pathname: \"/api/config\",\n filename: \"route\",\n bundlePath: \"app/api/config/route\"\n },\n resolvedPagePath: \"D:\\\\NextChatCD\\\\app\\\\api\\\\config\\\\route.ts\",\n nextConfigOutput,\n userland: D_NextChatCD_app_api_config_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks, headerHooks, staticGenerationBailout } = routeModule;\nconst originalPathname = \"/api/config/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZjb25maWclMkZyb3V0ZSZwYWdlPSUyRmFwaSUyRmNvbmZpZyUyRnJvdXRlJmFwcFBhdGhzPSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRmFwaSUyRmNvbmZpZyUyRnJvdXRlLnRzJmFwcERpcj1EJTNBJTVDTmV4dENoYXRDRCU1Q2FwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9RCUzQSU1Q05leHRDaGF0Q0QmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9c3RhbmRhbG9uZSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEIS4vYXBwL2FwaS9jb25maWcvcm91dGUudHM/X19uZXh0X2VkZ2Vfc3NyX2VudHJ5X18iLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXNHO0FBQ3ZDO0FBQ2M7QUFDTjtBQUN2RTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQW1CO0FBQzNDO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVHQUF1RztBQUMvRztBQUNBO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQzZKOztBQUU3SiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvYXBpL2NvbmZpZy9yb3V0ZS50cz8xNzk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFJvdXRlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuaW1wb3J0IHsgcGF0Y2hGZXRjaCBhcyBfcGF0Y2hGZXRjaCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9wYXRjaC1mZXRjaFwiO1xuaW1wb3J0ICogYXMgdXNlcmxhbmQgZnJvbSBcIkQ6XFxcXE5leHRDaGF0Q0RcXFxcYXBwXFxcXGFwaVxcXFxjb25maWdcXFxccm91dGUudHNcIjtcbi8vIFdlIGluamVjdCB0aGUgbmV4dENvbmZpZ091dHB1dCBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgbmV4dENvbmZpZ091dHB1dCA9IFwic3RhbmRhbG9uZVwiXG5jb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBSb3V0ZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUk9VVEUsXG4gICAgICAgIHBhZ2U6IFwiL2FwaS9jb25maWcvcm91dGVcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL2FwaS9jb25maWdcIixcbiAgICAgICAgZmlsZW5hbWU6IFwicm91dGVcIixcbiAgICAgICAgYnVuZGxlUGF0aDogXCJhcHAvYXBpL2NvbmZpZy9yb3V0ZVwiXG4gICAgfSxcbiAgICByZXNvbHZlZFBhZ2VQYXRoOiBcIkQ6XFxcXE5leHRDaGF0Q0RcXFxcYXBwXFxcXGFwaVxcXFxjb25maWdcXFxccm91dGUudHNcIixcbiAgICBuZXh0Q29uZmlnT3V0cHV0LFxuICAgIHVzZXJsYW5kXG59KTtcbi8vIFB1bGwgb3V0IHRoZSBleHBvcnRzIHRoYXQgd2UgbmVlZCB0byBleHBvc2UgZnJvbSB0aGUgbW9kdWxlLiBUaGlzIHNob3VsZFxuLy8gYmUgZWxpbWluYXRlZCB3aGVuIHdlJ3ZlIG1vdmVkIHRoZSBvdGhlciByb3V0ZXMgdG8gdGhlIG5ldyBmb3JtYXQuIFRoZXNlXG4vLyBhcmUgdXNlZCB0byBob29rIGludG8gdGhlIHJvdXRlLlxuY29uc3QgeyByZXF1ZXN0QXN5bmNTdG9yYWdlLCBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcywgaGVhZGVySG9va3MsIHN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IH0gPSByb3V0ZU1vZHVsZTtcbmNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9hcGkvY29uZmlnL3JvdXRlXCI7XG5mdW5jdGlvbiBwYXRjaEZldGNoKCkge1xuICAgIHJldHVybiBfcGF0Y2hGZXRjaCh7XG4gICAgICAgIHNlcnZlckhvb2tzLFxuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlXG4gICAgfSk7XG59XG5leHBvcnQgeyByb3V0ZU1vZHVsZSwgcmVxdWVzdEFzeW5jU3RvcmFnZSwgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSwgc2VydmVySG9va3MsIGhlYWRlckhvb2tzLCBzdGF0aWNHZW5lcmF0aW9uQmFpbG91dCwgb3JpZ2luYWxQYXRobmFtZSwgcGF0Y2hGZXRjaCwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fconfig%2Froute&page=%2Fapi%2Fconfig%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fconfig%2Froute.ts&appDir=D%3A%5CNextChatCD%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CNextChatCD&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!./app/api/config/route.ts?__next_edge_ssr_entry__\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=D%3A%5CNextChatCD%5Capp%5Capi%5Cconfig%5Croute.ts&page=%2Fapi%2Fconfig%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBpJTJGY29uZmlnJTJGcm91dGUmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZjb25maWclMkZyb3V0ZS50cyZhcHBEaXI9RCUzQSU1Q05leHRDaGF0Q0QlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNOZXh0Q2hhdENEJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PXN0YW5kYWxvbmUmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=D%3A%5CNextChatCD%5Capp%5Capi%5Cconfig%5Croute.ts&page=%2Fapi%2Fconfig%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBpJTJGY29uZmlnJTJGcm91dGUmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZjb25maWclMkZyb3V0ZS50cyZhcHBEaXI9RCUzQSU1Q05leHRDaGF0Q0QlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNOZXh0Q2hhdENEJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PXN0YW5kYWxvbmUmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D! ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ComponentMod: () => (/* binding */ ComponentMod),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_web_edge_route_module_wrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/web/edge-route-module-wrapper */ \"(rsc)/./node_modules/next/dist/esm/server/web/edge-route-module-wrapper.js\");\n/* harmony import */ var next_app_loader_name_app_2Fapi_2Fconfig_2Froute_page_2Fapi_2Fconfig_2Froute_appPaths_pagePath_private_next_app_dir_2Fapi_2Fconfig_2Froute_ts_appDir_D_3A_5CNextChatCD_5Capp_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_rootDir_D_3A_5CNextChatCD_isDev_true_tsconfigPath_tsconfig_json_basePath_assetPrefix_nextConfigOutput_standalone_preferredRegion_middlewareConfig_e30_3D_app_api_config_route_ts_next_edge_ssr_entry___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next-app-loader?name=app%2Fapi%2Fconfig%2Froute&page=%2Fapi%2Fconfig%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fconfig%2Froute.ts&appDir=D%3A%5CNextChatCD%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CNextChatCD&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!./app/api/config/route.ts?__next_edge_ssr_entry__ */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fconfig%2Froute&page=%2Fapi%2Fconfig%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fconfig%2Froute.ts&appDir=D%3A%5CNextChatCD%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CNextChatCD&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!./app/api/config/route.ts?__next_edge_ssr_entry__\");\n\n// Import the userland code.\n\nconst ComponentMod = next_app_loader_name_app_2Fapi_2Fconfig_2Froute_page_2Fapi_2Fconfig_2Froute_appPaths_pagePath_private_next_app_dir_2Fapi_2Fconfig_2Froute_ts_appDir_D_3A_5CNextChatCD_5Capp_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_rootDir_D_3A_5CNextChatCD_isDev_true_tsconfigPath_tsconfig_json_basePath_assetPrefix_nextConfigOutput_standalone_preferredRegion_middlewareConfig_e30_3D_app_api_config_route_ts_next_edge_ssr_entry___WEBPACK_IMPORTED_MODULE_1__;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (next_dist_server_web_edge_route_module_wrapper__WEBPACK_IMPORTED_MODULE_0__.EdgeRouteModuleWrapper.wrap(next_app_loader_name_app_2Fapi_2Fconfig_2Froute_page_2Fapi_2Fconfig_2Froute_appPaths_pagePath_private_next_app_dir_2Fapi_2Fconfig_2Froute_ts_appDir_D_3A_5CNextChatCD_5Capp_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_rootDir_D_3A_5CNextChatCD_isDev_true_tsconfigPath_tsconfig_json_basePath_assetPrefix_nextConfigOutput_standalone_preferredRegion_middlewareConfig_e30_3D_app_api_config_route_ts_next_edge_ssr_entry___WEBPACK_IMPORTED_MODULE_1__.routeModule));\n\n//# sourceMappingURL=edge-app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWVkZ2UtYXBwLXJvdXRlLWxvYWRlci9pbmRleC5qcz9hYnNvbHV0ZVBhZ2VQYXRoPUQlM0ElNUNOZXh0Q2hhdENEJTVDYXBwJTVDYXBpJTVDY29uZmlnJTVDcm91dGUudHMmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBEaXJMb2FkZXI9Ym1WNGRDMWhjSEF0Ykc5aFpHVnlQMjVoYldVOVlYQndKVEpHWVhCcEpUSkdZMjl1Wm1sbkpUSkdjbTkxZEdVbWNHRm5aVDBsTWtaaGNHa2xNa1pqYjI1bWFXY2xNa1p5YjNWMFpTWmhjSEJRWVhSb2N6MG1jR0ZuWlZCaGRHZzljSEpwZG1GMFpTMXVaWGgwTFdGd2NDMWthWElsTWtaaGNHa2xNa1pqYjI1bWFXY2xNa1p5YjNWMFpTNTBjeVpoY0hCRWFYSTlSQ1V6UVNVMVEwNWxlSFJEYUdGMFEwUWxOVU5oY0hBbWNHRm5aVVY0ZEdWdWMybHZibk05ZEhONEpuQmhaMlZGZUhSbGJuTnBiMjV6UFhSekpuQmhaMlZGZUhSbGJuTnBiMjV6UFdwemVDWndZV2RsUlhoMFpXNXphVzl1Y3oxcWN5WnliMjkwUkdseVBVUWxNMEVsTlVOT1pYaDBRMmhoZEVORUptbHpSR1YyUFhSeWRXVW1kSE5qYjI1bWFXZFFZWFJvUFhSelkyOXVabWxuTG1wemIyNG1ZbUZ6WlZCaGRHZzlKbUZ6YzJWMFVISmxabWw0UFNadVpYaDBRMjl1Wm1sblQzVjBjSFYwUFhOMFlXNWtZV3h2Ym1VbWNISmxabVZ5Y21Wa1VtVm5hVzl1UFNadGFXUmtiR1YzWVhKbFEyOXVabWxuUFdVek1DVXpSQ0UlM0QmbmV4dENvbmZpZ091dHB1dD1zdGFuZGFsb25lJnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBd0Y7QUFDeEY7QUFDZ2U7QUFDemQscUJBQXFCLHdkQUFNO0FBQ2xDLGlFQUFlLGtHQUFzQixNQUFNLG9lQUFrQixDQUFDLEVBQUM7O0FBRS9EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8/NDdlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGdlUm91dGVNb2R1bGVXcmFwcGVyIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvd2ViL2VkZ2Utcm91dGUtbW9kdWxlLXdyYXBwZXJcIjtcbi8vIEltcG9ydCB0aGUgdXNlcmxhbmQgY29kZS5cbmltcG9ydCAqIGFzIG1vZHVsZSBmcm9tIFwibmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBpJTJGY29uZmlnJTJGcm91dGUmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZjb25maWclMkZyb3V0ZS50cyZhcHBEaXI9RCUzQSU1Q05leHRDaGF0Q0QlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNOZXh0Q2hhdENEJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PXN0YW5kYWxvbmUmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEuL2FwcC9hcGkvY29uZmlnL3JvdXRlLnRzP19fbmV4dF9lZGdlX3Nzcl9lbnRyeV9fXCI7XG5leHBvcnQgY29uc3QgQ29tcG9uZW50TW9kID0gbW9kdWxlO1xuZXhwb3J0IGRlZmF1bHQgRWRnZVJvdXRlTW9kdWxlV3JhcHBlci53cmFwKG1vZHVsZS5yb3V0ZU1vZHVsZSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVkZ2UtYXBwLXJvdXRlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=D%3A%5CNextChatCD%5Capp%5Capi%5Cconfig%5Croute.ts&page=%2Fapi%2Fconfig%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBpJTJGY29uZmlnJTJGcm91dGUmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZjb25maWclMkZyb3V0ZS50cyZhcHBEaXI9RCUzQSU1Q05leHRDaGF0Q0QlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNOZXh0Q2hhdENEJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PXN0YW5kYWxvbmUmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!\n");
/***/ }),
/***/ "(rsc)/./app/api/config/route.ts":
/*!*********************************!*\
!*** ./app/api/config/route.ts ***!
\*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GET: () => (/* binding */ GET),\n/* harmony export */ POST: () => (/* binding */ POST),\n/* harmony export */ runtime: () => (/* binding */ runtime)\n/* harmony export */ });\n/* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/server */ \"(rsc)/./node_modules/next/dist/esm/api/server.js\");\n/* harmony import */ var _config_server__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config/server */ \"(rsc)/./app/config/server.ts\");\n\n\nconst serverConfig = (0,_config_server__WEBPACK_IMPORTED_MODULE_1__.getServerSideConfig)();\n// Danger! Do not hard code any secret value here!\n// 警告!不要在这里写入任何敏感信息!\nconst DANGER_CONFIG = {\n needCode: serverConfig.needCode,\n hideUserApiKey: serverConfig.hideUserApiKey,\n disableGPT4: serverConfig.disableGPT4,\n hideBalanceQuery: serverConfig.hideBalanceQuery,\n disableFastLink: serverConfig.disableFastLink,\n customModels: serverConfig.customModels,\n defaultModel: serverConfig.defaultModel,\n visionModels: serverConfig.visionModels\n};\nasync function handle() {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json(DANGER_CONFIG);\n}\nconst GET = handle;\nconst POST = handle;\nconst runtime = \"edge\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvYXBpL2NvbmZpZy9yb3V0ZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUEyQztBQUVlO0FBRTFELE1BQU1FLGVBQWVELG1FQUFtQkE7QUFFeEMsa0RBQWtEO0FBQ2xELG9CQUFvQjtBQUNwQixNQUFNRSxnQkFBZ0I7SUFDcEJDLFVBQVVGLGFBQWFFLFFBQVE7SUFDL0JDLGdCQUFnQkgsYUFBYUcsY0FBYztJQUMzQ0MsYUFBYUosYUFBYUksV0FBVztJQUNyQ0Msa0JBQWtCTCxhQUFhSyxnQkFBZ0I7SUFDL0NDLGlCQUFpQk4sYUFBYU0sZUFBZTtJQUM3Q0MsY0FBY1AsYUFBYU8sWUFBWTtJQUN2Q0MsY0FBY1IsYUFBYVEsWUFBWTtJQUN2Q0MsY0FBY1QsYUFBYVMsWUFBWTtBQUN6QztBQU1BLGVBQWVDO0lBQ2IsT0FBT1oscURBQVlBLENBQUNhLElBQUksQ0FBQ1Y7QUFDM0I7QUFFTyxNQUFNVyxNQUFNRixPQUFPO0FBQ25CLE1BQU1HLE9BQU9ILE9BQU87QUFFcEIsTUFBTUksVUFBVSxPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9hcGkvY29uZmlnL3JvdXRlLnRzPzY1ZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV4dFJlc3BvbnNlIH0gZnJvbSBcIm5leHQvc2VydmVyXCI7XHJcblxyXG5pbXBvcnQgeyBnZXRTZXJ2ZXJTaWRlQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9zZXJ2ZXJcIjtcclxuXHJcbmNvbnN0IHNlcnZlckNvbmZpZyA9IGdldFNlcnZlclNpZGVDb25maWcoKTtcclxuXHJcbi8vIERhbmdlciEgRG8gbm90IGhhcmQgY29kZSBhbnkgc2VjcmV0IHZhbHVlIGhlcmUhXHJcbi8vIOitpuWRiu+8geS4jeimgeWcqOi/memHjOWGmeWFpeS7u+S9leaVj+aEn+S/oeaBr++8gVxyXG5jb25zdCBEQU5HRVJfQ09ORklHID0ge1xyXG4gIG5lZWRDb2RlOiBzZXJ2ZXJDb25maWcubmVlZENvZGUsXHJcbiAgaGlkZVVzZXJBcGlLZXk6IHNlcnZlckNvbmZpZy5oaWRlVXNlckFwaUtleSxcclxuICBkaXNhYmxlR1BUNDogc2VydmVyQ29uZmlnLmRpc2FibGVHUFQ0LFxyXG4gIGhpZGVCYWxhbmNlUXVlcnk6IHNlcnZlckNvbmZpZy5oaWRlQmFsYW5jZVF1ZXJ5LFxyXG4gIGRpc2FibGVGYXN0TGluazogc2VydmVyQ29uZmlnLmRpc2FibGVGYXN0TGluayxcclxuICBjdXN0b21Nb2RlbHM6IHNlcnZlckNvbmZpZy5jdXN0b21Nb2RlbHMsXHJcbiAgZGVmYXVsdE1vZGVsOiBzZXJ2ZXJDb25maWcuZGVmYXVsdE1vZGVsLFxyXG4gIHZpc2lvbk1vZGVsczogc2VydmVyQ29uZmlnLnZpc2lvbk1vZGVscyxcclxufTtcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICB0eXBlIERhbmdlckNvbmZpZyA9IHR5cGVvZiBEQU5HRVJfQ09ORklHO1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBoYW5kbGUoKSB7XHJcbiAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKERBTkdFUl9DT05GSUcpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0VUID0gaGFuZGxlO1xyXG5leHBvcnQgY29uc3QgUE9TVCA9IGhhbmRsZTtcclxuXHJcbmV4cG9ydCBjb25zdCBydW50aW1lID0gXCJlZGdlXCI7XHJcbiJdLCJuYW1lcyI6WyJOZXh0UmVzcG9uc2UiLCJnZXRTZXJ2ZXJTaWRlQ29uZmlnIiwic2VydmVyQ29uZmlnIiwiREFOR0VSX0NPTkZJRyIsIm5lZWRDb2RlIiwiaGlkZVVzZXJBcGlLZXkiLCJkaXNhYmxlR1BUNCIsImhpZGVCYWxhbmNlUXVlcnkiLCJkaXNhYmxlRmFzdExpbmsiLCJjdXN0b21Nb2RlbHMiLCJkZWZhdWx0TW9kZWwiLCJ2aXNpb25Nb2RlbHMiLCJoYW5kbGUiLCJqc29uIiwiR0VUIiwiUE9TVCIsInJ1bnRpbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/api/config/route.ts\n");
/***/ }),
/***/ "(rsc)/./app/config/server.ts":
/*!******************************!*\
!*** ./app/config/server.ts ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getServerSideConfig: () => (/* binding */ getServerSideConfig)\n/* harmony export */ });\n/* harmony import */ var spark_md5__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! spark-md5 */ \"(rsc)/./node_modules/spark-md5/spark-md5.js\");\n/* harmony import */ var spark_md5__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(spark_md5__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant */ \"(rsc)/./app/constant.ts\");\n/* harmony import */ var _utils_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/model */ \"(rsc)/./app/utils/model.ts\");\n\n\n\nconst ACCESS_CODES = function getAccessCodes() {\n const code = process.env.CODE;\n try {\n const codes = (code?.split(\",\") ?? []).filter((v)=>!!v).map((v)=>spark_md5__WEBPACK_IMPORTED_MODULE_0___default().hash(v.trim()));\n return new Set(codes);\n } catch (e) {\n return new Set();\n }\n}();\nfunction getApiKey(keys) {\n const apiKeyEnvVar = keys ?? \"\";\n const apiKeys = apiKeyEnvVar.split(\",\").map((v)=>v.trim());\n const randomIndex = Math.floor(Math.random() * apiKeys.length);\n const apiKey = apiKeys[randomIndex];\n if (apiKey) {\n console.log(`[Server Config] using ${randomIndex + 1} of ${apiKeys.length} api key - ${apiKey}`);\n }\n return apiKey;\n}\nconst getServerSideConfig = ()=>{\n if (typeof process === \"undefined\") {\n throw Error(\"[Server Config] you are importing a nodejs-only module outside of nodejs\");\n }\n const disableGPT4 = !!process.env.DISABLE_GPT4;\n let customModels = process.env.CUSTOM_MODELS ?? \"\";\n let defaultModel = process.env.DEFAULT_MODEL ?? \"\";\n let visionModels = process.env.VISION_MODELS ?? \"\";\n if (disableGPT4) {\n if (customModels) customModels += \",\";\n customModels += _constant__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_MODELS.filter((m)=>(0,_utils_model__WEBPACK_IMPORTED_MODULE_2__.isGPT4Model)(m.name)).map((m)=>\"-\" + m.name).join(\",\");\n if (defaultModel && (0,_utils_model__WEBPACK_IMPORTED_MODULE_2__.isGPT4Model)(defaultModel)) {\n defaultModel = \"\";\n }\n }\n const isStability = !!process.env.STABILITY_API_KEY;\n const isAzure = !!process.env.AZURE_URL;\n const isGoogle = !!process.env.GOOGLE_API_KEY;\n const isAnthropic = !!process.env.ANTHROPIC_API_KEY;\n const isTencent = !!process.env.TENCENT_API_KEY;\n const isBaidu = !!process.env.BAIDU_API_KEY;\n const isBytedance = !!process.env.BYTEDANCE_API_KEY;\n const isAlibaba = !!process.env.ALIBABA_API_KEY;\n const isMoonshot = !!process.env.MOONSHOT_API_KEY;\n const isIflytek = !!process.env.IFLYTEK_API_KEY;\n const isDeepSeek = !!process.env.DEEPSEEK_API_KEY;\n const isXAI = !!process.env.XAI_API_KEY;\n const isChatGLM = !!process.env.CHATGLM_API_KEY;\n const isSiliconFlow = !!process.env.SILICONFLOW_API_KEY;\n // const apiKeyEnvVar = process.env.OPENAI_API_KEY ?? \"\";\n // const apiKeys = apiKeyEnvVar.split(\",\").map((v) => v.trim());\n // const randomIndex = Math.floor(Math.random() * apiKeys.length);\n // const apiKey = apiKeys[randomIndex];\n // console.log(\n // `[Server Config] using ${randomIndex + 1} of ${apiKeys.length} api key`,\n // );\n const allowedWebDavEndpoints = (process.env.WHITE_WEBDAV_ENDPOINTS ?? \"\").split(\",\");\n return {\n baseUrl: process.env.BASE_URL,\n apiKey: getApiKey(process.env.OPENAI_API_KEY),\n openaiOrgId: process.env.OPENAI_ORG_ID,\n isStability,\n stabilityUrl: process.env.STABILITY_URL,\n stabilityApiKey: getApiKey(process.env.STABILITY_API_KEY),\n isAzure,\n azureUrl: process.env.AZURE_URL,\n azureApiKey: getApiKey(process.env.AZURE_API_KEY),\n azureApiVersion: process.env.AZURE_API_VERSION,\n isGoogle,\n googleApiKey: getApiKey(process.env.GOOGLE_API_KEY),\n googleUrl: process.env.GOOGLE_URL,\n isAnthropic,\n anthropicApiKey: getApiKey(process.env.ANTHROPIC_API_KEY),\n anthropicApiVersion: process.env.ANTHROPIC_API_VERSION,\n anthropicUrl: process.env.ANTHROPIC_URL,\n isBaidu,\n baiduUrl: process.env.BAIDU_URL,\n baiduApiKey: getApiKey(process.env.BAIDU_API_KEY),\n baiduSecretKey: process.env.BAIDU_SECRET_KEY,\n isBytedance,\n bytedanceApiKey: getApiKey(process.env.BYTEDANCE_API_KEY),\n bytedanceUrl: process.env.BYTEDANCE_URL,\n isAlibaba,\n alibabaUrl: process.env.ALIBABA_URL,\n alibabaApiKey: getApiKey(process.env.ALIBABA_API_KEY),\n isTencent,\n tencentUrl: process.env.TENCENT_URL,\n tencentSecretKey: getApiKey(process.env.TENCENT_SECRET_KEY),\n tencentSecretId: process.env.TENCENT_SECRET_ID,\n isMoonshot,\n moonshotUrl: process.env.MOONSHOT_URL,\n moonshotApiKey: getApiKey(process.env.MOONSHOT_API_KEY),\n isIflytek,\n iflytekUrl: process.env.IFLYTEK_URL,\n iflytekApiKey: process.env.IFLYTEK_API_KEY,\n iflytekApiSecret: process.env.IFLYTEK_API_SECRET,\n isDeepSeek,\n deepseekUrl: process.env.DEEPSEEK_URL,\n deepseekApiKey: getApiKey(process.env.DEEPSEEK_API_KEY),\n isXAI,\n xaiUrl: process.env.XAI_URL,\n xaiApiKey: getApiKey(process.env.XAI_API_KEY),\n isChatGLM,\n chatglmUrl: process.env.CHATGLM_URL,\n chatglmApiKey: getApiKey(process.env.CHATGLM_API_KEY),\n cloudflareAccountId: process.env.CLOUDFLARE_ACCOUNT_ID,\n cloudflareKVNamespaceId: process.env.CLOUDFLARE_KV_NAMESPACE_ID,\n cloudflareKVApiKey: getApiKey(process.env.CLOUDFLARE_KV_API_KEY),\n cloudflareKVTTL: process.env.CLOUDFLARE_KV_TTL,\n isSiliconFlow,\n siliconFlowUrl: process.env.SILICONFLOW_URL,\n siliconFlowApiKey: getApiKey(process.env.SILICONFLOW_API_KEY),\n gtmId: process.env.GTM_ID,\n gaId: process.env.GA_ID || _constant__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_GA_ID,\n needCode: ACCESS_CODES.size > 0,\n code: process.env.CODE,\n codes: ACCESS_CODES,\n proxyUrl: process.env.PROXY_URL,\n isVercel: !!process.env.VERCEL,\n hideUserApiKey: !!process.env.HIDE_USER_API_KEY,\n disableGPT4,\n hideBalanceQuery: !process.env.ENABLE_BALANCE_QUERY,\n disableFastLink: !!process.env.DISABLE_FAST_LINK,\n customModels,\n defaultModel,\n visionModels,\n allowedWebDavEndpoints,\n enableMcp: process.env.ENABLE_MCP === \"true\"\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFVWixRQUFRQyxHQUFHLENBQUM2RCxlQUFlO1FBRXBENEQscUJBQXFCMUgsUUFBUUMsR0FBRyxDQUFDMEgscUJBQXFCO1FBQ3REQyx5QkFBeUI1SCxRQUFRQyxHQUFHLENBQUM0SCwwQkFBMEI7UUFDL0RDLG9CQUFvQmxILFVBQVVaLFFBQVFDLEdBQUcsQ0FBQzhILHFCQUFxQjtRQUMvREMsaUJBQWlCaEksUUFBUUMsR0FBRyxDQUFDZ0ksaUJBQWlCO1FBRTlDbEU7UUFDQW1FLGdCQUFnQmxJLFFBQVFDLEdBQUcsQ0FBQ2tJLGVBQWU7UUFDM0NDLG1CQUFtQnhILFVBQVVaLFFBQVFDLEdBQUcsQ0FBQytELG1CQUFtQjtRQUU1RHFFLE9BQU9ySSxRQUFRQyxHQUFHLENBQUNxSSxNQUFNO1FBQ3pCQyxNQUFNdkksUUFBUUMsR0FBRyxDQUFDdUksS0FBSyxJQUFJN0ksb0RBQWFBO1FBRXhDOEksVUFBVTVJLGFBQWE2SSxJQUFJLEdBQUc7UUFDOUIzSSxNQUFNQyxRQUFRQyxHQUFHLENBQUNDLElBQUk7UUFDdEJDLE9BQU9OO1FBRVA4SSxVQUFVM0ksUUFBUUMsR0FBRyxDQUFDMkksU0FBUztRQUMvQkMsVUFBVSxDQUFDLENBQUM3SSxRQUFRQyxHQUFHLENBQUM2SSxNQUFNO1FBRTlCQyxnQkFBZ0IsQ0FBQyxDQUFDL0ksUUFBUUMsR0FBRyxDQUFDK0ksaUJBQWlCO1FBQy9DdEg7UUFDQXVILGtCQUFrQixDQUFDakosUUFBUUMsR0FBRyxDQUFDaUosb0JBQW9CO1FBQ25EQyxpQkFBaUIsQ0FBQyxDQUFDbkosUUFBUUMsR0FBRyxDQUFDbUosaUJBQWlCO1FBQ2hEeEg7UUFDQUU7UUFDQUU7UUFDQWlDO1FBQ0FvRixXQUFXckosUUFBUUMsR0FBRyxDQUFDcUosVUFBVSxLQUFLO0lBQ3hDO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvY29uZmlnL3NlcnZlci50cz9hZDRmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZDUgZnJvbSBcInNwYXJrLW1kNVwiO1xyXG5pbXBvcnQgeyBERUZBVUxUX01PREVMUywgREVGQVVMVF9HQV9JRCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBpc0dQVDRNb2RlbCB9IGZyb20gXCIuLi91dGlscy9tb2RlbFwiO1xyXG5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIG5hbWVzcGFjZSBOb2RlSlMge1xyXG4gICAgaW50ZXJmYWNlIFByb2Nlc3NFbnYge1xyXG4gICAgICBQUk9YWV9VUkw/OiBzdHJpbmc7IC8vIGRvY2tlciBvbmx5XHJcblxyXG4gICAgICBPUEVOQUlfQVBJX0tFWT86IHN0cmluZztcclxuICAgICAgQ09ERT86IHN0cmluZztcclxuXHJcbiAgICAgIEJBU0VfVVJMPzogc3RyaW5nO1xyXG4gICAgICBPUEVOQUlfT1JHX0lEPzogc3RyaW5nOyAvLyBvcGVuYWkgb25seVxyXG5cclxuICAgICAgVkVSQ0VMPzogc3RyaW5nO1xyXG4gICAgICBCVUlMRF9NT0RFPzogXCJzdGFuZGFsb25lXCIgfCBcImV4cG9ydFwiO1xyXG4gICAgICBCVUlMRF9BUFA/OiBzdHJpbmc7IC8vIGlzIGJ1aWxkaW5nIGRlc2t0b3AgYXBwXHJcblxyXG4gICAgICBISURFX1VTRVJfQVBJX0tFWT86IHN0cmluZzsgLy8gZGlzYWJsZSB1c2VyJ3MgYXBpIGtleSBpbnB1dFxyXG4gICAgICBESVNBQkxFX0dQVDQ/OiBzdHJpbmc7IC8vIGFsbG93IHVzZXIgdG8gdXNlIGdwdC00IG9yIG5vdFxyXG4gICAgICBFTkFCTEVfQkFMQU5DRV9RVUVSWT86IHN0cmluZzsgLy8gYWxsb3cgdXNlciB0byBxdWVyeSBiYWxhbmNlIG9yIG5vdFxyXG4gICAgICBESVNBQkxFX0ZBU1RfTElOSz86IHN0cmluZzsgLy8gZGlzYWxsb3cgcGFyc2Ugc2V0dGluZ3MgZnJvbSB1cmwgb3Igbm90XHJcbiAgICAgIENVU1RPTV9NT0RFTFM/OiBzdHJpbmc7IC8vIHRvIGNvbnRyb2wgY3VzdG9tIG1vZGVsc1xyXG4gICAgICBERUZBVUxUX01PREVMPzogc3RyaW5nOyAvLyB0byBjb250cm9sIGRlZmF1bHQgbW9kZWwgaW4gZXZlcnkgbmV3IGNoYXQgd2luZG93XHJcbiAgICAgIFZJU0lPTl9NT0RFTFM/OiBzdHJpbmc7IC8vIHRvIGNvbnRyb2wgdmlzaW9uIG1vZGVsc1xyXG5cclxuICAgICAgLy8gc3RhYmlsaXR5IG9ubHlcclxuICAgICAgU1RBQklMSVRZX1VSTD86IHN0cmluZztcclxuICAgICAgU1RBQklMSVRZX0FQSV9LRVk/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyBhenVyZSBvbmx5XHJcbiAgICAgIEFaVVJFX1VSTD86IHN0cmluZzsgLy8gaHR0cHM6Ly97YXp1cmUtdXJsfS9vcGVuYWkvZGVwbG95bWVudHMve2RlcGxveS1uYW1lfVxyXG4gICAgICBBWlVSRV9BUElfS0VZPzogc3RyaW5nO1xyXG4gICAgICBBWlVSRV9BUElfVkVSU0lPTj86IHN0cmluZztcclxuXHJcbiAgICAgIC8vIGdvb2dsZSBvbmx5XHJcbiAgICAgIEdPT0dMRV9BUElfS0VZPzogc3RyaW5nO1xyXG4gICAgICBHT09HTEVfVVJMPzogc3RyaW5nO1xyXG5cclxuICAgICAgLy8gZ29vZ2xlIHRhZyBtYW5hZ2VyXHJcbiAgICAgIEdUTV9JRD86IHN0cmluZztcclxuXHJcbiAgICAgIC8vIGFudGhyb3BpYyBvbmx5XHJcbiAgICAgIEFOVEhST1BJQ19VUkw/OiBzdHJpbmc7XHJcbiAgICAgIEFOVEhST1BJQ19BUElfS0VZPzogc3RyaW5nO1xyXG4gICAgICBBTlRIUk9QSUNfQVBJX1ZFUlNJT04/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyBiYWlkdSBvbmx5XHJcbiAgICAgIEJBSURVX1VSTD86IHN0cmluZztcclxuICAgICAgQkFJRFVfQVBJX0tFWT86IHN0cmluZztcclxuICAgICAgQkFJRFVfU0VDUkVUX0tFWT86IHN0cmluZztcclxuXHJcbiAgICAgIC8vIGJ5dGVkYW5jZSBvbmx5XHJcbiAgICAgIEJZVEVEQU5DRV9VUkw/OiBzdHJpbmc7XHJcbiAgICAgIEJZVEVEQU5DRV9BUElfS0VZPzogc3RyaW5nO1xyXG5cclxuICAgICAgLy8gYWxpYmFiYSBvbmx5XHJcbiAgICAgIEFMSUJBQkFfVVJMPzogc3RyaW5nO1xyXG4gICAgICBBTElCQUJBX0FQSV9LRVk/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyB0ZW5jZW50IG9ubHlcclxuICAgICAgVEVOQ0VOVF9VUkw/OiBzdHJpbmc7XHJcbiAgICAgIFRFTkNFTlRfU0VDUkVUX0tFWT86IHN0cmluZztcclxuICAgICAgVEVOQ0VOVF9TRUNSRVRfSUQ/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyBtb29uc2hvdCBvbmx5XHJcbiAgICAgIE1PT05TSE9UX1VSTD86IHN0cmluZztcclxuICAgICAgTU9PTlNIT1RfQVBJX0tFWT86IHN0cmluZztcclxuXHJcbiAgICAgIC8vIGlmbHl0ZWsgb25seVxyXG4gICAgICBJRkxZVEVLX1VSTD86IHN0cmluZztcclxuICAgICAgSUZMWVRFS19BUElfS0VZPzogc3RyaW5nO1xyXG4gICAgICBJRkxZVEVLX0FQSV9TRUNSRVQ/OiBzdHJpbmc7XHJcblxyXG4gICAgICBERUVQU0VFS19VUkw/OiBzdHJpbmc7XHJcbiAgICAgIERFRVBTRUVLX0FQSV9LRVk/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyB4YWkgb25seVxyXG4gICAgICBYQUlfVVJMPzogc3RyaW5nO1xyXG4gICAgICBYQUlfQVBJX0tFWT86IHN0cmluZztcclxuXHJcbiAgICAgIC8vIGNoYXRnbG0gb25seVxyXG4gICAgICBDSEFUR0xNX1VSTD86IHN0cmluZztcclxuICAgICAgQ0hBVEdMTV9BUElfS0VZPzogc3RyaW5nO1xyXG5cclxuICAgICAgLy8gc2lsaWNvbmZsb3cgb25seVxyXG4gICAgICBTSUxJQ09ORkxPV19VUkw/OiBzdHJpbmc7XHJcbiAgICAgIFNJTElDT05GTE9XX0FQSV9LRVk/OiBzdHJpbmc7XHJcblxyXG4gICAgICAvLyBjdXN0b20gdGVtcGxhdGUgZm9yIHByZXByb2Nlc3NpbmcgdXNlciBpbnB1dFxyXG4gICAgICBERUZBVUxUX0lOUFVUX1RFTVBMQVRFPzogc3RyaW5nO1xyXG5cclxuICAgICAgRU5BQkxFX01DUD86IHN0cmluZzsgLy8gZW5hYmxlIG1jcCBmdW5jdGlvbmFsaXR5XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBBQ0NFU1NfQ09ERVMgPSAoZnVuY3Rpb24gZ2V0QWNjZXNzQ29kZXMoKTogU2V0PHN0cmluZz4ge1xyXG4gIGNvbnN0IGNvZGUgPSBwcm9jZXNzLmVudi5DT0RFO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgY29kZXMgPSAoY29kZT8uc3BsaXQoXCIsXCIpID8/IFtdKVxyXG4gICAgICAuZmlsdGVyKCh2KSA9PiAhIXYpXHJcbiAgICAgIC5tYXAoKHYpID0+IG1kNS5oYXNoKHYudHJpbSgpKSk7XHJcbiAgICByZXR1cm4gbmV3IFNldChjb2Rlcyk7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgcmV0dXJuIG5ldyBTZXQoKTtcclxuICB9XHJcbn0pKCk7XHJcblxyXG5mdW5jdGlvbiBnZXRBcGlLZXkoa2V5cz86IHN0cmluZykge1xyXG4gIGNvbnN0IGFwaUtleUVudlZhciA9IGtleXMgPz8gXCJcIjtcclxuICBjb25zdCBhcGlLZXlzID0gYXBpS2V5RW52VmFyLnNwbGl0KFwiLFwiKS5tYXAoKHYpID0+IHYudHJpbSgpKTtcclxuICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFwaUtleXMubGVuZ3RoKTtcclxuICBjb25zdCBhcGlLZXkgPSBhcGlLZXlzW3JhbmRvbUluZGV4XTtcclxuICBpZiAoYXBpS2V5KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgYFtTZXJ2ZXIgQ29uZmlnXSB1c2luZyAke3JhbmRvbUluZGV4ICsgMX0gb2YgJHtcclxuICAgICAgICBhcGlLZXlzLmxlbmd0aFxyXG4gICAgICB9IGFwaSBrZXkgLSAke2FwaUtleX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBhcGlLZXk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZXJ2ZXJTaWRlQ29uZmlnID0gKCkgPT4ge1xyXG4gIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgIFwiW1NlcnZlciBDb25maWddIHlvdSBhcmUgaW1wb3J0aW5nIGEgbm9kZWpzLW9ubHkgbW9kdWxlIG91dHNpZGUgb2Ygbm9kZWpzXCIsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZGlzYWJsZUdQVDQgPSAhIXByb2Nlc3MuZW52LkRJU0FCTEVfR1BUNDtcclxuICBsZXQgY3VzdG9tTW9kZWxzID0gcHJvY2Vzcy5lbnYuQ1VTVE9NX01PREVMUyA/PyBcIlwiO1xyXG4gIGxldCBkZWZhdWx0TW9kZWwgPSBwcm9jZXNzLmVudi5ERUZBVUxUX01PREVMID8/IFwiXCI7XHJcbiAgbGV0IHZpc2lvbk1vZGVscyA9IHByb2Nlc3MuZW52LlZJU0lPTl9NT0RFTFMgPz8gXCJcIjtcclxuXHJcbiAgaWYgKGRpc2FibGVHUFQ0KSB7XHJcbiAgICBpZiAoY3VzdG9tTW9kZWxzKSBjdXN0b21Nb2RlbHMgKz0gXCIsXCI7XHJcbiAgICBjdXN0b21Nb2RlbHMgKz0gREVGQVVMVF9NT0RFTFMuZmlsdGVyKChtKSA9PiBpc0dQVDRNb2RlbChtLm5hbWUpKVxyXG4gICAgICAubWFwKChtKSA9PiBcIi1cIiArIG0ubmFtZSlcclxuICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgaWYgKGRlZmF1bHRNb2RlbCAmJiBpc0dQVDRNb2RlbChkZWZhdWx0TW9kZWwpKSB7XHJcbiAgICAgIGRlZmF1bHRNb2RlbCA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBpc1N0YWJpbGl0eSA9ICEhcHJvY2Vzcy5lbnYuU1RBQklMSVRZX0FQSV9LRVk7XHJcblxyXG4gIGNvbnN0IGlzQXp1cmUgPSAhIXByb2Nlc3MuZW52LkFaVVJFX1VSTDtcclxuICBjb25zdCBpc0dvb2dsZSA9ICEhcHJvY2Vzcy5lbnYuR09PR0xFX0FQSV9LRVk7XHJcbiAgY29uc3QgaXNBbnRocm9waWMgPSAhIXByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZO1xyXG4gIGNvbnN0IGlzVGVuY2VudCA9ICEhcHJvY2Vzcy5lbnYuVEVOQ0VOVF9BUElfS0VZO1xyXG5cclxuICBjb25zdCBpc0JhaWR1ID0gISFwcm9jZXNzLmVudi5CQUlEVV9BUElfS0VZO1xyXG4gIGNvbnN0IGlzQnl0ZWRhbmNlID0gISFwcm9jZXNzLmVudi5CWVRFREFOQ0VfQVBJX0tFWTtcclxuICBjb25zdCBpc0FsaWJhYmEgPSAhIXByb2Nlc3MuZW52LkFMSUJBQkFfQVBJX0tFWTtcclxuICBjb25zdCBpc01vb25zaG90ID0gISFwcm9jZXNzLmVudi5NT09OU0hPVF9BUElfS0VZO1xyXG4gIGNvbnN0IGlzSWZseXRlayA9ICEhcHJvY2Vzcy5lbnYuSUZMWVRFS19BUElfS0VZO1xyXG4gIGNvbnN0IGlzRGVlcFNlZWsgPSAhIXByb2Nlc3MuZW52LkRFRVBTRUVLX0FQSV9LRVk7XHJcbiAgY29uc3QgaXNYQUkgPSAhIXByb2Nlc3MuZW52LlhBSV9BUElfS0VZO1xyXG4gIGNvbnN0IGlzQ2hhdEdMTSA9ICEhcHJvY2Vzcy5lbnYuQ0hBVEdMTV9BUElfS0VZO1xyXG4gIGNvbnN0IGlzU2lsaWNvbkZsb3cgPSAhIXByb2Nlc3MuZW52LlNJTElDT05GTE9XX0FQSV9LRVk7XHJcbiAgLy8gY29uc3QgYXBpS2V5RW52VmFyID0gcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkgPz8gXCJcIjtcclxuICAvLyBjb25zdCBhcGlLZXlzID0gYXBpS2V5RW52VmFyLnNwbGl0KFwiLFwiKS5tYXAoKHYpID0+IHYudHJpbSgpKTtcclxuICAvLyBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFwaUtleXMubGVuZ3RoKTtcclxuICAvLyBjb25zdCBhcGlLZXkgPSBhcGlLZXlzW3JhbmRvbUluZGV4XTtcclxuICAvLyBjb25zb2xlLmxvZyhcclxuICAvLyAgIGBbU2VydmVyIENvbmZpZ10gdXNpbmcgJHtyYW5kb21JbmRleCArIDF9IG9mICR7YXBpS2V5cy5sZW5ndGh9IGFwaSBrZXlgLFxyXG4gIC8vICk7XHJcblxyXG4gIGNvbnN0IGFsbG93ZWRXZWJEYXZFbmRwb2ludHMgPSAoXHJcbiAgICBwcm9jZXNzLmVudi5XSElURV9XRUJEQVZfRU5EUE9JTlRTID8/IFwiXCJcclxuICApLnNwbGl0KFwiLFwiKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGJhc2VVcmw6IHByb2Nlc3MuZW52LkJBU0VfVVJMLFxyXG4gICAgYXBpS2V5OiBnZXRBcGlLZXkocHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkpLFxyXG4gICAgb3BlbmFpT3JnSWQ6IHByb2Nlc3MuZW52Lk9QRU5BSV9PUkdfSUQsXHJcblxyXG4gICAgaXNTdGFiaWxpdHksXHJcbiAgICBzdGFiaWxpdHlVcmw6IHByb2Nlc3MuZW52LlNUQUJJTElUWV9VUkwsXHJcbiAgICBzdGFiaWxpdHlBcGlLZXk6IGdldEFwaUtleShwcm9jZXNzLmVudi5TVEFCSUxJVFlfQVBJX0tFWSksXHJcblxyXG4gICAgaXNBenVyZSxcclxuICAgIGF6dXJlVXJsOiBwcm9jZXNzLmVudi5BWlVSRV9VUkwsXHJcbiAgICBhenVyZUFwaUtleTogZ2V0QXBpS2V5KHByb2Nlc3MuZW52LkFaVVJFX0FQSV9LRVkpLFxyXG4gICAgYXp1cmVBcGlWZXJzaW9uOiBwcm9jZXNzLmVudi5BWlVSRV9BUElfVkVSU0lPTixcclxuXHJcbiAgICBpc0dvb2dsZSxcclxuICAgIGdvb2dsZUFwaUtleTogZ2V0QXBpS2V5KHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZKSxcclxuICAgIGdvb2dsZVVybDogcHJvY2Vzcy5lbnYuR09PR0xFX1VSTCxcclxuXHJcbiAgICBpc0FudGhyb3BpYyxcclxuICAgIGFudGhyb3BpY0FwaUtleTogZ2V0QXBpS2V5KHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZKSxcclxuICAgIGFudGhyb3BpY0FwaVZlcnNpb246IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfVkVSU0lPTixcclxuICAgIGFudGhyb3BpY1VybDogcHJvY2Vzcy5lbnYuQU5USFJPUElDX1VSTCxcclxuXHJcbiAgICBpc0JhaWR1LFxyXG4gICAgYmFpZHVVcmw6IHByb2Nlc3MuZW52LkJBSURVX1VSTCxcclxuICAgIGJhaWR1QXBpS2V5OiBnZXRBcGlLZXkocHJvY2Vzcy5lbnYuQkFJRFVfQVBJX0tFWSksXHJcbiAgICBiYWlkdVNlY3JldEtleTogcHJvY2Vzcy5lbnYuQkFJRFVfU0VDUkVUX0tFWSxcclxuXHJcbiAgICBpc0J5dGVkYW5jZSxcclxuICAgIGJ5dGVkYW5jZUFwaUtleTogZ2V0QXBpS2V5KHByb2Nlc3MuZW52LkJZVEVEQU5DRV9BUElfS0VZKSxcclxuICAgIGJ5dGVkYW5jZVVybDogcHJvY2Vzcy5lbnYuQllURURBTkNFX1VSTCxcclxuXHJcbiAgICBpc0FsaWJhYmEsXHJcbiAgICBhbGliYWJhVXJsOiBwcm9jZXNzLmVudi5BTElCQUJBX1VSTCxcclxuICAgIGFsaWJhYmFBcGlLZXk6IGdldEFwaUtleShwcm9jZXNzLmVudi5BTElCQUJBX0FQSV9LRVkpLFxyXG5cclxuICAgIGlzVGVuY2VudCxcclxuICAgIHRlbmNlbnRVcmw6IHByb2Nlc3MuZW52LlRFTkNFTlRfVVJMLFxyXG4gICAgdGVuY2VudFNlY3JldEtleTogZ2V0QXBpS2V5KHByb2Nlc3MuZW52LlRFTkNFTlRfU0VDUkVUX0tFWSksXHJcbiAgICB0ZW5jZW50U2VjcmV0SWQ6IHByb2Nlc3MuZW52LlRFTkNFTlRfU0VDUkVUX0lELFxyXG5cclxuICAgIGlzTW9vbnNob3QsXHJcbiAgICBtb29uc2hvdFVybDogcHJvY2Vzcy5lbnYuTU9PTlNIT1RfVVJMLFxyXG4gICAgbW9vbnNob3RBcGlLZXk6IGdldEFwaUtleShwcm9jZXNzLmVudi5NT09OU0hPVF9BUElfS0VZKSxcclxuXHJcbiAgICBpc0lmbHl0ZWssXHJcbiAgICBpZmx5dGVrVXJsOiBwcm9jZXNzLmVudi5JRkxZVEVLX1VSTCxcclxuICAgIGlmbHl0ZWtBcGlLZXk6IHByb2Nlc3MuZW52LklGTFlURUtfQVBJX0tFWSxcclxuICAgIGlmbHl0ZWtBcGlTZWNyZXQ6IHByb2Nlc3MuZW52LklGTFlURUtfQVBJX1NFQ1JFVCxcclxuXHJcbiAgICBpc0RlZXBTZWVrLFxyXG4gICAgZGVlcHNlZWtVcmw6IHByb2Nlc3MuZW52LkRFRVBTRUVLX1VSTCxcclxuICAgIGRlZXBzZWVrQXBpS2V5OiBnZXRBcGlLZXkocHJvY2Vzcy5lbnYuREVFUFNFRUtfQVBJX0tFWSksXHJcblxyXG4gICAgaXNYQUksXHJcbiAgICB4YWlVcmw6IHByb2Nlc3MuZW52LlhBSV9VUkwsXHJcbiAgICB4YWlBcGlLZXk6IGdldEFwaUtleShwcm9jZXNzLmVudi5YQUlfQVBJX0tFWSksXHJcblxyXG4gICAgaXNDaGF0R0xNLFxyXG4gICAgY2hhdGdsbVVybDogcHJvY2Vzcy5lbnYuQ0hBVEdMTV9VUkwsXHJcbiAgICBjaGF0Z2xtQXBpS2V5OiBnZXRBcGlLZXkocHJvY2Vzcy5lbnYuQ0hBVEdMTV9BUElfS0VZKSxcclxuXHJcbiAgICBjbG91ZGZsYXJlQWNjb3VudElkOiBwcm9jZXNzLmVudi5DTE9VREZMQVJFX0FDQ09VTlRfSUQsXHJcbiAgICBjbG91ZGZsYXJlS1ZOYW1lc3BhY2VJZDogcHJvY2Vzcy5lbnYuQ0xPVURGTEFSRV9LVl9OQU1FU1BBQ0VfSUQsXHJcbiAgICBjbG91ZGZsYXJlS1ZBcGlLZXk6IGdldEFwaUtleShwcm9jZXNzLmVudi5DTE9VREZMQVJFX0tWX0FQSV9LRVkpLFxyXG4gICAgY2xvdWRmbGFyZUtWVFRMOiBwcm9jZXNzLmVudi5DTE9VREZMQVJFX0tWX1RUTCxcclxuXHJcbiAgICBpc1NpbGljb25GbG93LFxyXG4gICAgc2lsaWNvbkZsb3dVcmw6IHByb2Nlc3MuZW52LlNJTElDT05GTE9XX1VSTCxcclxuICAgIHNpbGljb25GbG93QXBpS2V5OiBnZXRBcGlLZXkocHJvY2Vzcy5lbnYuU0lMSUNPTkZMT1dfQVBJX0tFWSksXHJcblxyXG4gICAgZ3RtSWQ6IHByb2Nlc3MuZW52LkdUTV9JRCxcclxuICAgIGdhSWQ6IHByb2Nlc3MuZW52LkdBX0lEIHx8IERFRkFVTFRfR0FfSUQsXHJcblxyXG4gICAgbmVlZENvZGU6IEFDQ0VTU19DT0RFUy5zaXplID4gMCxcclxuICAgIGNvZGU6IHByb2Nlc3MuZW52LkNPREUsXHJcbiAgICBjb2RlczogQUNDRVNTX0NPREVTLFxyXG5cclxuICAgIHByb3h5VXJsOiBwcm9jZXNzLmVudi5QUk9YWV9VUkwsXHJcbiAgICBpc1ZlcmNlbDogISFwcm9jZXNzLmVudi5WRVJDRUwsXHJcblxyXG4gICAgaGlkZVVzZXJBcGlLZXk6ICEhcHJvY2Vzcy5lbnYuSElERV9VU0VSX0FQSV9LRVksXHJcbiAgICBkaXNhYmxlR1BUNCxcclxuICAgIGhpZGVCYWxhbmNlUXVlcnk6ICFwcm9jZXNzLmVudi5FTkFCTEVfQkFMQU5DRV9RVUVSWSxcclxuICAgIGRpc2FibGVGYXN0TGluazogISFwcm9jZXNzLmVudi5ESVNBQkxFX0ZBU1RfTElOSyxcclxuICAgIGN1c3RvbU1vZGVscyxcclxuICAgIGRlZmF1bHRNb2RlbCxcclxuICAgIHZpc2lvbk1vZGVscyxcclxuICAgIGFsbG93ZWRXZWJEYXZFbmRwb2ludHMsXHJcbiAgICBlbmFibGVNY3A6IHByb2Nlc3MuZW52LkVOQUJMRV9NQ1AgPT09IFwidHJ1ZVwiLFxyXG4gIH07XHJcbn07XHJcbiJdLCJuYW1lcyI6WyJtZDUiLCJERUZBVUxUX01PREVMUyIsIkRFRkFVTFRfR0FfSUQiLCJpc0dQVDRNb2RlbCIsIkFDQ0VTU19DT0RFUyIsImdldEFjY2Vzc0NvZGVzIiwiY29kZSIsInByb2Nlc3MiLCJlbnYiLCJDT0RFIiwiY29kZXMiLCJzcGxpdCIsImZpbHRlciIsInYiLCJtYXAiLCJoYXNoIiwidHJpbSIsIlNldCIsImUiLCJnZXRBcGlLZXkiLCJrZXlzIiwiYXBpS2V5RW52VmFyIiwiYXBpS2V5cyIsInJhbmRvbUluZGV4IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwibGVuZ3RoIiwiYXBpS2V5IiwiY29uc29sZSIsImxvZyIsImdldFNlcnZlclNpZGVDb25maWciLCJFcnJvciIsImRpc2FibGVHUFQ0IiwiRElTQUJMRV9HUFQ0IiwiY3VzdG9tTW9kZWxzIiwiQ1VTVE9NX01PREVMUyIsImRlZmF1bHRNb2RlbCIsIkRFRkFVTFRfTU9ERUwiLCJ2aXNpb25Nb2RlbHMiLCJWSVNJT05fTU9ERUxTIiwibSIsIm5hbWUiLCJqb2luIiwiaXNTdGFiaWxpdHkiLCJTVEFCSUxJVFlfQVBJX0tFWSIsImlzQXp1cmUiLCJBWlVSRV9VUkwiLCJpc0dvb2dsZSIsIkdPT0dMRV9BUElfS0VZIiwiaXNBbnRocm9waWMiLCJBTlRIUk9QSUNfQVBJX0tFWSIsImlzVGVuY2VudCIsIlRFTkNFTlRfQVBJX0tFWSIsImlzQmFpZHUiLCJCQUlEVV9BUElfS0VZIiwiaXNCeXRlZGFuY2UiLCJCWVRFREFOQ0VfQVBJX0tFWSIsImlzQWxpYmFiYSIsIkFMSUJBQkFfQVBJX0tFWSIsImlzTW9vbnNob3QiLCJNT09OU0hPVF9BUElfS0VZIiwiaXNJZmx5dGVrIiwiSUZMWVRFS19BUElfS0VZIiwiaXNEZWVwU2VlayIsIkRFRVBTRUVLX0FQSV9LRVkiLCJpc1hBSSIsIlhBSV9BUElfS0VZIiwiaXNDaGF0R0xNIiwiQ0hBVEdMTV9BUElfS0VZIiwiaXNTaWxpY29uRmxvdyIsIlNJTElDT05GTE9XX0FQSV9LRVkiLCJhbGxvd2VkV2ViRGF2RW5kcG9pbnRzIiwiV0hJVEVfV0VCREFWX0VORFBPSU5UUyIsImJhc2VVcmwiLCJCQVNFX1VSTCIsIk9QRU5BSV9BUElfS0VZIiwib3BlbmFpT3JnSWQiLCJPUEVOQUlfT1JHX0lEIiwic3RhYmlsaXR5VXJsIiwiU1RBQklMSVRZX1VSTCIsInN0YWJpbGl0eUFwaUtleSIsImF6dXJlVXJsIiwiYXp1cmVBcGlLZXkiLCJBWlVSRV9BUElfS0VZIiwiYXp1cmVBcGlWZXJzaW9uIiwiQVpVUkVfQVBJX1ZFUlNJT04iLCJnb29nbGVBcGlLZXkiLCJnb29nbGVVcmwiLCJHT09HTEVfVVJMIiwiYW50aHJvcGljQXBpS2V5IiwiYW50aHJvcGljQXBpVmVyc2lvbiIsIkFOVEhST1BJQ19BUElfVkVSU0lPTiIsImFudGhyb3BpY1VybCIsIkFOVEhST1BJQ19VUkwiLCJiYWlkdVVybCIsIkJBSURVX1VSTCIsImJhaWR1QXBpS2V5IiwiYmFpZHVTZWNyZXRLZXkiLCJCQUlEVV9TRUNSRVRfS0VZIiwiYnl0ZWRhbmNlQXBpS2V5IiwiYnl0ZWRhbmNlVXJsIiwiQllURURBTkNFX1VSTCIsImFsaWJhYmFVcmwiLCJBTElCQUJBX1VSTCIsImFsaWJhYmFBcGlLZXkiLCJ0ZW5jZW50VXJsIiwiVEVOQ0VOVF9VUkwiLCJ0ZW5jZW50U2VjcmV0S2V5IiwiVEVOQ0VOVF9TRUNSRVRfS0VZIiwidGVuY2VudFNlY3JldElkIiwiVEVOQ0VOVF9TRUNSRVRfSUQiLCJtb29uc2hvdFVybCIsIk1PT05TSE9UX1VSTCIsIm1vb25zaG90QXBpS2V5IiwiaWZseXRla1VybCIsIklGTFlURUtfVVJMIiwiaWZseXRla0FwaUtleSIsImlmbHl0ZWtBcGlTZWNyZXQiLCJJRkxZVEVLX0FQSV9TRUNSRVQiLCJkZWVwc2Vla1VybCIsIkRFRVBTRUVLX1VSTCIsImRlZXBzZWVrQXBpS2V5IiwieGFpVXJsIiwiWEFJX1VSTCIsInhhaUFwaUtleSIsImNoYXRnbG1VcmwiLCJDSEFUR0xNX1VSTCIsImNoYXRnbG1BcGlLZXkiLCJjbG91ZGZsYXJlQWNjb3VudElkIiwiQ0xPVURGTEFSRV9BQ0NPVU5UX0lEIiwiY2xvdWRmbGFyZUtWTmFtZXNwYWNlSWQiLCJDTE9VREZMQVJFX0tWX05BTUVTUEFDRV9JRCIsImNsb3VkZmxhcmVLVkFwaUtleSIsIkNMT1VERkxBUkVfS1ZfQVBJX0tFWSIsImNsb3VkZmxhcmVLVlRUTCIsIkNMT1VERkxBUkVfS1ZfVFRMIiwic2lsaWNvbkZsb3dVcmwiLCJTSUxJQ09ORkxPV19VUkwiLCJzaWxpY29uRmxvd0FwaUtleSIsImd0bUlkIiwiR1RNX0lEIiwiZ2FJZCIsIkdBX0lEIiwibmVlZENvZGUiLCJzaXplIiwicHJveHlVcmwiLCJQUk9YWV9VUkwiLCJpc1ZlcmNlbCIsIlZFUkNFTCIsImhpZGVVc2VyQXBpS2V5IiwiSElERV9VU0VSX0FQSV9LRVkiLCJoaWRlQmFsYW5jZVF1ZXJ5IiwiRU5BQkxFX0JBTEFOQ0VfUVVFUlkiLCJkaXNhYmxlRmFzdExpbmsiLCJESVNBQkxFX0ZBU1RfTElOSyIsImVuYWJsZU1jcCIsIkVOQUJMRV9NQ1AiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/config/server.ts\n");
/***/ }),
/***/ "(rsc)/./app/constant.ts":
/*!*************************!*\
!*** ./app/constant.ts ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ACCESS_CODE_PREFIX: () => (/* binding */ ACCESS_CODE_PREFIX),\n/* harmony export */ ALIBABA_BASE_URL: () => (/* binding */ ALIBABA_BASE_URL),\n/* harmony export */ ANTHROPIC_BASE_URL: () => (/* binding */ ANTHROPIC_BASE_URL),\n/* harmony export */ Alibaba: () => (/* binding */ Alibaba),\n/* harmony export */ Anthropic: () => (/* binding */ Anthropic),\n/* harmony export */ ApiPath: () => (/* binding */ ApiPath),\n/* harmony export */ Azure: () => (/* binding */ Azure),\n/* harmony export */ BAIDU_BASE_URL: () => (/* binding */ BAIDU_BASE_URL),\n/* harmony export */ BAIDU_OATUH_URL: () => (/* binding */ BAIDU_OATUH_URL),\n/* harmony export */ BYTEDANCE_BASE_URL: () => (/* binding */ BYTEDANCE_BASE_URL),\n/* harmony export */ Baidu: () => (/* binding */ Baidu),\n/* harmony export */ ByteDance: () => (/* binding */ ByteDance),\n/* harmony export */ CACHE_URL_PREFIX: () => (/* binding */ CACHE_URL_PREFIX),\n/* harmony export */ CHATGLM_BASE_URL: () => (/* binding */ CHATGLM_BASE_URL),\n/* harmony export */ CHAT_PAGE_SIZE: () => (/* binding */ CHAT_PAGE_SIZE),\n/* harmony export */ ChatGLM: () => (/* binding */ ChatGLM),\n/* harmony export */ DEEPSEEK_BASE_URL: () => (/* binding */ DEEPSEEK_BASE_URL),\n/* harmony export */ DEEPSEEK_SUMMARIZE_MODEL: () => (/* binding */ DEEPSEEK_SUMMARIZE_MODEL),\n/* harmony export */ DEFAULT_GA_ID: () => (/* binding */ DEFAULT_GA_ID),\n/* harmony export */ DEFAULT_INPUT_TEMPLATE: () => (/* binding */ DEFAULT_INPUT_TEMPLATE),\n/* harmony export */ DEFAULT_MODELS: () => (/* binding */ DEFAULT_MODELS),\n/* harmony export */ DEFAULT_SIDEBAR_WIDTH: () => (/* binding */ DEFAULT_SIDEBAR_WIDTH),\n/* harmony export */ DEFAULT_SYSTEM_TEMPLATE: () => (/* binding */ DEFAULT_SYSTEM_TEMPLATE),\n/* harmony export */ DEFAULT_TTS_ENGINE: () => (/* binding */ DEFAULT_TTS_ENGINE),\n/* harmony export */ DEFAULT_TTS_ENGINES: () => (/* binding */ DEFAULT_TTS_ENGINES),\n/* harmony export */ DEFAULT_TTS_MODEL: () => (/* binding */ DEFAULT_TTS_MODEL),\n/* harmony export */ DEFAULT_TTS_MODELS: () => (/* binding */ DEFAULT_TTS_MODELS),\n/* harmony export */ DEFAULT_TTS_VOICE: () => (/* binding */ DEFAULT_TTS_VOICE),\n/* harmony export */ DEFAULT_TTS_VOICES: () => (/* binding */ DEFAULT_TTS_VOICES),\n/* harmony export */ DeepSeek: () => (/* binding */ DeepSeek),\n/* harmony export */ EXCLUDE_VISION_MODEL_REGEXES: () => (/* binding */ EXCLUDE_VISION_MODEL_REGEXES),\n/* harmony export */ EXPORT_MESSAGE_CLASS_NAME: () => (/* binding */ EXPORT_MESSAGE_CLASS_NAME),\n/* harmony export */ FETCH_COMMIT_URL: () => (/* binding */ FETCH_COMMIT_URL),\n/* harmony export */ FETCH_TAG_URL: () => (/* binding */ FETCH_TAG_URL),\n/* harmony export */ FileName: () => (/* binding */ FileName),\n/* harmony export */ GEMINI_BASE_URL: () => (/* binding */ GEMINI_BASE_URL),\n/* harmony export */ GEMINI_SUMMARIZE_MODEL: () => (/* binding */ GEMINI_SUMMARIZE_MODEL),\n/* harmony export */ Google: () => (/* binding */ Google),\n/* harmony export */ GoogleSafetySettingsThreshold: () => (/* binding */ GoogleSafetySettingsThreshold),\n/* harmony export */ IFLYTEK_BASE_URL: () => (/* binding */ IFLYTEK_BASE_URL),\n/* harmony export */ ISSUE_URL: () => (/* binding */ ISSUE_URL),\n/* harmony export */ Iflytek: () => (/* binding */ Iflytek),\n/* harmony export */ KnowledgeCutOffDate: () => (/* binding */ KnowledgeCutOffDate),\n/* harmony export */ LAST_INPUT_KEY: () => (/* binding */ LAST_INPUT_KEY),\n/* harmony export */ MAX_RENDER_MSG_COUNT: () => (/* binding */ MAX_RENDER_MSG_COUNT),\n/* harmony export */ MAX_SIDEBAR_WIDTH: () => (/* binding */ MAX_SIDEBAR_WIDTH),\n/* harmony export */ MCP_SYSTEM_TEMPLATE: () => (/* binding */ MCP_SYSTEM_TEMPLATE),\n/* harmony export */ MCP_TOOLS_TEMPLATE: () => (/* binding */ MCP_TOOLS_TEMPLATE),\n/* harmony export */ MIN_SIDEBAR_WIDTH: () => (/* binding */ MIN_SIDEBAR_WIDTH),\n/* harmony export */ MOONSHOT_BASE_URL: () => (/* binding */ MOONSHOT_BASE_URL),\n/* harmony export */ ModelProvider: () => (/* binding */ ModelProvider),\n/* harmony export */ Moonshot: () => (/* binding */ Moonshot),\n/* harmony export */ NARROW_SIDEBAR_WIDTH: () => (/* binding */ NARROW_SIDEBAR_WIDTH),\n/* harmony export */ OPENAI_BASE_URL: () => (/* binding */ OPENAI_BASE_URL),\n/* harmony export */ OWNER: () => (/* binding */ OWNER),\n/* harmony export */ OpenaiPath: () => (/* binding */ OpenaiPath),\n/* harmony export */ PLUGINS_REPO_URL: () => (/* binding */ PLUGINS_REPO_URL),\n/* harmony export */ Path: () => (/* binding */ Path),\n/* harmony export */ RELEASE_URL: () => (/* binding */ RELEASE_URL),\n/* harmony export */ REPO: () => (/* binding */ REPO),\n/* harmony export */ REPO_URL: () => (/* binding */ REPO_URL),\n/* harmony export */ REQUEST_TIMEOUT_MS: () => (/* binding */ REQUEST_TIMEOUT_MS),\n/* harmony export */ REQUEST_TIMEOUT_MS_FOR_THINKING: () => (/* binding */ REQUEST_TIMEOUT_MS_FOR_THINKING),\n/* harmony export */ RUNTIME_CONFIG_DOM: () => (/* binding */ RUNTIME_CONFIG_DOM),\n/* harmony export */ SAAS_CHAT_URL: () => (/* binding */ SAAS_CHAT_URL),\n/* harmony export */ SAAS_CHAT_UTM_URL: () => (/* binding */ SAAS_CHAT_UTM_URL),\n/* harmony export */ SILICONFLOW_BASE_URL: () => (/* binding */ SILICONFLOW_BASE_URL),\n/* harmony export */ STABILITY_BASE_URL: () => (/* binding */ STABILITY_BASE_URL),\n/* harmony export */ STORAGE_KEY: () => (/* binding */ STORAGE_KEY),\n/* harmony export */ SUMMARIZE_MODEL: () => (/* binding */ SUMMARIZE_MODEL),\n/* harmony export */ ServiceProvider: () => (/* binding */ ServiceProvider),\n/* harmony export */ SiliconFlow: () => (/* binding */ SiliconFlow),\n/* harmony export */ SlotID: () => (/* binding */ SlotID),\n/* harmony export */ Stability: () => (/* binding */ Stability),\n/* harmony export */ StoreKey: () => (/* binding */ StoreKey),\n/* harmony export */ TENCENT_BASE_URL: () => (/* binding */ TENCENT_BASE_URL),\n/* harmony export */ Tencent: () => (/* binding */ Tencent),\n/* harmony export */ UNFINISHED_INPUT: () => (/* binding */ UNFINISHED_INPUT),\n/* harmony export */ UPDATE_URL: () => (/* binding */ UPDATE_URL),\n/* harmony export */ UPLOAD_URL: () => (/* binding */ UPLOAD_URL),\n/* harmony export */ VISION_MODEL_REGEXES: () => (/* binding */ VISION_MODEL_REGEXES),\n/* harmony export */ XAI: () => (/* binding */ XAI),\n/* harmony export */ XAI_BASE_URL: () => (/* binding */ XAI_BASE_URL),\n/* harmony export */ internalAllowedWebDavEndpoints: () => (/* binding */ internalAllowedWebDavEndpoints)\n/* harmony export */ });\nconst OWNER = \"ChatGPTNextWeb\";\nconst REPO = \"ChatGPT-Next-Web\";\nconst REPO_URL = `https://github.com/${OWNER}/${REPO}`;\nconst PLUGINS_REPO_URL = `https://github.com/${OWNER}/NextChat-Awesome-Plugins`;\nconst ISSUE_URL = `https://github.com/${OWNER}/${REPO}/issues`;\nconst UPDATE_URL = `${REPO_URL}#keep-updated`;\nconst RELEASE_URL = `${REPO_URL}/releases`;\nconst FETCH_COMMIT_URL = `https://api.github.com/repos/${OWNER}/${REPO}/commits?per_page=1`;\nconst FETCH_TAG_URL = `https://api.github.com/repos/${OWNER}/${REPO}/tags?per_page=1`;\nconst RUNTIME_CONFIG_DOM = \"danger-runtime-config\";\nconst STABILITY_BASE_URL = \"https://api.stability.ai\";\nconst OPENAI_BASE_URL = \"https://api.openai.com\";\nconst ANTHROPIC_BASE_URL = \"https://api.anthropic.com\";\nconst GEMINI_BASE_URL = \"https://generativelanguage.googleapis.com/\";\nconst BAIDU_BASE_URL = \"https://aip.baidubce.com\";\nconst BAIDU_OATUH_URL = `${BAIDU_BASE_URL}/oauth/2.0/token`;\nconst BYTEDANCE_BASE_URL = \"https://ark.cn-beijing.volces.com\";\nconst ALIBABA_BASE_URL = \"https://dashscope.aliyuncs.com/api/\";\nconst TENCENT_BASE_URL = \"https://hunyuan.tencentcloudapi.com\";\nconst MOONSHOT_BASE_URL = \"https://api.moonshot.cn\";\nconst IFLYTEK_BASE_URL = \"https://spark-api-open.xf-yun.com\";\nconst DEEPSEEK_BASE_URL = \"https://api.deepseek.com\";\nconst XAI_BASE_URL = \"https://api.x.ai\";\nconst CHATGLM_BASE_URL = \"https://open.bigmodel.cn\";\nconst SILICONFLOW_BASE_URL = \"https://api.siliconflow.cn\";\nconst CACHE_URL_PREFIX = \"/api/cache\";\nconst UPLOAD_URL = `${CACHE_URL_PREFIX}/upload`;\nvar Path;\n(function(Path) {\n Path[\"Home\"] = \"/\";\n Path[\"Chat\"] = \"/chat\";\n Path[\"Settings\"] = \"/settings\";\n Path[\"NewChat\"] = \"/new-chat\";\n Path[\"Masks\"] = \"/masks\";\n Path[\"Plugins\"] = \"/plugins\";\n Path[\"Auth\"] = \"/auth\";\n Path[\"Sd\"] = \"/sd\";\n Path[\"SdNew\"] = \"/sd-new\";\n Path[\"Artifacts\"] = \"/artifacts\";\n Path[\"SearchChat\"] = \"/search-chat\";\n Path[\"McpMarket\"] = \"/mcp-market\";\n})(Path || (Path = {}));\nvar ApiPath;\n(function(ApiPath) {\n ApiPath[\"Cors\"] = \"\";\n ApiPath[\"Azure\"] = \"/api/azure\";\n ApiPath[\"OpenAI\"] = \"/api/openai\";\n ApiPath[\"Anthropic\"] = \"/api/anthropic\";\n ApiPath[\"Google\"] = \"/api/google\";\n ApiPath[\"Baidu\"] = \"/api/baidu\";\n ApiPath[\"ByteDance\"] = \"/api/bytedance\";\n ApiPath[\"Alibaba\"] = \"/api/alibaba\";\n ApiPath[\"Tencent\"] = \"/api/tencent\";\n ApiPath[\"Moonshot\"] = \"/api/moonshot\";\n ApiPath[\"Iflytek\"] = \"/api/iflytek\";\n ApiPath[\"Stability\"] = \"/api/stability\";\n ApiPath[\"Artifacts\"] = \"/api/artifacts\";\n ApiPath[\"XAI\"] = \"/api/xai\";\n ApiPath[\"ChatGLM\"] = \"/api/chatglm\";\n ApiPath[\"DeepSeek\"] = \"/api/deepseek\";\n ApiPath[\"SiliconFlow\"] = \"/api/siliconflow\";\n})(ApiPath || (ApiPath = {}));\nvar SlotID;\n(function(SlotID) {\n SlotID[\"AppBody\"] = \"app-body\";\n SlotID[\"CustomModel\"] = \"custom-model\";\n})(SlotID || (SlotID = {}));\nvar FileName;\n(function(FileName) {\n FileName[\"Masks\"] = \"masks.json\";\n FileName[\"Prompts\"] = \"prompts.json\";\n})(FileName || (FileName = {}));\nvar StoreKey;\n(function(StoreKey) {\n StoreKey[\"Chat\"] = \"chat-next-web-store\";\n StoreKey[\"Plugin\"] = \"chat-next-web-plugin\";\n StoreKey[\"Access\"] = \"access-control\";\n StoreKey[\"Config\"] = \"app-config\";\n StoreKey[\"Mask\"] = \"mask-store\";\n StoreKey[\"Prompt\"] = \"prompt-store\";\n StoreKey[\"Update\"] = \"chat-update\";\n StoreKey[\"Sync\"] = \"sync\";\n StoreKey[\"SdList\"] = \"sd-list\";\n StoreKey[\"Mcp\"] = \"mcp-store\";\n})(StoreKey || (StoreKey = {}));\nconst DEFAULT_SIDEBAR_WIDTH = 300;\nconst MAX_SIDEBAR_WIDTH = 500;\nconst MIN_SIDEBAR_WIDTH = 230;\nconst NARROW_SIDEBAR_WIDTH = 100;\nconst ACCESS_CODE_PREFIX = \"nk-\";\nconst LAST_INPUT_KEY = \"last-input\";\nconst UNFINISHED_INPUT = (id)=>\"unfinished-input-\" + id;\nconst STORAGE_KEY = \"chatgpt-next-web\";\nconst REQUEST_TIMEOUT_MS = 60000;\nconst REQUEST_TIMEOUT_MS_FOR_THINKING = REQUEST_TIMEOUT_MS * 5;\nconst EXPORT_MESSAGE_CLASS_NAME = \"export-markdown\";\nvar ServiceProvider;\n(function(ServiceProvider) {\n ServiceProvider[\"OpenAI\"] = \"OpenAI\";\n ServiceProvider[\"Azure\"] = \"Azure\";\n ServiceProvider[\"Google\"] = \"Google\";\n ServiceProvider[\"Anthropic\"] = \"Anthropic\";\n ServiceProvider[\"Baidu\"] = \"Baidu\";\n ServiceProvider[\"ByteDance\"] = \"ByteDance\";\n ServiceProvider[\"Alibaba\"] = \"Alibaba\";\n ServiceProvider[\"Tencent\"] = \"Tencent\";\n ServiceProvider[\"Moonshot\"] = \"Moonshot\";\n ServiceProvider[\"Stability\"] = \"Stability\";\n ServiceProvider[\"Iflytek\"] = \"Iflytek\";\n ServiceProvider[\"XAI\"] = \"XAI\";\n ServiceProvider[\"ChatGLM\"] = \"ChatGLM\";\n ServiceProvider[\"DeepSeek\"] = \"DeepSeek\";\n ServiceProvider[\"SiliconFlow\"] = \"SiliconFlow\";\n})(ServiceProvider || (ServiceProvider = {}));\nvar GoogleSafetySettingsThreshold;\n(function(GoogleSafetySettingsThreshold) {\n GoogleSafetySettingsThreshold[\"BLOCK_NONE\"] = \"BLOCK_NONE\";\n GoogleSafetySettingsThreshold[\"BLOCK_ONLY_HIGH\"] = \"BLOCK_ONLY_HIGH\";\n GoogleSafetySettingsThreshold[\"BLOCK_MEDIUM_AND_ABOVE\"] = \"BLOCK_MEDIUM_AND_ABOVE\";\n GoogleSafetySettingsThreshold[\"BLOCK_LOW_AND_ABOVE\"] = \"BLOCK_LOW_AND_ABOVE\";\n})(GoogleSafetySettingsThreshold || (GoogleSafetySettingsThreshold = {}));\nvar ModelProvider;\n(function(ModelProvider) {\n ModelProvider[\"Stability\"] = \"Stability\";\n ModelProvider[\"GPT\"] = \"GPT\";\n ModelProvider[\"GeminiPro\"] = \"GeminiPro\";\n ModelProvider[\"Claude\"] = \"Claude\";\n ModelProvider[\"Ernie\"] = \"Ernie\";\n ModelProvider[\"Doubao\"] = \"Doubao\";\n ModelProvider[\"Qwen\"] = \"Qwen\";\n ModelProvider[\"Hunyuan\"] = \"Hunyuan\";\n ModelProvider[\"Moonshot\"] = \"Moonshot\";\n ModelProvider[\"Iflytek\"] = \"Iflytek\";\n ModelProvider[\"XAI\"] = \"XAI\";\n ModelProvider[\"ChatGLM\"] = \"ChatGLM\";\n ModelProvider[\"DeepSeek\"] = \"DeepSeek\";\n ModelProvider[\"SiliconFlow\"] = \"SiliconFlow\";\n})(ModelProvider || (ModelProvider = {}));\nconst Stability = {\n GeneratePath: \"v2beta/stable-image/generate\",\n ExampleEndpoint: \"https://api.stability.ai\"\n};\nconst Anthropic = {\n ChatPath: \"v1/messages\",\n ChatPath1: \"v1/complete\",\n ExampleEndpoint: \"https://api.anthropic.com\",\n Vision: \"2023-06-01\"\n};\nconst OpenaiPath = {\n ChatPath: \"v1/chat/completions\",\n SpeechPath: \"v1/audio/speech\",\n ImagePath: \"v1/images/generations\",\n UsagePath: \"dashboard/billing/usage\",\n SubsPath: \"dashboard/billing/subscription\",\n ListModelPath: \"v1/models\"\n};\nconst Azure = {\n ChatPath: (deployName, apiVersion)=>`deployments/${deployName}/chat/completions?api-version=${apiVersion}`,\n // https://<your_resource_name>.openai.azure.com/openai/deployments/<your_deployment_name>/images/generations?api-version=<api_version>\n ImagePath: (deployName, apiVersion)=>`deployments/${deployName}/images/generations?api-version=${apiVersion}`,\n ExampleEndpoint: \"https://{resource-url}/openai\"\n};\nconst Google = {\n ExampleEndpoint: \"https://generativelanguage.googleapis.com/\",\n ChatPath: (modelName)=>`v1beta/models/${modelName}:streamGenerateContent`\n};\nconst Baidu = {\n ExampleEndpoint: BAIDU_BASE_URL,\n ChatPath: (modelName)=>{\n let endpoint = modelName;\n if (modelName === \"ernie-4.0-8k\") {\n endpoint = \"completions_pro\";\n }\n if (modelName === \"ernie-4.0-8k-preview-0518\") {\n endpoint = \"completions_adv_pro\";\n }\n if (modelName === \"ernie-3.5-8k\") {\n endpoint = \"completions\";\n }\n if (modelName === \"ernie-speed-8k\") {\n endpoint = \"ernie_speed\";\n }\n return `rpc/2.0/ai_custom/v1/wenxinworkshop/chat/${endpoint}`;\n }\n};\nconst ByteDance = {\n ExampleEndpoint: \"https://ark.cn-beijing.volces.com/api/\",\n ChatPath: \"api/v3/chat/completions\"\n};\nconst Alibaba = {\n ExampleEndpoint: ALIBABA_BASE_URL,\n ChatPath: \"v1/services/aigc/text-generation/generation\"\n};\nconst Tencent = {\n ExampleEndpoint: TENCENT_BASE_URL\n};\nconst Moonshot = {\n ExampleEndpoint: MOONSHOT_BASE_URL,\n ChatPath: \"v1/chat/completions\"\n};\nconst Iflytek = {\n ExampleEndpoint: IFLYTEK_BASE_URL,\n ChatPath: \"v1/chat/completions\"\n};\nconst DeepSeek = {\n ExampleEndpoint: DEEPSEEK_BASE_URL,\n ChatPath: \"chat/completions\"\n};\nconst XAI = {\n ExampleEndpoint: XAI_BASE_URL,\n ChatPath: \"v1/chat/completions\"\n};\nconst ChatGLM = {\n ExampleEndpoint: CHATGLM_BASE_URL,\n ChatPath: \"api/paas/v4/chat/completions\",\n ImagePath: \"api/paas/v4/images/generations\",\n VideoPath: \"api/paas/v4/videos/generations\"\n};\nconst SiliconFlow = {\n ExampleEndpoint: SILICONFLOW_BASE_URL,\n ChatPath: \"v1/chat/completions\"\n};\nconst DEFAULT_INPUT_TEMPLATE = `{{input}}`; // input / time / model / lang\n// export const DEFAULT_SYSTEM_TEMPLATE = `\n// You are ChatGPT, a large language model trained by {{ServiceProvider}}.\n// Knowledge cutoff: {{cutoff}}\n// Current model: {{model}}\n// Current time: {{time}}\n// Latex inline: $x^2$\n// Latex block: $$e=mc^2$$\n// `;\nconst DEFAULT_SYSTEM_TEMPLATE = `\r\nYou are ChatGPT, a large language model trained by {{ServiceProvider}}.\r\nKnowledge cutoff: {{cutoff}}\r\nCurrent model: {{model}}\r\nCurrent time: {{time}}\r\nLatex inline: \\\\(x^2\\\\) \r\nLatex block: $$e=mc^2$$\r\n`;\nconst MCP_TOOLS_TEMPLATE = `\r\n[clientId]\r\n{{ clientId }}\r\n[tools]\r\n{{ tools }}\r\n`;\nconst MCP_SYSTEM_TEMPLATE = `\r\nYou are an AI assistant with access to system tools. Your role is to help users by combining natural language understanding with tool operations when needed.\r\n\r\n1. AVAILABLE TOOLS:\r\n{{ MCP_TOOLS }}\r\n\r\n2. WHEN TO USE TOOLS:\r\n - ALWAYS USE TOOLS when they can help answer user questions\r\n - DO NOT just describe what you could do - TAKE ACTION immediately\r\n - If you're not sure whether to use a tool, USE IT\r\n - Common triggers for tool use:\r\n * Questions about files or directories\r\n * Requests to check, list, or manipulate system resources\r\n * Any query that can be answered with available tools\r\n\r\n3. HOW TO USE TOOLS:\r\n A. Tool Call Format:\r\n - Use markdown code blocks with format: \\`\\`\\`json:mcp:{clientId}\\`\\`\\`\r\n - Always include:\r\n * method: \"tools/call\"Only this method is supported\r\n * params: \r\n - name: must match an available primitive name\r\n - arguments: required parameters for the primitive\r\n\r\n B. Response Format:\r\n - Tool responses will come as user messages\r\n - Format: \\`\\`\\`json:mcp-response:{clientId}\\`\\`\\`\r\n - Wait for response before making another tool call\r\n\r\n C. Important Rules:\r\n - Only use tools/call method\r\n - Only ONE tool call per message\r\n - ALWAYS TAKE ACTION instead of just describing what you could do\r\n - Include the correct clientId in code block language tag\r\n - Verify arguments match the primitive's requirements\r\n\r\n4. INTERACTION FLOW:\r\n A. When user makes a request:\r\n - IMMEDIATELY use appropriate tool if available\r\n - DO NOT ask if user wants you to use the tool\r\n - DO NOT just describe what you could do\r\n B. After receiving tool response:\r\n - Explain results clearly\r\n - Take next appropriate action if needed\r\n C. If tools fail:\r\n - Explain the error\r\n - Try alternative approach immediately\r\n\r\n5. EXAMPLE INTERACTION:\r\n\r\n good example:\r\n\r\n \\`\\`\\`json:mcp:filesystem\r\n {\r\n \"method\": \"tools/call\",\r\n \"params\": {\r\n \"name\": \"list_allowed_directories\",\r\n \"arguments\": {}\r\n }\r\n }\r\n \\`\\`\\`\"\r\n\r\n\r\n \\`\\`\\`json:mcp-response:filesystem\r\n {\r\n \"method\": \"tools/call\",\r\n \"params\": {\r\n \"name\": \"write_file\",\r\n \"arguments\": {\r\n \"path\": \"/Users/river/dev/nextchat/test/joke.txt\",\r\n \"content\": \"为什么数学书总是感到忧伤?因为它有太多的问题。\"\r\n }\r\n }\r\n }\r\n\\`\\`\\`\r\n\r\n follwing is the wrong! mcp json example:\r\n\r\n \\`\\`\\`json:mcp:filesystem\r\n {\r\n \"method\": \"write_file\",\r\n \"params\": {\r\n \"path\": \"NextChat_Information.txt\",\r\n \"content\": \"1\"\r\n }\r\n }\r\n \\`\\`\\`\r\n\r\n This is wrong because the method is not tools/call.\r\n \r\n \\`\\`\\`{\r\n \"method\": \"search_repositories\",\r\n \"params\": {\r\n \"query\": \"2oeee\"\r\n }\r\n}\r\n \\`\\`\\`\r\n\r\n This is wrong because the method is not tools/call.!!!!!!!!!!!\r\n\r\n the right format is:\r\n \\`\\`\\`json:mcp:filesystem\r\n {\r\n \"method\": \"tools/call\",\r\n \"params\": {\r\n \"name\": \"search_repositories\",\r\n \"arguments\": {\r\n \"query\": \"2oeee\"\r\n }\r\n }\r\n }\r\n \\`\\`\\`\r\n \r\n please follow the format strictly ONLY use tools/call method!!!!!!!!!!!\r\n \r\n`;\nconst SUMMARIZE_MODEL = \"gpt-4o-mini\";\nconst GEMINI_SUMMARIZE_MODEL = \"gemini-pro\";\nconst DEEPSEEK_SUMMARIZE_MODEL = \"deepseek-ai/DeepSeek-V3\";\nconst KnowledgeCutOffDate = {\n default: \"2021-09\",\n \"gpt-4-turbo\": \"2023-12\",\n \"gpt-4-turbo-2024-04-09\": \"2023-12\",\n \"gpt-4-turbo-preview\": \"2023-12\",\n \"gpt-4o\": \"2023-10\",\n \"gpt-4o-2024-05-13\": \"2023-10\",\n \"gpt-4o-2024-08-06\": \"2023-10\",\n \"gpt-4o-2024-11-20\": \"2023-10\",\n \"chatgpt-4o-latest\": \"2023-10\",\n \"gpt-4o-mini\": \"2023-10\",\n \"gpt-4o-mini-2024-07-18\": \"2023-10\",\n \"gpt-4-vision-preview\": \"2023-04\",\n \"o1-mini-2024-09-12\": \"2023-10\",\n \"o1-mini\": \"2023-10\",\n \"o1-preview-2024-09-12\": \"2023-10\",\n \"o1-preview\": \"2023-10\",\n \"o1-2024-12-17\": \"2023-10\",\n o1: \"2023-10\",\n \"o3-mini-2025-01-31\": \"2023-10\",\n \"o3-mini\": \"2023-10\",\n // After improvements,\n // it's now easier to add \"KnowledgeCutOffDate\" instead of stupid hardcoding it, as was done previously.\n \"gemini-pro\": \"2023-12\",\n \"gemini-pro-vision\": \"2023-12\",\n \"deepseek-chat\": \"2024-07\",\n \"deepseek-coder\": \"2024-07\"\n};\nconst DEFAULT_TTS_ENGINE = \"OpenAI-TTS\";\nconst DEFAULT_TTS_ENGINES = [\n \"OpenAI-TTS\",\n \"Edge-TTS\"\n];\nconst DEFAULT_TTS_MODEL = \"tts-1\";\nconst DEFAULT_TTS_VOICE = \"alloy\";\nconst DEFAULT_TTS_MODELS = [\n \"tts-1\",\n \"tts-1-hd\"\n];\nconst DEFAULT_TTS_VOICES = [\n \"alloy\",\n \"echo\",\n \"fable\",\n \"onyx\",\n \"nova\",\n \"shimmer\"\n];\nconst VISION_MODEL_REGEXES = [\n /vision/,\n /gpt-4o/,\n /claude-3/,\n /gemini-1\\.5/,\n /gemini-exp/,\n /gemini-2\\.0/,\n /learnlm/,\n /qwen-vl/,\n /qwen2-vl/,\n /gpt-4-turbo(?!.*preview)/,\n /^dall-e-3$/,\n /glm-4v/\n];\nconst EXCLUDE_VISION_MODEL_REGEXES = [\n /claude-3-5-haiku-20241022/\n];\nconst openaiModels = [];\nconst googleModels = [];\nconst anthropicModels = [];\nconst baiduModels = [];\nconst bytedanceModels = [];\nconst alibabaModes = [];\nconst tencentModels = [];\nconst moonshotModes = [];\nconst iflytekModels = [];\nconst deepseekModels = [];\nconst xAIModes = [];\nconst chatglmModels = [];\nconst siliconflowModels = [\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-R1\"\n];\nlet seq = 1000; // 内置的模型序号生成器从1000开始\nconst DEFAULT_MODELS = [\n ...openaiModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"openai\",\n providerName: \"OpenAI\",\n providerType: \"openai\",\n sorted: 1\n }\n })),\n ...openaiModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"azure\",\n providerName: \"Azure\",\n providerType: \"azure\",\n sorted: 2\n }\n })),\n ...googleModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"google\",\n providerName: \"Google\",\n providerType: \"google\",\n sorted: 3\n }\n })),\n ...anthropicModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"anthropic\",\n providerName: \"Anthropic\",\n providerType: \"anthropic\",\n sorted: 4\n }\n })),\n ...baiduModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"baidu\",\n providerName: \"Baidu\",\n providerType: \"baidu\",\n sorted: 5\n }\n })),\n ...bytedanceModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"bytedance\",\n providerName: \"ByteDance\",\n providerType: \"bytedance\",\n sorted: 6\n }\n })),\n ...alibabaModes.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"alibaba\",\n providerName: \"Alibaba\",\n providerType: \"alibaba\",\n sorted: 7\n }\n })),\n ...tencentModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"tencent\",\n providerName: \"Tencent\",\n providerType: \"tencent\",\n sorted: 8\n }\n })),\n ...moonshotModes.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"moonshot\",\n providerName: \"Moonshot\",\n providerType: \"moonshot\",\n sorted: 9\n }\n })),\n ...iflytekModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"iflytek\",\n providerName: \"Iflytek\",\n providerType: \"iflytek\",\n sorted: 10\n }\n })),\n ...xAIModes.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"xai\",\n providerName: \"XAI\",\n providerType: \"xai\",\n sorted: 11\n }\n })),\n ...chatglmModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"chatglm\",\n providerName: \"ChatGLM\",\n providerType: \"chatglm\",\n sorted: 12\n }\n })),\n ...deepseekModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"deepseek\",\n providerName: \"DeepSeek\",\n providerType: \"deepseek\",\n sorted: 13\n }\n })),\n ...siliconflowModels.map((name)=>({\n name,\n available: true,\n sorted: seq++,\n provider: {\n id: \"siliconflow\",\n providerName: \"SiliconFlow\",\n providerType: \"siliconflow\",\n sorted: 14\n }\n }))\n];\nconst CHAT_PAGE_SIZE = 15;\nconst MAX_RENDER_MSG_COUNT = 45;\n// some famous webdav endpoints\nconst internalAllowedWebDavEndpoints = [\n \"https://dav.jianguoyun.com/dav/\",\n \"https://dav.dropdav.com/\",\n \"https://dav.box.com/dav\",\n \"https://nanao.teracloud.jp/dav/\",\n \"https://bora.teracloud.jp/dav/\",\n \"https://webdav.4shared.com/\",\n \"https://dav.idrivesync.com\",\n \"https://webdav.yandex.com\",\n \"https://app.koofr.net/dav/Koofr\"\n];\nconst DEFAULT_GA_ID = \"G-89WN60ZK2E\";\nconst SAAS_CHAT_URL = \"https://nextchat.dev/chat\";\nconst SAAS_CHAT_UTM_URL = \"https://nextchat.dev/chat?utm=github\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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V0FBVztZQUNYQyxRQUFRTDtZQUNSTSxVQUFVO2dCQUNSM0UsSUFBSTtnQkFDSjRFLGNBQWM7Z0JBQ2RDLGNBQWM7Z0JBQ2RILFFBQVE7WUFDVjtRQUNGO0NBQ0QsQ0FBVTtBQUVKLE1BQU1JLGlCQUFpQixHQUFHO0FBQzFCLE1BQU1DLHVCQUF1QixHQUFHO0FBRXZDLCtCQUErQjtBQUN4QixNQUFNQyxpQ0FBaUM7SUFDNUM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0QsQ0FBQztBQUVLLE1BQU1DLGdCQUFnQixlQUFlO0FBRXJDLE1BQU1DLGdCQUFnQiw0QkFBNEI7QUFDbEQsTUFBTUMsb0JBQW9CLHVDQUF1QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvY29uc3RhbnQudHM/YWY0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1dORVIgPSBcIkNoYXRHUFROZXh0V2ViXCI7XHJcbmV4cG9ydCBjb25zdCBSRVBPID0gXCJDaGF0R1BULU5leHQtV2ViXCI7XHJcbmV4cG9ydCBjb25zdCBSRVBPX1VSTCA9IGBodHRwczovL2dpdGh1Yi5jb20vJHtPV05FUn0vJHtSRVBPfWA7XHJcbmV4cG9ydCBjb25zdCBQTFVHSU5TX1JFUE9fVVJMID0gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke09XTkVSfS9OZXh0Q2hhdC1Bd2Vzb21lLVBsdWdpbnNgO1xyXG5leHBvcnQgY29uc3QgSVNTVUVfVVJMID0gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke09XTkVSfS8ke1JFUE99L2lzc3Vlc2A7XHJcbmV4cG9ydCBjb25zdCBVUERBVEVfVVJMID0gYCR7UkVQT19VUkx9I2tlZXAtdXBkYXRlZGA7XHJcbmV4cG9ydCBjb25zdCBSRUxFQVNFX1VSTCA9IGAke1JFUE9fVVJMfS9yZWxlYXNlc2A7XHJcbmV4cG9ydCBjb25zdCBGRVRDSF9DT01NSVRfVVJMID0gYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtPV05FUn0vJHtSRVBPfS9jb21taXRzP3Blcl9wYWdlPTFgO1xyXG5leHBvcnQgY29uc3QgRkVUQ0hfVEFHX1VSTCA9IGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7T1dORVJ9LyR7UkVQT30vdGFncz9wZXJfcGFnZT0xYDtcclxuZXhwb3J0IGNvbnN0IFJVTlRJTUVfQ09ORklHX0RPTSA9IFwiZGFuZ2VyLXJ1bnRpbWUtY29uZmlnXCI7XHJcblxyXG5leHBvcnQgY29uc3QgU1RBQklMSVRZX0JBU0VfVVJMID0gXCJodHRwczovL2FwaS5zdGFiaWxpdHkuYWlcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBPUEVOQUlfQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLm9wZW5haS5jb21cIjtcclxuZXhwb3J0IGNvbnN0IEFOVEhST1BJQ19CQVNFX1VSTCA9IFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFTUlOSV9CQVNFX1VSTCA9IFwiaHR0cHM6Ly9nZW5lcmF0aXZlbGFuZ3VhZ2UuZ29vZ2xlYXBpcy5jb20vXCI7XHJcblxyXG5leHBvcnQgY29uc3QgQkFJRFVfQkFTRV9VUkwgPSBcImh0dHBzOi8vYWlwLmJhaWR1YmNlLmNvbVwiO1xyXG5leHBvcnQgY29uc3QgQkFJRFVfT0FUVUhfVVJMID0gYCR7QkFJRFVfQkFTRV9VUkx9L29hdXRoLzIuMC90b2tlbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQllURURBTkNFX0JBU0VfVVJMID0gXCJodHRwczovL2Fyay5jbi1iZWlqaW5nLnZvbGNlcy5jb21cIjtcclxuXHJcbmV4cG9ydCBjb25zdCBBTElCQUJBX0JBU0VfVVJMID0gXCJodHRwczovL2Rhc2hzY29wZS5hbGl5dW5jcy5jb20vYXBpL1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRFTkNFTlRfQkFTRV9VUkwgPSBcImh0dHBzOi8vaHVueXVhbi50ZW5jZW50Y2xvdWRhcGkuY29tXCI7XHJcblxyXG5leHBvcnQgY29uc3QgTU9PTlNIT1RfQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLm1vb25zaG90LmNuXCI7XHJcbmV4cG9ydCBjb25zdCBJRkxZVEVLX0JBU0VfVVJMID0gXCJodHRwczovL3NwYXJrLWFwaS1vcGVuLnhmLXl1bi5jb21cIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUVQU0VFS19CQVNFX1VSTCA9IFwiaHR0cHM6Ly9hcGkuZGVlcHNlZWsuY29tXCI7XHJcblxyXG5leHBvcnQgY29uc3QgWEFJX0JBU0VfVVJMID0gXCJodHRwczovL2FwaS54LmFpXCI7XHJcblxyXG5leHBvcnQgY29uc3QgQ0hBVEdMTV9CQVNFX1VSTCA9IFwiaHR0cHM6Ly9vcGVuLmJpZ21vZGVsLmNuXCI7XHJcblxyXG5leHBvcnQgY29uc3QgU0lMSUNPTkZMT1dfQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLnNpbGljb25mbG93LmNuXCI7XHJcblxyXG5leHBvcnQgY29uc3QgQ0FDSEVfVVJMX1BSRUZJWCA9IFwiL2FwaS9jYWNoZVwiO1xyXG5leHBvcnQgY29uc3QgVVBMT0FEX1VSTCA9IGAke0NBQ0hFX1VSTF9QUkVGSVh9L3VwbG9hZGA7XHJcblxyXG5leHBvcnQgZW51bSBQYXRoIHtcclxuICBIb21lID0gXCIvXCIsXHJcbiAgQ2hhdCA9IFwiL2NoYXRcIixcclxuICBTZXR0aW5ncyA9IFwiL3NldHRpbmdzXCIsXHJcbiAgTmV3Q2hhdCA9IFwiL25ldy1jaGF0XCIsXHJcbiAgTWFza3MgPSBcIi9tYXNrc1wiLFxyXG4gIFBsdWdpbnMgPSBcIi9wbHVnaW5zXCIsXHJcbiAgQXV0aCA9IFwiL2F1dGhcIixcclxuICBTZCA9IFwiL3NkXCIsXHJcbiAgU2ROZXcgPSBcIi9zZC1uZXdcIixcclxuICBBcnRpZmFjdHMgPSBcIi9hcnRpZmFjdHNcIixcclxuICBTZWFyY2hDaGF0ID0gXCIvc2VhcmNoLWNoYXRcIixcclxuICBNY3BNYXJrZXQgPSBcIi9tY3AtbWFya2V0XCIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEFwaVBhdGgge1xyXG4gIENvcnMgPSBcIlwiLFxyXG4gIEF6dXJlID0gXCIvYXBpL2F6dXJlXCIsXHJcbiAgT3BlbkFJID0gXCIvYXBpL29wZW5haVwiLFxyXG4gIEFudGhyb3BpYyA9IFwiL2FwaS9hbnRocm9waWNcIixcclxuICBHb29nbGUgPSBcIi9hcGkvZ29vZ2xlXCIsXHJcbiAgQmFpZHUgPSBcIi9hcGkvYmFpZHVcIixcclxuICBCeXRlRGFuY2UgPSBcIi9hcGkvYnl0ZWRhbmNlXCIsXHJcbiAgQWxpYmFiYSA9IFwiL2FwaS9hbGliYWJhXCIsXHJcbiAgVGVuY2VudCA9IFwiL2FwaS90ZW5jZW50XCIsXHJcbiAgTW9vbnNob3QgPSBcIi9hcGkvbW9vbnNob3RcIixcclxuICBJZmx5dGVrID0gXCIvYXBpL2lmbHl0ZWtcIixcclxuICBTdGFiaWxpdHkgPSBcIi9hcGkvc3RhYmlsaXR5XCIsXHJcbiAgQXJ0aWZhY3RzID0gXCIvYXBpL2FydGlmYWN0c1wiLFxyXG4gIFhBSSA9IFwiL2FwaS94YWlcIixcclxuICBDaGF0R0xNID0gXCIvYXBpL2NoYXRnbG1cIixcclxuICBEZWVwU2VlayA9IFwiL2FwaS9kZWVwc2Vla1wiLFxyXG4gIFNpbGljb25GbG93ID0gXCIvYXBpL3NpbGljb25mbG93XCIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNsb3RJRCB7XHJcbiAgQXBwQm9keSA9IFwiYXBwLWJvZHlcIixcclxuICBDdXN0b21Nb2RlbCA9IFwiY3VzdG9tLW1vZGVsXCIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVOYW1lIHtcclxuICBNYXNrcyA9IFwibWFza3MuanNvblwiLFxyXG4gIFByb21wdHMgPSBcInByb21wdHMuanNvblwiLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTdG9yZUtleSB7XHJcbiAgQ2hhdCA9IFwiY2hhdC1uZXh0LXdlYi1zdG9yZVwiLFxyXG4gIFBsdWdpbiA9IFwiY2hhdC1uZXh0LXdlYi1wbHVnaW5cIixcclxuICBBY2Nlc3MgPSBcImFjY2Vzcy1jb250cm9sXCIsXHJcbiAgQ29uZmlnID0gXCJhcHAtY29uZmlnXCIsXHJcbiAgTWFzayA9IFwibWFzay1zdG9yZVwiLFxyXG4gIFByb21wdCA9IFwicHJvbXB0LXN0b3JlXCIsXHJcbiAgVXBkYXRlID0gXCJjaGF0LXVwZGF0ZVwiLFxyXG4gIFN5bmMgPSBcInN5bmNcIixcclxuICBTZExpc3QgPSBcInNkLWxpc3RcIixcclxuICBNY3AgPSBcIm1jcC1zdG9yZVwiLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TSURFQkFSX1dJRFRIID0gMzAwO1xyXG5leHBvcnQgY29uc3QgTUFYX1NJREVCQVJfV0lEVEggPSA1MDA7XHJcbmV4cG9ydCBjb25zdCBNSU5fU0lERUJBUl9XSURUSCA9IDIzMDtcclxuZXhwb3J0IGNvbnN0IE5BUlJPV19TSURFQkFSX1dJRFRIID0gMTAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFDQ0VTU19DT0RFX1BSRUZJWCA9IFwibmstXCI7XHJcblxyXG5leHBvcnQgY29uc3QgTEFTVF9JTlBVVF9LRVkgPSBcImxhc3QtaW5wdXRcIjtcclxuZXhwb3J0IGNvbnN0IFVORklOSVNIRURfSU5QVVQgPSAoaWQ6IHN0cmluZykgPT4gXCJ1bmZpbmlzaGVkLWlucHV0LVwiICsgaWQ7XHJcblxyXG5leHBvcnQgY29uc3QgU1RPUkFHRV9LRVkgPSBcImNoYXRncHQtbmV4dC13ZWJcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBSRVFVRVNUX1RJTUVPVVRfTVMgPSA2MDAwMDtcclxuZXhwb3J0IGNvbnN0IFJFUVVFU1RfVElNRU9VVF9NU19GT1JfVEhJTktJTkcgPSBSRVFVRVNUX1RJTUVPVVRfTVMgKiA1O1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUE9SVF9NRVNTQUdFX0NMQVNTX05BTUUgPSBcImV4cG9ydC1tYXJrZG93blwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2VydmljZVByb3ZpZGVyIHtcclxuICBPcGVuQUkgPSBcIk9wZW5BSVwiLFxyXG4gIEF6dXJlID0gXCJBenVyZVwiLFxyXG4gIEdvb2dsZSA9IFwiR29vZ2xlXCIsXHJcbiAgQW50aHJvcGljID0gXCJBbnRocm9waWNcIixcclxuICBCYWlkdSA9IFwiQmFpZHVcIixcclxuICBCeXRlRGFuY2UgPSBcIkJ5dGVEYW5jZVwiLFxyXG4gIEFsaWJhYmEgPSBcIkFsaWJhYmFcIixcclxuICBUZW5jZW50ID0gXCJUZW5jZW50XCIsXHJcbiAgTW9vbnNob3QgPSBcIk1vb25zaG90XCIsXHJcbiAgU3RhYmlsaXR5ID0gXCJTdGFiaWxpdHlcIixcclxuICBJZmx5dGVrID0gXCJJZmx5dGVrXCIsXHJcbiAgWEFJID0gXCJYQUlcIixcclxuICBDaGF0R0xNID0gXCJDaGF0R0xNXCIsXHJcbiAgRGVlcFNlZWsgPSBcIkRlZXBTZWVrXCIsXHJcbiAgU2lsaWNvbkZsb3cgPSBcIlNpbGljb25GbG93XCIsXHJcbn1cclxuXHJcbi8vIEdvb2dsZSBBUEkgc2FmZXR5IHNldHRpbmdzLCBzZWUgaHR0cHM6Ly9haS5nb29nbGUuZGV2L2dlbWluaS1hcGkvZG9jcy9zYWZldHktc2V0dGluZ3NcclxuLy8gQkxPQ0tfTk9ORSB3aWxsIG5vdCBibG9jayBhbnkgY29udGVudCwgYW5kIEJMT0NLX09OTFlfSElHSCB3aWxsIGJsb2NrIG9ubHkgaGlnaC1yaXNrIGNvbnRlbnQuXHJcbmV4cG9ydCBlbnVtIEdvb2dsZVNhZmV0eVNldHRpbmdzVGhyZXNob2xkIHtcclxuICBCTE9DS19OT05FID0gXCJCTE9DS19OT05FXCIsXHJcbiAgQkxPQ0tfT05MWV9ISUdIID0gXCJCTE9DS19PTkxZX0hJR0hcIixcclxuICBCTE9DS19NRURJVU1fQU5EX0FCT1ZFID0gXCJCTE9DS19NRURJVU1fQU5EX0FCT1ZFXCIsXHJcbiAgQkxPQ0tfTE9XX0FORF9BQk9WRSA9IFwiQkxPQ0tfTE9XX0FORF9BQk9WRVwiLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBNb2RlbFByb3ZpZGVyIHtcclxuICBTdGFiaWxpdHkgPSBcIlN0YWJpbGl0eVwiLFxyXG4gIEdQVCA9IFwiR1BUXCIsXHJcbiAgR2VtaW5pUHJvID0gXCJHZW1pbmlQcm9cIixcclxuICBDbGF1ZGUgPSBcIkNsYXVkZVwiLFxyXG4gIEVybmllID0gXCJFcm5pZVwiLFxyXG4gIERvdWJhbyA9IFwiRG91YmFvXCIsXHJcbiAgUXdlbiA9IFwiUXdlblwiLFxyXG4gIEh1bnl1YW4gPSBcIkh1bnl1YW5cIixcclxuICBNb29uc2hvdCA9IFwiTW9vbnNob3RcIixcclxuICBJZmx5dGVrID0gXCJJZmx5dGVrXCIsXHJcbiAgWEFJID0gXCJYQUlcIixcclxuICBDaGF0R0xNID0gXCJDaGF0R0xNXCIsXHJcbiAgRGVlcFNlZWsgPSBcIkRlZXBTZWVrXCIsXHJcbiAgU2lsaWNvbkZsb3cgPSBcIlNpbGljb25GbG93XCIsXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBTdGFiaWxpdHkgPSB7XHJcbiAgR2VuZXJhdGVQYXRoOiBcInYyYmV0YS9zdGFibGUtaW1hZ2UvZ2VuZXJhdGVcIixcclxuICBFeGFtcGxlRW5kcG9pbnQ6IFwiaHR0cHM6Ly9hcGkuc3RhYmlsaXR5LmFpXCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQW50aHJvcGljID0ge1xyXG4gIENoYXRQYXRoOiBcInYxL21lc3NhZ2VzXCIsXHJcbiAgQ2hhdFBhdGgxOiBcInYxL2NvbXBsZXRlXCIsXHJcbiAgRXhhbXBsZUVuZHBvaW50OiBcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIixcclxuICBWaXNpb246IFwiMjAyMy0wNi0wMVwiLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IE9wZW5haVBhdGggPSB7XHJcbiAgQ2hhdFBhdGg6IFwidjEvY2hhdC9jb21wbGV0aW9uc1wiLFxyXG4gIFNwZWVjaFBhdGg6IFwidjEvYXVkaW8vc3BlZWNoXCIsXHJcbiAgSW1hZ2VQYXRoOiBcInYxL2ltYWdlcy9nZW5lcmF0aW9uc1wiLFxyXG4gIFVzYWdlUGF0aDogXCJkYXNoYm9hcmQvYmlsbGluZy91c2FnZVwiLFxyXG4gIFN1YnNQYXRoOiBcImRhc2hib2FyZC9iaWxsaW5nL3N1YnNjcmlwdGlvblwiLFxyXG4gIExpc3RNb2RlbFBhdGg6IFwidjEvbW9kZWxzXCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQXp1cmUgPSB7XHJcbiAgQ2hhdFBhdGg6IChkZXBsb3lOYW1lOiBzdHJpbmcsIGFwaVZlcnNpb246IHN0cmluZykgPT5cclxuICAgIGBkZXBsb3ltZW50cy8ke2RlcGxveU5hbWV9L2NoYXQvY29tcGxldGlvbnM/YXBpLXZlcnNpb249JHthcGlWZXJzaW9ufWAsXHJcbiAgLy8gaHR0cHM6Ly88eW91cl9yZXNvdXJjZV9uYW1lPi5vcGVuYWkuYXp1cmUuY29tL29wZW5haS9kZXBsb3ltZW50cy88eW91cl9kZXBsb3ltZW50X25hbWU+L2ltYWdlcy9nZW5lcmF0aW9ucz9hcGktdmVyc2lvbj08YXBpX3ZlcnNpb24+XHJcbiAgSW1hZ2VQYXRoOiAoZGVwbG95TmFtZTogc3RyaW5nLCBhcGlWZXJzaW9uOiBzdHJpbmcpID0+XHJcbiAgICBgZGVwbG95bWVudHMvJHtkZXBsb3lOYW1lfS9pbWFnZXMvZ2VuZXJhdGlvbnM/YXBpLXZlcnNpb249JHthcGlWZXJzaW9ufWAsXHJcbiAgRXhhbXBsZUVuZHBvaW50OiBcImh0dHBzOi8ve3Jlc291cmNlLXVybH0vb3BlbmFpXCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgR29vZ2xlID0ge1xyXG4gIEV4YW1wbGVFbmRwb2ludDogXCJodHRwczovL2dlbmVyYXRpdmVsYW5ndWFnZS5nb29nbGVhcGlzLmNvbS9cIixcclxuICBDaGF0UGF0aDogKG1vZGVsTmFtZTogc3RyaW5nKSA9PlxyXG4gICAgYHYxYmV0YS9tb2RlbHMvJHttb2RlbE5hbWV9OnN0cmVhbUdlbmVyYXRlQ29udGVudGAsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQmFpZHUgPSB7XHJcbiAgRXhhbXBsZUVuZHBvaW50OiBCQUlEVV9CQVNFX1VSTCxcclxuICBDaGF0UGF0aDogKG1vZGVsTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgZW5kcG9pbnQgPSBtb2RlbE5hbWU7XHJcbiAgICBpZiAobW9kZWxOYW1lID09PSBcImVybmllLTQuMC04a1wiKSB7XHJcbiAgICAgIGVuZHBvaW50ID0gXCJjb21wbGV0aW9uc19wcm9cIjtcclxuICAgIH1cclxuICAgIGlmIChtb2RlbE5hbWUgPT09IFwiZXJuaWUtNC4wLThrLXByZXZpZXctMDUxOFwiKSB7XHJcbiAgICAgIGVuZHBvaW50ID0gXCJjb21wbGV0aW9uc19hZHZfcHJvXCI7XHJcbiAgICB9XHJcbiAgICBpZiAobW9kZWxOYW1lID09PSBcImVybmllLTMuNS04a1wiKSB7XHJcbiAgICAgIGVuZHBvaW50ID0gXCJjb21wbGV0aW9uc1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG1vZGVsTmFtZSA9PT0gXCJlcm5pZS1zcGVlZC04a1wiKSB7XHJcbiAgICAgIGVuZHBvaW50ID0gXCJlcm5pZV9zcGVlZFwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGBycGMvMi4wL2FpX2N1c3RvbS92MS93ZW54aW53b3Jrc2hvcC9jaGF0LyR7ZW5kcG9pbnR9YDtcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEJ5dGVEYW5jZSA9IHtcclxuICBFeGFtcGxlRW5kcG9pbnQ6IFwiaHR0cHM6Ly9hcmsuY24tYmVpamluZy52b2xjZXMuY29tL2FwaS9cIixcclxuICBDaGF0UGF0aDogXCJhcGkvdjMvY2hhdC9jb21wbGV0aW9uc1wiLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFsaWJhYmEgPSB7XHJcbiAgRXhhbXBsZUVuZHBvaW50OiBBTElCQUJBX0JBU0VfVVJMLFxyXG4gIENoYXRQYXRoOiBcInYxL3NlcnZpY2VzL2FpZ2MvdGV4dC1nZW5lcmF0aW9uL2dlbmVyYXRpb25cIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBUZW5jZW50ID0ge1xyXG4gIEV4YW1wbGVFbmRwb2ludDogVEVOQ0VOVF9CQVNFX1VSTCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBNb29uc2hvdCA9IHtcclxuICBFeGFtcGxlRW5kcG9pbnQ6IE1PT05TSE9UX0JBU0VfVVJMLFxyXG4gIENoYXRQYXRoOiBcInYxL2NoYXQvY29tcGxldGlvbnNcIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBJZmx5dGVrID0ge1xyXG4gIEV4YW1wbGVFbmRwb2ludDogSUZMWVRFS19CQVNFX1VSTCxcclxuICBDaGF0UGF0aDogXCJ2MS9jaGF0L2NvbXBsZXRpb25zXCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgRGVlcFNlZWsgPSB7XHJcbiAgRXhhbXBsZUVuZHBvaW50OiBERUVQU0VFS19CQVNFX1VSTCxcclxuICBDaGF0UGF0aDogXCJjaGF0L2NvbXBsZXRpb25zXCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgWEFJID0ge1xyXG4gIEV4YW1wbGVFbmRwb2ludDogWEFJX0JBU0VfVVJMLFxyXG4gIENoYXRQYXRoOiBcInYxL2NoYXQvY29tcGxldGlvbnNcIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBDaGF0R0xNID0ge1xyXG4gIEV4YW1wbGVFbmRwb2ludDogQ0hBVEdMTV9CQVNFX1VSTCxcclxuICBDaGF0UGF0aDogXCJhcGkvcGFhcy92NC9jaGF0L2NvbXBsZXRpb25zXCIsXHJcbiAgSW1hZ2VQYXRoOiBcImFwaS9wYWFzL3Y0L2ltYWdlcy9nZW5lcmF0aW9uc1wiLFxyXG4gIFZpZGVvUGF0aDogXCJhcGkvcGFhcy92NC92aWRlb3MvZ2VuZXJhdGlvbnNcIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBTaWxpY29uRmxvdyA9IHtcclxuICBFeGFtcGxlRW5kcG9pbnQ6IFNJTElDT05GTE9XX0JBU0VfVVJMLFxyXG4gIENoYXRQYXRoOiBcInYxL2NoYXQvY29tcGxldGlvbnNcIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUX1RFTVBMQVRFID0gYHt7aW5wdXR9fWA7IC8vIGlucHV0IC8gdGltZSAvIG1vZGVsIC8gbGFuZ1xyXG4vLyBleHBvcnQgY29uc3QgREVGQVVMVF9TWVNURU1fVEVNUExBVEUgPSBgXHJcbi8vIFlvdSBhcmUgQ2hhdEdQVCwgYSBsYXJnZSBsYW5ndWFnZSBtb2RlbCB0cmFpbmVkIGJ5IHt7U2VydmljZVByb3ZpZGVyfX0uXHJcbi8vIEtub3dsZWRnZSBjdXRvZmY6IHt7Y3V0b2ZmfX1cclxuLy8gQ3VycmVudCBtb2RlbDoge3ttb2RlbH19XHJcbi8vIEN1cnJlbnQgdGltZToge3t0aW1lfX1cclxuLy8gTGF0ZXggaW5saW5lOiAkeF4yJFxyXG4vLyBMYXRleCBibG9jazogJCRlPW1jXjIkJFxyXG4vLyBgO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TWVNURU1fVEVNUExBVEUgPSBgXHJcbllvdSBhcmUgQ2hhdEdQVCwgYSBsYXJnZSBsYW5ndWFnZSBtb2RlbCB0cmFpbmVkIGJ5IHt7U2VydmljZVByb3ZpZGVyfX0uXHJcbktub3dsZWRnZSBjdXRvZmY6IHt7Y3V0b2ZmfX1cclxuQ3VycmVudCBtb2RlbDoge3ttb2RlbH19XHJcbkN1cnJlbnQgdGltZToge3t0aW1lfX1cclxuTGF0ZXggaW5saW5lOiBcXFxcKHheMlxcXFwpIFxyXG5MYXRleCBibG9jazogJCRlPW1jXjIkJFxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1DUF9UT09MU19URU1QTEFURSA9IGBcclxuW2NsaWVudElkXVxyXG57eyBjbGllbnRJZCB9fVxyXG5bdG9vbHNdXHJcbnt7IHRvb2xzIH19XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgTUNQX1NZU1RFTV9URU1QTEFURSA9IGBcclxuWW91IGFyZSBhbiBBSSBhc3Npc3RhbnQgd2l0aCBhY2Nlc3MgdG8gc3lzdGVtIHRvb2xzLiBZb3VyIHJvbGUgaXMgdG8gaGVscCB1c2VycyBieSBjb21iaW5pbmcgbmF0dXJhbCBsYW5ndWFnZSB1bmRlcnN0YW5kaW5nIHdpdGggdG9vbCBvcGVyYXRpb25zIHdoZW4gbmVlZGVkLlxyXG5cclxuMS4gQVZBSUxBQkxFIFRPT0xTOlxyXG57eyBNQ1BfVE9PTFMgfX1cclxuXHJcbjIuIFdIRU4gVE8gVVNFIFRPT0xTOlxyXG4gICAtIEFMV0FZUyBVU0UgVE9PTFMgd2hlbiB0aGV5IGNhbiBoZWxwIGFuc3dlciB1c2VyIHF1ZXN0aW9uc1xyXG4gICAtIERPIE5PVCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IGNvdWxkIGRvIC0gVEFLRSBBQ1RJT04gaW1tZWRpYXRlbHlcclxuICAgLSBJZiB5b3UncmUgbm90IHN1cmUgd2hldGhlciB0byB1c2UgYSB0b29sLCBVU0UgSVRcclxuICAgLSBDb21tb24gdHJpZ2dlcnMgZm9yIHRvb2wgdXNlOlxyXG4gICAgICogUXVlc3Rpb25zIGFib3V0IGZpbGVzIG9yIGRpcmVjdG9yaWVzXHJcbiAgICAgKiBSZXF1ZXN0cyB0byBjaGVjaywgbGlzdCwgb3IgbWFuaXB1bGF0ZSBzeXN0ZW0gcmVzb3VyY2VzXHJcbiAgICAgKiBBbnkgcXVlcnkgdGhhdCBjYW4gYmUgYW5zd2VyZWQgd2l0aCBhdmFpbGFibGUgdG9vbHNcclxuXHJcbjMuIEhPVyBUTyBVU0UgVE9PTFM6XHJcbiAgIEEuIFRvb2wgQ2FsbCBGb3JtYXQ6XHJcbiAgICAgIC0gVXNlIG1hcmtkb3duIGNvZGUgYmxvY2tzIHdpdGggZm9ybWF0OiBcXGBcXGBcXGBqc29uOm1jcDp7Y2xpZW50SWR9XFxgXFxgXFxgXHJcbiAgICAgIC0gQWx3YXlzIGluY2x1ZGU6XHJcbiAgICAgICAgKiBtZXRob2Q6IFwidG9vbHMvY2FsbFwi77yIT25seSB0aGlzIG1ldGhvZCBpcyBzdXBwb3J0ZWTvvIlcclxuICAgICAgICAqIHBhcmFtczogXHJcbiAgICAgICAgICAtIG5hbWU6IG11c3QgbWF0Y2ggYW4gYXZhaWxhYmxlIHByaW1pdGl2ZSBuYW1lXHJcbiAgICAgICAgICAtIGFyZ3VtZW50czogcmVxdWlyZWQgcGFyYW1ldGVycyBmb3IgdGhlIHByaW1pdGl2ZVxyXG5cclxuICAgQi4gUmVzcG9uc2UgRm9ybWF0OlxyXG4gICAgICAtIFRvb2wgcmVzcG9uc2VzIHdpbGwgY29tZSBhcyB1c2VyIG1lc3NhZ2VzXHJcbiAgICAgIC0gRm9ybWF0OiBcXGBcXGBcXGBqc29uOm1jcC1yZXNwb25zZTp7Y2xpZW50SWR9XFxgXFxgXFxgXHJcbiAgICAgIC0gV2FpdCBmb3IgcmVzcG9uc2UgYmVmb3JlIG1ha2luZyBhbm90aGVyIHRvb2wgY2FsbFxyXG5cclxuICAgQy4gSW1wb3J0YW50IFJ1bGVzOlxyXG4gICAgICAtIE9ubHkgdXNlIHRvb2xzL2NhbGwgbWV0aG9kXHJcbiAgICAgIC0gT25seSBPTkUgdG9vbCBjYWxsIHBlciBtZXNzYWdlXHJcbiAgICAgIC0gQUxXQVlTIFRBS0UgQUNUSU9OIGluc3RlYWQgb2YganVzdCBkZXNjcmliaW5nIHdoYXQgeW91IGNvdWxkIGRvXHJcbiAgICAgIC0gSW5jbHVkZSB0aGUgY29ycmVjdCBjbGllbnRJZCBpbiBjb2RlIGJsb2NrIGxhbmd1YWdlIHRhZ1xyXG4gICAgICAtIFZlcmlmeSBhcmd1bWVudHMgbWF0Y2ggdGhlIHByaW1pdGl2ZSdzIHJlcXVpcmVtZW50c1xyXG5cclxuNC4gSU5URVJBQ1RJT04gRkxPVzpcclxuICAgQS4gV2hlbiB1c2VyIG1ha2VzIGEgcmVxdWVzdDpcclxuICAgICAgLSBJTU1FRElBVEVMWSB1c2UgYXBwcm9wcmlhdGUgdG9vbCBpZiBhdmFpbGFibGVcclxuICAgICAgLSBETyBOT1QgYXNrIGlmIHVzZXIgd2FudHMgeW91IHRvIHVzZSB0aGUgdG9vbFxyXG4gICAgICAtIERPIE5PVCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IGNvdWxkIGRvXHJcbiAgIEIuIEFmdGVyIHJlY2VpdmluZyB0b29sIHJlc3BvbnNlOlxyXG4gICAgICAtIEV4cGxhaW4gcmVzdWx0cyBjbGVhcmx5XHJcbiAgICAgIC0gVGFrZSBuZXh0IGFwcHJvcHJpYXRlIGFjdGlvbiBpZiBuZWVkZWRcclxuICAgQy4gSWYgdG9vbHMgZmFpbDpcclxuICAgICAgLSBFeHBsYWluIHRoZSBlcnJvclxyXG4gICAgICAtIFRyeSBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpbW1lZGlhdGVseVxyXG5cclxuNS4gRVhBTVBMRSBJTlRFUkFDVElPTjpcclxuXHJcbiAgZ29vZCBleGFtcGxlOlxyXG5cclxuICAgXFxgXFxgXFxganNvbjptY3A6ZmlsZXN5c3RlbVxyXG4gICB7XHJcbiAgICAgXCJtZXRob2RcIjogXCJ0b29scy9jYWxsXCIsXHJcbiAgICAgXCJwYXJhbXNcIjoge1xyXG4gICAgICAgXCJuYW1lXCI6IFwibGlzdF9hbGxvd2VkX2RpcmVjdG9yaWVzXCIsXHJcbiAgICAgICBcImFyZ3VtZW50c1wiOiB7fVxyXG4gICAgIH1cclxuICAgfVxyXG4gICBcXGBcXGBcXGBcIlxyXG5cclxuXHJcbiAgXFxgXFxgXFxganNvbjptY3AtcmVzcG9uc2U6ZmlsZXN5c3RlbVxyXG4gIHtcclxuICBcIm1ldGhvZFwiOiBcInRvb2xzL2NhbGxcIixcclxuICBcInBhcmFtc1wiOiB7XHJcbiAgICBcIm5hbWVcIjogXCJ3cml0ZV9maWxlXCIsXHJcbiAgICBcImFyZ3VtZW50c1wiOiB7XHJcbiAgICAgIFwicGF0aFwiOiBcIi9Vc2Vycy9yaXZlci9kZXYvbmV4dGNoYXQvdGVzdC9qb2tlLnR4dFwiLFxyXG4gICAgICBcImNvbnRlbnRcIjogXCLkuLrku4DkuYjmlbDlrabkuabmgLvmmK/mhJ/liLDlv6fkvKTvvJ/lm6DkuLrlroPmnInlpKrlpJrnmoTpl67popjjgIJcIlxyXG4gICAgfVxyXG4gIH1cclxuICB9XHJcblxcYFxcYFxcYFxyXG5cclxuICAgZm9sbHdpbmcgaXMgdGhlIHdyb25nISBtY3AganNvbiBleGFtcGxlOlxyXG5cclxuICAgXFxgXFxgXFxganNvbjptY3A6ZmlsZXN5c3RlbVxyXG4gICB7XHJcbiAgICAgIFwibWV0aG9kXCI6IFwid3JpdGVfZmlsZVwiLFxyXG4gICAgICBcInBhcmFtc1wiOiB7XHJcbiAgICAgICAgXCJwYXRoXCI6IFwiTmV4dENoYXRfSW5mb3JtYXRpb24udHh0XCIsXHJcbiAgICAgICAgXCJjb250ZW50XCI6IFwiMVwiXHJcbiAgICB9XHJcbiAgIH1cclxuICAgXFxgXFxgXFxgXHJcblxyXG4gICBUaGlzIGlzIHdyb25nIGJlY2F1c2UgdGhlIG1ldGhvZCBpcyBub3QgdG9vbHMvY2FsbC5cclxuICAgXHJcbiAgIFxcYFxcYFxcYHtcclxuICBcIm1ldGhvZFwiOiBcInNlYXJjaF9yZXBvc2l0b3JpZXNcIixcclxuICBcInBhcmFtc1wiOiB7XHJcbiAgICBcInF1ZXJ5XCI6IFwiMm9lZWVcIlxyXG4gIH1cclxufVxyXG4gICBcXGBcXGBcXGBcclxuXHJcbiAgIFRoaXMgaXMgd3JvbmcgYmVjYXVzZSB0aGUgbWV0aG9kIGlzIG5vdCB0b29scy9jYWxsLiEhISEhISEhISEhXHJcblxyXG4gICB0aGUgcmlnaHQgZm9ybWF0IGlzOlxyXG4gICBcXGBcXGBcXGBqc29uOm1jcDpmaWxlc3lzdGVtXHJcbiAgIHtcclxuICAgICBcIm1ldGhvZFwiOiBcInRvb2xzL2NhbGxcIixcclxuICAgICBcInBhcmFtc1wiOiB7XHJcbiAgICAgICBcIm5hbWVcIjogXCJzZWFyY2hfcmVwb3NpdG9yaWVzXCIsXHJcbiAgICAgICBcImFyZ3VtZW50c1wiOiB7XHJcbiAgICAgICAgIFwicXVlcnlcIjogXCIyb2VlZVwiXHJcbiAgICAgICB9XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgIFxcYFxcYFxcYFxyXG4gICBcclxuICAgcGxlYXNlIGZvbGxvdyB0aGUgZm9ybWF0IHN0cmljdGx5IE9OTFkgdXNlIHRvb2xzL2NhbGwgbWV0aG9kISEhISEhISEhISFcclxuICAgXHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgU1VNTUFSSVpFX01PREVMID0gXCJncHQtNG8tbWluaVwiO1xyXG5leHBvcnQgY29uc3QgR0VNSU5JX1NVTU1BUklaRV9NT0RFTCA9IFwiZ2VtaW5pLXByb1wiO1xyXG5leHBvcnQgY29uc3QgREVFUFNFRUtfU1VNTUFSSVpFX01PREVMID0gXCJkZWVwc2Vlay1haS9EZWVwU2Vlay1WM1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEtub3dsZWRnZUN1dE9mZkRhdGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgZGVmYXVsdDogXCIyMDIxLTA5XCIsXHJcbiAgXCJncHQtNC10dXJib1wiOiBcIjIwMjMtMTJcIixcclxuICBcImdwdC00LXR1cmJvLTIwMjQtMDQtMDlcIjogXCIyMDIzLTEyXCIsXHJcbiAgXCJncHQtNC10dXJiby1wcmV2aWV3XCI6IFwiMjAyMy0xMlwiLFxyXG4gIFwiZ3B0LTRvXCI6IFwiMjAyMy0xMFwiLFxyXG4gIFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJncHQtNG8tMjAyNC0wOC0wNlwiOiBcIjIwMjMtMTBcIixcclxuICBcImdwdC00by0yMDI0LTExLTIwXCI6IFwiMjAyMy0xMFwiLFxyXG4gIFwiY2hhdGdwdC00by1sYXRlc3RcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJncHQtNG8tbWluaVwiOiBcIjIwMjMtMTBcIixcclxuICBcImdwdC00by1taW5pLTIwMjQtMDctMThcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJncHQtNC12aXNpb24tcHJldmlld1wiOiBcIjIwMjMtMDRcIixcclxuICBcIm8xLW1pbmktMjAyNC0wOS0xMlwiOiBcIjIwMjMtMTBcIixcclxuICBcIm8xLW1pbmlcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJvMS1wcmV2aWV3LTIwMjQtMDktMTJcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJvMS1wcmV2aWV3XCI6IFwiMjAyMy0xMFwiLFxyXG4gIFwibzEtMjAyNC0xMi0xN1wiOiBcIjIwMjMtMTBcIixcclxuICBvMTogXCIyMDIzLTEwXCIsXHJcbiAgXCJvMy1taW5pLTIwMjUtMDEtMzFcIjogXCIyMDIzLTEwXCIsXHJcbiAgXCJvMy1taW5pXCI6IFwiMjAyMy0xMFwiLFxyXG4gIC8vIEFmdGVyIGltcHJvdmVtZW50cyxcclxuICAvLyBpdCdzIG5vdyBlYXNpZXIgdG8gYWRkIFwiS25vd2xlZGdlQ3V0T2ZmRGF0ZVwiIGluc3RlYWQgb2Ygc3R1cGlkIGhhcmRjb2RpbmcgaXQsIGFzIHdhcyBkb25lIHByZXZpb3VzbHkuXHJcbiAgXCJnZW1pbmktcHJvXCI6IFwiMjAyMy0xMlwiLFxyXG4gIFwiZ2VtaW5pLXByby12aXNpb25cIjogXCIyMDIzLTEyXCIsXHJcbiAgXCJkZWVwc2Vlay1jaGF0XCI6IFwiMjAyNC0wN1wiLFxyXG4gIFwiZGVlcHNlZWstY29kZXJcIjogXCIyMDI0LTA3XCIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9UVFNfRU5HSU5FID0gXCJPcGVuQUktVFRTXCI7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RUU19FTkdJTkVTID0gW1wiT3BlbkFJLVRUU1wiLCBcIkVkZ2UtVFRTXCJdO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9UVFNfTU9ERUwgPSBcInR0cy0xXCI7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RUU19WT0lDRSA9IFwiYWxsb3lcIjtcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFRTX01PREVMUyA9IFtcInR0cy0xXCIsIFwidHRzLTEtaGRcIl07XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RUU19WT0lDRVMgPSBbXHJcbiAgXCJhbGxveVwiLFxyXG4gIFwiZWNob1wiLFxyXG4gIFwiZmFibGVcIixcclxuICBcIm9ueXhcIixcclxuICBcIm5vdmFcIixcclxuICBcInNoaW1tZXJcIixcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBWSVNJT05fTU9ERUxfUkVHRVhFUyA9IFtcclxuICAvdmlzaW9uLyxcclxuICAvZ3B0LTRvLyxcclxuICAvY2xhdWRlLTMvLFxyXG4gIC9nZW1pbmktMVxcLjUvLFxyXG4gIC9nZW1pbmktZXhwLyxcclxuICAvZ2VtaW5pLTJcXC4wLyxcclxuICAvbGVhcm5sbS8sXHJcbiAgL3F3ZW4tdmwvLFxyXG4gIC9xd2VuMi12bC8sXHJcbiAgL2dwdC00LXR1cmJvKD8hLipwcmV2aWV3KS8sIC8vIE1hdGNoZXMgXCJncHQtNC10dXJib1wiIGJ1dCBub3QgXCJncHQtNC10dXJiby1wcmV2aWV3XCJcclxuICAvXmRhbGwtZS0zJC8sIC8vIE1hdGNoZXMgZXhhY3RseSBcImRhbGwtZS0zXCJcclxuICAvZ2xtLTR2LyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBFWENMVURFX1ZJU0lPTl9NT0RFTF9SRUdFWEVTID0gWy9jbGF1ZGUtMy01LWhhaWt1LTIwMjQxMDIyL107XHJcblxyXG5jb25zdCBvcGVuYWlNb2RlbHMgPSBbXHJcbl07XHJcblxyXG5jb25zdCBnb29nbGVNb2RlbHMgPSBbXHJcbl07XHJcblxyXG5jb25zdCBhbnRocm9waWNNb2RlbHMgPSBbXHJcbl07XHJcblxyXG5jb25zdCBiYWlkdU1vZGVscyA9IFtcclxuXTtcclxuXHJcbmNvbnN0IGJ5dGVkYW5jZU1vZGVscyA9IFtcclxuXTtcclxuXHJcbmNvbnN0IGFsaWJhYmFNb2RlcyA9IFtcclxuXTtcclxuXHJcbmNvbnN0IHRlbmNlbnRNb2RlbHMgPSBbXHJcbl07XHJcblxyXG5jb25zdCBtb29uc2hvdE1vZGVzID0gW107XHJcblxyXG5jb25zdCBpZmx5dGVrTW9kZWxzID0gW1xyXG5dO1xyXG5cclxuY29uc3QgZGVlcHNlZWtNb2RlbHMgPSBbXTtcclxuXHJcbmNvbnN0IHhBSU1vZGVzID0gW1xyXG5dO1xyXG5cclxuY29uc3QgY2hhdGdsbU1vZGVscyA9IFtcclxuXTtcclxuXHJcbmNvbnN0IHNpbGljb25mbG93TW9kZWxzID0gW1xyXG4gIFwiZGVlcHNlZWstYWkvRGVlcFNlZWstVjNcIixcclxuICBcImRlZXBzZWVrLWFpL0RlZXBTZWVrLVIxXCIsXHJcbl07XHJcblxyXG5sZXQgc2VxID0gMTAwMDsgLy8g5YaF572u55qE5qih5Z6L5bqP5Y+355Sf5oiQ5Zmo5LuOMTAwMOW8gOWni1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RFTFMgPSBbXHJcbiAgLi4ub3BlbmFpTW9kZWxzLm1hcCgobmFtZSkgPT4gKHtcclxuICAgIG5hbWUsXHJcbiAgICBhdmFpbGFibGU6IHRydWUsXHJcbiAgICBzb3J0ZWQ6IHNlcSsrLCAvLyBHbG9iYWwgc2VxdWVuY2Ugc29ydChpbmRleClcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcIm9wZW5haVwiLFxyXG4gICAgICBwcm92aWRlck5hbWU6IFwiT3BlbkFJXCIsXHJcbiAgICAgIHByb3ZpZGVyVHlwZTogXCJvcGVuYWlcIixcclxuICAgICAgc29ydGVkOiAxLCAvLyDov5nph4zmmK/lm7rlrprnmoTvvIznoa7kv53pobrluo/kuI7kuYvliY3lhoXnva7nmoTniYjmnKzkuIDoh7RcclxuICAgIH0sXHJcbiAgfSkpLFxyXG4gIC4uLm9wZW5haU1vZGVscy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcImF6dXJlXCIsXHJcbiAgICAgIHByb3ZpZGVyTmFtZTogXCJBenVyZVwiLFxyXG4gICAgICBwcm92aWRlclR5cGU6IFwiYXp1cmVcIixcclxuICAgICAgc29ydGVkOiAyLFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4uZ29vZ2xlTW9kZWxzLm1hcCgobmFtZSkgPT4gKHtcclxuICAgIG5hbWUsXHJcbiAgICBhdmFpbGFibGU6IHRydWUsXHJcbiAgICBzb3J0ZWQ6IHNlcSsrLFxyXG4gICAgcHJvdmlkZXI6IHtcclxuICAgICAgaWQ6IFwiZ29vZ2xlXCIsXHJcbiAgICAgIHByb3ZpZGVyTmFtZTogXCJHb29nbGVcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcImdvb2dsZVwiLFxyXG4gICAgICBzb3J0ZWQ6IDMsXHJcbiAgICB9LFxyXG4gIH0pKSxcclxuICAuLi5hbnRocm9waWNNb2RlbHMubWFwKChuYW1lKSA9PiAoe1xyXG4gICAgbmFtZSxcclxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcclxuICAgIHNvcnRlZDogc2VxKyssXHJcbiAgICBwcm92aWRlcjoge1xyXG4gICAgICBpZDogXCJhbnRocm9waWNcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkFudGhyb3BpY1wiLFxyXG4gICAgICBwcm92aWRlclR5cGU6IFwiYW50aHJvcGljXCIsXHJcbiAgICAgIHNvcnRlZDogNCxcclxuICAgIH0sXHJcbiAgfSkpLFxyXG4gIC4uLmJhaWR1TW9kZWxzLm1hcCgobmFtZSkgPT4gKHtcclxuICAgIG5hbWUsXHJcbiAgICBhdmFpbGFibGU6IHRydWUsXHJcbiAgICBzb3J0ZWQ6IHNlcSsrLFxyXG4gICAgcHJvdmlkZXI6IHtcclxuICAgICAgaWQ6IFwiYmFpZHVcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkJhaWR1XCIsXHJcbiAgICAgIHByb3ZpZGVyVHlwZTogXCJiYWlkdVwiLFxyXG4gICAgICBzb3J0ZWQ6IDUsXHJcbiAgICB9LFxyXG4gIH0pKSxcclxuICAuLi5ieXRlZGFuY2VNb2RlbHMubWFwKChuYW1lKSA9PiAoe1xyXG4gICAgbmFtZSxcclxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcclxuICAgIHNvcnRlZDogc2VxKyssXHJcbiAgICBwcm92aWRlcjoge1xyXG4gICAgICBpZDogXCJieXRlZGFuY2VcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkJ5dGVEYW5jZVwiLFxyXG4gICAgICBwcm92aWRlclR5cGU6IFwiYnl0ZWRhbmNlXCIsXHJcbiAgICAgIHNvcnRlZDogNixcclxuICAgIH0sXHJcbiAgfSkpLFxyXG4gIC4uLmFsaWJhYmFNb2Rlcy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcImFsaWJhYmFcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkFsaWJhYmFcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcImFsaWJhYmFcIixcclxuICAgICAgc29ydGVkOiA3LFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4udGVuY2VudE1vZGVscy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcInRlbmNlbnRcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIlRlbmNlbnRcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcInRlbmNlbnRcIixcclxuICAgICAgc29ydGVkOiA4LFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4ubW9vbnNob3RNb2Rlcy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcIm1vb25zaG90XCIsXHJcbiAgICAgIHByb3ZpZGVyTmFtZTogXCJNb29uc2hvdFwiLFxyXG4gICAgICBwcm92aWRlclR5cGU6IFwibW9vbnNob3RcIixcclxuICAgICAgc29ydGVkOiA5LFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4uaWZseXRla01vZGVscy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcImlmbHl0ZWtcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIklmbHl0ZWtcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcImlmbHl0ZWtcIixcclxuICAgICAgc29ydGVkOiAxMCxcclxuICAgIH0sXHJcbiAgfSkpLFxyXG4gIC4uLnhBSU1vZGVzLm1hcCgobmFtZSkgPT4gKHtcclxuICAgIG5hbWUsXHJcbiAgICBhdmFpbGFibGU6IHRydWUsXHJcbiAgICBzb3J0ZWQ6IHNlcSsrLFxyXG4gICAgcHJvdmlkZXI6IHtcclxuICAgICAgaWQ6IFwieGFpXCIsXHJcbiAgICAgIHByb3ZpZGVyTmFtZTogXCJYQUlcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcInhhaVwiLFxyXG4gICAgICBzb3J0ZWQ6IDExLFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4uY2hhdGdsbU1vZGVscy5tYXAoKG5hbWUpID0+ICh7XHJcbiAgICBuYW1lLFxyXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxyXG4gICAgc29ydGVkOiBzZXErKyxcclxuICAgIHByb3ZpZGVyOiB7XHJcbiAgICAgIGlkOiBcImNoYXRnbG1cIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkNoYXRHTE1cIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcImNoYXRnbG1cIixcclxuICAgICAgc29ydGVkOiAxMixcclxuICAgIH0sXHJcbiAgfSkpLFxyXG4gIC4uLmRlZXBzZWVrTW9kZWxzLm1hcCgobmFtZSkgPT4gKHtcclxuICAgIG5hbWUsXHJcbiAgICBhdmFpbGFibGU6IHRydWUsXHJcbiAgICBzb3J0ZWQ6IHNlcSsrLFxyXG4gICAgcHJvdmlkZXI6IHtcclxuICAgICAgaWQ6IFwiZGVlcHNlZWtcIixcclxuICAgICAgcHJvdmlkZXJOYW1lOiBcIkRlZXBTZWVrXCIsXHJcbiAgICAgIHByb3ZpZGVyVHlwZTogXCJkZWVwc2Vla1wiLFxyXG4gICAgICBzb3J0ZWQ6IDEzLFxyXG4gICAgfSxcclxuICB9KSksXHJcbiAgLi4uc2lsaWNvbmZsb3dNb2RlbHMubWFwKChuYW1lKSA9PiAoe1xyXG4gICAgbmFtZSxcclxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcclxuICAgIHNvcnRlZDogc2VxKyssXHJcbiAgICBwcm92aWRlcjoge1xyXG4gICAgICBpZDogXCJzaWxpY29uZmxvd1wiLFxyXG4gICAgICBwcm92aWRlck5hbWU6IFwiU2lsaWNvbkZsb3dcIixcclxuICAgICAgcHJvdmlkZXJUeXBlOiBcInNpbGljb25mbG93XCIsXHJcbiAgICAgIHNvcnRlZDogMTQsXHJcbiAgICB9LFxyXG4gIH0pKSxcclxuXSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBDSEFUX1BBR0VfU0laRSA9IDE1O1xyXG5leHBvcnQgY29uc3QgTUFYX1JFTkRFUl9NU0dfQ09VTlQgPSA0NTtcclxuXHJcbi8vIHNvbWUgZmFtb3VzIHdlYmRhdiBlbmRwb2ludHNcclxuZXhwb3J0IGNvbnN0IGludGVybmFsQWxsb3dlZFdlYkRhdkVuZHBvaW50cyA9IFtcclxuICBcImh0dHBzOi8vZGF2LmppYW5ndW95dW4uY29tL2Rhdi9cIixcclxuICBcImh0dHBzOi8vZGF2LmRyb3BkYXYuY29tL1wiLFxyXG4gIFwiaHR0cHM6Ly9kYXYuYm94LmNvbS9kYXZcIixcclxuICBcImh0dHBzOi8vbmFuYW8udGVyYWNsb3VkLmpwL2Rhdi9cIixcclxuICBcImh0dHBzOi8vYm9yYS50ZXJhY2xvdWQuanAvZGF2L1wiLFxyXG4gIFwiaHR0cHM6Ly93ZWJkYXYuNHNoYXJlZC5jb20vXCIsXHJcbiAgXCJodHRwczovL2Rhdi5pZHJpdmVzeW5jLmNvbVwiLFxyXG4gIFwiaHR0cHM6Ly93ZWJkYXYueWFuZGV4LmNvbVwiLFxyXG4gIFwiaHR0cHM6Ly9hcHAua29vZnIubmV0L2Rhdi9Lb29mclwiLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR0FfSUQgPSBcIkctODlXTjYwWksyRVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNBQVNfQ0hBVF9VUkwgPSBcImh0dHBzOi8vbmV4dGNoYXQuZGV2L2NoYXRcIjtcclxuZXhwb3J0IGNvbnN0IFNBQVNfQ0hBVF9VVE1fVVJMID0gXCJodHRwczovL25leHRjaGF0LmRldi9jaGF0P3V0bT1naXRodWJcIjtcclxuIl0sIm5hbWVzIjpbIk9XTkVSIiwiUkVQTyIsIlJFUE9fVVJMIiwiUExVR0lOU19SRVBPX1VSTCIsIklTU1VFX1VSTCIsIlVQREFURV9VUkwiLCJSRUxFQVNFX1VSTCIsIkZFVENIX0NPTU1JVF9VUkwiLCJGRVRDSF9UQUdfVVJMIiwiUlVOVElNRV9DT05GSUdfRE9NIiwiU1RBQklMSVRZX0JBU0VfVVJMIiwiT1BFTkFJX0JBU0VfVVJMIiwiQU5USFJPUElDX0JBU0VfVVJMIiwiR0VNSU5JX0JBU0VfVVJMIiwiQkFJRFVfQkFTRV9VUkwiLCJCQUlEVV9PQVRVSF9VUkwiLCJCWVRFREFOQ0VfQkFTRV9VUkwiLCJBTElCQUJBX0JBU0VfVVJMIiwiVEVOQ0VOVF9CQVNFX1VSTCIsIk1PT05TSE9UX0JBU0VfVVJMIiwiSUZMWVRFS19CQVNFX1VSTCIsIkRFRVBTRUVLX0JBU0VfVVJMIiwiWEFJX0JBU0VfVVJMIiwiQ0hBVEdMTV9CQVNFX1VSTCIsIlNJTElDT05GTE9XX0JBU0VfVVJMIiwiQ0FDSEVfVVJMX1BSRUZJWCIsIlVQTE9BRF9VUkwiLCJQYXRoIiwiQXBpUGF0aCIsIlNsb3RJRCIsIkZpbGVOYW1lIiwiU3RvcmVLZXkiLCJERUZBVUxUX1NJREVCQVJfV0lEVEgiLCJNQVhfU0lERUJBUl9XSURUSCIsIk1JTl9TSURFQkFSX1dJRFRIIiwiTkFSUk9XX1NJREVCQVJfV0lEVEgiLCJBQ0NFU1NfQ09ERV9QUkVGSVgiLCJMQVNUX0lOUFVUX0tFWSIsIlVORklOSVNIRURfSU5QVVQiLCJpZCIsIlNUT1JBR0VfS0VZIiwiUkVRVUVTVF9USU1FT1VUX01TIiwiUkVRVUVTVF9USU1FT1VUX01TX0ZPUl9USElOS0lORyIsIkVYUE9SVF9NRVNTQUdFX0NMQVNTX05BTUUiLCJTZXJ2aWNlUHJvdmlkZXIiLCJHb29nbGVTYWZldHlTZXR0aW5nc1RocmVzaG9sZCIsIk1vZGVsUHJvdmlkZXIiLCJTdGFiaWxpdHkiLCJHZW5lcmF0ZVBhdGgiLCJFeGFtcGxlRW5kcG9pbnQiLCJBbnRocm9waWMiLCJDaGF0UGF0aCIsIkNoYXRQYXRoMSIsIlZpc2lvbiIsIk9wZW5haVBhdGgiLCJTcGVlY2hQYXRoIiwiSW1hZ2VQYXRoIiwiVXNhZ2VQYXRoIiwiU3Vic1BhdGgiLCJMaXN0TW9kZWxQYXRoIiwiQXp1cmUiLCJkZXBsb3lOYW1lIiwiYXBpVmVyc2lvbiIsIkdvb2dsZSIsIm1vZGVsTmFtZSIsIkJhaWR1IiwiZW5kcG9pbnQiLCJCeXRlRGFuY2UiLCJBbGliYWJhIiwiVGVuY2VudCIsIk1vb25zaG90IiwiSWZseXRlayIsIkRlZXBTZWVrIiwiWEFJIiwiQ2hhdEdMTSIsIlZpZGVvUGF0aCIsIlNpbGljb25GbG93IiwiREVGQVVMVF9JTlBVVF9URU1QTEFURSIsIkRFRkFVTFRfU1lTVEVNX1RFTVBMQVRFIiwiTUNQX1RPT0xTX1RFTVBMQVRFIiwiTUNQX1NZU1RFTV9URU1QTEFURSIsIlNVTU1BUklaRV9NT0RFTCIsIkdFTUlOSV9TVU1NQVJJWkVfTU9ERUwiLCJERUVQU0VFS19TVU1NQVJJWkVfTU9ERUwiLCJLbm93bGVkZ2VDdXRPZmZEYXRlIiwiZGVmYXVsdCIsIm8xIiwiREVGQVVMVF9UVFNfRU5HSU5FIiwiREVGQVVMVF9UVFNfRU5HSU5FUyIsIkRFRkFVTFRfVFRTX01PREVMIiwiREVGQVVMVF9UVFNfVk9JQ0UiLCJERUZBVUxUX1RUU19NT0RFTFMiLCJERUZBVUxUX1RUU19WT0lDRVMiLCJWSVNJT05fTU9ERUxfUkVHRVhFUyIsIkVYQ0xVREVfVklTSU9OX01PREVMX1JFR0VYRVMiLCJvcGVuYWlNb2RlbHMiLCJnb29nbGVNb2RlbHMiLCJhbnRocm9waWNNb2RlbHMiLCJiYWlkdU1vZGVscyIsImJ5dGVkYW5jZU1vZGVscyIsImFsaWJhYmFNb2RlcyIsInRlbmNlbnRNb2RlbHMiLCJtb29uc2hvdE1vZGVzIiwiaWZseXRla01vZGVscyIsImRlZXBzZWVrTW9kZWxzIiwieEFJTW9kZXMiLCJjaGF0Z2xtTW9kZWxzIiwic2lsaWNvbmZsb3dNb2RlbHMiLCJzZXEiLCJERUZBVUxUX01PREVMUyIsIm1hcCIsIm5hbWUiLCJhdmFpbGFibGUiLCJzb3J0ZWQiLCJwcm92aWRlciIsInByb3ZpZGVyTmFtZSIsInByb3ZpZGVyVHlwZSIsIkNIQVRfUEFHRV9TSVpFIiwiTUFYX1JFTkRFUl9NU0dfQ09VTlQiLCJpbnRlcm5hbEFsbG93ZWRXZWJEYXZFbmRwb2ludHMiLCJERUZBVUxUX0dBX0lEIiwiU0FBU19DSEFUX1VSTCIsIlNBQVNfQ0hBVF9VVE1fVVJMIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/constant.ts\n");
/***/ }),
/***/ "(rsc)/./app/utils/model.ts":
/*!****************************!*\
!*** ./app/utils/model.ts ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ collectModelTable: () => (/* binding */ collectModelTable),\n/* harmony export */ collectModelTableWithDefaultModel: () => (/* binding */ collectModelTableWithDefaultModel),\n/* harmony export */ collectModels: () => (/* binding */ collectModels),\n/* harmony export */ collectModelsWithDefaultModel: () => (/* binding */ collectModelsWithDefaultModel),\n/* harmony export */ getModelProvider: () => (/* binding */ getModelProvider),\n/* harmony export */ isGPT4Model: () => (/* binding */ isGPT4Model),\n/* harmony export */ isModelAvailableInServer: () => (/* binding */ isModelAvailableInServer),\n/* harmony export */ isModelNotavailableInServer: () => (/* binding */ isModelNotavailableInServer)\n/* harmony export */ });\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constant */ \"(rsc)/./app/constant.ts\");\n\nconst CustomSeq = {\n val: -1000,\n cache: new Map(),\n next: (id)=>{\n if (CustomSeq.cache.has(id)) {\n return CustomSeq.cache.get(id);\n } else {\n let seq = CustomSeq.val++;\n CustomSeq.cache.set(id, seq);\n return seq;\n }\n }\n};\nconst customProvider = (providerName)=>({\n id: providerName.toLowerCase(),\n providerName: providerName,\n providerType: \"custom\",\n sorted: CustomSeq.next(providerName)\n });\n/**\r\n * Sorts an array of models based on specified rules.\r\n *\r\n * First, sorted by provider; if the same, sorted by model\r\n */ const sortModelTable = (models)=>models.sort((a, b)=>{\n if (a.provider && b.provider) {\n let cmp = a.provider.sorted - b.provider.sorted;\n return cmp === 0 ? a.sorted - b.sorted : cmp;\n } else {\n return a.sorted - b.sorted;\n }\n });\n/**\r\n * get model name and provider from a formatted string,\r\n * e.g. `gpt-4@OpenAi` or `claude-3-5-sonnet@20240620@Google`\r\n * @param modelWithProvider model name with provider separated by last `@` char,\r\n * @returns [model, provider] tuple, if no `@` char found, provider is undefined\r\n */ function getModelProvider(modelWithProvider) {\n const [model, provider] = modelWithProvider.split(/@(?!.*@)/);\n return [\n model,\n provider\n ];\n}\nfunction collectModelTable(models, customModels) {\n const modelTable = {};\n // default models\n models.forEach((m)=>{\n // using <modelName>@<providerId> as fullName\n modelTable[`${m.name}@${m?.provider?.id}`] = {\n ...m,\n displayName: m.name\n };\n });\n // server custom models\n customModels.split(\",\").filter((v)=>!!v && v.length > 0).forEach((m)=>{\n const available = !m.startsWith(\"-\");\n const nameConfig = m.startsWith(\"+\") || m.startsWith(\"-\") ? m.slice(1) : m;\n let [name, displayName] = nameConfig.split(\"=\");\n // enable or disable all models\n if (name === \"all\") {\n Object.values(modelTable).forEach((model)=>model.available = available);\n } else {\n // 1. find model by name, and set available value\n const [customModelName, customProviderName] = getModelProvider(name);\n let count = 0;\n for(const fullName in modelTable){\n const [modelName, providerName] = getModelProvider(fullName);\n if (customModelName == modelName && (customProviderName === undefined || customProviderName === providerName)) {\n count += 1;\n modelTable[fullName][\"available\"] = available;\n // swap name and displayName for bytedance\n if (providerName === \"bytedance\") {\n [name, displayName] = [\n displayName,\n modelName\n ];\n modelTable[fullName][\"name\"] = name;\n }\n if (displayName) {\n modelTable[fullName][\"displayName\"] = displayName;\n }\n }\n }\n // 2. if model not exists, create new model with available value\n if (count === 0) {\n let [customModelName, customProviderName] = getModelProvider(name);\n const provider = customProvider(customProviderName || customModelName);\n // swap name and displayName for bytedance\n if (displayName && provider.providerName == \"ByteDance\") {\n [customModelName, displayName] = [\n displayName,\n customModelName\n ];\n }\n modelTable[`${customModelName}@${provider?.id}`] = {\n name: customModelName,\n displayName: displayName || customModelName,\n available,\n provider,\n sorted: CustomSeq.next(`${customModelName}@${provider?.id}`)\n };\n }\n }\n });\n return modelTable;\n}\nfunction collectModelTableWithDefaultModel(models, customModels, defaultModel) {\n let modelTable = collectModelTable(models, customModels);\n if (defaultModel && defaultModel !== \"\") {\n if (defaultModel.includes(\"@\")) {\n if (defaultModel in modelTable) {\n modelTable[defaultModel].isDefault = true;\n }\n } else {\n for (const key of Object.keys(modelTable)){\n if (modelTable[key].available && getModelProvider(key)[0] == defaultModel) {\n modelTable[key].isDefault = true;\n break;\n }\n }\n }\n }\n return modelTable;\n}\n/**\r\n * Generate full model table.\r\n */ function collectModels(models, customModels) {\n const modelTable = collectModelTable(models, customModels);\n let allModels = Object.values(modelTable);\n allModels = sortModelTable(allModels);\n return allModels;\n}\nfunction collectModelsWithDefaultModel(models, customModels, defaultModel) {\n const modelTable = collectModelTableWithDefaultModel(models, customModels, defaultModel);\n let allModels = Object.values(modelTable);\n allModels = sortModelTable(allModels);\n return allModels;\n}\nfunction isModelAvailableInServer(customModels, modelName, providerName) {\n const fullName = `${modelName}@${providerName}`;\n const modelTable = collectModelTable(_constant__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_MODELS, customModels);\n return modelTable[fullName]?.available === false;\n}\n/**\r\n * Check if the model name is a GPT-4 related model\r\n *\r\n * @param modelName The name of the model to check\r\n * @returns True if the model is a GPT-4 related model (excluding gpt-4o-mini)\r\n */ function isGPT4Model(modelName) {\n return (modelName.startsWith(\"gpt-4\") || modelName.startsWith(\"chatgpt-4o\") || modelName.startsWith(\"o1\")) && !modelName.startsWith(\"gpt-4o-mini\");\n}\n/**\r\n * Checks if a model is not available on any of the specified providers in the server.\r\n *\r\n * @param {string} customModels - A string of custom models, comma-separated.\r\n * @param {string} modelName - The name of the model to check.\r\n * @param {string|string[]} providerNames - A string or array of provider names to check against.\r\n *\r\n * @returns {boolean} True if the model is not available on any of the specified providers, false otherwise.\r\n */ function isModelNotavailableInServer(customModels, modelName, providerNames) {\n // Check DISABLE_GPT4 environment variable\n if (process.env.DISABLE_GPT4 === \"1\" && isGPT4Model(modelName.toLowerCase())) {\n return true;\n }\n const modelTable = collectModelTable(_constant__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_MODELS, customModels);\n const providerNamesArray = Array.isArray(providerNames) ? providerNames : [\n providerNames\n ];\n for (const providerName of providerNamesArray){\n // if model provider is bytedance, use model config name to check if not avaliable\n if (providerName === _constant__WEBPACK_IMPORTED_MODULE_0__.ServiceProvider.ByteDance) {\n return !Object.values(modelTable).filter((v)=>v.name === modelName)?.[0]?.available;\n }\n const fullName = `${modelName}@${providerName.toLowerCase()}`;\n if (modelTable?.[fullName]?.available === true) return false;\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VCxVQUFVLENBQUM7QUFFMUI7QUFFQTs7Ozs7Ozs7Q0FRQyxHQUNNLFNBQVNzQiw0QkFDZGhDLFlBQW9CLEVBQ3BCbUIsU0FBaUIsRUFDakJjLGFBQWdDO0lBRWhDLDBDQUEwQztJQUMxQyxJQUNFQyxRQUFRQyxHQUFHLENBQUNDLFlBQVksS0FBSyxPQUM3QkwsWUFBWVosVUFBVWxDLFdBQVcsS0FDakM7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNZ0IsYUFBYUYsa0JBQWtCNUIscURBQWNBLEVBQUU2QjtJQUVyRCxNQUFNcUMscUJBQXFCQyxNQUFNQyxPQUFPLENBQUNOLGlCQUNyQ0EsZ0JBQ0E7UUFBQ0E7S0FBYztJQUNuQixLQUFLLE1BQU1qRCxnQkFBZ0JxRCxtQkFBb0I7UUFDN0Msa0ZBQWtGO1FBQ2xGLElBQUlyRCxpQkFBaUJaLHNEQUFlQSxDQUFDb0UsU0FBUyxFQUFFO1lBQzlDLE9BQU8sQ0FBQzNCLE9BQU9DLE1BQU0sQ0FBQ2IsWUFBWUssTUFBTSxDQUFDLENBQUNDLElBQU1BLEVBQUVILElBQUksS0FBS2UsWUFBWSxDQUFDLEVBQUUsRUFDdEVWO1FBQ047UUFDQSxNQUFNUyxXQUFXLENBQUMsRUFBRUMsVUFBVSxDQUFDLEVBQUVuQyxhQUFhQyxXQUFXLEdBQUcsQ0FBQztRQUM3RCxJQUFJZ0IsWUFBWSxDQUFDaUIsU0FBUyxFQUFFVCxjQUFjLE1BQU0sT0FBTztJQUN6RDtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvdXRpbHMvbW9kZWwudHM/ZTQ5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX01PREVMUywgU2VydmljZVByb3ZpZGVyIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcbmltcG9ydCB7IExMTU1vZGVsIH0gZnJvbSBcIi4uL2NsaWVudC9hcGlcIjtcclxuXHJcbmNvbnN0IEN1c3RvbVNlcSA9IHtcclxuICB2YWw6IC0xMDAwLCAvL1RvIGVuc3VyZSB0aGUgY3VzdG9tIG1vZGVsIGxvY2F0ZWQgYXQgZnJvbnQsIHN0YXJ0IGZyb20gLTEwMDAsIHJlZmVyIHRvIGNvbnN0YW50LnRzXHJcbiAgY2FjaGU6IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCksXHJcbiAgbmV4dDogKGlkOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChDdXN0b21TZXEuY2FjaGUuaGFzKGlkKSkge1xyXG4gICAgICByZXR1cm4gQ3VzdG9tU2VxLmNhY2hlLmdldChpZCkgYXMgbnVtYmVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNlcSA9IEN1c3RvbVNlcS52YWwrKztcclxuICAgICAgQ3VzdG9tU2VxLmNhY2hlLnNldChpZCwgc2VxKTtcclxuICAgICAgcmV0dXJuIHNlcTtcclxuICAgIH1cclxuICB9LFxyXG59O1xyXG5cclxuY29uc3QgY3VzdG9tUHJvdmlkZXIgPSAocHJvdmlkZXJOYW1lOiBzdHJpbmcpID0+ICh7XHJcbiAgaWQ6IHByb3ZpZGVyTmFtZS50b0xvd2VyQ2FzZSgpLFxyXG4gIHByb3ZpZGVyTmFtZTogcHJvdmlkZXJOYW1lLFxyXG4gIHByb3ZpZGVyVHlwZTogXCJjdXN0b21cIixcclxuICBzb3J0ZWQ6IEN1c3RvbVNlcS5uZXh0KHByb3ZpZGVyTmFtZSksXHJcbn0pO1xyXG5cclxuLyoqXHJcbiAqIFNvcnRzIGFuIGFycmF5IG9mIG1vZGVscyBiYXNlZCBvbiBzcGVjaWZpZWQgcnVsZXMuXHJcbiAqXHJcbiAqIEZpcnN0LCBzb3J0ZWQgYnkgcHJvdmlkZXI7IGlmIHRoZSBzYW1lLCBzb3J0ZWQgYnkgbW9kZWxcclxuICovXHJcbmNvbnN0IHNvcnRNb2RlbFRhYmxlID0gKG1vZGVsczogUmV0dXJuVHlwZTx0eXBlb2YgY29sbGVjdE1vZGVscz4pID0+XHJcbiAgbW9kZWxzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgIGlmIChhLnByb3ZpZGVyICYmIGIucHJvdmlkZXIpIHtcclxuICAgICAgbGV0IGNtcCA9IGEucHJvdmlkZXIuc29ydGVkIC0gYi5wcm92aWRlci5zb3J0ZWQ7XHJcbiAgICAgIHJldHVybiBjbXAgPT09IDAgPyBhLnNvcnRlZCAtIGIuc29ydGVkIDogY21wO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGEuc29ydGVkIC0gYi5zb3J0ZWQ7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4vKipcclxuICogZ2V0IG1vZGVsIG5hbWUgYW5kIHByb3ZpZGVyIGZyb20gYSBmb3JtYXR0ZWQgc3RyaW5nLFxyXG4gKiBlLmcuIGBncHQtNEBPcGVuQWlgIG9yIGBjbGF1ZGUtMy01LXNvbm5ldEAyMDI0MDYyMEBHb29nbGVgXHJcbiAqIEBwYXJhbSBtb2RlbFdpdGhQcm92aWRlciBtb2RlbCBuYW1lIHdpdGggcHJvdmlkZXIgc2VwYXJhdGVkIGJ5IGxhc3QgYEBgIGNoYXIsXHJcbiAqIEByZXR1cm5zIFttb2RlbCwgcHJvdmlkZXJdIHR1cGxlLCBpZiBubyBgQGAgY2hhciBmb3VuZCwgcHJvdmlkZXIgaXMgdW5kZWZpbmVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxQcm92aWRlcihtb2RlbFdpdGhQcm92aWRlcjogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nP10ge1xyXG4gIGNvbnN0IFttb2RlbCwgcHJvdmlkZXJdID0gbW9kZWxXaXRoUHJvdmlkZXIuc3BsaXQoL0AoPyEuKkApLyk7XHJcbiAgcmV0dXJuIFttb2RlbCwgcHJvdmlkZXJdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdE1vZGVsVGFibGUoXHJcbiAgbW9kZWxzOiByZWFkb25seSBMTE1Nb2RlbFtdLFxyXG4gIGN1c3RvbU1vZGVsczogc3RyaW5nLFxyXG4pIHtcclxuICBjb25zdCBtb2RlbFRhYmxlOiBSZWNvcmQ8XHJcbiAgICBzdHJpbmcsXHJcbiAgICB7XHJcbiAgICAgIGF2YWlsYWJsZTogYm9vbGVhbjtcclxuICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gICAgICBzb3J0ZWQ6IG51bWJlcjtcclxuICAgICAgcHJvdmlkZXI/OiBMTE1Nb2RlbFtcInByb3ZpZGVyXCJdOyAvLyBNYXJrZWQgYXMgb3B0aW9uYWxcclxuICAgICAgaXNEZWZhdWx0PzogYm9vbGVhbjtcclxuICAgIH1cclxuICA+ID0ge307XHJcblxyXG4gIC8vIGRlZmF1bHQgbW9kZWxzXHJcbiAgbW9kZWxzLmZvckVhY2goKG0pID0+IHtcclxuICAgIC8vIHVzaW5nIDxtb2RlbE5hbWU+QDxwcm92aWRlcklkPiBhcyBmdWxsTmFtZVxyXG4gICAgbW9kZWxUYWJsZVtgJHttLm5hbWV9QCR7bT8ucHJvdmlkZXI/LmlkfWBdID0ge1xyXG4gICAgICAuLi5tLFxyXG4gICAgICBkaXNwbGF5TmFtZTogbS5uYW1lLCAvLyAncHJvdmlkZXInIGlzIGNvcGllZCBvdmVyIGlmIGl0IGV4aXN0c1xyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgLy8gc2VydmVyIGN1c3RvbSBtb2RlbHNcclxuICBjdXN0b21Nb2RlbHNcclxuICAgIC5zcGxpdChcIixcIilcclxuICAgIC5maWx0ZXIoKHYpID0+ICEhdiAmJiB2Lmxlbmd0aCA+IDApXHJcbiAgICAuZm9yRWFjaCgobSkgPT4ge1xyXG4gICAgICBjb25zdCBhdmFpbGFibGUgPSAhbS5zdGFydHNXaXRoKFwiLVwiKTtcclxuICAgICAgY29uc3QgbmFtZUNvbmZpZyA9XHJcbiAgICAgICAgbS5zdGFydHNXaXRoKFwiK1wiKSB8fCBtLnN0YXJ0c1dpdGgoXCItXCIpID8gbS5zbGljZSgxKSA6IG07XHJcbiAgICAgIGxldCBbbmFtZSwgZGlzcGxheU5hbWVdID0gbmFtZUNvbmZpZy5zcGxpdChcIj1cIik7XHJcblxyXG4gICAgICAvLyBlbmFibGUgb3IgZGlzYWJsZSBhbGwgbW9kZWxzXHJcbiAgICAgIGlmIChuYW1lID09PSBcImFsbFwiKSB7XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhtb2RlbFRhYmxlKS5mb3JFYWNoKFxyXG4gICAgICAgICAgKG1vZGVsKSA9PiAobW9kZWwuYXZhaWxhYmxlID0gYXZhaWxhYmxlKSxcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIDEuIGZpbmQgbW9kZWwgYnkgbmFtZSwgYW5kIHNldCBhdmFpbGFibGUgdmFsdWVcclxuICAgICAgICBjb25zdCBbY3VzdG9tTW9kZWxOYW1lLCBjdXN0b21Qcm92aWRlck5hbWVdID0gZ2V0TW9kZWxQcm92aWRlcihuYW1lKTtcclxuICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgIGZvciAoY29uc3QgZnVsbE5hbWUgaW4gbW9kZWxUYWJsZSkge1xyXG4gICAgICAgICAgY29uc3QgW21vZGVsTmFtZSwgcHJvdmlkZXJOYW1lXSA9IGdldE1vZGVsUHJvdmlkZXIoZnVsbE5hbWUpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjdXN0b21Nb2RlbE5hbWUgPT0gbW9kZWxOYW1lICYmXHJcbiAgICAgICAgICAgIChjdXN0b21Qcm92aWRlck5hbWUgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICAgIGN1c3RvbVByb3ZpZGVyTmFtZSA9PT0gcHJvdmlkZXJOYW1lKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIG1vZGVsVGFibGVbZnVsbE5hbWVdW1wiYXZhaWxhYmxlXCJdID0gYXZhaWxhYmxlO1xyXG4gICAgICAgICAgICAvLyBzd2FwIG5hbWUgYW5kIGRpc3BsYXlOYW1lIGZvciBieXRlZGFuY2VcclxuICAgICAgICAgICAgaWYgKHByb3ZpZGVyTmFtZSA9PT0gXCJieXRlZGFuY2VcIikge1xyXG4gICAgICAgICAgICAgIFtuYW1lLCBkaXNwbGF5TmFtZV0gPSBbZGlzcGxheU5hbWUsIG1vZGVsTmFtZV07XHJcbiAgICAgICAgICAgICAgbW9kZWxUYWJsZVtmdWxsTmFtZV1bXCJuYW1lXCJdID0gbmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzcGxheU5hbWUpIHtcclxuICAgICAgICAgICAgICBtb2RlbFRhYmxlW2Z1bGxOYW1lXVtcImRpc3BsYXlOYW1lXCJdID0gZGlzcGxheU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMi4gaWYgbW9kZWwgbm90IGV4aXN0cywgY3JlYXRlIG5ldyBtb2RlbCB3aXRoIGF2YWlsYWJsZSB2YWx1ZVxyXG4gICAgICAgIGlmIChjb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgbGV0IFtjdXN0b21Nb2RlbE5hbWUsIGN1c3RvbVByb3ZpZGVyTmFtZV0gPSBnZXRNb2RlbFByb3ZpZGVyKG5hbWUpO1xyXG4gICAgICAgICAgY29uc3QgcHJvdmlkZXIgPSBjdXN0b21Qcm92aWRlcihcclxuICAgICAgICAgICAgY3VzdG9tUHJvdmlkZXJOYW1lIHx8IGN1c3RvbU1vZGVsTmFtZSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBzd2FwIG5hbWUgYW5kIGRpc3BsYXlOYW1lIGZvciBieXRlZGFuY2VcclxuICAgICAgICAgIGlmIChkaXNwbGF5TmFtZSAmJiBwcm92aWRlci5wcm92aWRlck5hbWUgPT0gXCJCeXRlRGFuY2VcIikge1xyXG4gICAgICAgICAgICBbY3VzdG9tTW9kZWxOYW1lLCBkaXNwbGF5TmFtZV0gPSBbZGlzcGxheU5hbWUsIGN1c3RvbU1vZGVsTmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBtb2RlbFRhYmxlW2Ake2N1c3RvbU1vZGVsTmFtZX1AJHtwcm92aWRlcj8uaWR9YF0gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IGN1c3RvbU1vZGVsTmFtZSxcclxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lIHx8IGN1c3RvbU1vZGVsTmFtZSxcclxuICAgICAgICAgICAgYXZhaWxhYmxlLFxyXG4gICAgICAgICAgICBwcm92aWRlciwgLy8gVXNlIG9wdGlvbmFsIGNoYWluaW5nXHJcbiAgICAgICAgICAgIHNvcnRlZDogQ3VzdG9tU2VxLm5leHQoYCR7Y3VzdG9tTW9kZWxOYW1lfUAke3Byb3ZpZGVyPy5pZH1gKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgcmV0dXJuIG1vZGVsVGFibGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0TW9kZWxUYWJsZVdpdGhEZWZhdWx0TW9kZWwoXHJcbiAgbW9kZWxzOiByZWFkb25seSBMTE1Nb2RlbFtdLFxyXG4gIGN1c3RvbU1vZGVsczogc3RyaW5nLFxyXG4gIGRlZmF1bHRNb2RlbDogc3RyaW5nLFxyXG4pIHtcclxuICBsZXQgbW9kZWxUYWJsZSA9IGNvbGxlY3RNb2RlbFRhYmxlKG1vZGVscywgY3VzdG9tTW9kZWxzKTtcclxuICBpZiAoZGVmYXVsdE1vZGVsICYmIGRlZmF1bHRNb2RlbCAhPT0gXCJcIikge1xyXG4gICAgaWYgKGRlZmF1bHRNb2RlbC5pbmNsdWRlcyhcIkBcIikpIHtcclxuICAgICAgaWYgKGRlZmF1bHRNb2RlbCBpbiBtb2RlbFRhYmxlKSB7XHJcbiAgICAgICAgbW9kZWxUYWJsZVtkZWZhdWx0TW9kZWxdLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsVGFibGUpKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgbW9kZWxUYWJsZVtrZXldLmF2YWlsYWJsZSAmJlxyXG4gICAgICAgICAgZ2V0TW9kZWxQcm92aWRlcihrZXkpWzBdID09IGRlZmF1bHRNb2RlbFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbW9kZWxUYWJsZVtrZXldLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG1vZGVsVGFibGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSBmdWxsIG1vZGVsIHRhYmxlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RNb2RlbHMoXHJcbiAgbW9kZWxzOiByZWFkb25seSBMTE1Nb2RlbFtdLFxyXG4gIGN1c3RvbU1vZGVsczogc3RyaW5nLFxyXG4pIHtcclxuICBjb25zdCBtb2RlbFRhYmxlID0gY29sbGVjdE1vZGVsVGFibGUobW9kZWxzLCBjdXN0b21Nb2RlbHMpO1xyXG4gIGxldCBhbGxNb2RlbHMgPSBPYmplY3QudmFsdWVzKG1vZGVsVGFibGUpO1xyXG5cclxuICBhbGxNb2RlbHMgPSBzb3J0TW9kZWxUYWJsZShhbGxNb2RlbHMpO1xyXG5cclxuICByZXR1cm4gYWxsTW9kZWxzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdE1vZGVsc1dpdGhEZWZhdWx0TW9kZWwoXHJcbiAgbW9kZWxzOiByZWFkb25seSBMTE1Nb2RlbFtdLFxyXG4gIGN1c3RvbU1vZGVsczogc3RyaW5nLFxyXG4gIGRlZmF1bHRNb2RlbDogc3RyaW5nLFxyXG4pIHtcclxuICBjb25zdCBtb2RlbFRhYmxlID0gY29sbGVjdE1vZGVsVGFibGVXaXRoRGVmYXVsdE1vZGVsKFxyXG4gICAgbW9kZWxzLFxyXG4gICAgY3VzdG9tTW9kZWxzLFxyXG4gICAgZGVmYXVsdE1vZGVsLFxyXG4gICk7XHJcbiAgbGV0IGFsbE1vZGVscyA9IE9iamVjdC52YWx1ZXMobW9kZWxUYWJsZSk7XHJcblxyXG4gIGFsbE1vZGVscyA9IHNvcnRNb2RlbFRhYmxlKGFsbE1vZGVscyk7XHJcblxyXG4gIHJldHVybiBhbGxNb2RlbHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc01vZGVsQXZhaWxhYmxlSW5TZXJ2ZXIoXHJcbiAgY3VzdG9tTW9kZWxzOiBzdHJpbmcsXHJcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXHJcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmcsXHJcbikge1xyXG4gIGNvbnN0IGZ1bGxOYW1lID0gYCR7bW9kZWxOYW1lfUAke3Byb3ZpZGVyTmFtZX1gO1xyXG4gIGNvbnN0IG1vZGVsVGFibGUgPSBjb2xsZWN0TW9kZWxUYWJsZShERUZBVUxUX01PREVMUywgY3VzdG9tTW9kZWxzKTtcclxuICByZXR1cm4gbW9kZWxUYWJsZVtmdWxsTmFtZV0/LmF2YWlsYWJsZSA9PT0gZmFsc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgbW9kZWwgbmFtZSBpcyBhIEdQVC00IHJlbGF0ZWQgbW9kZWxcclxuICpcclxuICogQHBhcmFtIG1vZGVsTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kZWwgdG8gY2hlY2tcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kZWwgaXMgYSBHUFQtNCByZWxhdGVkIG1vZGVsIChleGNsdWRpbmcgZ3B0LTRvLW1pbmkpXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNHUFQ0TW9kZWwobW9kZWxOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gKFxyXG4gICAgKG1vZGVsTmFtZS5zdGFydHNXaXRoKFwiZ3B0LTRcIikgfHxcclxuICAgICAgbW9kZWxOYW1lLnN0YXJ0c1dpdGgoXCJjaGF0Z3B0LTRvXCIpIHx8XHJcbiAgICAgIG1vZGVsTmFtZS5zdGFydHNXaXRoKFwibzFcIikpICYmXHJcbiAgICAhbW9kZWxOYW1lLnN0YXJ0c1dpdGgoXCJncHQtNG8tbWluaVwiKVxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgYSBtb2RlbCBpcyBub3QgYXZhaWxhYmxlIG9uIGFueSBvZiB0aGUgc3BlY2lmaWVkIHByb3ZpZGVycyBpbiB0aGUgc2VydmVyLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VzdG9tTW9kZWxzIC0gQSBzdHJpbmcgb2YgY3VzdG9tIG1vZGVscywgY29tbWEtc2VwYXJhdGVkLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1vZGVsIHRvIGNoZWNrLlxyXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gcHJvdmlkZXJOYW1lcyAtIEEgc3RyaW5nIG9yIGFycmF5IG9mIHByb3ZpZGVyIG5hbWVzIHRvIGNoZWNrIGFnYWluc3QuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBtb2RlbCBpcyBub3QgYXZhaWxhYmxlIG9uIGFueSBvZiB0aGUgc3BlY2lmaWVkIHByb3ZpZGVycywgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWxOb3RhdmFpbGFibGVJblNlcnZlcihcclxuICBjdXN0b21Nb2RlbHM6IHN0cmluZyxcclxuICBtb2RlbE5hbWU6IHN0cmluZyxcclxuICBwcm92aWRlck5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuKTogYm9vbGVhbiB7XHJcbiAgLy8gQ2hlY2sgRElTQUJMRV9HUFQ0IGVudmlyb25tZW50IHZhcmlhYmxlXHJcbiAgaWYgKFxyXG4gICAgcHJvY2Vzcy5lbnYuRElTQUJMRV9HUFQ0ID09PSBcIjFcIiAmJlxyXG4gICAgaXNHUFQ0TW9kZWwobW9kZWxOYW1lLnRvTG93ZXJDYXNlKCkpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1vZGVsVGFibGUgPSBjb2xsZWN0TW9kZWxUYWJsZShERUZBVUxUX01PREVMUywgY3VzdG9tTW9kZWxzKTtcclxuXHJcbiAgY29uc3QgcHJvdmlkZXJOYW1lc0FycmF5ID0gQXJyYXkuaXNBcnJheShwcm92aWRlck5hbWVzKVxyXG4gICAgPyBwcm92aWRlck5hbWVzXHJcbiAgICA6IFtwcm92aWRlck5hbWVzXTtcclxuICBmb3IgKGNvbnN0IHByb3ZpZGVyTmFtZSBvZiBwcm92aWRlck5hbWVzQXJyYXkpIHtcclxuICAgIC8vIGlmIG1vZGVsIHByb3ZpZGVyIGlzIGJ5dGVkYW5jZSwgdXNlIG1vZGVsIGNvbmZpZyBuYW1lIHRvIGNoZWNrIGlmIG5vdCBhdmFsaWFibGVcclxuICAgIGlmIChwcm92aWRlck5hbWUgPT09IFNlcnZpY2VQcm92aWRlci5CeXRlRGFuY2UpIHtcclxuICAgICAgcmV0dXJuICFPYmplY3QudmFsdWVzKG1vZGVsVGFibGUpLmZpbHRlcigodikgPT4gdi5uYW1lID09PSBtb2RlbE5hbWUpPy5bMF1cclxuICAgICAgICA/LmF2YWlsYWJsZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZ1bGxOYW1lID0gYCR7bW9kZWxOYW1lfUAke3Byb3ZpZGVyTmFtZS50b0xvd2VyQ2FzZSgpfWA7XHJcbiAgICBpZiAobW9kZWxUYWJsZT8uW2Z1bGxOYW1lXT8uYXZhaWxhYmxlID09PSB0cnVlKSByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJERUZBVUxUX01PREVMUyIsIlNlcnZpY2VQcm92aWRlciIsIkN1c3RvbVNlcSIsInZhbCIsImNhY2hlIiwiTWFwIiwibmV4dCIsImlkIiwiaGFzIiwiZ2V0Iiwic2VxIiwic2V0IiwiY3VzdG9tUHJvdmlkZXIiLCJwcm92aWRlck5hbWUiLCJ0b0xvd2VyQ2FzZSIsInByb3ZpZGVyVHlwZSIsInNvcnRlZCIsInNvcnRNb2RlbFRhYmxlIiwibW9kZWxzIiwic29ydCIsImEiLCJiIiwicHJvdmlkZXIiLCJjbXAiLCJnZXRNb2RlbFByb3ZpZGVyIiwibW9kZWxXaXRoUHJvdmlkZXIiLCJtb2RlbCIsInNwbGl0IiwiY29sbGVjdE1vZGVsVGFibGUiLCJjdXN0b21Nb2RlbHMiLCJtb2RlbFRhYmxlIiwiZm9yRWFjaCIsIm0iLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJmaWx0ZXIiLCJ2IiwibGVuZ3RoIiwiYXZhaWxhYmxlIiwic3RhcnRzV2l0aCIsIm5hbWVDb25maWciLCJzbGljZSIsIk9iamVjdCIsInZhbHVlcyIsImN1c3RvbU1vZGVsTmFtZSIsImN1c3RvbVByb3ZpZGVyTmFtZSIsImNvdW50IiwiZnVsbE5hbWUiLCJtb2RlbE5hbWUiLCJ1bmRlZmluZWQiLCJjb2xsZWN0TW9kZWxUYWJsZVdpdGhEZWZhdWx0TW9kZWwiLCJkZWZhdWx0TW9kZWwiLCJpbmNsdWRlcyIsImlzRGVmYXVsdCIsImtleSIsImtleXMiLCJjb2xsZWN0TW9kZWxzIiwiYWxsTW9kZWxzIiwiY29sbGVjdE1vZGVsc1dpdGhEZWZhdWx0TW9kZWwiLCJpc01vZGVsQXZhaWxhYmxlSW5TZXJ2ZXIiLCJpc0dQVDRNb2RlbCIsImlzTW9kZWxOb3RhdmFpbGFibGVJblNlcnZlciIsInByb3ZpZGVyTmFtZXMiLCJwcm9jZXNzIiwiZW52IiwiRElTQUJMRV9HUFQ0IiwicHJvdmlkZXJOYW1lc0FycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiQnl0ZURhbmNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/utils/model.ts\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)__defProp(target, name, {\n get: all[name],\n enumerable: true\n });\n};\nvar __copyProps = (to, from, except, desc)=>{\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n get: ()=>from[key],\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n });\n }\n return to;\n};\nvar __toCommonJS = (mod)=>__copyProps(__defProp({}, \"__esModule\", {\n value: true\n }), mod);\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// 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 \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n return `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)){\n if (!pair) continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [\n pair.slice(0, splitAt),\n pair.slice(splitAt + 1)\n ];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {}\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 { domain, expires, httponly, maxage, path, samesite, secure, priority } = Object.fromEntries(attributes.map(([key, value2])=>[\n key.toLowerCase(),\n value2\n ]));\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && {\n expires: new Date(expires)\n },\n ...httponly && {\n httpOnly: true\n },\n ...typeof maxage === \"string\" && {\n maxAge: Number(maxage)\n },\n path,\n ...samesite && {\n sameSite: parseSameSite(samesite)\n },\n ...secure && {\n secure: true\n },\n ...priority && {\n priority: parsePriority(priority)\n }\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 = [\n \"strict\",\n \"lax\",\n \"none\"\n];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\n \"low\",\n \"medium\",\n \"high\"\n];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString) 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// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders){\n /** @internal */ 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, {\n name,\n value\n });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\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 ? [\n args[0].name,\n args[0].value\n ] : args;\n const map = this._parsed;\n map.set(name, {\n name,\n value\n });\n this._headers.set(\"cookie\", Array.from(map).map(([_, value2])=>stringifyCookie(value2)).join(\"; \"));\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\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(\"cookie\", Array.from(map).map(([_, value])=>stringifyCookie(value)).join(\"; \"));\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\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 */ [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [\n ...this._parsed.values()\n ].map((v)=>`${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders){\n /** @internal */ 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) 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 */ 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 */ 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 */ set(...args) {\n const [name, value, cookie] = args.length === 1 ? [\n args[0].name,\n args[0].value,\n args[0]\n ] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({\n name,\n value,\n ...cookie\n }));\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 */ delete(...args) {\n const [name, path, domain] = typeof args[0] === \"string\" ? [\n args[0]\n ] : [\n args[0].name,\n args[0].path,\n args[0].domain\n ];\n return this.set({\n name,\n path,\n domain,\n value: \"\",\n expires: /* @__PURE__ */ new Date(0)\n });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [\n ...this._parsed.values()\n ].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 = {\n name: \"\",\n value: \"\"\n}) {\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLElBQUlBLFlBQVlDLE9BQU9DLGNBQWM7QUFDckMsSUFBSUMsbUJBQW1CRixPQUFPRyx3QkFBd0I7QUFDdEQsSUFBSUMsb0JBQW9CSixPQUFPSyxtQkFBbUI7QUFDbEQsSUFBSUMsZUFBZU4sT0FBT08sU0FBUyxDQUFDQyxjQUFjO0FBQ2xELElBQUlDLFdBQVcsQ0FBQ0MsUUFBUUM7SUFDdEIsSUFBSyxJQUFJQyxRQUFRRCxJQUNmWixVQUFVVyxRQUFRRSxNQUFNO1FBQUVDLEtBQUtGLEdBQUcsQ0FBQ0MsS0FBSztRQUFFRSxZQUFZO0lBQUs7QUFDL0Q7QUFDQSxJQUFJQyxjQUFjLENBQUNDLElBQUlDLE1BQU1DLFFBQVFDO0lBQ25DLElBQUlGLFFBQVEsT0FBT0EsU0FBUyxZQUFZLE9BQU9BLFNBQVMsWUFBWTtRQUNsRSxLQUFLLElBQUlHLE9BQU9oQixrQkFBa0JhLE1BQ2hDLElBQUksQ0FBQ1gsYUFBYWUsSUFBSSxDQUFDTCxJQUFJSSxRQUFRQSxRQUFRRixRQUN6Q25CLFVBQVVpQixJQUFJSSxLQUFLO1lBQUVQLEtBQUssSUFBTUksSUFBSSxDQUFDRyxJQUFJO1lBQUVOLFlBQVksQ0FBRUssQ0FBQUEsT0FBT2pCLGlCQUFpQmUsTUFBTUcsSUFBRyxLQUFNRCxLQUFLTCxVQUFVO1FBQUM7SUFDdEg7SUFDQSxPQUFPRTtBQUNUO0FBQ0EsSUFBSU0sZUFBZSxDQUFDQyxNQUFRUixZQUFZaEIsVUFBVSxDQUFDLEdBQUcsY0FBYztRQUFFeUIsT0FBTztJQUFLLElBQUlEO0FBRXRGLGVBQWU7QUFDZixJQUFJRSxjQUFjLENBQUM7QUFDbkJoQixTQUFTZ0IsYUFBYTtJQUNwQkMsZ0JBQWdCLElBQU1BO0lBQ3RCQyxpQkFBaUIsSUFBTUE7SUFDdkJDLGFBQWEsSUFBTUE7SUFDbkJDLGdCQUFnQixJQUFN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RyxnQkFBZ0JOO1FBQ25DMEcsUUFBUUUsTUFBTSxDQUFDLGNBQWNEO0lBQy9CO0FBQ0Y7QUFDQSxTQUFTSixnQkFBZ0I3RSxTQUFTO0lBQUV0QyxNQUFNO0lBQUlZLE9BQU87QUFBRyxDQUFDO0lBQ3ZELElBQUksT0FBTzBCLE9BQU9iLE9BQU8sS0FBSyxVQUFVO1FBQ3RDYSxPQUFPYixPQUFPLEdBQUcsSUFBSUMsS0FBS1ksT0FBT2IsT0FBTztJQUMxQztJQUNBLElBQUlhLE9BQU9WLE1BQU0sRUFBRTtRQUNqQlUsT0FBT2IsT0FBTyxHQUFHLElBQUlDLEtBQUtBLEtBQUsrRixHQUFHLEtBQUtuRixPQUFPVixNQUFNLEdBQUc7SUFDekQ7SUFDQSxJQUFJVSxPQUFPZCxJQUFJLEtBQUssUUFBUWMsT0FBT2QsSUFBSSxLQUFLLEtBQUssR0FBRztRQUNsRGMsT0FBT2QsSUFBSSxHQUFHO0lBQ2hCO0lBQ0EsT0FBT2M7QUFDVDtBQUNBLDZEQUE2RDtBQUM3RCxLQUFNbkIsQ0FBQUEsQ0FNTiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llcy9pbmRleC5qcz9jMDk5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gc3JjL2luZGV4LnRzXG52YXIgc3JjX2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KHNyY19leHBvcnRzLCB7XG4gIFJlcXVlc3RDb29raWVzOiAoKSA9PiBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzOiAoKSA9PiBSZXNwb25zZUNvb2tpZXMsXG4gIHBhcnNlQ29va2llOiAoKSA9PiBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWU6ICgpID0+IHBhcnNlU2V0Q29va2llLFxuICBzdHJpbmdpZnlDb29raWU6ICgpID0+IHN0cmluZ2lmeUNvb2tpZVxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhzcmNfZXhwb3J0cyk7XG5cbi8vIHNyYy9zZXJpYWxpemUudHNcbmZ1bmN0aW9uIHN0cmluZ2lmeUNvb2tpZShjKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgYXR0cnMgPSBbXG4gICAgXCJwYXRoXCIgaW4gYyAmJiBjLnBhdGggJiYgYFBhdGg9JHtjLnBhdGh9YCxcbiAgICBcImV4cGlyZXNcIiBpbiBjICYmIChjLmV4cGlyZXMgfHwgYy5leHBpcmVzID09PSAwKSAmJiBgRXhwaXJlcz0keyh0eXBlb2YgYy5leHBpcmVzID09PSBcIm51bWJlclwiID8gbmV3IERhdGUoYy5leHBpcmVzKSA6IGMuZXhwaXJlcykudG9VVENTdHJpbmcoKX1gLFxuICAgIFwibWF4QWdlXCIgaW4gYyAmJiB0eXBlb2YgYy5tYXhBZ2UgPT09IFwibnVtYmVyXCIgJiYgYE1heC1BZ2U9JHtjLm1heEFnZX1gLFxuICAgIFwiZG9tYWluXCIgaW4gYyAmJiBjLmRvbWFpbiAmJiBgRG9tYWluPSR7Yy5kb21haW59YCxcbiAgICBcInNlY3VyZVwiIGluIGMgJiYgYy5zZWN1cmUgJiYgXCJTZWN1cmVcIixcbiAgICBcImh0dHBPbmx5XCIgaW4gYyAmJiBjLmh0dHBPbmx5ICYmIFwiSHR0cE9ubHlcIixcbiAgICBcInNhbWVTaXRlXCIgaW4gYyAmJiBjLnNhbWVTaXRlICYmIGBTYW1lU2l0ZT0ke2Muc2FtZVNpdGV9YCxcbiAgICBcInByaW9yaXR5XCIgaW4gYyAmJiBjLnByaW9yaXR5ICYmIGBQcmlvcml0eT0ke2MucHJpb3JpdHl9YFxuICBdLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGAke2MubmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQoKF9hID0gYy52YWx1ZSkgIT0gbnVsbCA/IF9hIDogXCJcIil9OyAke2F0dHJzLmpvaW4oXCI7IFwiKX1gO1xufVxuZnVuY3Rpb24gcGFyc2VDb29raWUoY29va2llKSB7XG4gIGNvbnN0IG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGZvciAoY29uc3QgcGFpciBvZiBjb29raWUuc3BsaXQoLzsgKi8pKSB7XG4gICAgaWYgKCFwYWlyKVxuICAgICAgY29udGludWU7XG4gICAgY29uc3Qgc3BsaXRBdCA9IHBhaXIuaW5kZXhPZihcIj1cIik7XG4gICAgaWYgKHNwbGl0QXQgPT09IC0xKSB7XG4gICAgICBtYXAuc2V0KHBhaXIsIFwidHJ1ZVwiKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBbcGFpci5zbGljZSgwLCBzcGxpdEF0KSwgcGFpci5zbGljZShzcGxpdEF0ICsgMSldO1xuICAgIHRyeSB7XG4gICAgICBtYXAuc2V0KGtleSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IFwidHJ1ZVwiKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXA7XG59XG5mdW5jdGlvbiBwYXJzZVNldENvb2tpZShzZXRDb29raWUpIHtcbiAgaWYgKCFzZXRDb29raWUpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIGNvbnN0IFtbbmFtZSwgdmFsdWVdLCAuLi5hdHRyaWJ1dGVzXSA9IHBhcnNlQ29va2llKHNldENvb2tpZSk7XG4gIGNvbnN0IHtcbiAgICBkb21haW4sXG4gICAgZXhwaXJlcyxcbiAgICBodHRwb25seSxcbiAgICBtYXhhZ2UsXG4gICAgcGF0aCxcbiAgICBzYW1lc2l0ZSxcbiAgICBzZWN1cmUsXG4gICAgcHJpb3JpdHlcbiAgfSA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBhdHRyaWJ1dGVzLm1hcCgoW2tleSwgdmFsdWUyXSkgPT4gW2tleS50b0xvd2VyQ2FzZSgpLCB2YWx1ZTJdKVxuICApO1xuICBjb25zdCBjb29raWUgPSB7XG4gICAgbmFtZSxcbiAgICB2YWx1ZTogZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSxcbiAgICBkb21haW4sXG4gICAgLi4uZXhwaXJlcyAmJiB7IGV4cGlyZXM6IG5ldyBEYXRlKGV4cGlyZXMpIH0sXG4gICAgLi4uaHR0cG9ubHkgJiYgeyBodHRwT25seTogdHJ1ZSB9LFxuICAgIC4uLnR5cGVvZiBtYXhhZ2UgPT09IFwic3RyaW5nXCIgJiYgeyBtYXhBZ2U6IE51bWJlcihtYXhhZ2UpIH0sXG4gICAgcGF0aCxcbiAgICAuLi5zYW1lc2l0ZSAmJiB7IHNhbWVTaXRlOiBwYXJzZVNhbWVTaXRlKHNhbWVzaXRlKSB9LFxuICAgIC4uLnNlY3VyZSAmJiB7IHNlY3VyZTogdHJ1ZSB9LFxuICAgIC4uLnByaW9yaXR5ICYmIHsgcHJpb3JpdHk6IHBhcnNlUHJpb3JpdHkocHJpb3JpdHkpIH1cbiAgfTtcbiAgcmV0dXJuIGNvbXBhY3QoY29va2llKTtcbn1cbmZ1bmN0aW9uIGNvbXBhY3QodCkge1xuICBjb25zdCBuZXdUID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHQpIHtcbiAgICBpZiAodFtrZXldKSB7XG4gICAgICBuZXdUW2tleV0gPSB0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXdUO1xufVxudmFyIFNBTUVfU0lURSA9IFtcInN0cmljdFwiLCBcImxheFwiLCBcIm5vbmVcIl07XG5mdW5jdGlvbiBwYXJzZVNhbWVTaXRlKHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIFNBTUVfU0lURS5pbmNsdWRlcyhzdHJpbmcpID8gc3RyaW5nIDogdm9pZCAwO1xufVxudmFyIFBSSU9SSVRZID0gW1wibG93XCIsIFwibWVkaXVtXCIsIFwiaGlnaFwiXTtcbmZ1bmN0aW9uIHBhcnNlUHJpb3JpdHkoc3RyaW5nKSB7XG4gIHN0cmluZyA9IHN0cmluZy50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gUFJJT1JJVFkuaW5jbHVkZXMoc3RyaW5nKSA/IHN0cmluZyA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIHNwbGl0Q29va2llc1N0cmluZyhjb29raWVzU3RyaW5nKSB7XG4gIGlmICghY29va2llc1N0cmluZylcbiAgICByZXR1cm4gW107XG4gIHZhciBjb29raWVzU3RyaW5ncyA9IFtdO1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIHN0YXJ0O1xuICB2YXIgY2g7XG4gIHZhciBsYXN0Q29tbWE7XG4gIHZhciBuZXh0U3RhcnQ7XG4gIHZhciBjb29raWVzU2VwYXJhdG9yRm91bmQ7XG4gIGZ1bmN0aW9uIHNraXBXaGl0ZXNwYWNlKCkge1xuICAgIHdoaWxlIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiAvXFxzLy50ZXN0KGNvb2tpZXNTdHJpbmcuY2hhckF0KHBvcykpKSB7XG4gICAgICBwb3MgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoO1xuICB9XG4gIGZ1bmN0aW9uIG5vdFNwZWNpYWxDaGFyKCkge1xuICAgIGNoID0gY29va2llc1N0cmluZy5jaGFyQXQocG9zKTtcbiAgICByZXR1cm4gY2ggIT09IFwiPVwiICYmIGNoICE9PSBcIjtcIiAmJiBjaCAhPT0gXCIsXCI7XG4gIH1cbiAgd2hpbGUgKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoKSB7XG4gICAgc3RhcnQgPSBwb3M7XG4gICAgY29va2llc1NlcGFyYXRvckZvdW5kID0gZmFsc2U7XG4gICAgd2hpbGUgKHNraXBXaGl0ZXNwYWNlKCkpIHtcbiAgICAgIGNoID0gY29va2llc1N0cmluZy5jaGFyQXQocG9zKTtcbiAgICAgIGlmIChjaCA9PT0gXCIsXCIpIHtcbiAgICAgICAgbGFzdENvbW1hID0gcG9zO1xuICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgbmV4dFN0YXJ0ID0gcG9zO1xuICAgICAgICB3aGlsZSAocG9zIDwgY29va2llc1N0cmluZy5sZW5ndGggJiYgbm90U3BlY2lhbENoYXIoKSkge1xuICAgICAgICAgIHBvcyArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiBjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpID09PSBcIj1cIikge1xuICAgICAgICAgIGNvb2tpZXNTZXBhcmF0b3JGb3VuZCA9IHRydWU7XG4gICAgICAgICAgcG9zID0gbmV4dFN0YXJ0O1xuICAgICAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGxhc3RDb21tYSkpO1xuICAgICAgICAgIHN0YXJ0ID0gcG9zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBvcyA9IGxhc3RDb21tYSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyArPSAxO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWNvb2tpZXNTZXBhcmF0b3JGb3VuZCB8fCBwb3MgPj0gY29va2llc1N0cmluZy5sZW5ndGgpIHtcbiAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGNvb2tpZXNTdHJpbmcubGVuZ3RoKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb29raWVzU3RyaW5ncztcbn1cblxuLy8gc3JjL3JlcXVlc3QtY29va2llcy50c1xudmFyIFJlcXVlc3RDb29raWVzID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihyZXF1ZXN0SGVhZGVycykge1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLl9wYXJzZWQgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgIHRoaXMuX2hlYWRlcnMgPSByZXF1ZXN0SGVhZGVycztcbiAgICBjb25zdCBoZWFkZXIgPSByZXF1ZXN0SGVhZGVycy5nZXQoXCJjb29raWVcIik7XG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VDb29raWUoaGVhZGVyKTtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBwYXJzZWQpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VkLnNldChuYW1lLCB7IG5hbWUsIHZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBjb29raWVzIHJlY2VpdmVkIGZyb20gdGhlIGNsaWVudFxuICAgKi9cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5zaXplO1xuICB9XG4gIGdldCguLi5hcmdzKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IGFyZ3NbMF0ubmFtZTtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkLmdldChuYW1lKTtcbiAgfVxuICBnZXRBbGwoLi4uYXJncykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBhbGwgPSBBcnJheS5mcm9tKHRoaXMuX3BhcnNlZCk7XG4gICAgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGFsbC5tYXAoKFtfLCB2YWx1ZV0pID0+IHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IChfYSA9IGFyZ3NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5uYW1lO1xuICAgIHJldHVybiBhbGwuZmlsdGVyKChbbl0pID0+IG4gPT09IG5hbWUpLm1hcCgoW18sIHZhbHVlXSkgPT4gdmFsdWUpO1xuICB9XG4gIGhhcyhuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlZC5oYXMobmFtZSk7XG4gIH1cbiAgc2V0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gYXJncy5sZW5ndGggPT09IDEgPyBbYXJnc1swXS5uYW1lLCBhcmdzWzBdLnZhbHVlXSA6IGFyZ3M7XG4gICAgY29uc3QgbWFwID0gdGhpcy5fcGFyc2VkO1xuICAgIG1hcC5zZXQobmFtZSwgeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChcbiAgICAgIFwiY29va2llXCIsXG4gICAgICBBcnJheS5mcm9tKG1hcCkubWFwKChbXywgdmFsdWUyXSkgPT4gc3RyaW5naWZ5Q29va2llKHZhbHVlMikpLmpvaW4oXCI7IFwiKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgY29va2llcyBtYXRjaGluZyB0aGUgcGFzc2VkIG5hbWUgb3IgbmFtZXMgaW4gdGhlIHJlcXVlc3QuXG4gICAqL1xuICBkZWxldGUobmFtZXMpIHtcbiAgICBjb25zdCBtYXAgPSB0aGlzLl9wYXJzZWQ7XG4gICAgY29uc3QgcmVzdWx0ID0gIUFycmF5LmlzQXJyYXkobmFtZXMpID8gbWFwLmRlbGV0ZShuYW1lcykgOiBuYW1lcy5tYXAoKG5hbWUpID0+IG1hcC5kZWxldGUobmFtZSkpO1xuICAgIHRoaXMuX2hlYWRlcnMuc2V0KFxuICAgICAgXCJjb29raWVcIixcbiAgICAgIEFycmF5LmZyb20obWFwKS5tYXAoKFtfLCB2YWx1ZV0pID0+IHN0cmluZ2lmeUNvb2tpZSh2YWx1ZSkpLmpvaW4oXCI7IFwiKVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICogRGVsZXRlIGFsbCB0aGUgY29va2llcyBpbiB0aGUgY29va2llcyBpbiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuZGVsZXRlKEFycmF5LmZyb20odGhpcy5fcGFyc2VkLmtleXMoKSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBGb3JtYXQgdGhlIGNvb2tpZXMgaW4gdGhlIHJlcXVlc3QgYXMgYSBzdHJpbmcgZm9yIGxvZ2dpbmdcbiAgICovXG4gIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gYFJlcXVlc3RDb29raWVzICR7SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuX3BhcnNlZCkpfWA7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9wYXJzZWQudmFsdWVzKCldLm1hcCgodikgPT4gYCR7di5uYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2LnZhbHVlKX1gKS5qb2luKFwiOyBcIik7XG4gIH1cbn07XG5cbi8vIHNyYy9yZXNwb25zZS1jb29raWVzLnRzXG52YXIgUmVzcG9uc2VDb29raWVzID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihyZXNwb25zZUhlYWRlcnMpIHtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5fcGFyc2VkID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICB0aGlzLl9oZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzO1xuICAgIGNvbnN0IHNldENvb2tpZSA9IChfYyA9IChfYiA9IChfYSA9IHJlc3BvbnNlSGVhZGVycy5nZXRTZXRDb29raWUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKHJlc3BvbnNlSGVhZGVycykpICE9IG51bGwgPyBfYiA6IHJlc3BvbnNlSGVhZGVycy5nZXQoXCJzZXQtY29va2llXCIpKSAhPSBudWxsID8gX2MgOiBbXTtcbiAgICBjb25zdCBjb29raWVTdHJpbmdzID0gQXJyYXkuaXNBcnJheShzZXRDb29raWUpID8gc2V0Q29va2llIDogc3BsaXRDb29raWVzU3RyaW5nKHNldENvb2tpZSk7XG4gICAgZm9yIChjb25zdCBjb29raWVTdHJpbmcgb2YgY29va2llU3RyaW5ncykge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VTZXRDb29raWUoY29va2llU3RyaW5nKTtcbiAgICAgIGlmIChwYXJzZWQpXG4gICAgICAgIHRoaXMuX3BhcnNlZC5zZXQocGFyc2VkLm5hbWUsIHBhcnNlZCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiB7QGxpbmsgaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9jb29raWUtc3RvcmUvI0Nvb2tpZVN0b3JlLWdldCBDb29raWVTdG9yZSNnZXR9IHdpdGhvdXQgdGhlIFByb21pc2UuXG4gICAqL1xuICBnZXQoLi4uYXJncykge1xuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IGFyZ3NbMF0ubmFtZTtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VkLmdldChrZXkpO1xuICB9XG4gIC8qKlxuICAgKiB7QGxpbmsgaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9jb29raWUtc3RvcmUvI0Nvb2tpZVN0b3JlLWdldEFsbCBDb29raWVTdG9yZSNnZXRBbGx9IHdpdGhvdXQgdGhlIFByb21pc2UuXG4gICAqL1xuICBnZXRBbGwoLi4uYXJncykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBhbGwgPSBBcnJheS5mcm9tKHRoaXMuX3BhcnNlZC52YWx1ZXMoKSk7XG4gICAgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGFsbDtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gdHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgPyBhcmdzWzBdIDogKF9hID0gYXJnc1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLm5hbWU7XG4gICAgcmV0dXJuIGFsbC5maWx0ZXIoKGMpID0+IGMubmFtZSA9PT0ga2V5KTtcbiAgfVxuICBoYXMobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZWQuaGFzKG5hbWUpO1xuICB9XG4gIC8qKlxuICAgKiB7QGxpbmsgaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9jb29raWUtc3RvcmUvI0Nvb2tpZVN0b3JlLXNldCBDb29raWVTdG9yZSNzZXR9IHdpdGhvdXQgdGhlIFByb21pc2UuXG4gICAqL1xuICBzZXQoLi4uYXJncykge1xuICAgIGNvbnN0IFtuYW1lLCB2YWx1ZSwgY29va2llXSA9IGFyZ3MubGVuZ3RoID09PSAxID8gW2FyZ3NbMF0ubmFtZSwgYXJnc1swXS52YWx1ZSwgYXJnc1swXV0gOiBhcmdzO1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuX3BhcnNlZDtcbiAgICBtYXAuc2V0KG5hbWUsIG5vcm1hbGl6ZUNvb2tpZSh7IG5hbWUsIHZhbHVlLCAuLi5jb29raWUgfSkpO1xuICAgIHJlcGxhY2UobWFwLCB0aGlzLl9oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICoge0BsaW5rIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vY29va2llLXN0b3JlLyNDb29raWVTdG9yZS1kZWxldGUgQ29va2llU3RvcmUjZGVsZXRlfSB3aXRob3V0IHRoZSBQcm9taXNlLlxuICAgKi9cbiAgZGVsZXRlKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbbmFtZSwgcGF0aCwgZG9tYWluXSA9IHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gW2FyZ3NbMF1dIDogW2FyZ3NbMF0ubmFtZSwgYXJnc1swXS5wYXRoLCBhcmdzWzBdLmRvbWFpbl07XG4gICAgcmV0dXJuIHRoaXMuc2V0KHsgbmFtZSwgcGF0aCwgZG9tYWluLCB2YWx1ZTogXCJcIiwgZXhwaXJlczogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApIH0pO1xuICB9XG4gIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gYFJlc3BvbnNlQ29va2llcyAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9wYXJzZWQpKX1gO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcGFyc2VkLnZhbHVlcygpXS5tYXAoc3RyaW5naWZ5Q29va2llKS5qb2luKFwiOyBcIik7XG4gIH1cbn07XG5mdW5jdGlvbiByZXBsYWNlKGJhZywgaGVhZGVycykge1xuICBoZWFkZXJzLmRlbGV0ZShcInNldC1jb29raWVcIik7XG4gIGZvciAoY29uc3QgWywgdmFsdWVdIG9mIGJhZykge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnlDb29raWUodmFsdWUpO1xuICAgIGhlYWRlcnMuYXBwZW5kKFwic2V0LWNvb2tpZVwiLCBzZXJpYWxpemVkKTtcbiAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplQ29va2llKGNvb2tpZSA9IHsgbmFtZTogXCJcIiwgdmFsdWU6IFwiXCIgfSkge1xuICBpZiAodHlwZW9mIGNvb2tpZS5leHBpcmVzID09PSBcIm51bWJlclwiKSB7XG4gICAgY29va2llLmV4cGlyZXMgPSBuZXcgRGF0ZShjb29raWUuZXhwaXJlcyk7XG4gIH1cbiAgaWYgKGNvb2tpZS5tYXhBZ2UpIHtcbiAgICBjb29raWUuZXhwaXJlcyA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBjb29raWUubWF4QWdlICogMWUzKTtcbiAgfVxuICBpZiAoY29va2llLnBhdGggPT09IG51bGwgfHwgY29va2llLnBhdGggPT09IHZvaWQgMCkge1xuICAgIGNvb2tpZS5wYXRoID0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIGNvb2tpZTtcbn1cbi8vIEFubm90YXRlIHRoZSBDb21tb25KUyBleHBvcnQgbmFtZXMgZm9yIEVTTSBpbXBvcnQgaW4gbm9kZTpcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICBSZXF1ZXN0Q29va2llcyxcbiAgUmVzcG9uc2VDb29raWVzLFxuICBwYXJzZUNvb2tpZSxcbiAgcGFyc2VTZXRDb29raWUsXG4gIHN0cmluZ2lmeUNvb2tpZVxufSk7XG4iXSwibmFtZXMiOlsiX19kZWZQcm9wIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJfX2dldE93blByb3BEZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX19nZXRPd25Qcm9wTmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX19oYXNPd25Qcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJfX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJnZXQiLCJlbnVtZXJhYmxlIiwiX19jb3B5UHJvcHMiLCJ0byIsImZyb20iLCJleGNlcHQiLCJkZXNjIiwia2V5IiwiY2FsbCIsIl9fdG9Db21tb25KUyIsIm1vZCIsInZhbHVlIiwic3JjX2V4cG9ydHMiLCJSZXF1ZXN0Q29va2llcyIsIlJlc3BvbnNlQ29va2llcyIsInBhcnNlQ29va2llIiwicGFyc2VTZXRDb29raWUiLCJzdHJpbmdpZnlDb29raWUiLCJtb2R1bGUiLCJleHBvcnRzIiwiYyIsIl9hIiwiYXR0cnMiLCJwYXRoIiwiZXhwaXJlcyIsIkRhdGUiLCJ0b1VUQ1N0cmluZyIsIm1heEFnZSIsImRvbWFpbiIsInNlY3VyZSIsImh0dHBPbmx5Iiwic2FtZVNpdGUiLCJwcmlvcml0eSIsImZpbHRlciIsIkJvb2xlYW4iLCJlbmNvZGVVUklDb21wb25lbnQiLCJqb2luIiwiY29va2llIiwibWFwIiwiTWFwIiwicGFpciIsInNwbGl0Iiwic3BsaXRBdCIsImluZGV4T2YiLCJzZXQiLCJzbGljZSIsImRlY29kZVVSSUNvbXBvbmVudCIsInNldENvb2tpZSIsImF0dHJpYnV0ZXMiLCJodHRwb25seSIsIm1heGFnZSIsInNhbWVzaXRlIiwiZnJvbUVudHJpZXMiLCJ2YWx1ZTIiLCJ0b0xvd2VyQ2FzZSIsIk51bWJlciIsInBhcnNlU2FtZVNpdGUiLCJwYXJzZVByaW9yaXR5IiwiY29tcGFjdCIsInQiLCJuZXdUIiwiU0FNRV9TSVRFIiwic3RyaW5nIiwiaW5jbHVkZXMiLCJQUklPUklUWSIsInNwbGl0Q29va2llc1N0cmluZyIsImNvb2tpZXNTdHJpbmciLCJjb29raWVzU3RyaW5ncyIsInBvcyIsInN0YXJ0IiwiY2giLCJsYXN0Q29tbWEiLCJuZXh0U3RhcnQiLCJjb29raWVzU2VwYXJhdG9yRm91bmQiLCJza2lwV2hpdGVzcGFjZSIsImxlbmd0aCIsInRlc3QiLCJjaGFyQXQiLCJub3RTcGVjaWFsQ2hhciIsInB1c2giLCJzdWJzdHJpbmciLCJjb25zdHJ1Y3RvciIsInJlcXVlc3RIZWFkZXJzIiwiX3BhcnNlZCIsIl9oZWFkZXJzIiwiaGVhZGVyIiwicGFyc2VkIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJzaXplIiwiYXJncyIsImdldEFsbCIsIkFycmF5IiwiXyIsIm4iLCJoYXMiLCJkZWxldGUiLCJuYW1lcyIsInJlc3VsdCIsImlzQXJyYXkiLCJjbGVhciIsImtleXMiLCJmb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidG9TdHJpbmciLCJ2YWx1ZXMiLCJ2IiwicmVzcG9uc2VIZWFkZXJzIiwiX2IiLCJfYyIsImdldFNldENvb2tpZSIsImNvb2tpZVN0cmluZ3MiLCJjb29raWVTdHJpbmciLCJub3JtYWxpemVDb29raWUiLCJyZXBsYWNlIiwiYmFnIiwiaGVhZGVycyIsInNlcmlhbGl6ZWQiLCJhcHBlbmQiLCJub3ciXSwic291cmNlUm9vdCI6IiJ9\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, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("var __dirname = \"/\";\n\n(()=>{\n \"use strict\";\n var e = {\n 491: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.ContextAPI = void 0;\n const n = r(223);\n const a = r(172);\n const o = r(930);\n const i = \"context\";\n const c = new n.NoopContextManager;\n class ContextAPI {\n constructor(){}\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI;\n }\n return this._instance;\n }\n setGlobalContextManager(e) {\n return (0, a.registerGlobal)(i, e, o.DiagAPI.instance());\n }\n active() {\n return this._getContextManager().active();\n }\n with(e, t, r, ...n) {\n return this._getContextManager().with(e, t, r, ...n);\n }\n bind(e, t) {\n return this._getContextManager().bind(e, t);\n }\n _getContextManager() {\n return (0, a.getGlobal)(i) || c;\n }\n disable() {\n this._getContextManager().disable();\n (0, a.unregisterGlobal)(i, o.DiagAPI.instance());\n }\n }\n t.ContextAPI = ContextAPI;\n },\n 930: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.DiagAPI = void 0;\n const n = r(56);\n const a = r(912);\n const o = r(957);\n const i = r(172);\n const c = \"diag\";\n class DiagAPI {\n constructor(){\n function _logProxy(e) {\n return function(...t) {\n const r = (0, i.getGlobal)(\"diag\");\n if (!r) return;\n return r[e](...t);\n };\n }\n const e = this;\n const setLogger = (t, r = {\n logLevel: o.DiagLogLevel.INFO\n })=>{\n var n, c, s;\n if (t === e) {\n const t = new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");\n e.error((n = t.stack) !== null && n !== void 0 ? n : t.message);\n return false;\n }\n if (typeof r === \"number\") {\n r = {\n logLevel: r\n };\n }\n const u = (0, i.getGlobal)(\"diag\");\n const l = (0, a.createLogLevelDiagLogger)((c = r.logLevel) !== null && c !== void 0 ? c : o.DiagLogLevel.INFO, t);\n if (u && !r.suppressOverrideMessage) {\n const e = (s = (new Error).stack) !== null && s !== void 0 ? s : \"<failed to generate stacktrace>\";\n u.warn(`Current logger will be overwritten from ${e}`);\n l.warn(`Current logger will overwrite one already registered from ${e}`);\n }\n return (0, i.registerGlobal)(\"diag\", l, e, true);\n };\n e.setLogger = setLogger;\n e.disable = ()=>{\n (0, i.unregisterGlobal)(c, e);\n };\n e.createComponentLogger = (e)=>new n.DiagComponentLogger(e);\n e.verbose = _logProxy(\"verbose\");\n e.debug = _logProxy(\"debug\");\n e.info = _logProxy(\"info\");\n e.warn = _logProxy(\"warn\");\n e.error = _logProxy(\"error\");\n }\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI;\n }\n return this._instance;\n }\n }\n t.DiagAPI = DiagAPI;\n },\n 653: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.MetricsAPI = void 0;\n const n = r(660);\n const a = r(172);\n const o = r(930);\n const i = \"metrics\";\n class MetricsAPI {\n constructor(){}\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI;\n }\n return this._instance;\n }\n setGlobalMeterProvider(e) {\n return (0, a.registerGlobal)(i, e, o.DiagAPI.instance());\n }\n getMeterProvider() {\n return (0, a.getGlobal)(i) || n.NOOP_METER_PROVIDER;\n }\n getMeter(e, t, r) {\n return this.getMeterProvider().getMeter(e, t, r);\n }\n disable() {\n (0, a.unregisterGlobal)(i, o.DiagAPI.instance());\n }\n }\n t.MetricsAPI = MetricsAPI;\n },\n 181: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.PropagationAPI = void 0;\n const n = r(172);\n const a = r(874);\n const o = r(194);\n const i = r(277);\n const c = r(369);\n const s = r(930);\n const u = \"propagation\";\n const l = new a.NoopTextMapPropagator;\n class PropagationAPI {\n constructor(){\n this.createBaggage = c.createBaggage;\n this.getBaggage = i.getBaggage;\n this.getActiveBaggage = i.getActiveBaggage;\n this.setBaggage = i.setBaggage;\n this.deleteBaggage = i.deleteBaggage;\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI;\n }\n return this._instance;\n }\n setGlobalPropagator(e) {\n return (0, n.registerGlobal)(u, e, s.DiagAPI.instance());\n }\n inject(e, t, r = o.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(e, t, r);\n }\n extract(e, t, r = o.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(e, t, r);\n }\n fields() {\n return this._getGlobalPropagator().fields();\n }\n disable() {\n (0, n.unregisterGlobal)(u, s.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, n.getGlobal)(u) || l;\n }\n }\n t.PropagationAPI = PropagationAPI;\n },\n 997: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.TraceAPI = void 0;\n const n = r(172);\n const a = r(846);\n const o = r(139);\n const i = r(607);\n const c = r(930);\n const s = \"trace\";\n class TraceAPI {\n constructor(){\n this._proxyTracerProvider = new a.ProxyTracerProvider;\n this.wrapSpanContext = o.wrapSpanContext;\n this.isSpanContextValid = o.isSpanContextValid;\n this.deleteSpan = i.deleteSpan;\n this.getSpan = i.getSpan;\n this.getActiveSpan = i.getActiveSpan;\n this.getSpanContext = i.getSpanContext;\n this.setSpan = i.setSpan;\n this.setSpanContext = i.setSpanContext;\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI;\n }\n return this._instance;\n }\n setGlobalTracerProvider(e) {\n const t = (0, n.registerGlobal)(s, this._proxyTracerProvider, c.DiagAPI.instance());\n if (t) {\n this._proxyTracerProvider.setDelegate(e);\n }\n return t;\n }\n getTracerProvider() {\n return (0, n.getGlobal)(s) || this._proxyTracerProvider;\n }\n getTracer(e, t) {\n return this.getTracerProvider().getTracer(e, t);\n }\n disable() {\n (0, n.unregisterGlobal)(s, c.DiagAPI.instance());\n this._proxyTracerProvider = new a.ProxyTracerProvider;\n }\n }\n t.TraceAPI = TraceAPI;\n },\n 277: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.deleteBaggage = t.setBaggage = t.getActiveBaggage = t.getBaggage = void 0;\n const n = r(491);\n const a = r(780);\n const o = (0, a.createContextKey)(\"OpenTelemetry Baggage Key\");\n function getBaggage(e) {\n return e.getValue(o) || undefined;\n }\n t.getBaggage = getBaggage;\n function getActiveBaggage() {\n return getBaggage(n.ContextAPI.getInstance().active());\n }\n t.getActiveBaggage = getActiveBaggage;\n function setBaggage(e, t) {\n return e.setValue(o, t);\n }\n t.setBaggage = setBaggage;\n function deleteBaggage(e) {\n return e.deleteValue(o);\n }\n t.deleteBaggage = deleteBaggage;\n },\n 993: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.BaggageImpl = void 0;\n class BaggageImpl {\n constructor(e){\n this._entries = e ? new Map(e) : new Map;\n }\n getEntry(e) {\n const t = this._entries.get(e);\n if (!t) {\n return undefined;\n }\n return Object.assign({}, t);\n }\n getAllEntries() {\n return Array.from(this._entries.entries()).map(([e, t])=>[\n e,\n t\n ]);\n }\n setEntry(e, t) {\n const r = new BaggageImpl(this._entries);\n r._entries.set(e, t);\n return r;\n }\n removeEntry(e) {\n const t = new BaggageImpl(this._entries);\n t._entries.delete(e);\n return t;\n }\n removeEntries(...e) {\n const t = new BaggageImpl(this._entries);\n for (const r of e){\n t._entries.delete(r);\n }\n return t;\n }\n clear() {\n return new BaggageImpl;\n }\n }\n t.BaggageImpl = BaggageImpl;\n },\n 830: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.baggageEntryMetadataSymbol = void 0;\n t.baggageEntryMetadataSymbol = Symbol(\"BaggageEntryMetadata\");\n },\n 369: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.baggageEntryMetadataFromString = t.createBaggage = void 0;\n const n = r(930);\n const a = r(993);\n const o = r(830);\n const i = n.DiagAPI.instance();\n function createBaggage(e = {}) {\n return new a.BaggageImpl(new Map(Object.entries(e)));\n }\n t.createBaggage = createBaggage;\n function baggageEntryMetadataFromString(e) {\n if (typeof e !== \"string\") {\n i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);\n e = \"\";\n }\n return {\n __TYPE__: o.baggageEntryMetadataSymbol,\n toString () {\n return e;\n }\n };\n }\n t.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n },\n 67: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.context = void 0;\n const n = r(491);\n t.context = n.ContextAPI.getInstance();\n },\n 223: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NoopContextManager = void 0;\n const n = r(780);\n class NoopContextManager {\n active() {\n return n.ROOT_CONTEXT;\n }\n with(e, t, r, ...n) {\n return t.call(r, ...n);\n }\n bind(e, t) {\n return t;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n }\n t.NoopContextManager = NoopContextManager;\n },\n 780: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.ROOT_CONTEXT = t.createContextKey = void 0;\n function createContextKey(e) {\n return Symbol.for(e);\n }\n t.createContextKey = createContextKey;\n class BaseContext {\n constructor(e){\n const t = this;\n t._currentContext = e ? new Map(e) : new Map;\n t.getValue = (e)=>t._currentContext.get(e);\n t.setValue = (e, r)=>{\n const n = new BaseContext(t._currentContext);\n n._currentContext.set(e, r);\n return n;\n };\n t.deleteValue = (e)=>{\n const r = new BaseContext(t._currentContext);\n r._currentContext.delete(e);\n return r;\n };\n }\n }\n t.ROOT_CONTEXT = new BaseContext;\n },\n 506: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.diag = void 0;\n const n = r(930);\n t.diag = n.DiagAPI.instance();\n },\n 56: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.DiagComponentLogger = void 0;\n const n = r(172);\n class DiagComponentLogger {\n constructor(e){\n this._namespace = e.namespace || \"DiagComponentLogger\";\n }\n debug(...e) {\n return logProxy(\"debug\", this._namespace, e);\n }\n error(...e) {\n return logProxy(\"error\", this._namespace, e);\n }\n info(...e) {\n return logProxy(\"info\", this._namespace, e);\n }\n warn(...e) {\n return logProxy(\"warn\", this._namespace, e);\n }\n verbose(...e) {\n return logProxy(\"verbose\", this._namespace, e);\n }\n }\n t.DiagComponentLogger = DiagComponentLogger;\n function logProxy(e, t, r) {\n const a = (0, n.getGlobal)(\"diag\");\n if (!a) {\n return;\n }\n r.unshift(t);\n return a[e](...r);\n }\n },\n 972: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.DiagConsoleLogger = void 0;\n const r = [\n {\n n: \"error\",\n c: \"error\"\n },\n {\n n: \"warn\",\n c: \"warn\"\n },\n {\n n: \"info\",\n c: \"info\"\n },\n {\n n: \"debug\",\n c: \"debug\"\n },\n {\n n: \"verbose\",\n c: \"trace\"\n }\n ];\n class DiagConsoleLogger {\n constructor(){\n function _consoleFunc(e) {\n return function(...t) {\n if (console) {\n let r = console[e];\n if (typeof r !== \"function\") {\n r = console.log;\n }\n if (typeof r === \"function\") {\n return r.apply(console, t);\n }\n }\n };\n }\n for(let e = 0; e < r.length; e++){\n this[r[e].n] = _consoleFunc(r[e].c);\n }\n }\n }\n t.DiagConsoleLogger = DiagConsoleLogger;\n },\n 912: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.createLogLevelDiagLogger = void 0;\n const n = r(957);\n function createLogLevelDiagLogger(e, t) {\n if (e < n.DiagLogLevel.NONE) {\n e = n.DiagLogLevel.NONE;\n } else if (e > n.DiagLogLevel.ALL) {\n e = n.DiagLogLevel.ALL;\n }\n t = t || {};\n function _filterFunc(r, n) {\n const a = t[r];\n if (typeof a === \"function\" && e >= n) {\n return a.bind(t);\n }\n return function() {};\n }\n return {\n error: _filterFunc(\"error\", n.DiagLogLevel.ERROR),\n warn: _filterFunc(\"warn\", n.DiagLogLevel.WARN),\n info: _filterFunc(\"info\", n.DiagLogLevel.INFO),\n debug: _filterFunc(\"debug\", n.DiagLogLevel.DEBUG),\n verbose: _filterFunc(\"verbose\", n.DiagLogLevel.VERBOSE)\n };\n }\n t.createLogLevelDiagLogger = createLogLevelDiagLogger;\n },\n 957: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.DiagLogLevel = void 0;\n var r;\n (function(e) {\n e[e[\"NONE\"] = 0] = \"NONE\";\n e[e[\"ERROR\"] = 30] = \"ERROR\";\n e[e[\"WARN\"] = 50] = \"WARN\";\n e[e[\"INFO\"] = 60] = \"INFO\";\n e[e[\"DEBUG\"] = 70] = \"DEBUG\";\n e[e[\"VERBOSE\"] = 80] = \"VERBOSE\";\n e[e[\"ALL\"] = 9999] = \"ALL\";\n })(r = t.DiagLogLevel || (t.DiagLogLevel = {}));\n },\n 172: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.unregisterGlobal = t.getGlobal = t.registerGlobal = void 0;\n const n = r(200);\n const a = r(521);\n const o = r(130);\n const i = a.VERSION.split(\".\")[0];\n const c = Symbol.for(`opentelemetry.js.api.${i}`);\n const s = n._globalThis;\n function registerGlobal(e, t, r, n = false) {\n var o;\n const i = s[c] = (o = s[c]) !== null && o !== void 0 ? o : {\n version: a.VERSION\n };\n if (!n && i[e]) {\n const t = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);\n r.error(t.stack || t.message);\n return false;\n }\n if (i.version !== a.VERSION) {\n const t = new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);\n r.error(t.stack || t.message);\n return false;\n }\n i[e] = t;\n r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);\n return true;\n }\n t.registerGlobal = registerGlobal;\n function getGlobal(e) {\n var t, r;\n const n = (t = s[c]) === null || t === void 0 ? void 0 : t.version;\n if (!n || !(0, o.isCompatible)(n)) {\n return;\n }\n return (r = s[c]) === null || r === void 0 ? void 0 : r[e];\n }\n t.getGlobal = getGlobal;\n function unregisterGlobal(e, t) {\n t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);\n const r = s[c];\n if (r) {\n delete r[e];\n }\n }\n t.unregisterGlobal = unregisterGlobal;\n },\n 130: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.isCompatible = t._makeCompatibilityCheck = void 0;\n const n = r(521);\n const a = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n function _makeCompatibilityCheck(e) {\n const t = new Set([\n e\n ]);\n const r = new Set;\n const n = e.match(a);\n if (!n) {\n return ()=>false;\n }\n const o = {\n major: +n[1],\n minor: +n[2],\n patch: +n[3],\n prerelease: n[4]\n };\n if (o.prerelease != null) {\n return function isExactmatch(t) {\n return t === e;\n };\n }\n function _reject(e) {\n r.add(e);\n return false;\n }\n function _accept(e) {\n t.add(e);\n return true;\n }\n return function isCompatible(e) {\n if (t.has(e)) {\n return true;\n }\n if (r.has(e)) {\n return false;\n }\n const n = e.match(a);\n if (!n) {\n return _reject(e);\n }\n const i = {\n major: +n[1],\n minor: +n[2],\n patch: +n[3],\n prerelease: n[4]\n };\n if (i.prerelease != null) {\n return _reject(e);\n }\n if (o.major !== i.major) {\n return _reject(e);\n }\n if (o.major === 0) {\n if (o.minor === i.minor && o.patch <= i.patch) {\n return _accept(e);\n }\n return _reject(e);\n }\n if (o.minor <= i.minor) {\n return _accept(e);\n }\n return _reject(e);\n };\n }\n t._makeCompatibilityCheck = _makeCompatibilityCheck;\n t.isCompatible = _makeCompatibilityCheck(n.VERSION);\n },\n 886: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.metrics = void 0;\n const n = r(653);\n t.metrics = n.MetricsAPI.getInstance();\n },\n 901: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.ValueType = void 0;\n var r;\n (function(e) {\n e[e[\"INT\"] = 0] = \"INT\";\n e[e[\"DOUBLE\"] = 1] = \"DOUBLE\";\n })(r = t.ValueType || (t.ValueType = {}));\n },\n 102: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n 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;\n class NoopMeter {\n constructor(){}\n createHistogram(e, r) {\n return t.NOOP_HISTOGRAM_METRIC;\n }\n createCounter(e, r) {\n return t.NOOP_COUNTER_METRIC;\n }\n createUpDownCounter(e, r) {\n return t.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n createObservableGauge(e, r) {\n return t.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n createObservableCounter(e, r) {\n return t.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n createObservableUpDownCounter(e, r) {\n return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n addBatchObservableCallback(e, t) {}\n removeBatchObservableCallback(e) {}\n }\n t.NoopMeter = NoopMeter;\n class NoopMetric {\n }\n t.NoopMetric = NoopMetric;\n class NoopCounterMetric extends NoopMetric {\n add(e, t) {}\n }\n t.NoopCounterMetric = NoopCounterMetric;\n class NoopUpDownCounterMetric extends NoopMetric {\n add(e, t) {}\n }\n t.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\n class NoopHistogramMetric extends NoopMetric {\n record(e, t) {}\n }\n t.NoopHistogramMetric = NoopHistogramMetric;\n class NoopObservableMetric {\n addCallback(e) {}\n removeCallback(e) {}\n }\n t.NoopObservableMetric = NoopObservableMetric;\n class NoopObservableCounterMetric extends NoopObservableMetric {\n }\n t.NoopObservableCounterMetric = NoopObservableCounterMetric;\n class NoopObservableGaugeMetric extends NoopObservableMetric {\n }\n t.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\n class NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n }\n t.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\n t.NOOP_METER = new NoopMeter;\n t.NOOP_COUNTER_METRIC = new NoopCounterMetric;\n t.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric;\n t.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric;\n t.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric;\n t.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric;\n t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric;\n function createNoopMeter() {\n return t.NOOP_METER;\n }\n t.createNoopMeter = createNoopMeter;\n },\n 660: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NOOP_METER_PROVIDER = t.NoopMeterProvider = void 0;\n const n = r(102);\n class NoopMeterProvider {\n getMeter(e, t, r) {\n return n.NOOP_METER;\n }\n }\n t.NoopMeterProvider = NoopMeterProvider;\n t.NOOP_METER_PROVIDER = new NoopMeterProvider;\n },\n 200: function(e, t, r) {\n var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) {\n if (n === undefined) n = r;\n Object.defineProperty(e, n, {\n enumerable: true,\n get: function() {\n return t[r];\n }\n });\n } : function(e, t, r, n) {\n if (n === undefined) n = r;\n e[n] = t[r];\n });\n var a = this && this.__exportStar || function(e, t) {\n for(var r in e)if (r !== \"default\" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r);\n };\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n a(r(46), t);\n },\n 651: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t._globalThis = void 0;\n t._globalThis = typeof globalThis === \"object\" ? globalThis : __webpack_require__.g;\n },\n 46: function(e, t, r) {\n var n = this && this.__createBinding || (Object.create ? function(e, t, r, n) {\n if (n === undefined) n = r;\n Object.defineProperty(e, n, {\n enumerable: true,\n get: function() {\n return t[r];\n }\n });\n } : function(e, t, r, n) {\n if (n === undefined) n = r;\n e[n] = t[r];\n });\n var a = this && this.__exportStar || function(e, t) {\n for(var r in e)if (r !== \"default\" && !Object.prototype.hasOwnProperty.call(t, r)) n(t, e, r);\n };\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n a(r(651), t);\n },\n 939: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.propagation = void 0;\n const n = r(181);\n t.propagation = n.PropagationAPI.getInstance();\n },\n 874: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NoopTextMapPropagator = void 0;\n class NoopTextMapPropagator {\n inject(e, t) {}\n extract(e, t) {\n return e;\n }\n fields() {\n return [];\n }\n }\n t.NoopTextMapPropagator = NoopTextMapPropagator;\n },\n 194: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.defaultTextMapSetter = t.defaultTextMapGetter = void 0;\n t.defaultTextMapGetter = {\n get (e, t) {\n if (e == null) {\n return undefined;\n }\n return e[t];\n },\n keys (e) {\n if (e == null) {\n return [];\n }\n return Object.keys(e);\n }\n };\n t.defaultTextMapSetter = {\n set (e, t, r) {\n if (e == null) {\n return;\n }\n e[t] = r;\n }\n };\n },\n 845: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.trace = void 0;\n const n = r(997);\n t.trace = n.TraceAPI.getInstance();\n },\n 403: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NonRecordingSpan = void 0;\n const n = r(476);\n class NonRecordingSpan {\n constructor(e = n.INVALID_SPAN_CONTEXT){\n this._spanContext = e;\n }\n spanContext() {\n return this._spanContext;\n }\n setAttribute(e, t) {\n return this;\n }\n setAttributes(e) {\n return this;\n }\n addEvent(e, t) {\n return this;\n }\n setStatus(e) {\n return this;\n }\n updateName(e) {\n return this;\n }\n end(e) {}\n isRecording() {\n return false;\n }\n recordException(e, t) {}\n }\n t.NonRecordingSpan = NonRecordingSpan;\n },\n 614: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NoopTracer = void 0;\n const n = r(491);\n const a = r(607);\n const o = r(403);\n const i = r(139);\n const c = n.ContextAPI.getInstance();\n class NoopTracer {\n startSpan(e, t, r = c.active()) {\n const n = Boolean(t === null || t === void 0 ? void 0 : t.root);\n if (n) {\n return new o.NonRecordingSpan;\n }\n const s = r && (0, a.getSpanContext)(r);\n if (isSpanContext(s) && (0, i.isSpanContextValid)(s)) {\n return new o.NonRecordingSpan(s);\n } else {\n return new o.NonRecordingSpan;\n }\n }\n startActiveSpan(e, t, r, n) {\n let o;\n let i;\n let s;\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n s = t;\n } else if (arguments.length === 3) {\n o = t;\n s = r;\n } else {\n o = t;\n i = r;\n s = n;\n }\n const u = i !== null && i !== void 0 ? i : c.active();\n const l = this.startSpan(e, o, u);\n const g = (0, a.setSpan)(u, l);\n return c.with(g, s, undefined, l);\n }\n }\n t.NoopTracer = NoopTracer;\n function isSpanContext(e) {\n return typeof e === \"object\" && typeof e[\"spanId\"] === \"string\" && typeof e[\"traceId\"] === \"string\" && typeof e[\"traceFlags\"] === \"number\";\n }\n },\n 124: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.NoopTracerProvider = void 0;\n const n = r(614);\n class NoopTracerProvider {\n getTracer(e, t, r) {\n return new n.NoopTracer;\n }\n }\n t.NoopTracerProvider = NoopTracerProvider;\n },\n 125: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.ProxyTracer = void 0;\n const n = r(614);\n const a = new n.NoopTracer;\n class ProxyTracer {\n constructor(e, t, r, n){\n this._provider = e;\n this.name = t;\n this.version = r;\n this.options = n;\n }\n startSpan(e, t, r) {\n return this._getTracer().startSpan(e, t, r);\n }\n startActiveSpan(e, t, r, n) {\n const a = this._getTracer();\n return Reflect.apply(a.startActiveSpan, a, arguments);\n }\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const e = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!e) {\n return a;\n }\n this._delegate = e;\n return this._delegate;\n }\n }\n t.ProxyTracer = ProxyTracer;\n },\n 846: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.ProxyTracerProvider = void 0;\n const n = r(125);\n const a = r(124);\n const o = new a.NoopTracerProvider;\n class ProxyTracerProvider {\n getTracer(e, t, r) {\n var a;\n return (a = this.getDelegateTracer(e, t, r)) !== null && a !== void 0 ? a : new n.ProxyTracer(this, e, t, r);\n }\n getDelegate() {\n var e;\n return (e = this._delegate) !== null && e !== void 0 ? e : o;\n }\n setDelegate(e) {\n this._delegate = e;\n }\n getDelegateTracer(e, t, r) {\n var n;\n return (n = this._delegate) === null || n === void 0 ? void 0 : n.getTracer(e, t, r);\n }\n }\n t.ProxyTracerProvider = ProxyTracerProvider;\n },\n 996: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.SamplingDecision = void 0;\n var r;\n (function(e) {\n e[e[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n e[e[\"RECORD\"] = 1] = \"RECORD\";\n e[e[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n })(r = t.SamplingDecision || (t.SamplingDecision = {}));\n },\n 607: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.getSpanContext = t.setSpanContext = t.deleteSpan = t.setSpan = t.getActiveSpan = t.getSpan = void 0;\n const n = r(780);\n const a = r(403);\n const o = r(491);\n const i = (0, n.createContextKey)(\"OpenTelemetry Context Key SPAN\");\n function getSpan(e) {\n return e.getValue(i) || undefined;\n }\n t.getSpan = getSpan;\n function getActiveSpan() {\n return getSpan(o.ContextAPI.getInstance().active());\n }\n t.getActiveSpan = getActiveSpan;\n function setSpan(e, t) {\n return e.setValue(i, t);\n }\n t.setSpan = setSpan;\n function deleteSpan(e) {\n return e.deleteValue(i);\n }\n t.deleteSpan = deleteSpan;\n function setSpanContext(e, t) {\n return setSpan(e, new a.NonRecordingSpan(t));\n }\n t.setSpanContext = setSpanContext;\n function getSpanContext(e) {\n var t;\n return (t = getSpan(e)) === null || t === void 0 ? void 0 : t.spanContext();\n }\n t.getSpanContext = getSpanContext;\n },\n 325: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.TraceStateImpl = void 0;\n const n = r(564);\n const a = 32;\n const o = 512;\n const i = \",\";\n const c = \"=\";\n class TraceStateImpl {\n constructor(e){\n this._internalState = new Map;\n if (e) this._parse(e);\n }\n set(e, t) {\n const r = this._clone();\n if (r._internalState.has(e)) {\n r._internalState.delete(e);\n }\n r._internalState.set(e, t);\n return r;\n }\n unset(e) {\n const t = this._clone();\n t._internalState.delete(e);\n return t;\n }\n get(e) {\n return this._internalState.get(e);\n }\n serialize() {\n return this._keys().reduce((e, t)=>{\n e.push(t + c + this.get(t));\n return e;\n }, []).join(i);\n }\n _parse(e) {\n if (e.length > o) return;\n this._internalState = e.split(i).reverse().reduce((e, t)=>{\n const r = t.trim();\n const a = r.indexOf(c);\n if (a !== -1) {\n const o = r.slice(0, a);\n const i = r.slice(a + 1, t.length);\n if ((0, n.validateKey)(o) && (0, n.validateValue)(i)) {\n e.set(o, i);\n } else {}\n }\n return e;\n }, new Map);\n if (this._internalState.size > a) {\n this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, a));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const e = new TraceStateImpl;\n e._internalState = new Map(this._internalState);\n return e;\n }\n }\n t.TraceStateImpl = TraceStateImpl;\n },\n 564: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.validateValue = t.validateKey = void 0;\n const r = \"[_0-9a-z-*/]\";\n const n = `[a-z]${r}{0,255}`;\n const a = `[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;\n const o = new RegExp(`^(?:${n}|${a})$`);\n const i = /^[ -~]{0,255}[!-~]$/;\n const c = /,|=/;\n function validateKey(e) {\n return o.test(e);\n }\n t.validateKey = validateKey;\n function validateValue(e) {\n return i.test(e) && !c.test(e);\n }\n t.validateValue = validateValue;\n },\n 98: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.createTraceState = void 0;\n const n = r(325);\n function createTraceState(e) {\n return new n.TraceStateImpl(e);\n }\n t.createTraceState = createTraceState;\n },\n 476: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.INVALID_SPAN_CONTEXT = t.INVALID_TRACEID = t.INVALID_SPANID = void 0;\n const n = r(475);\n t.INVALID_SPANID = \"0000000000000000\";\n t.INVALID_TRACEID = \"00000000000000000000000000000000\";\n t.INVALID_SPAN_CONTEXT = {\n traceId: t.INVALID_TRACEID,\n spanId: t.INVALID_SPANID,\n traceFlags: n.TraceFlags.NONE\n };\n },\n 357: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.SpanKind = void 0;\n var r;\n (function(e) {\n e[e[\"INTERNAL\"] = 0] = \"INTERNAL\";\n e[e[\"SERVER\"] = 1] = \"SERVER\";\n e[e[\"CLIENT\"] = 2] = \"CLIENT\";\n e[e[\"PRODUCER\"] = 3] = \"PRODUCER\";\n e[e[\"CONSUMER\"] = 4] = \"CONSUMER\";\n })(r = t.SpanKind || (t.SpanKind = {}));\n },\n 139: (e, t, r)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.wrapSpanContext = t.isSpanContextValid = t.isValidSpanId = t.isValidTraceId = void 0;\n const n = r(476);\n const a = r(403);\n const o = /^([0-9a-f]{32})$/i;\n const i = /^[0-9a-f]{16}$/i;\n function isValidTraceId(e) {\n return o.test(e) && e !== n.INVALID_TRACEID;\n }\n t.isValidTraceId = isValidTraceId;\n function isValidSpanId(e) {\n return i.test(e) && e !== n.INVALID_SPANID;\n }\n t.isValidSpanId = isValidSpanId;\n function isSpanContextValid(e) {\n return isValidTraceId(e.traceId) && isValidSpanId(e.spanId);\n }\n t.isSpanContextValid = isSpanContextValid;\n function wrapSpanContext(e) {\n return new a.NonRecordingSpan(e);\n }\n t.wrapSpanContext = wrapSpanContext;\n },\n 847: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.SpanStatusCode = void 0;\n var r;\n (function(e) {\n e[e[\"UNSET\"] = 0] = \"UNSET\";\n e[e[\"OK\"] = 1] = \"OK\";\n e[e[\"ERROR\"] = 2] = \"ERROR\";\n })(r = t.SpanStatusCode || (t.SpanStatusCode = {}));\n },\n 475: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.TraceFlags = void 0;\n var r;\n (function(e) {\n e[e[\"NONE\"] = 0] = \"NONE\";\n e[e[\"SAMPLED\"] = 1] = \"SAMPLED\";\n })(r = t.TraceFlags || (t.TraceFlags = {}));\n },\n 521: (e, t)=>{\n Object.defineProperty(t, \"__esModule\", {\n value: true\n });\n t.VERSION = void 0;\n t.VERSION = \"1.6.0\";\n }\n };\n var t = {};\n function __nccwpck_require__(r) {\n var n = t[r];\n if (n !== undefined) {\n return n.exports;\n }\n var a = t[r] = {\n exports: {}\n };\n var o = true;\n try {\n e[r].call(a.exports, a, a.exports, __nccwpck_require__);\n o = false;\n } finally{\n if (o) delete t[r];\n }\n return a.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var r = {};\n (()=>{\n var e = r;\n Object.defineProperty(e, \"__esModule\", {\n value: true\n });\n 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;\n var t = __nccwpck_require__(369);\n Object.defineProperty(e, \"baggageEntryMetadataFromString\", {\n enumerable: true,\n get: function() {\n return t.baggageEntryMetadataFromString;\n }\n });\n var n = __nccwpck_require__(780);\n Object.defineProperty(e, \"createContextKey\", {\n enumerable: true,\n get: function() {\n return n.createContextKey;\n }\n });\n Object.defineProperty(e, \"ROOT_CONTEXT\", {\n enumerable: true,\n get: function() {\n return n.ROOT_CONTEXT;\n }\n });\n var a = __nccwpck_require__(972);\n Object.defineProperty(e, \"DiagConsoleLogger\", {\n enumerable: true,\n get: function() {\n return a.DiagConsoleLogger;\n }\n });\n var o = __nccwpck_require__(957);\n Object.defineProperty(e, \"DiagLogLevel\", {\n enumerable: true,\n get: function() {\n return o.DiagLogLevel;\n }\n });\n var i = __nccwpck_require__(102);\n Object.defineProperty(e, \"createNoopMeter\", {\n enumerable: true,\n get: function() {\n return i.createNoopMeter;\n }\n });\n var c = __nccwpck_require__(901);\n Object.defineProperty(e, \"ValueType\", {\n enumerable: true,\n get: function() {\n return c.ValueType;\n }\n });\n var s = __nccwpck_require__(194);\n Object.defineProperty(e, \"defaultTextMapGetter\", {\n enumerable: true,\n get: function() {\n return s.defaultTextMapGetter;\n }\n });\n Object.defineProperty(e, \"defaultTextMapSetter\", {\n enumerable: true,\n get: function() {\n return s.defaultTextMapSetter;\n }\n });\n var u = __nccwpck_require__(125);\n Object.defineProperty(e, \"ProxyTracer\", {\n enumerable: true,\n get: function() {\n return u.ProxyTracer;\n }\n });\n var l = __nccwpck_require__(846);\n Object.defineProperty(e, \"ProxyTracerProvider\", {\n enumerable: true,\n get: function() {\n return l.ProxyTracerProvider;\n }\n });\n var g = __nccwpck_require__(996);\n Object.defineProperty(e, \"SamplingDecision\", {\n enumerable: true,\n get: function() {\n return g.SamplingDecision;\n }\n });\n var p = __nccwpck_require__(357);\n Object.defineProperty(e, \"SpanKind\", {\n enumerable: true,\n get: function() {\n return p.SpanKind;\n }\n });\n var d = __nccwpck_require__(847);\n Object.defineProperty(e, \"SpanStatusCode\", {\n enumerable: true,\n get: function() {\n return d.SpanStatusCode;\n }\n });\n var _ = __nccwpck_require__(475);\n Object.defineProperty(e, \"TraceFlags\", {\n enumerable: true,\n get: function() {\n return _.TraceFlags;\n }\n });\n var f = __nccwpck_require__(98);\n Object.defineProperty(e, \"createTraceState\", {\n enumerable: true,\n get: function() {\n return f.createTraceState;\n }\n });\n var b = __nccwpck_require__(139);\n Object.defineProperty(e, \"isSpanContextValid\", {\n enumerable: true,\n get: function() {\n return b.isSpanContextValid;\n }\n });\n Object.defineProperty(e, \"isValidTraceId\", {\n enumerable: true,\n get: function() {\n return b.isValidTraceId;\n }\n });\n Object.defineProperty(e, \"isValidSpanId\", {\n enumerable: true,\n get: function() {\n return b.isValidSpanId;\n }\n });\n var v = __nccwpck_require__(476);\n Object.defineProperty(e, \"INVALID_SPANID\", {\n enumerable: true,\n get: function() {\n return v.INVALID_SPANID;\n }\n });\n Object.defineProperty(e, \"INVALID_TRACEID\", {\n enumerable: true,\n get: function() {\n return v.INVALID_TRACEID;\n }\n });\n Object.defineProperty(e, \"INVALID_SPAN_CONTEXT\", {\n enumerable: true,\n get: function() {\n return v.INVALID_SPAN_CONTEXT;\n }\n });\n const O = __nccwpck_require__(67);\n Object.defineProperty(e, \"context\", {\n enumerable: true,\n get: function() {\n return O.context;\n }\n });\n const P = __nccwpck_require__(506);\n Object.defineProperty(e, \"diag\", {\n enumerable: true,\n get: function() {\n return P.diag;\n }\n });\n const N = __nccwpck_require__(886);\n Object.defineProperty(e, \"metrics\", {\n enumerable: true,\n get: function() {\n return N.metrics;\n }\n });\n const S = __nccwpck_require__(939);\n Object.defineProperty(e, \"propagation\", {\n enumerable: true,\n get: function() {\n return S.propagation;\n }\n });\n const C = __nccwpck_require__(845);\n Object.defineProperty(e, \"trace\", {\n enumerable: true,\n get: function() {\n return C.trace;\n }\n });\n e[\"default\"] = {\n context: O.context,\n diag: P.diag,\n metrics: N.metrics,\n propagation: S.propagation,\n trace: C.trace\n };\n })();\n module.exports = r;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOztBQUFDO0lBQUs7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSSxDQUFDQSxHQUFFQyxHQUFFQztZQUFLQyxPQUFPQyxjQUFjLENBQUNILEdBQUUsY0FBYTtnQkFBQ0ksT0FBTTtZQUFJO1lBQUdKLEVBQUVLLFVBQVUsR0FBQyxLQUFLO1lBQUUsTUFBTUMsSUFBRUwsRUFBRTtZQUFLLE1BQU1NLElBQUVOLEVBQUU7WUFBSyxNQUFNTyxJQUFFUCxFQUFFO1lBQUssTUFBTVEsSUFBRTtZQUFVLE1BQU1DLElBQUUsSUFBSUosRUFBRUssa0JBQWtCO1lBQUMsTUFBTU47Z0JBQVdPLGFBQWEsQ0FBQztnQkFBQyxPQUFPQyxjQUFhO29CQUFDLElBQUcsQ0FBQyxJQUFJLENBQUNDLFNBQVMsRUFBQzt3QkFBQyxJQUFJLENBQUNBLFNBQVMsR0FBQyxJQUFJVDtvQkFBVTtvQkFBQyxPQUFPLElBQUksQ0FBQ1MsU0FBUztnQkFBQTtnQkFBQ0Msd0JBQXdCaEIsQ0FBQyxFQUFDO29CQUFDLE9BQU0sQ0FBQyxHQUFFUSxFQUFFUyxjQUFjLEVBQUVQLEdBQUVWLEdBQUVTLEVBQUVTLE9BQU8sQ0FBQ0MsUUFBUTtnQkFBRztnQkFBQ0MsU0FBUTtvQkFBQyxPQUFPLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUdELE1BQU07Z0JBQUU7Z0JBQUNFLEtBQUt0QixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDLEdBQUdLLENBQUMsRUFBQztvQkFBQyxPQUFPLElBQUksQ0FBQ2Msa0JBQWtCLEdBQUdDLElBQUksQ0FBQ3RCLEdBQUVDLEdBQUVDLE1BQUtLO2dCQUFFO2dCQUFDZ0IsS0FBS3ZCLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO29CQUFDLE9BQU8sSUFBSSxDQUFDb0Isa0JBQWtCLEdBQUdFLElBQUksQ0FBQ3ZCLEdBQUVDO2dCQUFFO2dC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QUs3RixLQUFJO2dCQUFXLE9BQU8rSyxFQUFFbkgsT0FBTztZQUFBO1FBQUM7UUFBRyxNQUFNb0gsSUFBRWIsb0JBQW9CO1FBQUsxUCxPQUFPQyxjQUFjLENBQUNKLEdBQUUsZUFBYztZQUFDdUwsWUFBVztZQUFLN0YsS0FBSTtnQkFBVyxPQUFPZ0wsRUFBRTdFLFdBQVc7WUFBQTtRQUFDO1FBQUcsTUFBTThFLElBQUVkLG9CQUFvQjtRQUFLMVAsT0FBT0MsY0FBYyxDQUFDSixHQUFFLFNBQVE7WUFBQ3VMLFlBQVc7WUFBSzdGLEtBQUk7Z0JBQVcsT0FBT2lMLEVBQUU1RSxLQUFLO1lBQUE7UUFBQztRQUFHL0wsQ0FBQyxDQUFDLFVBQVUsR0FBQztZQUFDNEcsU0FBUTJKLEVBQUUzSixPQUFPO1lBQUNPLE1BQUtxSixFQUFFckosSUFBSTtZQUFDbUMsU0FBUW1ILEVBQUVuSCxPQUFPO1lBQUN1QyxhQUFZNkUsRUFBRTdFLFdBQVc7WUFBQ0UsT0FBTTRFLEVBQUU1RSxLQUFLO1FBQUE7SUFBQztJQUFLNkUsT0FBT2QsT0FBTyxHQUFDNVA7QUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BvcGVudGVsZW1ldHJ5L2FwaS9pbmRleC5qcz8xNDgzIl0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlPXs0OTE6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Db250ZXh0QVBJPXZvaWQgMDtjb25zdCBuPXIoMjIzKTtjb25zdCBhPXIoMTcyKTtjb25zdCBvPXIoOTMwKTtjb25zdCBpPVwiY29udGV4dFwiO2NvbnN0IGM9bmV3IG4uTm9vcENvbnRleHRNYW5hZ2VyO2NsYXNzIENvbnRleHRBUEl7Y29uc3RydWN0b3IoKXt9c3RhdGljIGdldEluc3RhbmNlKCl7aWYoIXRoaXMuX2luc3RhbmNlKXt0aGlzLl9pbnN0YW5jZT1uZXcgQ29udGV4dEFQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsQ29udGV4dE1hbmFnZXIoZSl7cmV0dXJuKDAsYS5yZWdpc3Rlckdsb2JhbCkoaSxlLG8uRGlhZ0FQSS5pbnN0YW5jZSgpKX1hY3RpdmUoKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5hY3RpdmUoKX13aXRoKGUsdCxyLC4uLm4pe3JldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLndpdGgoZSx0LHIsLi4ubil9YmluZChlLHQpe3JldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmJpbmQoZSx0KX1fZ2V0Q29udGV4dE1hbmFnZXIoKXtyZXR1cm4oMCxhLmdldEdsb2JhbCkoaSl8fGN9ZGlzYWJsZSgpe3RoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuZGlzYWJsZSgpOygwLGEudW5yZWdpc3Rlckdsb2JhbCkoaSxvLkRpYWdBUEkuaW5zdGFuY2UoKSl9fXQuQ29udGV4dEFQST1Db250ZXh0QVBJfSw5MzA6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5EaWFnQVBJPXZvaWQgMDtjb25zdCBuPXIoNTYpO2NvbnN0IGE9cig5MTIpO2NvbnN0IG89cig5NTcpO2NvbnN0IGk9cigxNzIpO2NvbnN0IGM9XCJkaWFnXCI7Y2xhc3MgRGlhZ0FQSXtjb25zdHJ1Y3Rvcigpe2Z1bmN0aW9uIF9sb2dQcm94eShlKXtyZXR1cm4gZnVuY3Rpb24oLi4udCl7Y29uc3Qgcj0oMCxpLmdldEdsb2JhbCkoXCJkaWFnXCIpO2lmKCFyKXJldHVybjtyZXR1cm4gcltlXSguLi50KX19Y29uc3QgZT10aGlzO2NvbnN0IHNldExvZ2dlcj0odCxyPXtsb2dMZXZlbDpvLkRpYWdMb2dMZXZlbC5JTkZPfSk9Pnt2YXIgbixjLHM7aWYodD09PWUpe2NvbnN0IHQ9bmV3IEVycm9yKFwiQ2Fubm90IHVzZSBkaWFnIGFzIHRoZSBsb2dnZXIgZm9yIGl0c2VsZi4gUGxlYXNlIHVzZSBhIERpYWdMb2dnZXIgaW1wbGVtZW50YXRpb24gbGlrZSBDb25zb2xlRGlhZ0xvZ2dlciBvciBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvblwiKTtlLmVycm9yKChuPXQuc3RhY2spIT09bnVsbCYmbiE9PXZvaWQgMD9uOnQubWVzc2FnZSk7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiByPT09XCJudW1iZXJcIil7cj17bG9nTGV2ZWw6cn19Y29uc3QgdT0oMCxpLmdldEdsb2JhbCkoXCJkaWFnXCIpO2NvbnN0IGw9KDAsYS5jcmVhdGVMb2dMZXZlbERpYWdMb2dnZXIpKChjPXIubG9nTGV2ZWwpIT09bnVsbCYmYyE9PXZvaWQgMD9jOm8uRGlhZ0xvZ0xldmVsLklORk8sdCk7aWYodSYmIXIuc3VwcHJlc3NPdmVycmlkZU1lc3NhZ2Upe2NvbnN0IGU9KHM9KG5ldyBFcnJvcikuc3RhY2spIT09bnVsbCYmcyE9PXZvaWQgMD9zOlwiPGZhaWxlZCB0byBnZW5lcmF0ZSBzdGFja3RyYWNlPlwiO3Uud2FybihgQ3VycmVudCBsb2dnZXIgd2lsbCBiZSBvdmVyd3JpdHRlbiBmcm9tICR7ZX1gKTtsLndhcm4oYEN1cnJlbnQgbG9nZ2VyIHdpbGwgb3ZlcndyaXRlIG9uZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZnJvbSAke2V9YCl9cmV0dXJuKDAsaS5yZWdpc3Rlckdsb2JhbCkoXCJkaWFnXCIsbCxlLHRydWUpfTtlLnNldExvZ2dlcj1zZXRMb2dnZXI7ZS5kaXNhYmxlPSgpPT57KDAsaS51bnJlZ2lzdGVyR2xvYmFsKShjLGUpfTtlLmNyZWF0ZUNvbXBvbmVudExvZ2dlcj1lPT5uZXcgbi5EaWFnQ29tcG9uZW50TG9nZ2VyKGUpO2UudmVyYm9zZT1fbG9nUHJveHkoXCJ2ZXJib3NlXCIpO2UuZGVidWc9X2xvZ1Byb3h5KFwiZGVidWdcIik7ZS5pbmZvPV9sb2dQcm94eShcImluZm9cIik7ZS53YXJuPV9sb2dQcm94eShcIndhcm5cIik7ZS5lcnJvcj1fbG9nUHJveHkoXCJlcnJvclwiKX1zdGF0aWMgaW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2Upe3RoaXMuX2luc3RhbmNlPW5ldyBEaWFnQVBJfXJldHVybiB0aGlzLl9pbnN0YW5jZX19dC5EaWFnQVBJPURpYWdBUEl9LDY1MzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk1ldHJpY3NBUEk9dm9pZCAwO2NvbnN0IG49cig2NjApO2NvbnN0IGE9cigxNzIpO2NvbnN0IG89cig5MzApO2NvbnN0IGk9XCJtZXRyaWNzXCI7Y2xhc3MgTWV0cmljc0FQSXtjb25zdHJ1Y3Rvcigpe31zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2Upe3RoaXMuX2luc3RhbmNlPW5ldyBNZXRyaWNzQVBJfXJldHVybiB0aGlzLl9pbnN0YW5jZX1zZXRHbG9iYWxNZXRlclByb3ZpZGVyKGUpe3JldHVybigwLGEucmVnaXN0ZXJHbG9iYWwpKGksZSxvLkRpYWdBUEkuaW5zdGFuY2UoKSl9Z2V0TWV0ZXJQcm92aWRlcigpe3JldHVybigwLGEuZ2V0R2xvYmFsKShpKXx8bi5OT09QX01FVEVSX1BST1ZJREVSfWdldE1ldGVyKGUsdCxyKXtyZXR1cm4gdGhpcy5nZXRNZXRlclByb3ZpZGVyKCkuZ2V0TWV0ZXIoZSx0LHIpfWRpc2FibGUoKXsoMCxhLnVucmVnaXN0ZXJHbG9iYWwpKGksby5EaWFnQVBJLmluc3RhbmNlKCkpfX10Lk1ldHJpY3NBUEk9TWV0cmljc0FQSX0sMTgxOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuUHJvcGFnYXRpb25BUEk9dm9pZCAwO2NvbnN0IG49cigxNzIpO2NvbnN0IGE9cig4NzQpO2NvbnN0IG89cigxOTQpO2NvbnN0IGk9cigyNzcpO2NvbnN0IGM9cigzNjkpO2NvbnN0IHM9cig5MzApO2NvbnN0IHU9XCJwcm9wYWdhdGlvblwiO2NvbnN0IGw9bmV3IGEuTm9vcFRleHRNYXBQcm9wYWdhdG9yO2NsYXNzIFByb3BhZ2F0aW9uQVBJe2NvbnN0cnVjdG9yKCl7dGhpcy5jcmVhdGVCYWdnYWdlPWMuY3JlYXRlQmFnZ2FnZTt0aGlzLmdldEJhZ2dhZ2U9aS5nZXRCYWdnYWdlO3RoaXMuZ2V0QWN0aXZlQmFnZ2FnZT1pLmdldEFjdGl2ZUJhZ2dhZ2U7dGhpcy5zZXRCYWdnYWdlPWkuc2V0QmFnZ2FnZTt0aGlzLmRlbGV0ZUJhZ2dhZ2U9aS5kZWxldGVCYWdnYWdlfXN0YXRpYyBnZXRJbnN0YW5jZSgpe2lmKCF0aGlzLl9pbnN0YW5jZSl7dGhpcy5faW5zdGFuY2U9bmV3IFByb3BhZ2F0aW9uQVBJfXJldHVybiB0aGlzLl9pbnN0YW5jZX1zZXRHbG9iYWxQcm9wYWdhdG9yKGUpe3JldHVybigwLG4ucmVnaXN0ZXJHbG9iYWwpKHUsZSxzLkRpYWdBUEkuaW5zdGFuY2UoKSl9aW5qZWN0KGUsdCxyPW8uZGVmYXVsdFRleHRNYXBTZXR0ZXIpe3JldHVybiB0aGlzLl9nZXRHbG9iYWxQcm9wYWdhdG9yKCkuaW5qZWN0KGUsdCxyKX1leHRyYWN0KGUsdCxyPW8uZGVmYXVsdFRleHRNYXBHZXR0ZXIpe3JldHVybiB0aGlzLl9nZXRHbG9iYWxQcm9wYWdhdG9yKCkuZXh0cmFjdChlLHQscil9ZmllbGRzKCl7cmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5maWVsZHMoKX1kaXNhYmxlKCl7KDAsbi51bnJlZ2lzdGVyR2xvYmFsKSh1LHMuRGlhZ0FQSS5pbnN0YW5jZSgpKX1fZ2V0R2xvYmFsUHJvcGFnYXRvcigpe3JldHVybigwLG4uZ2V0R2xvYmFsKSh1KXx8bH19dC5Qcm9wYWdhdGlvbkFQST1Qcm9wYWdhdGlvbkFQSX0sOTk3OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVHJhY2VBUEk9dm9pZCAwO2NvbnN0IG49cigxNzIpO2NvbnN0IGE9cig4NDYpO2NvbnN0IG89cigxMzkpO2NvbnN0IGk9cig2MDcpO2NvbnN0IGM9cig5MzApO2NvbnN0IHM9XCJ0cmFjZVwiO2NsYXNzIFRyYWNlQVBJe2NvbnN0cnVjdG9yKCl7dGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcj1uZXcgYS5Qcm94eVRyYWNlclByb3ZpZGVyO3RoaXMud3JhcFNwYW5Db250ZXh0PW8ud3JhcFNwYW5Db250ZXh0O3RoaXMuaXNTcGFuQ29udGV4dFZhbGlkPW8uaXNTcGFuQ29udGV4dFZhbGlkO3RoaXMuZGVsZXRlU3Bhbj1pLmRlbGV0ZVNwYW47dGhpcy5nZXRTcGFuPWkuZ2V0U3Bhbjt0aGlzLmdldEFjdGl2ZVNwYW49aS5nZXRBY3RpdmVTcGFuO3RoaXMuZ2V0U3BhbkNvbnRleHQ9aS5nZXRTcGFuQ29udGV4dDt0aGlzLnNldFNwYW49aS5zZXRTcGFuO3RoaXMuc2V0U3BhbkNvbnRleHQ9aS5zZXRTcGFuQ29udGV4dH1zdGF0aWMgZ2V0SW5zdGFuY2UoKXtpZighdGhpcy5faW5zdGFuY2Upe3RoaXMuX2luc3RhbmNlPW5ldyBUcmFjZUFQSX1yZXR1cm4gdGhpcy5faW5zdGFuY2V9c2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIoZSl7Y29uc3QgdD0oMCxuLnJlZ2lzdGVyR2xvYmFsKShzLHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIsYy5EaWFnQVBJLmluc3RhbmNlKCkpO2lmKHQpe3RoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIuc2V0RGVsZWdhdGUoZSl9cmV0dXJuIHR9Z2V0VHJhY2VyUHJvdmlkZXIoKXtyZXR1cm4oMCxuLmdldEdsb2JhbCkocyl8fHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXJ9Z2V0VHJhY2VyKGUsdCl7cmV0dXJuIHRoaXMuZ2V0VHJhY2VyUHJvdmlkZXIoKS5nZXRUcmFjZXIoZSx0KX1kaXNhYmxlKCl7KDAsbi51bnJlZ2lzdGVyR2xvYmFsKShzLGMuRGlhZ0FQSS5pbnN0YW5jZSgpKTt0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyPW5ldyBhLlByb3h5VHJhY2VyUHJvdmlkZXJ9fXQuVHJhY2VBUEk9VHJhY2VBUEl9LDI3NzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmRlbGV0ZUJhZ2dhZ2U9dC5zZXRCYWdnYWdlPXQuZ2V0QWN0aXZlQmFnZ2FnZT10LmdldEJhZ2dhZ2U9dm9pZCAwO2NvbnN0IG49cig0OTEpO2NvbnN0IGE9cig3ODApO2NvbnN0IG89KDAsYS5jcmVhdGVDb250ZXh0S2V5KShcIk9wZW5UZWxlbWV0cnkgQmFnZ2FnZSBLZXlcIik7ZnVuY3Rpb24gZ2V0QmFnZ2FnZShlKXtyZXR1cm4gZS5nZXRWYWx1ZShvKXx8dW5kZWZpbmVkfXQuZ2V0QmFnZ2FnZT1nZXRCYWdnYWdlO2Z1bmN0aW9uIGdldEFjdGl2ZUJhZ2dhZ2UoKXtyZXR1cm4gZ2V0QmFnZ2FnZShuLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKS5hY3RpdmUoKSl9dC5nZXRBY3RpdmVCYWdnYWdlPWdldEFjdGl2ZUJhZ2dhZ2U7ZnVuY3Rpb24gc2V0QmFnZ2FnZShlLHQpe3JldHVybiBlLnNldFZhbHVlKG8sdCl9dC5zZXRCYWdnYWdlPXNldEJhZ2dhZ2U7ZnVuY3Rpb24gZGVsZXRlQmFnZ2FnZShlKXtyZXR1cm4gZS5kZWxldGVWYWx1ZShvKX10LmRlbGV0ZUJhZ2dhZ2U9ZGVsZXRlQmFnZ2FnZX0sOTkzOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkJhZ2dhZ2VJbXBsPXZvaWQgMDtjbGFzcyBCYWdnYWdlSW1wbHtjb25zdHJ1Y3RvcihlKXt0aGlzLl9lbnRyaWVzPWU/bmV3IE1hcChlKTpuZXcgTWFwfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5fZW50cmllcy5nZXQoZSk7aWYoIXQpe3JldHVybiB1bmRlZmluZWR9cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdCl9Z2V0QWxsRW50cmllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2VudHJpZXMuZW50cmllcygpKS5tYXAoKChbZSx0XSk9PltlLHRdKSl9c2V0RW50cnkoZSx0KXtjb25zdCByPW5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTtyLl9lbnRyaWVzLnNldChlLHQpO3JldHVybiByfXJlbW92ZUVudHJ5KGUpe2NvbnN0IHQ9bmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO3QuX2VudHJpZXMuZGVsZXRlKGUpO3JldHVybiB0fXJlbW92ZUVudHJpZXMoLi4uZSl7Y29uc3QgdD1uZXcgQmFnZ2FnZUltcGwodGhpcy5fZW50cmllcyk7Zm9yKGNvbnN0IHIgb2YgZSl7dC5fZW50cmllcy5kZWxldGUocil9cmV0dXJuIHR9Y2xlYXIoKXtyZXR1cm4gbmV3IEJhZ2dhZ2VJbXBsfX10LkJhZ2dhZ2VJbXBsPUJhZ2dhZ2VJbXBsfSw4MzA6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2w9dm9pZCAwO3QuYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2w9U3ltYm9sKFwiQmFnZ2FnZUVudHJ5TWV0YWRhdGFcIil9LDM2OTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz10LmNyZWF0ZUJhZ2dhZ2U9dm9pZCAwO2NvbnN0IG49cig5MzApO2NvbnN0IGE9cig5OTMpO2NvbnN0IG89cig4MzApO2NvbnN0IGk9bi5EaWFnQVBJLmluc3RhbmNlKCk7ZnVuY3Rpb24gY3JlYXRlQmFnZ2FnZShlPXt9KXtyZXR1cm4gbmV3IGEuQmFnZ2FnZUltcGwobmV3IE1hcChPYmplY3QuZW50cmllcyhlKSkpfXQuY3JlYXRlQmFnZ2FnZT1jcmVhdGVCYWdnYWdlO2Z1bmN0aW9uIGJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZyhlKXtpZih0eXBlb2YgZSE9PVwic3RyaW5nXCIpe2kuZXJyb3IoYENhbm5vdCBjcmVhdGUgYmFnZ2FnZSBtZXRhZGF0YSBmcm9tIHVua25vd24gdHlwZTogJHt0eXBlb2YgZX1gKTtlPVwiXCJ9cmV0dXJue19fVFlQRV9fOm8uYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wsdG9TdHJpbmcoKXtyZXR1cm4gZX19fXQuYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nPWJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZ30sNjc6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5jb250ZXh0PXZvaWQgMDtjb25zdCBuPXIoNDkxKTt0LmNvbnRleHQ9bi5Db250ZXh0QVBJLmdldEluc3RhbmNlKCl9LDIyMzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5vb3BDb250ZXh0TWFuYWdlcj12b2lkIDA7Y29uc3Qgbj1yKDc4MCk7Y2xhc3MgTm9vcENvbnRleHRNYW5hZ2Vye2FjdGl2ZSgpe3JldHVybiBuLlJPT1RfQ09OVEVYVH13aXRoKGUsdCxyLC4uLm4pe3JldHVybiB0LmNhbGwociwuLi5uKX1iaW5kKGUsdCl7cmV0dXJuIHR9ZW5hYmxlKCl7cmV0dXJuIHRoaXN9ZGlzYWJsZSgpe3JldHVybiB0aGlzfX10Lk5vb3BDb250ZXh0TWFuYWdlcj1Ob29wQ29udGV4dE1hbmFnZXJ9LDc4MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5ST09UX0NPTlRFWFQ9dC5jcmVhdGVDb250ZXh0S2V5PXZvaWQgMDtmdW5jdGlvbiBjcmVhdGVDb250ZXh0S2V5KGUpe3JldHVybiBTeW1ib2wuZm9yKGUpfXQuY3JlYXRlQ29udGV4dEtleT1jcmVhdGVDb250ZXh0S2V5O2NsYXNzIEJhc2VDb250ZXh0e2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9dGhpczt0Ll9jdXJyZW50Q29udGV4dD1lP25ldyBNYXAoZSk6bmV3IE1hcDt0LmdldFZhbHVlPWU9PnQuX2N1cnJlbnRDb250ZXh0LmdldChlKTt0LnNldFZhbHVlPShlLHIpPT57Y29uc3Qgbj1uZXcgQmFzZUNvbnRleHQodC5fY3VycmVudENvbnRleHQpO24uX2N1cnJlbnRDb250ZXh0LnNldChlLHIpO3JldHVybiBufTt0LmRlbGV0ZVZhbHVlPWU9Pntjb25zdCByPW5ldyBCYXNlQ29udGV4dCh0Ll9jdXJyZW50Q29udGV4dCk7ci5fY3VycmVudENvbnRleHQuZGVsZXRlKGUpO3JldHVybiByfX19dC5ST09UX0NPTlRFWFQ9bmV3IEJhc2VDb250ZXh0fSw1MDY6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5kaWFnPXZvaWQgMDtjb25zdCBuPXIoOTMwKTt0LmRpYWc9bi5EaWFnQVBJLmluc3RhbmNlKCl9LDU2OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhZ0NvbXBvbmVudExvZ2dlcj12b2lkIDA7Y29uc3Qgbj1yKDE3Mik7Y2xhc3MgRGlhZ0NvbXBvbmVudExvZ2dlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9uYW1lc3BhY2U9ZS5uYW1lc3BhY2V8fFwiRGlhZ0NvbXBvbmVudExvZ2dlclwifWRlYnVnKC4uLmUpe3JldHVybiBsb2dQcm94eShcImRlYnVnXCIsdGhpcy5fbmFtZXNwYWNlLGUpfWVycm9yKC4uLmUpe3JldHVybiBsb2dQcm94eShcImVycm9yXCIsdGhpcy5fbmFtZXNwYWNlLGUpfWluZm8oLi4uZSl7cmV0dXJuIGxvZ1Byb3h5KFwiaW5mb1wiLHRoaXMuX25hbWVzcGFjZSxlKX13YXJuKC4uLmUpe3JldHVybiBsb2dQcm94eShcIndhcm5cIix0aGlzLl9uYW1lc3BhY2UsZSl9dmVyYm9zZSguLi5lKXtyZXR1cm4gbG9nUHJveHkoXCJ2ZXJib3NlXCIsdGhpcy5fbmFtZXNwYWNlLGUpfX10LkRpYWdDb21wb25lbnRMb2dnZXI9RGlhZ0NvbXBvbmVudExvZ2dlcjtmdW5jdGlvbiBsb2dQcm94eShlLHQscil7Y29uc3QgYT0oMCxuLmdldEdsb2JhbCkoXCJkaWFnXCIpO2lmKCFhKXtyZXR1cm59ci51bnNoaWZ0KHQpO3JldHVybiBhW2VdKC4uLnIpfX0sOTcyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWdDb25zb2xlTG9nZ2VyPXZvaWQgMDtjb25zdCByPVt7bjpcImVycm9yXCIsYzpcImVycm9yXCJ9LHtuOlwid2FyblwiLGM6XCJ3YXJuXCJ9LHtuOlwiaW5mb1wiLGM6XCJpbmZvXCJ9LHtuOlwiZGVidWdcIixjOlwiZGVidWdcIn0se246XCJ2ZXJib3NlXCIsYzpcInRyYWNlXCJ9XTtjbGFzcyBEaWFnQ29uc29sZUxvZ2dlcntjb25zdHJ1Y3Rvcigpe2Z1bmN0aW9uIF9jb25zb2xlRnVuYyhlKXtyZXR1cm4gZnVuY3Rpb24oLi4udCl7aWYoY29uc29sZSl7bGV0IHI9Y29uc29sZVtlXTtpZih0eXBlb2YgciE9PVwiZnVuY3Rpb25cIil7cj1jb25zb2xlLmxvZ31pZih0eXBlb2Ygcj09PVwiZnVuY3Rpb25cIil7cmV0dXJuIHIuYXBwbHkoY29uc29sZSx0KX19fX1mb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl7dGhpc1tyW2VdLm5dPV9jb25zb2xlRnVuYyhyW2VdLmMpfX19dC5EaWFnQ29uc29sZUxvZ2dlcj1EaWFnQ29uc29sZUxvZ2dlcn0sOTEyOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuY3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyPXZvaWQgMDtjb25zdCBuPXIoOTU3KTtmdW5jdGlvbiBjcmVhdGVMb2dMZXZlbERpYWdMb2dnZXIoZSx0KXtpZihlPG4uRGlhZ0xvZ0xldmVsLk5PTkUpe2U9bi5EaWFnTG9nTGV2ZWwuTk9ORX1lbHNlIGlmKGU+bi5EaWFnTG9nTGV2ZWwuQUxMKXtlPW4uRGlhZ0xvZ0xldmVsLkFMTH10PXR8fHt9O2Z1bmN0aW9uIF9maWx0ZXJGdW5jKHIsbil7Y29uc3QgYT10W3JdO2lmKHR5cGVvZiBhPT09XCJmdW5jdGlvblwiJiZlPj1uKXtyZXR1cm4gYS5iaW5kKHQpfXJldHVybiBmdW5jdGlvbigpe319cmV0dXJue2Vycm9yOl9maWx0ZXJGdW5jKFwiZXJyb3JcIixuLkRpYWdMb2dMZXZlbC5FUlJPUiksd2FybjpfZmlsdGVyRnVuYyhcIndhcm5cIixuLkRpYWdMb2dMZXZlbC5XQVJOKSxpbmZvOl9maWx0ZXJGdW5jKFwiaW5mb1wiLG4uRGlhZ0xvZ0xldmVsLklORk8pLGRlYnVnOl9maWx0ZXJGdW5jKFwiZGVidWdcIixuLkRpYWdMb2dMZXZlbC5ERUJVRyksdmVyYm9zZTpfZmlsdGVyRnVuYyhcInZlcmJvc2VcIixuLkRpYWdMb2dMZXZlbC5WRVJCT1NFKX19dC5jcmVhdGVMb2dMZXZlbERpYWdMb2dnZXI9Y3JlYXRlTG9nTGV2ZWxEaWFnTG9nZ2VyfSw5NTc6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhZ0xvZ0xldmVsPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiTk9ORVwiXT0wXT1cIk5PTkVcIjtlW2VbXCJFUlJPUlwiXT0zMF09XCJFUlJPUlwiO2VbZVtcIldBUk5cIl09NTBdPVwiV0FSTlwiO2VbZVtcIklORk9cIl09NjBdPVwiSU5GT1wiO2VbZVtcIkRFQlVHXCJdPTcwXT1cIkRFQlVHXCI7ZVtlW1wiVkVSQk9TRVwiXT04MF09XCJWRVJCT1NFXCI7ZVtlW1wiQUxMXCJdPTk5OTldPVwiQUxMXCJ9KShyPXQuRGlhZ0xvZ0xldmVsfHwodC5EaWFnTG9nTGV2ZWw9e30pKX0sMTcyOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QudW5yZWdpc3Rlckdsb2JhbD10LmdldEdsb2JhbD10LnJlZ2lzdGVyR2xvYmFsPXZvaWQgMDtjb25zdCBuPXIoMjAwKTtjb25zdCBhPXIoNTIxKTtjb25zdCBvPXIoMTMwKTtjb25zdCBpPWEuVkVSU0lPTi5zcGxpdChcIi5cIilbMF07Y29uc3QgYz1TeW1ib2wuZm9yKGBvcGVudGVsZW1ldHJ5LmpzLmFwaS4ke2l9YCk7Y29uc3Qgcz1uLl9nbG9iYWxUaGlzO2Z1bmN0aW9uIHJlZ2lzdGVyR2xvYmFsKGUsdCxyLG49ZmFsc2Upe3ZhciBvO2NvbnN0IGk9c1tjXT0obz1zW2NdKSE9PW51bGwmJm8hPT12b2lkIDA/bzp7dmVyc2lvbjphLlZFUlNJT059O2lmKCFuJiZpW2VdKXtjb25zdCB0PW5ldyBFcnJvcihgQG9wZW50ZWxlbWV0cnkvYXBpOiBBdHRlbXB0ZWQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBvZiBBUEk6ICR7ZX1gKTtyLmVycm9yKHQuc3RhY2t8fHQubWVzc2FnZSk7cmV0dXJuIGZhbHNlfWlmKGkudmVyc2lvbiE9PWEuVkVSU0lPTil7Y29uc3QgdD1uZXcgRXJyb3IoYEBvcGVudGVsZW1ldHJ5L2FwaTogUmVnaXN0cmF0aW9uIG9mIHZlcnNpb24gdiR7aS52ZXJzaW9ufSBmb3IgJHtlfSBkb2VzIG5vdCBtYXRjaCBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgQVBJIHYke2EuVkVSU0lPTn1gKTtyLmVycm9yKHQuc3RhY2t8fHQubWVzc2FnZSk7cmV0dXJuIGZhbHNlfWlbZV09dDtyLmRlYnVnKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdGVyZWQgYSBnbG9iYWwgZm9yICR7ZX0gdiR7YS5WRVJTSU9OfS5gKTtyZXR1cm4gdHJ1ZX10LnJlZ2lzdGVyR2xvYmFsPXJlZ2lzdGVyR2xvYmFsO2Z1bmN0aW9uIGdldEdsb2JhbChlKXt2YXIgdCxyO2NvbnN0IG49KHQ9c1tjXSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnZlcnNpb247aWYoIW58fCEoMCxvLmlzQ29tcGF0aWJsZSkobikpe3JldHVybn1yZXR1cm4ocj1zW2NdKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnJbZV19dC5nZXRHbG9iYWw9Z2V0R2xvYmFsO2Z1bmN0aW9uIHVucmVnaXN0ZXJHbG9iYWwoZSx0KXt0LmRlYnVnKGBAb3BlbnRlbGVtZXRyeS9hcGk6IFVucmVnaXN0ZXJpbmcgYSBnbG9iYWwgZm9yICR7ZX0gdiR7YS5WRVJTSU9OfS5gKTtjb25zdCByPXNbY107aWYocil7ZGVsZXRlIHJbZV19fXQudW5yZWdpc3Rlckdsb2JhbD11bnJlZ2lzdGVyR2xvYmFsfSwxMzA6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5pc0NvbXBhdGlibGU9dC5fbWFrZUNvbXBhdGliaWxpdHlDaGVjaz12b2lkIDA7Y29uc3Qgbj1yKDUyMSk7Y29uc3QgYT0vXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSgtKC4rKSk/JC87ZnVuY3Rpb24gX21ha2VDb21wYXRpYmlsaXR5Q2hlY2soZSl7Y29uc3QgdD1uZXcgU2V0KFtlXSk7Y29uc3Qgcj1uZXcgU2V0O2NvbnN0IG49ZS5tYXRjaChhKTtpZighbil7cmV0dXJuKCk9PmZhbHNlfWNvbnN0IG89e21ham9yOituWzFdLG1pbm9yOituWzJdLHBhdGNoOituWzNdLHByZXJlbGVhc2U6bls0XX07aWYoby5wcmVyZWxlYXNlIT1udWxsKXtyZXR1cm4gZnVuY3Rpb24gaXNFeGFjdG1hdGNoKHQpe3JldHVybiB0PT09ZX19ZnVuY3Rpb24gX3JlamVjdChlKXtyLmFkZChlKTtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gX2FjY2VwdChlKXt0LmFkZChlKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZnVuY3Rpb24gaXNDb21wYXRpYmxlKGUpe2lmKHQuaGFzKGUpKXtyZXR1cm4gdHJ1ZX1pZihyLmhhcyhlKSl7cmV0dXJuIGZhbHNlfWNvbnN0IG49ZS5tYXRjaChhKTtpZighbil7cmV0dXJuIF9yZWplY3QoZSl9Y29uc3QgaT17bWFqb3I6K25bMV0sbWlub3I6K25bMl0scGF0Y2g6K25bM10scHJlcmVsZWFzZTpuWzRdfTtpZihpLnByZXJlbGVhc2UhPW51bGwpe3JldHVybiBfcmVqZWN0KGUpfWlmKG8ubWFqb3IhPT1pLm1ham9yKXtyZXR1cm4gX3JlamVjdChlKX1pZihvLm1ham9yPT09MCl7aWYoby5taW5vcj09PWkubWlub3ImJm8ucGF0Y2g8PWkucGF0Y2gpe3JldHVybiBfYWNjZXB0KGUpfXJldHVybiBfcmVqZWN0KGUpfWlmKG8ubWlub3I8PWkubWlub3Ipe3JldHVybiBfYWNjZXB0KGUpfXJldHVybiBfcmVqZWN0KGUpfX10Ll9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrPV9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrO3QuaXNDb21wYXRpYmxlPV9tYWtlQ29tcGF0aWJpbGl0eUNoZWNrKG4uVkVSU0lPTil9LDg4NjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lm1ldHJpY3M9dm9pZCAwO2NvbnN0IG49cig2NTMpO3QubWV0cmljcz1uLk1ldHJpY3NBUEkuZ2V0SW5zdGFuY2UoKX0sOTAxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlZhbHVlVHlwZT12b2lkIDA7dmFyIHI7KGZ1bmN0aW9uKGUpe2VbZVtcIklOVFwiXT0wXT1cIklOVFwiO2VbZVtcIkRPVUJMRVwiXT0xXT1cIkRPVUJMRVwifSkocj10LlZhbHVlVHlwZXx8KHQuVmFsdWVUeXBlPXt9KSl9LDEwMjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5jcmVhdGVOb29wTWV0ZXI9dC5OT09QX09CU0VSVkFCTEVfVVBfRE9XTl9DT1VOVEVSX01FVFJJQz10Lk5PT1BfT0JTRVJWQUJMRV9HQVVHRV9NRVRSSUM9dC5OT09QX09CU0VSVkFCTEVfQ09VTlRFUl9NRVRSSUM9dC5OT09QX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9dC5OT09QX0hJU1RPR1JBTV9NRVRSSUM9dC5OT09QX0NPVU5URVJfTUVUUklDPXQuTk9PUF9NRVRFUj10Lk5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYz10Lk5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWM9dC5Ob29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM9dC5Ob29wT2JzZXJ2YWJsZU1ldHJpYz10Lk5vb3BIaXN0b2dyYW1NZXRyaWM9dC5Ob29wVXBEb3duQ291bnRlck1ldHJpYz10Lk5vb3BDb3VudGVyTWV0cmljPXQuTm9vcE1ldHJpYz10Lk5vb3BNZXRlcj12b2lkIDA7Y2xhc3MgTm9vcE1ldGVye2NvbnN0cnVjdG9yKCl7fWNyZWF0ZUhpc3RvZ3JhbShlLHIpe3JldHVybiB0Lk5PT1BfSElTVE9HUkFNX01FVFJJQ31jcmVhdGVDb3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9DT1VOVEVSX01FVFJJQ31jcmVhdGVVcERvd25Db3VudGVyKGUscil7cmV0dXJuIHQuTk9PUF9VUF9ET1dOX0NPVU5URVJfTUVUUklDfWNyZWF0ZU9ic2VydmFibGVHYXVnZShlLHIpe3JldHVybiB0Lk5PT1BfT0JTRVJWQUJMRV9HQVVHRV9NRVRSSUN9Y3JlYXRlT2JzZXJ2YWJsZUNvdW50ZXIoZSxyKXtyZXR1cm4gdC5OT09QX09CU0VSVkFCTEVfQ09VTlRFUl9NRVRSSUN9Y3JlYXRlT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXIoZSxyKXtyZXR1cm4gdC5OT09QX09CU0VSVkFCTEVfVVBfRE9XTl9DT1VOVEVSX01FVFJJQ31hZGRCYXRjaE9ic2VydmFibGVDYWxsYmFjayhlLHQpe31yZW1vdmVCYXRjaE9ic2VydmFibGVDYWxsYmFjayhlKXt9fXQuTm9vcE1ldGVyPU5vb3BNZXRlcjtjbGFzcyBOb29wTWV0cmlje310Lk5vb3BNZXRyaWM9Tm9vcE1ldHJpYztjbGFzcyBOb29wQ291bnRlck1ldHJpYyBleHRlbmRzIE5vb3BNZXRyaWN7YWRkKGUsdCl7fX10Lk5vb3BDb3VudGVyTWV0cmljPU5vb3BDb3VudGVyTWV0cmljO2NsYXNzIE5vb3BVcERvd25Db3VudGVyTWV0cmljIGV4dGVuZHMgTm9vcE1ldHJpY3thZGQoZSx0KXt9fXQuTm9vcFVwRG93bkNvdW50ZXJNZXRyaWM9Tm9vcFVwRG93bkNvdW50ZXJNZXRyaWM7Y2xhc3MgTm9vcEhpc3RvZ3JhbU1ldHJpYyBleHRlbmRzIE5vb3BNZXRyaWN7cmVjb3JkKGUsdCl7fX10Lk5vb3BIaXN0b2dyYW1NZXRyaWM9Tm9vcEhpc3RvZ3JhbU1ldHJpYztjbGFzcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3thZGRDYWxsYmFjayhlKXt9cmVtb3ZlQ2FsbGJhY2soZSl7fX10Lk5vb3BPYnNlcnZhYmxlTWV0cmljPU5vb3BPYnNlcnZhYmxlTWV0cmljO2NsYXNzIE5vb3BPYnNlcnZhYmxlQ291bnRlck1ldHJpYyBleHRlbmRzIE5vb3BPYnNlcnZhYmxlTWV0cmlje310Lk5vb3BPYnNlcnZhYmxlQ291bnRlck1ldHJpYz1Ob29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM7Y2xhc3MgTm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYyBleHRlbmRzIE5vb3BPYnNlcnZhYmxlTWV0cmlje310Lk5vb3BPYnNlcnZhYmxlR2F1Z2VNZXRyaWM9Tm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYztjbGFzcyBOb29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWMgZXh0ZW5kcyBOb29wT2JzZXJ2YWJsZU1ldHJpY3t9dC5Ob29wT2JzZXJ2YWJsZVVwRG93bkNvdW50ZXJNZXRyaWM9Tm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljO3QuTk9PUF9NRVRFUj1uZXcgTm9vcE1ldGVyO3QuTk9PUF9DT1VOVEVSX01FVFJJQz1uZXcgTm9vcENvdW50ZXJNZXRyaWM7dC5OT09QX0hJU1RPR1JBTV9NRVRSSUM9bmV3IE5vb3BIaXN0b2dyYW1NZXRyaWM7dC5OT09QX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9bmV3IE5vb3BVcERvd25Db3VudGVyTWV0cmljO3QuTk9PUF9PQlNFUlZBQkxFX0NPVU5URVJfTUVUUklDPW5ldyBOb29wT2JzZXJ2YWJsZUNvdW50ZXJNZXRyaWM7dC5OT09QX09CU0VSVkFCTEVfR0FVR0VfTUVUUklDPW5ldyBOb29wT2JzZXJ2YWJsZUdhdWdlTWV0cmljO3QuTk9PUF9PQlNFUlZBQkxFX1VQX0RPV05fQ09VTlRFUl9NRVRSSUM9bmV3IE5vb3BPYnNlcnZhYmxlVXBEb3duQ291bnRlck1ldHJpYztmdW5jdGlvbiBjcmVhdGVOb29wTWV0ZXIoKXtyZXR1cm4gdC5OT09QX01FVEVSfXQuY3JlYXRlTm9vcE1ldGVyPWNyZWF0ZU5vb3BNZXRlcn0sNjYwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTk9PUF9NRVRFUl9QUk9WSURFUj10Lk5vb3BNZXRlclByb3ZpZGVyPXZvaWQgMDtjb25zdCBuPXIoMTAyKTtjbGFzcyBOb29wTWV0ZXJQcm92aWRlcntnZXRNZXRlcihlLHQscil7cmV0dXJuIG4uTk9PUF9NRVRFUn19dC5Ob29wTWV0ZXJQcm92aWRlcj1Ob29wTWV0ZXJQcm92aWRlcjt0Lk5PT1BfTUVURVJfUFJPVklERVI9bmV3IE5vb3BNZXRlclByb3ZpZGVyfSwyMDA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fSl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBhPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKW4odCxlLHIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO2Eocig0NiksdCl9LDY1MTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5fZ2xvYmFsVGhpcz12b2lkIDA7dC5fZ2xvYmFsVGhpcz10eXBlb2YgZ2xvYmFsVGhpcz09PVwib2JqZWN0XCI/Z2xvYmFsVGhpczpnbG9iYWx9LDQ2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX0pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgYT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSluKHQsZSxyKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTthKHIoNjUxKSx0KX0sOTM5OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QucHJvcGFnYXRpb249dm9pZCAwO2NvbnN0IG49cigxODEpO3QucHJvcGFnYXRpb249bi5Qcm9wYWdhdGlvbkFQSS5nZXRJbnN0YW5jZSgpfSw4NzQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTm9vcFRleHRNYXBQcm9wYWdhdG9yPXZvaWQgMDtjbGFzcyBOb29wVGV4dE1hcFByb3BhZ2F0b3J7aW5qZWN0KGUsdCl7fWV4dHJhY3QoZSx0KXtyZXR1cm4gZX1maWVsZHMoKXtyZXR1cm5bXX19dC5Ob29wVGV4dE1hcFByb3BhZ2F0b3I9Tm9vcFRleHRNYXBQcm9wYWdhdG9yfSwxOTQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuZGVmYXVsdFRleHRNYXBTZXR0ZXI9dC5kZWZhdWx0VGV4dE1hcEdldHRlcj12b2lkIDA7dC5kZWZhdWx0VGV4dE1hcEdldHRlcj17Z2V0KGUsdCl7aWYoZT09bnVsbCl7cmV0dXJuIHVuZGVmaW5lZH1yZXR1cm4gZVt0XX0sa2V5cyhlKXtpZihlPT1udWxsKXtyZXR1cm5bXX1yZXR1cm4gT2JqZWN0LmtleXMoZSl9fTt0LmRlZmF1bHRUZXh0TWFwU2V0dGVyPXtzZXQoZSx0LHIpe2lmKGU9PW51bGwpe3JldHVybn1lW3RdPXJ9fX0sODQ1OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QudHJhY2U9dm9pZCAwO2NvbnN0IG49cig5OTcpO3QudHJhY2U9bi5UcmFjZUFQSS5nZXRJbnN0YW5jZSgpfSw0MDM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob25SZWNvcmRpbmdTcGFuPXZvaWQgMDtjb25zdCBuPXIoNDc2KTtjbGFzcyBOb25SZWNvcmRpbmdTcGFue2NvbnN0cnVjdG9yKGU9bi5JTlZBTElEX1NQQU5fQ09OVEVYVCl7dGhpcy5fc3BhbkNvbnRleHQ9ZX1zcGFuQ29udGV4dCgpe3JldHVybiB0aGlzLl9zcGFuQ29udGV4dH1zZXRBdHRyaWJ1dGUoZSx0KXtyZXR1cm4gdGhpc31zZXRBdHRyaWJ1dGVzKGUpe3JldHVybiB0aGlzfWFkZEV2ZW50KGUsdCl7cmV0dXJuIHRoaXN9c2V0U3RhdHVzKGUpe3JldHVybiB0aGlzfXVwZGF0ZU5hbWUoZSl7cmV0dXJuIHRoaXN9ZW5kKGUpe31pc1JlY29yZGluZygpe3JldHVybiBmYWxzZX1yZWNvcmRFeGNlcHRpb24oZSx0KXt9fXQuTm9uUmVjb3JkaW5nU3Bhbj1Ob25SZWNvcmRpbmdTcGFufSw2MTQ6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5Ob29wVHJhY2VyPXZvaWQgMDtjb25zdCBuPXIoNDkxKTtjb25zdCBhPXIoNjA3KTtjb25zdCBvPXIoNDAzKTtjb25zdCBpPXIoMTM5KTtjb25zdCBjPW4uQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpO2NsYXNzIE5vb3BUcmFjZXJ7c3RhcnRTcGFuKGUsdCxyPWMuYWN0aXZlKCkpe2NvbnN0IG49Qm9vbGVhbih0PT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5yb290KTtpZihuKXtyZXR1cm4gbmV3IG8uTm9uUmVjb3JkaW5nU3Bhbn1jb25zdCBzPXImJigwLGEuZ2V0U3BhbkNvbnRleHQpKHIpO2lmKGlzU3BhbkNvbnRleHQocykmJigwLGkuaXNTcGFuQ29udGV4dFZhbGlkKShzKSl7cmV0dXJuIG5ldyBvLk5vblJlY29yZGluZ1NwYW4ocyl9ZWxzZXtyZXR1cm4gbmV3IG8uTm9uUmVjb3JkaW5nU3Bhbn19c3RhcnRBY3RpdmVTcGFuKGUsdCxyLG4pe2xldCBvO2xldCBpO2xldCBzO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7cmV0dXJufWVsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD09PTIpe3M9dH1lbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg9PT0zKXtvPXQ7cz1yfWVsc2V7bz10O2k9cjtzPW59Y29uc3QgdT1pIT09bnVsbCYmaSE9PXZvaWQgMD9pOmMuYWN0aXZlKCk7Y29uc3QgbD10aGlzLnN0YXJ0U3BhbihlLG8sdSk7Y29uc3QgZz0oMCxhLnNldFNwYW4pKHUsbCk7cmV0dXJuIGMud2l0aChnLHMsdW5kZWZpbmVkLGwpfX10Lk5vb3BUcmFjZXI9Tm9vcFRyYWNlcjtmdW5jdGlvbiBpc1NwYW5Db250ZXh0KGUpe3JldHVybiB0eXBlb2YgZT09PVwib2JqZWN0XCImJnR5cGVvZiBlW1wic3BhbklkXCJdPT09XCJzdHJpbmdcIiYmdHlwZW9mIGVbXCJ0cmFjZUlkXCJdPT09XCJzdHJpbmdcIiYmdHlwZW9mIGVbXCJ0cmFjZUZsYWdzXCJdPT09XCJudW1iZXJcIn19LDEyNDooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk5vb3BUcmFjZXJQcm92aWRlcj12b2lkIDA7Y29uc3Qgbj1yKDYxNCk7Y2xhc3MgTm9vcFRyYWNlclByb3ZpZGVye2dldFRyYWNlcihlLHQscil7cmV0dXJuIG5ldyBuLk5vb3BUcmFjZXJ9fXQuTm9vcFRyYWNlclByb3ZpZGVyPU5vb3BUcmFjZXJQcm92aWRlcn0sMTI1OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuUHJveHlUcmFjZXI9dm9pZCAwO2NvbnN0IG49cig2MTQpO2NvbnN0IGE9bmV3IG4uTm9vcFRyYWNlcjtjbGFzcyBQcm94eVRyYWNlcntjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLl9wcm92aWRlcj1lO3RoaXMubmFtZT10O3RoaXMudmVyc2lvbj1yO3RoaXMub3B0aW9ucz1ufXN0YXJ0U3BhbihlLHQscil7cmV0dXJuIHRoaXMuX2dldFRyYWNlcigpLnN0YXJ0U3BhbihlLHQscil9c3RhcnRBY3RpdmVTcGFuKGUsdCxyLG4pe2NvbnN0IGE9dGhpcy5fZ2V0VHJhY2VyKCk7cmV0dXJuIFJlZmxlY3QuYXBwbHkoYS5zdGFydEFjdGl2ZVNwYW4sYSxhcmd1bWVudHMpfV9nZXRUcmFjZXIoKXtpZih0aGlzLl9kZWxlZ2F0ZSl7cmV0dXJuIHRoaXMuX2RlbGVnYXRlfWNvbnN0IGU9dGhpcy5fcHJvdmlkZXIuZ2V0RGVsZWdhdGVUcmFjZXIodGhpcy5uYW1lLHRoaXMudmVyc2lvbix0aGlzLm9wdGlvbnMpO2lmKCFlKXtyZXR1cm4gYX10aGlzLl9kZWxlZ2F0ZT1lO3JldHVybiB0aGlzLl9kZWxlZ2F0ZX19dC5Qcm94eVRyYWNlcj1Qcm94eVRyYWNlcn0sODQ2OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuUHJveHlUcmFjZXJQcm92aWRlcj12b2lkIDA7Y29uc3Qgbj1yKDEyNSk7Y29uc3QgYT1yKDEyNCk7Y29uc3Qgbz1uZXcgYS5Ob29wVHJhY2VyUHJvdmlkZXI7Y2xhc3MgUHJveHlUcmFjZXJQcm92aWRlcntnZXRUcmFjZXIoZSx0LHIpe3ZhciBhO3JldHVybihhPXRoaXMuZ2V0RGVsZWdhdGVUcmFjZXIoZSx0LHIpKSE9PW51bGwmJmEhPT12b2lkIDA/YTpuZXcgbi5Qcm94eVRyYWNlcih0aGlzLGUsdCxyKX1nZXREZWxlZ2F0ZSgpe3ZhciBlO3JldHVybihlPXRoaXMuX2RlbGVnYXRlKSE9PW51bGwmJmUhPT12b2lkIDA/ZTpvfXNldERlbGVnYXRlKGUpe3RoaXMuX2RlbGVnYXRlPWV9Z2V0RGVsZWdhdGVUcmFjZXIoZSx0LHIpe3ZhciBuO3JldHVybihuPXRoaXMuX2RlbGVnYXRlKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uZ2V0VHJhY2VyKGUsdCxyKX19dC5Qcm94eVRyYWNlclByb3ZpZGVyPVByb3h5VHJhY2VyUHJvdmlkZXJ9LDk5NjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5TYW1wbGluZ0RlY2lzaW9uPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiTk9UX1JFQ09SRFwiXT0wXT1cIk5PVF9SRUNPUkRcIjtlW2VbXCJSRUNPUkRcIl09MV09XCJSRUNPUkRcIjtlW2VbXCJSRUNPUkRfQU5EX1NBTVBMRURcIl09Ml09XCJSRUNPUkRfQU5EX1NBTVBMRURcIn0pKHI9dC5TYW1wbGluZ0RlY2lzaW9ufHwodC5TYW1wbGluZ0RlY2lzaW9uPXt9KSl9LDYwNzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmdldFNwYW5Db250ZXh0PXQuc2V0U3BhbkNvbnRleHQ9dC5kZWxldGVTcGFuPXQuc2V0U3Bhbj10LmdldEFjdGl2ZVNwYW49dC5nZXRTcGFuPXZvaWQgMDtjb25zdCBuPXIoNzgwKTtjb25zdCBhPXIoNDAzKTtjb25zdCBvPXIoNDkxKTtjb25zdCBpPSgwLG4uY3JlYXRlQ29udGV4dEtleSkoXCJPcGVuVGVsZW1ldHJ5IENvbnRleHQgS2V5IFNQQU5cIik7ZnVuY3Rpb24gZ2V0U3BhbihlKXtyZXR1cm4gZS5nZXRWYWx1ZShpKXx8dW5kZWZpbmVkfXQuZ2V0U3Bhbj1nZXRTcGFuO2Z1bmN0aW9uIGdldEFjdGl2ZVNwYW4oKXtyZXR1cm4gZ2V0U3BhbihvLkNvbnRleHRBUEkuZ2V0SW5zdGFuY2UoKS5hY3RpdmUoKSl9dC5nZXRBY3RpdmVTcGFuPWdldEFjdGl2ZVNwYW47ZnVuY3Rpb24gc2V0U3BhbihlLHQpe3JldHVybiBlLnNldFZhbHVlKGksdCl9dC5zZXRTcGFuPXNldFNwYW47ZnVuY3Rpb24gZGVsZXRlU3BhbihlKXtyZXR1cm4gZS5kZWxldGVWYWx1ZShpKX10LmRlbGV0ZVNwYW49ZGVsZXRlU3BhbjtmdW5jdGlvbiBzZXRTcGFuQ29udGV4dChlLHQpe3JldHVybiBzZXRTcGFuKGUsbmV3IGEuTm9uUmVjb3JkaW5nU3Bhbih0KSl9dC5zZXRTcGFuQ29udGV4dD1zZXRTcGFuQ29udGV4dDtmdW5jdGlvbiBnZXRTcGFuQ29udGV4dChlKXt2YXIgdDtyZXR1cm4odD1nZXRTcGFuKGUpKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuc3BhbkNvbnRleHQoKX10LmdldFNwYW5Db250ZXh0PWdldFNwYW5Db250ZXh0fSwzMjU6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5UcmFjZVN0YXRlSW1wbD12b2lkIDA7Y29uc3Qgbj1yKDU2NCk7Y29uc3QgYT0zMjtjb25zdCBvPTUxMjtjb25zdCBpPVwiLFwiO2NvbnN0IGM9XCI9XCI7Y2xhc3MgVHJhY2VTdGF0ZUltcGx7Y29uc3RydWN0b3IoZSl7dGhpcy5faW50ZXJuYWxTdGF0ZT1uZXcgTWFwO2lmKGUpdGhpcy5fcGFyc2UoZSl9c2V0KGUsdCl7Y29uc3Qgcj10aGlzLl9jbG9uZSgpO2lmKHIuX2ludGVybmFsU3RhdGUuaGFzKGUpKXtyLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShlKX1yLl9pbnRlcm5hbFN0YXRlLnNldChlLHQpO3JldHVybiByfXVuc2V0KGUpe2NvbnN0IHQ9dGhpcy5fY2xvbmUoKTt0Ll9pbnRlcm5hbFN0YXRlLmRlbGV0ZShlKTtyZXR1cm4gdH1nZXQoZSl7cmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KGUpfXNlcmlhbGl6ZSgpe3JldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh0K2MrdGhpcy5nZXQodCkpO3JldHVybiBlfSksW10pLmpvaW4oaSl9X3BhcnNlKGUpe2lmKGUubGVuZ3RoPm8pcmV0dXJuO3RoaXMuX2ludGVybmFsU3RhdGU9ZS5zcGxpdChpKS5yZXZlcnNlKCkucmVkdWNlKCgoZSx0KT0+e2NvbnN0IHI9dC50cmltKCk7Y29uc3QgYT1yLmluZGV4T2YoYyk7aWYoYSE9PS0xKXtjb25zdCBvPXIuc2xpY2UoMCxhKTtjb25zdCBpPXIuc2xpY2UoYSsxLHQubGVuZ3RoKTtpZigoMCxuLnZhbGlkYXRlS2V5KShvKSYmKDAsbi52YWxpZGF0ZVZhbHVlKShpKSl7ZS5zZXQobyxpKX1lbHNle319cmV0dXJuIGV9KSxuZXcgTWFwKTtpZih0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemU+YSl7dGhpcy5faW50ZXJuYWxTdGF0ZT1uZXcgTWFwKEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5lbnRyaWVzKCkpLnJldmVyc2UoKS5zbGljZSgwLGEpKX19X2tleXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpfV9jbG9uZSgpe2NvbnN0IGU9bmV3IFRyYWNlU3RhdGVJbXBsO2UuX2ludGVybmFsU3RhdGU9bmV3IE1hcCh0aGlzLl9pbnRlcm5hbFN0YXRlKTtyZXR1cm4gZX19dC5UcmFjZVN0YXRlSW1wbD1UcmFjZVN0YXRlSW1wbH0sNTY0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnZhbGlkYXRlVmFsdWU9dC52YWxpZGF0ZUtleT12b2lkIDA7Y29uc3Qgcj1cIltfMC05YS16LSovXVwiO2NvbnN0IG49YFthLXpdJHtyfXswLDI1NX1gO2NvbnN0IGE9YFthLXowLTldJHtyfXswLDI0MH1AW2Etel0ke3J9ezAsMTN9YDtjb25zdCBvPW5ldyBSZWdFeHAoYF4oPzoke259fCR7YX0pJGApO2NvbnN0IGk9L15bIC1+XXswLDI1NX1bIS1+XSQvO2NvbnN0IGM9Lyx8PS87ZnVuY3Rpb24gdmFsaWRhdGVLZXkoZSl7cmV0dXJuIG8udGVzdChlKX10LnZhbGlkYXRlS2V5PXZhbGlkYXRlS2V5O2Z1bmN0aW9uIHZhbGlkYXRlVmFsdWUoZSl7cmV0dXJuIGkudGVzdChlKSYmIWMudGVzdChlKX10LnZhbGlkYXRlVmFsdWU9dmFsaWRhdGVWYWx1ZX0sOTg6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5jcmVhdGVUcmFjZVN0YXRlPXZvaWQgMDtjb25zdCBuPXIoMzI1KTtmdW5jdGlvbiBjcmVhdGVUcmFjZVN0YXRlKGUpe3JldHVybiBuZXcgbi5UcmFjZVN0YXRlSW1wbChlKX10LmNyZWF0ZVRyYWNlU3RhdGU9Y3JlYXRlVHJhY2VTdGF0ZX0sNDc2OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuSU5WQUxJRF9TUEFOX0NPTlRFWFQ9dC5JTlZBTElEX1RSQUNFSUQ9dC5JTlZBTElEX1NQQU5JRD12b2lkIDA7Y29uc3Qgbj1yKDQ3NSk7dC5JTlZBTElEX1NQQU5JRD1cIjAwMDAwMDAwMDAwMDAwMDBcIjt0LklOVkFMSURfVFJBQ0VJRD1cIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCI7dC5JTlZBTElEX1NQQU5fQ09OVEVYVD17dHJhY2VJZDp0LklOVkFMSURfVFJBQ0VJRCxzcGFuSWQ6dC5JTlZBTElEX1NQQU5JRCx0cmFjZUZsYWdzOm4uVHJhY2VGbGFncy5OT05FfX0sMzU3OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlNwYW5LaW5kPXZvaWQgMDt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtlW1wiSU5URVJOQUxcIl09MF09XCJJTlRFUk5BTFwiO2VbZVtcIlNFUlZFUlwiXT0xXT1cIlNFUlZFUlwiO2VbZVtcIkNMSUVOVFwiXT0yXT1cIkNMSUVOVFwiO2VbZVtcIlBST0RVQ0VSXCJdPTNdPVwiUFJPRFVDRVJcIjtlW2VbXCJDT05TVU1FUlwiXT00XT1cIkNPTlNVTUVSXCJ9KShyPXQuU3BhbktpbmR8fCh0LlNwYW5LaW5kPXt9KSl9LDEzOTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LndyYXBTcGFuQ29udGV4dD10LmlzU3BhbkNvbnRleHRWYWxpZD10LmlzVmFsaWRTcGFuSWQ9dC5pc1ZhbGlkVHJhY2VJZD12b2lkIDA7Y29uc3Qgbj1yKDQ3Nik7Y29uc3QgYT1yKDQwMyk7Y29uc3Qgbz0vXihbMC05YS1mXXszMn0pJC9pO2NvbnN0IGk9L15bMC05YS1mXXsxNn0kL2k7ZnVuY3Rpb24gaXNWYWxpZFRyYWNlSWQoZSl7cmV0dXJuIG8udGVzdChlKSYmZSE9PW4uSU5WQUxJRF9UUkFDRUlEfXQuaXNWYWxpZFRyYWNlSWQ9aXNWYWxpZFRyYWNlSWQ7ZnVuY3Rpb24gaXNWYWxpZFNwYW5JZChlKXtyZXR1cm4gaS50ZXN0KGUpJiZlIT09bi5JTlZBTElEX1NQQU5JRH10LmlzVmFsaWRTcGFuSWQ9aXNWYWxpZFNwYW5JZDtmdW5jdGlvbiBpc1NwYW5Db250ZXh0VmFsaWQoZSl7cmV0dXJuIGlzVmFsaWRUcmFjZUlkKGUudHJhY2VJZCkmJmlzVmFsaWRTcGFuSWQoZS5zcGFuSWQpfXQuaXNTcGFuQ29udGV4dFZhbGlkPWlzU3BhbkNvbnRleHRWYWxpZDtmdW5jdGlvbiB3cmFwU3BhbkNvbnRleHQoZSl7cmV0dXJuIG5ldyBhLk5vblJlY29yZGluZ1NwYW4oZSl9dC53cmFwU3BhbkNvbnRleHQ9d3JhcFNwYW5Db250ZXh0fSw4NDc6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuU3BhblN0YXR1c0NvZGU9dm9pZCAwO3ZhciByOyhmdW5jdGlvbihlKXtlW2VbXCJVTlNFVFwiXT0wXT1cIlVOU0VUXCI7ZVtlW1wiT0tcIl09MV09XCJPS1wiO2VbZVtcIkVSUk9SXCJdPTJdPVwiRVJST1JcIn0pKHI9dC5TcGFuU3RhdHVzQ29kZXx8KHQuU3BhblN0YXR1c0NvZGU9e30pKX0sNDc1OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlRyYWNlRmxhZ3M9dm9pZCAwO3ZhciByOyhmdW5jdGlvbihlKXtlW2VbXCJOT05FXCJdPTBdPVwiTk9ORVwiO2VbZVtcIlNBTVBMRURcIl09MV09XCJTQU1QTEVEXCJ9KShyPXQuVHJhY2VGbGFnc3x8KHQuVHJhY2VGbGFncz17fSkpfSw1MjE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVkVSU0lPTj12b2lkIDA7dC5WRVJTSU9OPVwiMS42LjBcIn19O3ZhciB0PXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIG49dFtyXTtpZihuIT09dW5kZWZpbmVkKXtyZXR1cm4gbi5leHBvcnRzfXZhciBhPXRbcl09e2V4cG9ydHM6e319O3ZhciBvPXRydWU7dHJ5e2Vbcl0uY2FsbChhLmV4cG9ydHMsYSxhLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7bz1mYWxzZX1maW5hbGx5e2lmKG8pZGVsZXRlIHRbcl19cmV0dXJuIGEuZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHI9e307KCgpPT57dmFyIGU9cjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO2UudHJhY2U9ZS5wcm9wYWdhdGlvbj1lLm1ldHJpY3M9ZS5kaWFnPWUuY29udGV4dD1lLklOVkFMSURfU1BBTl9DT05URVhUPWUuSU5WQUxJRF9UUkFDRUlEPWUuSU5WQUxJRF9TUEFOSUQ9ZS5pc1ZhbGlkU3BhbklkPWUuaXNWYWxpZFRyYWNlSWQ9ZS5pc1NwYW5Db250ZXh0VmFsaWQ9ZS5jcmVhdGVUcmFjZVN0YXRlPWUuVHJhY2VGbGFncz1lLlNwYW5TdGF0dXNDb2RlPWUuU3BhbktpbmQ9ZS5TYW1wbGluZ0RlY2lzaW9uPWUuUHJveHlUcmFjZXJQcm92aWRlcj1lLlByb3h5VHJhY2VyPWUuZGVmYXVsdFRleHRNYXBTZXR0ZXI9ZS5kZWZhdWx0VGV4dE1hcEdldHRlcj1lLlZhbHVlVHlwZT1lLmNyZWF0ZU5vb3BNZXRlcj1lLkRpYWdMb2dMZXZlbD1lLkRpYWdDb25zb2xlTG9nZ2VyPWUuUk9PVF9DT05URVhUPWUuY3JlYXRlQ29udGV4dEtleT1lLmJhZ2dhZ2VFbnRyeU1ldGFkYXRhRnJvbVN0cmluZz12b2lkIDA7dmFyIHQ9X19uY2N3cGNrX3JlcXVpcmVfXygzNjkpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5iYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmd9fSk7dmFyIG49X19uY2N3cGNrX3JlcXVpcmVfXyg3ODApO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY3JlYXRlQ29udGV4dEtleVwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uY3JlYXRlQ29udGV4dEtleX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlJPT1RfQ09OVEVYVFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uUk9PVF9DT05URVhUfX0pO3ZhciBhPV9fbmNjd3Bja19yZXF1aXJlX18oOTcyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIkRpYWdDb25zb2xlTG9nZ2VyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5EaWFnQ29uc29sZUxvZ2dlcn19KTt2YXIgbz1fX25jY3dwY2tfcmVxdWlyZV9fKDk1Nyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJEaWFnTG9nTGV2ZWxcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkRpYWdMb2dMZXZlbH19KTt2YXIgaT1fX25jY3dwY2tfcmVxdWlyZV9fKDEwMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJjcmVhdGVOb29wTWV0ZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmNyZWF0ZU5vb3BNZXRlcn19KTt2YXIgYz1fX25jY3dwY2tfcmVxdWlyZV9fKDkwMSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJWYWx1ZVR5cGVcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBjLlZhbHVlVHlwZX19KTt2YXIgcz1fX25jY3dwY2tfcmVxdWlyZV9fKDE5NCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0VGV4dE1hcEdldHRlclwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZGVmYXVsdFRleHRNYXBHZXR0ZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0VGV4dE1hcFNldHRlclwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZGVmYXVsdFRleHRNYXBTZXR0ZXJ9fSk7dmFyIHU9X19uY2N3cGNrX3JlcXVpcmVfXygxMjUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiUHJveHlUcmFjZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1LlByb3h5VHJhY2VyfX0pO3ZhciBsPV9fbmNjd3Bja19yZXF1aXJlX18oODQ2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlByb3h5VHJhY2VyUHJvdmlkZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsLlByb3h5VHJhY2VyUHJvdmlkZXJ9fSk7dmFyIGc9X19uY2N3cGNrX3JlcXVpcmVfXyg5OTYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiU2FtcGxpbmdEZWNpc2lvblwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcuU2FtcGxpbmdEZWNpc2lvbn19KTt2YXIgcD1fX25jY3dwY2tfcmVxdWlyZV9fKDM1Nyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJTcGFuS2luZFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuU3BhbktpbmR9fSk7dmFyIGQ9X19uY2N3cGNrX3JlcXVpcmVfXyg4NDcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiU3BhblN0YXR1c0NvZGVcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBkLlNwYW5TdGF0dXNDb2RlfX0pO3ZhciBfPV9fbmNjd3Bja19yZXF1aXJlX18oNDc1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIlRyYWNlRmxhZ3NcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBfLlRyYWNlRmxhZ3N9fSk7dmFyIGY9X19uY2N3cGNrX3JlcXVpcmVfXyg5OCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJjcmVhdGVUcmFjZVN0YXRlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZi5jcmVhdGVUcmFjZVN0YXRlfX0pO3ZhciBiPV9fbmNjd3Bja19yZXF1aXJlX18oMTM5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImlzU3BhbkNvbnRleHRWYWxpZFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuaXNTcGFuQ29udGV4dFZhbGlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiaXNWYWxpZFRyYWNlSWRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmlzVmFsaWRUcmFjZUlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiaXNWYWxpZFNwYW5JZFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuaXNWYWxpZFNwYW5JZH19KTt2YXIgdj1fX25jY3dwY2tfcmVxdWlyZV9fKDQ3Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJJTlZBTElEX1NQQU5JRFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuSU5WQUxJRF9TUEFOSUR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJJTlZBTElEX1RSQUNFSURcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB2LklOVkFMSURfVFJBQ0VJRH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIklOVkFMSURfU1BBTl9DT05URVhUXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JTlZBTElEX1NQQU5fQ09OVEVYVH19KTtjb25zdCBPPV9fbmNjd3Bja19yZXF1aXJlX18oNjcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiY29udGV4dFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE8uY29udGV4dH19KTtjb25zdCBQPV9fbmNjd3Bja19yZXF1aXJlX18oNTA2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRpYWdcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBQLmRpYWd9fSk7Y29uc3QgTj1fX25jY3dwY2tfcmVxdWlyZV9fKDg4Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJtZXRyaWNzXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTi5tZXRyaWNzfX0pO2NvbnN0IFM9X19uY2N3cGNrX3JlcXVpcmVfXyg5MzkpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvcGFnYXRpb25cIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBTLnByb3BhZ2F0aW9ufX0pO2NvbnN0IEM9X19uY2N3cGNrX3JlcXVpcmVfXyg4NDUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwidHJhY2VcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBDLnRyYWNlfX0pO2VbXCJkZWZhdWx0XCJdPXtjb250ZXh0Ok8uY29udGV4dCxkaWFnOlAuZGlhZyxtZXRyaWNzOk4ubWV0cmljcyxwcm9wYWdhdGlvbjpTLnByb3BhZ2F0aW9uLHRyYWNlOkMudHJhY2V9fSkoKTttb2R1bGUuZXhwb3J0cz1yfSkoKTsiXSwibmFtZXMiOlsiZSIsInQiLCJyIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIkNvbnRleHRBUEkiLCJuIiwiYSIsIm8iLCJpIiwiYyIsIk5vb3BDb250ZXh0TWFuYWdlciIsImNvbnN0cnVjdG9yIiwiZ2V0SW5zdGFuY2UiLCJfaW5zdGFuY2UiLCJzZXRHbG9iYWxDb250ZXh0TWFuYWdlciIsInJlZ2lzdGVyR2xvYmFsIiwiRGlhZ0FQSSIsImluc3RhbmNlIiwiYWN0aXZlIiwiX2dldENvbnRleHRNYW5hZ2VyIiwid2l0aCIsImJpbmQiLCJnZXRHbG9iYWwiLCJkaXNhYmxlIiwidW5yZWdpc3Rlckdsb2JhbCIsIl9sb2dQcm94eSIsInNldExvZ2dlciIsImxvZ0xldmVsIiwiRGlhZ0xvZ0xldmVsIiwiSU5GTyIsInMiLCJFcnJvciIsImVycm9yIiwic3RhY2siLCJtZXNzYWdlIiwidSIsImwiLCJjcmVhdGVMb2dMZXZlbERpYWdMb2dnZXIiLCJzdXBwcmVzc092ZXJyaWRlTWVzc2FnZSIsIndhcm4iLCJjcmVhdGVDb21wb25lbnRMb2dnZXIiLCJEaWFnQ29tcG9uZW50TG9nZ2VyIiwidmVyYm9zZSIsImRlYnVnIiwiaW5mbyIsIk1ldHJpY3NBUEkiLCJzZXRHbG9iYWxNZXRlclByb3ZpZGVyIiwiZ2V0TWV0ZXJQcm92aWRlciIsIk5PT1BfTUVURVJfUFJPVklERVIiLCJnZXRNZXRlciIsIlByb3BhZ2F0aW9uQVBJIiwiTm9vcFRleHRNYXBQcm9wYWdhdG9yIiwiY3JlYXRlQmFnZ2FnZSIsImdldEJhZ2dhZ2UiLCJnZXRBY3RpdmVCYWdnYWdlIiwic2V0QmFnZ2FnZSIsImRlbGV0ZUJhZ2dhZ2UiLCJzZXRHbG9iYWxQcm9wYWdhdG9yIiwiaW5qZWN0IiwiZGVmYXVsdFRleHRNYXBTZXR0ZXIiLCJfZ2V0R2xvYmFsUHJvcGFnYXRvciIsImV4dHJhY3QiLCJkZWZhdWx0VGV4dE1hcEdldHRlciIsImZpZWxkcyIsIlRyYWNlQVBJIiwiX3Byb3h5VHJhY2VyUHJvdmlkZXIiLCJQcm94eVRyYWNlclByb3ZpZGVyIiwid3JhcFNwYW5Db250ZXh0IiwiaXNTcGFuQ29udGV4dFZhbGlkIiwiZGVsZXRlU3BhbiIsImdldFNwYW4iLCJnZXRBY3RpdmVTcGFuIiwiZ2V0U3BhbkNvbnRleHQiLCJzZXRTcGFuIiwic2V0U3BhbkNvbnRleHQiLCJzZXRHbG9iYWxUcmFjZXJQcm92aWRlciIsInNldERlbGVnYXRlIiwiZ2V0VHJhY2VyUHJvdmlkZXIiLCJnZXRUcmFjZXIiLCJjcmVhdGVDb250ZXh0S2V5IiwiZ2V0VmFsdWUiLCJ1bmRlZmluZWQiLCJzZXRWYWx1ZSIsImRlbGV0ZVZhbHVlIiwiQmFnZ2FnZUltcGwiLCJfZW50cmllcyIsIk1hcCIsImdldEVudHJ5IiwiZ2V0IiwiYXNzaWduIiwiZ2V0QWxsRW50cmllcyIsIkFycmF5IiwiZnJvbSIsImVudHJpZXMiLCJtYXAiLCJzZXRFbnRyeSIsInNldCIsInJlbW92ZUVudHJ5IiwiZGVsZXRlIiwicmVtb3ZlRW50cmllcyIsImNsZWFyIiwiYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wiLCJTeW1ib2wiLCJiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmciLCJfX1RZUEVfXyIsInRvU3RyaW5nIiwiY29udGV4dCIsIlJPT1RfQ09OVEVYVCIsImNhbGwiLCJlbmFibGUiLCJmb3IiLCJCYXNlQ29udGV4dCIsIl9jdXJyZW50Q29udGV4dCIsImRpYWciLCJfbmFtZXNwYWNlIiwibmFtZXNwYWNlIiwibG9nUHJveHkiLCJ1bnNoaWZ0IiwiRGlhZ0NvbnNvbGVMb2dnZXIiLCJfY29uc29sZUZ1bmMiLCJjb25zb2xlIiwibG9nIiwiYXBwbHkiLCJsZW5ndGgiLCJOT05FIiwiQUxMIiwiX2ZpbHRlckZ1bmMiLCJFUlJPUiIsIldBUk4iLCJERUJVRyIsIlZFUkJPU0UiLCJWRVJTSU9OIiwic3BsaXQiLCJfZ2xvYmFsVGhpcyIsInZlcnNpb24iLCJpc0NvbXBhdGlibGUiLCJfbWFrZUNvbXBhdGliaWxpdHlDaGVjayIsIlNldCIsIm1hdGNoIiwibWFqb3IiLCJtaW5vciIsInBhdGNoIiwicHJlcmVsZWFzZSIsImlzRXhhY3RtYXRjaCIsIl9yZWplY3QiLCJhZGQiLCJfYWNjZXB0IiwiaGFzIiwibWV0cmljcyIsIlZhbHVlVHlwZSIsImNyZWF0ZU5vb3BNZXRlciIsIk5PT1BfT0JTRVJWQUJMRV9VUF9ET1dOX0NPVU5URVJfTUVUUklDIiwiTk9PUF9PQlNFUlZBQkxFX0dBVUdFX01FVFJJQyIsIk5PT1BfT0JTRVJWQUJMRV9DT1VOVEVSX01FVFJJQyIsIk5PT1BfVVBfRE9XTl9DT1VOVEVSX01FVFJJQyIsIk5PT1BfSElTVE9HUkFNX01FVFJJQyIsIk5PT1BfQ09VTlRFUl9NRVRSSUMiLCJOT09QX01FVEVSIiwiTm9vcE9ic2VydmFibGVVcERvd25Db3VudGVyTWV0cmljIiwiTm9vcE9ic2VydmFibGVHYXVnZU1ldHJpYyIsIk5vb3BPYnNlcnZhYmxlQ291bnRlck1ldHJpYyIsIk5vb3BPYnNlcnZhYmxlTWV0cmljIiwiTm9vcEhpc3RvZ3JhbU1ldHJpYyIsIk5vb3BVcERvd25Db3VudGVyTWV0cmljIiwiTm9vcENvdW50ZXJNZXRyaWMiLCJOb29wTWV0cmljIiwiTm9vcE1ldGVyIiwiY3JlYXRlSGlzdG9ncmFtIiwiY3JlYXRlQ291bnRlciIsImNyZWF0ZVVwRG93bkNvdW50ZXIiLCJjcmVhdGVPYnNlcnZhYmxlR2F1Z2UiLCJjcmVhdGVPYnNlcnZhYmxlQ291bnRlciIsImNyZWF0ZU9ic2VydmFibGVVcERvd25Db3VudGVyIiwiYWRkQmF0Y2hPYnNlcnZhYmxlQ2FsbGJhY2siLCJyZW1vdmVCYXRjaE9ic2VydmFibGVDYWxsYmFjayIsInJlY29yZCIsImFkZENhbGxiYWNrIiwicmVtb3ZlQ2FsbGJhY2siLCJOb29wTWV0ZXJQcm92aWRlciIsIl9fY3JlYXRlQmluZGluZyIsImNyZWF0ZSIsImVudW1lcmFibGUiLCJfX2V4cG9ydFN0YXIiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImdsb2JhbFRoaXMiLCJnbG9iYWwiLCJwcm9wYWdhdGlvbiIsImtleXMiLCJ0cmFjZSIsIk5vblJlY29yZGluZ1NwYW4iLCJJTlZBTElEX1NQQU5fQ09OVEVYVCIsIl9zcGFuQ29udGV4dCIsInNwYW5Db250ZXh0Iiwic2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlcyIsImFkZEV2ZW50Iiwic2V0U3RhdHVzIiwidXBkYXRlTmFtZSIsImVuZCIsImlzUmVjb3JkaW5nIiwicmVjb3JkRXhjZXB0aW9uIiwiTm9vcFRyYWNlciIsInN0YXJ0U3BhbiIsIkJvb2xlYW4iLCJyb290IiwiaXNTcGFuQ29udGV4dCIsInN0YXJ0QWN0aXZlU3BhbiIsImFyZ3VtZW50cyIsImciLCJOb29wVHJhY2VyUHJvdmlkZXIiLCJQcm94eVRyYWNlciIsIl9wcm92aWRlciIsIm5hbWUiLCJvcHRpb25zIiwiX2dldFRyYWNlciIsIlJlZmxlY3QiLCJfZGVsZWdhdGUiLCJnZXREZWxlZ2F0ZVRyYWNlciIsImdldERlbGVnYXRlIiwiU2FtcGxpbmdEZWNpc2lvbiIsIlRyYWNlU3RhdGVJbXBsIiwiX2ludGVybmFsU3RhdGUiLCJfcGFyc2UiLCJfY2xvbmUiLCJ1bnNldCIsInNlcmlhbGl6ZSIsIl9rZXlzIiwicmVkdWNlIiwicHVzaCIsImpvaW4iLCJyZXZlcnNlIiwidHJpbSIsImluZGV4T2YiLCJzbGljZSIsInZhbGlkYXRlS2V5IiwidmFsaWRhdGVWYWx1ZSIsInNpemUiLCJSZWdFeHAiLCJ0ZXN0IiwiY3JlYXRlVHJhY2VTdGF0ZSIsIklOVkFMSURfVFJBQ0VJRCIsIklOVkFMSURfU1BBTklEIiwidHJhY2VJZCIsInNwYW5JZCIsInRyYWNlRmxhZ3MiLCJUcmFjZUZsYWdzIiwiU3BhbktpbmQiLCJpc1ZhbGlkU3BhbklkIiwiaXNWYWxpZFRyYWNlSWQiLCJTcGFuU3RhdHVzQ29kZSIsIl9fbmNjd3Bja19yZXF1aXJlX18iLCJleHBvcnRzIiwiYWIiLCJfX2Rpcm5hbWUiLCJwIiwiZCIsIl8iLCJmIiwiYiIsInYiLCJPIiwiUCIsIk4iLCJTIiwiQyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\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) => {
"use strict";
eval("var __dirname = \"/\";\n\n(()=>{\n \"use strict\";\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var e = {};\n (()=>{\n 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;\n r.serialize = serialize;\n var i = decodeURIComponent;\n var t = encodeURIComponent;\n var a = /; */;\n var n = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n function parse(e, r) {\n if (typeof e !== \"string\") {\n throw new TypeError(\"argument str must be a string\");\n }\n var t = {};\n var n = r || {};\n var o = e.split(a);\n var s = n.decode || i;\n for(var p = 0; p < o.length; p++){\n var f = o[p];\n var u = f.indexOf(\"=\");\n if (u < 0) {\n continue;\n }\n var v = f.substr(0, u).trim();\n var c = f.substr(++u, f.length).trim();\n if ('\"' == c[0]) {\n c = c.slice(1, -1);\n }\n if (undefined == t[v]) {\n t[v] = tryDecode(c, s);\n }\n }\n return t;\n }\n function serialize(e, r, i) {\n var a = i || {};\n var o = a.encode || t;\n if (typeof o !== \"function\") {\n throw new TypeError(\"option encode is invalid\");\n }\n if (!n.test(e)) {\n throw new TypeError(\"argument name is invalid\");\n }\n var s = o(r);\n if (s && !n.test(s)) {\n throw new TypeError(\"argument val is invalid\");\n }\n var p = e + \"=\" + s;\n if (null != a.maxAge) {\n var f = a.maxAge - 0;\n if (isNaN(f) || !isFinite(f)) {\n throw new TypeError(\"option maxAge is invalid\");\n }\n p += \"; Max-Age=\" + Math.floor(f);\n }\n if (a.domain) {\n if (!n.test(a.domain)) {\n throw new TypeError(\"option domain is invalid\");\n }\n p += \"; Domain=\" + a.domain;\n }\n if (a.path) {\n if (!n.test(a.path)) {\n throw new TypeError(\"option path is invalid\");\n }\n p += \"; Path=\" + a.path;\n }\n if (a.expires) {\n if (typeof a.expires.toUTCString !== \"function\") {\n throw new TypeError(\"option expires is invalid\");\n }\n p += \"; Expires=\" + a.expires.toUTCString();\n }\n if (a.httpOnly) {\n p += \"; HttpOnly\";\n }\n if (a.secure) {\n p += \"; Secure\";\n }\n if (a.sameSite) {\n var u = typeof a.sameSite === \"string\" ? a.sameSite.toLowerCase() : a.sameSite;\n switch(u){\n case true:\n p += \"; SameSite=Strict\";\n break;\n case \"lax\":\n p += \"; SameSite=Lax\";\n break;\n case \"strict\":\n p += \"; SameSite=Strict\";\n break;\n case \"none\":\n p += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(\"option sameSite is invalid\");\n }\n }\n return p;\n }\n function tryDecode(e, r) {\n try {\n return r(e);\n } catch (r) {\n return e;\n }\n }\n })();\n module.exports = e;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2Nvb2tpZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOztBQUFDO0lBQUs7SUFBYSxJQUFHLE9BQU9BLHdCQUFzQixhQUFZQSxvQkFBb0JDLEVBQUUsR0FBQ0MsU0FBU0EsR0FBQztJQUFJLElBQUlDLElBQUUsQ0FBQztJQUFHO1FBQUssSUFBSUMsSUFBRUQ7UUFDekg7Ozs7O0NBS0MsR0FBRUMsRUFBRUMsS0FBSyxHQUFDQTtRQUFNRCxFQUFFRSxTQUFTLEdBQUNBO1FBQVUsSUFBSUMsSUFBRUM7UUFBbUIsSUFBSUMsSUFBRUM7UUFBbUIsSUFBSUMsSUFBRTtRQUFNLElBQUlDLElBQUU7UUFBd0MsU0FBU1AsTUFBTUYsQ0FBQyxFQUFDQyxDQUFDO1lBQUUsSUFBRyxPQUFPRCxNQUFJLFVBQVM7Z0JBQUMsTUFBTSxJQUFJVSxVQUFVO1lBQWdDO1lBQUMsSUFBSUosSUFBRSxDQUFDO1lBQUUsSUFBSUcsSUFBRVIsS0FBRyxDQUFDO1lBQUUsSUFBSVUsSUFBRVgsRUFBRVksS0FBSyxDQUFDSjtZQUFHLElBQUlLLElBQUVKLEVBQUVLLE1BQU0sSUFBRVY7WUFBRSxJQUFJLElBQUlXLElBQUUsR0FBRUEsSUFBRUosRUFBRUssTUFBTSxFQUFDRCxJQUFJO2dCQUFDLElBQUlFLElBQUVOLENBQUMsQ0FBQ0ksRUFBRTtnQkFBQyxJQUFJRyxJQUFFRCxFQUFFRSxPQUFPLENBQUM7Z0JBQUssSUFBR0QsSUFBRSxHQUFFO29CQUFDO2dCQUFRO2dCQUFDLElBQUlFLElBQUVILEVBQUVJLE1BQU0sQ0FBQyxHQUFFSCxHQUFHSSxJQUFJO2dCQUFHLElBQUlDLElBQUVOLEVBQUVJLE1BQU0sQ0FBQyxFQUFFSCxHQUFFRCxFQUFFRCxNQUFNLEVBQUVNLElBQUk7Z0JBQUcsSUFBRyxPQUFLQyxDQUFDLENBQUMsRUFBRSxFQUFDO29CQUFDQSxJQUFFQSxFQUFFQyxLQUFLLENBQUMsR0FBRSxDQUFDO2dCQUFFO2dCQUFDLElBQUdDLGFBQVduQixDQUFDLENBQUNjLEVBQUUsRUFBQztvQkFBQ2QsQ0FBQyxDQUFDYyxFQUFFLEdBQUNNLFVBQVVILEdBQUVWO2dCQUFFO1lBQUM7WUFBQyxPQUFPUDtRQUFDO1FBQUMsU0FBU0gsVUFBVUgsQ0FBQyxFQUFDQyxDQUFDLEVBQUNHLENBQUM7WUFBRSxJQUFJSSxJQUFFSixLQUFHLENBQUM7WUFBRSxJQUFJTyxJQUFFSCxFQUFFbUIsTUFBTSxJQUFFckI7WUFBRSxJQUFHLE9BQU9LLE1BQUksWUFBVztnQkFBQyxNQUFNLElBQUlELFVBQVU7WUFBMkI7WUFBQyxJQUFHLENBQUNELEVBQUVtQixJQUFJLENBQUM1QixJQUFHO2dCQUFDLE1BQU0sSUFBSVUsVUFBVTtZQUEyQjtZQUFDLElBQUlHLElBQUVGLEVBQUVWO1lBQUcsSUFBR1ksS0FBRyxDQUFDSixFQUFFbUIsSUFBSSxDQUFDZixJQUFHO2dCQUFDLE1BQU0sSUFBSUgsVUFBVTtZQUEwQjtZQUFDLElBQUlLLElBQUVmLElBQUUsTUFBSWE7WUFBRSxJQUFHLFFBQU1MLEVBQUVxQixNQUFNLEVBQUM7Z0JBQUMsSUFBSVosSUFBRVQsRUFBRXFCLE1BQU0sR0FBQztnQkFBRSxJQUFHQyxNQUFNYixNQUFJLENBQUNjLFNBQVNkLElBQUc7b0JBQUMsTUFBTSxJQUFJUCxVQUFVO2dCQUEyQjtnQkFBQ0ssS0FBRyxlQUFhaUIsS0FBS0MsS0FBSyxDQUFDaEI7WUFBRTtZQUFDLElBQUdULEVBQUUwQixNQUFNLEVBQUM7Z0JBQUMsSUFBRyxDQUFDekIsRUFBRW1CLElBQUksQ0FBQ3BCLEVBQUUwQixNQUFNLEdBQUU7b0JBQUMsTUFBTSxJQUFJeEIsVUFBVTtnQkFBMkI7Z0JBQUNLLEtBQUcsY0FBWVAsRUFBRTBCLE1BQU07WUFBQTtZQUFDLElBQUcxQixFQUFFMkIsSUFBSSxFQUFDO2dCQUFDLElBQUcsQ0FBQzFCLEVBQUVtQixJQUFJLENBQUNwQixFQUFFMkIsSUFBSSxHQUFFO29CQUFDLE1BQU0sSUFBSXpCLFVBQVU7Z0JBQXlCO2dCQUFDSyxLQUFHLFlBQVVQLEVBQUUyQixJQUFJO1lBQUE7WUFBQyxJQUFHM0IsRUFBRTRCLE9BQU8sRUFBQztnQkFBQyxJQUFHLE9BQU81QixFQUFFNEIsT0FBTyxDQUFDQyxXQUFXLEtBQUcsWUFBVztvQkFBQyxNQUFNLElBQUkzQixVQUFVO2dCQUE0QjtnQkFBQ0ssS0FBRyxlQUFhUCxFQUFFNEIsT0FBTyxDQUFDQyxXQUFXO1lBQUU7WUFBQyxJQUFHN0IsRUFBRThCLFFBQVEsRUFBQztnQkFBQ3ZCLEtBQUc7WUFBWTtZQUFDLElBQUdQLEVBQUUrQixNQUFNLEVBQUM7Z0JBQUN4QixLQUFHO1lBQVU7WUFBQyxJQUFHUCxFQUFFZ0MsUUFBUSxFQUFDO2dCQUFDLElBQUl0QixJQUFFLE9BQU9WLEVBQUVnQyxRQUFRLEtBQUcsV0FBU2hDLEVBQUVnQyxRQUFRLENBQUNDLFdBQVcsS0FBR2pDLEVBQUVnQyxRQUFRO2dCQUFDLE9BQU90QjtvQkFBRyxLQUFLO3dCQUFLSCxLQUFHO3dCQUFvQjtvQkFBTSxLQUFJO3dCQUFNQSxLQUFHO3dCQUFpQjtvQkFBTSxLQUFJO3dCQUFTQSxLQUFHO3dCQUFvQjtvQkFBTSxLQUFJO3dCQUFPQSxLQUFHO3dCQUFrQjtvQkFBTTt3QkFBUSxNQUFNLElBQUlMLFVBQVU7Z0JBQTZCO1lBQUM7WUFBQyxPQUFPSztRQUFDO1FBQUMsU0FBU1csVUFBVTFCLENBQUMsRUFBQ0MsQ0FBQztZQUFFLElBQUc7Z0JBQUMsT0FBT0EsRUFBRUQ7WUFBRSxFQUFDLE9BQU1DLEdBQUU7Z0JBQUMsT0FBT0Q7WUFBQztRQUFDO0lBQUM7SUFBSzBDLE9BQU9DLE9BQU8sR0FBQzNDO0FBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9jb29raWUvaW5kZXguanM/YjI1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIoKCk9PntcInVzZSBzdHJpY3RcIjtpZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIGU9e307KCgpPT57dmFyIHI9ZTtcbi8qIVxuICogY29va2llXG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9yLnBhcnNlPXBhcnNlO3Iuc2VyaWFsaXplPXNlcmlhbGl6ZTt2YXIgaT1kZWNvZGVVUklDb21wb25lbnQ7dmFyIHQ9ZW5jb2RlVVJJQ29tcG9uZW50O3ZhciBhPS87ICovO3ZhciBuPS9eW1xcdTAwMDlcXHUwMDIwLVxcdTAwN2VcXHUwMDgwLVxcdTAwZmZdKyQvO2Z1bmN0aW9uIHBhcnNlKGUscil7aWYodHlwZW9mIGUhPT1cInN0cmluZ1wiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgc3RyIG11c3QgYmUgYSBzdHJpbmdcIil9dmFyIHQ9e307dmFyIG49cnx8e307dmFyIG89ZS5zcGxpdChhKTt2YXIgcz1uLmRlY29kZXx8aTtmb3IodmFyIHA9MDtwPG8ubGVuZ3RoO3ArKyl7dmFyIGY9b1twXTt2YXIgdT1mLmluZGV4T2YoXCI9XCIpO2lmKHU8MCl7Y29udGludWV9dmFyIHY9Zi5zdWJzdHIoMCx1KS50cmltKCk7dmFyIGM9Zi5zdWJzdHIoKyt1LGYubGVuZ3RoKS50cmltKCk7aWYoJ1wiJz09Y1swXSl7Yz1jLnNsaWNlKDEsLTEpfWlmKHVuZGVmaW5lZD09dFt2XSl7dFt2XT10cnlEZWNvZGUoYyxzKX19cmV0dXJuIHR9ZnVuY3Rpb24gc2VyaWFsaXplKGUscixpKXt2YXIgYT1pfHx7fTt2YXIgbz1hLmVuY29kZXx8dDtpZih0eXBlb2YgbyE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIm9wdGlvbiBlbmNvZGUgaXMgaW52YWxpZFwiKX1pZighbi50ZXN0KGUpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgbmFtZSBpcyBpbnZhbGlkXCIpfXZhciBzPW8ocik7aWYocyYmIW4udGVzdChzKSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcImFyZ3VtZW50IHZhbCBpcyBpbnZhbGlkXCIpfXZhciBwPWUrXCI9XCIrcztpZihudWxsIT1hLm1heEFnZSl7dmFyIGY9YS5tYXhBZ2UtMDtpZihpc05hTihmKXx8IWlzRmluaXRlKGYpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwib3B0aW9uIG1heEFnZSBpcyBpbnZhbGlkXCIpfXArPVwiOyBNYXgtQWdlPVwiK01hdGguZmxvb3IoZil9aWYoYS5kb21haW4pe2lmKCFuLnRlc3QoYS5kb21haW4pKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwib3B0aW9uIGRvbWFpbiBpcyBpbnZhbGlkXCIpfXArPVwiOyBEb21haW49XCIrYS5kb21haW59aWYoYS5wYXRoKXtpZighbi50ZXN0KGEucGF0aCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJvcHRpb24gcGF0aCBpcyBpbnZhbGlkXCIpfXArPVwiOyBQYXRoPVwiK2EucGF0aH1pZihhLmV4cGlyZXMpe2lmKHR5cGVvZiBhLmV4cGlyZXMudG9VVENTdHJpbmchPT1cImZ1bmN0aW9uXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJvcHRpb24gZXhwaXJlcyBpcyBpbnZhbGlkXCIpfXArPVwiOyBFeHBpcmVzPVwiK2EuZXhwaXJlcy50b1VUQ1N0cmluZygpfWlmKGEuaHR0cE9ubHkpe3ArPVwiOyBIdHRwT25seVwifWlmKGEuc2VjdXJlKXtwKz1cIjsgU2VjdXJlXCJ9aWYoYS5zYW1lU2l0ZSl7dmFyIHU9dHlwZW9mIGEuc2FtZVNpdGU9PT1cInN0cmluZ1wiP2Euc2FtZVNpdGUudG9Mb3dlckNhc2UoKTphLnNhbWVTaXRlO3N3aXRjaCh1KXtjYXNlIHRydWU6cCs9XCI7IFNhbWVTaXRlPVN0cmljdFwiO2JyZWFrO2Nhc2VcImxheFwiOnArPVwiOyBTYW1lU2l0ZT1MYXhcIjticmVhaztjYXNlXCJzdHJpY3RcIjpwKz1cIjsgU2FtZVNpdGU9U3RyaWN0XCI7YnJlYWs7Y2FzZVwibm9uZVwiOnArPVwiOyBTYW1lU2l0ZT1Ob25lXCI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwib3B0aW9uIHNhbWVTaXRlIGlzIGludmFsaWRcIil9fXJldHVybiBwfWZ1bmN0aW9uIHRyeURlY29kZShlLHIpe3RyeXtyZXR1cm4gcihlKX1jYXRjaChyKXtyZXR1cm4gZX19fSkoKTttb2R1bGUuZXhwb3J0cz1lfSkoKTsiXSwibmFtZXMiOlsiX19uY2N3cGNrX3JlcXVpcmVfXyIsImFiIiwiX19kaXJuYW1lIiwiZSIsInIiLCJwYXJzZSIsInNlcmlhbGl6ZSIsImkiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ0IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYSIsIm4iLCJUeXBlRXJyb3IiLCJvIiwic3BsaXQiLCJzIiwiZGVjb2RlIiwicCIsImxlbmd0aCIsImYiLCJ1IiwiaW5kZXhPZiIsInYiLCJzdWJzdHIiLCJ0cmltIiwiYyIsInNsaWNlIiwidW5kZWZpbmVkIiwidHJ5RGVjb2RlIiwiZW5jb2RlIiwidGVzdCIsIm1heEFnZSIsImlzTmFOIiwiaXNGaW5pdGUiLCJNYXRoIiwiZmxvb3IiLCJkb21haW4iLCJwYXRoIiwiZXhwaXJlcyIsInRvVVRDU3RyaW5nIiwiaHR0cE9ubHkiLCJzZWN1cmUiLCJzYW1lU2l0ZSIsInRvTG93ZXJDYXNlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/cookie/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/lru-cache/index.js":
/*!************************************************************!*\
!*** ./node_modules/next/dist/compiled/lru-cache/index.js ***!
\************************************************************/
/***/ ((module) => {
"use strict";
eval("var __dirname = \"/\";\n\n(()=>{\n \"use strict\";\n var t = {\n 806: (t, e, i)=>{\n const s = i(190);\n const n = Symbol(\"max\");\n const l = Symbol(\"length\");\n const r = Symbol(\"lengthCalculator\");\n const h = Symbol(\"allowStale\");\n const a = Symbol(\"maxAge\");\n const o = Symbol(\"dispose\");\n const u = Symbol(\"noDisposeOnSet\");\n const f = Symbol(\"lruList\");\n const p = Symbol(\"cache\");\n const v = Symbol(\"updateAgeOnGet\");\n const naiveLength = ()=>1;\n class LRUCache {\n constructor(t){\n if (typeof t === \"number\") t = {\n max: t\n };\n if (!t) t = {};\n if (t.max && (typeof t.max !== \"number\" || t.max < 0)) throw new TypeError(\"max must be a non-negative number\");\n const e = this[n] = t.max || Infinity;\n const i = t.length || naiveLength;\n this[r] = typeof i !== \"function\" ? naiveLength : i;\n this[h] = t.stale || false;\n if (t.maxAge && typeof t.maxAge !== \"number\") throw new TypeError(\"maxAge must be a number\");\n this[a] = t.maxAge || 0;\n this[o] = t.dispose;\n this[u] = t.noDisposeOnSet || false;\n this[v] = t.updateAgeOnGet || false;\n this.reset();\n }\n set max(t) {\n if (typeof t !== \"number\" || t < 0) throw new TypeError(\"max must be a non-negative number\");\n this[n] = t || Infinity;\n trim(this);\n }\n get max() {\n return this[n];\n }\n set allowStale(t) {\n this[h] = !!t;\n }\n get allowStale() {\n return this[h];\n }\n set maxAge(t) {\n if (typeof t !== \"number\") throw new TypeError(\"maxAge must be a non-negative number\");\n this[a] = t;\n trim(this);\n }\n get maxAge() {\n return this[a];\n }\n set lengthCalculator(t) {\n if (typeof t !== \"function\") t = naiveLength;\n if (t !== this[r]) {\n this[r] = t;\n this[l] = 0;\n this[f].forEach((t)=>{\n t.length = this[r](t.value, t.key);\n this[l] += t.length;\n });\n }\n trim(this);\n }\n get lengthCalculator() {\n return this[r];\n }\n get length() {\n return this[l];\n }\n get itemCount() {\n return this[f].length;\n }\n rforEach(t, e) {\n e = e || this;\n for(let i = this[f].tail; i !== null;){\n const s = i.prev;\n forEachStep(this, t, i, e);\n i = s;\n }\n }\n forEach(t, e) {\n e = e || this;\n for(let i = this[f].head; i !== null;){\n const s = i.next;\n forEachStep(this, t, i, e);\n i = s;\n }\n }\n keys() {\n return this[f].toArray().map((t)=>t.key);\n }\n values() {\n return this[f].toArray().map((t)=>t.value);\n }\n reset() {\n if (this[o] && this[f] && this[f].length) {\n this[f].forEach((t)=>this[o](t.key, t.value));\n }\n this[p] = new Map;\n this[f] = new s;\n this[l] = 0;\n }\n dump() {\n return this[f].map((t)=>isStale(this, t) ? false : {\n k: t.key,\n v: t.value,\n e: t.now + (t.maxAge || 0)\n }).toArray().filter((t)=>t);\n }\n dumpLru() {\n return this[f];\n }\n set(t, e, i) {\n i = i || this[a];\n if (i && typeof i !== \"number\") throw new TypeError(\"maxAge must be a number\");\n const s = i ? Date.now() : 0;\n const h = this[r](e, t);\n if (this[p].has(t)) {\n if (h > this[n]) {\n del(this, this[p].get(t));\n return false;\n }\n const r = this[p].get(t);\n const a = r.value;\n if (this[o]) {\n if (!this[u]) this[o](t, a.value);\n }\n a.now = s;\n a.maxAge = i;\n a.value = e;\n this[l] += h - a.length;\n a.length = h;\n this.get(t);\n trim(this);\n return true;\n }\n const v = new Entry(t, e, h, s, i);\n if (v.length > this[n]) {\n if (this[o]) this[o](t, e);\n return false;\n }\n this[l] += v.length;\n this[f].unshift(v);\n this[p].set(t, this[f].head);\n trim(this);\n return true;\n }\n has(t) {\n if (!this[p].has(t)) return false;\n const e = this[p].get(t).value;\n return !isStale(this, e);\n }\n get(t) {\n return get(this, t, true);\n }\n peek(t) {\n return get(this, t, false);\n }\n pop() {\n const t = this[f].tail;\n if (!t) return null;\n del(this, t);\n return t.value;\n }\n del(t) {\n del(this, this[p].get(t));\n }\n load(t) {\n this.reset();\n const e = Date.now();\n for(let i = t.length - 1; i >= 0; i--){\n const s = t[i];\n const n = s.e || 0;\n if (n === 0) this.set(s.k, s.v);\n else {\n const t = n - e;\n if (t > 0) {\n this.set(s.k, s.v, t);\n }\n }\n }\n }\n prune() {\n this[p].forEach((t, e)=>get(this, e, false));\n }\n }\n const get = (t, e, i)=>{\n const s = t[p].get(e);\n if (s) {\n const e = s.value;\n if (isStale(t, e)) {\n del(t, s);\n if (!t[h]) return undefined;\n } else {\n if (i) {\n if (t[v]) s.value.now = Date.now();\n t[f].unshiftNode(s);\n }\n }\n return e.value;\n }\n };\n const isStale = (t, e)=>{\n if (!e || !e.maxAge && !t[a]) return false;\n const i = Date.now() - e.now;\n return e.maxAge ? i > e.maxAge : t[a] && i > t[a];\n };\n const trim = (t)=>{\n if (t[l] > t[n]) {\n for(let e = t[f].tail; t[l] > t[n] && e !== null;){\n const i = e.prev;\n del(t, e);\n e = i;\n }\n }\n };\n const del = (t, e)=>{\n if (e) {\n const i = e.value;\n if (t[o]) t[o](i.key, i.value);\n t[l] -= i.length;\n t[p].delete(i.key);\n t[f].removeNode(e);\n }\n };\n class Entry {\n constructor(t, e, i, s, n){\n this.key = t;\n this.value = e;\n this.length = i;\n this.now = s;\n this.maxAge = n || 0;\n }\n }\n const forEachStep = (t, e, i, s)=>{\n let n = i.value;\n if (isStale(t, n)) {\n del(t, i);\n if (!t[h]) n = undefined;\n }\n if (n) e.call(s, n.value, n.key, t);\n };\n t.exports = LRUCache;\n },\n 76: (t)=>{\n t.exports = function(t) {\n t.prototype[Symbol.iterator] = function*() {\n for(let t = this.head; t; t = t.next){\n yield t.value;\n }\n };\n };\n },\n 190: (t, e, i)=>{\n t.exports = Yallist;\n Yallist.Node = Node;\n Yallist.create = Yallist;\n function Yallist(t) {\n var e = this;\n if (!(e instanceof Yallist)) {\n e = new Yallist;\n }\n e.tail = null;\n e.head = null;\n e.length = 0;\n if (t && typeof t.forEach === \"function\") {\n t.forEach(function(t) {\n e.push(t);\n });\n } else if (arguments.length > 0) {\n for(var i = 0, s = arguments.length; i < s; i++){\n e.push(arguments[i]);\n }\n }\n return e;\n }\n Yallist.prototype.removeNode = function(t) {\n if (t.list !== this) {\n throw new Error(\"removing node which does not belong to this list\");\n }\n var e = t.next;\n var i = t.prev;\n if (e) {\n e.prev = i;\n }\n if (i) {\n i.next = e;\n }\n if (t === this.head) {\n this.head = e;\n }\n if (t === this.tail) {\n this.tail = i;\n }\n t.list.length--;\n t.next = null;\n t.prev = null;\n t.list = null;\n return e;\n };\n Yallist.prototype.unshiftNode = function(t) {\n if (t === this.head) {\n return;\n }\n if (t.list) {\n t.list.removeNode(t);\n }\n var e = this.head;\n t.list = this;\n t.next = e;\n if (e) {\n e.prev = t;\n }\n this.head = t;\n if (!this.tail) {\n this.tail = t;\n }\n this.length++;\n };\n Yallist.prototype.pushNode = function(t) {\n if (t === this.tail) {\n return;\n }\n if (t.list) {\n t.list.removeNode(t);\n }\n var e = this.tail;\n t.list = this;\n t.prev = e;\n if (e) {\n e.next = t;\n }\n this.tail = t;\n if (!this.head) {\n this.head = t;\n }\n this.length++;\n };\n Yallist.prototype.push = function() {\n for(var t = 0, e = arguments.length; t < e; t++){\n push(this, arguments[t]);\n }\n return this.length;\n };\n Yallist.prototype.unshift = function() {\n for(var t = 0, e = arguments.length; t < e; t++){\n unshift(this, arguments[t]);\n }\n return this.length;\n };\n Yallist.prototype.pop = function() {\n if (!this.tail) {\n return undefined;\n }\n var t = this.tail.value;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = null;\n } else {\n this.head = null;\n }\n this.length--;\n return t;\n };\n Yallist.prototype.shift = function() {\n if (!this.head) {\n return undefined;\n }\n var t = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return t;\n };\n Yallist.prototype.forEach = function(t, e) {\n e = e || this;\n for(var i = this.head, s = 0; i !== null; s++){\n t.call(e, i.value, s, this);\n i = i.next;\n }\n };\n Yallist.prototype.forEachReverse = function(t, e) {\n e = e || this;\n for(var i = this.tail, s = this.length - 1; i !== null; s--){\n t.call(e, i.value, s, this);\n i = i.prev;\n }\n };\n Yallist.prototype.get = function(t) {\n for(var e = 0, i = this.head; i !== null && e < t; e++){\n i = i.next;\n }\n if (e === t && i !== null) {\n return i.value;\n }\n };\n Yallist.prototype.getReverse = function(t) {\n for(var e = 0, i = this.tail; i !== null && e < t; e++){\n i = i.prev;\n }\n if (e === t && i !== null) {\n return i.value;\n }\n };\n Yallist.prototype.map = function(t, e) {\n e = e || this;\n var i = new Yallist;\n for(var s = this.head; s !== null;){\n i.push(t.call(e, s.value, this));\n s = s.next;\n }\n return i;\n };\n Yallist.prototype.mapReverse = function(t, e) {\n e = e || this;\n var i = new Yallist;\n for(var s = this.tail; s !== null;){\n i.push(t.call(e, s.value, this));\n s = s.prev;\n }\n return i;\n };\n Yallist.prototype.reduce = function(t, e) {\n var i;\n var s = this.head;\n if (arguments.length > 1) {\n i = e;\n } else if (this.head) {\n s = this.head.next;\n i = this.head.value;\n } else {\n throw new TypeError(\"Reduce of empty list with no initial value\");\n }\n for(var n = 0; s !== null; n++){\n i = t(i, s.value, n);\n s = s.next;\n }\n return i;\n };\n Yallist.prototype.reduceReverse = function(t, e) {\n var i;\n var s = this.tail;\n if (arguments.length > 1) {\n i = e;\n } else if (this.tail) {\n s = this.tail.prev;\n i = this.tail.value;\n } else {\n throw new TypeError(\"Reduce of empty list with no initial value\");\n }\n for(var n = this.length - 1; s !== null; n--){\n i = t(i, s.value, n);\n s = s.prev;\n }\n return i;\n };\n Yallist.prototype.toArray = function() {\n var t = new Array(this.length);\n for(var e = 0, i = this.head; i !== null; e++){\n t[e] = i.value;\n i = i.next;\n }\n return t;\n };\n Yallist.prototype.toArrayReverse = function() {\n var t = new Array(this.length);\n for(var e = 0, i = this.tail; i !== null; e++){\n t[e] = i.value;\n i = i.prev;\n }\n return t;\n };\n Yallist.prototype.slice = function(t, e) {\n e = e || this.length;\n if (e < 0) {\n e += this.length;\n }\n t = t || 0;\n if (t < 0) {\n t += this.length;\n }\n var i = new Yallist;\n if (e < t || e < 0) {\n return i;\n }\n if (t < 0) {\n t = 0;\n }\n if (e > this.length) {\n e = this.length;\n }\n for(var s = 0, n = this.head; n !== null && s < t; s++){\n n = n.next;\n }\n for(; n !== null && s < e; s++, n = n.next){\n i.push(n.value);\n }\n return i;\n };\n Yallist.prototype.sliceReverse = function(t, e) {\n e = e || this.length;\n if (e < 0) {\n e += this.length;\n }\n t = t || 0;\n if (t < 0) {\n t += this.length;\n }\n var i = new Yallist;\n if (e < t || e < 0) {\n return i;\n }\n if (t < 0) {\n t = 0;\n }\n if (e > this.length) {\n e = this.length;\n }\n for(var s = this.length, n = this.tail; n !== null && s > e; s--){\n n = n.prev;\n }\n for(; n !== null && s > t; s--, n = n.prev){\n i.push(n.value);\n }\n return i;\n };\n Yallist.prototype.splice = function(t, e) {\n if (t > this.length) {\n t = this.length - 1;\n }\n if (t < 0) {\n t = this.length + t;\n }\n for(var i = 0, s = this.head; s !== null && i < t; i++){\n s = s.next;\n }\n var n = [];\n for(var i = 0; s && i < e; i++){\n n.push(s.value);\n s = this.removeNode(s);\n }\n if (s === null) {\n s = this.tail;\n }\n if (s !== this.head && s !== this.tail) {\n s = s.prev;\n }\n for(var i = 2; i < arguments.length; i++){\n s = insert(this, s, arguments[i]);\n }\n return n;\n };\n Yallist.prototype.reverse = function() {\n var t = this.head;\n var e = this.tail;\n for(var i = t; i !== null; i = i.prev){\n var s = i.prev;\n i.prev = i.next;\n i.next = s;\n }\n this.head = e;\n this.tail = t;\n return this;\n };\n function insert(t, e, i) {\n var s = e === t.head ? new Node(i, null, e, t) : new Node(i, e, e.next, t);\n if (s.next === null) {\n t.tail = s;\n }\n if (s.prev === null) {\n t.head = s;\n }\n t.length++;\n return s;\n }\n function push(t, e) {\n t.tail = new Node(e, t.tail, null, t);\n if (!t.head) {\n t.head = t.tail;\n }\n t.length++;\n }\n function unshift(t, e) {\n t.head = new Node(e, null, t.head, t);\n if (!t.tail) {\n t.tail = t.head;\n }\n t.length++;\n }\n function Node(t, e, i, s) {\n if (!(this instanceof Node)) {\n return new Node(t, e, i, s);\n }\n this.list = s;\n this.value = t;\n if (e) {\n e.next = this;\n this.prev = e;\n } else {\n this.prev = null;\n }\n if (i) {\n i.prev = this;\n this.next = i;\n } else {\n this.next = null;\n }\n }\n try {\n i(76)(Yallist);\n } catch (t) {}\n }\n };\n var e = {};\n function __nccwpck_require__(i) {\n var s = e[i];\n if (s !== undefined) {\n return s.exports;\n }\n var n = e[i] = {\n exports: {}\n };\n var l = true;\n try {\n t[i](n, n.exports, __nccwpck_require__);\n l = false;\n } finally{\n if (l) delete e[i];\n }\n return n.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var i = __nccwpck_require__(806);\n module.exports = i;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2xydS1jYWNoZS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOztBQUFDO0lBQUs7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSSxDQUFDQSxHQUFFQyxHQUFFQztZQUFLLE1BQU1DLElBQUVELEVBQUU7WUFBSyxNQUFNRSxJQUFFQyxPQUFPO1lBQU8sTUFBTUMsSUFBRUQsT0FBTztZQUFVLE1BQU1FLElBQUVGLE9BQU87WUFBb0IsTUFBTUcsSUFBRUgsT0FBTztZQUFjLE1BQU1JLElBQUVKLE9BQU87WUFBVSxNQUFNSyxJQUFFTCxPQUFPO1lBQVcsTUFBTU0sSUFBRU4sT0FBTztZQUFrQixNQUFNTyxJQUFFUCxPQUFPO1lBQVcsTUFBTVEsSUFBRVIsT0FBTztZQUFTLE1BQU1TLElBQUVULE9BQU87WUFBa0IsTUFBTVUsY0FBWSxJQUFJO1lBQUUsTUFBTUM7Z0JBQVNDLFlBQVlqQixDQUFDLENBQUM7b0JBQUMsSUFBRyxPQUFPQSxNQUFJLFVBQVNBLElBQUU7d0JBQUNrQixLQUFJbEI7b0JBQUM7b0JBQUUsSUFBRyxDQUFDQSxHQUFFQSxJQUFFLENBQUM7b0JBQUUsSUFBR0EsRUFBRWtCLEdBQUcsSUFBRyxRQUFPbEIsRUFBRWtCLEdBQUcsS0FBRyxZQUFVbEIsRUFBRWtCLEdBQUcsR0FBQyxJQUFHLE1BQU0sSUFBSUMsVUFBVTtvQkFBcUMsTUFBTWxCLElBQUUsSUFBSSxDQUFDRyxFQUFFLEdBQUNKLEVBQUVrQixHQUFHLElBQUVFO29CQUFTLE1BQU1sQixJQUFFRixFQUFFcUIsTUFBTSxJQUFFTjtvQkFBWSxJQUFJLENBQUNSLEVBQUUsR0FBQyxPQUFPTCxNQUFJLGFBQVdhLGNBQVliO29CQUFFLElBQUksQ0FBQ00sRUFBRSxHQUFDUixFQUFFc0IsS0FBSyxJQUFFO29CQUFNLElBQUd0QixFQUFFdUIsTUFBTSxJQUFFLE9BQU92QixFQUFFdUIsTUFBTSxLQUFHLFVBQVMsTUFBTSxJQUFJSixVQUFV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Y29tcGlsZWQvbHJ1LWNhY2hlL2luZGV4LmpzPzZmYzciXSwic291cmNlc0NvbnRlbnQiOlsiKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezgwNjoodCxlLGkpPT57Y29uc3Qgcz1pKDE5MCk7Y29uc3Qgbj1TeW1ib2woXCJtYXhcIik7Y29uc3QgbD1TeW1ib2woXCJsZW5ndGhcIik7Y29uc3Qgcj1TeW1ib2woXCJsZW5ndGhDYWxjdWxhdG9yXCIpO2NvbnN0IGg9U3ltYm9sKFwiYWxsb3dTdGFsZVwiKTtjb25zdCBhPVN5bWJvbChcIm1heEFnZVwiKTtjb25zdCBvPVN5bWJvbChcImRpc3Bvc2VcIik7Y29uc3QgdT1TeW1ib2woXCJub0Rpc3Bvc2VPblNldFwiKTtjb25zdCBmPVN5bWJvbChcImxydUxpc3RcIik7Y29uc3QgcD1TeW1ib2woXCJjYWNoZVwiKTtjb25zdCB2PVN5bWJvbChcInVwZGF0ZUFnZU9uR2V0XCIpO2NvbnN0IG5haXZlTGVuZ3RoPSgpPT4xO2NsYXNzIExSVUNhY2hle2NvbnN0cnVjdG9yKHQpe2lmKHR5cGVvZiB0PT09XCJudW1iZXJcIil0PXttYXg6dH07aWYoIXQpdD17fTtpZih0Lm1heCYmKHR5cGVvZiB0Lm1heCE9PVwibnVtYmVyXCJ8fHQubWF4PDApKXRocm93IG5ldyBUeXBlRXJyb3IoXCJtYXggbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXJcIik7Y29uc3QgZT10aGlzW25dPXQubWF4fHxJbmZpbml0eTtjb25zdCBpPXQubGVuZ3RofHxuYWl2ZUxlbmd0aDt0aGlzW3JdPXR5cGVvZiBpIT09XCJmdW5jdGlvblwiP25haXZlTGVuZ3RoOmk7dGhpc1toXT10LnN0YWxlfHxmYWxzZTtpZih0Lm1heEFnZSYmdHlwZW9mIHQubWF4QWdlIT09XCJudW1iZXJcIil0aHJvdyBuZXcgVHlwZUVycm9yKFwibWF4QWdlIG11c3QgYmUgYSBudW1iZXJcIik7dGhpc1thXT10Lm1heEFnZXx8MDt0aGlzW29dPXQuZGlzcG9zZTt0aGlzW3VdPXQubm9EaXNwb3NlT25TZXR8fGZhbHNlO3RoaXNbdl09dC51cGRhdGVBZ2VPbkdldHx8ZmFsc2U7dGhpcy5yZXNldCgpfXNldCBtYXgodCl7aWYodHlwZW9mIHQhPT1cIm51bWJlclwifHx0PDApdGhyb3cgbmV3IFR5cGVFcnJvcihcIm1heCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlclwiKTt0aGlzW25dPXR8fEluZmluaXR5O3RyaW0odGhpcyl9Z2V0IG1heCgpe3JldHVybiB0aGlzW25dfXNldCBhbGxvd1N0YWxlKHQpe3RoaXNbaF09ISF0fWdldCBhbGxvd1N0YWxlKCl7cmV0dXJuIHRoaXNbaF19c2V0IG1heEFnZSh0KXtpZih0eXBlb2YgdCE9PVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm1heEFnZSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlclwiKTt0aGlzW2FdPXQ7dHJpbSh0aGlzKX1nZXQgbWF4QWdlKCl7cmV0dXJuIHRoaXNbYV19c2V0IGxlbmd0aENhbGN1bGF0b3IodCl7aWYodHlwZW9mIHQhPT1cImZ1bmN0aW9uXCIpdD1uYWl2ZUxlbmd0aDtpZih0IT09dGhpc1tyXSl7dGhpc1tyXT10O3RoaXNbbF09MDt0aGlzW2ZdLmZvckVhY2goKHQ9Pnt0Lmxlbmd0aD10aGlzW3JdKHQudmFsdWUsdC5rZXkpO3RoaXNbbF0rPXQubGVuZ3RofSkpfXRyaW0odGhpcyl9Z2V0IGxlbmd0aENhbGN1bGF0b3IoKXtyZXR1cm4gdGhpc1tyXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXNbbF19Z2V0IGl0ZW1Db3VudCgpe3JldHVybiB0aGlzW2ZdLmxlbmd0aH1yZm9yRWFjaCh0LGUpe2U9ZXx8dGhpcztmb3IobGV0IGk9dGhpc1tmXS50YWlsO2khPT1udWxsOyl7Y29uc3Qgcz1pLnByZXY7Zm9yRWFjaFN0ZXAodGhpcyx0LGksZSk7aT1zfX1mb3JFYWNoKHQsZSl7ZT1lfHx0aGlzO2ZvcihsZXQgaT10aGlzW2ZdLmhlYWQ7aSE9PW51bGw7KXtjb25zdCBzPWkubmV4dDtmb3JFYWNoU3RlcCh0aGlzLHQsaSxlKTtpPXN9fWtleXMoKXtyZXR1cm4gdGhpc1tmXS50b0FycmF5KCkubWFwKCh0PT50LmtleSkpfXZhbHVlcygpe3JldHVybiB0aGlzW2ZdLnRvQXJyYXkoKS5tYXAoKHQ9PnQudmFsdWUpKX1yZXNldCgpe2lmKHRoaXNbb10mJnRoaXNbZl0mJnRoaXNbZl0ubGVuZ3RoKXt0aGlzW2ZdLmZvckVhY2goKHQ9PnRoaXNbb10odC5rZXksdC52YWx1ZSkpKX10aGlzW3BdPW5ldyBNYXA7dGhpc1tmXT1uZXcgczt0aGlzW2xdPTB9ZHVtcCgpe3JldHVybiB0aGlzW2ZdLm1hcCgodD0+aXNTdGFsZSh0aGlzLHQpP2ZhbHNlOntrOnQua2V5LHY6dC52YWx1ZSxlOnQubm93Kyh0Lm1heEFnZXx8MCl9KSkudG9BcnJheSgpLmZpbHRlcigodD0+dCkpfWR1bXBMcnUoKXtyZXR1cm4gdGhpc1tmXX1zZXQodCxlLGkpe2k9aXx8dGhpc1thXTtpZihpJiZ0eXBlb2YgaSE9PVwibnVtYmVyXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIm1heEFnZSBtdXN0IGJlIGEgbnVtYmVyXCIpO2NvbnN0IHM9aT9EYXRlLm5vdygpOjA7Y29uc3QgaD10aGlzW3JdKGUsdCk7aWYodGhpc1twXS5oYXModCkpe2lmKGg+dGhpc1tuXSl7ZGVsKHRoaXMsdGhpc1twXS5nZXQodCkpO3JldHVybiBmYWxzZX1jb25zdCByPXRoaXNbcF0uZ2V0KHQpO2NvbnN0IGE9ci52YWx1ZTtpZih0aGlzW29dKXtpZighdGhpc1t1XSl0aGlzW29dKHQsYS52YWx1ZSl9YS5ub3c9czthLm1heEFnZT1pO2EudmFsdWU9ZTt0aGlzW2xdKz1oLWEubGVuZ3RoO2EubGVuZ3RoPWg7dGhpcy5nZXQodCk7dHJpbSh0aGlzKTtyZXR1cm4gdHJ1ZX1jb25zdCB2PW5ldyBFbnRyeSh0LGUsaCxzLGkpO2lmKHYubGVuZ3RoPnRoaXNbbl0pe2lmKHRoaXNbb10pdGhpc1tvXSh0LGUpO3JldHVybiBmYWxzZX10aGlzW2xdKz12Lmxlbmd0aDt0aGlzW2ZdLnVuc2hpZnQodik7dGhpc1twXS5zZXQodCx0aGlzW2ZdLmhlYWQpO3RyaW0odGhpcyk7cmV0dXJuIHRydWV9aGFzKHQpe2lmKCF0aGlzW3BdLmhhcyh0KSlyZXR1cm4gZmFsc2U7Y29uc3QgZT10aGlzW3BdLmdldCh0KS52YWx1ZTtyZXR1cm4haXNTdGFsZSh0aGlzLGUpfWdldCh0KXtyZXR1cm4gZ2V0KHRoaXMsdCx0cnVlKX1wZWVrKHQpe3JldHVybiBnZXQodGhpcyx0LGZhbHNlKX1wb3AoKXtjb25zdCB0PXRoaXNbZl0udGFpbDtpZighdClyZXR1cm4gbnVsbDtkZWwodGhpcyx0KTtyZXR1cm4gdC52YWx1ZX1kZWwodCl7ZGVsKHRoaXMsdGhpc1twXS5nZXQodCkpfWxvYWQodCl7dGhpcy5yZXNldCgpO2NvbnN0IGU9RGF0ZS5ub3coKTtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0wO2ktLSl7Y29uc3Qgcz10W2ldO2NvbnN0IG49cy5lfHwwO2lmKG49PT0wKXRoaXMuc2V0KHMuayxzLnYpO2Vsc2V7Y29uc3QgdD1uLWU7aWYodD4wKXt0aGlzLnNldChzLmsscy52LHQpfX19fXBydW5lKCl7dGhpc1twXS5mb3JFYWNoKCgodCxlKT0+Z2V0KHRoaXMsZSxmYWxzZSkpKX19Y29uc3QgZ2V0PSh0LGUsaSk9Pntjb25zdCBzPXRbcF0uZ2V0KGUpO2lmKHMpe2NvbnN0IGU9cy52YWx1ZTtpZihpc1N0YWxlKHQsZSkpe2RlbCh0LHMpO2lmKCF0W2hdKXJldHVybiB1bmRlZmluZWR9ZWxzZXtpZihpKXtpZih0W3ZdKXMudmFsdWUubm93PURhdGUubm93KCk7dFtmXS51bnNoaWZ0Tm9kZShzKX19cmV0dXJuIGUudmFsdWV9fTtjb25zdCBpc1N0YWxlPSh0LGUpPT57aWYoIWV8fCFlLm1heEFnZSYmIXRbYV0pcmV0dXJuIGZhbHNlO2NvbnN0IGk9RGF0ZS5ub3coKS1lLm5vdztyZXR1cm4gZS5tYXhBZ2U/aT5lLm1heEFnZTp0W2FdJiZpPnRbYV19O2NvbnN0IHRyaW09dD0+e2lmKHRbbF0+dFtuXSl7Zm9yKGxldCBlPXRbZl0udGFpbDt0W2xdPnRbbl0mJmUhPT1udWxsOyl7Y29uc3QgaT1lLnByZXY7ZGVsKHQsZSk7ZT1pfX19O2NvbnN0IGRlbD0odCxlKT0+e2lmKGUpe2NvbnN0IGk9ZS52YWx1ZTtpZih0W29dKXRbb10oaS5rZXksaS52YWx1ZSk7dFtsXS09aS5sZW5ndGg7dFtwXS5kZWxldGUoaS5rZXkpO3RbZl0ucmVtb3ZlTm9kZShlKX19O2NsYXNzIEVudHJ5e2NvbnN0cnVjdG9yKHQsZSxpLHMsbil7dGhpcy5rZXk9dDt0aGlzLnZhbHVlPWU7dGhpcy5sZW5ndGg9aTt0aGlzLm5vdz1zO3RoaXMubWF4QWdlPW58fDB9fWNvbnN0IGZvckVhY2hTdGVwPSh0LGUsaSxzKT0+e2xldCBuPWkudmFsdWU7aWYoaXNTdGFsZSh0LG4pKXtkZWwodCxpKTtpZighdFtoXSluPXVuZGVmaW5lZH1pZihuKWUuY2FsbChzLG4udmFsdWUsbi5rZXksdCl9O3QuZXhwb3J0cz1MUlVDYWNoZX0sNzY6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKigpe2ZvcihsZXQgdD10aGlzLmhlYWQ7dDt0PXQubmV4dCl7eWllbGQgdC52YWx1ZX19fX0sMTkwOih0LGUsaSk9Pnt0LmV4cG9ydHM9WWFsbGlzdDtZYWxsaXN0Lk5vZGU9Tm9kZTtZYWxsaXN0LmNyZWF0ZT1ZYWxsaXN0O2Z1bmN0aW9uIFlhbGxpc3QodCl7dmFyIGU9dGhpcztpZighKGUgaW5zdGFuY2VvZiBZYWxsaXN0KSl7ZT1uZXcgWWFsbGlzdH1lLnRhaWw9bnVsbDtlLmhlYWQ9bnVsbDtlLmxlbmd0aD0wO2lmKHQmJnR5cGVvZiB0LmZvckVhY2g9PT1cImZ1bmN0aW9uXCIpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSkpfWVsc2UgaWYoYXJndW1lbnRzLmxlbmd0aD4wKXtmb3IodmFyIGk9MCxzPWFyZ3VtZW50cy5sZW5ndGg7aTxzO2krKyl7ZS5wdXNoKGFyZ3VtZW50c1tpXSl9fXJldHVybiBlfVlhbGxpc3QucHJvdG90eXBlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7aWYodC5saXN0IT09dGhpcyl7dGhyb3cgbmV3IEVycm9yKFwicmVtb3Zpbmcgbm9kZSB3aGljaCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBsaXN0XCIpfXZhciBlPXQubmV4dDt2YXIgaT10LnByZXY7aWYoZSl7ZS5wcmV2PWl9aWYoaSl7aS5uZXh0PWV9aWYodD09PXRoaXMuaGVhZCl7dGhpcy5oZWFkPWV9aWYodD09PXRoaXMudGFpbCl7dGhpcy50YWlsPWl9dC5saXN0Lmxlbmd0aC0tO3QubmV4dD1udWxsO3QucHJldj1udWxsO3QubGlzdD1udWxsO3JldHVybiBlfTtZYWxsaXN0LnByb3RvdHlwZS51bnNoaWZ0Tm9kZT1mdW5jdGlvbih0KXtpZih0PT09dGhpcy5oZWFkKXtyZXR1cm59aWYodC5saXN0KXt0Lmxpc3QucmVtb3ZlTm9kZSh0KX12YXIgZT10aGlzLmhlYWQ7dC5saXN0PXRoaXM7dC5uZXh0PWU7aWYoZSl7ZS5wcmV2PXR9dGhpcy5oZWFkPXQ7aWYoIXRoaXMudGFpbCl7dGhpcy50YWlsPXR9dGhpcy5sZW5ndGgrK307WWFsbGlzdC5wcm90b3R5cGUucHVzaE5vZGU9ZnVuY3Rpb24odCl7aWYodD09PXRoaXMudGFpbCl7cmV0dXJufWlmKHQubGlzdCl7dC5saXN0LnJlbW92ZU5vZGUodCl9dmFyIGU9dGhpcy50YWlsO3QubGlzdD10aGlzO3QucHJldj1lO2lmKGUpe2UubmV4dD10fXRoaXMudGFpbD10O2lmKCF0aGlzLmhlYWQpe3RoaXMuaGVhZD10fXRoaXMubGVuZ3RoKyt9O1lhbGxpc3QucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPWFyZ3VtZW50cy5sZW5ndGg7dDxlO3QrKyl7cHVzaCh0aGlzLGFyZ3VtZW50c1t0XSl9cmV0dXJuIHRoaXMubGVuZ3RofTtZYWxsaXN0LnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT1hcmd1bWVudHMubGVuZ3RoO3Q8ZTt0Kyspe3Vuc2hpZnQodGhpcyxhcmd1bWVudHNbdF0pfXJldHVybiB0aGlzLmxlbmd0aH07WWFsbGlzdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7aWYoIXRoaXMudGFpbCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgdD10aGlzLnRhaWwudmFsdWU7dGhpcy50YWlsPXRoaXMudGFpbC5wcmV2O2lmKHRoaXMudGFpbCl7dGhpcy50YWlsLm5leHQ9bnVsbH1lbHNle3RoaXMuaGVhZD1udWxsfXRoaXMubGVuZ3RoLS07cmV0dXJuIHR9O1lhbGxpc3QucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuaGVhZCl7cmV0dXJuIHVuZGVmaW5lZH12YXIgdD10aGlzLmhlYWQudmFsdWU7dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0O2lmKHRoaXMuaGVhZCl7dGhpcy5oZWFkLnByZXY9bnVsbH1lbHNle3RoaXMudGFpbD1udWxsfXRoaXMubGVuZ3RoLS07cmV0dXJuIHR9O1lhbGxpc3QucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXtlPWV8fHRoaXM7Zm9yKHZhciBpPXRoaXMuaGVhZCxzPTA7aSE9PW51bGw7cysrKXt0LmNhbGwoZSxpLnZhbHVlLHMsdGhpcyk7aT1pLm5leHR9fTtZYWxsaXN0LnByb3RvdHlwZS5mb3JFYWNoUmV2ZXJzZT1mdW5jdGlvbih0LGUpe2U9ZXx8dGhpcztmb3IodmFyIGk9dGhpcy50YWlsLHM9dGhpcy5sZW5ndGgtMTtpIT09bnVsbDtzLS0pe3QuY2FsbChlLGkudmFsdWUscyx0aGlzKTtpPWkucHJldn19O1lhbGxpc3QucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMuaGVhZDtpIT09bnVsbCYmZTx0O2UrKyl7aT1pLm5leHR9aWYoZT09PXQmJmkhPT1udWxsKXtyZXR1cm4gaS52YWx1ZX19O1lhbGxpc3QucHJvdG90eXBlLmdldFJldmVyc2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10aGlzLnRhaWw7aSE9PW51bGwmJmU8dDtlKyspe2k9aS5wcmV2fWlmKGU9PT10JiZpIT09bnVsbCl7cmV0dXJuIGkudmFsdWV9fTtZYWxsaXN0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24odCxlKXtlPWV8fHRoaXM7dmFyIGk9bmV3IFlhbGxpc3Q7Zm9yKHZhciBzPXRoaXMuaGVhZDtzIT09bnVsbDspe2kucHVzaCh0LmNhbGwoZSxzLnZhbHVlLHRoaXMpKTtzPXMubmV4dH1yZXR1cm4gaX07WWFsbGlzdC5wcm90b3R5cGUubWFwUmV2ZXJzZT1mdW5jdGlvbih0LGUpe2U9ZXx8dGhpczt2YXIgaT1uZXcgWWFsbGlzdDtmb3IodmFyIHM9dGhpcy50YWlsO3MhPT1udWxsOyl7aS5wdXNoKHQuY2FsbChlLHMudmFsdWUsdGhpcykpO3M9cy5wcmV2fXJldHVybiBpfTtZYWxsaXN0LnByb3RvdHlwZS5yZWR1Y2U9ZnVuY3Rpb24odCxlKXt2YXIgaTt2YXIgcz10aGlzLmhlYWQ7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtpPWV9ZWxzZSBpZih0aGlzLmhlYWQpe3M9dGhpcy5oZWFkLm5leHQ7aT10aGlzLmhlYWQudmFsdWV9ZWxzZXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVkdWNlIG9mIGVtcHR5IGxpc3Qgd2l0aCBubyBpbml0aWFsIHZhbHVlXCIpfWZvcih2YXIgbj0wO3MhPT1udWxsO24rKyl7aT10KGkscy52YWx1ZSxuKTtzPXMubmV4dH1yZXR1cm4gaX07WWFsbGlzdC5wcm90b3R5cGUucmVkdWNlUmV2ZXJzZT1mdW5jdGlvbih0LGUpe3ZhciBpO3ZhciBzPXRoaXMudGFpbDtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2k9ZX1lbHNlIGlmKHRoaXMudGFpbCl7cz10aGlzLnRhaWwucHJldjtpPXRoaXMudGFpbC52YWx1ZX1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoXCJSZWR1Y2Ugb2YgZW1wdHkgbGlzdCB3aXRoIG5vIGluaXRpYWwgdmFsdWVcIil9Zm9yKHZhciBuPXRoaXMubGVuZ3RoLTE7cyE9PW51bGw7bi0tKXtpPXQoaSxzLnZhbHVlLG4pO3M9cy5wcmV2fXJldHVybiBpfTtZYWxsaXN0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGU9MCxpPXRoaXMuaGVhZDtpIT09bnVsbDtlKyspe3RbZV09aS52YWx1ZTtpPWkubmV4dH1yZXR1cm4gdH07WWFsbGlzdC5wcm90b3R5cGUudG9BcnJheVJldmVyc2U9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgZT0wLGk9dGhpcy50YWlsO2khPT1udWxsO2UrKyl7dFtlXT1pLnZhbHVlO2k9aS5wcmV2fXJldHVybiB0fTtZYWxsaXN0LnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe2U9ZXx8dGhpcy5sZW5ndGg7aWYoZTwwKXtlKz10aGlzLmxlbmd0aH10PXR8fDA7aWYodDwwKXt0Kz10aGlzLmxlbmd0aH12YXIgaT1uZXcgWWFsbGlzdDtpZihlPHR8fGU8MCl7cmV0dXJuIGl9aWYodDwwKXt0PTB9aWYoZT50aGlzLmxlbmd0aCl7ZT10aGlzLmxlbmd0aH1mb3IodmFyIHM9MCxuPXRoaXMuaGVhZDtuIT09bnVsbCYmczx0O3MrKyl7bj1uLm5leHR9Zm9yKDtuIT09bnVsbCYmczxlO3MrKyxuPW4ubmV4dCl7aS5wdXNoKG4udmFsdWUpfXJldHVybiBpfTtZYWxsaXN0LnByb3RvdHlwZS5zbGljZVJldmVyc2U9ZnVuY3Rpb24odCxlKXtlPWV8fHRoaXMubGVuZ3RoO2lmKGU8MCl7ZSs9dGhpcy5sZW5ndGh9dD10fHwwO2lmKHQ8MCl7dCs9dGhpcy5sZW5ndGh9dmFyIGk9bmV3IFlhbGxpc3Q7aWYoZTx0fHxlPDApe3JldHVybiBpfWlmKHQ8MCl7dD0wfWlmKGU+dGhpcy5sZW5ndGgpe2U9dGhpcy5sZW5ndGh9Zm9yKHZhciBzPXRoaXMubGVuZ3RoLG49dGhpcy50YWlsO24hPT1udWxsJiZzPmU7cy0tKXtuPW4ucHJldn1mb3IoO24hPT1udWxsJiZzPnQ7cy0tLG49bi5wcmV2KXtpLnB1c2gobi52YWx1ZSl9cmV0dXJuIGl9O1lhbGxpc3QucHJvdG90eXBlLnNwbGljZT1mdW5jdGlvbih0LGUpe2lmKHQ+dGhpcy5sZW5ndGgpe3Q9dGhpcy5sZW5ndGgtMX1pZih0PDApe3Q9dGhpcy5sZW5ndGgrdH1mb3IodmFyIGk9MCxzPXRoaXMuaGVhZDtzIT09bnVsbCYmaTx0O2krKyl7cz1zLm5leHR9dmFyIG49W107Zm9yKHZhciBpPTA7cyYmaTxlO2krKyl7bi5wdXNoKHMudmFsdWUpO3M9dGhpcy5yZW1vdmVOb2RlKHMpfWlmKHM9PT1udWxsKXtzPXRoaXMudGFpbH1pZihzIT09dGhpcy5oZWFkJiZzIT09dGhpcy50YWlsKXtzPXMucHJldn1mb3IodmFyIGk9MjtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXtzPWluc2VydCh0aGlzLHMsYXJndW1lbnRzW2ldKX1yZXR1cm4gbn07WWFsbGlzdC5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaGVhZDt2YXIgZT10aGlzLnRhaWw7Zm9yKHZhciBpPXQ7aSE9PW51bGw7aT1pLnByZXYpe3ZhciBzPWkucHJldjtpLnByZXY9aS5uZXh0O2kubmV4dD1zfXRoaXMuaGVhZD1lO3RoaXMudGFpbD10O3JldHVybiB0aGlzfTtmdW5jdGlvbiBpbnNlcnQodCxlLGkpe3ZhciBzPWU9PT10LmhlYWQ/bmV3IE5vZGUoaSxudWxsLGUsdCk6bmV3IE5vZGUoaSxlLGUubmV4dCx0KTtpZihzLm5leHQ9PT1udWxsKXt0LnRhaWw9c31pZihzLnByZXY9PT1udWxsKXt0LmhlYWQ9c310Lmxlbmd0aCsrO3JldHVybiBzfWZ1bmN0aW9uIHB1c2godCxlKXt0LnRhaWw9bmV3IE5vZGUoZSx0LnRhaWwsbnVsbCx0KTtpZighdC5oZWFkKXt0LmhlYWQ9dC50YWlsfXQubGVuZ3RoKyt9ZnVuY3Rpb24gdW5zaGlmdCh0LGUpe3QuaGVhZD1uZXcgTm9kZShlLG51bGwsdC5oZWFkLHQpO2lmKCF0LnRhaWwpe3QudGFpbD10LmhlYWR9dC5sZW5ndGgrK31mdW5jdGlvbiBOb2RlKHQsZSxpLHMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE5vZGUpKXtyZXR1cm4gbmV3IE5vZGUodCxlLGkscyl9dGhpcy5saXN0PXM7dGhpcy52YWx1ZT10O2lmKGUpe2UubmV4dD10aGlzO3RoaXMucHJldj1lfWVsc2V7dGhpcy5wcmV2PW51bGx9aWYoaSl7aS5wcmV2PXRoaXM7dGhpcy5uZXh0PWl9ZWxzZXt0aGlzLm5leHQ9bnVsbH19dHJ5e2koNzYpKFlhbGxpc3QpfWNhdGNoKHQpe319fTt2YXIgZT17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKGkpe3ZhciBzPWVbaV07aWYocyE9PXVuZGVmaW5lZCl7cmV0dXJuIHMuZXhwb3J0c312YXIgbj1lW2ldPXtleHBvcnRzOnt9fTt2YXIgbD10cnVlO3RyeXt0W2ldKG4sbi5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2w9ZmFsc2V9ZmluYWxseXtpZihsKWRlbGV0ZSBlW2ldfXJldHVybiBuLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBpPV9fbmNjd3Bja19yZXF1aXJlX18oODA2KTttb2R1bGUuZXhwb3J0cz1pfSkoKTsiXSwibmFtZXMiOlsidCIsImUiLCJpIiwicyIsIm4iLCJTeW1ib2wiLCJsIiwiciIsImgiLCJhIiwibyIsInUiLCJmIiwicCIsInYiLCJuYWl2ZUxlbmd0aCIsIkxSVUNhY2hlIiwiY29uc3RydWN0b3IiLCJtYXgiLCJUeXBlRXJyb3IiLCJJbmZpbml0eSIsImxlbmd0aCIsInN0YWxlIiwibWF4QWdlIiwiZGlzcG9zZSIsIm5vRGlzcG9zZU9uU2V0IiwidXBkYXRlQWdlT25HZXQiLCJyZXNldCIsInRyaW0iLCJhbGxvd1N0YWxlIiwibGVuZ3RoQ2FsY3VsYXRvciIsImZvckVhY2giLCJ2YWx1ZSIsImtleSIsIml0ZW1Db3VudCIsInJmb3JFYWNoIiwidGFpbCIsInByZXYiLCJmb3JFYWNoU3RlcCIsImhlYWQiLCJuZXh0Iiwia2V5cyIsInRvQXJyYXkiLCJtYXAiLCJ2YWx1ZXMiLCJNYXAiLCJkdW1wIiwiaXNTdGFsZSIsImsiLCJub3ciLCJmaWx0ZXIiLCJkdW1wTHJ1Iiwic2V0IiwiRGF0ZSIsImhhcyIsImRlbCIsImdldCIsIkVudHJ5IiwidW5zaGlmdCIsInBlZWsiLCJwb3AiLCJsb2FkIiwicHJ1bmUiLCJ1bmRlZmluZWQiLCJ1bnNoaWZ0Tm9kZSIsImRlbGV0ZSIsInJlbW92ZU5vZGUiLCJjYWxsIiwiZXhwb3J0cyIsInByb3RvdHlwZSIsIml0ZXJhdG9yIiwiWWFsbGlzdCIsIk5vZGUiLCJjcmVhdGUiLCJwdXNoIiwiYXJndW1lbnRzIiwibGlzdCIsIkVycm9yIiwicHVzaE5vZGUiLCJzaGlmdCIsImZvckVhY2hSZXZlcnNlIiwiZ2V0UmV2ZXJzZSIsIm1hcFJldmVyc2UiLCJyZWR1Y2UiLCJyZWR1Y2VSZXZlcnNlIiwiQXJyYXkiLCJ0b0FycmF5UmV2ZXJzZSIsInNsaWNlIiwic2xpY2VSZXZlcnNlIiwic3BsaWNlIiwiaW5zZXJ0IiwicmV2ZXJzZSIsIl9fbmNjd3Bja19yZXF1aXJlX18iLCJhYiIsIl9fZGlybmFtZSIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/lru-cache/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/native-url/index.js":
/*!*************************************************************!*\
!*** ./node_modules/next/dist/compiled/native-url/index.js ***!
\*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("var __dirname = \"/\";\n\n(function() {\n var e = {\n 452: function(e) {\n \"use strict\";\n e.exports = __webpack_require__(/*! next/dist/compiled/querystring-es3 */ \"(rsc)/./node_modules/next/dist/compiled/querystring-es3/index.js\");\n }\n };\n var t = {};\n function __nccwpck_require__(o) {\n var a = t[o];\n if (a !== undefined) {\n return a.exports;\n }\n var s = t[o] = {\n exports: {}\n };\n var n = true;\n try {\n e[o](s, s.exports, __nccwpck_require__);\n n = false;\n } finally{\n if (n) delete t[o];\n }\n return s.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var o = {};\n !function() {\n var e = o;\n var t, a = (t = __nccwpck_require__(452)) && \"object\" == typeof t && \"default\" in t ? t.default : t, s = /https?|ftp|gopher|file/;\n function r(e) {\n \"string\" == typeof e && (e = d(e));\n var t = function(e, t, o) {\n var a = e.auth, s = e.hostname, n = e.protocol || \"\", p = e.pathname || \"\", c = e.hash || \"\", i = e.query || \"\", u = !1;\n a = a ? encodeURIComponent(a).replace(/%3A/i, \":\") + \"@\" : \"\", e.host ? u = a + e.host : s && (u = a + (~s.indexOf(\":\") ? \"[\" + s + \"]\" : s), e.port && (u += \":\" + e.port)), i && \"object\" == typeof i && (i = t.encode(i));\n var f = e.search || i && \"?\" + i || \"\";\n return n && \":\" !== n.substr(-1) && (n += \":\"), e.slashes || (!n || o.test(n)) && !1 !== u ? (u = \"//\" + (u || \"\"), p && \"/\" !== p[0] && (p = \"/\" + p)) : u || (u = \"\"), c && \"#\" !== c[0] && (c = \"#\" + c), f && \"?\" !== f[0] && (f = \"?\" + f), {\n protocol: n,\n host: u,\n pathname: p = p.replace(/[?#]/g, encodeURIComponent),\n search: f = f.replace(\"#\", \"%23\"),\n hash: c\n };\n }(e, a, s);\n return \"\" + t.protocol + t.host + t.pathname + t.search + t.hash;\n }\n var n = \"http://\", p = \"w.w\", c = n + p, i = /^([a-z0-9.+-]*:\\/\\/\\/)([a-z0-9.+-]:\\/*)?/i, u = /https?|ftp|gopher|file/;\n function h(e, t) {\n var o = \"string\" == typeof e ? d(e) : e;\n e = \"object\" == typeof e ? r(e) : e;\n var a = d(t), s = \"\";\n o.protocol && !o.slashes && (s = o.protocol, e = e.replace(o.protocol, \"\"), s += \"/\" === t[0] || \"/\" === e[0] ? \"/\" : \"\"), s && a.protocol && (s = \"\", a.slashes || (s = a.protocol, t = t.replace(a.protocol, \"\")));\n var p = e.match(i);\n p && !a.protocol && (e = e.substr((s = p[1] + (p[2] || \"\")).length), /^\\/\\/[^/]/.test(t) && (s = s.slice(0, -1)));\n var f = new URL(e, c + \"/\"), m = new URL(t, f).toString().replace(c, \"\"), v = a.protocol || o.protocol;\n return v += o.slashes || a.slashes ? \"//\" : \"\", !s && v ? m = m.replace(n, v) : s && (m = m.replace(n, \"\")), u.test(m) || ~t.indexOf(\".\") || \"/\" === e.slice(-1) || \"/\" === t.slice(-1) || \"/\" !== m.slice(-1) || (m = m.slice(0, -1)), s && (m = s + (\"/\" === m[0] ? m.substr(1) : m)), m;\n }\n function l() {}\n l.prototype.parse = d, l.prototype.format = r, l.prototype.resolve = h, l.prototype.resolveObject = h;\n var f = /^https?|ftp|gopher|file/, m = /^(.*?)([#?].*)/, v = /^([a-z0-9.+-]*:)(\\/{0,3})(.*)/i, _ = /^([a-z0-9.+-]*:)?\\/\\/\\/*/i, b = /^([a-z0-9.+-]*:)(\\/{0,2})\\[(.*)\\]$/i;\n function d(e, t, o) {\n if (void 0 === t && (t = !1), void 0 === o && (o = !1), e && \"object\" == typeof e && e instanceof l) return e;\n var s = (e = e.trim()).match(m);\n e = s ? s[1].replace(/\\\\/g, \"/\") + s[2] : e.replace(/\\\\/g, \"/\"), b.test(e) && \"/\" !== e.slice(-1) && (e += \"/\");\n var n = !/(^javascript)/.test(e) && e.match(v), i = _.test(e), u = \"\";\n n && (f.test(n[1]) || (u = n[1].toLowerCase(), e = \"\" + n[2] + n[3]), n[2] || (i = !1, f.test(n[1]) ? (u = n[1], e = \"\" + n[3]) : e = \"//\" + n[3]), 3 !== n[2].length && 1 !== n[2].length || (u = n[1], e = \"/\" + n[3]));\n var g, y = (s ? s[1] : e).match(/^https?:\\/\\/[^/]+(:[0-9]+)(?=\\/|$)/), w = y && y[1], x = new l, C = \"\", U = \"\";\n try {\n g = new URL(e);\n } catch (t) {\n C = t, u || o || !/^\\/\\//.test(e) || /^\\/\\/.+[@.]/.test(e) || (U = \"/\", e = e.substr(1));\n try {\n g = new URL(e, c);\n } catch (e) {\n return x.protocol = u, x.href = u, x;\n }\n }\n x.slashes = i && !U, x.host = g.host === p ? \"\" : g.host, x.hostname = g.hostname === p ? \"\" : g.hostname.replace(/(\\[|\\])/g, \"\"), x.protocol = C ? u || null : g.protocol, x.search = g.search.replace(/\\\\/g, \"%5C\"), x.hash = g.hash.replace(/\\\\/g, \"%5C\");\n var j = e.split(\"#\");\n !x.search && ~j[0].indexOf(\"?\") && (x.search = \"?\"), x.hash || \"\" !== j[1] || (x.hash = \"#\"), x.query = t ? a.decode(g.search.substr(1)) : x.search.substr(1), x.pathname = U + (n ? function(e) {\n return e.replace(/['^|`]/g, function(e) {\n return \"%\" + e.charCodeAt().toString(16).toUpperCase();\n }).replace(/((?:%[0-9A-F]{2})+)/g, function(e, t) {\n try {\n return decodeURIComponent(t).split(\"\").map(function(e) {\n var t = e.charCodeAt();\n return t > 256 || /^[a-z0-9]$/i.test(e) ? e : \"%\" + t.toString(16).toUpperCase();\n }).join(\"\");\n } catch (e) {\n return t;\n }\n });\n }(g.pathname) : g.pathname), \"about:\" === x.protocol && \"blank\" === x.pathname && (x.protocol = \"\", x.pathname = \"\"), C && \"/\" !== e[0] && (x.pathname = x.pathname.substr(1)), u && !f.test(u) && \"/\" !== e.slice(-1) && \"/\" === x.pathname && (x.pathname = \"\"), x.path = x.pathname + x.search, x.auth = [\n g.username,\n g.password\n ].map(decodeURIComponent).filter(Boolean).join(\":\"), x.port = g.port, w && !x.host.endsWith(w) && (x.host += w, x.port = w.slice(1)), x.href = U ? \"\" + x.pathname + x.search + x.hash : r(x);\n var q = /^(file)/.test(x.href) ? [\n \"host\",\n \"hostname\"\n ] : [];\n return Object.keys(x).forEach(function(e) {\n ~q.indexOf(e) || (x[e] = x[e] || null);\n }), x;\n }\n e.parse = d, e.format = r, e.resolve = h, e.resolveObject = function(e, t) {\n return d(h(e, t));\n }, e.Url = l;\n }();\n module.exports = o;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL25hdGl2ZS11cmwvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7QUFBQztJQUFXLElBQUlBLElBQUU7UUFBQyxLQUFJLFNBQVNBLENBQUM7WUFBRTtZQUFhQSxFQUFFQyxPQUFPLEdBQUNDLG1CQUFPQSxDQUFDLDRHQUFvQztRQUFDO0lBQUM7SUFBRSxJQUFJQyxJQUFFLENBQUM7SUFBRSxTQUFTQyxvQkFBb0JDLENBQUM7UUFBRSxJQUFJQyxJQUFFSCxDQUFDLENBQUNFLEVBQUU7UUFBQyxJQUFHQyxNQUFJQyxXQUFVO1lBQUMsT0FBT0QsRUFBRUwsT0FBTztRQUFBO1FBQUMsSUFBSU8sSUFBRUwsQ0FBQyxDQUFDRSxFQUFFLEdBQUM7WUFBQ0osU0FBUSxDQUFDO1FBQUM7UUFBRSxJQUFJUSxJQUFFO1FBQUssSUFBRztZQUFDVCxDQUFDLENBQUNLLEVBQUUsQ0FBQ0csR0FBRUEsRUFBRVAsT0FBTyxFQUFDRztZQUFxQkssSUFBRTtRQUFLLFNBQVE7WUFBQyxJQUFHQSxHQUFFLE9BQU9OLENBQUMsQ0FBQ0UsRUFBRTtRQUFBO1FBQUMsT0FBT0csRUFBRVAsT0FBTztJQUFBO0lBQUMsSUFBRyxPQUFPRyx3QkFBc0IsYUFBWUEsb0JBQW9CTSxFQUFFLEdBQUNDLFNBQVNBLEdBQUM7SUFBSSxJQUFJTixJQUFFLENBQUM7SUFBRSxDQUFDO1FBQVcsSUFBSUwsSUFBRUs7UUFBRSxJQUFJRixHQUFFRyxJQUFFLENBQUNILElBQUVDLG9CQUFvQixJQUFHLEtBQUksWUFBVSxPQUFPRCxLQUFHLGFBQVlBLElBQUVBLEVBQUVTLE9BQU8sR0FBQ1QsR0FBRUssSUFBRTtRQUF5QixTQUFTSyxFQUFFYixDQUFDO1lBQUUsWUFBVSxPQUFPQSxLQUFJQSxDQUFBQSxJQUFFYyxFQUFFZCxFQUFDO1lBQUcsSUFBSUcsSUFBRSxTQUFTSCxDQUFDLEVBQUNHLENBQUMsRUFBQ0UsQ0FBQztnQkFBRSxJQUFJQyxJQUFFTixF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USxHQUFDc0MsRUFBRXpCLE1BQU0sR0FBQ3lCLEVBQUVwQyxJQUFJLEdBQUNSLEVBQUU0QztZQUFHLElBQUlrQixJQUFFLFVBQVV4QyxJQUFJLENBQUNzQixFQUFFRyxJQUFJLElBQUU7Z0JBQUM7Z0JBQU87YUFBVyxHQUFDLEVBQUU7WUFBQyxPQUFPZ0IsT0FBT0MsSUFBSSxDQUFDcEIsR0FBR3FCLE9BQU8sQ0FBRSxTQUFTOUUsQ0FBQztnQkFBRSxDQUFDMkUsRUFBRS9DLE9BQU8sQ0FBQzVCLE1BQUt5RCxDQUFBQSxDQUFDLENBQUN6RCxFQUFFLEdBQUN5RCxDQUFDLENBQUN6RCxFQUFFLElBQUUsSUFBRztZQUFFLElBQUl5RDtRQUFDO1FBQUN6RCxFQUFFOEMsS0FBSyxHQUFDaEMsR0FBRWQsRUFBRStDLE1BQU0sR0FBQ2xDLEdBQUViLEVBQUVnRCxPQUFPLEdBQUNaLEdBQUVwQyxFQUFFaUQsYUFBYSxHQUFDLFNBQVNqRCxDQUFDLEVBQUNHLENBQUM7WUFBRSxPQUFPVyxFQUFFc0IsRUFBRXBDLEdBQUVHO1FBQUcsR0FBRUgsRUFBRStFLEdBQUcsR0FBQ25DO0lBQUM7SUFBSW9DLE9BQU8vRSxPQUFPLEdBQUNJO0FBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9uYXRpdmUtdXJsL2luZGV4LmpzPzcyNDUiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIGU9ezQ1MjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9xdWVyeXN0cmluZy1lczNcIil9fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKG8pe3ZhciBhPXRbb107aWYoYSE9PXVuZGVmaW5lZCl7cmV0dXJuIGEuZXhwb3J0c312YXIgcz10W29dPXtleHBvcnRzOnt9fTt2YXIgbj10cnVlO3RyeXtlW29dKHMscy5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO249ZmFsc2V9ZmluYWxseXtpZihuKWRlbGV0ZSB0W29dfXJldHVybiBzLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBvPXt9OyFmdW5jdGlvbigpe3ZhciBlPW87dmFyIHQsYT0odD1fX25jY3dwY2tfcmVxdWlyZV9fKDQ1MikpJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJkZWZhdWx0XCJpbiB0P3QuZGVmYXVsdDp0LHM9L2h0dHBzP3xmdHB8Z29waGVyfGZpbGUvO2Z1bmN0aW9uIHIoZSl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPWQoZSkpO3ZhciB0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgYT1lLmF1dGgscz1lLmhvc3RuYW1lLG49ZS5wcm90b2NvbHx8XCJcIixwPWUucGF0aG5hbWV8fFwiXCIsYz1lLmhhc2h8fFwiXCIsaT1lLnF1ZXJ5fHxcIlwiLHU9ITE7YT1hP2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKC8lM0EvaSxcIjpcIikrXCJAXCI6XCJcIixlLmhvc3Q/dT1hK2UuaG9zdDpzJiYodT1hKyh+cy5pbmRleE9mKFwiOlwiKT9cIltcIitzK1wiXVwiOnMpLGUucG9ydCYmKHUrPVwiOlwiK2UucG9ydCkpLGkmJlwib2JqZWN0XCI9PXR5cGVvZiBpJiYoaT10LmVuY29kZShpKSk7dmFyIGY9ZS5zZWFyY2h8fGkmJlwiP1wiK2l8fFwiXCI7cmV0dXJuIG4mJlwiOlwiIT09bi5zdWJzdHIoLTEpJiYobis9XCI6XCIpLGUuc2xhc2hlc3x8KCFufHxvLnRlc3QobikpJiYhMSE9PXU/KHU9XCIvL1wiKyh1fHxcIlwiKSxwJiZcIi9cIiE9PXBbMF0mJihwPVwiL1wiK3ApKTp1fHwodT1cIlwiKSxjJiZcIiNcIiE9PWNbMF0mJihjPVwiI1wiK2MpLGYmJlwiP1wiIT09ZlswXSYmKGY9XCI/XCIrZikse3Byb3RvY29sOm4saG9zdDp1LHBhdGhuYW1lOnA9cC5yZXBsYWNlKC9bPyNdL2csZW5jb2RlVVJJQ29tcG9uZW50KSxzZWFyY2g6Zj1mLnJlcGxhY2UoXCIjXCIsXCIlMjNcIiksaGFzaDpjfX0oZSxhLHMpO3JldHVyblwiXCIrdC5wcm90b2NvbCt0Lmhvc3QrdC5wYXRobmFtZSt0LnNlYXJjaCt0Lmhhc2h9dmFyIG49XCJodHRwOi8vXCIscD1cIncud1wiLGM9bitwLGk9L14oW2EtejAtOS4rLV0qOlxcL1xcL1xcLykoW2EtejAtOS4rLV06XFwvKik/L2ksdT0vaHR0cHM/fGZ0cHxnb3BoZXJ8ZmlsZS87ZnVuY3Rpb24gaChlLHQpe3ZhciBvPVwic3RyaW5nXCI9PXR5cGVvZiBlP2QoZSk6ZTtlPVwib2JqZWN0XCI9PXR5cGVvZiBlP3IoZSk6ZTt2YXIgYT1kKHQpLHM9XCJcIjtvLnByb3RvY29sJiYhby5zbGFzaGVzJiYocz1vLnByb3RvY29sLGU9ZS5yZXBsYWNlKG8ucHJvdG9jb2wsXCJcIikscys9XCIvXCI9PT10WzBdfHxcIi9cIj09PWVbMF0/XCIvXCI6XCJcIikscyYmYS5wcm90b2NvbCYmKHM9XCJcIixhLnNsYXNoZXN8fChzPWEucHJvdG9jb2wsdD10LnJlcGxhY2UoYS5wcm90b2NvbCxcIlwiKSkpO3ZhciBwPWUubWF0Y2goaSk7cCYmIWEucHJvdG9jb2wmJihlPWUuc3Vic3RyKChzPXBbMV0rKHBbMl18fFwiXCIpKS5sZW5ndGgpLC9eXFwvXFwvW14vXS8udGVzdCh0KSYmKHM9cy5zbGljZSgwLC0xKSkpO3ZhciBmPW5ldyBVUkwoZSxjK1wiL1wiKSxtPW5ldyBVUkwodCxmKS50b1N0cmluZygpLnJlcGxhY2UoYyxcIlwiKSx2PWEucHJvdG9jb2x8fG8ucHJvdG9jb2w7cmV0dXJuIHYrPW8uc2xhc2hlc3x8YS5zbGFzaGVzP1wiLy9cIjpcIlwiLCFzJiZ2P209bS5yZXBsYWNlKG4sdik6cyYmKG09bS5yZXBsYWNlKG4sXCJcIikpLHUudGVzdChtKXx8fnQuaW5kZXhPZihcIi5cIil8fFwiL1wiPT09ZS5zbGljZSgtMSl8fFwiL1wiPT09dC5zbGljZSgtMSl8fFwiL1wiIT09bS5zbGljZSgtMSl8fChtPW0uc2xpY2UoMCwtMSkpLHMmJihtPXMrKFwiL1wiPT09bVswXT9tLnN1YnN0cigxKTptKSksbX1mdW5jdGlvbiBsKCl7fWwucHJvdG90eXBlLnBhcnNlPWQsbC5wcm90b3R5cGUuZm9ybWF0PXIsbC5wcm90b3R5cGUucmVzb2x2ZT1oLGwucHJvdG90eXBlLnJlc29sdmVPYmplY3Q9aDt2YXIgZj0vXmh0dHBzP3xmdHB8Z29waGVyfGZpbGUvLG09L14oLio/KShbIz9dLiopLyx2PS9eKFthLXowLTkuKy1dKjopKFxcL3swLDN9KSguKikvaSxfPS9eKFthLXowLTkuKy1dKjopP1xcL1xcL1xcLyovaSxiPS9eKFthLXowLTkuKy1dKjopKFxcL3swLDJ9KVxcWyguKilcXF0kL2k7ZnVuY3Rpb24gZChlLHQsbyl7aWYodm9pZCAwPT09dCYmKHQ9ITEpLHZvaWQgMD09PW8mJihvPSExKSxlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZSBpbnN0YW5jZW9mIGwpcmV0dXJuIGU7dmFyIHM9KGU9ZS50cmltKCkpLm1hdGNoKG0pO2U9cz9zWzFdLnJlcGxhY2UoL1xcXFwvZyxcIi9cIikrc1syXTplLnJlcGxhY2UoL1xcXFwvZyxcIi9cIiksYi50ZXN0KGUpJiZcIi9cIiE9PWUuc2xpY2UoLTEpJiYoZSs9XCIvXCIpO3ZhciBuPSEvKF5qYXZhc2NyaXB0KS8udGVzdChlKSYmZS5tYXRjaCh2KSxpPV8udGVzdChlKSx1PVwiXCI7biYmKGYudGVzdChuWzFdKXx8KHU9blsxXS50b0xvd2VyQ2FzZSgpLGU9XCJcIituWzJdK25bM10pLG5bMl18fChpPSExLGYudGVzdChuWzFdKT8odT1uWzFdLGU9XCJcIituWzNdKTplPVwiLy9cIituWzNdKSwzIT09blsyXS5sZW5ndGgmJjEhPT1uWzJdLmxlbmd0aHx8KHU9blsxXSxlPVwiL1wiK25bM10pKTt2YXIgZyx5PShzP3NbMV06ZSkubWF0Y2goL15odHRwcz86XFwvXFwvW14vXSsoOlswLTldKykoPz1cXC98JCkvKSx3PXkmJnlbMV0seD1uZXcgbCxDPVwiXCIsVT1cIlwiO3RyeXtnPW5ldyBVUkwoZSl9Y2F0Y2godCl7Qz10LHV8fG98fCEvXlxcL1xcLy8udGVzdChlKXx8L15cXC9cXC8uK1tALl0vLnRlc3QoZSl8fChVPVwiL1wiLGU9ZS5zdWJzdHIoMSkpO3RyeXtnPW5ldyBVUkwoZSxjKX1jYXRjaChlKXtyZXR1cm4geC5wcm90b2NvbD11LHguaHJlZj11LHh9fXguc2xhc2hlcz1pJiYhVSx4Lmhvc3Q9Zy5ob3N0PT09cD9cIlwiOmcuaG9zdCx4Lmhvc3RuYW1lPWcuaG9zdG5hbWU9PT1wP1wiXCI6Zy5ob3N0bmFtZS5yZXBsYWNlKC8oXFxbfFxcXSkvZyxcIlwiKSx4LnByb3RvY29sPUM/dXx8bnVsbDpnLnByb3RvY29sLHguc2VhcmNoPWcuc2VhcmNoLnJlcGxhY2UoL1xcXFwvZyxcIiU1Q1wiKSx4Lmhhc2g9Zy5oYXNoLnJlcGxhY2UoL1xcXFwvZyxcIiU1Q1wiKTt2YXIgaj1lLnNwbGl0KFwiI1wiKTsheC5zZWFyY2gmJn5qWzBdLmluZGV4T2YoXCI/XCIpJiYoeC5zZWFyY2g9XCI/XCIpLHguaGFzaHx8XCJcIiE9PWpbMV18fCh4Lmhhc2g9XCIjXCIpLHgucXVlcnk9dD9hLmRlY29kZShnLnNlYXJjaC5zdWJzdHIoMSkpOnguc2VhcmNoLnN1YnN0cigxKSx4LnBhdGhuYW1lPVUrKG4/ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWydefGBdL2csKGZ1bmN0aW9uKGUpe3JldHVyblwiJVwiK2UuY2hhckNvZGVBdCgpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSkpLnJlcGxhY2UoLygoPzolWzAtOUEtRl17Mn0pKykvZywoZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0KS5zcGxpdChcIlwiKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgpO3JldHVybiB0PjI1Nnx8L15bYS16MC05XSQvaS50ZXN0KGUpP2U6XCIlXCIrdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0pKS5qb2luKFwiXCIpfWNhdGNoKGUpe3JldHVybiB0fX0pKX0oZy5wYXRobmFtZSk6Zy5wYXRobmFtZSksXCJhYm91dDpcIj09PXgucHJvdG9jb2wmJlwiYmxhbmtcIj09PXgucGF0aG5hbWUmJih4LnByb3RvY29sPVwiXCIseC5wYXRobmFtZT1cIlwiKSxDJiZcIi9cIiE9PWVbMF0mJih4LnBhdGhuYW1lPXgucGF0aG5hbWUuc3Vic3RyKDEpKSx1JiYhZi50ZXN0KHUpJiZcIi9cIiE9PWUuc2xpY2UoLTEpJiZcIi9cIj09PXgucGF0aG5hbWUmJih4LnBhdGhuYW1lPVwiXCIpLHgucGF0aD14LnBhdGhuYW1lK3guc2VhcmNoLHguYXV0aD1bZy51c2VybmFtZSxnLnBhc3N3b3JkXS5tYXAoZGVjb2RlVVJJQ29tcG9uZW50KS5maWx0ZXIoQm9vbGVhbikuam9pbihcIjpcIikseC5wb3J0PWcucG9ydCx3JiYheC5ob3N0LmVuZHNXaXRoKHcpJiYoeC5ob3N0Kz13LHgucG9ydD13LnNsaWNlKDEpKSx4LmhyZWY9VT9cIlwiK3gucGF0aG5hbWUreC5zZWFyY2greC5oYXNoOnIoeCk7dmFyIHE9L14oZmlsZSkvLnRlc3QoeC5ocmVmKT9bXCJob3N0XCIsXCJob3N0bmFtZVwiXTpbXTtyZXR1cm4gT2JqZWN0LmtleXMoeCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7fnEuaW5kZXhPZihlKXx8KHhbZV09eFtlXXx8bnVsbCl9KSkseH1lLnBhcnNlPWQsZS5mb3JtYXQ9cixlLnJlc29sdmU9aCxlLnJlc29sdmVPYmplY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChoKGUsdCkpfSxlLlVybD1sfSgpO21vZHVsZS5leHBvcnRzPW99KSgpOyJdLCJuYW1lcyI6WyJlIiwiZXhwb3J0cyIsInJlcXVpcmUiLCJ0IiwiX19uY2N3cGNrX3JlcXVpcmVfXyIsIm8iLCJhIiwidW5kZWZpbmVkIiwicyIsIm4iLCJhYiIsIl9fZGlybmFtZSIsImRlZmF1bHQiLCJyIiwiZCIsImF1dGgiLCJob3N0bmFtZSIsInByb3RvY29sIiwicCIsInBhdGhuYW1lIiwiYyIsImhhc2giLCJpIiwicXVlcnkiLCJ1IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsImhvc3QiLCJpbmRleE9mIiwicG9ydCIsImVuY29kZSIsImYiLCJzZWFyY2giLCJzdWJzdHIiLCJzbGFzaGVzIiwidGVzdCIsImgiLCJtYXRjaCIsImxlbmd0aCIsInNsaWNlIiwiVVJMIiwibSIsInRvU3RyaW5nIiwidiIsImwiLCJwcm90b3R5cGUiLCJwYXJzZSIsImZvcm1hdCIsInJlc29sdmUiLCJyZXNvbHZlT2JqZWN0IiwiXyIsImIiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJnIiwieSIsInciLCJ4IiwiQyIsIlUiLCJocmVmIiwiaiIsInNwbGl0IiwiZGVjb2RlIiwiY2hhckNvZGVBdCIsInRvVXBwZXJDYXNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwibWFwIiwiam9pbiIsInBhdGgiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImVuZHNXaXRoIiwicSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiVXJsIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/native-url/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/path-browserify/index.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/compiled/path-browserify/index.js ***!
\******************************************************************/
/***/ ((module) => {
"use strict";
eval("var __dirname = \"/\";\n\n(function() {\n \"use strict\";\n var e = {\n 114: function(e) {\n function assertPath(e) {\n if (typeof e !== \"string\") {\n throw new TypeError(\"Path must be a string. Received \" + JSON.stringify(e));\n }\n }\n function normalizeStringPosix(e, r) {\n var t = \"\";\n var i = 0;\n var n = -1;\n var a = 0;\n var f;\n for(var l = 0; l <= e.length; ++l){\n if (l < e.length) f = e.charCodeAt(l);\n else if (f === 47) break;\n else f = 47;\n if (f === 47) {\n if (n === l - 1 || a === 1) {} else if (n !== l - 1 && a === 2) {\n if (t.length < 2 || i !== 2 || t.charCodeAt(t.length - 1) !== 46 || t.charCodeAt(t.length - 2) !== 46) {\n if (t.length > 2) {\n var s = t.lastIndexOf(\"/\");\n if (s !== t.length - 1) {\n if (s === -1) {\n t = \"\";\n i = 0;\n } else {\n t = t.slice(0, s);\n i = t.length - 1 - t.lastIndexOf(\"/\");\n }\n n = l;\n a = 0;\n continue;\n }\n } else if (t.length === 2 || t.length === 1) {\n t = \"\";\n i = 0;\n n = l;\n a = 0;\n continue;\n }\n }\n if (r) {\n if (t.length > 0) t += \"/..\";\n else t = \"..\";\n i = 2;\n }\n } else {\n if (t.length > 0) t += \"/\" + e.slice(n + 1, l);\n else t = e.slice(n + 1, l);\n i = l - n - 1;\n }\n n = l;\n a = 0;\n } else if (f === 46 && a !== -1) {\n ++a;\n } else {\n a = -1;\n }\n }\n return t;\n }\n function _format(e, r) {\n var t = r.dir || r.root;\n var i = r.base || (r.name || \"\") + (r.ext || \"\");\n if (!t) {\n return i;\n }\n if (t === r.root) {\n return t + i;\n }\n return t + e + i;\n }\n var r = {\n resolve: function resolve() {\n var e = \"\";\n var r = false;\n var t;\n for(var i = arguments.length - 1; i >= -1 && !r; i--){\n var n;\n if (i >= 0) n = arguments[i];\n else {\n if (t === undefined) t = \"\";\n n = t;\n }\n assertPath(n);\n if (n.length === 0) {\n continue;\n }\n e = n + \"/\" + e;\n r = n.charCodeAt(0) === 47;\n }\n e = normalizeStringPosix(e, !r);\n if (r) {\n if (e.length > 0) return \"/\" + e;\n else return \"/\";\n } else if (e.length > 0) {\n return e;\n } else {\n return \".\";\n }\n },\n normalize: function normalize(e) {\n assertPath(e);\n if (e.length === 0) return \".\";\n var r = e.charCodeAt(0) === 47;\n var t = e.charCodeAt(e.length - 1) === 47;\n e = normalizeStringPosix(e, !r);\n if (e.length === 0 && !r) e = \".\";\n if (e.length > 0 && t) e += \"/\";\n if (r) return \"/\" + e;\n return e;\n },\n isAbsolute: function isAbsolute(e) {\n assertPath(e);\n return e.length > 0 && e.charCodeAt(0) === 47;\n },\n join: function join() {\n if (arguments.length === 0) return \".\";\n var e;\n for(var t = 0; t < arguments.length; ++t){\n var i = arguments[t];\n assertPath(i);\n if (i.length > 0) {\n if (e === undefined) e = i;\n else e += \"/\" + i;\n }\n }\n if (e === undefined) return \".\";\n return r.normalize(e);\n },\n relative: function relative(e, t) {\n assertPath(e);\n assertPath(t);\n if (e === t) return \"\";\n e = r.resolve(e);\n t = r.resolve(t);\n if (e === t) return \"\";\n var i = 1;\n for(; i < e.length; ++i){\n if (e.charCodeAt(i) !== 47) break;\n }\n var n = e.length;\n var a = n - i;\n var f = 1;\n for(; f < t.length; ++f){\n if (t.charCodeAt(f) !== 47) break;\n }\n var l = t.length;\n var s = l - f;\n var o = a < s ? a : s;\n var u = -1;\n var h = 0;\n for(; h <= o; ++h){\n if (h === o) {\n if (s > o) {\n if (t.charCodeAt(f + h) === 47) {\n return t.slice(f + h + 1);\n } else if (h === 0) {\n return t.slice(f + h);\n }\n } else if (a > o) {\n if (e.charCodeAt(i + h) === 47) {\n u = h;\n } else if (h === 0) {\n u = 0;\n }\n }\n break;\n }\n var c = e.charCodeAt(i + h);\n var v = t.charCodeAt(f + h);\n if (c !== v) break;\n else if (c === 47) u = h;\n }\n var g = \"\";\n for(h = i + u + 1; h <= n; ++h){\n if (h === n || e.charCodeAt(h) === 47) {\n if (g.length === 0) g += \"..\";\n else g += \"/..\";\n }\n }\n if (g.length > 0) return g + t.slice(f + u);\n else {\n f += u;\n if (t.charCodeAt(f) === 47) ++f;\n return t.slice(f);\n }\n },\n _makeLong: function _makeLong(e) {\n return e;\n },\n dirname: function dirname(e) {\n assertPath(e);\n if (e.length === 0) return \".\";\n var r = e.charCodeAt(0);\n var t = r === 47;\n var i = -1;\n var n = true;\n for(var a = e.length - 1; a >= 1; --a){\n r = e.charCodeAt(a);\n if (r === 47) {\n if (!n) {\n i = a;\n break;\n }\n } else {\n n = false;\n }\n }\n if (i === -1) return t ? \"/\" : \".\";\n if (t && i === 1) return \"//\";\n return e.slice(0, i);\n },\n basename: function basename(e, r) {\n if (r !== undefined && typeof r !== \"string\") throw new TypeError('\"ext\" argument must be a string');\n assertPath(e);\n var t = 0;\n var i = -1;\n var n = true;\n var a;\n if (r !== undefined && r.length > 0 && r.length <= e.length) {\n if (r.length === e.length && r === e) return \"\";\n var f = r.length - 1;\n var l = -1;\n for(a = e.length - 1; a >= 0; --a){\n var s = e.charCodeAt(a);\n if (s === 47) {\n if (!n) {\n t = a + 1;\n break;\n }\n } else {\n if (l === -1) {\n n = false;\n l = a + 1;\n }\n if (f >= 0) {\n if (s === r.charCodeAt(f)) {\n if (--f === -1) {\n i = a;\n }\n } else {\n f = -1;\n i = l;\n }\n }\n }\n }\n if (t === i) i = l;\n else if (i === -1) i = e.length;\n return e.slice(t, i);\n } else {\n for(a = e.length - 1; a >= 0; --a){\n if (e.charCodeAt(a) === 47) {\n if (!n) {\n t = a + 1;\n break;\n }\n } else if (i === -1) {\n n = false;\n i = a + 1;\n }\n }\n if (i === -1) return \"\";\n return e.slice(t, i);\n }\n },\n extname: function extname(e) {\n assertPath(e);\n var r = -1;\n var t = 0;\n var i = -1;\n var n = true;\n var a = 0;\n for(var f = e.length - 1; f >= 0; --f){\n var l = e.charCodeAt(f);\n if (l === 47) {\n if (!n) {\n t = f + 1;\n break;\n }\n continue;\n }\n if (i === -1) {\n n = false;\n i = f + 1;\n }\n if (l === 46) {\n if (r === -1) r = f;\n else if (a !== 1) a = 1;\n } else if (r !== -1) {\n a = -1;\n }\n }\n if (r === -1 || i === -1 || a === 0 || a === 1 && r === i - 1 && r === t + 1) {\n return \"\";\n }\n return e.slice(r, i);\n },\n format: function format(e) {\n if (e === null || typeof e !== \"object\") {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof e);\n }\n return _format(\"/\", e);\n },\n parse: function parse(e) {\n assertPath(e);\n var r = {\n root: \"\",\n dir: \"\",\n base: \"\",\n ext: \"\",\n name: \"\"\n };\n if (e.length === 0) return r;\n var t = e.charCodeAt(0);\n var i = t === 47;\n var n;\n if (i) {\n r.root = \"/\";\n n = 1;\n } else {\n n = 0;\n }\n var a = -1;\n var f = 0;\n var l = -1;\n var s = true;\n var o = e.length - 1;\n var u = 0;\n for(; o >= n; --o){\n t = e.charCodeAt(o);\n if (t === 47) {\n if (!s) {\n f = o + 1;\n break;\n }\n continue;\n }\n if (l === -1) {\n s = false;\n l = o + 1;\n }\n if (t === 46) {\n if (a === -1) a = o;\n else if (u !== 1) u = 1;\n } else if (a !== -1) {\n u = -1;\n }\n }\n if (a === -1 || l === -1 || u === 0 || u === 1 && a === l - 1 && a === f + 1) {\n if (l !== -1) {\n if (f === 0 && i) r.base = r.name = e.slice(1, l);\n else r.base = r.name = e.slice(f, l);\n }\n } else {\n if (f === 0 && i) {\n r.name = e.slice(1, a);\n r.base = e.slice(1, l);\n } else {\n r.name = e.slice(f, a);\n r.base = e.slice(f, l);\n }\n r.ext = e.slice(a, l);\n }\n if (f > 0) r.dir = e.slice(0, f - 1);\n else if (i) r.dir = \"/\";\n return r;\n },\n sep: \"/\",\n delimiter: \":\",\n win32: null,\n posix: null\n };\n r.posix = r;\n e.exports = r;\n }\n };\n var r = {};\n function __nccwpck_require__(t) {\n var i = r[t];\n if (i !== undefined) {\n return i.exports;\n }\n var n = r[t] = {\n exports: {}\n };\n var a = true;\n try {\n e[t](n, n.exports, __nccwpck_require__);\n a = false;\n } finally{\n if (a) delete r[t];\n }\n return n.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var t = __nccwpck_require__(114);\n module.exports = t;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOztBQUFDO0lBQVc7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSSxTQUFTQSxDQUFDO1lBQUUsU0FBU0MsV0FBV0QsQ0FBQztnQkFBRSxJQUFHLE9BQU9BLE1BQUksVUFBUztvQkFBQyxNQUFNLElBQUlFLFVBQVUscUNBQW1DQyxLQUFLQyxTQUFTLENBQUNKO2dCQUFHO1lBQUM7WUFBQyxTQUFTSyxxQkFBcUJMLENBQUMsRUFBQ00sQ0FBQztnQkFBRSxJQUFJQyxJQUFFO2dCQUFHLElBQUlDLElBQUU7Z0JBQUUsSUFBSUMsSUFBRSxDQUFDO2dCQUFFLElBQUlDLElBQUU7Z0JBQUUsSUFBSUM7Z0JBQUUsSUFBSSxJQUFJQyxJQUFFLEdBQUVBLEtBQUdaLEVBQUVhLE1BQU0sRUFBQyxFQUFFRCxFQUFFO29CQUFDLElBQUdBLElBQUVaLEVBQUVhLE1BQU0sRUFBQ0YsSUFBRVgsRUFBRWMsVUFBVSxDQUFDRjt5QkFBUSxJQUFHRCxNQUFJLElBQUc7eUJBQVdBLElBQUU7b0JBQUcsSUFBR0EsTUFBSSxJQUFHO3dCQUFDLElBQUdGLE1BQUlHLElBQUUsS0FBR0YsTUFBSSxHQUFFLENBQUMsT0FBTSxJQUFHRCxNQUFJRyxJQUFFLEtBQUdGLE1BQUksR0FBRTs0QkFBQyxJQUFHSCxFQUFFTSxNQUFNLEdBQUMsS0FBR0wsTUFBSSxLQUFHRCxFQUFFTyxVQUFVLENBQUNQLEVBQUVNLE1BQU0sR0FBQyxPQUFLLE1BQUlOLEVBQUVPLFVBQVUsQ0FBQ1AsRUFBRU0sTUFBTSxHQUFDLE9BQUssSUFBRztnQ0FBQyxJQUFHTixFQUFFTSxNQUFNLEdBQUMsR0FBRTtvQ0FBQyxJQUFJRSxJQUFFUixFQUFFUyxXQUFXLENBQUM7b0NBQUssSUFBR0QsTUFBSVIsRUFBRU0sTUFBTSxHQUFDLEdBQUU7d0NBQUMsSUFBR0UsTUFBSSxDQUFDLEdBQUU7NENB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Q3pDO1FBQUM7SUFBQztJQUFFLElBQUlBLElBQUUsQ0FBQztJQUFFLFNBQVMwQyxvQkFBb0J6QyxDQUFDO1FBQUUsSUFBSUMsSUFBRUYsQ0FBQyxDQUFDQyxFQUFFO1FBQUMsSUFBR0MsTUFBSWtCLFdBQVU7WUFBQyxPQUFPbEIsRUFBRXVDLE9BQU87UUFBQTtRQUFDLElBQUl0QyxJQUFFSCxDQUFDLENBQUNDLEVBQUUsR0FBQztZQUFDd0MsU0FBUSxDQUFDO1FBQUM7UUFBRSxJQUFJckMsSUFBRTtRQUFLLElBQUc7WUFBQ1YsQ0FBQyxDQUFDTyxFQUFFLENBQUNFLEdBQUVBLEVBQUVzQyxPQUFPLEVBQUNDO1lBQXFCdEMsSUFBRTtRQUFLLFNBQVE7WUFBQyxJQUFHQSxHQUFFLE9BQU9KLENBQUMsQ0FBQ0MsRUFBRTtRQUFBO1FBQUMsT0FBT0UsRUFBRXNDLE9BQU87SUFBQTtJQUFDLElBQUcsT0FBT0Msd0JBQXNCLGFBQVlBLG9CQUFvQkMsRUFBRSxHQUFDQyxTQUFTQSxHQUFDO0lBQUksSUFBSTNDLElBQUV5QyxvQkFBb0I7SUFBS0csT0FBT0osT0FBTyxHQUFDeEM7QUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcz8zY2QxIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXsxMTQ6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYXNzZXJ0UGF0aChlKXtpZih0eXBlb2YgZSE9PVwic3RyaW5nXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIFwiK0pTT04uc3RyaW5naWZ5KGUpKX19ZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nUG9zaXgoZSxyKXt2YXIgdD1cIlwiO3ZhciBpPTA7dmFyIG49LTE7dmFyIGE9MDt2YXIgZjtmb3IodmFyIGw9MDtsPD1lLmxlbmd0aDsrK2wpe2lmKGw8ZS5sZW5ndGgpZj1lLmNoYXJDb2RlQXQobCk7ZWxzZSBpZihmPT09NDcpYnJlYWs7ZWxzZSBmPTQ3O2lmKGY9PT00Nyl7aWYobj09PWwtMXx8YT09PTEpe31lbHNlIGlmKG4hPT1sLTEmJmE9PT0yKXtpZih0Lmxlbmd0aDwyfHxpIT09Mnx8dC5jaGFyQ29kZUF0KHQubGVuZ3RoLTEpIT09NDZ8fHQuY2hhckNvZGVBdCh0Lmxlbmd0aC0yKSE9PTQ2KXtpZih0Lmxlbmd0aD4yKXt2YXIgcz10Lmxhc3RJbmRleE9mKFwiL1wiKTtpZihzIT09dC5sZW5ndGgtMSl7aWYocz09PS0xKXt0PVwiXCI7aT0wfWVsc2V7dD10LnNsaWNlKDAscyk7aT10Lmxlbmd0aC0xLXQubGFzdEluZGV4T2YoXCIvXCIpfW49bDthPTA7Y29udGludWV9fWVsc2UgaWYodC5sZW5ndGg9PT0yfHx0Lmxlbmd0aD09PTEpe3Q9XCJcIjtpPTA7bj1sO2E9MDtjb250aW51ZX19aWYocil7aWYodC5sZW5ndGg+MCl0Kz1cIi8uLlwiO2Vsc2UgdD1cIi4uXCI7aT0yfX1lbHNle2lmKHQubGVuZ3RoPjApdCs9XCIvXCIrZS5zbGljZShuKzEsbCk7ZWxzZSB0PWUuc2xpY2UobisxLGwpO2k9bC1uLTF9bj1sO2E9MH1lbHNlIGlmKGY9PT00NiYmYSE9PS0xKXsrK2F9ZWxzZXthPS0xfX1yZXR1cm4gdH1mdW5jdGlvbiBfZm9ybWF0KGUscil7dmFyIHQ9ci5kaXJ8fHIucm9vdDt2YXIgaT1yLmJhc2V8fChyLm5hbWV8fFwiXCIpKyhyLmV4dHx8XCJcIik7aWYoIXQpe3JldHVybiBpfWlmKHQ9PT1yLnJvb3Qpe3JldHVybiB0K2l9cmV0dXJuIHQrZStpfXZhciByPXtyZXNvbHZlOmZ1bmN0aW9uIHJlc29sdmUoKXt2YXIgZT1cIlwiO3ZhciByPWZhbHNlO3ZhciB0O2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTE7aT49LTEmJiFyO2ktLSl7dmFyIG47aWYoaT49MCluPWFyZ3VtZW50c1tpXTtlbHNle2lmKHQ9PT11bmRlZmluZWQpdD1cIlwiO249dH1hc3NlcnRQYXRoKG4pO2lmKG4ubGVuZ3RoPT09MCl7Y29udGludWV9ZT1uK1wiL1wiK2U7cj1uLmNoYXJDb2RlQXQoMCk9PT00N31lPW5vcm1hbGl6ZVN0cmluZ1Bvc2l4KGUsIXIpO2lmKHIpe2lmKGUubGVuZ3RoPjApcmV0dXJuXCIvXCIrZTtlbHNlIHJldHVyblwiL1wifWVsc2UgaWYoZS5sZW5ndGg+MCl7cmV0dXJuIGV9ZWxzZXtyZXR1cm5cIi5cIn19LG5vcm1hbGl6ZTpmdW5jdGlvbiBub3JtYWxpemUoZSl7YXNzZXJ0UGF0aChlKTtpZihlLmxlbmd0aD09PTApcmV0dXJuXCIuXCI7dmFyIHI9ZS5jaGFyQ29kZUF0KDApPT09NDc7dmFyIHQ9ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09NDc7ZT1ub3JtYWxpemVTdHJpbmdQb3NpeChlLCFyKTtpZihlLmxlbmd0aD09PTAmJiFyKWU9XCIuXCI7aWYoZS5sZW5ndGg+MCYmdCllKz1cIi9cIjtpZihyKXJldHVyblwiL1wiK2U7cmV0dXJuIGV9LGlzQWJzb2x1dGU6ZnVuY3Rpb24gaXNBYnNvbHV0ZShlKXthc3NlcnRQYXRoKGUpO3JldHVybiBlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT00N30sam9pbjpmdW5jdGlvbiBqb2luKCl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuXCIuXCI7dmFyIGU7Zm9yKHZhciB0PTA7dDxhcmd1bWVudHMubGVuZ3RoOysrdCl7dmFyIGk9YXJndW1lbnRzW3RdO2Fzc2VydFBhdGgoaSk7aWYoaS5sZW5ndGg+MCl7aWYoZT09PXVuZGVmaW5lZCllPWk7ZWxzZSBlKz1cIi9cIitpfX1pZihlPT09dW5kZWZpbmVkKXJldHVyblwiLlwiO3JldHVybiByLm5vcm1hbGl6ZShlKX0scmVsYXRpdmU6ZnVuY3Rpb24gcmVsYXRpdmUoZSx0KXthc3NlcnRQYXRoKGUpO2Fzc2VydFBhdGgodCk7aWYoZT09PXQpcmV0dXJuXCJcIjtlPXIucmVzb2x2ZShlKTt0PXIucmVzb2x2ZSh0KTtpZihlPT09dClyZXR1cm5cIlwiO3ZhciBpPTE7Zm9yKDtpPGUubGVuZ3RoOysraSl7aWYoZS5jaGFyQ29kZUF0KGkpIT09NDcpYnJlYWt9dmFyIG49ZS5sZW5ndGg7dmFyIGE9bi1pO3ZhciBmPTE7Zm9yKDtmPHQubGVuZ3RoOysrZil7aWYodC5jaGFyQ29kZUF0KGYpIT09NDcpYnJlYWt9dmFyIGw9dC5sZW5ndGg7dmFyIHM9bC1mO3ZhciBvPWE8cz9hOnM7dmFyIHU9LTE7dmFyIGg9MDtmb3IoO2g8PW87KytoKXtpZihoPT09byl7aWYocz5vKXtpZih0LmNoYXJDb2RlQXQoZitoKT09PTQ3KXtyZXR1cm4gdC5zbGljZShmK2grMSl9ZWxzZSBpZihoPT09MCl7cmV0dXJuIHQuc2xpY2UoZitoKX19ZWxzZSBpZihhPm8pe2lmKGUuY2hhckNvZGVBdChpK2gpPT09NDcpe3U9aH1lbHNlIGlmKGg9PT0wKXt1PTB9fWJyZWFrfXZhciBjPWUuY2hhckNvZGVBdChpK2gpO3ZhciB2PXQuY2hhckNvZGVBdChmK2gpO2lmKGMhPT12KWJyZWFrO2Vsc2UgaWYoYz09PTQ3KXU9aH12YXIgZz1cIlwiO2ZvcihoPWkrdSsxO2g8PW47KytoKXtpZihoPT09bnx8ZS5jaGFyQ29kZUF0KGgpPT09NDcpe2lmKGcubGVuZ3RoPT09MClnKz1cIi4uXCI7ZWxzZSBnKz1cIi8uLlwifX1pZihnLmxlbmd0aD4wKXJldHVybiBnK3Quc2xpY2UoZit1KTtlbHNle2YrPXU7aWYodC5jaGFyQ29kZUF0KGYpPT09NDcpKytmO3JldHVybiB0LnNsaWNlKGYpfX0sX21ha2VMb25nOmZ1bmN0aW9uIF9tYWtlTG9uZyhlKXtyZXR1cm4gZX0sZGlybmFtZTpmdW5jdGlvbiBkaXJuYW1lKGUpe2Fzc2VydFBhdGgoZSk7aWYoZS5sZW5ndGg9PT0wKXJldHVyblwiLlwiO3ZhciByPWUuY2hhckNvZGVBdCgwKTt2YXIgdD1yPT09NDc7dmFyIGk9LTE7dmFyIG49dHJ1ZTtmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0xOy0tYSl7cj1lLmNoYXJDb2RlQXQoYSk7aWYocj09PTQ3KXtpZighbil7aT1hO2JyZWFrfX1lbHNle249ZmFsc2V9fWlmKGk9PT0tMSlyZXR1cm4gdD9cIi9cIjpcIi5cIjtpZih0JiZpPT09MSlyZXR1cm5cIi8vXCI7cmV0dXJuIGUuc2xpY2UoMCxpKX0sYmFzZW5hbWU6ZnVuY3Rpb24gYmFzZW5hbWUoZSxyKXtpZihyIT09dW5kZWZpbmVkJiZ0eXBlb2YgciE9PVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7YXNzZXJ0UGF0aChlKTt2YXIgdD0wO3ZhciBpPS0xO3ZhciBuPXRydWU7dmFyIGE7aWYociE9PXVuZGVmaW5lZCYmci5sZW5ndGg+MCYmci5sZW5ndGg8PWUubGVuZ3RoKXtpZihyLmxlbmd0aD09PWUubGVuZ3RoJiZyPT09ZSlyZXR1cm5cIlwiO3ZhciBmPXIubGVuZ3RoLTE7dmFyIGw9LTE7Zm9yKGE9ZS5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIHM9ZS5jaGFyQ29kZUF0KGEpO2lmKHM9PT00Nyl7aWYoIW4pe3Q9YSsxO2JyZWFrfX1lbHNle2lmKGw9PT0tMSl7bj1mYWxzZTtsPWErMX1pZihmPj0wKXtpZihzPT09ci5jaGFyQ29kZUF0KGYpKXtpZigtLWY9PT0tMSl7aT1hfX1lbHNle2Y9LTE7aT1sfX19fWlmKHQ9PT1pKWk9bDtlbHNlIGlmKGk9PT0tMSlpPWUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsaSl9ZWxzZXtmb3IoYT1lLmxlbmd0aC0xO2E+PTA7LS1hKXtpZihlLmNoYXJDb2RlQXQoYSk9PT00Nyl7aWYoIW4pe3Q9YSsxO2JyZWFrfX1lbHNlIGlmKGk9PT0tMSl7bj1mYWxzZTtpPWErMX19aWYoaT09PS0xKXJldHVyblwiXCI7cmV0dXJuIGUuc2xpY2UodCxpKX19LGV4dG5hbWU6ZnVuY3Rpb24gZXh0bmFtZShlKXthc3NlcnRQYXRoKGUpO3ZhciByPS0xO3ZhciB0PTA7dmFyIGk9LTE7dmFyIG49dHJ1ZTt2YXIgYT0wO2Zvcih2YXIgZj1lLmxlbmd0aC0xO2Y+PTA7LS1mKXt2YXIgbD1lLmNoYXJDb2RlQXQoZik7aWYobD09PTQ3KXtpZighbil7dD1mKzE7YnJlYWt9Y29udGludWV9aWYoaT09PS0xKXtuPWZhbHNlO2k9ZisxfWlmKGw9PT00Nil7aWYocj09PS0xKXI9ZjtlbHNlIGlmKGEhPT0xKWE9MX1lbHNlIGlmKHIhPT0tMSl7YT0tMX19aWYocj09PS0xfHxpPT09LTF8fGE9PT0wfHxhPT09MSYmcj09PWktMSYmcj09PXQrMSl7cmV0dXJuXCJcIn1yZXR1cm4gZS5zbGljZShyLGkpfSxmb3JtYXQ6ZnVuY3Rpb24gZm9ybWF0KGUpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9PVwib2JqZWN0XCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpfXJldHVybiBfZm9ybWF0KFwiL1wiLGUpfSxwYXJzZTpmdW5jdGlvbiBwYXJzZShlKXthc3NlcnRQYXRoKGUpO3ZhciByPXtyb290OlwiXCIsZGlyOlwiXCIsYmFzZTpcIlwiLGV4dDpcIlwiLG5hbWU6XCJcIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiByO3ZhciB0PWUuY2hhckNvZGVBdCgwKTt2YXIgaT10PT09NDc7dmFyIG47aWYoaSl7ci5yb290PVwiL1wiO249MX1lbHNle249MH12YXIgYT0tMTt2YXIgZj0wO3ZhciBsPS0xO3ZhciBzPXRydWU7dmFyIG89ZS5sZW5ndGgtMTt2YXIgdT0wO2Zvcig7bz49bjstLW8pe3Q9ZS5jaGFyQ29kZUF0KG8pO2lmKHQ9PT00Nyl7aWYoIXMpe2Y9bysxO2JyZWFrfWNvbnRpbnVlfWlmKGw9PT0tMSl7cz1mYWxzZTtsPW8rMX1pZih0PT09NDYpe2lmKGE9PT0tMSlhPW87ZWxzZSBpZih1IT09MSl1PTF9ZWxzZSBpZihhIT09LTEpe3U9LTF9fWlmKGE9PT0tMXx8bD09PS0xfHx1PT09MHx8dT09PTEmJmE9PT1sLTEmJmE9PT1mKzEpe2lmKGwhPT0tMSl7aWYoZj09PTAmJmkpci5iYXNlPXIubmFtZT1lLnNsaWNlKDEsbCk7ZWxzZSByLmJhc2U9ci5uYW1lPWUuc2xpY2UoZixsKX19ZWxzZXtpZihmPT09MCYmaSl7ci5uYW1lPWUuc2xpY2UoMSxhKTtyLmJhc2U9ZS5zbGljZSgxLGwpfWVsc2V7ci5uYW1lPWUuc2xpY2UoZixhKTtyLmJhc2U9ZS5zbGljZShmLGwpfXIuZXh0PWUuc2xpY2UoYSxsKX1pZihmPjApci5kaXI9ZS5zbGljZSgwLGYtMSk7ZWxzZSBpZihpKXIuZGlyPVwiL1wiO3JldHVybiByfSxzZXA6XCIvXCIsZGVsaW1pdGVyOlwiOlwiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yO2UuZXhwb3J0cz1yfX07dmFyIHI9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyh0KXt2YXIgaT1yW3RdO2lmKGkhPT11bmRlZmluZWQpe3JldHVybiBpLmV4cG9ydHN9dmFyIG49clt0XT17ZXhwb3J0czp7fX07dmFyIGE9dHJ1ZTt0cnl7ZVt0XShuLG4uZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTthPWZhbHNlfWZpbmFsbHl7aWYoYSlkZWxldGUgclt0XX1yZXR1cm4gbi5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgdD1fX25jY3dwY2tfcmVxdWlyZV9fKDExNCk7bW9kdWxlLmV4cG9ydHM9dH0pKCk7Il0sIm5hbWVzIjpbImUiLCJhc3NlcnRQYXRoIiwiVHlwZUVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5vcm1hbGl6ZVN0cmluZ1Bvc2l4IiwiciIsInQiLCJpIiwibiIsImEiLCJmIiwibCIsImxlbmd0aCIsImNoYXJDb2RlQXQiLCJzIiwibGFzdEluZGV4T2YiLCJzbGljZSIsIl9mb3JtYXQiLCJkaXIiLCJyb290IiwiYmFzZSIsIm5hbWUiLCJleHQiLCJyZXNvbHZlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwibm9ybWFsaXplIiwiaXNBYnNvbHV0ZSIsImpvaW4iLCJyZWxhdGl2ZSIsIm8iLCJ1IiwiaCIsImMiLCJ2IiwiZyIsIl9tYWtlTG9uZyIsImRpcm5hbWUiLCJiYXNlbmFtZSIsImV4dG5hbWUiLCJmb3JtYXQiLCJwYXJzZSIsInNlcCIsImRlbGltaXRlciIsIndpbjMyIiwicG9zaXgiLCJleHBvcnRzIiwiX19uY2N3cGNrX3JlcXVpcmVfXyIsImFiIiwiX19kaXJuYW1lIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/path-browserify/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js":
/*!*****************************************************************!*\
!*** ./node_modules/next/dist/compiled/path-to-regexp/index.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/**\n * Tokenize input string.\n */ function lexer(str) {\n var tokens = [];\n var i = 0;\n while(i < str.length){\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({\n type: \"MODIFIER\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({\n type: \"ESCAPED_CHAR\",\n index: i++,\n value: str[i++]\n });\n continue;\n }\n if (char === \"{\") {\n tokens.push({\n type: \"OPEN\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n if (char === \"}\") {\n tokens.push({\n type: \"CLOSE\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while(j < str.length){\n var code = str.charCodeAt(j);\n if (// `0-9`\n code >= 48 && code <= 57 || // `A-Z`\n code >= 65 && code <= 90 || // `a-z`\n code >= 97 && code <= 122 || // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name) throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({\n type: \"NAME\",\n index: i,\n value: name\n });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError('Pattern cannot start with \"?\" at ' + j);\n }\n while(j < str.length){\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count) throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern) throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({\n type: \"PATTERN\",\n index: i,\n value: pattern\n });\n i = j;\n continue;\n }\n tokens.push({\n type: \"CHAR\",\n index: i,\n value: str[i++]\n });\n }\n tokens.push({\n type: \"END\",\n index: i,\n value: \"\"\n });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */ function parse(str, options) {\n if (options === void 0) {\n options = {};\n }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function(type) {\n if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;\n };\n var mustConsume = function(type) {\n var value = tryConsume(type);\n if (value !== undefined) return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function() {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while(value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\")){\n result += value;\n }\n return result;\n };\n while(i < tokens.length){\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\nexports.parse = parse;\n/**\n * Compile a string to a template function for the path.\n */ function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\nexports.compile = compile;\n/**\n * Expose a method for transforming tokens into the path function.\n */ function tokensToFunction(tokens, options) {\n if (options === void 0) {\n options = {};\n }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function(x) {\n return x;\n } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function(token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function(data) {\n var path = \"\";\n for(var i = 0; i < tokens.length; i++){\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got an array');\n }\n if (value.length === 0) {\n if (optional) continue;\n throw new TypeError('Expected \"' + token.name + '\" to not be empty');\n }\n for(var j = 0; j < value.length; j++){\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"');\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"');\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional) continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError('Expected \"' + token.name + '\" to be ' + typeOfMessage);\n }\n return path;\n };\n}\nexports.tokensToFunction = tokensToFunction;\n/**\n * Create path match function from `path-to-regexp` spec.\n */ function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\nexports.match = match;\n/**\n * Create a path match function from `path-to-regexp` output.\n */ function regexpToFunction(re, keys, options) {\n if (options === void 0) {\n options = {};\n }\n var _a = options.decode, decode = _a === void 0 ? function(x) {\n return x;\n } : _a;\n return function(pathname) {\n var m = re.exec(pathname);\n if (!m) return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function(i) {\n // tslint:disable-next-line\n if (m[i] === undefined) return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function(value) {\n return decode(value, key);\n });\n } else {\n params[key.name] = decode(m[i], key);\n }\n };\n for(var i = 1; i < m.length; i++){\n _loop_1(i);\n }\n return {\n path: path,\n index: index,\n params: params\n };\n };\n}\nexports.regexpToFunction = regexpToFunction;\n/**\n * Escape a regular expression string.\n */ function escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */ function flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */ function regexpToRegexp(path, keys) {\n if (!keys) return path;\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for(var i = 0; i < groups.length; i++){\n keys.push({\n name: i,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n }\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */ function arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function(path) {\n return pathToRegexp(path, keys, options).source;\n });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */ function stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */ function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) {\n options = {};\n }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function(x) {\n return x;\n } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for(var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++){\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n } else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys) keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n } else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n } else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n } else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict) route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n } else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\" ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 : endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\nexports.tokensToRegexp = tokensToRegexp;\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */ function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp) return regexpToRegexp(path, keys);\n if (Array.isArray(path)) return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\nexports.pathToRegexp = pathToRegexp; //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtdG8tcmVnZXhwL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUFFRyxPQUFPO0FBQUssQ0FBQyxFQUFDO0FBQzdEOztDQUVDLEdBQ0QsU0FBU0MsTUFBTUMsR0FBRztJQUNkLElBQUlDLFNBQVMsRUFBRTtJQUNmLElBQUlDLElBQUk7SUFDUixNQUFPQSxJQUFJRixJQUFJRyxNQUFNLENBQUU7UUFDbkIsSUFBSUMsT0FBT0osR0FBRyxDQUFDRSxFQUFFO1FBQ2pCLElBQUlFLFNBQVMsT0FBT0EsU0FBUyxPQUFPQSxTQUFTLEtBQUs7WUFDOUNILE9BQU9JLElBQUksQ0FBQztnQkFBRUMsTUFBTTtnQkFBWUMsT0FBT0w7Z0JBQUdKLE9BQU9FLEdBQUcsQ0FBQ0UsSUFBSTtZQUFDO1lBQzFEO1FBQ0o7UUFDQSxJQUFJRSxTQUFTLE1BQU07WUFDZkgsT0FBT0ksSUFBSSxDQUFDO2dCQUFFQyxNQUFNO2dCQUFnQkMsT0FBT0w7Z0JBQUtKLE9BQU9FLEdBQUcsQ0FBQ0UsSUFBSTtZQUFDO1lBQ2hFO1FBQ0o7UUFDQSxJQUFJRSxTQUFTLEtBQUs7WUFDZEgsT0FBT0ksSUFBSSxDQUFDO2dCQUFFQyxNQUFNO2dCQUFRQyxPQUFPTDtnQkFBR0osT0FBT0UsR0FBRyxDQUFDRSxJQUFJO1lBQUM7WUFDdEQ7UUFDSjtRQUNBLElBQUlFLFNBQVMsS0FBSztZQUNkSCxPQUFPSSxJQUFJLENBQUM7Z0JBQUVDLE1BQU07Z0JBQVNDLE9BQU9MO2dCQUFHSixPQUFPRSxHQUFHLENBQUNFLElBQUk7WUFBQztZQUN2RDtRQUNKO1FBQ0EsSUFBSUUsU0FBUyxLQUFLO1lBQ2QsSUFBSUksT0FBTztZQUNYLElBQUlDLElBQUlQLElBQUk7WUFDWixNQUFPTyxJQUFJVCxJQUFJRyxNQUFNLENBQUU7Z0JBQ25CLElBQUlPLE9BQU9WLElBQUlXLFVBQVUsQ0FBQ0Y7Z0JBQzFCLElBRUEsUUFE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UTFELFNBQVNFLFNBQVMsTUFBTWUsTUFBTWQsUUFBUTtZQUMzRDtRQUNKO0lBQ0o7SUFDQSxJQUFJb0QsS0FBSztRQUNMLElBQUksQ0FBQ0gsUUFDRE0sU0FBU25FLFlBQVk7UUFDekJtRSxTQUFTLENBQUN4RSxRQUFRdUUsUUFBUSxHQUFHLE1BQU0sUUFBUUEsV0FBVztJQUMxRCxPQUNLO1FBQ0QsSUFBSUssV0FBVzNGLE1BQU0sQ0FBQ0EsT0FBT0UsTUFBTSxHQUFHLEVBQUU7UUFDeEMsSUFBSTBGLGlCQUFpQixPQUFPRCxhQUFhLFdBQ25DdkUsVUFBVVUsT0FBTyxDQUFDNkQsUUFBUSxDQUFDQSxTQUFTekYsTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBRWxEeUYsYUFBYWpFO1FBQ3JCLElBQUksQ0FBQ3VELFFBQVE7WUFDVE0sU0FBUyxRQUFRbkUsWUFBWSxRQUFRa0UsV0FBVztRQUNwRDtRQUNBLElBQUksQ0FBQ00sZ0JBQWdCO1lBQ2pCTCxTQUFTLFFBQVFuRSxZQUFZLE1BQU1rRSxXQUFXO1FBQ2xEO0lBQ0o7SUFDQSxPQUFPLElBQUl2QyxPQUFPd0MsT0FBT2hELE1BQU14QjtBQUNuQztBQUNBbkIsc0JBQXNCLEdBQUdvRjtBQUN6Qjs7Ozs7O0NBTUMsR0FDRCxTQUFTcEIsYUFBYXJDLElBQUksRUFBRW1DLElBQUksRUFBRTNDLE9BQU87SUFDckMsSUFBSVEsZ0JBQWdCd0IsUUFDaEIsT0FBT3lCLGVBQWVqRCxNQUFNbUM7SUFDaEMsSUFBSVAsTUFBTUMsT0FBTyxDQUFDN0IsT0FDZCxPQUFPb0QsY0FBY3BELE1BQU1tQyxNQUFNM0M7SUFDckMsT0FBT2dFLGVBQWV4RCxNQUFNbUMsTUFBTTNDO0FBQ3RDO0FBQ0FuQixvQkFBb0IsR0FBR2dFLGNBQ3ZCLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtdG8tcmVnZXhwL2luZGV4LmpzPzdkMTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIFRva2VuaXplIGlucHV0IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gbGV4ZXIoc3RyKSB7XG4gICAgdmFyIHRva2VucyA9IFtdO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGNoYXIgPSBzdHJbaV07XG4gICAgICAgIGlmIChjaGFyID09PSBcIipcIiB8fCBjaGFyID09PSBcIitcIiB8fCBjaGFyID09PSBcIj9cIikge1xuICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBcIk1PRElGSUVSXCIsIGluZGV4OiBpLCB2YWx1ZTogc3RyW2krK10gfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJFU0NBUEVEX0NIQVJcIiwgaW5kZXg6IGkrKywgdmFsdWU6IHN0cltpKytdIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXIgPT09IFwie1wiKSB7XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFwiT1BFTlwiLCBpbmRleDogaSwgdmFsdWU6IHN0cltpKytdIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXIgPT09IFwifVwiKSB7XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFwiQ0xPU0VcIiwgaW5kZXg6IGksIHZhbHVlOiBzdHJbaSsrXSB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFyID09PSBcIjpcIikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgdmFyIGogPSBpICsgMTtcbiAgICAgICAgICAgIHdoaWxlIChqIDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaik7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIC8vIGAwLTlgXG4gICAgICAgICAgICAgICAgKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gYEEtWmBcbiAgICAgICAgICAgICAgICAgICAgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA5MCkgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gYGEtemBcbiAgICAgICAgICAgICAgICAgICAgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIGBfYFxuICAgICAgICAgICAgICAgICAgICBjb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICBuYW1lICs9IHN0cltqKytdO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW5hbWUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk1pc3NpbmcgcGFyYW1ldGVyIG5hbWUgYXQgXCIgKyBpKTtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJOQU1FXCIsIGluZGV4OiBpLCB2YWx1ZTogbmFtZSB9KTtcbiAgICAgICAgICAgIGkgPSBqO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXIgPT09IFwiKFwiKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAxO1xuICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBcIlwiO1xuICAgICAgICAgICAgdmFyIGogPSBpICsgMTtcbiAgICAgICAgICAgIGlmIChzdHJbal0gPT09IFwiP1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlBhdHRlcm4gY2Fubm90IHN0YXJ0IHdpdGggXFxcIj9cXFwiIGF0IFwiICsgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoaiA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyW2pdID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IHN0cltqKytdICsgc3RyW2orK107XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RyW2pdID09PSBcIilcIikge1xuICAgICAgICAgICAgICAgICAgICBjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0cltqXSA9PT0gXCIoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cltqICsgMV0gIT09IFwiP1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FwdHVyaW5nIGdyb3VwcyBhcmUgbm90IGFsbG93ZWQgYXQgXCIgKyBqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXR0ZXJuICs9IHN0cltqKytdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvdW50KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmJhbGFuY2VkIHBhdHRlcm4gYXQgXCIgKyBpKTtcbiAgICAgICAgICAgIGlmICghcGF0dGVybilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTWlzc2luZyBwYXR0ZXJuIGF0IFwiICsgaSk7XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFwiUEFUVEVSTlwiLCBpbmRleDogaSwgdmFsdWU6IHBhdHRlcm4gfSk7XG4gICAgICAgICAgICBpID0gajtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJDSEFSXCIsIGluZGV4OiBpLCB2YWx1ZTogc3RyW2krK10gfSk7XG4gICAgfVxuICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJFTkRcIiwgaW5kZXg6IGksIHZhbHVlOiBcIlwiIH0pO1xuICAgIHJldHVybiB0b2tlbnM7XG59XG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIGZvciB0aGUgcmF3IHRva2Vucy5cbiAqL1xuZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgdG9rZW5zID0gbGV4ZXIoc3RyKTtcbiAgICB2YXIgX2EgPSBvcHRpb25zLnByZWZpeGVzLCBwcmVmaXhlcyA9IF9hID09PSB2b2lkIDAgPyBcIi4vXCIgOiBfYTtcbiAgICB2YXIgZGVmYXVsdFBhdHRlcm4gPSBcIlteXCIgKyBlc2NhcGVTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXIgfHwgXCIvIz9cIikgKyBcIl0rP1wiO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5ID0gMDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHBhdGggPSBcIlwiO1xuICAgIHZhciB0cnlDb25zdW1lID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgaWYgKGkgPCB0b2tlbnMubGVuZ3RoICYmIHRva2Vuc1tpXS50eXBlID09PSB0eXBlKVxuICAgICAgICAgICAgcmV0dXJuIHRva2Vuc1tpKytdLnZhbHVlO1xuICAgIH07XG4gICAgdmFyIG11c3RDb25zdW1lID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdHJ5Q29uc3VtZSh0eXBlKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIHZhciBfYSA9IHRva2Vuc1tpXSwgbmV4dFR5cGUgPSBfYS50eXBlLCBpbmRleCA9IF9hLmluZGV4O1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5leHBlY3RlZCBcIiArIG5leHRUeXBlICsgXCIgYXQgXCIgKyBpbmRleCArIFwiLCBleHBlY3RlZCBcIiArIHR5cGUpO1xuICAgIH07XG4gICAgdmFyIGNvbnN1bWVUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgd2hpbGUgKCh2YWx1ZSA9IHRyeUNvbnN1bWUoXCJDSEFSXCIpIHx8IHRyeUNvbnN1bWUoXCJFU0NBUEVEX0NIQVJcIikpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHdoaWxlIChpIDwgdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICB2YXIgY2hhciA9IHRyeUNvbnN1bWUoXCJDSEFSXCIpO1xuICAgICAgICB2YXIgbmFtZSA9IHRyeUNvbnN1bWUoXCJOQU1FXCIpO1xuICAgICAgICB2YXIgcGF0dGVybiA9IHRyeUNvbnN1bWUoXCJQQVRURVJOXCIpO1xuICAgICAgICBpZiAobmFtZSB8fCBwYXR0ZXJuKSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gY2hhciB8fCBcIlwiO1xuICAgICAgICAgICAgaWYgKHByZWZpeGVzLmluZGV4T2YocHJlZml4KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBwYXRoICs9IHByZWZpeDtcbiAgICAgICAgICAgICAgICBwcmVmaXggPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXRoKTtcbiAgICAgICAgICAgICAgICBwYXRoID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgICAgICAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgICAgICAgICAgIHN1ZmZpeDogXCJcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBwYXR0ZXJuIHx8IGRlZmF1bHRQYXR0ZXJuLFxuICAgICAgICAgICAgICAgIG1vZGlmaWVyOiB0cnlDb25zdW1lKFwiTU9ESUZJRVJcIikgfHwgXCJcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsdWUgPSBjaGFyIHx8IHRyeUNvbnN1bWUoXCJFU0NBUEVEX0NIQVJcIik7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcGF0aCArPSB2YWx1ZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXRoKTtcbiAgICAgICAgICAgIHBhdGggPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvcGVuID0gdHJ5Q29uc3VtZShcIk9QRU5cIik7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gY29uc3VtZVRleHQoKTtcbiAgICAgICAgICAgIHZhciBuYW1lXzEgPSB0cnlDb25zdW1lKFwiTkFNRVwiKSB8fCBcIlwiO1xuICAgICAgICAgICAgdmFyIHBhdHRlcm5fMSA9IHRyeUNvbnN1bWUoXCJQQVRURVJOXCIpIHx8IFwiXCI7XG4gICAgICAgICAgICB2YXIgc3VmZml4ID0gY29uc3VtZVRleHQoKTtcbiAgICAgICAgICAgIG11c3RDb25zdW1lKFwiQ0xPU0VcIik7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZV8xIHx8IChwYXR0ZXJuXzEgPyBrZXkrKyA6IFwiXCIpLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IG5hbWVfMSAmJiAhcGF0dGVybl8xID8gZGVmYXVsdFBhdHRlcm4gOiBwYXR0ZXJuXzEsXG4gICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgc3VmZml4OiBzdWZmaXgsXG4gICAgICAgICAgICAgICAgbW9kaWZpZXI6IHRyeUNvbnN1bWUoXCJNT0RJRklFUlwiKSB8fCBcIlwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG11c3RDb25zdW1lKFwiRU5EXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuLyoqXG4gKiBDb21waWxlIGEgc3RyaW5nIHRvIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHRoZSBwYXRoLlxuICovXG5mdW5jdGlvbiBjb21waWxlKHN0ciwgb3B0aW9ucykge1xuICAgIHJldHVybiB0b2tlbnNUb0Z1bmN0aW9uKHBhcnNlKHN0ciwgb3B0aW9ucyksIG9wdGlvbnMpO1xufVxuZXhwb3J0cy5jb21waWxlID0gY29tcGlsZTtcbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvRnVuY3Rpb24odG9rZW5zLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgcmVGbGFncyA9IGZsYWdzKG9wdGlvbnMpO1xuICAgIHZhciBfYSA9IG9wdGlvbnMuZW5jb2RlLCBlbmNvZGUgPSBfYSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH0gOiBfYSwgX2IgPSBvcHRpb25zLnZhbGlkYXRlLCB2YWxpZGF0ZSA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2I7XG4gICAgLy8gQ29tcGlsZSBhbGwgdGhlIHRva2VucyBpbnRvIHJlZ2V4cHMuXG4gICAgdmFyIG1hdGNoZXMgPSB0b2tlbnMubWFwKGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChcIl4oPzpcIiArIHRva2VuLnBhdHRlcm4gKyBcIikkXCIsIHJlRmxhZ3MpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBwYXRoID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBwYXRoICs9IHRva2VuO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YSA/IGRhdGFbdG9rZW4ubmFtZV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgb3B0aW9uYWwgPSB0b2tlbi5tb2RpZmllciA9PT0gXCI/XCIgfHwgdG9rZW4ubW9kaWZpZXIgPT09IFwiKlwiO1xuICAgICAgICAgICAgdmFyIHJlcGVhdCA9IHRva2VuLm1vZGlmaWVyID09PSBcIipcIiB8fCB0b2tlbi5tb2RpZmllciA9PT0gXCIrXCI7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcGVhdCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgXFxcIlwiICsgdG9rZW4ubmFtZSArIFwiXFxcIiB0byBub3QgcmVwZWF0LCBidXQgZ290IGFuIGFycmF5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25hbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgXFxcIlwiICsgdG9rZW4ubmFtZSArIFwiXFxcIiB0byBub3QgYmUgZW1wdHlcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSBlbmNvZGUodmFsdWVbal0sIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlICYmICFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhbGwgXFxcIlwiICsgdG9rZW4ubmFtZSArIFwiXFxcIiB0byBtYXRjaCBcXFwiXCIgKyB0b2tlbi5wYXR0ZXJuICsgXCJcXFwiLCBidXQgZ290IFxcXCJcIiArIHNlZ21lbnQgKyBcIlxcXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXggKyBzZWdtZW50ICsgdG9rZW4uc3VmZml4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSBlbmNvZGUoU3RyaW5nKHZhbHVlKSwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZSAmJiAhbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBcXFwiXCIgKyB0b2tlbi5uYW1lICsgXCJcXFwiIHRvIG1hdGNoIFxcXCJcIiArIHRva2VuLnBhdHRlcm4gKyBcIlxcXCIsIGJ1dCBnb3QgXFxcIlwiICsgc2VnbWVudCArIFwiXFxcIlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXggKyBzZWdtZW50ICsgdG9rZW4uc3VmZml4O1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbmFsKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgdmFyIHR5cGVPZk1lc3NhZ2UgPSByZXBlYXQgPyBcImFuIGFycmF5XCIgOiBcImEgc3RyaW5nXCI7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgXFxcIlwiICsgdG9rZW4ubmFtZSArIFwiXFxcIiB0byBiZSBcIiArIHR5cGVPZk1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG59XG5leHBvcnRzLnRva2Vuc1RvRnVuY3Rpb24gPSB0b2tlbnNUb0Z1bmN0aW9uO1xuLyoqXG4gKiBDcmVhdGUgcGF0aCBtYXRjaCBmdW5jdGlvbiBmcm9tIGBwYXRoLXRvLXJlZ2V4cGAgc3BlYy5cbiAqL1xuZnVuY3Rpb24gbWF0Y2goc3RyLCBvcHRpb25zKSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICB2YXIgcmUgPSBwYXRoVG9SZWdleHAoc3RyLCBrZXlzLCBvcHRpb25zKTtcbiAgICByZXR1cm4gcmVnZXhwVG9GdW5jdGlvbihyZSwga2V5cywgb3B0aW9ucyk7XG59XG5leHBvcnRzLm1hdGNoID0gbWF0Y2g7XG4vKipcbiAqIENyZWF0ZSBhIHBhdGggbWF0Y2ggZnVuY3Rpb24gZnJvbSBgcGF0aC10by1yZWdleHBgIG91dHB1dC5cbiAqL1xuZnVuY3Rpb24gcmVnZXhwVG9GdW5jdGlvbihyZSwga2V5cywgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIF9hID0gb3B0aW9ucy5kZWNvZGUsIGRlY29kZSA9IF9hID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSA6IF9hO1xuICAgIHJldHVybiBmdW5jdGlvbiAocGF0aG5hbWUpIHtcbiAgICAgICAgdmFyIG0gPSByZS5leGVjKHBhdGhuYW1lKTtcbiAgICAgICAgaWYgKCFtKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgcGF0aCA9IG1bMF0sIGluZGV4ID0gbS5pbmRleDtcbiAgICAgICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgaWYgKG1baV0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaSAtIDFdO1xuICAgICAgICAgICAgaWYgKGtleS5tb2RpZmllciA9PT0gXCIqXCIgfHwga2V5Lm1vZGlmaWVyID09PSBcIitcIikge1xuICAgICAgICAgICAgICAgIHBhcmFtc1trZXkubmFtZV0gPSBtW2ldLnNwbGl0KGtleS5wcmVmaXggKyBrZXkuc3VmZml4KS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGUodmFsdWUsIGtleSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNba2V5Lm5hbWVdID0gZGVjb2RlKG1baV0sIGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2xvb3BfMShpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwYXRoOiBwYXRoLCBpbmRleDogaW5kZXgsIHBhcmFtczogcGFyYW1zIH07XG4gICAgfTtcbn1cbmV4cG9ydHMucmVnZXhwVG9GdW5jdGlvbiA9IHJlZ2V4cFRvRnVuY3Rpb247XG4vKipcbiAqIEVzY2FwZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVN0cmluZyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18L1xcXFxdKS9nLCBcIlxcXFwkMVwiKTtcbn1cbi8qKlxuICogR2V0IHRoZSBmbGFncyBmb3IgYSByZWdleHAgZnJvbSB0aGUgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gZmxhZ3Mob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuc2Vuc2l0aXZlID8gXCJcIiA6IFwiaVwiO1xufVxuLyoqXG4gKiBQdWxsIG91dCBrZXlzIGZyb20gYSByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIHJlZ2V4cFRvUmVnZXhwKHBhdGgsIGtleXMpIHtcbiAgICBpZiAoIWtleXMpXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIC8vIFVzZSBhIG5lZ2F0aXZlIGxvb2thaGVhZCB0byBtYXRjaCBvbmx5IGNhcHR1cmluZyBncm91cHMuXG4gICAgdmFyIGdyb3VwcyA9IHBhdGguc291cmNlLm1hdGNoKC9cXCgoPyFcXD8pL2cpO1xuICAgIGlmIChncm91cHMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogaSxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IFwiXCIsXG4gICAgICAgICAgICAgICAgc3VmZml4OiBcIlwiLFxuICAgICAgICAgICAgICAgIG1vZGlmaWVyOiBcIlwiLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IFwiXCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuLyoqXG4gKiBUcmFuc2Zvcm0gYW4gYXJyYXkgaW50byBhIHJlZ2V4cC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlUb1JlZ2V4cChwYXRocywga2V5cywgb3B0aW9ucykge1xuICAgIHZhciBwYXJ0cyA9IHBhdGhzLm1hcChmdW5jdGlvbiAocGF0aCkgeyByZXR1cm4gcGF0aFRvUmVnZXhwKHBhdGgsIGtleXMsIG9wdGlvbnMpLnNvdXJjZTsgfSk7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXCIoPzpcIiArIHBhcnRzLmpvaW4oXCJ8XCIpICsgXCIpXCIsIGZsYWdzKG9wdGlvbnMpKTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgcGF0aCByZWdleHAgZnJvbSBzdHJpbmcgaW5wdXQuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvUmVnZXhwKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9rZW5zVG9SZWdleHAocGFyc2UocGF0aCwgb3B0aW9ucyksIGtleXMsIG9wdGlvbnMpO1xufVxuLyoqXG4gKiBFeHBvc2UgYSBmdW5jdGlvbiBmb3IgdGFraW5nIHRva2VucyBhbmQgcmV0dXJuaW5nIGEgUmVnRXhwLlxuICovXG5mdW5jdGlvbiB0b2tlbnNUb1JlZ2V4cCh0b2tlbnMsIGtleXMsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBfYSA9IG9wdGlvbnMuc3RyaWN0LCBzdHJpY3QgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSwgX2IgPSBvcHRpb25zLnN0YXJ0LCBzdGFydCA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIF9jID0gb3B0aW9ucy5lbmQsIGVuZCA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIF9kID0gb3B0aW9ucy5lbmNvZGUsIGVuY29kZSA9IF9kID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSA6IF9kO1xuICAgIHZhciBlbmRzV2l0aCA9IFwiW1wiICsgZXNjYXBlU3RyaW5nKG9wdGlvbnMuZW5kc1dpdGggfHwgXCJcIikgKyBcIl18JFwiO1xuICAgIHZhciBkZWxpbWl0ZXIgPSBcIltcIiArIGVzY2FwZVN0cmluZyhvcHRpb25zLmRlbGltaXRlciB8fCBcIi8jP1wiKSArIFwiXVwiO1xuICAgIHZhciByb3V0ZSA9IHN0YXJ0ID8gXCJeXCIgOiBcIlwiO1xuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgdG9rZW5zIGFuZCBjcmVhdGUgb3VyIHJlZ2V4cCBzdHJpbmcuXG4gICAgZm9yICh2YXIgX2kgPSAwLCB0b2tlbnNfMSA9IHRva2VuczsgX2kgPCB0b2tlbnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zXzFbX2ldO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByb3V0ZSArPSBlc2NhcGVTdHJpbmcoZW5jb2RlKHRva2VuKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gZXNjYXBlU3RyaW5nKGVuY29kZSh0b2tlbi5wcmVmaXgpKTtcbiAgICAgICAgICAgIHZhciBzdWZmaXggPSBlc2NhcGVTdHJpbmcoZW5jb2RlKHRva2VuLnN1ZmZpeCkpO1xuICAgICAgICAgICAgaWYgKHRva2VuLnBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5cylcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAocHJlZml4IHx8IHN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4ubW9kaWZpZXIgPT09IFwiK1wiIHx8IHRva2VuLm1vZGlmaWVyID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IHRva2VuLm1vZGlmaWVyID09PSBcIipcIiA/IFwiP1wiIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBwcmVmaXggKyBcIigoPzpcIiArIHRva2VuLnBhdHRlcm4gKyBcIikoPzpcIiArIHN1ZmZpeCArIHByZWZpeCArIFwiKD86XCIgKyB0b2tlbi5wYXR0ZXJuICsgXCIpKSopXCIgKyBzdWZmaXggKyBcIilcIiArIG1vZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBwcmVmaXggKyBcIihcIiArIHRva2VuLnBhdHRlcm4gKyBcIilcIiArIHN1ZmZpeCArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKFwiICsgdG9rZW4ucGF0dGVybiArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcm91dGUgKz0gXCIoPzpcIiArIHByZWZpeCArIHN1ZmZpeCArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZCkge1xuICAgICAgICBpZiAoIXN0cmljdClcbiAgICAgICAgICAgIHJvdXRlICs9IGRlbGltaXRlciArIFwiP1wiO1xuICAgICAgICByb3V0ZSArPSAhb3B0aW9ucy5lbmRzV2l0aCA/IFwiJFwiIDogXCIoPz1cIiArIGVuZHNXaXRoICsgXCIpXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZW5kVG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgICAgICB2YXIgaXNFbmREZWxpbWl0ZWQgPSB0eXBlb2YgZW5kVG9rZW4gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gZGVsaW1pdGVyLmluZGV4T2YoZW5kVG9rZW5bZW5kVG9rZW4ubGVuZ3RoIC0gMV0pID4gLTFcbiAgICAgICAgICAgIDogLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgZW5kVG9rZW4gPT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBkZWxpbWl0ZXIgKyBcIig/PVwiICsgZW5kc1dpdGggKyBcIikpP1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFbmREZWxpbWl0ZWQpIHtcbiAgICAgICAgICAgIHJvdXRlICs9IFwiKD89XCIgKyBkZWxpbWl0ZXIgKyBcInxcIiArIGVuZHNXaXRoICsgXCIpXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAocm91dGUsIGZsYWdzKG9wdGlvbnMpKTtcbn1cbmV4cG9ydHMudG9rZW5zVG9SZWdleHAgPSB0b2tlbnNUb1JlZ2V4cDtcbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiBwYXRoIHN0cmluZywgcmV0dXJuaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVtcHR5IGFycmF5IGNhbiBiZSBwYXNzZWQgaW4gZm9yIHRoZSBrZXlzLCB3aGljaCB3aWxsIGhvbGQgdGhlXG4gKiBwbGFjZWhvbGRlciBrZXkgZGVzY3JpcHRpb25zLiBGb3IgZXhhbXBsZSwgdXNpbmcgYC91c2VyLzppZGAsIGBrZXlzYCB3aWxsXG4gKiBjb250YWluIGBbeyBuYW1lOiAnaWQnLCBkZWxpbWl0ZXI6ICcvJywgb3B0aW9uYWw6IGZhbHNlLCByZXBlYXQ6IGZhbHNlIH1dYC5cbiAqL1xuZnVuY3Rpb24gcGF0aFRvUmVnZXhwKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAgICAgcmV0dXJuIHJlZ2V4cFRvUmVnZXhwKHBhdGgsIGtleXMpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKVxuICAgICAgICByZXR1cm4gYXJyYXlUb1JlZ2V4cChwYXRoLCBrZXlzLCBvcHRpb25zKTtcbiAgICByZXR1cm4gc3RyaW5nVG9SZWdleHAocGF0aCwga2V5cywgb3B0aW9ucyk7XG59XG5leHBvcnRzLnBhdGhUb1JlZ2V4cCA9IHBhdGhUb1JlZ2V4cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImxleGVyIiwic3RyIiwidG9rZW5zIiwiaSIsImxlbmd0aCIsImNoYXIiLCJwdXNoIiwidHlwZSIsImluZGV4IiwibmFtZSIsImoiLCJjb2RlIiwiY2hhckNvZGVBdCIsIlR5cGVFcnJvciIsImNvdW50IiwicGF0dGVybiIsInBhcnNlIiwib3B0aW9ucyIsIl9hIiwicHJlZml4ZXMiLCJkZWZhdWx0UGF0dGVybiIsImVzY2FwZVN0cmluZyIsImRlbGltaXRlciIsInJlc3VsdCIsImtleSIsInBhdGgiLCJ0cnlDb25zdW1lIiwibXVzdENvbnN1bWUiLCJ1bmRlZmluZWQiLCJuZXh0VHlwZSIsImNvbnN1bWVUZXh0IiwicHJlZml4IiwiaW5kZXhPZiIsInN1ZmZpeCIsIm1vZGlmaWVyIiwib3BlbiIsIm5hbWVfMSIsInBhdHRlcm5fMSIsImNvbXBpbGUiLCJ0b2tlbnNUb0Z1bmN0aW9uIiwicmVGbGFncyIsImZsYWdzIiwiZW5jb2RlIiwieCIsIl9iIiwidmFsaWRhdGUiLCJtYXRjaGVzIiwibWFwIiwidG9rZW4iLCJSZWdFeHAiLCJkYXRhIiwib3B0aW9uYWwiLCJyZXBlYXQiLCJBcnJheSIsImlzQXJyYXkiLCJzZWdtZW50IiwidGVzdCIsIlN0cmluZyIsInR5cGVPZk1lc3NhZ2UiLCJtYXRjaCIsImtleXMiLCJyZSIsInBhdGhUb1JlZ2V4cCIsInJlZ2V4cFRvRnVuY3Rpb24iLCJkZWNvZGUiLCJwYXRobmFtZSIsIm0iLCJleGVjIiwicGFyYW1zIiwiY3JlYXRlIiwiX2xvb3BfMSIsInNwbGl0IiwicmVwbGFjZSIsInNlbnNpdGl2ZSIsInJlZ2V4cFRvUmVnZXhwIiwiZ3JvdXBzIiwic291cmNlIiwiYXJyYXlUb1JlZ2V4cCIsInBhdGhzIiwicGFydHMiLCJqb2luIiwic3RyaW5nVG9SZWdleHAiLCJ0b2tlbnNUb1JlZ2V4cCIsInN0cmljdCIsInN0YXJ0IiwiX2MiLCJlbmQiLCJfZCIsImVuZHNXaXRoIiwicm91dGUiLCJfaSIsInRva2Vuc18xIiwibW9kIiwiZW5kVG9rZW4iLCJpc0VuZERlbGltaXRlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/querystring-es3/index.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/compiled/querystring-es3/index.js ***!
\******************************************************************/
/***/ ((module) => {
"use strict";
eval("var __dirname = \"/\";\n\n(function() {\n \"use strict\";\n var e = {\n 815: function(e) {\n function hasOwnProperty(e, r) {\n return Object.prototype.hasOwnProperty.call(e, r);\n }\n e.exports = function(e, n, t, o) {\n n = n || \"&\";\n t = t || \"=\";\n var a = {};\n if (typeof e !== \"string\" || e.length === 0) {\n return a;\n }\n var i = /\\+/g;\n e = e.split(n);\n var u = 1e3;\n if (o && typeof o.maxKeys === \"number\") {\n u = o.maxKeys;\n }\n var c = e.length;\n if (u > 0 && c > u) {\n c = u;\n }\n for(var p = 0; p < c; ++p){\n var f = e[p].replace(i, \"%20\"), s = f.indexOf(t), _, l, y, d;\n if (s >= 0) {\n _ = f.substr(0, s);\n l = f.substr(s + 1);\n } else {\n _ = f;\n l = \"\";\n }\n y = decodeURIComponent(_);\n d = decodeURIComponent(l);\n if (!hasOwnProperty(a, y)) {\n a[y] = d;\n } else if (r(a[y])) {\n a[y].push(d);\n } else {\n a[y] = [\n a[y],\n d\n ];\n }\n }\n return a;\n };\n var r = Array.isArray || function(e) {\n return Object.prototype.toString.call(e) === \"[object Array]\";\n };\n },\n 577: function(e) {\n var stringifyPrimitive = function(e) {\n switch(typeof e){\n case \"string\":\n return e;\n case \"boolean\":\n return e ? \"true\" : \"false\";\n case \"number\":\n return isFinite(e) ? e : \"\";\n default:\n return \"\";\n }\n };\n e.exports = function(e, t, o, a) {\n t = t || \"&\";\n o = o || \"=\";\n if (e === null) {\n e = undefined;\n }\n if (typeof e === \"object\") {\n return map(n(e), function(n) {\n var a = encodeURIComponent(stringifyPrimitive(n)) + o;\n if (r(e[n])) {\n return map(e[n], function(e) {\n return a + encodeURIComponent(stringifyPrimitive(e));\n }).join(t);\n } else {\n return a + encodeURIComponent(stringifyPrimitive(e[n]));\n }\n }).join(t);\n }\n if (!a) return \"\";\n return encodeURIComponent(stringifyPrimitive(a)) + o + encodeURIComponent(stringifyPrimitive(e));\n };\n var r = Array.isArray || function(e) {\n return Object.prototype.toString.call(e) === \"[object Array]\";\n };\n function map(e, r) {\n if (e.map) return e.map(r);\n var n = [];\n for(var t = 0; t < e.length; t++){\n n.push(r(e[t], t));\n }\n return n;\n }\n var n = Object.keys || function(e) {\n var r = [];\n for(var n in e){\n if (Object.prototype.hasOwnProperty.call(e, n)) r.push(n);\n }\n return r;\n };\n }\n };\n var r = {};\n function __nccwpck_require__(n) {\n var t = r[n];\n if (t !== undefined) {\n return t.exports;\n }\n var o = r[n] = {\n exports: {}\n };\n var a = true;\n try {\n e[n](o, o.exports, __nccwpck_require__);\n a = false;\n } finally{\n if (a) delete r[n];\n }\n return o.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var n = {};\n !function() {\n var e = n;\n e.decode = e.parse = __nccwpck_require__(815);\n e.encode = e.stringify = __nccwpck_require__(577);\n }();\n module.exports = n;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3F1ZXJ5c3RyaW5nLWVzMy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOztBQUFDO0lBQVc7SUFBYSxJQUFJQSxJQUFFO1FBQUMsS0FBSSxTQUFTQSxDQUFDO1lBQUUsU0FBU0MsZUFBZUQsQ0FBQyxFQUFDRSxDQUFDO2dCQUFFLE9BQU9DLE9BQU9DLFNBQVMsQ0FBQ0gsY0FBYyxDQUFDSSxJQUFJLENBQUNMLEdBQUVFO1lBQUU7WUFBQ0YsRUFBRU0sT0FBTyxHQUFDLFNBQVNOLENBQUMsRUFBQ08sQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUM7Z0JBQUVGLElBQUVBLEtBQUc7Z0JBQUlDLElBQUVBLEtBQUc7Z0JBQUksSUFBSUUsSUFBRSxDQUFDO2dCQUFFLElBQUcsT0FBT1YsTUFBSSxZQUFVQSxFQUFFVyxNQUFNLEtBQUcsR0FBRTtvQkFBQyxPQUFPRDtnQkFBQztnQkFBQyxJQUFJRSxJQUFFO2dCQUFNWixJQUFFQSxFQUFFYSxLQUFLLENBQUNOO2dCQUFHLElBQUlPLElBQUU7Z0JBQUksSUFBR0wsS0FBRyxPQUFPQSxFQUFFTSxPQUFPLEtBQUcsVUFBUztvQkFBQ0QsSUFBRUwsRUFBRU0sT0FBTztnQkFBQTtnQkFBQyxJQUFJQyxJQUFFaEIsRUFBRVcsTUFBTTtnQkFBQyxJQUFHRyxJQUFFLEtBQUdFLElBQUVGLEdBQUU7b0JBQUNFLElBQUVGO2dCQUFDO2dCQUFDLElBQUksSUFBSUcsSUFBRSxHQUFFQSxJQUFFRCxHQUFFLEVBQUVDLEVBQUU7b0JBQUMsSUFBSUMsSUFBRWxCLENBQUMsQ0FBQ2lCLEVBQUUsQ0FBQ0UsT0FBTyxDQUFDUCxHQUFFLFFBQU9RLElBQUVGLEVBQUVHLE9BQU8sQ0FBQ2IsSUFBR2MsR0FBRUMsR0FBRUMsR0FBRUM7b0JBQUUsSUFBR0wsS0FBRyxHQUFFO3dCQUFDRSxJQUFFSixFQUFFUSxNQUFNLENBQUMsR0FBRU47d0JBQUdHLElBQUVMLEVBQUVRLE1BQU0sQ0FB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T0FBT0w7WUFBQztRQUFDO0lBQUM7SUFBRSxJQUFJQSxJQUFFLENBQUM7SUFBRSxTQUFTcUMsb0JBQW9CaEMsQ0FBQztRQUFFLElBQUlDLElBQUVOLENBQUMsQ0FBQ0ssRUFBRTtRQUFDLElBQUdDLE1BQUkwQixXQUFVO1lBQUMsT0FBTzFCLEVBQUVGLE9BQU87UUFBQTtRQUFDLElBQUlHLElBQUVQLENBQUMsQ0FBQ0ssRUFBRSxHQUFDO1lBQUNELFNBQVEsQ0FBQztRQUFDO1FBQUUsSUFBSUksSUFBRTtRQUFLLElBQUc7WUFBQ1YsQ0FBQyxDQUFDTyxFQUFFLENBQUNFLEdBQUVBLEVBQUVILE9BQU8sRUFBQ2lDO1lBQXFCN0IsSUFBRTtRQUFLLFNBQVE7WUFBQyxJQUFHQSxHQUFFLE9BQU9SLENBQUMsQ0FBQ0ssRUFBRTtRQUFBO1FBQUMsT0FBT0UsRUFBRUgsT0FBTztJQUFBO0lBQUMsSUFBRyxPQUFPaUMsd0JBQXNCLGFBQVlBLG9CQUFvQkMsRUFBRSxHQUFDQyxTQUFTQSxHQUFDO0lBQUksSUFBSWxDLElBQUUsQ0FBQztJQUFFLENBQUM7UUFBVyxJQUFJUCxJQUFFTztRQUFFUCxFQUFFMEMsTUFBTSxHQUFDMUMsRUFBRTJDLEtBQUssR0FBQ0osb0JBQW9CO1FBQUt2QyxFQUFFNEMsTUFBTSxHQUFDNUMsRUFBRTZDLFNBQVMsR0FBQ04sb0JBQW9CO0lBQUk7SUFBSU8sT0FBT3hDLE9BQU8sR0FBQ0M7QUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3F1ZXJ5c3RyaW5nLWVzMy9pbmRleC5qcz8yNDFmIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXs4MTU6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbix0LG8pe249bnx8XCImXCI7dD10fHxcIj1cIjt2YXIgYT17fTtpZih0eXBlb2YgZSE9PVwic3RyaW5nXCJ8fGUubGVuZ3RoPT09MCl7cmV0dXJuIGF9dmFyIGk9L1xcKy9nO2U9ZS5zcGxpdChuKTt2YXIgdT0xZTM7aWYobyYmdHlwZW9mIG8ubWF4S2V5cz09PVwibnVtYmVyXCIpe3U9by5tYXhLZXlzfXZhciBjPWUubGVuZ3RoO2lmKHU+MCYmYz51KXtjPXV9Zm9yKHZhciBwPTA7cDxjOysrcCl7dmFyIGY9ZVtwXS5yZXBsYWNlKGksXCIlMjBcIikscz1mLmluZGV4T2YodCksXyxsLHksZDtpZihzPj0wKXtfPWYuc3Vic3RyKDAscyk7bD1mLnN1YnN0cihzKzEpfWVsc2V7Xz1mO2w9XCJcIn15PWRlY29kZVVSSUNvbXBvbmVudChfKTtkPWRlY29kZVVSSUNvbXBvbmVudChsKTtpZighaGFzT3duUHJvcGVydHkoYSx5KSl7YVt5XT1kfWVsc2UgaWYocihhW3ldKSl7YVt5XS5wdXNoKGQpfWVsc2V7YVt5XT1bYVt5XSxkXX19cmV0dXJuIGF9O3ZhciByPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1cIltvYmplY3QgQXJyYXldXCJ9fSw1Nzc6ZnVuY3Rpb24oZSl7dmFyIHN0cmluZ2lmeVByaW1pdGl2ZT1mdW5jdGlvbihlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2VcInN0cmluZ1wiOnJldHVybiBlO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gZT9cInRydWVcIjpcImZhbHNlXCI7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIGlzRmluaXRlKGUpP2U6XCJcIjtkZWZhdWx0OnJldHVyblwiXCJ9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG8sYSl7dD10fHxcIiZcIjtvPW98fFwiPVwiO2lmKGU9PT1udWxsKXtlPXVuZGVmaW5lZH1pZih0eXBlb2YgZT09PVwib2JqZWN0XCIpe3JldHVybiBtYXAobihlKSwoZnVuY3Rpb24obil7dmFyIGE9ZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShuKSkrbztpZihyKGVbbl0pKXtyZXR1cm4gbWFwKGVbbl0sKGZ1bmN0aW9uKGUpe3JldHVybiBhK2VuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUoZSkpfSkpLmpvaW4odCl9ZWxzZXtyZXR1cm4gYStlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGVbbl0pKX19KSkuam9pbih0KX1pZighYSlyZXR1cm5cIlwiO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKGEpKStvK2VuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUoZSkpfTt2YXIgcj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09XCJbb2JqZWN0IEFycmF5XVwifTtmdW5jdGlvbiBtYXAoZSxyKXtpZihlLm1hcClyZXR1cm4gZS5tYXAocik7dmFyIG49W107Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe24ucHVzaChyKGVbdF0sdCkpfXJldHVybiBufXZhciBuPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXt2YXIgcj1bXTtmb3IodmFyIG4gaW4gZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikpci5wdXNoKG4pfXJldHVybiByfX19O3ZhciByPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18obil7dmFyIHQ9cltuXTtpZih0IT09dW5kZWZpbmVkKXtyZXR1cm4gdC5leHBvcnRzfXZhciBvPXJbbl09e2V4cG9ydHM6e319O3ZhciBhPXRydWU7dHJ5e2Vbbl0obyxvLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7YT1mYWxzZX1maW5hbGx5e2lmKGEpZGVsZXRlIHJbbl19cmV0dXJuIG8uZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIG49e307IWZ1bmN0aW9uKCl7dmFyIGU9bjtlLmRlY29kZT1lLnBhcnNlPV9fbmNjd3Bja19yZXF1aXJlX18oODE1KTtlLmVuY29kZT1lLnN0cmluZ2lmeT1fX25jY3dwY2tfcmVxdWlyZV9fKDU3Nyl9KCk7bW9kdWxlLmV4cG9ydHM9bn0pKCk7Il0sIm5hbWVzIjpbImUiLCJoYXNPd25Qcm9wZXJ0eSIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiZXhwb3J0cyIsIm4iLCJ0IiwibyIsImEiLCJsZW5ndGgiLCJpIiwic3BsaXQiLCJ1IiwibWF4S2V5cyIsImMiLCJwIiwiZiIsInJlcGxhY2UiLCJzIiwiaW5kZXhPZiIsIl8iLCJsIiwieSIsImQiLCJzdWJzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwidG9TdHJpbmciLCJzdHJpbmdpZnlQcmltaXRpdmUiLCJpc0Zpbml0ZSIsInVuZGVmaW5lZCIsIm1hcCIsImVuY29kZVVSSUNvbXBvbmVudCIsImpvaW4iLCJrZXlzIiwiX19uY2N3cGNrX3JlcXVpcmVfXyIsImFiIiwiX19kaXJuYW1lIiwiZGVjb2RlIiwicGFyc2UiLCJlbmNvZGUiLCJzdHJpbmdpZnkiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/querystring-es3/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.development.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.development.js ***!
\******************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("/**\n * @license React\n * react-dom-server-rendering-stub.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 */ \nif (true) {\n (function() {\n \"use strict\";\n var React = __webpack_require__(/*! next/dist/compiled/react */ \"(rsc)/./node_modules/next/dist/compiled/react/index.js\");\n var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n function error(format) {\n {\n {\n for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format, args);\n }\n }\n }\n function printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n if (stack !== \"\") {\n format += \"%s\";\n args = args.concat([\n stack\n ]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n var argsWithFormat = args.map(function(item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n argsWithFormat.unshift(\"Warning: \" + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n var ReactVersion = \"18.3.0-canary-60a927d04-20240113\";\n var Internals = {\n usingClientEntryPoint: false,\n Events: null,\n Dispatcher: {\n current: null\n }\n };\n function getCrossOriginString(input) {\n if (typeof input === \"string\") {\n return input === \"use-credentials\" ? input : \"\";\n }\n return undefined;\n }\n function getCrossOriginStringAs(as, input) {\n if (as === \"font\") {\n return \"\";\n }\n if (typeof input === \"string\") {\n return input === \"use-credentials\" ? input : \"\";\n }\n return undefined;\n }\n var Dispatcher = Internals.Dispatcher;\n function prefetchDNS(href) {\n {\n if (typeof href !== \"string\" || !href) {\n error(\"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\", getValueDescriptorExpectingObjectForWarning(href));\n } else if (arguments.length > 1) {\n var options = arguments[1];\n if (typeof options === \"object\" && options.hasOwnProperty(\"crossOrigin\")) {\n error(\"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\", getValueDescriptorExpectingEnumForWarning(options));\n } else {\n error(\"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\", getValueDescriptorExpectingEnumForWarning(options));\n }\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\") {\n dispatcher.prefetchDNS(href);\n } // We don't error because preconnect needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function preconnect(href, options) {\n {\n if (typeof href !== \"string\" || !href) {\n error(\"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\", getValueDescriptorExpectingObjectForWarning(href));\n } else if (options != null && typeof options !== \"object\") {\n error(\"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.\", getValueDescriptorExpectingEnumForWarning(options));\n } else if (options != null && typeof options.crossOrigin !== \"string\") {\n error(\"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.\", getValueDescriptorExpectingObjectForWarning(options.crossOrigin));\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\") {\n var crossOrigin = options ? getCrossOriginString(options.crossOrigin) : null;\n dispatcher.preconnect(href, crossOrigin);\n } // We don't error because preconnect needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function preload(href, options) {\n {\n var encountered = \"\";\n if (typeof href !== \"string\" || !href) {\n encountered += \" The `href` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(href) + \".\";\n }\n if (options == null || typeof options !== \"object\") {\n encountered += \" The `options` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(options) + \".\";\n } else if (typeof options.as !== \"string\" || !options.as) {\n encountered += \" The `as` option encountered was \" + getValueDescriptorExpectingObjectForWarning(options.as) + \".\";\n }\n if (encountered) {\n error('ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel=\"preload\" as=\"...\" />` tag.%s', encountered);\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\" && // We check existence because we cannot enforce this function is actually called with the stated type\n typeof options === \"object\" && options !== null && typeof options.as === \"string\") {\n var as = options.as;\n var crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n dispatcher.preload(href, as, {\n crossOrigin: crossOrigin,\n integrity: typeof options.integrity === \"string\" ? options.integrity : undefined,\n nonce: typeof options.nonce === \"string\" ? options.nonce : undefined,\n type: typeof options.type === \"string\" ? options.type : undefined,\n fetchPriority: typeof options.fetchPriority === \"string\" ? options.fetchPriority : undefined,\n referrerPolicy: typeof options.referrerPolicy === \"string\" ? options.referrerPolicy : undefined,\n imageSrcSet: typeof options.imageSrcSet === \"string\" ? options.imageSrcSet : undefined,\n imageSizes: typeof options.imageSizes === \"string\" ? options.imageSizes : undefined\n });\n } // We don't error because preload needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function preloadModule(href, options) {\n {\n var encountered = \"\";\n if (typeof href !== \"string\" || !href) {\n encountered += \" The `href` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(href) + \".\";\n }\n if (options !== undefined && typeof options !== \"object\") {\n encountered += \" The `options` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(options) + \".\";\n } else if (options && \"as\" in options && typeof options.as !== \"string\") {\n encountered += \" The `as` option encountered was \" + getValueDescriptorExpectingObjectForWarning(options.as) + \".\";\n }\n if (encountered) {\n error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel=\"modulepreload\" as=\"...\" />` tag.%s', encountered);\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\") {\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n dispatcher.preloadModule(href, {\n as: typeof options.as === \"string\" && options.as !== \"script\" ? options.as : undefined,\n crossOrigin: crossOrigin,\n integrity: typeof options.integrity === \"string\" ? options.integrity : undefined\n });\n } else {\n dispatcher.preloadModule(href);\n }\n } // We don't error because preload needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function preinit(href, options) {\n {\n if (typeof href !== \"string\" || !href) {\n error(\"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\", getValueDescriptorExpectingObjectForWarning(href));\n } else if (options == null || typeof options !== \"object\") {\n error(\"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.\", getValueDescriptorExpectingEnumForWarning(options));\n } else if (options.as !== \"style\" && options.as !== \"script\") {\n error('ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".', getValueDescriptorExpectingEnumForWarning(options.as));\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\" && options && typeof options.as === \"string\") {\n var as = options.as;\n var crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n var integrity = typeof options.integrity === \"string\" ? options.integrity : undefined;\n var fetchPriority = typeof options.fetchPriority === \"string\" ? options.fetchPriority : undefined;\n if (as === \"style\") {\n dispatcher.preinitStyle(href, typeof options.precedence === \"string\" ? options.precedence : undefined, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n });\n } else if (as === \"script\") {\n dispatcher.preinitScript(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: typeof options.nonce === \"string\" ? options.nonce : undefined\n });\n }\n } // We don't error because preinit needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function preinitModule(href, options) {\n {\n var encountered = \"\";\n if (typeof href !== \"string\" || !href) {\n encountered += \" The `href` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(href) + \".\";\n }\n if (options !== undefined && typeof options !== \"object\") {\n encountered += \" The `options` argument encountered was \" + getValueDescriptorExpectingObjectForWarning(options) + \".\";\n } else if (options && \"as\" in options && options.as !== \"script\") {\n encountered += \" The `as` option encountered was \" + getValueDescriptorExpectingEnumForWarning(options.as) + \".\";\n }\n if (encountered) {\n error(\"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s\", encountered);\n } else {\n var as = options && typeof options.as === \"string\" ? options.as : \"script\";\n switch(as){\n case \"script\":\n {\n break;\n }\n // We have an invalid as type and need to warn\n default:\n {\n var typeOfAs = getValueDescriptorExpectingEnumForWarning(as);\n error('ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\"' + ' but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other' + \" module types will be supported, aligning with the import-attributes proposal. Learn more here:\" + \" (https://github.com/tc39/proposal-import-attributes)\", typeOfAs, href);\n }\n }\n }\n }\n var dispatcher = Dispatcher.current;\n if (dispatcher && typeof href === \"string\") {\n if (typeof options === \"object\" && options !== null) {\n if (options.as == null || options.as === \"script\") {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n dispatcher.preinitModuleScript(href, {\n crossOrigin: crossOrigin,\n integrity: typeof options.integrity === \"string\" ? options.integrity : undefined,\n nonce: typeof options.nonce === \"string\" ? options.nonce : undefined\n });\n }\n } else if (options == null) {\n dispatcher.preinitModuleScript(href);\n }\n } // We don't error because preinit needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n }\n function getValueDescriptorExpectingObjectForWarning(thing) {\n return thing === null ? \"`null`\" : thing === undefined ? \"`undefined`\" : thing === \"\" ? \"an empty string\" : 'something with type \"' + typeof thing + '\"';\n }\n function getValueDescriptorExpectingEnumForWarning(thing) {\n return thing === null ? \"`null`\" : thing === undefined ? \"`undefined`\" : thing === \"\" ? \"an empty string\" : typeof thing === \"string\" ? JSON.stringify(thing) : typeof thing === \"number\" ? \"`\" + thing + \"`\" : 'something with type \"' + typeof thing + '\"';\n }\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; // Since the \"not pending\" value is always the same, we can reuse the\n function resolveDispatcher() {\n // Copied from react/src/ReactHooks.js. It's the same thing but in a\n // different package.\n var dispatcher = ReactCurrentDispatcher.current;\n {\n if (dispatcher === null) {\n error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for\" + \" one of the following reasons:\\n\" + \"1. You might have mismatching versions of React and the renderer (such as React DOM)\\n\" + \"2. You might be breaking the Rules of Hooks\\n\" + \"3. You might have more than one copy of React in the same app\\n\" + \"See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n }\n }\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n return dispatcher;\n }\n function useFormStatus() {\n {\n var dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] We know this exists because of the feature check above.\n return dispatcher.useHostTransitionStatus();\n }\n }\n function useFormState(action, initialState, permalink) {\n {\n var dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n return dispatcher.useFormState(action, initialState, permalink);\n }\n }\n function createPortal() {\n throw new Error(\"createPortal was called on the server. Portals are not currently\" + \" supported on the server. Update your program to conditionally call\" + \" createPortal on the client only.\");\n }\n function flushSync() {\n throw new Error(\"flushSync was called on the server. This is likely caused by a\" + \" function being called during render or in module scope that was\" + \" intended to be called from an effect or event handler. Update your\" + \" to not call flushSync no the server.\");\n } // on the server we just call the callback because there is\n // not update mechanism. Really this should not be called on the\n // server but since the semantics are generally clear enough we\n // can provide this trivial implementation.\n function batchedUpdates(fn, a) {\n return fn(a);\n }\n function experimental_useFormStatus() {\n {\n error(\"useFormStatus is now in canary. Remove the experimental_ prefix. \" + \"The prefixed alias will be removed in an upcoming release.\");\n }\n return useFormStatus();\n }\n function experimental_useFormState(action, initialState, permalink) {\n {\n error(\"useFormState is now in canary. Remove the experimental_ prefix. \" + \"The prefixed alias will be removed in an upcoming release.\");\n }\n return useFormState(action, initialState, permalink);\n }\n exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\n exports.createPortal = createPortal;\n exports.experimental_useFormState = experimental_useFormState;\n exports.experimental_useFormStatus = experimental_useFormStatus;\n exports.flushSync = flushSync;\n exports.preconnect = preconnect;\n exports.prefetchDNS = prefetchDNS;\n exports.preinit = preinit;\n exports.preinitModule = preinitModule;\n exports.preload = preload;\n exports.preloadModule = preloadModule;\n exports.unstable_batchedUpdates = batchedUpdates;\n exports.useFormState = useFormState;\n exports.useFormStatus = useFormStatus;\n exports.version = ReactVersion;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLXNlcnZlci1yZW5kZXJpbmctc3R1Yi5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Q0FRQyxHQUVEO0FBRUEsSUFBSUEsSUFBcUMsRUFBRTtJQUN4QztRQUNIO1FBRUEsSUFBSUMsUUFBUUMsbUJBQU9BLENBQUMsd0ZBQTBCO1FBRTlDLElBQUlDLHVCQUF1QkYsTUFBTUcsa0RBQWtEO1FBRW5GLFNBQVNDLE1BQU1DLE1BQU07WUFDbkI7Z0JBQ0U7b0JBQ0UsSUFBSyxJQUFJQyxRQUFRQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosUUFBUSxJQUFJQSxRQUFRLElBQUksSUFBSUssUUFBUSxHQUFHQSxRQUFRTCxPQUFPSyxRQUFTO3dCQUNqSEYsSUFBSSxDQUFDRSxRQUFRLEVBQUUsR0FBR0osU0FBUyxDQUFDSSxNQUFNO29CQUNwQztvQkFFQUMsYUFBYSxTQUFTUCxRQUFRSTtnQkFDaEM7WUFDRjtRQUNGO1FBRUEsU0FBU0csYUFBYUMsS0FBSyxFQUFFUixNQUFNLEVBQUVJLElBQUk7WUFDdkMsbURBQW1EO1lBQ25ELDZDQUE2QztZQUM3QztnQkFDRSxJQUFJSyx5QkFBeUJaLHFCQUFxQlksc0JBQXNCO2dCQUN4RSxJQUFJQyxRQUFRRCx1QkFBdUJFLGdCQUFnQjtnQkFFbkQsSUFBSUQsVUFBVSxJQUFJO29CQUNoQlYsVUFBVTtvQkFDVkksT0FBT0EsS0FBS1EsTUFBTSxDQUFDO3dCQUFDRjtxQkFBTTtnQkFDNUIsRUFBRSwrREFBK0Q7Z0JBR2pFLElBQUlHLGlCQUFpQlQsS0FBS1UsR0FBRyxDQUFDLFNBQVVDLElBQUk7b0JBQzFDLE9BQU9DLE9BQU9EO2dCQUNoQixJQUFJLCtDQUErQztnQkFFbkRGLGVBQWVJLE9BQU8sQ0FBQyxjQUFjakIsU0FBUyxvRUFBb0U7Z0JBQ2xILDZEQUE2RDtnQkFDN0QsZ0VB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QUErRDtRQUMvRCwyQ0FBMkM7UUFFM0MsU0FBU0UsZUFBZUMsRUFBRSxFQUFFQyxDQUFDO1lBQzNCLE9BQU9ELEdBQUdDO1FBQ1o7UUFFQSxTQUFTQztZQUNQO2dCQUNFOUUsTUFBTSxzRUFBc0U7WUFDOUU7WUFFQSxPQUFPa0U7UUFDVDtRQUNBLFNBQVNhLDBCQUEwQlYsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVM7WUFDaEU7Z0JBQ0V2RSxNQUFNLHFFQUFxRTtZQUM3RTtZQUVBLE9BQU9vRSxhQUFhQyxRQUFRQyxjQUFjQztRQUM1QztRQUVBUywwREFBMEQsR0FBR3ZEO1FBQzdEdUQsb0JBQW9CLEdBQUdSO1FBQ3ZCUSxpQ0FBaUMsR0FBR0Q7UUFDcENDLGtDQUFrQyxHQUFHRjtRQUNyQ0UsaUJBQWlCLEdBQUdOO1FBQ3BCTSxrQkFBa0IsR0FBR3RDO1FBQ3JCc0MsbUJBQW1CLEdBQUc3QztRQUN0QjZDLGVBQWUsR0FBRzFCO1FBQ2xCMEIscUJBQXFCLEdBQUd0QjtRQUN4QnNCLGVBQWUsR0FBR3BDO1FBQ2xCb0MscUJBQXFCLEdBQUczQjtRQUN4QjJCLCtCQUErQixHQUFHTDtRQUNsQ0ssb0JBQW9CLEdBQUdaO1FBQ3ZCWSxxQkFBcUIsR0FBR2Q7UUFDeEJjLGVBQWUsR0FBR3hEO0lBQ2hCO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1zZXJ2ZXItcmVuZGVyaW5nLXN0dWIuZGV2ZWxvcG1lbnQuanM/OGY0NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20tc2VydmVyLXJlbmRlcmluZy1zdHViLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0XCIpO1xuXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcblxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG52YXIgUmVhY3RWZXJzaW9uID0gJzE4LjMuMC1jYW5hcnktNjBhOTI3ZDA0LTIwMjQwMTEzJztcblxudmFyIEludGVybmFscyA9IHtcbiAgdXNpbmdDbGllbnRFbnRyeVBvaW50OiBmYWxzZSxcbiAgRXZlbnRzOiBudWxsLFxuICBEaXNwYXRjaGVyOiB7XG4gICAgY3VycmVudDogbnVsbFxuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRDcm9zc09yaWdpblN0cmluZyhpbnB1dCkge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpbnB1dCA9PT0gJ3VzZS1jcmVkZW50aWFscycgPyBpbnB1dCA6ICcnO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGdldENyb3NzT3JpZ2luU3RyaW5nQXMoYXMsIGlucHV0KSB7XG4gIGlmIChhcyA9PT0gJ2ZvbnQnKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09ICd1c2UtY3JlZGVudGlhbHMnID8gaW5wdXQgOiAnJztcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbnZhciBEaXNwYXRjaGVyID0gSW50ZXJuYWxzLkRpc3BhdGNoZXI7XG5mdW5jdGlvbiBwcmVmZXRjaEROUyhocmVmKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnIHx8ICFocmVmKSB7XG4gICAgICBlcnJvcignUmVhY3RET00ucHJlZmV0Y2hETlMoKTogRXhwZWN0ZWQgdGhlIGBocmVmYCBhcmd1bWVudCAoZmlyc3QpIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZyBidXQgZW5jb3VudGVyZWQgJXMgaW5zdGVhZC4nLCBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKGhyZWYpKTtcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXTtcblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KCdjcm9zc09yaWdpbicpKSB7XG4gICAgICAgIGVycm9yKCdSZWFjdERPTS5wcmVmZXRjaEROUygpOiBFeHBlY3RlZCBvbmx5IG9uZSBhcmd1bWVudCwgYGhyZWZgLCBidXQgZW5jb3VudGVyZWQgJXMgYXMgYSBzZWNvbmQgYXJndW1lbnQgaW5zdGVhZC4gVGhpcyBhcmd1bWVudCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIG9wdGlvbnMgYW5kIGlzIGN1cnJlbnRseSBkaXNhbGxvd2VkLiBJdCBsb29rcyBsaWtlIHRoZSB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gc2V0IGEgY3Jvc3NPcmlnaW4gcHJvcGVydHkgZm9yIHRoaXMgRE5TIGxvb2t1cCBoaW50LiBCcm93c2VycyBkbyBub3QgcGVyZm9ybSBETlMgcXVlcmllcyB1c2luZyBDT1JTIGFuZCBzZXR0aW5nIHRoaXMgYXR0cmlidXRlIG9uIHRoZSByZXNvdXJjZSBoaW50IGhhcyBubyBlZmZlY3QuIFRyeSBjYWxsaW5nIFJlYWN0RE9NLnByZWZldGNoRE5TKCkgd2l0aCBqdXN0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwgYGhyZWZgLicsIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ0VudW1Gb3JXYXJuaW5nKG9wdGlvbnMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKCdSZWFjdERPTS5wcmVmZXRjaEROUygpOiBFeHBlY3RlZCBvbmx5IG9uZSBhcmd1bWVudCwgYGhyZWZgLCBidXQgZW5jb3VudGVyZWQgJXMgYXMgYSBzZWNvbmQgYXJndW1lbnQgaW5zdGVhZC4gVGhpcyBhcmd1bWVudCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIG9wdGlvbnMgYW5kIGlzIGN1cnJlbnRseSBkaXNhbGxvd2VkLiBUcnkgY2FsbGluZyBSZWFjdERPTS5wcmVmZXRjaEROUygpIHdpdGgganVzdCBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGBocmVmYC4nLCBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdFbnVtRm9yV2FybmluZyhvcHRpb25zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGRpc3BhdGNoZXIgPSBEaXNwYXRjaGVyLmN1cnJlbnQ7XG5cbiAgaWYgKGRpc3BhdGNoZXIgJiYgdHlwZW9mIGhyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgZGlzcGF0Y2hlci5wcmVmZXRjaEROUyhocmVmKTtcbiAgfSAvLyBXZSBkb24ndCBlcnJvciBiZWNhdXNlIHByZWNvbm5lY3QgbmVlZHMgdG8gYmUgcmVzaWxpZW50IHRvIGJlaW5nIGNhbGxlZCBpbiBhIHZhcmlldHkgb2Ygc2NvcGVzXG4gIC8vIGFuZCB0aGUgcnVudGltZSBtYXkgbm90IGJlIGNhcGFibGUgb2YgcmVzcG9uZGluZy4gVGhlIGZ1bmN0aW9uIGlzIG9wdGltaXN0aWMgYW5kIG5vdCBjcml0aWNhbFxuICAvLyBzbyB3ZSBmYXZvciBzaWxlbnQgYmFpbG91dCBvdmVyIHdhcm5pbmcgb3IgZXJyb3JpbmcuXG5cbn1cbmZ1bmN0aW9uIHByZWNvbm5lY3QoaHJlZiwgb3B0aW9ucykge1xuICB7XG4gICAgaWYgKHR5cGVvZiBocmVmICE9PSAnc3RyaW5nJyB8fCAhaHJlZikge1xuICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWNvbm5lY3QoKTogRXhwZWN0ZWQgdGhlIGBocmVmYCBhcmd1bWVudCAoZmlyc3QpIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZyBidXQgZW5jb3VudGVyZWQgJXMgaW5zdGVhZC4nLCBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKGhyZWYpKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMgIT0gbnVsbCAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGVycm9yKCdSZWFjdERPTS5wcmVjb25uZWN0KCk6IEV4cGVjdGVkIHRoZSBgb3B0aW9uc2AgYXJndW1lbnQgKHNlY29uZCkgdG8gYmUgYW4gb2JqZWN0IGJ1dCBlbmNvdW50ZXJlZCAlcyBpbnN0ZWFkLiBUaGUgb25seSBzdXBwb3J0ZWQgb3B0aW9uIGF0IHRoaXMgdGltZSBpcyBgY3Jvc3NPcmlnaW5gIHdoaWNoIGFjY2VwdHMgYSBzdHJpbmcuJywgZ2V0VmFsdWVEZXNjcmlwdG9yRXhwZWN0aW5nRW51bUZvcldhcm5pbmcob3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucyAhPSBudWxsICYmIHR5cGVvZiBvcHRpb25zLmNyb3NzT3JpZ2luICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWNvbm5lY3QoKTogRXhwZWN0ZWQgdGhlIGBjcm9zc09yaWdpbmAgb3B0aW9uIChzZWNvbmQgYXJndW1lbnQpIHRvIGJlIGEgc3RyaW5nIGJ1dCBlbmNvdW50ZXJlZCAlcyBpbnN0ZWFkLiBUcnkgcmVtb3ZpbmcgdGhpcyBvcHRpb24gb3IgcGFzc2luZyBhIHN0cmluZyB2YWx1ZSBpbnN0ZWFkLicsIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmcob3B0aW9ucy5jcm9zc09yaWdpbikpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkaXNwYXRjaGVyID0gRGlzcGF0Y2hlci5jdXJyZW50O1xuXG4gIGlmIChkaXNwYXRjaGVyICYmIHR5cGVvZiBocmVmID09PSAnc3RyaW5nJykge1xuICAgIHZhciBjcm9zc09yaWdpbiA9IG9wdGlvbnMgPyBnZXRDcm9zc09yaWdpblN0cmluZyhvcHRpb25zLmNyb3NzT3JpZ2luKSA6IG51bGw7XG4gICAgZGlzcGF0Y2hlci5wcmVjb25uZWN0KGhyZWYsIGNyb3NzT3JpZ2luKTtcbiAgfSAvLyBXZSBkb24ndCBlcnJvciBiZWNhdXNlIHByZWNvbm5lY3QgbmVlZHMgdG8gYmUgcmVzaWxpZW50IHRvIGJlaW5nIGNhbGxlZCBpbiBhIHZhcmlldHkgb2Ygc2NvcGVzXG4gIC8vIGFuZCB0aGUgcnVudGltZSBtYXkgbm90IGJlIGNhcGFibGUgb2YgcmVzcG9uZGluZy4gVGhlIGZ1bmN0aW9uIGlzIG9wdGltaXN0aWMgYW5kIG5vdCBjcml0aWNhbFxuICAvLyBzbyB3ZSBmYXZvciBzaWxlbnQgYmFpbG91dCBvdmVyIHdhcm5pbmcgb3IgZXJyb3JpbmcuXG5cbn1cbmZ1bmN0aW9uIHByZWxvYWQoaHJlZiwgb3B0aW9ucykge1xuICB7XG4gICAgdmFyIGVuY291bnRlcmVkID0gJyc7XG5cbiAgICBpZiAodHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnIHx8ICFocmVmKSB7XG4gICAgICBlbmNvdW50ZXJlZCArPSBcIiBUaGUgYGhyZWZgIGFyZ3VtZW50IGVuY291bnRlcmVkIHdhcyBcIiArIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmcoaHJlZikgKyBcIi5cIjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyA9PSBudWxsIHx8IHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgZW5jb3VudGVyZWQgKz0gXCIgVGhlIGBvcHRpb25zYCBhcmd1bWVudCBlbmNvdW50ZXJlZCB3YXMgXCIgKyBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKG9wdGlvbnMpICsgXCIuXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5hcyAhPT0gJ3N0cmluZycgfHwgIW9wdGlvbnMuYXMpIHtcbiAgICAgIGVuY291bnRlcmVkICs9IFwiIFRoZSBgYXNgIG9wdGlvbiBlbmNvdW50ZXJlZCB3YXMgXCIgKyBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKG9wdGlvbnMuYXMpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgaWYgKGVuY291bnRlcmVkKSB7XG4gICAgICBlcnJvcignUmVhY3RET00ucHJlbG9hZCgpOiBFeHBlY3RlZCB0d28gYXJndW1lbnRzLCBhIG5vbi1lbXB0eSBgaHJlZmAgc3RyaW5nIGFuZCBhbiBgb3B0aW9uc2Agb2JqZWN0IHdpdGggYW4gYGFzYCBwcm9wZXJ0eSB2YWxpZCBmb3IgYSBgPGxpbmsgcmVsPVwicHJlbG9hZFwiIGFzPVwiLi4uXCIgLz5gIHRhZy4lcycsIGVuY291bnRlcmVkKTtcbiAgICB9XG4gIH1cblxuICB2YXIgZGlzcGF0Y2hlciA9IERpc3BhdGNoZXIuY3VycmVudDtcblxuICBpZiAoZGlzcGF0Y2hlciAmJiB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgJiYgLy8gV2UgY2hlY2sgZXhpc3RlbmNlIGJlY2F1c2Ugd2UgY2Fubm90IGVuZm9yY2UgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aCB0aGUgc3RhdGVkIHR5cGVcbiAgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnICYmIG9wdGlvbnMgIT09IG51bGwgJiYgdHlwZW9mIG9wdGlvbnMuYXMgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGFzID0gb3B0aW9ucy5hcztcbiAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKGFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKTtcbiAgICBkaXNwYXRjaGVyLnByZWxvYWQoaHJlZiwgYXMsIHtcbiAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgIGludGVncml0eTogdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdW5kZWZpbmVkLFxuICAgICAgbm9uY2U6IHR5cGVvZiBvcHRpb25zLm5vbmNlID09PSAnc3RyaW5nJyA/IG9wdGlvbnMubm9uY2UgOiB1bmRlZmluZWQsXG4gICAgICB0eXBlOiB0eXBlb2Ygb3B0aW9ucy50eXBlID09PSAnc3RyaW5nJyA/IG9wdGlvbnMudHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgIGZldGNoUHJpb3JpdHk6IHR5cGVvZiBvcHRpb25zLmZldGNoUHJpb3JpdHkgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5mZXRjaFByaW9yaXR5IDogdW5kZWZpbmVkLFxuICAgICAgcmVmZXJyZXJQb2xpY3k6IHR5cGVvZiBvcHRpb25zLnJlZmVycmVyUG9saWN5ID09PSAnc3RyaW5nJyA/IG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgOiB1bmRlZmluZWQsXG4gICAgICBpbWFnZVNyY1NldDogdHlwZW9mIG9wdGlvbnMuaW1hZ2VTcmNTZXQgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5pbWFnZVNyY1NldCA6IHVuZGVmaW5lZCxcbiAgICAgIGltYWdlU2l6ZXM6IHR5cGVvZiBvcHRpb25zLmltYWdlU2l6ZXMgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5pbWFnZVNpemVzIDogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH0gLy8gV2UgZG9uJ3QgZXJyb3IgYmVjYXVzZSBwcmVsb2FkIG5lZWRzIHRvIGJlIHJlc2lsaWVudCB0byBiZWluZyBjYWxsZWQgaW4gYSB2YXJpZXR5IG9mIHNjb3Blc1xuICAvLyBhbmQgdGhlIHJ1bnRpbWUgbWF5IG5vdCBiZSBjYXBhYmxlIG9mIHJlc3BvbmRpbmcuIFRoZSBmdW5jdGlvbiBpcyBvcHRpbWlzdGljIGFuZCBub3QgY3JpdGljYWxcbiAgLy8gc28gd2UgZmF2b3Igc2lsZW50IGJhaWxvdXQgb3ZlciB3YXJuaW5nIG9yIGVycm9yaW5nLlxuXG59XG5mdW5jdGlvbiBwcmVsb2FkTW9kdWxlKGhyZWYsIG9wdGlvbnMpIHtcbiAge1xuICAgIHZhciBlbmNvdW50ZXJlZCA9ICcnO1xuXG4gICAgaWYgKHR5cGVvZiBocmVmICE9PSAnc3RyaW5nJyB8fCAhaHJlZikge1xuICAgICAgZW5jb3VudGVyZWQgKz0gXCIgVGhlIGBocmVmYCBhcmd1bWVudCBlbmNvdW50ZXJlZCB3YXMgXCIgKyBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKGhyZWYpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGVuY291bnRlcmVkICs9IFwiIFRoZSBgb3B0aW9uc2AgYXJndW1lbnQgZW5jb3VudGVyZWQgd2FzIFwiICsgZ2V0VmFsdWVEZXNjcmlwdG9yRXhwZWN0aW5nT2JqZWN0Rm9yV2FybmluZyhvcHRpb25zKSArIFwiLlwiO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucyAmJiAnYXMnIGluIG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMuYXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvdW50ZXJlZCArPSBcIiBUaGUgYGFzYCBvcHRpb24gZW5jb3VudGVyZWQgd2FzIFwiICsgZ2V0VmFsdWVEZXNjcmlwdG9yRXhwZWN0aW5nT2JqZWN0Rm9yV2FybmluZyhvcHRpb25zLmFzKSArIFwiLlwiO1xuICAgIH1cblxuICAgIGlmIChlbmNvdW50ZXJlZCkge1xuICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWxvYWRNb2R1bGUoKTogRXhwZWN0ZWQgdHdvIGFyZ3VtZW50cywgYSBub24tZW1wdHkgYGhyZWZgIHN0cmluZyBhbmQsIG9wdGlvbmFsbHksIGFuIGBvcHRpb25zYCBvYmplY3Qgd2l0aCBhbiBgYXNgIHByb3BlcnR5IHZhbGlkIGZvciBhIGA8bGluayByZWw9XCJtb2R1bGVwcmVsb2FkXCIgYXM9XCIuLi5cIiAvPmAgdGFnLiVzJywgZW5jb3VudGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkaXNwYXRjaGVyID0gRGlzcGF0Y2hlci5jdXJyZW50O1xuXG4gIGlmIChkaXNwYXRjaGVyICYmIHR5cGVvZiBocmVmID09PSAnc3RyaW5nJykge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB2YXIgY3Jvc3NPcmlnaW4gPSBnZXRDcm9zc09yaWdpblN0cmluZ0FzKG9wdGlvbnMuYXMsIG9wdGlvbnMuY3Jvc3NPcmlnaW4pO1xuICAgICAgZGlzcGF0Y2hlci5wcmVsb2FkTW9kdWxlKGhyZWYsIHtcbiAgICAgICAgYXM6IHR5cGVvZiBvcHRpb25zLmFzID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLmFzICE9PSAnc2NyaXB0JyA/IG9wdGlvbnMuYXMgOiB1bmRlZmluZWQsXG4gICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgaW50ZWdyaXR5OiB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaGVyLnByZWxvYWRNb2R1bGUoaHJlZik7XG4gICAgfVxuICB9IC8vIFdlIGRvbid0IGVycm9yIGJlY2F1c2UgcHJlbG9hZCBuZWVkcyB0byBiZSByZXNpbGllbnQgdG8gYmVpbmcgY2FsbGVkIGluIGEgdmFyaWV0eSBvZiBzY29wZXNcbiAgLy8gYW5kIHRoZSBydW50aW1lIG1heSBub3QgYmUgY2FwYWJsZSBvZiByZXNwb25kaW5nLiBUaGUgZnVuY3Rpb24gaXMgb3B0aW1pc3RpYyBhbmQgbm90IGNyaXRpY2FsXG4gIC8vIHNvIHdlIGZhdm9yIHNpbGVudCBiYWlsb3V0IG92ZXIgd2FybmluZyBvciBlcnJvcmluZy5cblxufVxuZnVuY3Rpb24gcHJlaW5pdChocmVmLCBvcHRpb25zKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnIHx8ICFocmVmKSB7XG4gICAgICBlcnJvcignUmVhY3RET00ucHJlaW5pdCgpOiBFeHBlY3RlZCB0aGUgYGhyZWZgIGFyZ3VtZW50IChmaXJzdCkgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nIGJ1dCBlbmNvdW50ZXJlZCAlcyBpbnN0ZWFkLicsIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmcoaHJlZikpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucyA9PSBudWxsIHx8IHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWluaXQoKTogRXhwZWN0ZWQgdGhlIGBvcHRpb25zYCBhcmd1bWVudCAoc2Vjb25kKSB0byBiZSBhbiBvYmplY3Qgd2l0aCBhbiBgYXNgIHByb3BlcnR5IGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgcmVzb3VyY2UgdG8gYmUgcHJlaW5pdGlhbGl6ZWQgYnV0IGVuY291bnRlcmVkICVzIGluc3RlYWQuJywgZ2V0VmFsdWVEZXNjcmlwdG9yRXhwZWN0aW5nRW51bUZvcldhcm5pbmcob3B0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5hcyAhPT0gJ3N0eWxlJyAmJiBvcHRpb25zLmFzICE9PSAnc2NyaXB0Jykge1xuICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWluaXQoKTogRXhwZWN0ZWQgdGhlIGBhc2AgcHJvcGVydHkgaW4gdGhlIGBvcHRpb25zYCBhcmd1bWVudCAoc2Vjb25kKSB0byBjb250YWluIGEgdmFsaWQgdmFsdWUgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiByZXNvdXJjZSB0byBiZSBwcmVpbml0aWFsaXplZCBidXQgZW5jb3VudGVyZWQgJXMgaW5zdGVhZC4gVmFsaWQgdmFsdWVzIGZvciBgYXNgIGFyZSBcInN0eWxlXCIgYW5kIFwic2NyaXB0XCIuJywgZ2V0VmFsdWVEZXNjcmlwdG9yRXhwZWN0aW5nRW51bUZvcldhcm5pbmcob3B0aW9ucy5hcykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkaXNwYXRjaGVyID0gRGlzcGF0Y2hlci5jdXJyZW50O1xuXG4gIGlmIChkaXNwYXRjaGVyICYmIHR5cGVvZiBocmVmID09PSAnc3RyaW5nJyAmJiBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmFzID09PSAnc3RyaW5nJykge1xuICAgIHZhciBhcyA9IG9wdGlvbnMuYXM7XG4gICAgdmFyIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhhcywgb3B0aW9ucy5jcm9zc09yaWdpbik7XG4gICAgdmFyIGludGVncml0eSA9IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmludGVncml0eSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgZmV0Y2hQcmlvcml0eSA9IHR5cGVvZiBvcHRpb25zLmZldGNoUHJpb3JpdHkgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5mZXRjaFByaW9yaXR5IDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGFzID09PSAnc3R5bGUnKSB7XG4gICAgICBkaXNwYXRjaGVyLnByZWluaXRTdHlsZShocmVmLCB0eXBlb2Ygb3B0aW9ucy5wcmVjZWRlbmNlID09PSAnc3RyaW5nJyA/IG9wdGlvbnMucHJlY2VkZW5jZSA6IHVuZGVmaW5lZCwge1xuICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgIGludGVncml0eTogaW50ZWdyaXR5LFxuICAgICAgICBmZXRjaFByaW9yaXR5OiBmZXRjaFByaW9yaXR5XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGFzID09PSAnc2NyaXB0Jykge1xuICAgICAgZGlzcGF0Y2hlci5wcmVpbml0U2NyaXB0KGhyZWYsIHtcbiAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICBpbnRlZ3JpdHk6IGludGVncml0eSxcbiAgICAgICAgZmV0Y2hQcmlvcml0eTogZmV0Y2hQcmlvcml0eSxcbiAgICAgICAgbm9uY2U6IHR5cGVvZiBvcHRpb25zLm5vbmNlID09PSAnc3RyaW5nJyA/IG9wdGlvbnMubm9uY2UgOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSAvLyBXZSBkb24ndCBlcnJvciBiZWNhdXNlIHByZWluaXQgbmVlZHMgdG8gYmUgcmVzaWxpZW50IHRvIGJlaW5nIGNhbGxlZCBpbiBhIHZhcmlldHkgb2Ygc2NvcGVzXG4gIC8vIGFuZCB0aGUgcnVudGltZSBtYXkgbm90IGJlIGNhcGFibGUgb2YgcmVzcG9uZGluZy4gVGhlIGZ1bmN0aW9uIGlzIG9wdGltaXN0aWMgYW5kIG5vdCBjcml0aWNhbFxuICAvLyBzbyB3ZSBmYXZvciBzaWxlbnQgYmFpbG91dCBvdmVyIHdhcm5pbmcgb3IgZXJyb3JpbmcuXG5cbn1cbmZ1bmN0aW9uIHByZWluaXRNb2R1bGUoaHJlZiwgb3B0aW9ucykge1xuICB7XG4gICAgdmFyIGVuY291bnRlcmVkID0gJyc7XG5cbiAgICBpZiAodHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnIHx8ICFocmVmKSB7XG4gICAgICBlbmNvdW50ZXJlZCArPSBcIiBUaGUgYGhyZWZgIGFyZ3VtZW50IGVuY291bnRlcmVkIHdhcyBcIiArIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmcoaHJlZikgKyBcIi5cIjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgZW5jb3VudGVyZWQgKz0gXCIgVGhlIGBvcHRpb25zYCBhcmd1bWVudCBlbmNvdW50ZXJlZCB3YXMgXCIgKyBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdPYmplY3RGb3JXYXJuaW5nKG9wdGlvbnMpICsgXCIuXCI7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zICYmICdhcycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmFzICE9PSAnc2NyaXB0Jykge1xuICAgICAgZW5jb3VudGVyZWQgKz0gXCIgVGhlIGBhc2Agb3B0aW9uIGVuY291bnRlcmVkIHdhcyBcIiArIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ0VudW1Gb3JXYXJuaW5nKG9wdGlvbnMuYXMpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgaWYgKGVuY291bnRlcmVkKSB7XG4gICAgICBlcnJvcignUmVhY3RET00ucHJlaW5pdE1vZHVsZSgpOiBFeHBlY3RlZCB1cCB0byB0d28gYXJndW1lbnRzLCBhIG5vbi1lbXB0eSBgaHJlZmAgc3RyaW5nIGFuZCwgb3B0aW9uYWxseSwgYW4gYG9wdGlvbnNgIG9iamVjdCB3aXRoIGEgdmFsaWQgYGFzYCBwcm9wZXJ0eS4lcycsIGVuY291bnRlcmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFzID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5hcyA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmFzIDogJ3NjcmlwdCc7XG5cbiAgICAgIHN3aXRjaCAoYXMpIHtcbiAgICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIC8vIFdlIGhhdmUgYW4gaW52YWxpZCBhcyB0eXBlIGFuZCBuZWVkIHRvIHdhcm5cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciB0eXBlT2ZBcyA9IGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ0VudW1Gb3JXYXJuaW5nKGFzKTtcblxuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0RE9NLnByZWluaXRNb2R1bGUoKTogQ3VycmVudGx5IHRoZSBvbmx5IHN1cHBvcnRlZCBcImFzXCIgdHlwZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBcInNjcmlwdFwiJyArICcgYnV0IHJlY2VpdmVkIFwiJXNcIiBpbnN0ZWFkLiBUaGlzIHdhcm5pbmcgd2FzIGdlbmVyYXRlZCBmb3IgYGhyZWZgIFwiJXNcIi4gSW4gdGhlIGZ1dHVyZSBvdGhlcicgKyAnIG1vZHVsZSB0eXBlcyB3aWxsIGJlIHN1cHBvcnRlZCwgYWxpZ25pbmcgd2l0aCB0aGUgaW1wb3J0LWF0dHJpYnV0ZXMgcHJvcG9zYWwuIExlYXJuIG1vcmUgaGVyZTonICsgJyAoaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtaW1wb3J0LWF0dHJpYnV0ZXMpJywgdHlwZU9mQXMsIGhyZWYpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZGlzcGF0Y2hlciA9IERpc3BhdGNoZXIuY3VycmVudDtcblxuICBpZiAoZGlzcGF0Y2hlciAmJiB0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnICYmIG9wdGlvbnMgIT09IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmFzID09IG51bGwgfHwgb3B0aW9ucy5hcyA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgdmFyIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhvcHRpb25zLmFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKTtcbiAgICAgICAgZGlzcGF0Y2hlci5wcmVpbml0TW9kdWxlU2NyaXB0KGhyZWYsIHtcbiAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgaW50ZWdyaXR5OiB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbm9uY2U6IHR5cGVvZiBvcHRpb25zLm5vbmNlID09PSAnc3RyaW5nJyA/IG9wdGlvbnMubm9uY2UgOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvcHRpb25zID09IG51bGwpIHtcbiAgICAgIGRpc3BhdGNoZXIucHJlaW5pdE1vZHVsZVNjcmlwdChocmVmKTtcbiAgICB9XG4gIH0gLy8gV2UgZG9uJ3QgZXJyb3IgYmVjYXVzZSBwcmVpbml0IG5lZWRzIHRvIGJlIHJlc2lsaWVudCB0byBiZWluZyBjYWxsZWQgaW4gYSB2YXJpZXR5IG9mIHNjb3Blc1xuICAvLyBhbmQgdGhlIHJ1bnRpbWUgbWF5IG5vdCBiZSBjYXBhYmxlIG9mIHJlc3BvbmRpbmcuIFRoZSBmdW5jdGlvbiBpcyBvcHRpbWlzdGljIGFuZCBub3QgY3JpdGljYWxcbiAgLy8gc28gd2UgZmF2b3Igc2lsZW50IGJhaWxvdXQgb3ZlciB3YXJuaW5nIG9yIGVycm9yaW5nLlxuXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmcodGhpbmcpIHtcbiAgcmV0dXJuIHRoaW5nID09PSBudWxsID8gJ2BudWxsYCcgOiB0aGluZyA9PT0gdW5kZWZpbmVkID8gJ2B1bmRlZmluZWRgJyA6IHRoaW5nID09PSAnJyA/ICdhbiBlbXB0eSBzdHJpbmcnIDogXCJzb21ldGhpbmcgd2l0aCB0eXBlIFxcXCJcIiArIHR5cGVvZiB0aGluZyArIFwiXFxcIlwiO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdFbnVtRm9yV2FybmluZyh0aGluZykge1xuICByZXR1cm4gdGhpbmcgPT09IG51bGwgPyAnYG51bGxgJyA6IHRoaW5nID09PSB1bmRlZmluZWQgPyAnYHVuZGVmaW5lZGAnIDogdGhpbmcgPT09ICcnID8gJ2FuIGVtcHR5IHN0cmluZycgOiB0eXBlb2YgdGhpbmcgPT09ICdzdHJpbmcnID8gSlNPTi5zdHJpbmdpZnkodGhpbmcpIDogdHlwZW9mIHRoaW5nID09PSAnbnVtYmVyJyA/ICdgJyArIHRoaW5nICsgJ2AnIDogXCJzb21ldGhpbmcgd2l0aCB0eXBlIFxcXCJcIiArIHR5cGVvZiB0aGluZyArIFwiXFxcIlwiO1xufVxuXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7IC8vIFNpbmNlIHRoZSBcIm5vdCBwZW5kaW5nXCIgdmFsdWUgaXMgYWx3YXlzIHRoZSBzYW1lLCB3ZSBjYW4gcmV1c2UgdGhlXG5cbmZ1bmN0aW9uIHJlc29sdmVEaXNwYXRjaGVyKCkge1xuICAvLyBDb3BpZWQgZnJvbSByZWFjdC9zcmMvUmVhY3RIb29rcy5qcy4gSXQncyB0aGUgc2FtZSB0aGluZyBidXQgaW4gYVxuICAvLyBkaWZmZXJlbnQgcGFja2FnZS5cbiAgdmFyIGRpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQ7XG5cbiAge1xuICAgIGlmIChkaXNwYXRjaGVyID09PSBudWxsKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICAgIH1cbiAgfSAvLyBXaWxsIHJlc3VsdCBpbiBhIG51bGwgYWNjZXNzIGVycm9yIGlmIGFjY2Vzc2VkIG91dHNpZGUgcmVuZGVyIHBoYXNlLiBXZVxuICAvLyBpbnRlbnRpb25hbGx5IGRvbid0IHRocm93IG91ciBvd24gZXJyb3IgYmVjYXVzZSB0aGlzIGlzIGluIGEgaG90IHBhdGguXG4gIC8vIEFsc28gaGVscHMgZW5zdXJlIHRoaXMgaXMgaW5saW5lZC5cblxuXG4gIHJldHVybiBkaXNwYXRjaGVyO1xufVxuXG5mdW5jdGlvbiB1c2VGb3JtU3RhdHVzKCkge1xuICB7XG4gICAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpOyAvLyAkRmxvd0ZpeE1lW25vdC1hLWZ1bmN0aW9uXSBXZSBrbm93IHRoaXMgZXhpc3RzIGJlY2F1c2Ugb2YgdGhlIGZlYXR1cmUgY2hlY2sgYWJvdmUuXG5cbiAgICByZXR1cm4gZGlzcGF0Y2hlci51c2VIb3N0VHJhbnNpdGlvblN0YXR1cygpO1xuICB9XG59XG5mdW5jdGlvbiB1c2VGb3JtU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICB7XG4gICAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpOyAvLyAkRmxvd0ZpeE1lW25vdC1hLWZ1bmN0aW9uXSBUaGlzIGlzIHVuc3RhYmxlLCB0aHVzIG9wdGlvbmFsXG5cbiAgICByZXR1cm4gZGlzcGF0Y2hlci51c2VGb3JtU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUG9ydGFsKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2NyZWF0ZVBvcnRhbCB3YXMgY2FsbGVkIG9uIHRoZSBzZXJ2ZXIuIFBvcnRhbHMgYXJlIG5vdCBjdXJyZW50bHknICsgJyBzdXBwb3J0ZWQgb24gdGhlIHNlcnZlci4gVXBkYXRlIHlvdXIgcHJvZ3JhbSB0byBjb25kaXRpb25hbGx5IGNhbGwnICsgJyBjcmVhdGVQb3J0YWwgb24gdGhlIGNsaWVudCBvbmx5LicpO1xufVxuZnVuY3Rpb24gZmx1c2hTeW5jKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2ZsdXNoU3luYyB3YXMgY2FsbGVkIG9uIHRoZSBzZXJ2ZXIuIFRoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBhJyArICcgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGR1cmluZyByZW5kZXIgb3IgaW4gbW9kdWxlIHNjb3BlIHRoYXQgd2FzJyArICcgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gYW4gZWZmZWN0IG9yIGV2ZW50IGhhbmRsZXIuIFVwZGF0ZSB5b3VyJyArICcgdG8gbm90IGNhbGwgZmx1c2hTeW5jIG5vIHRoZSBzZXJ2ZXIuJyk7XG59IC8vIG9uIHRoZSBzZXJ2ZXIgd2UganVzdCBjYWxsIHRoZSBjYWxsYmFjayBiZWNhdXNlIHRoZXJlIGlzXG4vLyBub3QgdXBkYXRlIG1lY2hhbmlzbS4gUmVhbGx5IHRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gdGhlXG4vLyBzZXJ2ZXIgYnV0IHNpbmNlIHRoZSBzZW1hbnRpY3MgYXJlIGdlbmVyYWxseSBjbGVhciBlbm91Z2ggd2Vcbi8vIGNhbiBwcm92aWRlIHRoaXMgdHJpdmlhbCBpbXBsZW1lbnRhdGlvbi5cblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoZm4sIGEpIHtcbiAgcmV0dXJuIGZuKGEpO1xufVxuXG5mdW5jdGlvbiBleHBlcmltZW50YWxfdXNlRm9ybVN0YXR1cygpIHtcbiAge1xuICAgIGVycm9yKCd1c2VGb3JtU3RhdHVzIGlzIG5vdyBpbiBjYW5hcnkuIFJlbW92ZSB0aGUgZXhwZXJpbWVudGFsXyBwcmVmaXguICcgKyAnVGhlIHByZWZpeGVkIGFsaWFzIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlLicpO1xuICB9XG5cbiAgcmV0dXJuIHVzZUZvcm1TdGF0dXMoKTtcbn1cbmZ1bmN0aW9uIGV4cGVyaW1lbnRhbF91c2VGb3JtU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICB7XG4gICAgZXJyb3IoJ3VzZUZvcm1TdGF0ZSBpcyBub3cgaW4gY2FuYXJ5LiBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbF8gcHJlZml4LiAnICsgJ1RoZSBwcmVmaXhlZCBhbGlhcyB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZS4nKTtcbiAgfVxuXG4gIHJldHVybiB1c2VGb3JtU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluayk7XG59XG5cbmV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSBJbnRlcm5hbHM7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbCA9IGNyZWF0ZVBvcnRhbDtcbmV4cG9ydHMuZXhwZXJpbWVudGFsX3VzZUZvcm1TdGF0ZSA9IGV4cGVyaW1lbnRhbF91c2VGb3JtU3RhdGU7XG5leHBvcnRzLmV4cGVyaW1lbnRhbF91c2VGb3JtU3RhdHVzID0gZXhwZXJpbWVudGFsX3VzZUZvcm1TdGF0dXM7XG5leHBvcnRzLmZsdXNoU3luYyA9IGZsdXNoU3luYztcbmV4cG9ydHMucHJlY29ubmVjdCA9IHByZWNvbm5lY3Q7XG5leHBvcnRzLnByZWZldGNoRE5TID0gcHJlZmV0Y2hETlM7XG5leHBvcnRzLnByZWluaXQgPSBwcmVpbml0O1xuZXhwb3J0cy5wcmVpbml0TW9kdWxlID0gcHJlaW5pdE1vZHVsZTtcbmV4cG9ydHMucHJlbG9hZCA9IHByZWxvYWQ7XG5leHBvcnRzLnByZWxvYWRNb2R1bGUgPSBwcmVsb2FkTW9kdWxlO1xuZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyA9IGJhdGNoZWRVcGRhdGVzO1xuZXhwb3J0cy51c2VGb3JtU3RhdGUgPSB1c2VGb3JtU3RhdGU7XG5leHBvcnRzLnVzZUZvcm1TdGF0dXMgPSB1c2VGb3JtU3RhdHVzO1xuZXhwb3J0cy52ZXJzaW9uID0gUmVhY3RWZXJzaW9uO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJSZWFjdCIsInJlcXVpcmUiLCJSZWFjdFNoYXJlZEludGVybmFscyIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiZXJyb3IiLCJmb3JtYXQiLCJfbGVuMiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkyIiwicHJpbnRXYXJuaW5nIiwibGV2ZWwiLCJSZWFjdERlYnVnQ3VycmVudEZyYW1lIiwic3RhY2siLCJnZXRTdGFja0FkZGVuZHVtIiwiY29uY2F0IiwiYXJnc1dpdGhGb3JtYXQiLCJtYXAiLCJpdGVtIiwiU3RyaW5nIiwidW5zaGlmdCIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiYXBwbHkiLCJjYWxsIiwiY29uc29sZSIsIlJlYWN0VmVyc2lvbiIsIkludGVybmFscyIsInVzaW5nQ2xpZW50RW50cnlQb2ludCIsIkV2ZW50cyIsIkRpc3BhdGNoZXIiLCJjdXJyZW50IiwiZ2V0Q3Jvc3NPcmlnaW5TdHJpbmciLCJpbnB1dCIsInVuZGVmaW5lZCIsImdldENyb3NzT3JpZ2luU3RyaW5nQXMiLCJhcyIsInByZWZldGNoRE5TIiwiaHJlZiIsImdldFZhbHVlRGVzY3JpcHRvckV4cGVjdGluZ09iamVjdEZvcldhcm5pbmciLCJvcHRpb25zIiwiaGFzT3duUHJvcGVydHkiLCJnZXRWYWx1ZURlc2NyaXB0b3JFeHBlY3RpbmdFbnVtRm9yV2FybmluZyIsImRpc3BhdGNoZXIiLCJwcmVjb25uZWN0IiwiY3Jvc3NPcmlnaW4iLCJwcmVsb2FkIiwiZW5jb3VudGVyZWQiLCJpbnRlZ3JpdHkiLCJub25jZSIsInR5cGUiLCJmZXRjaFByaW9yaXR5IiwicmVmZXJyZXJQb2xpY3kiLCJpbWFnZVNyY1NldCIsImltYWdlU2l6ZXMiLCJwcmVsb2FkTW9kdWxlIiwicHJlaW5pdCIsInByZWluaXRTdHlsZSIsInByZWNlZGVuY2UiLCJwcmVpbml0U2NyaXB0IiwicHJlaW5pdE1vZHVsZSIsInR5cGVPZkFzIiwicHJlaW5pdE1vZHVsZVNjcmlwdCIsInRoaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIiLCJyZXNvbHZlRGlzcGF0Y2hlciIsInVzZUZvcm1TdGF0dXMiLCJ1c2VIb3N0VHJhbnNpdGlvblN0YXR1cyIsInVzZUZvcm1TdGF0ZSIsImFjdGlvbiIsImluaXRpYWxTdGF0ZSIsInBlcm1hbGluayIsImNyZWF0ZVBvcnRhbCIsIkVycm9yIiwiZmx1c2hTeW5jIiwiYmF0Y2hlZFVwZGF0ZXMiLCJmbiIsImEiLCJleHBlcmltZW50YWxfdXNlRm9ybVN0YXR1cyIsImV4cGVyaW1lbnRhbF91c2VGb3JtU3RhdGUiLCJleHBvcnRzIiwidW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMiLCJ2ZXJzaW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.development.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react-dom/server-rendering-stub.js":
/*!****************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react-dom/server-rendering-stub.js ***!
\****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-dom-server-rendering-stub.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react-dom/cjs/react-dom-server-rendering-stub.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9zZXJ2ZXItcmVuZGVyaW5nLXN0dWIuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxJQUFJQSxLQUF5QixFQUFjLEVBRTFDLE1BQU07SUFDTEMsd01BQXlCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL3NlcnZlci1yZW5kZXJpbmctc3R1Yi5qcz9kZmFhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20tc2VydmVyLXJlbmRlcmluZy1zdHViLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS1zZXJ2ZXItcmVuZGVyaW5nLXN0dWIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-dom/server-rendering-stub.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js":
/*!**************************************************************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js ***!
\**************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("/**\n * @license React\n * react-server-dom-webpack-server.edge.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 */ \nif (true) {\n (function() {\n \"use strict\";\n var React = __webpack_require__(/*! react */ \"(rsc)/./node_modules/next/dist/compiled/react/react.shared-subset.js\");\n var ReactDOM = __webpack_require__(/*! react-dom */ \"(rsc)/./node_modules/next/dist/compiled/react-dom/server-rendering-stub.js\");\n var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n function error(format) {\n {\n {\n for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format, args);\n }\n }\n }\n function printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n if (stack !== \"\") {\n format += \"%s\";\n args = args.concat([\n stack\n ]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n var argsWithFormat = args.map(function(item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n argsWithFormat.unshift(\"Warning: \" + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n // -----------------------------------------------------------------------------\n var enablePostpone = false;\n function scheduleWork(callback) {\n setTimeout(callback, 0);\n }\n var VIEW_SIZE = 512;\n var currentView = null;\n var writtenBytes = 0;\n function beginWriting(destination) {\n currentView = new Uint8Array(VIEW_SIZE);\n writtenBytes = 0;\n }\n function writeChunk(destination, chunk) {\n if (chunk.byteLength === 0) {\n return;\n }\n if (chunk.byteLength > VIEW_SIZE) {\n {\n if (precomputedChunkSet.has(chunk)) {\n error(\"A large precomputed chunk was passed to writeChunk without being copied.\" + \" Large chunks get enqueued directly and are not copied. This is incompatible with precomputed chunks because you cannot enqueue the same precomputed chunk twice.\" + ' Use \"cloneChunk\" to make a copy of this large precomputed chunk before writing it. This is a bug in React.');\n }\n }\n // one that is cached by the streaming renderer. We will enqueu\n // it directly and expect it is not re-used\n if (writtenBytes > 0) {\n destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n currentView = new Uint8Array(VIEW_SIZE);\n writtenBytes = 0;\n }\n destination.enqueue(chunk);\n return;\n }\n var bytesToWrite = chunk;\n var allowableBytes = currentView.length - writtenBytes;\n if (allowableBytes < bytesToWrite.byteLength) {\n // this chunk would overflow the current view. We enqueue a full view\n // and start a new view with the remaining chunk\n if (allowableBytes === 0) {\n // the current view is already full, send it\n destination.enqueue(currentView);\n } else {\n // fill up the current view and apply the remaining chunk bytes\n // to a new view.\n currentView.set(bytesToWrite.subarray(0, allowableBytes), writtenBytes); // writtenBytes += allowableBytes; // this can be skipped because we are going to immediately reset the view\n destination.enqueue(currentView);\n bytesToWrite = bytesToWrite.subarray(allowableBytes);\n }\n currentView = new Uint8Array(VIEW_SIZE);\n writtenBytes = 0;\n }\n currentView.set(bytesToWrite, writtenBytes);\n writtenBytes += bytesToWrite.byteLength;\n }\n function writeChunkAndReturn(destination, chunk) {\n writeChunk(destination, chunk); // in web streams there is no backpressure so we can alwas write more\n return true;\n }\n function completeWriting(destination) {\n if (currentView && writtenBytes > 0) {\n destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n currentView = null;\n writtenBytes = 0;\n }\n }\n function close$1(destination) {\n destination.close();\n }\n var textEncoder = new TextEncoder();\n function stringToChunk(content) {\n return textEncoder.encode(content);\n }\n var precomputedChunkSet = new Set();\n function byteLengthOfChunk(chunk) {\n return chunk.byteLength;\n }\n function closeWithError(destination, error) {\n // $FlowFixMe[method-unbinding]\n if (typeof destination.error === \"function\") {\n // $FlowFixMe[incompatible-call]: This is an Error object or the destination accepts other types.\n destination.error(error);\n } else {\n // Earlier implementations doesn't support this method. In that environment you're\n // supposed to throw from a promise returned but we don't return a promise in our\n // approach. We could fork this implementation but this is environment is an edge\n // case to begin with. It's even less common to run this in an older environment.\n // Even then, this is not where errors are supposed to happen and they get reported\n // to a global callback in addition to this anyway. So it's fine just to close this.\n destination.close();\n }\n }\n // eslint-disable-next-line no-unused-vars\n var CLIENT_REFERENCE_TAG = Symbol.for(\"react.client.reference\");\n var SERVER_REFERENCE_TAG = Symbol.for(\"react.server.reference\");\n function isClientReference(reference) {\n return reference.$$typeof === CLIENT_REFERENCE_TAG;\n }\n function isServerReference(reference) {\n return reference.$$typeof === SERVER_REFERENCE_TAG;\n }\n function registerClientReference(proxyImplementation, id, exportName) {\n return registerClientReferenceImpl(proxyImplementation, id + \"#\" + exportName, false);\n }\n function registerClientReferenceImpl(proxyImplementation, id, async) {\n return Object.defineProperties(proxyImplementation, {\n $$typeof: {\n value: CLIENT_REFERENCE_TAG\n },\n $$id: {\n value: id\n },\n $$async: {\n value: async\n }\n });\n } // $FlowFixMe[method-unbinding]\n var FunctionBind = Function.prototype.bind; // $FlowFixMe[method-unbinding]\n var ArraySlice = Array.prototype.slice;\n function bind() {\n // $FlowFixMe[unsupported-syntax]\n var newFn = FunctionBind.apply(this, arguments);\n if (this.$$typeof === SERVER_REFERENCE_TAG) {\n var args = ArraySlice.call(arguments, 1);\n return Object.defineProperties(newFn, {\n $$typeof: {\n value: SERVER_REFERENCE_TAG\n },\n $$id: {\n value: this.$$id\n },\n $$bound: {\n value: this.$$bound ? this.$$bound.concat(args) : args\n },\n bind: {\n value: bind\n }\n });\n }\n return newFn;\n }\n function registerServerReference(reference, id, exportName) {\n return Object.defineProperties(reference, {\n $$typeof: {\n value: SERVER_REFERENCE_TAG\n },\n $$id: {\n value: exportName === null ? id : id + \"#\" + exportName\n },\n $$bound: {\n value: null\n },\n bind: {\n value: bind\n }\n });\n }\n var PROMISE_PROTOTYPE = Promise.prototype;\n var deepProxyHandlers = {\n get: function(target, name, receiver) {\n switch(name){\n // These names are read by the Flight runtime if you end up using the exports object.\n case \"$$typeof\":\n // These names are a little too common. We should probably have a way to\n // have the Flight runtime extract the inner target instead.\n return target.$$typeof;\n case \"$$id\":\n return target.$$id;\n case \"$$async\":\n return target.$$async;\n case \"name\":\n return target.name;\n case \"displayName\":\n return undefined;\n // We need to special case this because createElement reads it if we pass this\n // reference.\n case \"defaultProps\":\n return undefined;\n // Avoid this attempting to be serialized.\n case \"toJSON\":\n return undefined;\n case Symbol.toPrimitive:\n // $FlowFixMe[prop-missing]\n return Object.prototype[Symbol.toPrimitive];\n case \"Provider\":\n throw new Error(\"Cannot render a Client Context Provider on the Server. \" + \"Instead, you can export a Client Component wrapper \" + \"that itself renders a Client Context Provider.\");\n } // eslint-disable-next-line react-internal/safe-string-coercion\n var expression = String(target.name) + \".\" + String(name);\n throw new Error(\"Cannot access \" + expression + \" on the server. \" + \"You cannot dot into a client module from a server component. \" + \"You can only pass the imported name through.\");\n },\n set: function() {\n throw new Error(\"Cannot assign to a client module from a server module.\");\n }\n };\n function getReference(target, name) {\n switch(name){\n // These names are read by the Flight runtime if you end up using the exports object.\n case \"$$typeof\":\n return target.$$typeof;\n case \"$$id\":\n return target.$$id;\n case \"$$async\":\n return target.$$async;\n case \"name\":\n return target.name;\n // We need to special case this because createElement reads it if we pass this\n // reference.\n case \"defaultProps\":\n return undefined;\n // Avoid this attempting to be serialized.\n case \"toJSON\":\n return undefined;\n case Symbol.toPrimitive:\n // $FlowFixMe[prop-missing]\n return Object.prototype[Symbol.toPrimitive];\n case \"__esModule\":\n // Something is conditionally checking which export to use. We'll pretend to be\n // an ESM compat module but then we'll check again on the client.\n var moduleId = target.$$id;\n target.default = registerClientReferenceImpl(function() {\n throw new Error(\"Attempted to call the default export of \" + moduleId + \" from the server \" + \"but it's on the client. It's not possible to invoke a client function from \" + \"the server, it can only be rendered as a Component or passed to props of a \" + \"Client Component.\");\n }, target.$$id + \"#\", target.$$async);\n return true;\n case \"then\":\n if (target.then) {\n // Use a cached value\n return target.then;\n }\n if (!target.$$async) {\n // If this module is expected to return a Promise (such as an AsyncModule) then\n // we should resolve that with a client reference that unwraps the Promise on\n // the client.\n var clientReference = registerClientReferenceImpl({}, target.$$id, true);\n var proxy = new Proxy(clientReference, proxyHandlers); // Treat this as a resolved Promise for React's use()\n target.status = \"fulfilled\";\n target.value = proxy;\n var then = target.then = registerClientReferenceImpl(function then(resolve, reject) {\n // Expose to React.\n return Promise.resolve(resolve(proxy));\n }, // export then we should treat it as a reference to that name.\n target.$$id + \"#then\", false);\n return then;\n } else {\n // Since typeof .then === 'function' is a feature test we'd continue recursing\n // indefinitely if we return a function. Instead, we return an object reference\n // if we check further.\n return undefined;\n }\n }\n var cachedReference = target[name];\n if (!cachedReference) {\n var reference = registerClientReferenceImpl(function() {\n throw new Error(\"Attempted to call \" + String(name) + \"() from the server but \" + String(name) + \" is on the client. \" + \"It's not possible to invoke a client function from the server, it can \" + \"only be rendered as a Component or passed to props of a Client Component.\");\n }, target.$$id + \"#\" + name, target.$$async);\n Object.defineProperty(reference, \"name\", {\n value: name\n });\n cachedReference = target[name] = new Proxy(reference, deepProxyHandlers);\n }\n return cachedReference;\n }\n var proxyHandlers = {\n get: function(target, name, receiver) {\n return getReference(target, name);\n },\n getOwnPropertyDescriptor: function(target, name) {\n var descriptor = Object.getOwnPropertyDescriptor(target, name);\n if (!descriptor) {\n descriptor = {\n value: getReference(target, name),\n writable: false,\n configurable: false,\n enumerable: false\n };\n Object.defineProperty(target, name, descriptor);\n }\n return descriptor;\n },\n getPrototypeOf: function(target) {\n // Pretend to be a Promise in case anyone asks.\n return PROMISE_PROTOTYPE;\n },\n set: function() {\n throw new Error(\"Cannot assign to a client module from a server module.\");\n }\n };\n function createClientModuleProxy(moduleId) {\n var clientReference = registerClientReferenceImpl({}, moduleId, false);\n return new Proxy(clientReference, proxyHandlers);\n }\n function getClientReferenceKey(reference) {\n return reference.$$async ? reference.$$id + \"#async\" : reference.$$id;\n }\n function resolveClientReferenceMetadata(config, clientReference) {\n var modulePath = clientReference.$$id;\n var name = \"\";\n var resolvedModuleData = config[modulePath];\n if (resolvedModuleData) {\n // The potentially aliased name.\n name = resolvedModuleData.name;\n } else {\n // We didn't find this specific export name but we might have the * export\n // which contains this name as well.\n // TODO: It's unfortunate that we now have to parse this string. We should\n // probably go back to encoding path and name separately on the client reference.\n var idx = modulePath.lastIndexOf(\"#\");\n if (idx !== -1) {\n name = modulePath.slice(idx + 1);\n resolvedModuleData = config[modulePath.slice(0, idx)];\n }\n if (!resolvedModuleData) {\n throw new Error('Could not find the module \"' + modulePath + '\" in the React Client Manifest. ' + \"This is probably a bug in the React Server Components bundler.\");\n }\n }\n if (clientReference.$$async === true) {\n return [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name,\n 1\n ];\n } else {\n return [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name\n ];\n }\n }\n function getServerReferenceId(config, serverReference) {\n return serverReference.$$id;\n }\n function getServerReferenceBoundArguments(config, serverReference) {\n return serverReference.$$bound;\n }\n var ReactDOMSharedInternals = ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n var ReactDOMFlightServerDispatcher = {\n prefetchDNS: prefetchDNS,\n preconnect: preconnect,\n preload: preload,\n preloadModule: preloadModule$1,\n preinitStyle: preinitStyle,\n preinitScript: preinitScript,\n preinitModuleScript: preinitModuleScript\n };\n function prefetchDNS(href) {\n {\n if (typeof href === \"string\" && href) {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"D|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n emitHint(request, \"D\", href);\n }\n }\n }\n }\n function preconnect(href, crossOrigin) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"C|\" + (crossOrigin == null ? \"null\" : crossOrigin) + \"|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n if (typeof crossOrigin === \"string\") {\n emitHint(request, \"C\", [\n href,\n crossOrigin\n ]);\n } else {\n emitHint(request, \"C\", href);\n }\n }\n }\n }\n }\n function preload(href, as, options) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"L\";\n if (as === \"image\" && options) {\n key += getImagePreloadKey(href, options.imageSrcSet, options.imageSizes);\n } else {\n key += \"[\" + as + \"]\" + href;\n }\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n var trimmed = trimOptions(options);\n if (trimmed) {\n emitHint(request, \"L\", [\n href,\n as,\n trimmed\n ]);\n } else {\n emitHint(request, \"L\", [\n href,\n as\n ]);\n }\n }\n }\n }\n }\n function preloadModule$1(href, options) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"m|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n var trimmed = trimOptions(options);\n if (trimmed) {\n return emitHint(request, \"m\", [\n href,\n trimmed\n ]);\n } else {\n return emitHint(request, \"m\", href);\n }\n }\n }\n }\n }\n function preinitStyle(href, precedence, options) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"S|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n var trimmed = trimOptions(options);\n if (trimmed) {\n return emitHint(request, \"S\", [\n href,\n typeof precedence === \"string\" ? precedence : 0,\n trimmed\n ]);\n } else if (typeof precedence === \"string\") {\n return emitHint(request, \"S\", [\n href,\n precedence\n ]);\n } else {\n return emitHint(request, \"S\", href);\n }\n }\n }\n }\n }\n function preinitScript(href, options) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"X|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n var trimmed = trimOptions(options);\n if (trimmed) {\n return emitHint(request, \"X\", [\n href,\n trimmed\n ]);\n } else {\n return emitHint(request, \"X\", href);\n }\n }\n }\n }\n }\n function preinitModuleScript(href, options) {\n {\n if (typeof href === \"string\") {\n var request = resolveRequest();\n if (request) {\n var hints = getHints(request);\n var key = \"M|\" + href;\n if (hints.has(key)) {\n // duplicate hint\n return;\n }\n hints.add(key);\n var trimmed = trimOptions(options);\n if (trimmed) {\n return emitHint(request, \"M\", [\n href,\n trimmed\n ]);\n } else {\n return emitHint(request, \"M\", href);\n }\n }\n }\n }\n } // Flight normally encodes undefined as a special character however for directive option\n // arguments we don't want to send unnecessary keys and bloat the payload so we create a\n // trimmed object which omits any keys with null or undefined values.\n // This is only typesafe because these option objects have entirely optional fields where\n // null and undefined represent the same thing as no property.\n function trimOptions(options) {\n if (options == null) return null;\n var hasProperties = false;\n var trimmed = {};\n for(var key in options){\n if (options[key] != null) {\n hasProperties = true;\n trimmed[key] = options[key];\n }\n }\n return hasProperties ? trimmed : null;\n }\n function getImagePreloadKey(href, imageSrcSet, imageSizes) {\n var uniquePart = \"\";\n if (typeof imageSrcSet === \"string\" && imageSrcSet !== \"\") {\n uniquePart += \"[\" + imageSrcSet + \"]\";\n if (typeof imageSizes === \"string\") {\n uniquePart += \"[\" + imageSizes + \"]\";\n }\n } else {\n uniquePart += \"[][]\" + href;\n }\n return \"[image]\" + uniquePart;\n }\n var ReactDOMCurrentDispatcher = ReactDOMSharedInternals.Dispatcher;\n function prepareHostDispatcher() {\n ReactDOMCurrentDispatcher.current = ReactDOMFlightServerDispatcher;\n } // Used to distinguish these contexts from ones used in other renderers.\n // small, smaller than how we encode undefined, and is unambiguous. We could use\n // a different tuple structure to encode this instead but this makes the runtime\n // cost cheaper by eliminating a type checks in more positions.\n // prettier-ignore\n function createHints() {\n return new Set();\n }\n var supportsRequestStorage = typeof AsyncLocalStorage === \"function\";\n var requestStorage = supportsRequestStorage ? new AsyncLocalStorage() : null; // We use the Node version but get access to async_hooks from a global.\n typeof async_hooks === \"object\" ? async_hooks.createHook : function() {\n return {\n enable: function() {},\n disable: function() {}\n };\n };\n typeof async_hooks === \"object\" ? async_hooks.executionAsyncId : null;\n // ATTENTION\n // When adding new symbols to this file,\n // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n // The Symbol used to tag the ReactElement-like types.\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n var REACT_SERVER_CONTEXT_TYPE = Symbol.for(\"react.server_context\");\n var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n var REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\n var REACT_POSTPONE_TYPE = Symbol.for(\"react.postpone\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === \"function\") {\n return maybeIterator;\n }\n return null;\n }\n // Forming a reverse tree.\n // The structure of a context snapshot is an implementation of this file.\n // Currently, it's implemented as tracking the current active node.\n var rootContextSnapshot = null; // We assume that this runtime owns the \"current\" field on all ReactContext instances.\n // This global (actually thread local) state represents what state all those \"current\",\n // fields are currently in.\n var currentActiveSnapshot = null;\n function popNode(prev) {\n {\n prev.context._currentValue = prev.parentValue;\n }\n }\n function pushNode(next) {\n {\n next.context._currentValue = next.value;\n }\n }\n function popToNearestCommonAncestor(prev, next) {\n if (prev === next) ;\n else {\n popNode(prev);\n var parentPrev = prev.parent;\n var parentNext = next.parent;\n if (parentPrev === null) {\n if (parentNext !== null) {\n throw new Error(\"The stacks must reach the root at the same time. This is a bug in React.\");\n }\n } else {\n if (parentNext === null) {\n throw new Error(\"The stacks must reach the root at the same time. This is a bug in React.\");\n }\n popToNearestCommonAncestor(parentPrev, parentNext); // On the way back, we push the new ones that weren't common.\n pushNode(next);\n }\n }\n }\n function popAllPrevious(prev) {\n popNode(prev);\n var parentPrev = prev.parent;\n if (parentPrev !== null) {\n popAllPrevious(parentPrev);\n }\n }\n function pushAllNext(next) {\n var parentNext = next.parent;\n if (parentNext !== null) {\n pushAllNext(parentNext);\n }\n pushNode(next);\n }\n function popPreviousToCommonLevel(prev, next) {\n popNode(prev);\n var parentPrev = prev.parent;\n if (parentPrev === null) {\n throw new Error(\"The depth must equal at least at zero before reaching the root. This is a bug in React.\");\n }\n if (parentPrev.depth === next.depth) {\n // We found the same level. Now we just need to find a shared ancestor.\n popToNearestCommonAncestor(parentPrev, next);\n } else {\n // We must still be deeper.\n popPreviousToCommonLevel(parentPrev, next);\n }\n }\n function popNextToCommonLevel(prev, next) {\n var parentNext = next.parent;\n if (parentNext === null) {\n throw new Error(\"The depth must equal at least at zero before reaching the root. This is a bug in React.\");\n }\n if (prev.depth === parentNext.depth) {\n // We found the same level. Now we just need to find a shared ancestor.\n popToNearestCommonAncestor(prev, parentNext);\n } else {\n // We must still be deeper.\n popNextToCommonLevel(prev, parentNext);\n }\n pushNode(next);\n } // Perform context switching to the new snapshot.\n // To make it cheap to read many contexts, while not suspending, we make the switch eagerly by\n // updating all the context's current values. That way reads, always just read the current value.\n // At the cost of updating contexts even if they're never read by this subtree.\n function switchContext(newSnapshot) {\n // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.\n // We also need to update any new contexts that are now on the stack with the deepest value.\n // The easiest way to update new contexts is to just reapply them in reverse order from the\n // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack\n // for that. Therefore this algorithm is recursive.\n // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.\n // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.\n // 3) Then we reapply new contexts on the way back up the stack.\n var prev = currentActiveSnapshot;\n var next = newSnapshot;\n if (prev !== next) {\n if (prev === null) {\n // $FlowFixMe[incompatible-call]: This has to be non-null since it's not equal to prev.\n pushAllNext(next);\n } else if (next === null) {\n popAllPrevious(prev);\n } else if (prev.depth === next.depth) {\n popToNearestCommonAncestor(prev, next);\n } else if (prev.depth > next.depth) {\n popPreviousToCommonLevel(prev, next);\n } else {\n popNextToCommonLevel(prev, next);\n }\n currentActiveSnapshot = next;\n }\n }\n function getActiveContext() {\n return currentActiveSnapshot;\n }\n function readContext$1(context) {\n var value = context._currentValue;\n return value;\n }\n // Corresponds to ReactFiberWakeable and ReactFizzWakeable modules. Generally,\n // changes to one module should be reflected in the others.\n // TODO: Rename this module and the corresponding Fiber one to \"Thenable\"\n // instead of \"Wakeable\". Or some other more appropriate name.\n // An error that is thrown (e.g. by `use`) to trigger Suspense. If we\n // detect this is caught by userspace, we'll log a warning in development.\n var SuspenseException = new Error(\"Suspense Exception: This is not a real error! It's an implementation \" + \"detail of `use` to interrupt the current render. You must either \" + \"rethrow it immediately, or move the `use` call outside of the \" + \"`try/catch` block. Capturing without rethrowing will lead to \" + \"unexpected behavior.\\n\\n\" + \"To handle async errors, wrap your component in an error boundary, or \" + \"call the promise's `.catch` method and pass the result to `use`\");\n function createThenableState() {\n // The ThenableState is created the first time a component suspends. If it\n // suspends again, we'll reuse the same state.\n return [];\n }\n function noop() {}\n function trackUsedThenable(thenableState, thenable, index) {\n var previous = thenableState[index];\n if (previous === undefined) {\n thenableState.push(thenable);\n } else {\n if (previous !== thenable) {\n // Reuse the previous thenable, and drop the new one. We can assume\n // they represent the same value, because components are idempotent.\n // Avoid an unhandled rejection errors for the Promises that we'll\n // intentionally ignore.\n thenable.then(noop, noop);\n thenable = previous;\n }\n } // We use an expando to track the status and result of a thenable so that we\n // can synchronously unwrap the value. Think of this as an extension of the\n // Promise API, or a custom interface that is a superset of Thenable.\n //\n // If the thenable doesn't have a status, set it to \"pending\" and attach\n // a listener that will update its status and result when it resolves.\n switch(thenable.status){\n case \"fulfilled\":\n {\n var fulfilledValue = thenable.value;\n return fulfilledValue;\n }\n case \"rejected\":\n {\n var rejectedError = thenable.reason;\n throw rejectedError;\n }\n default:\n {\n if (typeof thenable.status === \"string\") ;\n else {\n var pendingThenable = thenable;\n pendingThenable.status = \"pending\";\n pendingThenable.then(function(fulfilledValue) {\n if (thenable.status === \"pending\") {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n }, function(error) {\n if (thenable.status === \"pending\") {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }); // Check one more time in case the thenable resolved synchronously\n switch(thenable.status){\n case \"fulfilled\":\n {\n var fulfilledThenable = thenable;\n return fulfilledThenable.value;\n }\n case \"rejected\":\n {\n var rejectedThenable = thenable;\n throw rejectedThenable.reason;\n }\n }\n } // Suspend.\n //\n // Throwing here is an implementation detail that allows us to unwind the\n // call stack. But we shouldn't allow it to leak into userspace. Throw an\n // opaque placeholder value instead of the actual thenable. If it doesn't\n // get captured by the work loop, log a warning, because that means\n // something in userspace must have caught it.\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n }\n } // This is used to track the actual thenable that suspended so it can be\n // passed to the rest of the Suspense implementation — which, for historical\n // reasons, expects to receive a thenable.\n var suspendedThenable = null;\n function getSuspendedThenable() {\n // This is called right after `use` suspends by throwing an exception. `use`\n // throws an opaque value instead of the thenable itself so that it can't be\n // caught in userspace. Then the work loop accesses the actual thenable using\n // this function.\n if (suspendedThenable === null) {\n throw new Error(\"Expected a suspended thenable. This is a bug in React. Please file \" + \"an issue.\");\n }\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n }\n var currentRequest$1 = null;\n var thenableIndexCounter = 0;\n var thenableState = null;\n function prepareToUseHooksForRequest(request) {\n currentRequest$1 = request;\n }\n function resetHooksForRequest() {\n currentRequest$1 = null;\n }\n function prepareToUseHooksForComponent(prevThenableState) {\n thenableIndexCounter = 0;\n thenableState = prevThenableState;\n }\n function getThenableStateAfterSuspending() {\n var state = thenableState;\n thenableState = null;\n return state;\n }\n function readContext(context) {\n {\n if (context.$$typeof !== REACT_SERVER_CONTEXT_TYPE) {\n if (isClientReference(context)) {\n error(\"Cannot read a Client Context from a Server Component.\");\n } else {\n error(\"Only createServerContext is supported in Server Components.\");\n }\n }\n if (currentRequest$1 === null) {\n error(\"Context can only be read while React is rendering. \" + \"In classes, you can read it in the render method or getDerivedStateFromProps. \" + \"In function components, you can read it directly in the function body, but not \" + \"inside Hooks like useReducer() or useMemo().\");\n }\n }\n return readContext$1(context);\n }\n var HooksDispatcher = {\n useMemo: function(nextCreate) {\n return nextCreate();\n },\n useCallback: function(callback) {\n return callback;\n },\n useDebugValue: function() {},\n useDeferredValue: unsupportedHook,\n useTransition: unsupportedHook,\n readContext: readContext,\n useContext: readContext,\n useReducer: unsupportedHook,\n useRef: unsupportedHook,\n useState: unsupportedHook,\n useInsertionEffect: unsupportedHook,\n useLayoutEffect: unsupportedHook,\n useImperativeHandle: unsupportedHook,\n useEffect: unsupportedHook,\n useId: useId,\n useSyncExternalStore: unsupportedHook,\n useCacheRefresh: function() {\n return unsupportedRefresh;\n },\n useMemoCache: function(size) {\n var data = new Array(size);\n for(var i = 0; i < size; i++){\n data[i] = REACT_MEMO_CACHE_SENTINEL;\n }\n return data;\n },\n use: use\n };\n function unsupportedHook() {\n throw new Error(\"This Hook is not supported in Server Components.\");\n }\n function unsupportedRefresh() {\n throw new Error(\"Refreshing the cache is not supported in Server Components.\");\n }\n function useId() {\n if (currentRequest$1 === null) {\n throw new Error(\"useId can only be used while React is rendering\");\n }\n var id = currentRequest$1.identifierCount++; // use 'S' for Flight components to distinguish from 'R' and 'r' in Fizz/Client\n return \":\" + currentRequest$1.identifierPrefix + \"S\" + id.toString(32) + \":\";\n }\n function use(usable) {\n if (usable !== null && typeof usable === \"object\" || typeof usable === \"function\") {\n // $FlowFixMe[method-unbinding]\n if (typeof usable.then === \"function\") {\n // This is a thenable.\n var thenable = usable; // Track the position of the thenable within this fiber.\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n if (thenableState === null) {\n thenableState = createThenableState();\n }\n return trackUsedThenable(thenableState, thenable, index);\n } else if (usable.$$typeof === REACT_SERVER_CONTEXT_TYPE) {\n var context = usable;\n return readContext(context);\n }\n }\n {\n if (isClientReference(usable)) {\n error(\"Cannot use() an already resolved Client Reference.\");\n }\n }\n throw new Error(\"An unsupported type was passed to use(): \" + String(usable));\n }\n function createSignal() {\n return new AbortController().signal;\n }\n function resolveCache() {\n var request = resolveRequest();\n if (request) {\n return getCache(request);\n }\n return new Map();\n }\n var DefaultCacheDispatcher = {\n getCacheSignal: function() {\n var cache = resolveCache();\n var entry = cache.get(createSignal);\n if (entry === undefined) {\n entry = createSignal();\n cache.set(createSignal, entry);\n }\n return entry;\n },\n getCacheForType: function(resourceType) {\n var cache = resolveCache();\n var entry = cache.get(resourceType);\n if (entry === undefined) {\n entry = resourceType(); // TODO: Warn if undefined?\n cache.set(resourceType, entry);\n }\n return entry;\n }\n };\n var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n function isArray(a) {\n return isArrayImpl(a);\n }\n var getPrototypeOf = Object.getPrototypeOf;\n // in case they error.\n var jsxPropsParents = new WeakMap();\n var jsxChildrenParents = new WeakMap();\n function isObjectPrototype(object) {\n if (!object) {\n return false;\n }\n var ObjectPrototype = Object.prototype;\n if (object === ObjectPrototype) {\n return true;\n } // It might be an object from a different Realm which is\n // still just a plain simple object.\n if (getPrototypeOf(object)) {\n return false;\n }\n var names = Object.getOwnPropertyNames(object);\n for(var i = 0; i < names.length; i++){\n if (!(names[i] in ObjectPrototype)) {\n return false;\n }\n }\n return true;\n }\n function isSimpleObject(object) {\n if (!isObjectPrototype(getPrototypeOf(object))) {\n return false;\n }\n var names = Object.getOwnPropertyNames(object);\n for(var i = 0; i < names.length; i++){\n var descriptor = Object.getOwnPropertyDescriptor(object, names[i]);\n if (!descriptor) {\n return false;\n }\n if (!descriptor.enumerable) {\n if ((names[i] === \"key\" || names[i] === \"ref\") && typeof descriptor.get === \"function\") {\n continue;\n }\n return false;\n }\n }\n return true;\n }\n function objectName(object) {\n // $FlowFixMe[method-unbinding]\n var name = Object.prototype.toString.call(object);\n return name.replace(/^\\[object (.*)\\]$/, function(m, p0) {\n return p0;\n });\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 {\n return JSON.stringify(value.length <= 10 ? value : value.slice(0, 10) + \"...\");\n }\n case \"object\":\n {\n if (isArray(value)) {\n return \"[...]\";\n }\n var name = objectName(value);\n if (name === \"Object\") {\n return \"{...}\";\n }\n return name;\n }\n case \"function\":\n return \"function\";\n default:\n // eslint-disable-next-line react-internal/safe-string-coercion\n return String(value);\n }\n }\n function describeElementType(type) {\n if (typeof type === \"string\") {\n return type;\n }\n switch(type){\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (typeof type === \"object\") {\n 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 {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeElementType(init(payload));\n } catch (x) {}\n }\n }\n }\n return \"\";\n }\n function describeObjectForErrorMessage(objectOrArray, expandedName) {\n var objKind = objectName(objectOrArray);\n if (objKind !== \"Object\" && objKind !== \"Array\") {\n return objKind;\n }\n var str = \"\";\n var start = -1;\n var length = 0;\n if (isArray(objectOrArray)) {\n if (jsxChildrenParents.has(objectOrArray)) {\n // Print JSX Children\n var type = jsxChildrenParents.get(objectOrArray);\n str = \"<\" + describeElementType(type) + \">\";\n var array = objectOrArray;\n for(var i = 0; i < array.length; i++){\n var value = array[i];\n var substr = void 0;\n if (typeof value === \"string\") {\n substr = value;\n } else if (typeof value === \"object\" && value !== null) {\n substr = \"{\" + describeObjectForErrorMessage(value) + \"}\";\n } else {\n substr = \"{\" + describeValueForErrorMessage(value) + \"}\";\n }\n if (\"\" + i === expandedName) {\n start = str.length;\n length = substr.length;\n str += substr;\n } else if (substr.length < 15 && str.length + substr.length < 40) {\n str += substr;\n } else {\n str += \"{...}\";\n }\n }\n str += \"</\" + describeElementType(type) + \">\";\n } else {\n // Print Array\n str = \"[\";\n var _array = objectOrArray;\n for(var _i = 0; _i < _array.length; _i++){\n if (_i > 0) {\n str += \", \";\n }\n var _value = _array[_i];\n var _substr = void 0;\n if (typeof _value === \"object\" && _value !== null) {\n _substr = describeObjectForErrorMessage(_value);\n } else {\n _substr = describeValueForErrorMessage(_value);\n }\n if (\"\" + _i === expandedName) {\n start = str.length;\n length = _substr.length;\n str += _substr;\n } else if (_substr.length < 10 && str.length + _substr.length < 40) {\n str += _substr;\n } else {\n str += \"...\";\n }\n }\n str += \"]\";\n }\n } else {\n if (objectOrArray.$$typeof === REACT_ELEMENT_TYPE) {\n str = \"<\" + describeElementType(objectOrArray.type) + \"/>\";\n } else if (jsxPropsParents.has(objectOrArray)) {\n // Print JSX\n var _type = jsxPropsParents.get(objectOrArray);\n str = \"<\" + (describeElementType(_type) || \"...\");\n var object = objectOrArray;\n var names = Object.keys(object);\n for(var _i2 = 0; _i2 < names.length; _i2++){\n str += \" \";\n var name = names[_i2];\n str += describeKeyForErrorMessage(name) + \"=\";\n var _value2 = object[name];\n var _substr2 = void 0;\n if (name === expandedName && typeof _value2 === \"object\" && _value2 !== null) {\n _substr2 = describeObjectForErrorMessage(_value2);\n } else {\n _substr2 = describeValueForErrorMessage(_value2);\n }\n if (typeof _value2 !== \"string\") {\n _substr2 = \"{\" + _substr2 + \"}\";\n }\n if (name === expandedName) {\n start = str.length;\n length = _substr2.length;\n str += _substr2;\n } else if (_substr2.length < 10 && str.length + _substr2.length < 40) {\n str += _substr2;\n } else {\n str += \"...\";\n }\n }\n str += \">\";\n } else {\n // Print Object\n str = \"{\";\n var _object = objectOrArray;\n var _names = Object.keys(_object);\n for(var _i3 = 0; _i3 < _names.length; _i3++){\n if (_i3 > 0) {\n str += \", \";\n }\n var _name = _names[_i3];\n str += describeKeyForErrorMessage(_name) + \": \";\n var _value3 = _object[_name];\n var _substr3 = void 0;\n if (typeof _value3 === \"object\" && _value3 !== null) {\n _substr3 = describeObjectForErrorMessage(_value3);\n } else {\n _substr3 = describeValueForErrorMessage(_value3);\n }\n if (_name === expandedName) {\n start = str.length;\n length = _substr3.length;\n str += _substr3;\n } else if (_substr3.length < 10 && str.length + _substr3.length < 40) {\n str += _substr3;\n } else {\n str += \"...\";\n }\n }\n str += \"}\";\n }\n }\n if (expandedName === undefined) {\n return str;\n }\n if (start > -1 && length > 0) {\n var highlight = \" \".repeat(start) + \"^\".repeat(length);\n return \"\\n \" + str + \"\\n \" + highlight;\n }\n return \"\\n \" + str;\n }\n var ReactSharedServerInternals = React.__SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (!ReactSharedServerInternals) {\n throw new Error('The \"react\" package in this environment is not configured correctly. ' + 'The \"react-server\" condition must be enabled in any environment that ' + \"runs React Server Components.\");\n }\n var ObjectPrototype = Object.prototype;\n var stringify = JSON.stringify; // Serializable values\n // Thenable<ReactClientValue>\n var PENDING$1 = 0;\n var COMPLETED = 1;\n var ABORTED = 3;\n var ERRORED$1 = 4;\n var ReactCurrentCache = ReactSharedServerInternals.ReactCurrentCache;\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n function defaultErrorHandler(error) {\n console[\"error\"](error); // Don't transform to our wrapper\n }\n function defaultPostponeHandler(reason) {}\n var OPEN = 0;\n var CLOSING = 1;\n var CLOSED = 2;\n function createRequest(model, bundlerConfig, onError, context, identifierPrefix, onPostpone) {\n if (ReactCurrentCache.current !== null && ReactCurrentCache.current !== DefaultCacheDispatcher) {\n throw new Error(\"Currently React only supports one RSC renderer at a time.\");\n }\n prepareHostDispatcher();\n ReactCurrentCache.current = DefaultCacheDispatcher;\n var abortSet = new Set();\n var pingedTasks = [];\n var cleanupQueue = [];\n var hints = createHints();\n var request = {\n status: OPEN,\n flushScheduled: false,\n fatalError: null,\n destination: null,\n bundlerConfig: bundlerConfig,\n cache: new Map(),\n nextChunkId: 0,\n pendingChunks: 0,\n hints: hints,\n abortableTasks: abortSet,\n pingedTasks: pingedTasks,\n completedImportChunks: [],\n completedHintChunks: [],\n completedRegularChunks: [],\n completedErrorChunks: [],\n writtenSymbols: new Map(),\n writtenClientReferences: new Map(),\n writtenServerReferences: new Map(),\n writtenProviders: new Map(),\n writtenObjects: new WeakMap(),\n identifierPrefix: identifierPrefix || \"\",\n identifierCount: 1,\n taintCleanupQueue: cleanupQueue,\n onError: onError === undefined ? defaultErrorHandler : onError,\n onPostpone: onPostpone === undefined ? defaultPostponeHandler : onPostpone,\n // $FlowFixMe[missing-this-annot]\n toJSON: function(key, value) {\n return resolveModelToJSON(request, this, key, value);\n }\n };\n request.pendingChunks++;\n var rootContext = createRootContext();\n var rootTask = createTask(request, model, rootContext, abortSet);\n pingedTasks.push(rootTask);\n return request;\n }\n var currentRequest = null;\n function resolveRequest() {\n if (currentRequest) return currentRequest;\n if (supportsRequestStorage) {\n var store = requestStorage.getStore();\n if (store) return store;\n }\n return null;\n }\n function createRootContext(reqContext) {\n return importServerContexts();\n }\n function serializeThenable(request, thenable) {\n request.pendingChunks++;\n var newTask = createTask(request, null, getActiveContext(), request.abortableTasks);\n switch(thenable.status){\n case \"fulfilled\":\n {\n // We have the resolved value, we can go ahead and schedule it for serialization.\n newTask.model = thenable.value;\n pingTask(request, newTask);\n return newTask.id;\n }\n case \"rejected\":\n {\n var x = thenable.reason;\n {\n var digest = logRecoverableError(request, x);\n emitErrorChunk(request, newTask.id, digest, x);\n }\n return newTask.id;\n }\n default:\n {\n if (typeof thenable.status === \"string\") {\n break;\n }\n var pendingThenable = thenable;\n pendingThenable.status = \"pending\";\n pendingThenable.then(function(fulfilledValue) {\n if (thenable.status === \"pending\") {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n }, function(error) {\n if (thenable.status === \"pending\") {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n });\n break;\n }\n }\n thenable.then(function(value) {\n newTask.model = value;\n pingTask(request, newTask);\n }, function(reason) {\n {\n newTask.status = ERRORED$1;\n var _digest = logRecoverableError(request, reason);\n emitErrorChunk(request, newTask.id, _digest, reason);\n }\n request.abortableTasks.delete(newTask);\n if (request.destination !== null) {\n flushCompletedChunks(request, request.destination);\n }\n });\n return newTask.id;\n }\n function emitHint(request, code, model) {\n emitHintChunk(request, code, model);\n enqueueFlush(request);\n }\n function getHints(request) {\n return request.hints;\n }\n function getCache(request) {\n return request.cache;\n }\n function readThenable(thenable) {\n if (thenable.status === \"fulfilled\") {\n return thenable.value;\n } else if (thenable.status === \"rejected\") {\n throw thenable.reason;\n }\n throw thenable;\n }\n function createLazyWrapperAroundWakeable(wakeable) {\n // This is a temporary fork of the `use` implementation until we accept\n // promises everywhere.\n var thenable = wakeable;\n switch(thenable.status){\n case \"fulfilled\":\n case \"rejected\":\n break;\n default:\n {\n if (typeof thenable.status === \"string\") {\n break;\n }\n var pendingThenable = thenable;\n pendingThenable.status = \"pending\";\n pendingThenable.then(function(fulfilledValue) {\n if (thenable.status === \"pending\") {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n }, function(error) {\n if (thenable.status === \"pending\") {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n });\n break;\n }\n }\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: thenable,\n _init: readThenable\n };\n return lazyType;\n }\n function attemptResolveElement(request, type, key, ref, props, prevThenableState) {\n if (ref !== null && ref !== undefined) {\n // When the ref moves to the regular props object this will implicitly\n // throw for functions. We could probably relax it to a DEV warning for other\n // cases.\n throw new Error(\"Refs cannot be used in Server Components, nor passed to Client Components.\");\n }\n {\n jsxPropsParents.set(props, type);\n if (typeof props.children === \"object\" && props.children !== null) {\n jsxChildrenParents.set(props.children, type);\n }\n }\n if (typeof type === \"function\") {\n if (isClientReference(type)) {\n // This is a reference to a Client Component.\n return [\n REACT_ELEMENT_TYPE,\n type,\n key,\n props\n ];\n } // This is a server-side component.\n prepareToUseHooksForComponent(prevThenableState);\n var result = type(props);\n if (typeof result === \"object\" && result !== null && typeof result.then === \"function\") {\n // When the return value is in children position we can resolve it immediately,\n // to its value without a wrapper if it's synchronously available.\n var thenable = result;\n if (thenable.status === \"fulfilled\") {\n return thenable.value;\n } // TODO: Once we accept Promises as children on the client, we can just return\n // the thenable here.\n return createLazyWrapperAroundWakeable(result);\n }\n return result;\n } else if (typeof type === \"string\") {\n // This is a host element. E.g. HTML.\n return [\n REACT_ELEMENT_TYPE,\n type,\n key,\n props\n ];\n } else if (typeof type === \"symbol\") {\n if (type === REACT_FRAGMENT_TYPE) {\n // For key-less fragments, we add a small optimization to avoid serializing\n // it as a wrapper.\n // TODO: If a key is specified, we should propagate its key to any children.\n // Same as if a Server Component has a key.\n return props.children;\n } // This might be a built-in React component. We'll let the client decide.\n // Any built-in works as long as its props are serializable.\n return [\n REACT_ELEMENT_TYPE,\n type,\n key,\n props\n ];\n } else if (type != null && typeof type === \"object\") {\n if (isClientReference(type)) {\n // This is a reference to a Client Component.\n return [\n REACT_ELEMENT_TYPE,\n type,\n key,\n props\n ];\n }\n switch(type.$$typeof){\n case REACT_LAZY_TYPE:\n {\n var payload = type._payload;\n var init = type._init;\n var wrappedType = init(payload);\n return attemptResolveElement(request, wrappedType, key, ref, props, prevThenableState);\n }\n case REACT_FORWARD_REF_TYPE:\n {\n var render = type.render;\n prepareToUseHooksForComponent(prevThenableState);\n return render(props, undefined);\n }\n case REACT_MEMO_TYPE:\n {\n return attemptResolveElement(request, type.type, key, ref, props, prevThenableState);\n }\n }\n }\n throw new Error(\"Unsupported Server Component type: \" + describeValueForErrorMessage(type));\n }\n function pingTask(request, task) {\n var pingedTasks = request.pingedTasks;\n pingedTasks.push(task);\n if (pingedTasks.length === 1) {\n request.flushScheduled = request.destination !== null;\n scheduleWork(function() {\n return performWork(request);\n });\n }\n }\n function createTask(request, model, context, abortSet) {\n var id = request.nextChunkId++;\n var task = {\n id: id,\n status: PENDING$1,\n model: model,\n context: context,\n ping: function() {\n return pingTask(request, task);\n },\n thenableState: null\n };\n abortSet.add(task);\n return task;\n }\n function serializeByValueID(id) {\n return \"$\" + id.toString(16);\n }\n function serializeLazyID(id) {\n return \"$L\" + id.toString(16);\n }\n function serializePromiseID(id) {\n return \"$@\" + id.toString(16);\n }\n function serializeServerReferenceID(id) {\n return \"$F\" + id.toString(16);\n }\n function serializeSymbolReference(name) {\n return \"$S\" + name;\n }\n function serializeNumber(number) {\n if (Number.isFinite(number)) {\n if (number === 0 && 1 / number === -Infinity) {\n return \"$-0\";\n } else {\n return number;\n }\n } else {\n if (number === Infinity) {\n return \"$Infinity\";\n } else if (number === -Infinity) {\n return \"$-Infinity\";\n } else {\n return \"$NaN\";\n }\n }\n }\n function serializeUndefined() {\n return \"$undefined\";\n }\n function serializeDateFromDateJSON(dateJSON) {\n // JSON.stringify automatically calls Date.prototype.toJSON which calls toISOString.\n // We need only tack on a $D prefix.\n return \"$D\" + dateJSON;\n }\n function serializeBigInt(n) {\n return \"$n\" + n.toString(10);\n }\n function serializeRowHeader(tag, id) {\n return id.toString(16) + \":\" + tag;\n }\n function encodeReferenceChunk(request, id, reference) {\n var json = stringify(reference);\n var row = id.toString(16) + \":\" + json + \"\\n\";\n return stringToChunk(row);\n }\n function serializeClientReference(request, parent, key, clientReference) {\n var clientReferenceKey = getClientReferenceKey(clientReference);\n var writtenClientReferences = request.writtenClientReferences;\n var existingId = writtenClientReferences.get(clientReferenceKey);\n if (existingId !== undefined) {\n if (parent[0] === REACT_ELEMENT_TYPE && key === \"1\") {\n // If we're encoding the \"type\" of an element, we can refer\n // to that by a lazy reference instead of directly since React\n // knows how to deal with lazy values. This lets us suspend\n // on this component rather than its parent until the code has\n // loaded.\n return serializeLazyID(existingId);\n }\n return serializeByValueID(existingId);\n }\n try {\n var clientReferenceMetadata = resolveClientReferenceMetadata(request.bundlerConfig, clientReference);\n request.pendingChunks++;\n var importId = request.nextChunkId++;\n emitImportChunk(request, importId, clientReferenceMetadata);\n writtenClientReferences.set(clientReferenceKey, importId);\n if (parent[0] === REACT_ELEMENT_TYPE && key === \"1\") {\n // If we're encoding the \"type\" of an element, we can refer\n // to that by a lazy reference instead of directly since React\n // knows how to deal with lazy values. This lets us suspend\n // on this component rather than its parent until the code has\n // loaded.\n return serializeLazyID(importId);\n }\n return serializeByValueID(importId);\n } catch (x) {\n request.pendingChunks++;\n var errorId = request.nextChunkId++;\n var digest = logRecoverableError(request, x);\n emitErrorChunk(request, errorId, digest, x);\n return serializeByValueID(errorId);\n }\n }\n function outlineModel(request, value) {\n request.pendingChunks++;\n var newTask = createTask(request, value, getActiveContext(), request.abortableTasks);\n retryTask(request, newTask);\n return newTask.id;\n }\n function serializeServerReference(request, parent, key, serverReference) {\n var writtenServerReferences = request.writtenServerReferences;\n var existingId = writtenServerReferences.get(serverReference);\n if (existingId !== undefined) {\n return serializeServerReferenceID(existingId);\n }\n var bound = getServerReferenceBoundArguments(request.bundlerConfig, serverReference);\n var serverReferenceMetadata = {\n id: getServerReferenceId(request.bundlerConfig, serverReference),\n bound: bound ? Promise.resolve(bound) : null\n };\n var metadataId = outlineModel(request, serverReferenceMetadata);\n writtenServerReferences.set(serverReference, metadataId);\n return serializeServerReferenceID(metadataId);\n }\n function serializeLargeTextString(request, text) {\n request.pendingChunks += 2;\n var textId = request.nextChunkId++;\n var textChunk = stringToChunk(text);\n var binaryLength = byteLengthOfChunk(textChunk);\n var row = textId.toString(16) + \":T\" + binaryLength.toString(16) + \",\";\n var headerChunk = stringToChunk(row);\n request.completedRegularChunks.push(headerChunk, textChunk);\n return serializeByValueID(textId);\n }\n function serializeMap(request, map) {\n var entries = Array.from(map);\n for(var i = 0; i < entries.length; i++){\n var key = entries[i][0];\n if (typeof key === \"object\" && key !== null) {\n var writtenObjects = request.writtenObjects;\n var existingId = writtenObjects.get(key);\n if (existingId === undefined) {\n // Mark all object keys as seen so that they're always outlined.\n writtenObjects.set(key, -1);\n }\n }\n }\n var id = outlineModel(request, entries);\n return \"$Q\" + id.toString(16);\n }\n function serializeSet(request, set) {\n var entries = Array.from(set);\n for(var i = 0; i < entries.length; i++){\n var key = entries[i];\n if (typeof key === \"object\" && key !== null) {\n var writtenObjects = request.writtenObjects;\n var existingId = writtenObjects.get(key);\n if (existingId === undefined) {\n // Mark all object keys as seen so that they're always outlined.\n writtenObjects.set(key, -1);\n }\n }\n }\n var id = outlineModel(request, entries);\n return \"$W\" + id.toString(16);\n }\n function escapeStringValue(value) {\n if (value[0] === \"$\") {\n // We need to escape $ prefixed strings since we use those to encode\n // references to IDs and as special symbol values.\n return \"$\" + value;\n } else {\n return value;\n }\n }\n var modelRoot = false;\n function resolveModelToJSON(request, parent, key, value) {\n // Make sure that `parent[key]` wasn't JSONified before `value` was passed to us\n {\n // $FlowFixMe[incompatible-use]\n var originalValue = parent[key];\n if (typeof originalValue === \"object\" && originalValue !== value && !(originalValue instanceof Date)) {\n if (objectName(originalValue) !== \"Object\") {\n var jsxParentType = jsxChildrenParents.get(parent);\n if (typeof jsxParentType === \"string\") {\n error(\"%s objects cannot be rendered as text children. Try formatting it using toString().%s\", objectName(originalValue), describeObjectForErrorMessage(parent, key));\n } else {\n error(\"Only plain objects can be passed to Client Components from Server Components. \" + \"%s objects are not supported.%s\", objectName(originalValue), describeObjectForErrorMessage(parent, key));\n }\n } else {\n error(\"Only plain objects can be passed to Client Components from Server Components. \" + \"Objects with toJSON methods are not supported. Convert it manually \" + \"to a simple value before passing it to props.%s\", describeObjectForErrorMessage(parent, key));\n }\n }\n }\n switch(value){\n case REACT_ELEMENT_TYPE:\n return \"$\";\n }\n while(typeof value === \"object\" && value !== null && (value.$$typeof === REACT_ELEMENT_TYPE || value.$$typeof === REACT_LAZY_TYPE)){\n try {\n switch(value.$$typeof){\n case REACT_ELEMENT_TYPE:\n {\n var writtenObjects = request.writtenObjects;\n var existingId = writtenObjects.get(value);\n if (existingId !== undefined) {\n if (existingId === -1) {\n // Seen but not yet outlined.\n var newId = outlineModel(request, value);\n return serializeByValueID(newId);\n } else if (modelRoot === value) {\n // This is the ID we're currently emitting so we need to write it\n // once but if we discover it again, we refer to it by id.\n modelRoot = null;\n } else {\n // We've already emitted this as an outlined object, so we can\n // just refer to that by its existing ID.\n return serializeByValueID(existingId);\n }\n } else {\n // This is the first time we've seen this object. We may never see it again\n // so we'll inline it. Mark it as seen. If we see it again, we'll outline.\n writtenObjects.set(value, -1);\n } // TODO: Concatenate keys of parents onto children.\n var element = value; // Attempt to render the Server Component.\n value = attemptResolveElement(request, element.type, element.key, element.ref, element.props, null);\n break;\n }\n case REACT_LAZY_TYPE:\n {\n var payload = value._payload;\n var init = value._init;\n value = init(payload);\n break;\n }\n }\n } catch (thrownValue) {\n var x = thrownValue === SuspenseException ? // reasons, the rest of the Suspense implementation expects the thrown\n // value to be a thenable, because before `use` existed that was the\n // (unstable) API for suspending. This implementation detail can change\n // later, once we deprecate the old API in favor of `use`.\n getSuspendedThenable() : thrownValue;\n if (typeof x === \"object\" && x !== null) {\n // $FlowFixMe[method-unbinding]\n if (typeof x.then === \"function\") {\n // Something suspended, we'll need to create a new task and resolve it later.\n request.pendingChunks++;\n var newTask = createTask(request, value, getActiveContext(), request.abortableTasks);\n var ping = newTask.ping;\n x.then(ping, ping);\n newTask.thenableState = getThenableStateAfterSuspending();\n return serializeLazyID(newTask.id);\n }\n } // Something errored. We'll still send everything we have up until this point.\n // We'll replace this element with a lazy reference that throws on the client\n // once it gets rendered.\n request.pendingChunks++;\n var errorId = request.nextChunkId++;\n var digest = logRecoverableError(request, x);\n emitErrorChunk(request, errorId, digest, x);\n return serializeLazyID(errorId);\n }\n }\n if (value === null) {\n return null;\n }\n if (typeof value === \"object\") {\n if (isClientReference(value)) {\n return serializeClientReference(request, parent, key, value);\n }\n var _writtenObjects = request.writtenObjects;\n var _existingId = _writtenObjects.get(value); // $FlowFixMe[method-unbinding]\n if (typeof value.then === \"function\") {\n if (_existingId !== undefined) {\n if (modelRoot === value) {\n // This is the ID we're currently emitting so we need to write it\n // once but if we discover it again, we refer to it by id.\n modelRoot = null;\n } else {\n // We've seen this promise before, so we can just refer to the same result.\n return serializePromiseID(_existingId);\n }\n } // We assume that any object with a .then property is a \"Thenable\" type,\n // or a Promise type. Either of which can be represented by a Promise.\n var promiseId = serializeThenable(request, value);\n _writtenObjects.set(value, promiseId);\n return serializePromiseID(promiseId);\n }\n if (_existingId !== undefined) {\n if (_existingId === -1) {\n // Seen but not yet outlined.\n var _newId = outlineModel(request, value);\n return serializeByValueID(_newId);\n } else if (modelRoot === value) {\n // This is the ID we're currently emitting so we need to write it\n // once but if we discover it again, we refer to it by id.\n modelRoot = null;\n } else {\n // We've already emitted this as an outlined object, so we can\n // just refer to that by its existing ID.\n return serializeByValueID(_existingId);\n }\n } else {\n // This is the first time we've seen this object. We may never see it again\n // so we'll inline it. Mark it as seen. If we see it again, we'll outline.\n _writtenObjects.set(value, -1);\n }\n if (isArray(value)) {\n // $FlowFixMe[incompatible-return]\n return value;\n }\n if (value instanceof Map) {\n return serializeMap(request, value);\n }\n if (value instanceof Set) {\n return serializeSet(request, value);\n }\n var iteratorFn = getIteratorFn(value);\n if (iteratorFn) {\n return Array.from(value);\n } // Verify that this is a simple plain object.\n var proto = getPrototypeOf(value);\n if (proto !== ObjectPrototype && (proto === null || getPrototypeOf(proto) !== null)) {\n throw new Error(\"Only plain objects, and a few built-ins, can be passed to Client Components \" + \"from Server Components. Classes or null prototypes are not supported.\");\n }\n {\n if (objectName(value) !== \"Object\") {\n error(\"Only plain objects can be passed to Client Components from Server Components. \" + \"%s objects are not supported.%s\", objectName(value), describeObjectForErrorMessage(parent, key));\n } else if (!isSimpleObject(value)) {\n error(\"Only plain objects can be passed to Client Components from Server Components. \" + \"Classes or other objects with methods are not supported.%s\", describeObjectForErrorMessage(parent, key));\n } else if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(value);\n if (symbols.length > 0) {\n error(\"Only plain objects can be passed to Client Components from Server Components. \" + \"Objects with symbol properties like %s are not supported.%s\", symbols[0].description, describeObjectForErrorMessage(parent, key));\n }\n }\n }\n return value;\n }\n if (typeof value === \"string\") {\n if (value[value.length - 1] === \"Z\") {\n // Possibly a Date, whose toJSON automatically calls toISOString\n // $FlowFixMe[incompatible-use]\n var _originalValue = parent[key];\n if (_originalValue instanceof Date) {\n return serializeDateFromDateJSON(value);\n }\n }\n if (value.length >= 1024) {\n // For large strings, we encode them outside the JSON payload so that we\n // don't have to double encode and double parse the strings. This can also\n // be more compact in case the string has a lot of escaped characters.\n return serializeLargeTextString(request, value);\n }\n return escapeStringValue(value);\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return serializeNumber(value);\n }\n if (typeof value === \"undefined\") {\n return serializeUndefined();\n }\n if (typeof value === \"function\") {\n if (isClientReference(value)) {\n return serializeClientReference(request, parent, key, value);\n }\n if (isServerReference(value)) {\n return serializeServerReference(request, parent, key, value);\n }\n if (/^on[A-Z]/.test(key)) {\n throw new Error(\"Event handlers cannot be passed to Client Component props.\" + describeObjectForErrorMessage(parent, key) + \"\\nIf you need interactivity, consider converting part of this to a Client Component.\");\n } else {\n throw new Error(\"Functions cannot be passed directly to Client Components \" + 'unless you explicitly expose it by marking it with \"use server\".' + describeObjectForErrorMessage(parent, key));\n }\n }\n if (typeof value === \"symbol\") {\n var writtenSymbols = request.writtenSymbols;\n var _existingId2 = writtenSymbols.get(value);\n if (_existingId2 !== undefined) {\n return serializeByValueID(_existingId2);\n } // $FlowFixMe[incompatible-type] `description` might be undefined\n var name = value.description;\n if (Symbol.for(name) !== value) {\n throw new Error(\"Only global symbols received from Symbol.for(...) can be passed to Client Components. \" + (\"The symbol Symbol.for(\" + // $FlowFixMe[incompatible-type] `description` might be undefined\n value.description + \") cannot be found among global symbols.\") + describeObjectForErrorMessage(parent, key));\n }\n request.pendingChunks++;\n var symbolId = request.nextChunkId++;\n emitSymbolChunk(request, symbolId, name);\n writtenSymbols.set(value, symbolId);\n return serializeByValueID(symbolId);\n }\n if (typeof value === \"bigint\") {\n return serializeBigInt(value);\n }\n throw new Error(\"Type \" + typeof value + \" is not supported in Client Component props.\" + describeObjectForErrorMessage(parent, key));\n }\n function logPostpone(request, reason) {\n var onPostpone = request.onPostpone;\n onPostpone(reason);\n }\n function logRecoverableError(request, error) {\n var onError = request.onError;\n var errorDigest = onError(error);\n if (errorDigest != null && typeof errorDigest !== \"string\") {\n // eslint-disable-next-line react-internal/prod-error-codes\n throw new Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"' + typeof errorDigest + '\" instead');\n }\n return errorDigest || \"\";\n }\n function fatalError(request, error) {\n if (request.destination !== null) {\n request.status = CLOSED;\n closeWithError(request.destination, error);\n } else {\n request.status = CLOSING;\n request.fatalError = error;\n }\n }\n function emitPostponeChunk(request, id, postponeInstance) {\n var row;\n {\n var reason = \"\";\n var stack = \"\";\n try {\n // eslint-disable-next-line react-internal/safe-string-coercion\n reason = String(postponeInstance.message); // eslint-disable-next-line react-internal/safe-string-coercion\n stack = String(postponeInstance.stack);\n } catch (x) {}\n row = serializeRowHeader(\"P\", id) + stringify({\n reason: reason,\n stack: stack\n }) + \"\\n\";\n }\n var processedChunk = stringToChunk(row);\n request.completedErrorChunks.push(processedChunk);\n }\n function emitErrorChunk(request, id, digest, error) {\n var errorInfo;\n {\n var message;\n var stack = \"\";\n try {\n if (error instanceof Error) {\n // eslint-disable-next-line react-internal/safe-string-coercion\n message = String(error.message); // eslint-disable-next-line react-internal/safe-string-coercion\n stack = String(error.stack);\n } else {\n message = \"Error: \" + error;\n }\n } catch (x) {\n message = \"An error occurred but serializing the error message failed.\";\n }\n errorInfo = {\n digest: digest,\n message: message,\n stack: stack\n };\n }\n var row = serializeRowHeader(\"E\", id) + stringify(errorInfo) + \"\\n\";\n var processedChunk = stringToChunk(row);\n request.completedErrorChunks.push(processedChunk);\n }\n function emitImportChunk(request, id, clientReferenceMetadata) {\n // $FlowFixMe[incompatible-type] stringify can return null\n var json = stringify(clientReferenceMetadata);\n var row = serializeRowHeader(\"I\", id) + json + \"\\n\";\n var processedChunk = stringToChunk(row);\n request.completedImportChunks.push(processedChunk);\n }\n function emitHintChunk(request, code, model) {\n var json = stringify(model);\n var id = request.nextChunkId++;\n var row = serializeRowHeader(\"H\" + code, id) + json + \"\\n\";\n var processedChunk = stringToChunk(row);\n request.completedHintChunks.push(processedChunk);\n }\n function emitSymbolChunk(request, id, name) {\n var symbolReference = serializeSymbolReference(name);\n var processedChunk = encodeReferenceChunk(request, id, symbolReference);\n request.completedImportChunks.push(processedChunk);\n }\n function emitModelChunk(request, id, model) {\n // Track the root so we know that we have to emit this object even though it\n // already has an ID. This is needed because we might see this object twice\n // in the same toJSON if it is cyclic.\n modelRoot = model; // $FlowFixMe[incompatible-type] stringify can return null\n var json = stringify(model, request.toJSON);\n var row = id.toString(16) + \":\" + json + \"\\n\";\n var processedChunk = stringToChunk(row);\n request.completedRegularChunks.push(processedChunk);\n }\n function retryTask(request, task) {\n if (task.status !== PENDING$1) {\n // We completed this by other means before we had a chance to retry it.\n return;\n }\n switchContext(task.context);\n try {\n var value = task.model;\n if (typeof value === \"object\" && value !== null && value.$$typeof === REACT_ELEMENT_TYPE) {\n request.writtenObjects.set(value, task.id); // TODO: Concatenate keys of parents onto children.\n var element = value; // When retrying a component, reuse the thenableState from the\n // previous attempt.\n var prevThenableState = task.thenableState; // Attempt to render the Server Component.\n // Doing this here lets us reuse this same task if the next component\n // also suspends.\n task.model = value;\n value = attemptResolveElement(request, element.type, element.key, element.ref, element.props, prevThenableState); // Successfully finished this component. We're going to keep rendering\n // using the same task, but we reset its thenable state before continuing.\n task.thenableState = null; // Keep rendering and reuse the same task. This inner loop is separate\n // from the render above because we don't need to reset the thenable state\n // until the next time something suspends and retries.\n while(typeof value === \"object\" && value !== null && value.$$typeof === REACT_ELEMENT_TYPE){\n request.writtenObjects.set(value, task.id); // TODO: Concatenate keys of parents onto children.\n var nextElement = value;\n task.model = value;\n value = attemptResolveElement(request, nextElement.type, nextElement.key, nextElement.ref, nextElement.props, null);\n }\n } // Track that this object is outlined and has an id.\n if (typeof value === \"object\" && value !== null) {\n request.writtenObjects.set(value, task.id);\n }\n emitModelChunk(request, task.id, value);\n request.abortableTasks.delete(task);\n task.status = COMPLETED;\n } catch (thrownValue) {\n var x = thrownValue === SuspenseException ? // reasons, the rest of the Suspense implementation expects the thrown\n // value to be a thenable, because before `use` existed that was the\n // (unstable) API for suspending. This implementation detail can change\n // later, once we deprecate the old API in favor of `use`.\n getSuspendedThenable() : thrownValue;\n if (typeof x === \"object\" && x !== null) {\n // $FlowFixMe[method-unbinding]\n if (typeof x.then === \"function\") {\n // Something suspended again, let's pick it back up later.\n var ping = task.ping;\n x.then(ping, ping);\n task.thenableState = getThenableStateAfterSuspending();\n return;\n }\n }\n request.abortableTasks.delete(task);\n task.status = ERRORED$1;\n var digest = logRecoverableError(request, x);\n emitErrorChunk(request, task.id, digest, x);\n }\n }\n function performWork(request) {\n var prevDispatcher = ReactCurrentDispatcher.current;\n ReactCurrentDispatcher.current = HooksDispatcher;\n var prevRequest = currentRequest;\n currentRequest = request;\n prepareToUseHooksForRequest(request);\n try {\n var pingedTasks = request.pingedTasks;\n request.pingedTasks = [];\n for(var i = 0; i < pingedTasks.length; i++){\n var task = pingedTasks[i];\n retryTask(request, task);\n }\n if (request.destination !== null) {\n flushCompletedChunks(request, request.destination);\n }\n } catch (error) {\n logRecoverableError(request, error);\n fatalError(request, error);\n } finally{\n ReactCurrentDispatcher.current = prevDispatcher;\n resetHooksForRequest();\n currentRequest = prevRequest;\n }\n }\n function abortTask(task, request, errorId) {\n task.status = ABORTED; // Instead of emitting an error per task.id, we emit a model that only\n // has a single value referencing the error.\n var ref = serializeByValueID(errorId);\n var processedChunk = encodeReferenceChunk(request, task.id, ref);\n request.completedErrorChunks.push(processedChunk);\n }\n function flushCompletedChunks(request, destination) {\n beginWriting();\n try {\n // We emit module chunks first in the stream so that\n // they can be preloaded as early as possible.\n var importsChunks = request.completedImportChunks;\n var i = 0;\n for(; i < importsChunks.length; i++){\n request.pendingChunks--;\n var chunk = importsChunks[i];\n var keepWriting = writeChunkAndReturn(destination, chunk);\n if (!keepWriting) {\n request.destination = null;\n i++;\n break;\n }\n }\n importsChunks.splice(0, i); // Next comes hints.\n var hintChunks = request.completedHintChunks;\n i = 0;\n for(; i < hintChunks.length; i++){\n var _chunk = hintChunks[i];\n var _keepWriting = writeChunkAndReturn(destination, _chunk);\n if (!_keepWriting) {\n request.destination = null;\n i++;\n break;\n }\n }\n hintChunks.splice(0, i); // Next comes model data.\n var regularChunks = request.completedRegularChunks;\n i = 0;\n for(; i < regularChunks.length; i++){\n request.pendingChunks--;\n var _chunk2 = regularChunks[i];\n var _keepWriting2 = writeChunkAndReturn(destination, _chunk2);\n if (!_keepWriting2) {\n request.destination = null;\n i++;\n break;\n }\n }\n regularChunks.splice(0, i); // Finally, errors are sent. The idea is that it's ok to delay\n // any error messages and prioritize display of other parts of\n // the page.\n var errorChunks = request.completedErrorChunks;\n i = 0;\n for(; i < errorChunks.length; i++){\n request.pendingChunks--;\n var _chunk3 = errorChunks[i];\n var _keepWriting3 = writeChunkAndReturn(destination, _chunk3);\n if (!_keepWriting3) {\n request.destination = null;\n i++;\n break;\n }\n }\n errorChunks.splice(0, i);\n } finally{\n request.flushScheduled = false;\n completeWriting(destination);\n }\n if (request.pendingChunks === 0) {\n close$1(destination);\n }\n }\n function startWork(request) {\n request.flushScheduled = request.destination !== null;\n if (supportsRequestStorage) {\n scheduleWork(function() {\n return requestStorage.run(request, performWork, request);\n });\n } else {\n scheduleWork(function() {\n return performWork(request);\n });\n }\n }\n function enqueueFlush(request) {\n if (request.flushScheduled === false && // If there are pinged tasks we are going to flush anyway after work completes\n request.pingedTasks.length === 0 && // If there is no destination there is nothing we can flush to. A flush will\n // happen when we start flowing again\n request.destination !== null) {\n var destination = request.destination;\n request.flushScheduled = true;\n scheduleWork(function() {\n return flushCompletedChunks(request, destination);\n });\n }\n }\n function startFlowing(request, destination) {\n if (request.status === CLOSING) {\n request.status = CLOSED;\n closeWithError(destination, request.fatalError);\n return;\n }\n if (request.status === CLOSED) {\n return;\n }\n if (request.destination !== null) {\n // We're already flowing.\n return;\n }\n request.destination = destination;\n try {\n flushCompletedChunks(request, destination);\n } catch (error) {\n logRecoverableError(request, error);\n fatalError(request, error);\n }\n }\n function stopFlowing(request) {\n request.destination = null;\n } // This is called to early terminate a request. It creates an error at all pending tasks.\n function abort(request, reason) {\n try {\n var abortableTasks = request.abortableTasks;\n if (abortableTasks.size > 0) {\n // We have tasks to abort. We'll emit one error row and then emit a reference\n // to that row from every row that's still remaining.\n request.pendingChunks++;\n var errorId = request.nextChunkId++;\n var postponeInstance;\n if (enablePostpone && typeof reason === \"object\" && reason !== null && reason.$$typeof === REACT_POSTPONE_TYPE) ;\n else {\n var error = reason === undefined ? new Error(\"The render was aborted by the server without a reason.\") : reason;\n var digest = logRecoverableError(request, error);\n emitErrorChunk(request, errorId, digest, error);\n }\n abortableTasks.forEach(function(task) {\n return abortTask(task, request, errorId);\n });\n abortableTasks.clear();\n }\n if (request.destination !== null) {\n flushCompletedChunks(request, request.destination);\n }\n } catch (error) {\n logRecoverableError(request, error);\n fatalError(request, error);\n }\n }\n function importServerContexts(contexts) {\n return rootContextSnapshot;\n }\n // This is the parsed shape of the wire format which is why it is\n // condensed to only the essentialy information\n var ID = 0;\n var CHUNKS = 1;\n var NAME = 2; // export const ASYNC = 3;\n // This logic is correct because currently only include the 4th tuple member\n // when the module is async. If that changes we will need to actually assert\n // the value is true. We don't index into the 4th slot because flow does not\n // like the potential out of bounds access\n function isAsyncImport(metadata) {\n return metadata.length === 4;\n }\n function resolveServerReference(bundlerConfig, id) {\n var name = \"\";\n var resolvedModuleData = bundlerConfig[id];\n if (resolvedModuleData) {\n // The potentially aliased name.\n name = resolvedModuleData.name;\n } else {\n // We didn't find this specific export name but we might have the * export\n // which contains this name as well.\n // TODO: It's unfortunate that we now have to parse this string. We should\n // probably go back to encoding path and name separately on the client reference.\n var idx = id.lastIndexOf(\"#\");\n if (idx !== -1) {\n name = id.slice(idx + 1);\n resolvedModuleData = bundlerConfig[id.slice(0, idx)];\n }\n if (!resolvedModuleData) {\n throw new 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 } // TODO: This needs to return async: true if it's an async module.\n return [\n resolvedModuleData.id,\n resolvedModuleData.chunks,\n name\n ];\n } // The chunk cache contains all the chunks we've preloaded so far.\n // If they're still pending they're a thenable. This map also exists\n // in Webpack but unfortunately it's not exposed so we have to\n // replicate it in user space. null means that it has already loaded.\n var chunkCache = new Map();\n function requireAsyncModule(id) {\n // We've already loaded all the chunks. We can require the module.\n var promise = globalThis.__next_require__(id);\n if (typeof promise.then !== \"function\") {\n // This wasn't a promise after all.\n return null;\n } else if (promise.status === \"fulfilled\") {\n // This module was already resolved earlier.\n return null;\n } else {\n // Instrument the Promise to stash the result.\n promise.then(function(value) {\n var fulfilledThenable = promise;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = value;\n }, function(reason) {\n var rejectedThenable = promise;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = reason;\n });\n return promise;\n }\n }\n function ignoreReject() {} // Start preloading the modules since we might need them soon.\n // This function doesn't suspend.\n function preloadModule(metadata) {\n var chunks = metadata[CHUNKS];\n var promises = [];\n var i = 0;\n while(i < chunks.length){\n var chunkId = chunks[i++];\n chunks[i++];\n var entry = chunkCache.get(chunkId);\n if (entry === undefined) {\n var thenable = loadChunk(chunkId);\n promises.push(thenable); // $FlowFixMe[method-unbinding]\n var resolve = chunkCache.set.bind(chunkCache, chunkId, null);\n thenable.then(resolve, ignoreReject);\n chunkCache.set(chunkId, thenable);\n } else if (entry !== null) {\n promises.push(entry);\n }\n }\n if (isAsyncImport(metadata)) {\n if (promises.length === 0) {\n return requireAsyncModule(metadata[ID]);\n } else {\n return Promise.all(promises).then(function() {\n return requireAsyncModule(metadata[ID]);\n });\n }\n } else if (promises.length > 0) {\n return Promise.all(promises);\n } else {\n return null;\n }\n } // Actually require the module or suspend if it's not yet ready.\n // Increase priority if necessary.\n function requireModule(metadata) {\n var moduleExports = globalThis.__next_require__(metadata[ID]);\n if (isAsyncImport(metadata)) {\n if (typeof moduleExports.then !== \"function\") ;\n else if (moduleExports.status === \"fulfilled\") {\n // This Promise should've been instrumented by preloadModule.\n moduleExports = moduleExports.value;\n } else {\n throw moduleExports.reason;\n }\n }\n if (metadata[NAME] === \"*\") {\n // This is a placeholder value that represents that the caller imported this\n // as a CommonJS module as is.\n return moduleExports;\n }\n if (metadata[NAME] === \"\") {\n // This is a placeholder value that represents that the caller accessed the\n // default property of this if it was an ESM interop module.\n return moduleExports.__esModule ? moduleExports.default : moduleExports;\n }\n return moduleExports[metadata[NAME]];\n }\n function loadChunk(chunkId, filename) {\n return __webpack_require__.e(chunkId);\n }\n // The server acts as a Client of itself when resolving Server References.\n var PENDING = \"pending\";\n var BLOCKED = \"blocked\";\n var RESOLVED_MODEL = \"resolved_model\";\n var INITIALIZED = \"fulfilled\";\n var ERRORED = \"rejected\"; // $FlowFixMe[missing-this-annot]\n function Chunk(status, value, reason, response) {\n this.status = status;\n this.value = value;\n this.reason = reason;\n this._response = response;\n } // We subclass Promise.prototype so that we get other methods like .catch\n Chunk.prototype = Object.create(Promise.prototype); // TODO: This doesn't return a new Promise chain unlike the real .then\n Chunk.prototype.then = function(resolve, reject) {\n var chunk = this; // If we have resolved content, we try to initialize it first which\n // might put us back into one of the other states.\n switch(chunk.status){\n case RESOLVED_MODEL:\n initializeModelChunk(chunk);\n break;\n } // The status might have changed after initialization.\n switch(chunk.status){\n case INITIALIZED:\n resolve(chunk.value);\n break;\n case PENDING:\n case BLOCKED:\n if (resolve) {\n if (chunk.value === null) {\n chunk.value = [];\n }\n chunk.value.push(resolve);\n }\n if (reject) {\n if (chunk.reason === null) {\n chunk.reason = [];\n }\n chunk.reason.push(reject);\n }\n break;\n default:\n reject(chunk.reason);\n break;\n }\n };\n function getRoot(response) {\n var chunk = getChunk(response, 0);\n return chunk;\n }\n function createPendingChunk(response) {\n // $FlowFixMe[invalid-constructor] Flow doesn't support functions as constructors\n return new Chunk(PENDING, null, null, response);\n }\n function wakeChunk(listeners, value) {\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n listener(value);\n }\n }\n function triggerErrorOnChunk(chunk, error) {\n if (chunk.status !== PENDING && chunk.status !== BLOCKED) {\n // We already resolved. We didn't expect to see this.\n return;\n }\n var listeners = chunk.reason;\n var erroredChunk = chunk;\n erroredChunk.status = ERRORED;\n erroredChunk.reason = error;\n if (listeners !== null) {\n wakeChunk(listeners, error);\n }\n }\n function createResolvedModelChunk(response, value) {\n // $FlowFixMe[invalid-constructor] Flow doesn't support functions as constructors\n return new Chunk(RESOLVED_MODEL, value, null, response);\n }\n function bindArgs$1(fn, args) {\n return fn.bind.apply(fn, [\n null\n ].concat(args));\n }\n function loadServerReference$1(response, id, bound, parentChunk, parentObject, key) {\n var serverReference = resolveServerReference(response._bundlerConfig, id); // We expect most servers to not really need this because you'd just have all\n // the relevant modules already loaded but it allows for lazy loading of code\n // if needed.\n var preloadPromise = preloadModule(serverReference);\n var promise;\n if (bound) {\n promise = Promise.all([\n bound,\n preloadPromise\n ]).then(function(_ref) {\n var args = _ref[0];\n return bindArgs$1(requireModule(serverReference), args);\n });\n } else {\n if (preloadPromise) {\n promise = Promise.resolve(preloadPromise).then(function() {\n return requireModule(serverReference);\n });\n } else {\n // Synchronously available\n return requireModule(serverReference);\n }\n }\n promise.then(createModelResolver(parentChunk, parentObject, key), createModelReject(parentChunk)); // We need a placeholder value that will be replaced later.\n return null;\n }\n var initializingChunk = null;\n var initializingChunkBlockedModel = null;\n function initializeModelChunk(chunk) {\n var prevChunk = initializingChunk;\n var prevBlocked = initializingChunkBlockedModel;\n initializingChunk = chunk;\n initializingChunkBlockedModel = null;\n try {\n var value = JSON.parse(chunk.value, chunk._response._fromJSON);\n if (initializingChunkBlockedModel !== null && initializingChunkBlockedModel.deps > 0) {\n initializingChunkBlockedModel.value = value; // We discovered new dependencies on modules that are not yet resolved.\n // We have to go the BLOCKED state until they're resolved.\n var blockedChunk = chunk;\n blockedChunk.status = BLOCKED;\n blockedChunk.value = null;\n blockedChunk.reason = null;\n } else {\n var initializedChunk = chunk;\n initializedChunk.status = INITIALIZED;\n initializedChunk.value = value;\n }\n } catch (error) {\n var erroredChunk = chunk;\n erroredChunk.status = ERRORED;\n erroredChunk.reason = error;\n } finally{\n initializingChunk = prevChunk;\n initializingChunkBlockedModel = prevBlocked;\n }\n } // Report that any missing chunks in the model is now going to throw this\n // error upon read. Also notify any pending promises.\n function reportGlobalError(response, error) {\n response._chunks.forEach(function(chunk) {\n // If this chunk was already resolved or errored, it won't\n // trigger an error but if it wasn't then we need to\n // because we won't be getting any new data to resolve it.\n if (chunk.status === PENDING) {\n triggerErrorOnChunk(chunk, error);\n }\n });\n }\n function getChunk(response, id) {\n var chunks = response._chunks;\n var chunk = chunks.get(id);\n if (!chunk) {\n var prefix = response._prefix;\n var key = prefix + id; // Check if we have this field in the backing store already.\n var backingEntry = response._formData.get(key);\n if (backingEntry != null) {\n // We assume that this is a string entry for now.\n chunk = createResolvedModelChunk(response, backingEntry);\n } else {\n // We're still waiting on this entry to stream in.\n chunk = createPendingChunk(response);\n }\n chunks.set(id, chunk);\n }\n return chunk;\n }\n function createModelResolver(chunk, parentObject, key) {\n var blocked;\n if (initializingChunkBlockedModel) {\n blocked = initializingChunkBlockedModel;\n blocked.deps++;\n } else {\n blocked = initializingChunkBlockedModel = {\n deps: 1,\n value: null\n };\n }\n return function(value) {\n parentObject[key] = value;\n blocked.deps--;\n if (blocked.deps === 0) {\n if (chunk.status !== BLOCKED) {\n return;\n }\n var resolveListeners = chunk.value;\n var initializedChunk = chunk;\n initializedChunk.status = INITIALIZED;\n initializedChunk.value = blocked.value;\n if (resolveListeners !== null) {\n wakeChunk(resolveListeners, blocked.value);\n }\n }\n };\n }\n function createModelReject(chunk) {\n return function(error) {\n return triggerErrorOnChunk(chunk, error);\n };\n }\n function getOutlinedModel(response, id) {\n var chunk = getChunk(response, id);\n if (chunk.status === RESOLVED_MODEL) {\n initializeModelChunk(chunk);\n }\n if (chunk.status !== INITIALIZED) {\n // We know that this is emitted earlier so otherwise it's an error.\n throw chunk.reason;\n }\n return chunk.value;\n }\n function parseModelString(response, parentObject, key, value) {\n if (value[0] === \"$\") {\n switch(value[1]){\n case \"$\":\n {\n // This was an escaped string value.\n return value.slice(1);\n }\n case \"@\":\n {\n // Promise\n var id = parseInt(value.slice(2), 16);\n var chunk = getChunk(response, id);\n return chunk;\n }\n case \"S\":\n {\n // Symbol\n return Symbol.for(value.slice(2));\n }\n case \"F\":\n {\n // Server Reference\n var _id = parseInt(value.slice(2), 16); // TODO: Just encode this in the reference inline instead of as a model.\n var metaData = getOutlinedModel(response, _id);\n return loadServerReference$1(response, metaData.id, metaData.bound, initializingChunk, parentObject, key);\n }\n case \"Q\":\n {\n // Map\n var _id2 = parseInt(value.slice(2), 16);\n var data = getOutlinedModel(response, _id2);\n return new Map(data);\n }\n case \"W\":\n {\n // Set\n var _id3 = parseInt(value.slice(2), 16);\n var _data = getOutlinedModel(response, _id3);\n return new Set(_data);\n }\n case \"K\":\n {\n // FormData\n var stringId = value.slice(2);\n var formPrefix = response._prefix + stringId + \"_\";\n var _data2 = new FormData();\n var backingFormData = response._formData; // We assume that the reference to FormData always comes after each\n // entry that it references so we can assume they all exist in the\n // backing store already.\n // $FlowFixMe[prop-missing] FormData has forEach on it.\n backingFormData.forEach(function(entry, entryKey) {\n if (entryKey.startsWith(formPrefix)) {\n _data2.append(entryKey.slice(formPrefix.length), entry);\n }\n });\n return _data2;\n }\n case \"I\":\n {\n // $Infinity\n return Infinity;\n }\n case \"-\":\n {\n // $-0 or $-Infinity\n if (value === \"$-0\") {\n return -0;\n } else {\n return -Infinity;\n }\n }\n case \"N\":\n {\n // $NaN\n return NaN;\n }\n case \"u\":\n {\n // matches \"$undefined\"\n // Special encoding for `undefined` which can't be serialized as JSON otherwise.\n return undefined;\n }\n case \"D\":\n {\n // Date\n return new Date(Date.parse(value.slice(2)));\n }\n case \"n\":\n {\n // BigInt\n return BigInt(value.slice(2));\n }\n default:\n {\n // We assume that anything else is a reference ID.\n var _id4 = parseInt(value.slice(1), 16);\n var _chunk = getChunk(response, _id4);\n switch(_chunk.status){\n case RESOLVED_MODEL:\n initializeModelChunk(_chunk);\n break;\n } // The status might have changed after initialization.\n switch(_chunk.status){\n case INITIALIZED:\n return _chunk.value;\n case PENDING:\n case BLOCKED:\n var parentChunk = initializingChunk;\n _chunk.then(createModelResolver(parentChunk, parentObject, key), createModelReject(parentChunk));\n return null;\n default:\n throw _chunk.reason;\n }\n }\n }\n }\n return value;\n }\n function createResponse(bundlerConfig, formFieldPrefix) {\n var backingFormData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new FormData();\n var chunks = new Map();\n var response = {\n _bundlerConfig: bundlerConfig,\n _prefix: formFieldPrefix,\n _formData: backingFormData,\n _chunks: chunks,\n _fromJSON: function(key, value) {\n if (typeof value === \"string\") {\n // We can't use .bind here because we need the \"this\" value.\n return parseModelString(response, this, key, value);\n }\n return value;\n }\n };\n return response;\n }\n function close(response) {\n // In case there are any remaining unresolved chunks, they won't\n // be resolved now. So we need to issue an error to those.\n // Ideally we should be able to early bail out if we kept a\n // ref count of pending chunks.\n reportGlobalError(response, new Error(\"Connection closed.\"));\n }\n function bindArgs(fn, args) {\n return fn.bind.apply(fn, [\n null\n ].concat(args));\n }\n function loadServerReference(bundlerConfig, id, bound) {\n var serverReference = resolveServerReference(bundlerConfig, id); // We expect most servers to not really need this because you'd just have all\n // the relevant modules already loaded but it allows for lazy loading of code\n // if needed.\n var preloadPromise = preloadModule(serverReference);\n if (bound) {\n return Promise.all([\n bound,\n preloadPromise\n ]).then(function(_ref) {\n var args = _ref[0];\n return bindArgs(requireModule(serverReference), args);\n });\n } else if (preloadPromise) {\n return Promise.resolve(preloadPromise).then(function() {\n return requireModule(serverReference);\n });\n } else {\n // Synchronously available\n return Promise.resolve(requireModule(serverReference));\n }\n }\n function decodeBoundActionMetaData(body, serverManifest, formFieldPrefix) {\n // The data for this reference is encoded in multiple fields under this prefix.\n var actionResponse = createResponse(serverManifest, formFieldPrefix, body);\n close(actionResponse);\n var refPromise = getRoot(actionResponse); // Force it to initialize\n // $FlowFixMe\n refPromise.then(function() {});\n if (refPromise.status !== \"fulfilled\") {\n // $FlowFixMe\n throw refPromise.reason;\n }\n return refPromise.value;\n }\n function decodeAction(body, serverManifest) {\n // We're going to create a new formData object that holds all the fields except\n // the implementation details of the action data.\n var formData = new FormData();\n var action = null; // $FlowFixMe[prop-missing]\n body.forEach(function(value, key) {\n if (!key.startsWith(\"$ACTION_\")) {\n formData.append(key, value);\n return;\n } // Later actions may override earlier actions if a button is used to override the default\n // form action.\n if (key.startsWith(\"$ACTION_REF_\")) {\n var formFieldPrefix = \"$ACTION_\" + key.slice(12) + \":\";\n var metaData = decodeBoundActionMetaData(body, serverManifest, formFieldPrefix);\n action = loadServerReference(serverManifest, metaData.id, metaData.bound);\n return;\n }\n if (key.startsWith(\"$ACTION_ID_\")) {\n var id = key.slice(11);\n action = loadServerReference(serverManifest, id, null);\n return;\n }\n });\n if (action === null) {\n return null;\n } // Return the action with the remaining FormData bound to the first argument.\n return action.then(function(fn) {\n return fn.bind(null, formData);\n });\n }\n function decodeFormState(actionResult, body, serverManifest) {\n var keyPath = body.get(\"$ACTION_KEY\");\n if (typeof keyPath !== \"string\") {\n // This form submission did not include any form state.\n return Promise.resolve(null);\n } // Search through the form data object to get the reference id and the number\n // of bound arguments. This repeats some of the work done in decodeAction.\n var metaData = null; // $FlowFixMe[prop-missing]\n body.forEach(function(value, key) {\n if (key.startsWith(\"$ACTION_REF_\")) {\n var formFieldPrefix = \"$ACTION_\" + key.slice(12) + \":\";\n metaData = decodeBoundActionMetaData(body, serverManifest, formFieldPrefix);\n } // We don't check for the simple $ACTION_ID_ case because form state actions\n // are always bound to the state argument.\n });\n if (metaData === null) {\n // Should be unreachable.\n return Promise.resolve(null);\n }\n var referenceId = metaData.id;\n return Promise.resolve(metaData.bound).then(function(bound) {\n if (bound === null) {\n // Should be unreachable because form state actions are always bound to the\n // state argument.\n return null;\n } // The form action dispatch method is always bound to the initial state.\n // But when comparing signatures, we compare to the original unbound action.\n // Subtract one from the arity to account for this.\n var boundArity = bound.length - 1;\n return [\n actionResult,\n keyPath,\n referenceId,\n boundArity\n ];\n });\n }\n function renderToReadableStream(model, webpackMap, options) {\n var request = createRequest(model, webpackMap, options ? options.onError : undefined, options ? options.context : undefined, options ? options.identifierPrefix : undefined, options ? options.onPostpone : undefined);\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) {\n abort(request, signal.reason);\n } else {\n var listener = function() {\n abort(request, signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n var stream = new ReadableStream({\n type: \"bytes\",\n start: function(controller) {\n startWork(request);\n },\n pull: function(controller) {\n startFlowing(request, controller);\n },\n cancel: function(reason) {\n stopFlowing(request);\n abort(request, reason);\n }\n }, {\n highWaterMark: 0\n });\n return stream;\n }\n function decodeReply(body, webpackMap) {\n if (typeof body === \"string\") {\n var form = new FormData();\n form.append(\"0\", body);\n body = form;\n }\n var response = createResponse(webpackMap, \"\", body);\n var root = getRoot(response);\n close(response);\n return root;\n }\n exports.createClientModuleProxy = createClientModuleProxy;\n exports.decodeAction = decodeAction;\n exports.decodeFormState = decodeFormState;\n exports.decodeReply = decodeReply;\n exports.registerClientReference = registerClientReference;\n exports.registerServerReference = registerServerReference;\n exports.renderToReadableStream = renderToReadableStream;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5lZGdlLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztDQVFDLEdBRUQ7QUFFQSxJQUFJQSxJQUFxQyxFQUFFO0lBQ3hDO1FBQ0g7UUFFQSxJQUFJQyxRQUFRQyxtQkFBT0EsQ0FBQztRQUNwQixJQUFJQyxXQUFXRCxtQkFBT0EsQ0FBQztRQUV2QixJQUFJRSx1QkFBdUJILE1BQU1JLGtEQUFrRDtRQUVuRixTQUFTQyxNQUFNQyxNQUFNO1lBQ25CO2dCQUNFO29CQUNFLElBQUssSUFBSUMsUUFBUUMsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLFFBQVEsSUFBSUEsUUFBUSxJQUFJLElBQUlLLFFBQVEsR0FBR0EsUUFBUUwsT0FBT0ssUUFBUzt3QkFDakhGLElBQUksQ0FBQ0UsUUFBUSxFQUFFLEdBQUdKLFNBQVMsQ0FBQ0ksTUFBTTtvQkFDcEM7b0JBRUFDLGFBQWEsU0FBU1AsUUFBUUk7Z0JBQ2hDO1lBQ0Y7UUFDRjtRQUVBLFNBQVNHLGFBQWFDLEtBQUssRUFBRVIsTUFBTSxFQUFFSSxJQUFJO1lBQ3ZDLG1EQUFtRDtZQUNuRCw2Q0FBNkM7WUFDN0M7Z0JBQ0UsSUFBSUsseUJBQXlCWixxQkFBcUJZLHNCQUFzQjtnQkFDeEUsSUFBSUMsUUFBUUQsdUJBQXVCRSxnQkFBZ0I7Z0JBRW5ELElBQUlELFVBQVUsSUFBSTtvQkFDaEJWLFVBQVU7b0JBQ1ZJLE9BQU9BLEtBQUtRLE1BQU0sQ0FBQzt3QkFBQ0Y7cUJBQU07Z0JBQzVCLEVBQUUsK0RBQStEO2dCQUdqRSxJQUFJRyxpQkFBaUJULEtBQUtVLEdBQUcsQ0FBQyxTQUFVQyxJQUFJO29CQUMxQyxPQUFPQyxPQUFPRDtnQkFDaEIsSUFBSSwrQ0FBK0M7Z0JBRW5ERixlQUFlSSxPQUFPLENBQUMs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K0IsR0FBR3BoQjtRQUNsQ29oQiw4QkFBOEIsR0FBR2Q7SUFDL0I7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5lZGdlLmRldmVsb3BtZW50LmpzPzQ0OTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5lZGdlLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIFJlYWN0RE9NID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbnZhciBSZWFjdFNoYXJlZEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuXG5mdW5jdGlvbiBlcnJvcihmb3JtYXQpIHtcbiAge1xuICAgIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZygnZXJyb3InLCBmb3JtYXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmludFdhcm5pbmcobGV2ZWwsIGZvcm1hdCwgYXJncykge1xuICAvLyBXaGVuIGNoYW5naW5nIHRoaXMgbG9naWMsIHlvdSBtaWdodCB3YW50IHRvIGFsc29cbiAgLy8gdXBkYXRlIGNvbnNvbGVXaXRoU3RhY2tEZXYud3d3LmpzIGFzIHdlbGwuXG4gIHtcbiAgICB2YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG4gICAgdmFyIHN0YWNrID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRTdGFja0FkZGVuZHVtKCk7XG5cbiAgICBpZiAoc3RhY2sgIT09ICcnKSB7XG4gICAgICBmb3JtYXQgKz0gJyVzJztcbiAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbc3RhY2tdKTtcbiAgICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG5cbiAgICB2YXIgYXJnc1dpdGhGb3JtYXQgPSBhcmdzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKTtcbiAgICB9KTsgLy8gQ2FyZWZ1bDogUk4gY3VycmVudGx5IGRlcGVuZHMgb24gdGhpcyBwcmVmaXhcblxuICAgIGFyZ3NXaXRoRm9ybWF0LnVuc2hpZnQoJ1dhcm5pbmc6ICcgKyBmb3JtYXQpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBzcHJlYWQgKG9yIC5hcHBseSkgZGlyZWN0bHkgYmVjYXVzZSBpdFxuICAgIC8vIGJyZWFrcyBJRTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTM2MTBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nXG5cbiAgICBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjb25zb2xlW2xldmVsXSwgY29uc29sZSwgYXJnc1dpdGhGb3JtYXQpO1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgZW5hYmxlUG9zdHBvbmUgPSBmYWxzZTtcblxuZnVuY3Rpb24gc2NoZWR1bGVXb3JrKGNhbGxiYWNrKSB7XG4gIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xufVxudmFyIFZJRVdfU0laRSA9IDUxMjtcbnZhciBjdXJyZW50VmlldyA9IG51bGw7XG52YXIgd3JpdHRlbkJ5dGVzID0gMDtcbmZ1bmN0aW9uIGJlZ2luV3JpdGluZyhkZXN0aW5hdGlvbikge1xuICBjdXJyZW50VmlldyA9IG5ldyBVaW50OEFycmF5KFZJRVdfU0laRSk7XG4gIHdyaXR0ZW5CeXRlcyA9IDA7XG59XG5mdW5jdGlvbiB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaHVuaykge1xuICBpZiAoY2h1bmsuYnl0ZUxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaHVuay5ieXRlTGVuZ3RoID4gVklFV19TSVpFKSB7XG4gICAge1xuICAgICAgaWYgKHByZWNvbXB1dGVkQ2h1bmtTZXQuaGFzKGNodW5rKSkge1xuICAgICAgICBlcnJvcignQSBsYXJnZSBwcmVjb21wdXRlZCBjaHVuayB3YXMgcGFzc2VkIHRvIHdyaXRlQ2h1bmsgd2l0aG91dCBiZWluZyBjb3BpZWQuJyArICcgTGFyZ2UgY2h1bmtzIGdldCBlbnF1ZXVlZCBkaXJlY3RseSBhbmQgYXJlIG5vdCBjb3BpZWQuIFRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggcHJlY29tcHV0ZWQgY2h1bmtzIGJlY2F1c2UgeW91IGNhbm5vdCBlbnF1ZXVlIHRoZSBzYW1lIHByZWNvbXB1dGVkIGNodW5rIHR3aWNlLicgKyAnIFVzZSBcImNsb25lQ2h1bmtcIiB0byBtYWtlIGEgY29weSBvZiB0aGlzIGxhcmdlIHByZWNvbXB1dGVkIGNodW5rIGJlZm9yZSB3cml0aW5nIGl0LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuICAgIH0gLy8gdGhpcyBjaHVuayBtYXkgb3ZlcmZsb3cgYSBzaW5nbGUgdmlldyB3aGljaCBpbXBsaWVzIGl0IHdhcyBub3RcbiAgICAvLyBvbmUgdGhhdCBpcyBjYWNoZWQgYnkgdGhlIHN0cmVhbWluZyByZW5kZXJlci4gV2Ugd2lsbCBlbnF1ZXVcbiAgICAvLyBpdCBkaXJlY3RseSBhbmQgZXhwZWN0IGl0IGlzIG5vdCByZS11c2VkXG5cblxuICAgIGlmICh3cml0dGVuQnl0ZXMgPiAwKSB7XG4gICAgICBkZXN0aW5hdGlvbi5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGN1cnJlbnRWaWV3LmJ1ZmZlciwgMCwgd3JpdHRlbkJ5dGVzKSk7XG4gICAgICBjdXJyZW50VmlldyA9IG5ldyBVaW50OEFycmF5KFZJRVdfU0laRSk7XG4gICAgICB3cml0dGVuQnl0ZXMgPSAwO1xuICAgIH1cblxuICAgIGRlc3RpbmF0aW9uLmVucXVldWUoY2h1bmspO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBieXRlc1RvV3JpdGUgPSBjaHVuaztcbiAgdmFyIGFsbG93YWJsZUJ5dGVzID0gY3VycmVudFZpZXcubGVuZ3RoIC0gd3JpdHRlbkJ5dGVzO1xuXG4gIGlmIChhbGxvd2FibGVCeXRlcyA8IGJ5dGVzVG9Xcml0ZS5ieXRlTGVuZ3RoKSB7XG4gICAgLy8gdGhpcyBjaHVuayB3b3VsZCBvdmVyZmxvdyB0aGUgY3VycmVudCB2aWV3LiBXZSBlbnF1ZXVlIGEgZnVsbCB2aWV3XG4gICAgLy8gYW5kIHN0YXJ0IGEgbmV3IHZpZXcgd2l0aCB0aGUgcmVtYWluaW5nIGNodW5rXG4gICAgaWYgKGFsbG93YWJsZUJ5dGVzID09PSAwKSB7XG4gICAgICAvLyB0aGUgY3VycmVudCB2aWV3IGlzIGFscmVhZHkgZnVsbCwgc2VuZCBpdFxuICAgICAgZGVzdGluYXRpb24uZW5xdWV1ZShjdXJyZW50Vmlldyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZpbGwgdXAgdGhlIGN1cnJlbnQgdmlldyBhbmQgYXBwbHkgdGhlIHJlbWFpbmluZyBjaHVuayBieXRlc1xuICAgICAgLy8gdG8gYSBuZXcgdmlldy5cbiAgICAgIGN1cnJlbnRWaWV3LnNldChieXRlc1RvV3JpdGUuc3ViYXJyYXkoMCwgYWxsb3dhYmxlQnl0ZXMpLCB3cml0dGVuQnl0ZXMpOyAvLyB3cml0dGVuQnl0ZXMgKz0gYWxsb3dhYmxlQnl0ZXM7IC8vIHRoaXMgY2FuIGJlIHNraXBwZWQgYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gaW1tZWRpYXRlbHkgcmVzZXQgdGhlIHZpZXdcblxuICAgICAgZGVzdGluYXRpb24uZW5xdWV1ZShjdXJyZW50Vmlldyk7XG4gICAgICBieXRlc1RvV3JpdGUgPSBieXRlc1RvV3JpdGUuc3ViYXJyYXkoYWxsb3dhYmxlQnl0ZXMpO1xuICAgIH1cblxuICAgIGN1cnJlbnRWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoVklFV19TSVpFKTtcbiAgICB3cml0dGVuQnl0ZXMgPSAwO1xuICB9XG5cbiAgY3VycmVudFZpZXcuc2V0KGJ5dGVzVG9Xcml0ZSwgd3JpdHRlbkJ5dGVzKTtcbiAgd3JpdHRlbkJ5dGVzICs9IGJ5dGVzVG9Xcml0ZS5ieXRlTGVuZ3RoO1xufVxuZnVuY3Rpb24gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgY2h1bmspIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY2h1bmspOyAvLyBpbiB3ZWIgc3RyZWFtcyB0aGVyZSBpcyBubyBiYWNrcHJlc3N1cmUgc28gd2UgY2FuIGFsd2FzIHdyaXRlIG1vcmVcblxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNvbXBsZXRlV3JpdGluZyhkZXN0aW5hdGlvbikge1xuICBpZiAoY3VycmVudFZpZXcgJiYgd3JpdHRlbkJ5dGVzID4gMCkge1xuICAgIGRlc3RpbmF0aW9uLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoY3VycmVudFZpZXcuYnVmZmVyLCAwLCB3cml0dGVuQnl0ZXMpKTtcbiAgICBjdXJyZW50VmlldyA9IG51bGw7XG4gICAgd3JpdHRlbkJ5dGVzID0gMDtcbiAgfVxufVxuZnVuY3Rpb24gY2xvc2UkMShkZXN0aW5hdGlvbikge1xuICBkZXN0aW5hdGlvbi5jbG9zZSgpO1xufVxudmFyIHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5mdW5jdGlvbiBzdHJpbmdUb0NodW5rKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRleHRFbmNvZGVyLmVuY29kZShjb250ZW50KTtcbn1cbnZhciBwcmVjb21wdXRlZENodW5rU2V0ID0gbmV3IFNldCgpIDtcbmZ1bmN0aW9uIGJ5dGVMZW5ndGhPZkNodW5rKGNodW5rKSB7XG4gIHJldHVybiBjaHVuay5ieXRlTGVuZ3RoO1xufVxuZnVuY3Rpb24gY2xvc2VXaXRoRXJyb3IoZGVzdGluYXRpb24sIGVycm9yKSB7XG4gIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgaWYgKHR5cGVvZiBkZXN0aW5hdGlvbi5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBUaGlzIGlzIGFuIEVycm9yIG9iamVjdCBvciB0aGUgZGVzdGluYXRpb24gYWNjZXB0cyBvdGhlciB0eXBlcy5cbiAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnJvcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gRWFybGllciBpbXBsZW1lbnRhdGlvbnMgZG9lc24ndCBzdXBwb3J0IHRoaXMgbWV0aG9kLiBJbiB0aGF0IGVudmlyb25tZW50IHlvdSdyZVxuICAgIC8vIHN1cHBvc2VkIHRvIHRocm93IGZyb20gYSBwcm9taXNlIHJldHVybmVkIGJ1dCB3ZSBkb24ndCByZXR1cm4gYSBwcm9taXNlIGluIG91clxuICAgIC8vIGFwcHJvYWNoLiBXZSBjb3VsZCBmb3JrIHRoaXMgaW1wbGVtZW50YXRpb24gYnV0IHRoaXMgaXMgZW52aXJvbm1lbnQgaXMgYW4gZWRnZVxuICAgIC8vIGNhc2UgdG8gYmVnaW4gd2l0aC4gSXQncyBldmVuIGxlc3MgY29tbW9uIHRvIHJ1biB0aGlzIGluIGFuIG9sZGVyIGVudmlyb25tZW50LlxuICAgIC8vIEV2ZW4gdGhlbiwgdGhpcyBpcyBub3Qgd2hlcmUgZXJyb3JzIGFyZSBzdXBwb3NlZCB0byBoYXBwZW4gYW5kIHRoZXkgZ2V0IHJlcG9ydGVkXG4gICAgLy8gdG8gYSBnbG9iYWwgY2FsbGJhY2sgaW4gYWRkaXRpb24gdG8gdGhpcyBhbnl3YXkuIFNvIGl0J3MgZmluZSBqdXN0IHRvIGNsb3NlIHRoaXMuXG4gICAgZGVzdGluYXRpb24uY2xvc2UoKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbnZhciBDTElFTlRfUkVGRVJFTkNFX1RBRyA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNsaWVudC5yZWZlcmVuY2UnKTtcbnZhciBTRVJWRVJfUkVGRVJFTkNFX1RBRyA9IFN5bWJvbC5mb3IoJ3JlYWN0LnNlcnZlci5yZWZlcmVuY2UnKTtcbmZ1bmN0aW9uIGlzQ2xpZW50UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmZXJlbmNlLiQkdHlwZW9mID09PSBDTElFTlRfUkVGRVJFTkNFX1RBRztcbn1cbmZ1bmN0aW9uIGlzU2VydmVyUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICByZXR1cm4gcmVmZXJlbmNlLiQkdHlwZW9mID09PSBTRVJWRVJfUkVGRVJFTkNFX1RBRztcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlKHByb3h5SW1wbGVtZW50YXRpb24sIGlkLCBleHBvcnROYW1lKSB7XG4gIHJldHVybiByZWdpc3RlckNsaWVudFJlZmVyZW5jZUltcGwocHJveHlJbXBsZW1lbnRhdGlvbiwgaWQgKyAnIycgKyBleHBvcnROYW1lLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlSW1wbChwcm94eUltcGxlbWVudGF0aW9uLCBpZCwgYXN5bmMpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHByb3h5SW1wbGVtZW50YXRpb24sIHtcbiAgICAkJHR5cGVvZjoge1xuICAgICAgdmFsdWU6IENMSUVOVF9SRUZFUkVOQ0VfVEFHXG4gICAgfSxcbiAgICAkJGlkOiB7XG4gICAgICB2YWx1ZTogaWRcbiAgICB9LFxuICAgICQkYXN5bmM6IHtcbiAgICAgIHZhbHVlOiBhc3luY1xuICAgIH1cbiAgfSk7XG59IC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cblxuXG52YXIgRnVuY3Rpb25CaW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7IC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cblxudmFyIEFycmF5U2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbmZ1bmN0aW9uIGJpbmQoKSB7XG4gIC8vICRGbG93Rml4TWVbdW5zdXBwb3J0ZWQtc3ludGF4XVxuICB2YXIgbmV3Rm4gPSBGdW5jdGlvbkJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICBpZiAodGhpcy4kJHR5cGVvZiA9PT0gU0VSVkVSX1JFRkVSRU5DRV9UQUcpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZXdGbiwge1xuICAgICAgJCR0eXBlb2Y6IHtcbiAgICAgICAgdmFsdWU6IFNFUlZFUl9SRUZFUkVOQ0VfVEFHXG4gICAgICB9LFxuICAgICAgJCRpZDoge1xuICAgICAgICB2YWx1ZTogdGhpcy4kJGlkXG4gICAgICB9LFxuICAgICAgJCRib3VuZDoge1xuICAgICAgICB2YWx1ZTogdGhpcy4kJGJvdW5kID8gdGhpcy4kJGJvdW5kLmNvbmNhdChhcmdzKSA6IGFyZ3NcbiAgICAgIH0sXG4gICAgICBiaW5kOiB7XG4gICAgICAgIHZhbHVlOiBiaW5kXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3Rm47XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlKHJlZmVyZW5jZSwgaWQsIGV4cG9ydE5hbWUpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlZmVyZW5jZSwge1xuICAgICQkdHlwZW9mOiB7XG4gICAgICB2YWx1ZTogU0VSVkVSX1JFRkVSRU5DRV9UQUdcbiAgICB9LFxuICAgICQkaWQ6IHtcbiAgICAgIHZhbHVlOiBleHBvcnROYW1lID09PSBudWxsID8gaWQgOiBpZCArICcjJyArIGV4cG9ydE5hbWVcbiAgICB9LFxuICAgICQkYm91bmQ6IHtcbiAgICAgIHZhbHVlOiBudWxsXG4gICAgfSxcbiAgICBiaW5kOiB7XG4gICAgICB2YWx1ZTogYmluZFxuICAgIH1cbiAgfSk7XG59XG52YXIgUFJPTUlTRV9QUk9UT1RZUEUgPSBQcm9taXNlLnByb3RvdHlwZTtcbnZhciBkZWVwUHJveHlIYW5kbGVycyA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lLCByZWNlaXZlcikge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgLy8gVGhlc2UgbmFtZXMgYXJlIHJlYWQgYnkgdGhlIEZsaWdodCBydW50aW1lIGlmIHlvdSBlbmQgdXAgdXNpbmcgdGhlIGV4cG9ydHMgb2JqZWN0LlxuICAgICAgY2FzZSAnJCR0eXBlb2YnOlxuICAgICAgICAvLyBUaGVzZSBuYW1lcyBhcmUgYSBsaXR0bGUgdG9vIGNvbW1vbi4gV2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgYSB3YXkgdG9cbiAgICAgICAgLy8gaGF2ZSB0aGUgRmxpZ2h0IHJ1bnRpbWUgZXh0cmFjdCB0aGUgaW5uZXIgdGFyZ2V0IGluc3RlYWQuXG4gICAgICAgIHJldHVybiB0YXJnZXQuJCR0eXBlb2Y7XG5cbiAgICAgIGNhc2UgJyQkaWQnOlxuICAgICAgICByZXR1cm4gdGFyZ2V0LiQkaWQ7XG5cbiAgICAgIGNhc2UgJyQkYXN5bmMnOlxuICAgICAgICByZXR1cm4gdGFyZ2V0LiQkYXN5bmM7XG5cbiAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICByZXR1cm4gdGFyZ2V0Lm5hbWU7XG5cbiAgICAgIGNhc2UgJ2Rpc3BsYXlOYW1lJzpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIC8vIFdlIG5lZWQgdG8gc3BlY2lhbCBjYXNlIHRoaXMgYmVjYXVzZSBjcmVhdGVFbGVtZW50IHJlYWRzIGl0IGlmIHdlIHBhc3MgdGhpc1xuICAgICAgLy8gcmVmZXJlbmNlLlxuXG4gICAgICBjYXNlICdkZWZhdWx0UHJvcHMnOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgLy8gQXZvaWQgdGhpcyBhdHRlbXB0aW5nIHRvIGJlIHNlcmlhbGl6ZWQuXG5cbiAgICAgIGNhc2UgJ3RvSlNPTic6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGNhc2UgU3ltYm9sLnRvUHJpbWl0aXZlOlxuICAgICAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblxuICAgICAgY2FzZSAnUHJvdmlkZXInOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmVuZGVyIGEgQ2xpZW50IENvbnRleHQgUHJvdmlkZXIgb24gdGhlIFNlcnZlci4gXCIgKyBcIkluc3RlYWQsIHlvdSBjYW4gZXhwb3J0IGEgQ2xpZW50IENvbXBvbmVudCB3cmFwcGVyIFwiICsgXCJ0aGF0IGl0c2VsZiByZW5kZXJzIGEgQ2xpZW50IENvbnRleHQgUHJvdmlkZXIuXCIpO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBleHByZXNzaW9uID0gU3RyaW5nKHRhcmdldC5uYW1lKSArICcuJyArIFN0cmluZyhuYW1lKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWNjZXNzIFwiICsgZXhwcmVzc2lvbiArIFwiIG9uIHRoZSBzZXJ2ZXIuIFwiICsgJ1lvdSBjYW5ub3QgZG90IGludG8gYSBjbGllbnQgbW9kdWxlIGZyb20gYSBzZXJ2ZXIgY29tcG9uZW50LiAnICsgJ1lvdSBjYW4gb25seSBwYXNzIHRoZSBpbXBvcnRlZCBuYW1lIHRocm91Z2guJyk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFzc2lnbiB0byBhIGNsaWVudCBtb2R1bGUgZnJvbSBhIHNlcnZlciBtb2R1bGUuJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZSh0YXJnZXQsIG5hbWUpIHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgLy8gVGhlc2UgbmFtZXMgYXJlIHJlYWQgYnkgdGhlIEZsaWdodCBydW50aW1lIGlmIHlvdSBlbmQgdXAgdXNpbmcgdGhlIGV4cG9ydHMgb2JqZWN0LlxuICAgIGNhc2UgJyQkdHlwZW9mJzpcbiAgICAgIHJldHVybiB0YXJnZXQuJCR0eXBlb2Y7XG5cbiAgICBjYXNlICckJGlkJzpcbiAgICAgIHJldHVybiB0YXJnZXQuJCRpZDtcblxuICAgIGNhc2UgJyQkYXN5bmMnOlxuICAgICAgcmV0dXJuIHRhcmdldC4kJGFzeW5jO1xuXG4gICAgY2FzZSAnbmFtZSc6XG4gICAgICByZXR1cm4gdGFyZ2V0Lm5hbWU7XG4gICAgLy8gV2UgbmVlZCB0byBzcGVjaWFsIGNhc2UgdGhpcyBiZWNhdXNlIGNyZWF0ZUVsZW1lbnQgcmVhZHMgaXQgaWYgd2UgcGFzcyB0aGlzXG4gICAgLy8gcmVmZXJlbmNlLlxuXG4gICAgY2FzZSAnZGVmYXVsdFByb3BzJzpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgLy8gQXZvaWQgdGhpcyBhdHRlbXB0aW5nIHRvIGJlIHNlcmlhbGl6ZWQuXG5cbiAgICBjYXNlICd0b0pTT04nOlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNhc2UgU3ltYm9sLnRvUHJpbWl0aXZlOlxuICAgICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdO1xuXG4gICAgY2FzZSAnX19lc01vZHVsZSc6XG4gICAgICAvLyBTb21ldGhpbmcgaXMgY29uZGl0aW9uYWxseSBjaGVja2luZyB3aGljaCBleHBvcnQgdG8gdXNlLiBXZSdsbCBwcmV0ZW5kIHRvIGJlXG4gICAgICAvLyBhbiBFU00gY29tcGF0IG1vZHVsZSBidXQgdGhlbiB3ZSdsbCBjaGVjayBhZ2FpbiBvbiB0aGUgY2xpZW50LlxuICAgICAgdmFyIG1vZHVsZUlkID0gdGFyZ2V0LiQkaWQ7XG4gICAgICB0YXJnZXQuZGVmYXVsdCA9IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlSW1wbChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRlZCB0byBjYWxsIHRoZSBkZWZhdWx0IGV4cG9ydCBvZiBcIiArIG1vZHVsZUlkICsgXCIgZnJvbSB0aGUgc2VydmVyIFwiICsgXCJidXQgaXQncyBvbiB0aGUgY2xpZW50LiBJdCdzIG5vdCBwb3NzaWJsZSB0byBpbnZva2UgYSBjbGllbnQgZnVuY3Rpb24gZnJvbSBcIiArIFwidGhlIHNlcnZlciwgaXQgY2FuIG9ubHkgYmUgcmVuZGVyZWQgYXMgYSBDb21wb25lbnQgb3IgcGFzc2VkIHRvIHByb3BzIG9mIGEgXCIgKyBcIkNsaWVudCBDb21wb25lbnQuXCIpO1xuICAgICAgfSwgdGFyZ2V0LiQkaWQgKyAnIycsIHRhcmdldC4kJGFzeW5jKTtcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSAndGhlbic6XG4gICAgICBpZiAodGFyZ2V0LnRoZW4pIHtcbiAgICAgICAgLy8gVXNlIGEgY2FjaGVkIHZhbHVlXG4gICAgICAgIHJldHVybiB0YXJnZXQudGhlbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0YXJnZXQuJCRhc3luYykge1xuICAgICAgICAvLyBJZiB0aGlzIG1vZHVsZSBpcyBleHBlY3RlZCB0byByZXR1cm4gYSBQcm9taXNlIChzdWNoIGFzIGFuIEFzeW5jTW9kdWxlKSB0aGVuXG4gICAgICAgIC8vIHdlIHNob3VsZCByZXNvbHZlIHRoYXQgd2l0aCBhIGNsaWVudCByZWZlcmVuY2UgdGhhdCB1bndyYXBzIHRoZSBQcm9taXNlIG9uXG4gICAgICAgIC8vIHRoZSBjbGllbnQuXG4gICAgICAgIHZhciBjbGllbnRSZWZlcmVuY2UgPSByZWdpc3RlckNsaWVudFJlZmVyZW5jZUltcGwoe30sIHRhcmdldC4kJGlkLCB0cnVlKTtcbiAgICAgICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KGNsaWVudFJlZmVyZW5jZSwgcHJveHlIYW5kbGVycyk7IC8vIFRyZWF0IHRoaXMgYXMgYSByZXNvbHZlZCBQcm9taXNlIGZvciBSZWFjdCdzIHVzZSgpXG5cbiAgICAgICAgdGFyZ2V0LnN0YXR1cyA9ICdmdWxmaWxsZWQnO1xuICAgICAgICB0YXJnZXQudmFsdWUgPSBwcm94eTtcbiAgICAgICAgdmFyIHRoZW4gPSB0YXJnZXQudGhlbiA9IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlSW1wbChmdW5jdGlvbiB0aGVuKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIC8vIEV4cG9zZSB0byBSZWFjdC5cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc29sdmUocHJveHkpKTtcbiAgICAgICAgfSwgLy8gSWYgdGhpcyBpcyBub3QgdXNlZCBhcyBhIFByb21pc2UgYnV0IGlzIHRyZWF0ZWQgYXMgYSByZWZlcmVuY2UgdG8gYSBgLnRoZW5gXG4gICAgICAgIC8vIGV4cG9ydCB0aGVuIHdlIHNob3VsZCB0cmVhdCBpdCBhcyBhIHJlZmVyZW5jZSB0byB0aGF0IG5hbWUuXG4gICAgICAgIHRhcmdldC4kJGlkICsgJyN0aGVuJywgZmFsc2UpO1xuICAgICAgICByZXR1cm4gdGhlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmNlIHR5cGVvZiAudGhlbiA9PT0gJ2Z1bmN0aW9uJyBpcyBhIGZlYXR1cmUgdGVzdCB3ZSdkIGNvbnRpbnVlIHJlY3Vyc2luZ1xuICAgICAgICAvLyBpbmRlZmluaXRlbHkgaWYgd2UgcmV0dXJuIGEgZnVuY3Rpb24uIEluc3RlYWQsIHdlIHJldHVybiBhbiBvYmplY3QgcmVmZXJlbmNlXG4gICAgICAgIC8vIGlmIHdlIGNoZWNrIGZ1cnRoZXIuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgfVxuXG4gIHZhciBjYWNoZWRSZWZlcmVuY2UgPSB0YXJnZXRbbmFtZV07XG5cbiAgaWYgKCFjYWNoZWRSZWZlcmVuY2UpIHtcbiAgICB2YXIgcmVmZXJlbmNlID0gcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2VJbXBsKGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvciggLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG4gICAgICBcIkF0dGVtcHRlZCB0byBjYWxsIFwiICsgU3RyaW5nKG5hbWUpICsgXCIoKSBmcm9tIHRoZSBzZXJ2ZXIgYnV0IFwiICsgU3RyaW5nKG5hbWUpICsgXCIgaXMgb24gdGhlIGNsaWVudC4gXCIgKyBcIkl0J3Mgbm90IHBvc3NpYmxlIHRvIGludm9rZSBhIGNsaWVudCBmdW5jdGlvbiBmcm9tIHRoZSBzZXJ2ZXIsIGl0IGNhbiBcIiArIFwib25seSBiZSByZW5kZXJlZCBhcyBhIENvbXBvbmVudCBvciBwYXNzZWQgdG8gcHJvcHMgb2YgYSBDbGllbnQgQ29tcG9uZW50LlwiKTtcbiAgICB9LCB0YXJnZXQuJCRpZCArICcjJyArIG5hbWUsIHRhcmdldC4kJGFzeW5jKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVmZXJlbmNlLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiBuYW1lXG4gICAgfSk7XG4gICAgY2FjaGVkUmVmZXJlbmNlID0gdGFyZ2V0W25hbWVdID0gbmV3IFByb3h5KHJlZmVyZW5jZSwgZGVlcFByb3h5SGFuZGxlcnMpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlZFJlZmVyZW5jZTtcbn1cblxudmFyIHByb3h5SGFuZGxlcnMgPSB7XG4gIGdldDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgcmVjZWl2ZXIpIHtcbiAgICByZXR1cm4gZ2V0UmVmZXJlbmNlKHRhcmdldCwgbmFtZSk7XG4gIH0sXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkge1xuICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIG5hbWUpO1xuXG4gICAgaWYgKCFkZXNjcmlwdG9yKSB7XG4gICAgICBkZXNjcmlwdG9yID0ge1xuICAgICAgICB2YWx1ZTogZ2V0UmVmZXJlbmNlKHRhcmdldCwgbmFtZSksXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfSxcbiAgZ2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAvLyBQcmV0ZW5kIHRvIGJlIGEgUHJvbWlzZSBpbiBjYXNlIGFueW9uZSBhc2tzLlxuICAgIHJldHVybiBQUk9NSVNFX1BST1RPVFlQRTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYXNzaWduIHRvIGEgY2xpZW50IG1vZHVsZSBmcm9tIGEgc2VydmVyIG1vZHVsZS4nKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGNyZWF0ZUNsaWVudE1vZHVsZVByb3h5KG1vZHVsZUlkKSB7XG4gIHZhciBjbGllbnRSZWZlcmVuY2UgPSByZWdpc3RlckNsaWVudFJlZmVyZW5jZUltcGwoe30sIC8vIFJlcHJlc2VudHMgdGhlIHdob2xlIE1vZHVsZSBvYmplY3QgaW5zdGVhZCBvZiBhIHBhcnRpY3VsYXIgaW1wb3J0LlxuICBtb2R1bGVJZCwgZmFsc2UpO1xuICByZXR1cm4gbmV3IFByb3h5KGNsaWVudFJlZmVyZW5jZSwgcHJveHlIYW5kbGVycyk7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlZmVyZW5jZUtleShyZWZlcmVuY2UpIHtcbiAgcmV0dXJuIHJlZmVyZW5jZS4kJGFzeW5jID8gcmVmZXJlbmNlLiQkaWQgKyAnI2FzeW5jJyA6IHJlZmVyZW5jZS4kJGlkO1xufVxuZnVuY3Rpb24gcmVzb2x2ZUNsaWVudFJlZmVyZW5jZU1ldGFkYXRhKGNvbmZpZywgY2xpZW50UmVmZXJlbmNlKSB7XG4gIHZhciBtb2R1bGVQYXRoID0gY2xpZW50UmVmZXJlbmNlLiQkaWQ7XG4gIHZhciBuYW1lID0gJyc7XG4gIHZhciByZXNvbHZlZE1vZHVsZURhdGEgPSBjb25maWdbbW9kdWxlUGF0aF07XG5cbiAgaWYgKHJlc29sdmVkTW9kdWxlRGF0YSkge1xuICAgIC8vIFRoZSBwb3RlbnRpYWxseSBhbGlhc2VkIG5hbWUuXG4gICAgbmFtZSA9IHJlc29sdmVkTW9kdWxlRGF0YS5uYW1lO1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIGRpZG4ndCBmaW5kIHRoaXMgc3BlY2lmaWMgZXhwb3J0IG5hbWUgYnV0IHdlIG1pZ2h0IGhhdmUgdGhlICogZXhwb3J0XG4gICAgLy8gd2hpY2ggY29udGFpbnMgdGhpcyBuYW1lIGFzIHdlbGwuXG4gICAgLy8gVE9ETzogSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHdlIG5vdyBoYXZlIHRvIHBhcnNlIHRoaXMgc3RyaW5nLiBXZSBzaG91bGRcbiAgICAvLyBwcm9iYWJseSBnbyBiYWNrIHRvIGVuY29kaW5nIHBhdGggYW5kIG5hbWUgc2VwYXJhdGVseSBvbiB0aGUgY2xpZW50IHJlZmVyZW5jZS5cbiAgICB2YXIgaWR4ID0gbW9kdWxlUGF0aC5sYXN0SW5kZXhPZignIycpO1xuXG4gICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgIG5hbWUgPSBtb2R1bGVQYXRoLnNsaWNlKGlkeCArIDEpO1xuICAgICAgcmVzb2x2ZWRNb2R1bGVEYXRhID0gY29uZmlnW21vZHVsZVBhdGguc2xpY2UoMCwgaWR4KV07XG4gICAgfVxuXG4gICAgaWYgKCFyZXNvbHZlZE1vZHVsZURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgdGhlIG1vZHVsZSBcIicgKyBtb2R1bGVQYXRoICsgJ1wiIGluIHRoZSBSZWFjdCBDbGllbnQgTWFuaWZlc3QuICcgKyAnVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgUmVhY3QgU2VydmVyIENvbXBvbmVudHMgYnVuZGxlci4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2xpZW50UmVmZXJlbmNlLiQkYXN5bmMgPT09IHRydWUpIHtcbiAgICByZXR1cm4gW3Jlc29sdmVkTW9kdWxlRGF0YS5pZCwgcmVzb2x2ZWRNb2R1bGVEYXRhLmNodW5rcywgbmFtZSwgMV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtyZXNvbHZlZE1vZHVsZURhdGEuaWQsIHJlc29sdmVkTW9kdWxlRGF0YS5jaHVua3MsIG5hbWVdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTZXJ2ZXJSZWZlcmVuY2VJZChjb25maWcsIHNlcnZlclJlZmVyZW5jZSkge1xuICByZXR1cm4gc2VydmVyUmVmZXJlbmNlLiQkaWQ7XG59XG5mdW5jdGlvbiBnZXRTZXJ2ZXJSZWZlcmVuY2VCb3VuZEFyZ3VtZW50cyhjb25maWcsIHNlcnZlclJlZmVyZW5jZSkge1xuICByZXR1cm4gc2VydmVyUmVmZXJlbmNlLiQkYm91bmQ7XG59XG5cbnZhciBSZWFjdERPTVNoYXJlZEludGVybmFscyA9IFJlYWN0RE9NLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuXG52YXIgUmVhY3RET01GbGlnaHRTZXJ2ZXJEaXNwYXRjaGVyID0ge1xuICBwcmVmZXRjaEROUzogcHJlZmV0Y2hETlMsXG4gIHByZWNvbm5lY3Q6IHByZWNvbm5lY3QsXG4gIHByZWxvYWQ6IHByZWxvYWQsXG4gIHByZWxvYWRNb2R1bGU6IHByZWxvYWRNb2R1bGUkMSxcbiAgcHJlaW5pdFN0eWxlOiBwcmVpbml0U3R5bGUsXG4gIHByZWluaXRTY3JpcHQ6IHByZWluaXRTY3JpcHQsXG4gIHByZWluaXRNb2R1bGVTY3JpcHQ6IHByZWluaXRNb2R1bGVTY3JpcHRcbn07XG5cbmZ1bmN0aW9uIHByZWZldGNoRE5TKGhyZWYpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgJiYgaHJlZikge1xuICAgICAgdmFyIHJlcXVlc3QgPSByZXNvbHZlUmVxdWVzdCgpO1xuXG4gICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICB2YXIgaGludHMgPSBnZXRIaW50cyhyZXF1ZXN0KTtcbiAgICAgICAgdmFyIGtleSA9ICdEfCcgKyBocmVmO1xuXG4gICAgICAgIGlmIChoaW50cy5oYXMoa2V5KSkge1xuICAgICAgICAgIC8vIGR1cGxpY2F0ZSBoaW50XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaGludHMuYWRkKGtleSk7XG4gICAgICAgIGVtaXRIaW50KHJlcXVlc3QsICdEJywgaHJlZik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZWNvbm5lY3QoaHJlZiwgY3Jvc3NPcmlnaW4pIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gcmVzb2x2ZVJlcXVlc3QoKTtcblxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgdmFyIGhpbnRzID0gZ2V0SGludHMocmVxdWVzdCk7XG4gICAgICAgIHZhciBrZXkgPSBcIkN8XCIgKyAoY3Jvc3NPcmlnaW4gPT0gbnVsbCA/ICdudWxsJyA6IGNyb3NzT3JpZ2luKSArIFwifFwiICsgaHJlZjtcblxuICAgICAgICBpZiAoaGludHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgaGludFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhpbnRzLmFkZChrZXkpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgY3Jvc3NPcmlnaW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgZW1pdEhpbnQocmVxdWVzdCwgJ0MnLCBbaHJlZiwgY3Jvc3NPcmlnaW5dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbWl0SGludChyZXF1ZXN0LCAnQycsIGhyZWYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZWxvYWQoaHJlZiwgYXMsIG9wdGlvbnMpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gcmVzb2x2ZVJlcXVlc3QoKTtcblxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgdmFyIGhpbnRzID0gZ2V0SGludHMocmVxdWVzdCk7XG4gICAgICAgIHZhciBrZXkgPSAnTCc7XG5cbiAgICAgICAgaWYgKGFzID09PSAnaW1hZ2UnICYmIG9wdGlvbnMpIHtcbiAgICAgICAgICBrZXkgKz0gZ2V0SW1hZ2VQcmVsb2FkS2V5KGhyZWYsIG9wdGlvbnMuaW1hZ2VTcmNTZXQsIG9wdGlvbnMuaW1hZ2VTaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5ICs9IFwiW1wiICsgYXMgKyBcIl1cIiArIGhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGludHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgaGludFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhpbnRzLmFkZChrZXkpO1xuICAgICAgICB2YXIgdHJpbW1lZCA9IHRyaW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0cmltbWVkKSB7XG4gICAgICAgICAgZW1pdEhpbnQocmVxdWVzdCwgJ0wnLCBbaHJlZiwgYXMsIHRyaW1tZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbWl0SGludChyZXF1ZXN0LCAnTCcsIFtocmVmLCBhc10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZWxvYWRNb2R1bGUkMShocmVmLCBvcHRpb25zKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGhyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IHJlc29sdmVSZXF1ZXN0KCk7XG5cbiAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgIHZhciBoaW50cyA9IGdldEhpbnRzKHJlcXVlc3QpO1xuICAgICAgICB2YXIga2V5ID0gJ218JyArIGhyZWY7XG5cbiAgICAgICAgaWYgKGhpbnRzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgLy8gZHVwbGljYXRlIGhpbnRcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBoaW50cy5hZGQoa2V5KTtcbiAgICAgICAgdmFyIHRyaW1tZWQgPSB0cmltT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBpZiAodHJpbW1lZCkge1xuICAgICAgICAgIHJldHVybiBlbWl0SGludChyZXF1ZXN0LCAnbScsIFtocmVmLCB0cmltbWVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGVtaXRIaW50KHJlcXVlc3QsICdtJywgaHJlZik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJlaW5pdFN0eWxlKGhyZWYsIHByZWNlZGVuY2UsIG9wdGlvbnMpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gcmVzb2x2ZVJlcXVlc3QoKTtcblxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgdmFyIGhpbnRzID0gZ2V0SGludHMocmVxdWVzdCk7XG4gICAgICAgIHZhciBrZXkgPSAnU3wnICsgaHJlZjtcblxuICAgICAgICBpZiAoaGludHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgaGludFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhpbnRzLmFkZChrZXkpO1xuICAgICAgICB2YXIgdHJpbW1lZCA9IHRyaW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0cmltbWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGVtaXRIaW50KHJlcXVlc3QsICdTJywgW2hyZWYsIHR5cGVvZiBwcmVjZWRlbmNlID09PSAnc3RyaW5nJyA/IHByZWNlZGVuY2UgOiAwLCB0cmltbWVkXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZWNlZGVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIGVtaXRIaW50KHJlcXVlc3QsICdTJywgW2hyZWYsIHByZWNlZGVuY2VdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZW1pdEhpbnQocmVxdWVzdCwgJ1MnLCBocmVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVpbml0U2NyaXB0KGhyZWYsIG9wdGlvbnMpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gcmVzb2x2ZVJlcXVlc3QoKTtcblxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgdmFyIGhpbnRzID0gZ2V0SGludHMocmVxdWVzdCk7XG4gICAgICAgIHZhciBrZXkgPSAnWHwnICsgaHJlZjtcblxuICAgICAgICBpZiAoaGludHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgaGludFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhpbnRzLmFkZChrZXkpO1xuICAgICAgICB2YXIgdHJpbW1lZCA9IHRyaW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0cmltbWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGVtaXRIaW50KHJlcXVlc3QsICdYJywgW2hyZWYsIHRyaW1tZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZW1pdEhpbnQocmVxdWVzdCwgJ1gnLCBocmVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVpbml0TW9kdWxlU2NyaXB0KGhyZWYsIG9wdGlvbnMpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gcmVzb2x2ZVJlcXVlc3QoKTtcblxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgdmFyIGhpbnRzID0gZ2V0SGludHMocmVxdWVzdCk7XG4gICAgICAgIHZhciBrZXkgPSAnTXwnICsgaHJlZjtcblxuICAgICAgICBpZiAoaGludHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgaGludFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGhpbnRzLmFkZChrZXkpO1xuICAgICAgICB2YXIgdHJpbW1lZCA9IHRyaW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0cmltbWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGVtaXRIaW50KHJlcXVlc3QsICdNJywgW2hyZWYsIHRyaW1tZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZW1pdEhpbnQocmVxdWVzdCwgJ00nLCBocmVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyBGbGlnaHQgbm9ybWFsbHkgZW5jb2RlcyB1bmRlZmluZWQgYXMgYSBzcGVjaWFsIGNoYXJhY3RlciBob3dldmVyIGZvciBkaXJlY3RpdmUgb3B0aW9uXG4vLyBhcmd1bWVudHMgd2UgZG9uJ3Qgd2FudCB0byBzZW5kIHVubmVjZXNzYXJ5IGtleXMgYW5kIGJsb2F0IHRoZSBwYXlsb2FkIHNvIHdlIGNyZWF0ZSBhXG4vLyB0cmltbWVkIG9iamVjdCB3aGljaCBvbWl0cyBhbnkga2V5cyB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlcy5cbi8vIFRoaXMgaXMgb25seSB0eXBlc2FmZSBiZWNhdXNlIHRoZXNlIG9wdGlvbiBvYmplY3RzIGhhdmUgZW50aXJlbHkgb3B0aW9uYWwgZmllbGRzIHdoZXJlXG4vLyBudWxsIGFuZCB1bmRlZmluZWQgcmVwcmVzZW50IHRoZSBzYW1lIHRoaW5nIGFzIG5vIHByb3BlcnR5LlxuXG5cbmZ1bmN0aW9uIHRyaW1PcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIHZhciBoYXNQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHZhciB0cmltbWVkID0ge307XG5cbiAgZm9yICh2YXIga2V5IGluIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9uc1trZXldICE9IG51bGwpIHtcbiAgICAgIGhhc1Byb3BlcnRpZXMgPSB0cnVlO1xuICAgICAgdHJpbW1lZFtrZXldID0gb3B0aW9uc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoYXNQcm9wZXJ0aWVzID8gdHJpbW1lZCA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEltYWdlUHJlbG9hZEtleShocmVmLCBpbWFnZVNyY1NldCwgaW1hZ2VTaXplcykge1xuICB2YXIgdW5pcXVlUGFydCA9ICcnO1xuXG4gIGlmICh0eXBlb2YgaW1hZ2VTcmNTZXQgPT09ICdzdHJpbmcnICYmIGltYWdlU3JjU2V0ICE9PSAnJykge1xuICAgIHVuaXF1ZVBhcnQgKz0gJ1snICsgaW1hZ2VTcmNTZXQgKyAnXSc7XG5cbiAgICBpZiAodHlwZW9mIGltYWdlU2l6ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICB1bmlxdWVQYXJ0ICs9ICdbJyArIGltYWdlU2l6ZXMgKyAnXSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHVuaXF1ZVBhcnQgKz0gJ1tdW10nICsgaHJlZjtcbiAgfVxuXG4gIHJldHVybiBcIltpbWFnZV1cIiArIHVuaXF1ZVBhcnQ7XG59XG5cbnZhciBSZWFjdERPTUN1cnJlbnREaXNwYXRjaGVyID0gUmVhY3RET01TaGFyZWRJbnRlcm5hbHMuRGlzcGF0Y2hlcjtcbmZ1bmN0aW9uIHByZXBhcmVIb3N0RGlzcGF0Y2hlcigpIHtcbiAgUmVhY3RET01DdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gUmVhY3RET01GbGlnaHRTZXJ2ZXJEaXNwYXRjaGVyO1xufSAvLyBVc2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNlIGNvbnRleHRzIGZyb20gb25lcyB1c2VkIGluIG90aGVyIHJlbmRlcmVycy5cbi8vIHNtYWxsLCBzbWFsbGVyIHRoYW4gaG93IHdlIGVuY29kZSB1bmRlZmluZWQsIGFuZCBpcyB1bmFtYmlndW91cy4gV2UgY291bGQgdXNlXG4vLyBhIGRpZmZlcmVudCB0dXBsZSBzdHJ1Y3R1cmUgdG8gZW5jb2RlIHRoaXMgaW5zdGVhZCBidXQgdGhpcyBtYWtlcyB0aGUgcnVudGltZVxuLy8gY29zdCBjaGVhcGVyIGJ5IGVsaW1pbmF0aW5nIGEgdHlwZSBjaGVja3MgaW4gbW9yZSBwb3NpdGlvbnMuXG4vLyBwcmV0dGllci1pZ25vcmVcblxuZnVuY3Rpb24gY3JlYXRlSGludHMoKSB7XG4gIHJldHVybiBuZXcgU2V0KCk7XG59XG5cbnZhciBzdXBwb3J0c1JlcXVlc3RTdG9yYWdlID0gdHlwZW9mIEFzeW5jTG9jYWxTdG9yYWdlID09PSAnZnVuY3Rpb24nO1xudmFyIHJlcXVlc3RTdG9yYWdlID0gc3VwcG9ydHNSZXF1ZXN0U3RvcmFnZSA/IG5ldyBBc3luY0xvY2FsU3RvcmFnZSgpIDogbnVsbDsgLy8gV2UgdXNlIHRoZSBOb2RlIHZlcnNpb24gYnV0IGdldCBhY2Nlc3MgdG8gYXN5bmNfaG9va3MgZnJvbSBhIGdsb2JhbC5cblxudHlwZW9mIGFzeW5jX2hvb2tzID09PSAnb2JqZWN0JyA/IGFzeW5jX2hvb2tzLmNyZWF0ZUhvb2sgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7XG4gICAgZW5hYmxlOiBmdW5jdGlvbiAoKSB7fSxcbiAgICBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7fVxuICB9O1xufTtcbnR5cGVvZiBhc3luY19ob29rcyA9PT0gJ29iamVjdCcgPyBhc3luY19ob29rcy5leGVjdXRpb25Bc3luY0lkIDogbnVsbDtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50Jyk7XG52YXIgUkVBQ1RfU0VSVkVSX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnNlcnZlcl9jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTCA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWwnKTtcbnZhciBSRUFDVF9QT1NUUE9ORV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucG9zdHBvbmUnKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gRm9ybWluZyBhIHJldmVyc2UgdHJlZS5cbi8vIFRoZSBzdHJ1Y3R1cmUgb2YgYSBjb250ZXh0IHNuYXBzaG90IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZmlsZS5cbi8vIEN1cnJlbnRseSwgaXQncyBpbXBsZW1lbnRlZCBhcyB0cmFja2luZyB0aGUgY3VycmVudCBhY3RpdmUgbm9kZS5cblxuXG52YXIgcm9vdENvbnRleHRTbmFwc2hvdCA9IG51bGw7IC8vIFdlIGFzc3VtZSB0aGF0IHRoaXMgcnVudGltZSBvd25zIHRoZSBcImN1cnJlbnRcIiBmaWVsZCBvbiBhbGwgUmVhY3RDb250ZXh0IGluc3RhbmNlcy5cbi8vIFRoaXMgZ2xvYmFsIChhY3R1YWxseSB0aHJlYWQgbG9jYWwpIHN0YXRlIHJlcHJlc2VudHMgd2hhdCBzdGF0ZSBhbGwgdGhvc2UgXCJjdXJyZW50XCIsXG4vLyBmaWVsZHMgYXJlIGN1cnJlbnRseSBpbi5cblxudmFyIGN1cnJlbnRBY3RpdmVTbmFwc2hvdCA9IG51bGw7XG5cbmZ1bmN0aW9uIHBvcE5vZGUocHJldikge1xuICB7XG4gICAgcHJldi5jb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBwcmV2LnBhcmVudFZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hOb2RlKG5leHQpIHtcbiAge1xuICAgIG5leHQuY29udGV4dC5fY3VycmVudFZhbHVlID0gbmV4dC52YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwcmV2LCBuZXh0KSB7XG4gIGlmIChwcmV2ID09PSBuZXh0KSA7IGVsc2Uge1xuICAgIHBvcE5vZGUocHJldik7XG4gICAgdmFyIHBhcmVudFByZXYgPSBwcmV2LnBhcmVudDtcbiAgICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuXG4gICAgaWYgKHBhcmVudFByZXYgPT09IG51bGwpIHtcbiAgICAgIGlmIChwYXJlbnROZXh0ICE9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN0YWNrcyBtdXN0IHJlYWNoIHRoZSByb290IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJlbnROZXh0ID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN0YWNrcyBtdXN0IHJlYWNoIHRoZSByb290IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgICB9XG5cbiAgICAgIHBvcFRvTmVhcmVzdENvbW1vbkFuY2VzdG9yKHBhcmVudFByZXYsIHBhcmVudE5leHQpOyAvLyBPbiB0aGUgd2F5IGJhY2ssIHdlIHB1c2ggdGhlIG5ldyBvbmVzIHRoYXQgd2VyZW4ndCBjb21tb24uXG5cbiAgICAgIHB1c2hOb2RlKG5leHQpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwb3BBbGxQcmV2aW91cyhwcmV2KSB7XG4gIHBvcE5vZGUocHJldik7XG4gIHZhciBwYXJlbnRQcmV2ID0gcHJldi5wYXJlbnQ7XG5cbiAgaWYgKHBhcmVudFByZXYgIT09IG51bGwpIHtcbiAgICBwb3BBbGxQcmV2aW91cyhwYXJlbnRQcmV2KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwdXNoQWxsTmV4dChuZXh0KSB7XG4gIHZhciBwYXJlbnROZXh0ID0gbmV4dC5wYXJlbnQ7XG5cbiAgaWYgKHBhcmVudE5leHQgIT09IG51bGwpIHtcbiAgICBwdXNoQWxsTmV4dChwYXJlbnROZXh0KTtcbiAgfVxuXG4gIHB1c2hOb2RlKG5leHQpO1xufVxuXG5mdW5jdGlvbiBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCkge1xuICBwb3BOb2RlKHByZXYpO1xuICB2YXIgcGFyZW50UHJldiA9IHByZXYucGFyZW50O1xuXG4gIGlmIChwYXJlbnRQcmV2ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGVwdGggbXVzdCBlcXVhbCBhdCBsZWFzdCBhdCB6ZXJvIGJlZm9yZSByZWFjaGluZyB0aGUgcm9vdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgfVxuXG4gIGlmIChwYXJlbnRQcmV2LmRlcHRoID09PSBuZXh0LmRlcHRoKSB7XG4gICAgLy8gV2UgZm91bmQgdGhlIHNhbWUgbGV2ZWwuIE5vdyB3ZSBqdXN0IG5lZWQgdG8gZmluZCBhIHNoYXJlZCBhbmNlc3Rvci5cbiAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwYXJlbnRQcmV2LCBuZXh0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBtdXN0IHN0aWxsIGJlIGRlZXBlci5cbiAgICBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocGFyZW50UHJldiwgbmV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCkge1xuICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuXG4gIGlmIChwYXJlbnROZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGVwdGggbXVzdCBlcXVhbCBhdCBsZWFzdCBhdCB6ZXJvIGJlZm9yZSByZWFjaGluZyB0aGUgcm9vdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgfVxuXG4gIGlmIChwcmV2LmRlcHRoID09PSBwYXJlbnROZXh0LmRlcHRoKSB7XG4gICAgLy8gV2UgZm91bmQgdGhlIHNhbWUgbGV2ZWwuIE5vdyB3ZSBqdXN0IG5lZWQgdG8gZmluZCBhIHNoYXJlZCBhbmNlc3Rvci5cbiAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwcmV2LCBwYXJlbnROZXh0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBtdXN0IHN0aWxsIGJlIGRlZXBlci5cbiAgICBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBwYXJlbnROZXh0KTtcbiAgfVxuXG4gIHB1c2hOb2RlKG5leHQpO1xufSAvLyBQZXJmb3JtIGNvbnRleHQgc3dpdGNoaW5nIHRvIHRoZSBuZXcgc25hcHNob3QuXG4vLyBUbyBtYWtlIGl0IGNoZWFwIHRvIHJlYWQgbWFueSBjb250ZXh0cywgd2hpbGUgbm90IHN1c3BlbmRpbmcsIHdlIG1ha2UgdGhlIHN3aXRjaCBlYWdlcmx5IGJ5XG4vLyB1cGRhdGluZyBhbGwgdGhlIGNvbnRleHQncyBjdXJyZW50IHZhbHVlcy4gVGhhdCB3YXkgcmVhZHMsIGFsd2F5cyBqdXN0IHJlYWQgdGhlIGN1cnJlbnQgdmFsdWUuXG4vLyBBdCB0aGUgY29zdCBvZiB1cGRhdGluZyBjb250ZXh0cyBldmVuIGlmIHRoZXkncmUgbmV2ZXIgcmVhZCBieSB0aGlzIHN1YnRyZWUuXG5cblxuZnVuY3Rpb24gc3dpdGNoQ29udGV4dChuZXdTbmFwc2hvdCkge1xuICAvLyBUaGUgYmFzaWMgYWxnb3JpdGhtIHdlIG5lZWQgdG8gZG8gaXMgdG8gcG9wIGJhY2sgYW55IGNvbnRleHRzIHRoYXQgYXJlIG5vIGxvbmdlciBvbiB0aGUgc3RhY2suXG4gIC8vIFdlIGFsc28gbmVlZCB0byB1cGRhdGUgYW55IG5ldyBjb250ZXh0cyB0aGF0IGFyZSBub3cgb24gdGhlIHN0YWNrIHdpdGggdGhlIGRlZXBlc3QgdmFsdWUuXG4gIC8vIFRoZSBlYXNpZXN0IHdheSB0byB1cGRhdGUgbmV3IGNvbnRleHRzIGlzIHRvIGp1c3QgcmVhcHBseSB0aGVtIGluIHJldmVyc2Ugb3JkZXIgZnJvbSB0aGVcbiAgLy8gcGVyc3BlY3RpdmUgb2YgdGhlIGJhY2twb2ludGVycy4gVG8gYXZvaWQgYWxsb2NhdGluZyBhIGxvdCB3aGVuIHN3aXRjaGluZywgd2UgdXNlIHRoZSBzdGFja1xuICAvLyBmb3IgdGhhdC4gVGhlcmVmb3JlIHRoaXMgYWxnb3JpdGhtIGlzIHJlY3Vyc2l2ZS5cbiAgLy8gMSkgRmlyc3Qgd2UgcG9wIHdoaWNoIGV2ZXIgc25hcHNob3QgdHJlZSB3YXMgZGVlcGVzdC4gUG9wcGluZyBvbGQgY29udGV4dHMgYXMgd2UgZ28uXG4gIC8vIDIpIFRoZW4gd2UgZmluZCB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgZnJvbSB0aGVyZS4gUG9wcGluZyBvbGQgY29udGV4dHMgYXMgd2UgZ28uXG4gIC8vIDMpIFRoZW4gd2UgcmVhcHBseSBuZXcgY29udGV4dHMgb24gdGhlIHdheSBiYWNrIHVwIHRoZSBzdGFjay5cbiAgdmFyIHByZXYgPSBjdXJyZW50QWN0aXZlU25hcHNob3Q7XG4gIHZhciBuZXh0ID0gbmV3U25hcHNob3Q7XG5cbiAgaWYgKHByZXYgIT09IG5leHQpIHtcbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IFRoaXMgaGFzIHRvIGJlIG5vbi1udWxsIHNpbmNlIGl0J3Mgbm90IGVxdWFsIHRvIHByZXYuXG4gICAgICBwdXNoQWxsTmV4dChuZXh0KTtcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IG51bGwpIHtcbiAgICAgIHBvcEFsbFByZXZpb3VzKHByZXYpO1xuICAgIH0gZWxzZSBpZiAocHJldi5kZXB0aCA9PT0gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCk7XG4gICAgfSBlbHNlIGlmIChwcmV2LmRlcHRoID4gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBuZXh0KTtcbiAgICB9XG5cbiAgICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXh0O1xuICB9XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0KCkge1xuICByZXR1cm4gY3VycmVudEFjdGl2ZVNuYXBzaG90O1xufVxuZnVuY3Rpb24gcmVhZENvbnRleHQkMShjb250ZXh0KSB7XG4gIHZhciB2YWx1ZSA9IGNvbnRleHQuX2N1cnJlbnRWYWx1ZSA7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gQ29ycmVzcG9uZHMgdG8gUmVhY3RGaWJlcldha2VhYmxlIGFuZCBSZWFjdEZpenpXYWtlYWJsZSBtb2R1bGVzLiBHZW5lcmFsbHksXG4vLyBjaGFuZ2VzIHRvIG9uZSBtb2R1bGUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgb3RoZXJzLlxuLy8gVE9ETzogUmVuYW1lIHRoaXMgbW9kdWxlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBGaWJlciBvbmUgdG8gXCJUaGVuYWJsZVwiXG4vLyBpbnN0ZWFkIG9mIFwiV2FrZWFibGVcIi4gT3Igc29tZSBvdGhlciBtb3JlIGFwcHJvcHJpYXRlIG5hbWUuXG4vLyBBbiBlcnJvciB0aGF0IGlzIHRocm93biAoZS5nLiBieSBgdXNlYCkgdG8gdHJpZ2dlciBTdXNwZW5zZS4gSWYgd2Vcbi8vIGRldGVjdCB0aGlzIGlzIGNhdWdodCBieSB1c2Vyc3BhY2UsIHdlJ2xsIGxvZyBhIHdhcm5pbmcgaW4gZGV2ZWxvcG1lbnQuXG52YXIgU3VzcGVuc2VFeGNlcHRpb24gPSBuZXcgRXJyb3IoXCJTdXNwZW5zZSBFeGNlcHRpb246IFRoaXMgaXMgbm90IGEgcmVhbCBlcnJvciEgSXQncyBhbiBpbXBsZW1lbnRhdGlvbiBcIiArICdkZXRhaWwgb2YgYHVzZWAgdG8gaW50ZXJydXB0IHRoZSBjdXJyZW50IHJlbmRlci4gWW91IG11c3QgZWl0aGVyICcgKyAncmV0aHJvdyBpdCBpbW1lZGlhdGVseSwgb3IgbW92ZSB0aGUgYHVzZWAgY2FsbCBvdXRzaWRlIG9mIHRoZSAnICsgJ2B0cnkvY2F0Y2hgIGJsb2NrLiBDYXB0dXJpbmcgd2l0aG91dCByZXRocm93aW5nIHdpbGwgbGVhZCB0byAnICsgJ3VuZXhwZWN0ZWQgYmVoYXZpb3IuXFxuXFxuJyArICdUbyBoYW5kbGUgYXN5bmMgZXJyb3JzLCB3cmFwIHlvdXIgY29tcG9uZW50IGluIGFuIGVycm9yIGJvdW5kYXJ5LCBvciAnICsgXCJjYWxsIHRoZSBwcm9taXNlJ3MgYC5jYXRjaGAgbWV0aG9kIGFuZCBwYXNzIHRoZSByZXN1bHQgdG8gYHVzZWBcIik7XG5mdW5jdGlvbiBjcmVhdGVUaGVuYWJsZVN0YXRlKCkge1xuICAvLyBUaGUgVGhlbmFibGVTdGF0ZSBpcyBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGEgY29tcG9uZW50IHN1c3BlbmRzLiBJZiBpdFxuICAvLyBzdXNwZW5kcyBhZ2Fpbiwgd2UnbGwgcmV1c2UgdGhlIHNhbWUgc3RhdGUuXG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmZ1bmN0aW9uIHRyYWNrVXNlZFRoZW5hYmxlKHRoZW5hYmxlU3RhdGUsIHRoZW5hYmxlLCBpbmRleCkge1xuICB2YXIgcHJldmlvdXMgPSB0aGVuYWJsZVN0YXRlW2luZGV4XTtcblxuICBpZiAocHJldmlvdXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoZW5hYmxlU3RhdGUucHVzaCh0aGVuYWJsZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByZXZpb3VzICE9PSB0aGVuYWJsZSkge1xuICAgICAgLy8gUmV1c2UgdGhlIHByZXZpb3VzIHRoZW5hYmxlLCBhbmQgZHJvcCB0aGUgbmV3IG9uZS4gV2UgY2FuIGFzc3VtZVxuICAgICAgLy8gdGhleSByZXByZXNlbnQgdGhlIHNhbWUgdmFsdWUsIGJlY2F1c2UgY29tcG9uZW50cyBhcmUgaWRlbXBvdGVudC5cbiAgICAgIC8vIEF2b2lkIGFuIHVuaGFuZGxlZCByZWplY3Rpb24gZXJyb3JzIGZvciB0aGUgUHJvbWlzZXMgdGhhdCB3ZSdsbFxuICAgICAgLy8gaW50ZW50aW9uYWxseSBpZ25vcmUuXG4gICAgICB0aGVuYWJsZS50aGVuKG5vb3AsIG5vb3ApO1xuICAgICAgdGhlbmFibGUgPSBwcmV2aW91cztcbiAgICB9XG4gIH0gLy8gV2UgdXNlIGFuIGV4cGFuZG8gdG8gdHJhY2sgdGhlIHN0YXR1cyBhbmQgcmVzdWx0IG9mIGEgdGhlbmFibGUgc28gdGhhdCB3ZVxuICAvLyBjYW4gc3luY2hyb25vdXNseSB1bndyYXAgdGhlIHZhbHVlLiBUaGluayBvZiB0aGlzIGFzIGFuIGV4dGVuc2lvbiBvZiB0aGVcbiAgLy8gUHJvbWlzZSBBUEksIG9yIGEgY3VzdG9tIGludGVyZmFjZSB0aGF0IGlzIGEgc3VwZXJzZXQgb2YgVGhlbmFibGUuXG4gIC8vXG4gIC8vIElmIHRoZSB0aGVuYWJsZSBkb2Vzbid0IGhhdmUgYSBzdGF0dXMsIHNldCBpdCB0byBcInBlbmRpbmdcIiBhbmQgYXR0YWNoXG4gIC8vIGEgbGlzdGVuZXIgdGhhdCB3aWxsIHVwZGF0ZSBpdHMgc3RhdHVzIGFuZCByZXN1bHQgd2hlbiBpdCByZXNvbHZlcy5cblxuXG4gIHN3aXRjaCAodGhlbmFibGUuc3RhdHVzKSB7XG4gICAgY2FzZSAnZnVsZmlsbGVkJzpcbiAgICAgIHtcbiAgICAgICAgdmFyIGZ1bGZpbGxlZFZhbHVlID0gdGhlbmFibGUudmFsdWU7XG4gICAgICAgIHJldHVybiBmdWxmaWxsZWRWYWx1ZTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ3JlamVjdGVkJzpcbiAgICAgIHtcbiAgICAgICAgdmFyIHJlamVjdGVkRXJyb3IgPSB0aGVuYWJsZS5yZWFzb247XG4gICAgICAgIHRocm93IHJlamVjdGVkRXJyb3I7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICBpZiAodHlwZW9mIHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3N0cmluZycpIDsgZWxzZSB7XG4gICAgICAgICAgdmFyIHBlbmRpbmdUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgIHBlbmRpbmdUaGVuYWJsZS5zdGF0dXMgPSAncGVuZGluZyc7XG4gICAgICAgICAgcGVuZGluZ1RoZW5hYmxlLnRoZW4oZnVuY3Rpb24gKGZ1bGZpbGxlZFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhlbmFibGUuc3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgICAgdmFyIGZ1bGZpbGxlZFRoZW5hYmxlID0gdGhlbmFibGU7XG4gICAgICAgICAgICAgIGZ1bGZpbGxlZFRoZW5hYmxlLnN0YXR1cyA9ICdmdWxmaWxsZWQnO1xuICAgICAgICAgICAgICBmdWxmaWxsZWRUaGVuYWJsZS52YWx1ZSA9IGZ1bGZpbGxlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgIHZhciByZWplY3RlZFRoZW5hYmxlID0gdGhlbmFibGU7XG4gICAgICAgICAgICAgIHJlamVjdGVkVGhlbmFibGUuc3RhdHVzID0gJ3JlamVjdGVkJztcbiAgICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTsgLy8gQ2hlY2sgb25lIG1vcmUgdGltZSBpbiBjYXNlIHRoZSB0aGVuYWJsZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG5cbiAgICAgICAgICBzd2l0Y2ggKHRoZW5hYmxlLnN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSAnZnVsZmlsbGVkJzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBmdWxmaWxsZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdWxmaWxsZWRUaGVuYWJsZS52YWx1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdyZWplY3RlZCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVqZWN0ZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgICAgIHRocm93IHJlamVjdGVkVGhlbmFibGUucmVhc29uO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIFN1c3BlbmQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRocm93aW5nIGhlcmUgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgYWxsb3dzIHVzIHRvIHVud2luZCB0aGVcbiAgICAgICAgLy8gY2FsbCBzdGFjay4gQnV0IHdlIHNob3VsZG4ndCBhbGxvdyBpdCB0byBsZWFrIGludG8gdXNlcnNwYWNlLiBUaHJvdyBhblxuICAgICAgICAvLyBvcGFxdWUgcGxhY2Vob2xkZXIgdmFsdWUgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHRoZW5hYmxlLiBJZiBpdCBkb2Vzbid0XG4gICAgICAgIC8vIGdldCBjYXB0dXJlZCBieSB0aGUgd29yayBsb29wLCBsb2cgYSB3YXJuaW5nLCBiZWNhdXNlIHRoYXQgbWVhbnNcbiAgICAgICAgLy8gc29tZXRoaW5nIGluIHVzZXJzcGFjZSBtdXN0IGhhdmUgY2F1Z2h0IGl0LlxuXG5cbiAgICAgICAgc3VzcGVuZGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgdGhyb3cgU3VzcGVuc2VFeGNlcHRpb247XG4gICAgICB9XG4gIH1cbn0gLy8gVGhpcyBpcyB1c2VkIHRvIHRyYWNrIHRoZSBhY3R1YWwgdGhlbmFibGUgdGhhdCBzdXNwZW5kZWQgc28gaXQgY2FuIGJlXG4vLyBwYXNzZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIFN1c3BlbnNlIGltcGxlbWVudGF0aW9uIOKAlCB3aGljaCwgZm9yIGhpc3RvcmljYWxcbi8vIHJlYXNvbnMsIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIHRoZW5hYmxlLlxuXG52YXIgc3VzcGVuZGVkVGhlbmFibGUgPSBudWxsO1xuZnVuY3Rpb24gZ2V0U3VzcGVuZGVkVGhlbmFibGUoKSB7XG4gIC8vIFRoaXMgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGB1c2VgIHN1c3BlbmRzIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gYHVzZWBcbiAgLy8gdGhyb3dzIGFuIG9wYXF1ZSB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSB0aGVuYWJsZSBpdHNlbGYgc28gdGhhdCBpdCBjYW4ndCBiZVxuICAvLyBjYXVnaHQgaW4gdXNlcnNwYWNlLiBUaGVuIHRoZSB3b3JrIGxvb3AgYWNjZXNzZXMgdGhlIGFjdHVhbCB0aGVuYWJsZSB1c2luZ1xuICAvLyB0aGlzIGZ1bmN0aW9uLlxuICBpZiAoc3VzcGVuZGVkVGhlbmFibGUgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgc3VzcGVuZGVkIHRoZW5hYmxlLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSAnICsgJ2FuIGlzc3VlLicpO1xuICB9XG5cbiAgdmFyIHRoZW5hYmxlID0gc3VzcGVuZGVkVGhlbmFibGU7XG4gIHN1c3BlbmRlZFRoZW5hYmxlID0gbnVsbDtcbiAgcmV0dXJuIHRoZW5hYmxlO1xufVxuXG52YXIgY3VycmVudFJlcXVlc3QkMSA9IG51bGw7XG52YXIgdGhlbmFibGVJbmRleENvdW50ZXIgPSAwO1xudmFyIHRoZW5hYmxlU3RhdGUgPSBudWxsO1xuZnVuY3Rpb24gcHJlcGFyZVRvVXNlSG9va3NGb3JSZXF1ZXN0KHJlcXVlc3QpIHtcbiAgY3VycmVudFJlcXVlc3QkMSA9IHJlcXVlc3Q7XG59XG5mdW5jdGlvbiByZXNldEhvb2tzRm9yUmVxdWVzdCgpIHtcbiAgY3VycmVudFJlcXVlc3QkMSA9IG51bGw7XG59XG5mdW5jdGlvbiBwcmVwYXJlVG9Vc2VIb29rc0ZvckNvbXBvbmVudChwcmV2VGhlbmFibGVTdGF0ZSkge1xuICB0aGVuYWJsZUluZGV4Q291bnRlciA9IDA7XG4gIHRoZW5hYmxlU3RhdGUgPSBwcmV2VGhlbmFibGVTdGF0ZTtcbn1cbmZ1bmN0aW9uIGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKSB7XG4gIHZhciBzdGF0ZSA9IHRoZW5hYmxlU3RhdGU7XG4gIHRoZW5hYmxlU3RhdGUgPSBudWxsO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHJlYWRDb250ZXh0KGNvbnRleHQpIHtcbiAge1xuICAgIGlmIChjb250ZXh0LiQkdHlwZW9mICE9PSBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFKSB7XG4gICAgICBpZiAoaXNDbGllbnRSZWZlcmVuY2UoY29udGV4dCkpIHtcbiAgICAgICAgZXJyb3IoJ0Nhbm5vdCByZWFkIGEgQ2xpZW50IENvbnRleHQgZnJvbSBhIFNlcnZlciBDb21wb25lbnQuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcignT25seSBjcmVhdGVTZXJ2ZXJDb250ZXh0IGlzIHN1cHBvcnRlZCBpbiBTZXJ2ZXIgQ29tcG9uZW50cy4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFJlcXVlc3QkMSA9PT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0NvbnRleHQgY2FuIG9ubHkgYmUgcmVhZCB3aGlsZSBSZWFjdCBpcyByZW5kZXJpbmcuICcgKyAnSW4gY2xhc3NlcywgeW91IGNhbiByZWFkIGl0IGluIHRoZSByZW5kZXIgbWV0aG9kIG9yIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcy4gJyArICdJbiBmdW5jdGlvbiBjb21wb25lbnRzLCB5b3UgY2FuIHJlYWQgaXQgZGlyZWN0bHkgaW4gdGhlIGZ1bmN0aW9uIGJvZHksIGJ1dCBub3QgJyArICdpbnNpZGUgSG9va3MgbGlrZSB1c2VSZWR1Y2VyKCkgb3IgdXNlTWVtbygpLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkQ29udGV4dCQxKGNvbnRleHQpO1xufVxuXG52YXIgSG9va3NEaXNwYXRjaGVyID0ge1xuICB1c2VNZW1vOiBmdW5jdGlvbiAobmV4dENyZWF0ZSkge1xuICAgIHJldHVybiBuZXh0Q3JlYXRlKCk7XG4gIH0sXG4gIHVzZUNhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH0sXG4gIHVzZURlYnVnVmFsdWU6IGZ1bmN0aW9uICgpIHt9LFxuICB1c2VEZWZlcnJlZFZhbHVlOiB1bnN1cHBvcnRlZEhvb2ssXG4gIHVzZVRyYW5zaXRpb246IHVuc3VwcG9ydGVkSG9vayxcbiAgcmVhZENvbnRleHQ6IHJlYWRDb250ZXh0LFxuICB1c2VDb250ZXh0OiByZWFkQ29udGV4dCxcbiAgdXNlUmVkdWNlcjogdW5zdXBwb3J0ZWRIb29rLFxuICB1c2VSZWY6IHVuc3VwcG9ydGVkSG9vayxcbiAgdXNlU3RhdGU6IHVuc3VwcG9ydGVkSG9vayxcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0OiB1bnN1cHBvcnRlZEhvb2ssXG4gIHVzZUxheW91dEVmZmVjdDogdW5zdXBwb3J0ZWRIb29rLFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlOiB1bnN1cHBvcnRlZEhvb2ssXG4gIHVzZUVmZmVjdDogdW5zdXBwb3J0ZWRIb29rLFxuICB1c2VJZDogdXNlSWQsXG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlOiB1bnN1cHBvcnRlZEhvb2ssXG4gIHVzZUNhY2hlUmVmcmVzaDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB1bnN1cHBvcnRlZFJlZnJlc2g7XG4gIH0sXG4gIHVzZU1lbW9DYWNoZTogZnVuY3Rpb24gKHNpemUpIHtcbiAgICB2YXIgZGF0YSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBkYXRhW2ldID0gUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfSxcbiAgdXNlOiB1c2Vcbn07XG5cbmZ1bmN0aW9uIHVuc3VwcG9ydGVkSG9vaygpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIEhvb2sgaXMgbm90IHN1cHBvcnRlZCBpbiBTZXJ2ZXIgQ29tcG9uZW50cy4nKTtcbn1cblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRSZWZyZXNoKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnJlc2hpbmcgdGhlIGNhY2hlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU2VydmVyIENvbXBvbmVudHMuJyk7XG59XG5cbmZ1bmN0aW9uIHVzZUlkKCkge1xuICBpZiAoY3VycmVudFJlcXVlc3QkMSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlSWQgY2FuIG9ubHkgYmUgdXNlZCB3aGlsZSBSZWFjdCBpcyByZW5kZXJpbmcnKTtcbiAgfVxuXG4gIHZhciBpZCA9IGN1cnJlbnRSZXF1ZXN0JDEuaWRlbnRpZmllckNvdW50Kys7IC8vIHVzZSAnUycgZm9yIEZsaWdodCBjb21wb25lbnRzIHRvIGRpc3Rpbmd1aXNoIGZyb20gJ1InIGFuZCAncicgaW4gRml6ei9DbGllbnRcblxuICByZXR1cm4gJzonICsgY3VycmVudFJlcXVlc3QkMS5pZGVudGlmaWVyUHJlZml4ICsgJ1MnICsgaWQudG9TdHJpbmcoMzIpICsgJzonO1xufVxuXG5mdW5jdGlvbiB1c2UodXNhYmxlKSB7XG4gIGlmICh1c2FibGUgIT09IG51bGwgJiYgdHlwZW9mIHVzYWJsZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHVzYWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgICBpZiAodHlwZW9mIHVzYWJsZS50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGhlbmFibGUuXG4gICAgICB2YXIgdGhlbmFibGUgPSB1c2FibGU7IC8vIFRyYWNrIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGhlbmFibGUgd2l0aGluIHRoaXMgZmliZXIuXG5cbiAgICAgIHZhciBpbmRleCA9IHRoZW5hYmxlSW5kZXhDb3VudGVyO1xuICAgICAgdGhlbmFibGVJbmRleENvdW50ZXIgKz0gMTtcblxuICAgICAgaWYgKHRoZW5hYmxlU3RhdGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhlbmFibGVTdGF0ZSA9IGNyZWF0ZVRoZW5hYmxlU3RhdGUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRyYWNrVXNlZFRoZW5hYmxlKHRoZW5hYmxlU3RhdGUsIHRoZW5hYmxlLCBpbmRleCk7XG4gICAgfSBlbHNlIGlmICh1c2FibGUuJCR0eXBlb2YgPT09IFJFQUNUX1NFUlZFUl9DT05URVhUX1RZUEUpIHtcbiAgICAgIHZhciBjb250ZXh0ID0gdXNhYmxlO1xuICAgICAgcmV0dXJuIHJlYWRDb250ZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBpZiAoaXNDbGllbnRSZWZlcmVuY2UodXNhYmxlKSkge1xuICAgICAgZXJyb3IoJ0Nhbm5vdCB1c2UoKSBhbiBhbHJlYWR5IHJlc29sdmVkIENsaWVudCBSZWZlcmVuY2UuJyk7XG4gICAgfVxuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG5cbiAgdGhyb3cgbmV3IEVycm9yKCdBbiB1bnN1cHBvcnRlZCB0eXBlIHdhcyBwYXNzZWQgdG8gdXNlKCk6ICcgKyBTdHJpbmcodXNhYmxlKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hbCgpIHtcbiAgcmV0dXJuIG5ldyBBYm9ydENvbnRyb2xsZXIoKS5zaWduYWw7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDYWNoZSgpIHtcbiAgdmFyIHJlcXVlc3QgPSByZXNvbHZlUmVxdWVzdCgpO1xuXG4gIGlmIChyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIGdldENhY2hlKHJlcXVlc3QpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBNYXAoKTtcbn1cblxudmFyIERlZmF1bHRDYWNoZURpc3BhdGNoZXIgPSB7XG4gIGdldENhY2hlU2lnbmFsOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNhY2hlID0gcmVzb2x2ZUNhY2hlKCk7XG4gICAgdmFyIGVudHJ5ID0gY2FjaGUuZ2V0KGNyZWF0ZVNpZ25hbCk7XG5cbiAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW50cnkgPSBjcmVhdGVTaWduYWwoKTtcbiAgICAgIGNhY2hlLnNldChjcmVhdGVTaWduYWwsIGVudHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnk7XG4gIH0sXG4gIGdldENhY2hlRm9yVHlwZTogZnVuY3Rpb24gKHJlc291cmNlVHlwZSkge1xuICAgIHZhciBjYWNoZSA9IHJlc29sdmVDYWNoZSgpO1xuICAgIHZhciBlbnRyeSA9IGNhY2hlLmdldChyZXNvdXJjZVR5cGUpO1xuXG4gICAgaWYgKGVudHJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVudHJ5ID0gcmVzb3VyY2VUeXBlKCk7IC8vIFRPRE86IFdhcm4gaWYgdW5kZWZpbmVkP1xuXG4gICAgICBjYWNoZS5zZXQocmVzb3VyY2VUeXBlLCBlbnRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYSkge1xuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XG59XG5cbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuLy8gaW4gY2FzZSB0aGV5IGVycm9yLlxuXG52YXIganN4UHJvcHNQYXJlbnRzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBqc3hDaGlsZHJlblBhcmVudHMgPSBuZXcgV2Vha01hcCgpO1xuXG5mdW5jdGlvbiBpc09iamVjdFByb3RvdHlwZShvYmplY3QpIHtcbiAgaWYgKCFvYmplY3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICBpZiAob2JqZWN0ID09PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBJdCBtaWdodCBiZSBhbiBvYmplY3QgZnJvbSBhIGRpZmZlcmVudCBSZWFsbSB3aGljaCBpc1xuICAvLyBzdGlsbCBqdXN0IGEgcGxhaW4gc2ltcGxlIG9iamVjdC5cblxuXG4gIGlmIChnZXRQcm90b3R5cGVPZihvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCEobmFtZXNbaV0gaW4gT2JqZWN0UHJvdG90eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1NpbXBsZU9iamVjdChvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdFByb3RvdHlwZShnZXRQcm90b3R5cGVPZihvYmplY3QpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBuYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIG5hbWVzW2ldKTtcblxuICAgIGlmICghZGVzY3JpcHRvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoKG5hbWVzW2ldID09PSAna2V5JyB8fCBuYW1lc1tpXSA9PT0gJ3JlZicpICYmIHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBSZWFjdCBhZGRzIGtleSBhbmQgcmVmIGdldHRlcnMgdG8gcHJvcHMgb2JqZWN0cyB0byBpc3N1ZSB3YXJuaW5ncy5cbiAgICAgICAgLy8gVGhvc2UgZ2V0dGVycyB3aWxsIG5vdCBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgY2xpZW50LCBidXQgdGhhdCdzIG9rLFxuICAgICAgICAvLyBzbyB3ZSdsbCBzcGVjaWFsIGNhc2UgdGhlbS5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIG9iamVjdE5hbWUob2JqZWN0KSB7XG4gIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgdmFyIG5hbWUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KTtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXlxcW29iamVjdCAoLiopXFxdJC8sIGZ1bmN0aW9uIChtLCBwMCkge1xuICAgIHJldHVybiBwMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKGtleSkge1xuICB2YXIgZW5jb2RlZEtleSA9IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gIHJldHVybiAnXCInICsga2V5ICsgJ1wiJyA9PT0gZW5jb2RlZEtleSA/IGtleSA6IGVuY29kZWRLZXk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UodmFsdWUpIHtcbiAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUubGVuZ3RoIDw9IDEwID8gdmFsdWUgOiB2YWx1ZS5zbGljZSgwLCAxMCkgKyAnLi4uJyk7XG4gICAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAge1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gJ1suLi5dJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lID0gb2JqZWN0TmFtZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKG5hbWUgPT09ICdPYmplY3QnKSB7XG4gICAgICAgICAgcmV0dXJuICd7Li4ufSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHJldHVybiAnZnVuY3Rpb24nO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUudHlwZSk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTGF6eSBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZUVsZW1lbnRUeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKG9iamVjdE9yQXJyYXksIGV4cGFuZGVkTmFtZSkge1xuICB2YXIgb2JqS2luZCA9IG9iamVjdE5hbWUob2JqZWN0T3JBcnJheSk7XG5cbiAgaWYgKG9iaktpbmQgIT09ICdPYmplY3QnICYmIG9iaktpbmQgIT09ICdBcnJheScpIHtcbiAgICByZXR1cm4gb2JqS2luZDtcbiAgfVxuXG4gIHZhciBzdHIgPSAnJztcbiAgdmFyIHN0YXJ0ID0gLTE7XG4gIHZhciBsZW5ndGggPSAwO1xuXG4gIGlmIChpc0FycmF5KG9iamVjdE9yQXJyYXkpKSB7XG4gICAgaWYgKGpzeENoaWxkcmVuUGFyZW50cy5oYXMob2JqZWN0T3JBcnJheSkpIHtcbiAgICAgIC8vIFByaW50IEpTWCBDaGlsZHJlblxuICAgICAgdmFyIHR5cGUgPSBqc3hDaGlsZHJlblBhcmVudHMuZ2V0KG9iamVjdE9yQXJyYXkpO1xuICAgICAgc3RyID0gJzwnICsgZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSArICc+JztcbiAgICAgIHZhciBhcnJheSA9IG9iamVjdE9yQXJyYXk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaV07XG4gICAgICAgIHZhciBzdWJzdHIgPSB2b2lkIDA7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdWJzdHIgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgc3Vic3RyID0gJ3snICsgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgJ30nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YnN0ciA9ICd7JyArIGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgJ30nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCcnICsgaSA9PT0gZXhwYW5kZWROYW1lKSB7XG4gICAgICAgICAgc3RhcnQgPSBzdHIubGVuZ3RoO1xuICAgICAgICAgIGxlbmd0aCA9IHN1YnN0ci5sZW5ndGg7XG4gICAgICAgICAgc3RyICs9IHN1YnN0cjtcbiAgICAgICAgfSBlbHNlIGlmIChzdWJzdHIubGVuZ3RoIDwgMTUgJiYgc3RyLmxlbmd0aCArIHN1YnN0ci5sZW5ndGggPCA0MCkge1xuICAgICAgICAgIHN0ciArPSBzdWJzdHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyICs9ICd7Li4ufSc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RyICs9ICc8LycgKyBkZXNjcmliZUVsZW1lbnRUeXBlKHR5cGUpICsgJz4nO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmludCBBcnJheVxuICAgICAgc3RyID0gJ1snO1xuICAgICAgdmFyIF9hcnJheSA9IG9iamVjdE9yQXJyYXk7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBfYXJyYXkubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGlmIChfaSA+IDApIHtcbiAgICAgICAgICBzdHIgKz0gJywgJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfdmFsdWUgPSBfYXJyYXlbX2ldO1xuXG4gICAgICAgIHZhciBfc3Vic3RyID0gdm9pZCAwO1xuXG4gICAgICAgIGlmICh0eXBlb2YgX3ZhbHVlID09PSAnb2JqZWN0JyAmJiBfdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICBfc3Vic3RyID0gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfc3Vic3RyID0gZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZShfdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCcnICsgX2kgPT09IGV4cGFuZGVkTmFtZSkge1xuICAgICAgICAgIHN0YXJ0ID0gc3RyLmxlbmd0aDtcbiAgICAgICAgICBsZW5ndGggPSBfc3Vic3RyLmxlbmd0aDtcbiAgICAgICAgICBzdHIgKz0gX3N1YnN0cjtcbiAgICAgICAgfSBlbHNlIGlmIChfc3Vic3RyLmxlbmd0aCA8IDEwICYmIHN0ci5sZW5ndGggKyBfc3Vic3RyLmxlbmd0aCA8IDQwKSB7XG4gICAgICAgICAgc3RyICs9IF9zdWJzdHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyICs9ICcuLi4nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0ciArPSAnXSc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChvYmplY3RPckFycmF5LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgIHN0ciA9ICc8JyArIGRlc2NyaWJlRWxlbWVudFR5cGUob2JqZWN0T3JBcnJheS50eXBlKSArICcvPic7XG4gICAgfSBlbHNlIGlmIChqc3hQcm9wc1BhcmVudHMuaGFzKG9iamVjdE9yQXJyYXkpKSB7XG4gICAgICAvLyBQcmludCBKU1hcbiAgICAgIHZhciBfdHlwZSA9IGpzeFByb3BzUGFyZW50cy5nZXQob2JqZWN0T3JBcnJheSk7XG5cbiAgICAgIHN0ciA9ICc8JyArIChkZXNjcmliZUVsZW1lbnRUeXBlKF90eXBlKSB8fCAnLi4uJyk7XG4gICAgICB2YXIgb2JqZWN0ID0gb2JqZWN0T3JBcnJheTtcbiAgICAgIHZhciBuYW1lcyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG5hbWVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgc3RyICs9ICcgJztcbiAgICAgICAgdmFyIG5hbWUgPSBuYW1lc1tfaTJdO1xuICAgICAgICBzdHIgKz0gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2UobmFtZSkgKyAnPSc7XG4gICAgICAgIHZhciBfdmFsdWUyID0gb2JqZWN0W25hbWVdO1xuXG4gICAgICAgIHZhciBfc3Vic3RyMiA9IHZvaWQgMDtcblxuICAgICAgICBpZiAobmFtZSA9PT0gZXhwYW5kZWROYW1lICYmIHR5cGVvZiBfdmFsdWUyID09PSAnb2JqZWN0JyAmJiBfdmFsdWUyICE9PSBudWxsKSB7XG4gICAgICAgICAgX3N1YnN0cjIgPSBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShfdmFsdWUyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfc3Vic3RyMiA9IGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIF92YWx1ZTIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgX3N1YnN0cjIgPSAneycgKyBfc3Vic3RyMiArICd9JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lID09PSBleHBhbmRlZE5hbWUpIHtcbiAgICAgICAgICBzdGFydCA9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgbGVuZ3RoID0gX3N1YnN0cjIubGVuZ3RoO1xuICAgICAgICAgIHN0ciArPSBfc3Vic3RyMjtcbiAgICAgICAgfSBlbHNlIGlmIChfc3Vic3RyMi5sZW5ndGggPCAxMCAmJiBzdHIubGVuZ3RoICsgX3N1YnN0cjIubGVuZ3RoIDwgNDApIHtcbiAgICAgICAgICBzdHIgKz0gX3N1YnN0cjI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyICs9ICcuLi4nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0ciArPSAnPic7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFByaW50IE9iamVjdFxuICAgICAgc3RyID0gJ3snO1xuICAgICAgdmFyIF9vYmplY3QgPSBvYmplY3RPckFycmF5O1xuXG4gICAgICB2YXIgX25hbWVzID0gT2JqZWN0LmtleXMoX29iamVjdCk7XG5cbiAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IF9uYW1lcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAgIGlmIChfaTMgPiAwKSB7XG4gICAgICAgICAgc3RyICs9ICcsICc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX25hbWUgPSBfbmFtZXNbX2kzXTtcbiAgICAgICAgc3RyICs9IGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKF9uYW1lKSArICc6ICc7XG4gICAgICAgIHZhciBfdmFsdWUzID0gX29iamVjdFtfbmFtZV07XG5cbiAgICAgICAgdmFyIF9zdWJzdHIzID0gdm9pZCAwO1xuXG4gICAgICAgIGlmICh0eXBlb2YgX3ZhbHVlMyA9PT0gJ29iamVjdCcgJiYgX3ZhbHVlMyAhPT0gbnVsbCkge1xuICAgICAgICAgIF9zdWJzdHIzID0gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoX3ZhbHVlMyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3N1YnN0cjMgPSBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKF92YWx1ZTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF9uYW1lID09PSBleHBhbmRlZE5hbWUpIHtcbiAgICAgICAgICBzdGFydCA9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgbGVuZ3RoID0gX3N1YnN0cjMubGVuZ3RoO1xuICAgICAgICAgIHN0ciArPSBfc3Vic3RyMztcbiAgICAgICAgfSBlbHNlIGlmIChfc3Vic3RyMy5sZW5ndGggPCAxMCAmJiBzdHIubGVuZ3RoICsgX3N1YnN0cjMubGVuZ3RoIDwgNDApIHtcbiAgICAgICAgICBzdHIgKz0gX3N1YnN0cjM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyICs9ICcuLi4nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0ciArPSAnfSc7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4cGFuZGVkTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIGlmIChzdGFydCA+IC0xICYmIGxlbmd0aCA+IDApIHtcbiAgICB2YXIgaGlnaGxpZ2h0ID0gJyAnLnJlcGVhdChzdGFydCkgKyAnXicucmVwZWF0KGxlbmd0aCk7XG4gICAgcmV0dXJuICdcXG4gICcgKyBzdHIgKyAnXFxuICAnICsgaGlnaGxpZ2h0O1xuICB9XG5cbiAgcmV0dXJuICdcXG4gICcgKyBzdHI7XG59XG5cbnZhciBSZWFjdFNoYXJlZFNlcnZlckludGVybmFscyA9IC8vICRGbG93Rml4TWU6IEl0J3MgZGVmaW5lZCBpbiB0aGUgb25lIHdlIHJlc29sdmUgdG8uXG5SZWFjdC5fX1NFQ1JFVF9TRVJWRVJfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbmlmICghUmVhY3RTaGFyZWRTZXJ2ZXJJbnRlcm5hbHMpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdUaGUgXCJyZWFjdFwiIHBhY2thZ2UgaW4gdGhpcyBlbnZpcm9ubWVudCBpcyBub3QgY29uZmlndXJlZCBjb3JyZWN0bHkuICcgKyAnVGhlIFwicmVhY3Qtc2VydmVyXCIgY29uZGl0aW9uIG11c3QgYmUgZW5hYmxlZCBpbiBhbnkgZW52aXJvbm1lbnQgdGhhdCAnICsgJ3J1bnMgUmVhY3QgU2VydmVyIENvbXBvbmVudHMuJyk7XG59XG5cbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xudmFyIHN0cmluZ2lmeSA9IEpTT04uc3RyaW5naWZ5OyAvLyBTZXJpYWxpemFibGUgdmFsdWVzXG4vLyBUaGVuYWJsZTxSZWFjdENsaWVudFZhbHVlPlxuXG52YXIgUEVORElORyQxID0gMDtcbnZhciBDT01QTEVURUQgPSAxO1xudmFyIEFCT1JURUQgPSAzO1xudmFyIEVSUk9SRUQkMSA9IDQ7XG52YXIgUmVhY3RDdXJyZW50Q2FjaGUgPSBSZWFjdFNoYXJlZFNlcnZlckludGVybmFscy5SZWFjdEN1cnJlbnRDYWNoZTtcbnZhciBSZWFjdEN1cnJlbnREaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcjtcblxuZnVuY3Rpb24gZGVmYXVsdEVycm9ySGFuZGxlcihlcnJvcikge1xuICBjb25zb2xlWydlcnJvciddKGVycm9yKTsgLy8gRG9uJ3QgdHJhbnNmb3JtIHRvIG91ciB3cmFwcGVyXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQb3N0cG9uZUhhbmRsZXIocmVhc29uKSB7Ly8gTm9vcFxufVxuXG52YXIgT1BFTiA9IDA7XG52YXIgQ0xPU0lORyA9IDE7XG52YXIgQ0xPU0VEID0gMjtcbmZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3QobW9kZWwsIGJ1bmRsZXJDb25maWcsIG9uRXJyb3IsIGNvbnRleHQsIGlkZW50aWZpZXJQcmVmaXgsIG9uUG9zdHBvbmUpIHtcbiAgaWYgKFJlYWN0Q3VycmVudENhY2hlLmN1cnJlbnQgIT09IG51bGwgJiYgUmVhY3RDdXJyZW50Q2FjaGUuY3VycmVudCAhPT0gRGVmYXVsdENhY2hlRGlzcGF0Y2hlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ3VycmVudGx5IFJlYWN0IG9ubHkgc3VwcG9ydHMgb25lIFJTQyByZW5kZXJlciBhdCBhIHRpbWUuJyk7XG4gIH1cblxuICBwcmVwYXJlSG9zdERpc3BhdGNoZXIoKTtcbiAgUmVhY3RDdXJyZW50Q2FjaGUuY3VycmVudCA9IERlZmF1bHRDYWNoZURpc3BhdGNoZXI7XG4gIHZhciBhYm9ydFNldCA9IG5ldyBTZXQoKTtcbiAgdmFyIHBpbmdlZFRhc2tzID0gW107XG4gIHZhciBjbGVhbnVwUXVldWUgPSBbXTtcblxuICB2YXIgaGludHMgPSBjcmVhdGVIaW50cygpO1xuICB2YXIgcmVxdWVzdCA9IHtcbiAgICBzdGF0dXM6IE9QRU4sXG4gICAgZmx1c2hTY2hlZHVsZWQ6IGZhbHNlLFxuICAgIGZhdGFsRXJyb3I6IG51bGwsXG4gICAgZGVzdGluYXRpb246IG51bGwsXG4gICAgYnVuZGxlckNvbmZpZzogYnVuZGxlckNvbmZpZyxcbiAgICBjYWNoZTogbmV3IE1hcCgpLFxuICAgIG5leHRDaHVua0lkOiAwLFxuICAgIHBlbmRpbmdDaHVua3M6IDAsXG4gICAgaGludHM6IGhpbnRzLFxuICAgIGFib3J0YWJsZVRhc2tzOiBhYm9ydFNldCxcbiAgICBwaW5nZWRUYXNrczogcGluZ2VkVGFza3MsXG4gICAgY29tcGxldGVkSW1wb3J0Q2h1bmtzOiBbXSxcbiAgICBjb21wbGV0ZWRIaW50Q2h1bmtzOiBbXSxcbiAgICBjb21wbGV0ZWRSZWd1bGFyQ2h1bmtzOiBbXSxcbiAgICBjb21wbGV0ZWRFcnJvckNodW5rczogW10sXG4gICAgd3JpdHRlblN5bWJvbHM6IG5ldyBNYXAoKSxcbiAgICB3cml0dGVuQ2xpZW50UmVmZXJlbmNlczogbmV3IE1hcCgpLFxuICAgIHdyaXR0ZW5TZXJ2ZXJSZWZlcmVuY2VzOiBuZXcgTWFwKCksXG4gICAgd3JpdHRlblByb3ZpZGVyczogbmV3IE1hcCgpLFxuICAgIHdyaXR0ZW5PYmplY3RzOiBuZXcgV2Vha01hcCgpLFxuICAgIGlkZW50aWZpZXJQcmVmaXg6IGlkZW50aWZpZXJQcmVmaXggfHwgJycsXG4gICAgaWRlbnRpZmllckNvdW50OiAxLFxuICAgIHRhaW50Q2xlYW51cFF1ZXVlOiBjbGVhbnVwUXVldWUsXG4gICAgb25FcnJvcjogb25FcnJvciA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdEVycm9ySGFuZGxlciA6IG9uRXJyb3IsXG4gICAgb25Qb3N0cG9uZTogb25Qb3N0cG9uZSA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFBvc3Rwb25lSGFuZGxlciA6IG9uUG9zdHBvbmUsXG4gICAgLy8gJEZsb3dGaXhNZVttaXNzaW5nLXRoaXMtYW5ub3RdXG4gICAgdG9KU09OOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmVNb2RlbFRvSlNPTihyZXF1ZXN0LCB0aGlzLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gIH07XG4gIHJlcXVlc3QucGVuZGluZ0NodW5rcysrO1xuICB2YXIgcm9vdENvbnRleHQgPSBjcmVhdGVSb290Q29udGV4dCgpO1xuICB2YXIgcm9vdFRhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIG1vZGVsLCByb290Q29udGV4dCwgYWJvcnRTZXQpO1xuICBwaW5nZWRUYXNrcy5wdXNoKHJvb3RUYXNrKTtcbiAgcmV0dXJuIHJlcXVlc3Q7XG59XG52YXIgY3VycmVudFJlcXVlc3QgPSBudWxsO1xuZnVuY3Rpb24gcmVzb2x2ZVJlcXVlc3QoKSB7XG4gIGlmIChjdXJyZW50UmVxdWVzdCkgcmV0dXJuIGN1cnJlbnRSZXF1ZXN0O1xuXG4gIGlmIChzdXBwb3J0c1JlcXVlc3RTdG9yYWdlKSB7XG4gICAgdmFyIHN0b3JlID0gcmVxdWVzdFN0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoc3RvcmUpIHJldHVybiBzdG9yZTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb290Q29udGV4dChyZXFDb250ZXh0KSB7XG4gIHJldHVybiBpbXBvcnRTZXJ2ZXJDb250ZXh0cygpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVUaGVuYWJsZShyZXF1ZXN0LCB0aGVuYWJsZSkge1xuICByZXF1ZXN0LnBlbmRpbmdDaHVua3MrKztcbiAgdmFyIG5ld1Rhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIG51bGwsIGdldEFjdGl2ZUNvbnRleHQoKSwgcmVxdWVzdC5hYm9ydGFibGVUYXNrcyk7XG5cbiAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICBjYXNlICdmdWxmaWxsZWQnOlxuICAgICAge1xuICAgICAgICAvLyBXZSBoYXZlIHRoZSByZXNvbHZlZCB2YWx1ZSwgd2UgY2FuIGdvIGFoZWFkIGFuZCBzY2hlZHVsZSBpdCBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICAgICAgbmV3VGFzay5tb2RlbCA9IHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICBwaW5nVGFzayhyZXF1ZXN0LCBuZXdUYXNrKTtcbiAgICAgICAgcmV0dXJuIG5ld1Rhc2suaWQ7XG4gICAgICB9XG5cbiAgICBjYXNlICdyZWplY3RlZCc6XG4gICAgICB7XG4gICAgICAgIHZhciB4ID0gdGhlbmFibGUucmVhc29uO1xuXG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZGlnZXN0ID0gbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCB4KTtcbiAgICAgICAgICBlbWl0RXJyb3JDaHVuayhyZXF1ZXN0LCBuZXdUYXNrLmlkLCBkaWdlc3QsIHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1Rhc2suaWQ7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICBpZiAodHlwZW9mIHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBPbmx5IGluc3RydW1lbnQgdGhlIHRoZW5hYmxlIGlmIHRoZSBzdGF0dXMgaWYgbm90IGRlZmluZWQuIElmXG4gICAgICAgICAgLy8gaXQncyBkZWZpbmVkLCBidXQgYW4gdW5rbm93biB2YWx1ZSwgYXNzdW1lIGl0J3MgYmVlbiBpbnN0cnVtZW50ZWQgYnlcbiAgICAgICAgICAvLyBzb21lIGN1c3RvbSB1c2Vyc3BhY2UgaW1wbGVtZW50YXRpb24uIFdlIHRyZWF0IGl0IGFzIFwicGVuZGluZ1wiLlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHBlbmRpbmdUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICBwZW5kaW5nVGhlbmFibGUuc3RhdHVzID0gJ3BlbmRpbmcnO1xuICAgICAgICBwZW5kaW5nVGhlbmFibGUudGhlbihmdW5jdGlvbiAoZnVsZmlsbGVkVmFsdWUpIHtcbiAgICAgICAgICBpZiAodGhlbmFibGUuc3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIHZhciBmdWxmaWxsZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUuc3RhdHVzID0gJ2Z1bGZpbGxlZCc7XG4gICAgICAgICAgICBmdWxmaWxsZWRUaGVuYWJsZS52YWx1ZSA9IGZ1bGZpbGxlZFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICB2YXIgcmVqZWN0ZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5zdGF0dXMgPSAncmVqZWN0ZWQnO1xuICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgfVxuXG4gIHRoZW5hYmxlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgbmV3VGFzay5tb2RlbCA9IHZhbHVlO1xuICAgIHBpbmdUYXNrKHJlcXVlc3QsIG5ld1Rhc2spO1xuICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAge1xuICAgICAgbmV3VGFzay5zdGF0dXMgPSBFUlJPUkVEJDE7XG5cbiAgICAgIHZhciBfZGlnZXN0ID0gbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCByZWFzb24pO1xuXG4gICAgICBlbWl0RXJyb3JDaHVuayhyZXF1ZXN0LCBuZXdUYXNrLmlkLCBfZGlnZXN0LCByZWFzb24pO1xuICAgIH1cblxuICAgIHJlcXVlc3QuYWJvcnRhYmxlVGFza3MuZGVsZXRlKG5ld1Rhc2spO1xuXG4gICAgaWYgKHJlcXVlc3QuZGVzdGluYXRpb24gIT09IG51bGwpIHtcbiAgICAgIGZsdXNoQ29tcGxldGVkQ2h1bmtzKHJlcXVlc3QsIHJlcXVlc3QuZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXdUYXNrLmlkO1xufVxuXG5mdW5jdGlvbiBlbWl0SGludChyZXF1ZXN0LCBjb2RlLCBtb2RlbCkge1xuICBlbWl0SGludENodW5rKHJlcXVlc3QsIGNvZGUsIG1vZGVsKTtcbiAgZW5xdWV1ZUZsdXNoKHJlcXVlc3QpO1xufVxuZnVuY3Rpb24gZ2V0SGludHMocmVxdWVzdCkge1xuICByZXR1cm4gcmVxdWVzdC5oaW50cztcbn1cbmZ1bmN0aW9uIGdldENhY2hlKHJlcXVlc3QpIHtcbiAgcmV0dXJuIHJlcXVlc3QuY2FjaGU7XG59XG5cbmZ1bmN0aW9uIHJlYWRUaGVuYWJsZSh0aGVuYWJsZSkge1xuICBpZiAodGhlbmFibGUuc3RhdHVzID09PSAnZnVsZmlsbGVkJykge1xuICAgIHJldHVybiB0aGVuYWJsZS52YWx1ZTtcbiAgfSBlbHNlIGlmICh0aGVuYWJsZS5zdGF0dXMgPT09ICdyZWplY3RlZCcpIHtcbiAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gIH1cblxuICB0aHJvdyB0aGVuYWJsZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGF6eVdyYXBwZXJBcm91bmRXYWtlYWJsZSh3YWtlYWJsZSkge1xuICAvLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IGZvcmsgb2YgdGhlIGB1c2VgIGltcGxlbWVudGF0aW9uIHVudGlsIHdlIGFjY2VwdFxuICAvLyBwcm9taXNlcyBldmVyeXdoZXJlLlxuICB2YXIgdGhlbmFibGUgPSB3YWtlYWJsZTtcblxuICBzd2l0Y2ggKHRoZW5hYmxlLnN0YXR1cykge1xuICAgIGNhc2UgJ2Z1bGZpbGxlZCc6XG4gICAgY2FzZSAncmVqZWN0ZWQnOlxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICBpZiAodHlwZW9mIHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBPbmx5IGluc3RydW1lbnQgdGhlIHRoZW5hYmxlIGlmIHRoZSBzdGF0dXMgaWYgbm90IGRlZmluZWQuIElmXG4gICAgICAgICAgLy8gaXQncyBkZWZpbmVkLCBidXQgYW4gdW5rbm93biB2YWx1ZSwgYXNzdW1lIGl0J3MgYmVlbiBpbnN0cnVtZW50ZWQgYnlcbiAgICAgICAgICAvLyBzb21lIGN1c3RvbSB1c2Vyc3BhY2UgaW1wbGVtZW50YXRpb24uIFdlIHRyZWF0IGl0IGFzIFwicGVuZGluZ1wiLlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHBlbmRpbmdUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICBwZW5kaW5nVGhlbmFibGUuc3RhdHVzID0gJ3BlbmRpbmcnO1xuICAgICAgICBwZW5kaW5nVGhlbmFibGUudGhlbihmdW5jdGlvbiAoZnVsZmlsbGVkVmFsdWUpIHtcbiAgICAgICAgICBpZiAodGhlbmFibGUuc3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIHZhciBmdWxmaWxsZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUuc3RhdHVzID0gJ2Z1bGZpbGxlZCc7XG4gICAgICAgICAgICBmdWxmaWxsZWRUaGVuYWJsZS52YWx1ZSA9IGZ1bGZpbGxlZFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKHRoZW5hYmxlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICB2YXIgcmVqZWN0ZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5zdGF0dXMgPSAncmVqZWN0ZWQnO1xuICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5yZWFzb24gPSBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgfVxuXG4gIHZhciBsYXp5VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTEFaWV9UWVBFLFxuICAgIF9wYXlsb2FkOiB0aGVuYWJsZSxcbiAgICBfaW5pdDogcmVhZFRoZW5hYmxlXG4gIH07XG4gIHJldHVybiBsYXp5VHlwZTtcbn1cblxuZnVuY3Rpb24gYXR0ZW1wdFJlc29sdmVFbGVtZW50KHJlcXVlc3QsIHR5cGUsIGtleSwgcmVmLCBwcm9wcywgcHJldlRoZW5hYmxlU3RhdGUpIHtcbiAgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFdoZW4gdGhlIHJlZiBtb3ZlcyB0byB0aGUgcmVndWxhciBwcm9wcyBvYmplY3QgdGhpcyB3aWxsIGltcGxpY2l0bHlcbiAgICAvLyB0aHJvdyBmb3IgZnVuY3Rpb25zLiBXZSBjb3VsZCBwcm9iYWJseSByZWxheCBpdCB0byBhIERFViB3YXJuaW5nIGZvciBvdGhlclxuICAgIC8vIGNhc2VzLlxuICAgIHRocm93IG5ldyBFcnJvcignUmVmcyBjYW5ub3QgYmUgdXNlZCBpbiBTZXJ2ZXIgQ29tcG9uZW50cywgbm9yIHBhc3NlZCB0byBDbGllbnQgQ29tcG9uZW50cy4nKTtcbiAgfVxuXG4gIHtcbiAgICBqc3hQcm9wc1BhcmVudHMuc2V0KHByb3BzLCB0eXBlKTtcblxuICAgIGlmICh0eXBlb2YgcHJvcHMuY2hpbGRyZW4gPT09ICdvYmplY3QnICYmIHByb3BzLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBqc3hDaGlsZHJlblBhcmVudHMuc2V0KHByb3BzLmNoaWxkcmVuLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoaXNDbGllbnRSZWZlcmVuY2UodHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSByZWZlcmVuY2UgdG8gYSBDbGllbnQgQ29tcG9uZW50LlxuICAgICAgcmV0dXJuIFtSRUFDVF9FTEVNRU5UX1RZUEUsIHR5cGUsIGtleSwgcHJvcHNdO1xuICAgIH0gLy8gVGhpcyBpcyBhIHNlcnZlci1zaWRlIGNvbXBvbmVudC5cblxuXG4gICAgcHJlcGFyZVRvVXNlSG9va3NGb3JDb21wb25lbnQocHJldlRoZW5hYmxlU3RhdGUpO1xuICAgIHZhciByZXN1bHQgPSB0eXBlKHByb3BzKTtcblxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiByZXN1bHQgIT09IG51bGwgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBXaGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gY2hpbGRyZW4gcG9zaXRpb24gd2UgY2FuIHJlc29sdmUgaXQgaW1tZWRpYXRlbHksXG4gICAgICAvLyB0byBpdHMgdmFsdWUgd2l0aG91dCBhIHdyYXBwZXIgaWYgaXQncyBzeW5jaHJvbm91c2x5IGF2YWlsYWJsZS5cbiAgICAgIHZhciB0aGVuYWJsZSA9IHJlc3VsdDtcblxuICAgICAgaWYgKHRoZW5hYmxlLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgfSAvLyBUT0RPOiBPbmNlIHdlIGFjY2VwdCBQcm9taXNlcyBhcyBjaGlsZHJlbiBvbiB0aGUgY2xpZW50LCB3ZSBjYW4ganVzdCByZXR1cm5cbiAgICAgIC8vIHRoZSB0aGVuYWJsZSBoZXJlLlxuXG5cbiAgICAgIHJldHVybiBjcmVhdGVMYXp5V3JhcHBlckFyb3VuZFdha2VhYmxlKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUaGlzIGlzIGEgaG9zdCBlbGVtZW50LiBFLmcuIEhUTUwuXG4gICAgcmV0dXJuIFtSRUFDVF9FTEVNRU5UX1RZUEUsIHR5cGUsIGtleSwgcHJvcHNdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnc3ltYm9sJykge1xuICAgIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSB7XG4gICAgICAvLyBGb3Iga2V5LWxlc3MgZnJhZ21lbnRzLCB3ZSBhZGQgYSBzbWFsbCBvcHRpbWl6YXRpb24gdG8gYXZvaWQgc2VyaWFsaXppbmdcbiAgICAgIC8vIGl0IGFzIGEgd3JhcHBlci5cbiAgICAgIC8vIFRPRE86IElmIGEga2V5IGlzIHNwZWNpZmllZCwgd2Ugc2hvdWxkIHByb3BhZ2F0ZSBpdHMga2V5IHRvIGFueSBjaGlsZHJlbi5cbiAgICAgIC8vIFNhbWUgYXMgaWYgYSBTZXJ2ZXIgQ29tcG9uZW50IGhhcyBhIGtleS5cbiAgICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbiAgICB9IC8vIFRoaXMgbWlnaHQgYmUgYSBidWlsdC1pbiBSZWFjdCBjb21wb25lbnQuIFdlJ2xsIGxldCB0aGUgY2xpZW50IGRlY2lkZS5cbiAgICAvLyBBbnkgYnVpbHQtaW4gd29ya3MgYXMgbG9uZyBhcyBpdHMgcHJvcHMgYXJlIHNlcmlhbGl6YWJsZS5cblxuXG4gICAgcmV0dXJuIFtSRUFDVF9FTEVNRU5UX1RZUEUsIHR5cGUsIGtleSwgcHJvcHNdO1xuICB9IGVsc2UgaWYgKHR5cGUgIT0gbnVsbCAmJiB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoaXNDbGllbnRSZWZlcmVuY2UodHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSByZWZlcmVuY2UgdG8gYSBDbGllbnQgQ29tcG9uZW50LlxuICAgICAgcmV0dXJuIFtSRUFDVF9FTEVNRU5UX1RZUEUsIHR5cGUsIGtleSwgcHJvcHNdO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IHR5cGUuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSB0eXBlLl9pbml0O1xuICAgICAgICAgIHZhciB3cmFwcGVkVHlwZSA9IGluaXQocGF5bG9hZCk7XG4gICAgICAgICAgcmV0dXJuIGF0dGVtcHRSZXNvbHZlRWxlbWVudChyZXF1ZXN0LCB3cmFwcGVkVHlwZSwga2V5LCByZWYsIHByb3BzLCBwcmV2VGhlbmFibGVTdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIHJlbmRlciA9IHR5cGUucmVuZGVyO1xuICAgICAgICAgIHByZXBhcmVUb1VzZUhvb2tzRm9yQ29tcG9uZW50KHByZXZUaGVuYWJsZVN0YXRlKTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyKHByb3BzLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIGF0dGVtcHRSZXNvbHZlRWxlbWVudChyZXF1ZXN0LCB0eXBlLnR5cGUsIGtleSwgcmVmLCBwcm9wcywgcHJldlRoZW5hYmxlU3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgU2VydmVyIENvbXBvbmVudCB0eXBlOiBcIiArIGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UodHlwZSkpO1xufVxuXG5mdW5jdGlvbiBwaW5nVGFzayhyZXF1ZXN0LCB0YXNrKSB7XG4gIHZhciBwaW5nZWRUYXNrcyA9IHJlcXVlc3QucGluZ2VkVGFza3M7XG4gIHBpbmdlZFRhc2tzLnB1c2godGFzayk7XG5cbiAgaWYgKHBpbmdlZFRhc2tzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgPSByZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsO1xuICAgIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcGVyZm9ybVdvcmsocmVxdWVzdCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlVGFzayhyZXF1ZXN0LCBtb2RlbCwgY29udGV4dCwgYWJvcnRTZXQpIHtcbiAgdmFyIGlkID0gcmVxdWVzdC5uZXh0Q2h1bmtJZCsrO1xuICB2YXIgdGFzayA9IHtcbiAgICBpZDogaWQsXG4gICAgc3RhdHVzOiBQRU5ESU5HJDEsXG4gICAgbW9kZWw6IG1vZGVsLFxuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgcGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBpbmdUYXNrKHJlcXVlc3QsIHRhc2spO1xuICAgIH0sXG4gICAgdGhlbmFibGVTdGF0ZTogbnVsbFxuICB9O1xuICBhYm9ydFNldC5hZGQodGFzayk7XG4gIHJldHVybiB0YXNrO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVCeVZhbHVlSUQoaWQpIHtcbiAgcmV0dXJuICckJyArIGlkLnRvU3RyaW5nKDE2KTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplTGF6eUlEKGlkKSB7XG4gIHJldHVybiAnJEwnICsgaWQudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVQcm9taXNlSUQoaWQpIHtcbiAgcmV0dXJuICckQCcgKyBpZC50b1N0cmluZygxNik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNlcnZlclJlZmVyZW5jZUlEKGlkKSB7XG4gIHJldHVybiAnJEYnICsgaWQudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVTeW1ib2xSZWZlcmVuY2UobmFtZSkge1xuICByZXR1cm4gJyRTJyArIG5hbWU7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU51bWJlcihudW1iZXIpIHtcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShudW1iZXIpKSB7XG4gICAgaWYgKG51bWJlciA9PT0gMCAmJiAxIC8gbnVtYmVyID09PSAtSW5maW5pdHkpIHtcbiAgICAgIHJldHVybiAnJC0wJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKG51bWJlciA9PT0gSW5maW5pdHkpIHtcbiAgICAgIHJldHVybiAnJEluZmluaXR5JztcbiAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gLUluZmluaXR5KSB7XG4gICAgICByZXR1cm4gJyQtSW5maW5pdHknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyROYU4nO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVVbmRlZmluZWQoKSB7XG4gIHJldHVybiAnJHVuZGVmaW5lZCc7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZURhdGVGcm9tRGF0ZUpTT04oZGF0ZUpTT04pIHtcbiAgLy8gSlNPTi5zdHJpbmdpZnkgYXV0b21hdGljYWxseSBjYWxscyBEYXRlLnByb3RvdHlwZS50b0pTT04gd2hpY2ggY2FsbHMgdG9JU09TdHJpbmcuXG4gIC8vIFdlIG5lZWQgb25seSB0YWNrIG9uIGEgJEQgcHJlZml4LlxuICByZXR1cm4gJyREJyArIGRhdGVKU09OO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVCaWdJbnQobikge1xuICByZXR1cm4gJyRuJyArIG4udG9TdHJpbmcoMTApO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVSb3dIZWFkZXIodGFnLCBpZCkge1xuICByZXR1cm4gaWQudG9TdHJpbmcoMTYpICsgJzonICsgdGFnO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVSZWZlcmVuY2VDaHVuayhyZXF1ZXN0LCBpZCwgcmVmZXJlbmNlKSB7XG4gIHZhciBqc29uID0gc3RyaW5naWZ5KHJlZmVyZW5jZSk7XG4gIHZhciByb3cgPSBpZC50b1N0cmluZygxNikgKyAnOicgKyBqc29uICsgJ1xcbic7XG4gIHJldHVybiBzdHJpbmdUb0NodW5rKHJvdyk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNsaWVudFJlZmVyZW5jZShyZXF1ZXN0LCBwYXJlbnQsIGtleSwgY2xpZW50UmVmZXJlbmNlKSB7XG4gIHZhciBjbGllbnRSZWZlcmVuY2VLZXkgPSBnZXRDbGllbnRSZWZlcmVuY2VLZXkoY2xpZW50UmVmZXJlbmNlKTtcbiAgdmFyIHdyaXR0ZW5DbGllbnRSZWZlcmVuY2VzID0gcmVxdWVzdC53cml0dGVuQ2xpZW50UmVmZXJlbmNlcztcbiAgdmFyIGV4aXN0aW5nSWQgPSB3cml0dGVuQ2xpZW50UmVmZXJlbmNlcy5nZXQoY2xpZW50UmVmZXJlbmNlS2V5KTtcblxuICBpZiAoZXhpc3RpbmdJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHBhcmVudFswXSA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFICYmIGtleSA9PT0gJzEnKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBlbmNvZGluZyB0aGUgXCJ0eXBlXCIgb2YgYW4gZWxlbWVudCwgd2UgY2FuIHJlZmVyXG4gICAgICAvLyB0byB0aGF0IGJ5IGEgbGF6eSByZWZlcmVuY2UgaW5zdGVhZCBvZiBkaXJlY3RseSBzaW5jZSBSZWFjdFxuICAgICAgLy8ga25vd3MgaG93IHRvIGRlYWwgd2l0aCBsYXp5IHZhbHVlcy4gVGhpcyBsZXRzIHVzIHN1c3BlbmRcbiAgICAgIC8vIG9uIHRoaXMgY29tcG9uZW50IHJhdGhlciB0aGFuIGl0cyBwYXJlbnQgdW50aWwgdGhlIGNvZGUgaGFzXG4gICAgICAvLyBsb2FkZWQuXG4gICAgICByZXR1cm4gc2VyaWFsaXplTGF6eUlEKGV4aXN0aW5nSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJpYWxpemVCeVZhbHVlSUQoZXhpc3RpbmdJZCk7XG4gIH1cblxuICB0cnkge1xuICAgIHZhciBjbGllbnRSZWZlcmVuY2VNZXRhZGF0YSA9IHJlc29sdmVDbGllbnRSZWZlcmVuY2VNZXRhZGF0YShyZXF1ZXN0LmJ1bmRsZXJDb25maWcsIGNsaWVudFJlZmVyZW5jZSk7XG4gICAgcmVxdWVzdC5wZW5kaW5nQ2h1bmtzKys7XG4gICAgdmFyIGltcG9ydElkID0gcmVxdWVzdC5uZXh0Q2h1bmtJZCsrO1xuICAgIGVtaXRJbXBvcnRDaHVuayhyZXF1ZXN0LCBpbXBvcnRJZCwgY2xpZW50UmVmZXJlbmNlTWV0YWRhdGEpO1xuICAgIHdyaXR0ZW5DbGllbnRSZWZlcmVuY2VzLnNldChjbGllbnRSZWZlcmVuY2VLZXksIGltcG9ydElkKTtcblxuICAgIGlmIChwYXJlbnRbMF0gPT09IFJFQUNUX0VMRU1FTlRfVFlQRSAmJiBrZXkgPT09ICcxJykge1xuICAgICAgLy8gSWYgd2UncmUgZW5jb2RpbmcgdGhlIFwidHlwZVwiIG9mIGFuIGVsZW1lbnQsIHdlIGNhbiByZWZlclxuICAgICAgLy8gdG8gdGhhdCBieSBhIGxhenkgcmVmZXJlbmNlIGluc3RlYWQgb2YgZGlyZWN0bHkgc2luY2UgUmVhY3RcbiAgICAgIC8vIGtub3dzIGhvdyB0byBkZWFsIHdpdGggbGF6eSB2YWx1ZXMuIFRoaXMgbGV0cyB1cyBzdXNwZW5kXG4gICAgICAvLyBvbiB0aGlzIGNvbXBvbmVudCByYXRoZXIgdGhhbiBpdHMgcGFyZW50IHVudGlsIHRoZSBjb2RlIGhhc1xuICAgICAgLy8gbG9hZGVkLlxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZUxhenlJRChpbXBvcnRJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcmlhbGl6ZUJ5VmFsdWVJRChpbXBvcnRJZCk7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICByZXF1ZXN0LnBlbmRpbmdDaHVua3MrKztcbiAgICB2YXIgZXJyb3JJZCA9IHJlcXVlc3QubmV4dENodW5rSWQrKztcbiAgICB2YXIgZGlnZXN0ID0gbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCB4KTtcbiAgICBlbWl0RXJyb3JDaHVuayhyZXF1ZXN0LCBlcnJvcklkLCBkaWdlc3QsIHgpO1xuICAgIHJldHVybiBzZXJpYWxpemVCeVZhbHVlSUQoZXJyb3JJZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb3V0bGluZU1vZGVsKHJlcXVlc3QsIHZhbHVlKSB7XG4gIHJlcXVlc3QucGVuZGluZ0NodW5rcysrO1xuICB2YXIgbmV3VGFzayA9IGNyZWF0ZVRhc2socmVxdWVzdCwgdmFsdWUsIGdldEFjdGl2ZUNvbnRleHQoKSwgcmVxdWVzdC5hYm9ydGFibGVUYXNrcyk7XG4gIHJldHJ5VGFzayhyZXF1ZXN0LCBuZXdUYXNrKTtcbiAgcmV0dXJuIG5ld1Rhc2suaWQ7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNlcnZlclJlZmVyZW5jZShyZXF1ZXN0LCBwYXJlbnQsIGtleSwgc2VydmVyUmVmZXJlbmNlKSB7XG4gIHZhciB3cml0dGVuU2VydmVyUmVmZXJlbmNlcyA9IHJlcXVlc3Qud3JpdHRlblNlcnZlclJlZmVyZW5jZXM7XG4gIHZhciBleGlzdGluZ0lkID0gd3JpdHRlblNlcnZlclJlZmVyZW5jZXMuZ2V0KHNlcnZlclJlZmVyZW5jZSk7XG5cbiAgaWYgKGV4aXN0aW5nSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBzZXJpYWxpemVTZXJ2ZXJSZWZlcmVuY2VJRChleGlzdGluZ0lkKTtcbiAgfVxuXG4gIHZhciBib3VuZCA9IGdldFNlcnZlclJlZmVyZW5jZUJvdW5kQXJndW1lbnRzKHJlcXVlc3QuYnVuZGxlckNvbmZpZywgc2VydmVyUmVmZXJlbmNlKTtcbiAgdmFyIHNlcnZlclJlZmVyZW5jZU1ldGFkYXRhID0ge1xuICAgIGlkOiBnZXRTZXJ2ZXJSZWZlcmVuY2VJZChyZXF1ZXN0LmJ1bmRsZXJDb25maWcsIHNlcnZlclJlZmVyZW5jZSksXG4gICAgYm91bmQ6IGJvdW5kID8gUHJvbWlzZS5yZXNvbHZlKGJvdW5kKSA6IG51bGxcbiAgfTtcbiAgdmFyIG1ldGFkYXRhSWQgPSBvdXRsaW5lTW9kZWwocmVxdWVzdCwgc2VydmVyUmVmZXJlbmNlTWV0YWRhdGEpO1xuICB3cml0dGVuU2VydmVyUmVmZXJlbmNlcy5zZXQoc2VydmVyUmVmZXJlbmNlLCBtZXRhZGF0YUlkKTtcbiAgcmV0dXJuIHNlcmlhbGl6ZVNlcnZlclJlZmVyZW5jZUlEKG1ldGFkYXRhSWQpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVMYXJnZVRleHRTdHJpbmcocmVxdWVzdCwgdGV4dCkge1xuICByZXF1ZXN0LnBlbmRpbmdDaHVua3MgKz0gMjtcbiAgdmFyIHRleHRJZCA9IHJlcXVlc3QubmV4dENodW5rSWQrKztcbiAgdmFyIHRleHRDaHVuayA9IHN0cmluZ1RvQ2h1bmsodGV4dCk7XG4gIHZhciBiaW5hcnlMZW5ndGggPSBieXRlTGVuZ3RoT2ZDaHVuayh0ZXh0Q2h1bmspO1xuICB2YXIgcm93ID0gdGV4dElkLnRvU3RyaW5nKDE2KSArICc6VCcgKyBiaW5hcnlMZW5ndGgudG9TdHJpbmcoMTYpICsgJywnO1xuICB2YXIgaGVhZGVyQ2h1bmsgPSBzdHJpbmdUb0NodW5rKHJvdyk7XG4gIHJlcXVlc3QuY29tcGxldGVkUmVndWxhckNodW5rcy5wdXNoKGhlYWRlckNodW5rLCB0ZXh0Q2h1bmspO1xuICByZXR1cm4gc2VyaWFsaXplQnlWYWx1ZUlEKHRleHRJZCk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU1hcChyZXF1ZXN0LCBtYXApIHtcbiAgdmFyIGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGVudHJpZXNbaV1bMF07XG5cbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICB2YXIgd3JpdHRlbk9iamVjdHMgPSByZXF1ZXN0LndyaXR0ZW5PYmplY3RzO1xuICAgICAgdmFyIGV4aXN0aW5nSWQgPSB3cml0dGVuT2JqZWN0cy5nZXQoa2V5KTtcblxuICAgICAgaWYgKGV4aXN0aW5nSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBNYXJrIGFsbCBvYmplY3Qga2V5cyBhcyBzZWVuIHNvIHRoYXQgdGhleSdyZSBhbHdheXMgb3V0bGluZWQuXG4gICAgICAgIHdyaXR0ZW5PYmplY3RzLnNldChrZXksIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgaWQgPSBvdXRsaW5lTW9kZWwocmVxdWVzdCwgZW50cmllcyk7XG4gIHJldHVybiAnJFEnICsgaWQudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVTZXQocmVxdWVzdCwgc2V0KSB7XG4gIHZhciBlbnRyaWVzID0gQXJyYXkuZnJvbShzZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBlbnRyaWVzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnICYmIGtleSAhPT0gbnVsbCkge1xuICAgICAgdmFyIHdyaXR0ZW5PYmplY3RzID0gcmVxdWVzdC53cml0dGVuT2JqZWN0cztcbiAgICAgIHZhciBleGlzdGluZ0lkID0gd3JpdHRlbk9iamVjdHMuZ2V0KGtleSk7XG5cbiAgICAgIGlmIChleGlzdGluZ0lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTWFyayBhbGwgb2JqZWN0IGtleXMgYXMgc2VlbiBzbyB0aGF0IHRoZXkncmUgYWx3YXlzIG91dGxpbmVkLlxuICAgICAgICB3cml0dGVuT2JqZWN0cy5zZXQoa2V5LCAtMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGlkID0gb3V0bGluZU1vZGVsKHJlcXVlc3QsIGVudHJpZXMpO1xuICByZXR1cm4gJyRXJyArIGlkLnRvU3RyaW5nKDE2KTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nVmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlWzBdID09PSAnJCcpIHtcbiAgICAvLyBXZSBuZWVkIHRvIGVzY2FwZSAkIHByZWZpeGVkIHN0cmluZ3Mgc2luY2Ugd2UgdXNlIHRob3NlIHRvIGVuY29kZVxuICAgIC8vIHJlZmVyZW5jZXMgdG8gSURzIGFuZCBhcyBzcGVjaWFsIHN5bWJvbCB2YWx1ZXMuXG4gICAgcmV0dXJuICckJyArIHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxudmFyIG1vZGVsUm9vdCA9IGZhbHNlO1xuXG5mdW5jdGlvbiByZXNvbHZlTW9kZWxUb0pTT04ocmVxdWVzdCwgcGFyZW50LCBrZXksIHZhbHVlKSB7XG4gIC8vIE1ha2Ugc3VyZSB0aGF0IGBwYXJlbnRba2V5XWAgd2Fzbid0IEpTT05pZmllZCBiZWZvcmUgYHZhbHVlYCB3YXMgcGFzc2VkIHRvIHVzXG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdXG4gICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBwYXJlbnRba2V5XTtcblxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxWYWx1ZSA9PT0gJ29iamVjdCcgJiYgb3JpZ2luYWxWYWx1ZSAhPT0gdmFsdWUgJiYgIShvcmlnaW5hbFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIGlmIChvYmplY3ROYW1lKG9yaWdpbmFsVmFsdWUpICE9PSAnT2JqZWN0Jykge1xuICAgICAgICB2YXIganN4UGFyZW50VHlwZSA9IGpzeENoaWxkcmVuUGFyZW50cy5nZXQocGFyZW50KTtcblxuICAgICAgICBpZiAodHlwZW9mIGpzeFBhcmVudFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgZXJyb3IoJyVzIG9iamVjdHMgY2Fubm90IGJlIHJlbmRlcmVkIGFzIHRleHQgY2hpbGRyZW4uIFRyeSBmb3JtYXR0aW5nIGl0IHVzaW5nIHRvU3RyaW5nKCkuJXMnLCBvYmplY3ROYW1lKG9yaWdpbmFsVmFsdWUpLCBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShwYXJlbnQsIGtleSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9yKCdPbmx5IHBsYWluIG9iamVjdHMgY2FuIGJlIHBhc3NlZCB0byBDbGllbnQgQ29tcG9uZW50cyBmcm9tIFNlcnZlciBDb21wb25lbnRzLiAnICsgJyVzIG9iamVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQuJXMnLCBvYmplY3ROYW1lKG9yaWdpbmFsVmFsdWUpLCBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShwYXJlbnQsIGtleSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcignT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMgZnJvbSBTZXJ2ZXIgQ29tcG9uZW50cy4gJyArICdPYmplY3RzIHdpdGggdG9KU09OIG1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQuIENvbnZlcnQgaXQgbWFudWFsbHkgJyArICd0byBhIHNpbXBsZSB2YWx1ZSBiZWZvcmUgcGFzc2luZyBpdCB0byBwcm9wcy4lcycsIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHBhcmVudCwga2V5KSk7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIFNwZWNpYWwgU3ltYm9sc1xuXG5cbiAgc3dpdGNoICh2YWx1ZSkge1xuICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgcmV0dXJuICckJztcbiAgfVxuXG5cbiAgd2hpbGUgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgKHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgfHwgdmFsdWUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSkpIHtcblxuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHZhbHVlLiQkdHlwZW9mKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciB3cml0dGVuT2JqZWN0cyA9IHJlcXVlc3Qud3JpdHRlbk9iamVjdHM7XG4gICAgICAgICAgICB2YXIgZXhpc3RpbmdJZCA9IHdyaXR0ZW5PYmplY3RzLmdldCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmIChleGlzdGluZ0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSWQgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VlbiBidXQgbm90IHlldCBvdXRsaW5lZC5cbiAgICAgICAgICAgICAgICB2YXIgbmV3SWQgPSBvdXRsaW5lTW9kZWwocmVxdWVzdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVCeVZhbHVlSUQobmV3SWQpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGVsUm9vdCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBJRCB3ZSdyZSBjdXJyZW50bHkgZW1pdHRpbmcgc28gd2UgbmVlZCB0byB3cml0ZSBpdFxuICAgICAgICAgICAgICAgIC8vIG9uY2UgYnV0IGlmIHdlIGRpc2NvdmVyIGl0IGFnYWluLCB3ZSByZWZlciB0byBpdCBieSBpZC5cbiAgICAgICAgICAgICAgICBtb2RlbFJvb3QgPSBudWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZW1pdHRlZCB0aGlzIGFzIGFuIG91dGxpbmVkIG9iamVjdCwgc28gd2UgY2FuXG4gICAgICAgICAgICAgICAgLy8ganVzdCByZWZlciB0byB0aGF0IGJ5IGl0cyBleGlzdGluZyBJRC5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplQnlWYWx1ZUlEKGV4aXN0aW5nSWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gdGhpcyBvYmplY3QuIFdlIG1heSBuZXZlciBzZWUgaXQgYWdhaW5cbiAgICAgICAgICAgICAgLy8gc28gd2UnbGwgaW5saW5lIGl0LiBNYXJrIGl0IGFzIHNlZW4uIElmIHdlIHNlZSBpdCBhZ2Fpbiwgd2UnbGwgb3V0bGluZS5cbiAgICAgICAgICAgICAgd3JpdHRlbk9iamVjdHMuc2V0KHZhbHVlLCAtMSk7XG4gICAgICAgICAgICB9IC8vIFRPRE86IENvbmNhdGVuYXRlIGtleXMgb2YgcGFyZW50cyBvbnRvIGNoaWxkcmVuLlxuXG5cbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdmFsdWU7IC8vIEF0dGVtcHQgdG8gcmVuZGVyIHRoZSBTZXJ2ZXIgQ29tcG9uZW50LlxuXG4gICAgICAgICAgICB2YWx1ZSA9IGF0dGVtcHRSZXNvbHZlRWxlbWVudChyZXF1ZXN0LCBlbGVtZW50LnR5cGUsIGVsZW1lbnQua2V5LCBlbGVtZW50LnJlZiwgZWxlbWVudC5wcm9wcywgbnVsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIHBheWxvYWQgPSB2YWx1ZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHZhciBpbml0ID0gdmFsdWUuX2luaXQ7XG4gICAgICAgICAgICB2YWx1ZSA9IGluaXQocGF5bG9hZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAodGhyb3duVmFsdWUpIHtcbiAgICAgIHZhciB4ID0gdGhyb3duVmFsdWUgPT09IFN1c3BlbnNlRXhjZXB0aW9uID8gLy8gVGhpcyBpcyBhIHNwZWNpYWwgdHlwZSBvZiBleGNlcHRpb24gdXNlZCBmb3IgU3VzcGVuc2UuIEZvciBoaXN0b3JpY2FsXG4gICAgICAvLyByZWFzb25zLCB0aGUgcmVzdCBvZiB0aGUgU3VzcGVuc2UgaW1wbGVtZW50YXRpb24gZXhwZWN0cyB0aGUgdGhyb3duXG4gICAgICAvLyB2YWx1ZSB0byBiZSBhIHRoZW5hYmxlLCBiZWNhdXNlIGJlZm9yZSBgdXNlYCBleGlzdGVkIHRoYXQgd2FzIHRoZVxuICAgICAgLy8gKHVuc3RhYmxlKSBBUEkgZm9yIHN1c3BlbmRpbmcuIFRoaXMgaW1wbGVtZW50YXRpb24gZGV0YWlsIGNhbiBjaGFuZ2VcbiAgICAgIC8vIGxhdGVyLCBvbmNlIHdlIGRlcHJlY2F0ZSB0aGUgb2xkIEFQSSBpbiBmYXZvciBvZiBgdXNlYC5cbiAgICAgIGdldFN1c3BlbmRlZFRoZW5hYmxlKCkgOiB0aHJvd25WYWx1ZTtcblxuICAgICAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsKSB7XG4gICAgICAgIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgICAgICAgaWYgKHR5cGVvZiB4LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBTb21ldGhpbmcgc3VzcGVuZGVkLCB3ZSdsbCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyB0YXNrIGFuZCByZXNvbHZlIGl0IGxhdGVyLlxuICAgICAgICAgIHJlcXVlc3QucGVuZGluZ0NodW5rcysrO1xuICAgICAgICAgIHZhciBuZXdUYXNrID0gY3JlYXRlVGFzayhyZXF1ZXN0LCB2YWx1ZSwgZ2V0QWN0aXZlQ29udGV4dCgpLCByZXF1ZXN0LmFib3J0YWJsZVRhc2tzKTtcbiAgICAgICAgICB2YXIgcGluZyA9IG5ld1Rhc2sucGluZztcbiAgICAgICAgICB4LnRoZW4ocGluZywgcGluZyk7XG4gICAgICAgICAgbmV3VGFzay50aGVuYWJsZVN0YXRlID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgIHJldHVybiBzZXJpYWxpemVMYXp5SUQobmV3VGFzay5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gU29tZXRoaW5nIGVycm9yZWQuIFdlJ2xsIHN0aWxsIHNlbmQgZXZlcnl0aGluZyB3ZSBoYXZlIHVwIHVudGlsIHRoaXMgcG9pbnQuXG4gICAgICAvLyBXZSdsbCByZXBsYWNlIHRoaXMgZWxlbWVudCB3aXRoIGEgbGF6eSByZWZlcmVuY2UgdGhhdCB0aHJvd3Mgb24gdGhlIGNsaWVudFxuICAgICAgLy8gb25jZSBpdCBnZXRzIHJlbmRlcmVkLlxuXG5cbiAgICAgIHJlcXVlc3QucGVuZGluZ0NodW5rcysrO1xuICAgICAgdmFyIGVycm9ySWQgPSByZXF1ZXN0Lm5leHRDaHVua0lkKys7XG4gICAgICB2YXIgZGlnZXN0ID0gbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCB4KTtcbiAgICAgIGVtaXRFcnJvckNodW5rKHJlcXVlc3QsIGVycm9ySWQsIGRpZ2VzdCwgeCk7XG4gICAgICByZXR1cm4gc2VyaWFsaXplTGF6eUlEKGVycm9ySWQpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcblxuICAgIGlmIChpc0NsaWVudFJlZmVyZW5jZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVDbGllbnRSZWZlcmVuY2UocmVxdWVzdCwgcGFyZW50LCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICB2YXIgX3dyaXR0ZW5PYmplY3RzID0gcmVxdWVzdC53cml0dGVuT2JqZWN0cztcblxuICAgIHZhciBfZXhpc3RpbmdJZCA9IF93cml0dGVuT2JqZWN0cy5nZXQodmFsdWUpOyAvLyAkRmxvd0ZpeE1lW21ldGhvZC11bmJpbmRpbmddXG5cblxuICAgIGlmICh0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKF9leGlzdGluZ0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG1vZGVsUm9vdCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBJRCB3ZSdyZSBjdXJyZW50bHkgZW1pdHRpbmcgc28gd2UgbmVlZCB0byB3cml0ZSBpdFxuICAgICAgICAgIC8vIG9uY2UgYnV0IGlmIHdlIGRpc2NvdmVyIGl0IGFnYWluLCB3ZSByZWZlciB0byBpdCBieSBpZC5cbiAgICAgICAgICBtb2RlbFJvb3QgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFdlJ3ZlIHNlZW4gdGhpcyBwcm9taXNlIGJlZm9yZSwgc28gd2UgY2FuIGp1c3QgcmVmZXIgdG8gdGhlIHNhbWUgcmVzdWx0LlxuICAgICAgICAgIHJldHVybiBzZXJpYWxpemVQcm9taXNlSUQoX2V4aXN0aW5nSWQpO1xuICAgICAgICB9XG4gICAgICB9IC8vIFdlIGFzc3VtZSB0aGF0IGFueSBvYmplY3Qgd2l0aCBhIC50aGVuIHByb3BlcnR5IGlzIGEgXCJUaGVuYWJsZVwiIHR5cGUsXG4gICAgICAvLyBvciBhIFByb21pc2UgdHlwZS4gRWl0aGVyIG9mIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBieSBhIFByb21pc2UuXG5cblxuICAgICAgdmFyIHByb21pc2VJZCA9IHNlcmlhbGl6ZVRoZW5hYmxlKHJlcXVlc3QsIHZhbHVlKTtcblxuICAgICAgX3dyaXR0ZW5PYmplY3RzLnNldCh2YWx1ZSwgcHJvbWlzZUlkKTtcblxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZVByb21pc2VJRChwcm9taXNlSWQpO1xuICAgIH1cblxuICAgIGlmIChfZXhpc3RpbmdJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoX2V4aXN0aW5nSWQgPT09IC0xKSB7XG4gICAgICAgIC8vIFNlZW4gYnV0IG5vdCB5ZXQgb3V0bGluZWQuXG4gICAgICAgIHZhciBfbmV3SWQgPSBvdXRsaW5lTW9kZWwocmVxdWVzdCwgdmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBzZXJpYWxpemVCeVZhbHVlSUQoX25ld0lkKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZWxSb290ID09PSB2YWx1ZSkge1xuICAgICAgICAvLyBUaGlzIGlzIHRoZSBJRCB3ZSdyZSBjdXJyZW50bHkgZW1pdHRpbmcgc28gd2UgbmVlZCB0byB3cml0ZSBpdFxuICAgICAgICAvLyBvbmNlIGJ1dCBpZiB3ZSBkaXNjb3ZlciBpdCBhZ2Fpbiwgd2UgcmVmZXIgdG8gaXQgYnkgaWQuXG4gICAgICAgIG1vZGVsUm9vdCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGVtaXR0ZWQgdGhpcyBhcyBhbiBvdXRsaW5lZCBvYmplY3QsIHNvIHdlIGNhblxuICAgICAgICAvLyBqdXN0IHJlZmVyIHRvIHRoYXQgYnkgaXRzIGV4aXN0aW5nIElELlxuICAgICAgICByZXR1cm4gc2VyaWFsaXplQnlWYWx1ZUlEKF9leGlzdGluZ0lkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIHRoaXMgb2JqZWN0LiBXZSBtYXkgbmV2ZXIgc2VlIGl0IGFnYWluXG4gICAgICAvLyBzbyB3ZSdsbCBpbmxpbmUgaXQuIE1hcmsgaXQgYXMgc2Vlbi4gSWYgd2Ugc2VlIGl0IGFnYWluLCB3ZSdsbCBvdXRsaW5lLlxuICAgICAgX3dyaXR0ZW5PYmplY3RzLnNldCh2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZU1hcChyZXF1ZXN0LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplU2V0KHJlcXVlc3QsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4odmFsdWUpO1xuXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHZhbHVlKTtcbiAgICB9IC8vIFZlcmlmeSB0aGF0IHRoaXMgaXMgYSBzaW1wbGUgcGxhaW4gb2JqZWN0LlxuXG5cbiAgICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGVPZih2YWx1ZSk7XG5cbiAgICBpZiAocHJvdG8gIT09IE9iamVjdFByb3RvdHlwZSAmJiAocHJvdG8gPT09IG51bGwgfHwgZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IHBsYWluIG9iamVjdHMsIGFuZCBhIGZldyBidWlsdC1pbnMsIGNhbiBiZSBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMgJyArICdmcm9tIFNlcnZlciBDb21wb25lbnRzLiBDbGFzc2VzIG9yIG51bGwgcHJvdG90eXBlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAob2JqZWN0TmFtZSh2YWx1ZSkgIT09ICdPYmplY3QnKSB7XG4gICAgICAgIGVycm9yKCdPbmx5IHBsYWluIG9iamVjdHMgY2FuIGJlIHBhc3NlZCB0byBDbGllbnQgQ29tcG9uZW50cyBmcm9tIFNlcnZlciBDb21wb25lbnRzLiAnICsgJyVzIG9iamVjdHMgYXJlIG5vdCBzdXBwb3J0ZWQuJXMnLCBvYmplY3ROYW1lKHZhbHVlKSwgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UocGFyZW50LCBrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU2ltcGxlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcignT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMgZnJvbSBTZXJ2ZXIgQ29tcG9uZW50cy4gJyArICdDbGFzc2VzIG9yIG90aGVyIG9iamVjdHMgd2l0aCBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkLiVzJywgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UocGFyZW50LCBrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAgICB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpO1xuXG4gICAgICAgIGlmIChzeW1ib2xzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBlcnJvcignT25seSBwbGFpbiBvYmplY3RzIGNhbiBiZSBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMgZnJvbSBTZXJ2ZXIgQ29tcG9uZW50cy4gJyArICdPYmplY3RzIHdpdGggc3ltYm9sIHByb3BlcnRpZXMgbGlrZSAlcyBhcmUgbm90IHN1cHBvcnRlZC4lcycsIHN5bWJvbHNbMF0uZGVzY3JpcHRpb24sIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHBhcmVudCwga2V5KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cblxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcblxuXG4gICAgaWYgKHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdID09PSAnWicpIHtcbiAgICAgIC8vIFBvc3NpYmx5IGEgRGF0ZSwgd2hvc2UgdG9KU09OIGF1dG9tYXRpY2FsbHkgY2FsbHMgdG9JU09TdHJpbmdcbiAgICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXVzZV1cbiAgICAgIHZhciBfb3JpZ2luYWxWYWx1ZSA9IHBhcmVudFtrZXldO1xuXG4gICAgICBpZiAoX29yaWdpbmFsVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVEYXRlRnJvbURhdGVKU09OKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUubGVuZ3RoID49IDEwMjQpIHtcbiAgICAgIC8vIEZvciBsYXJnZSBzdHJpbmdzLCB3ZSBlbmNvZGUgdGhlbSBvdXRzaWRlIHRoZSBKU09OIHBheWxvYWQgc28gdGhhdCB3ZVxuICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkb3VibGUgZW5jb2RlIGFuZCBkb3VibGUgcGFyc2UgdGhlIHN0cmluZ3MuIFRoaXMgY2FuIGFsc29cbiAgICAgIC8vIGJlIG1vcmUgY29tcGFjdCBpbiBjYXNlIHRoZSBzdHJpbmcgaGFzIGEgbG90IG9mIGVzY2FwZWQgY2hhcmFjdGVycy5cbiAgICAgIHJldHVybiBzZXJpYWxpemVMYXJnZVRleHRTdHJpbmcocmVxdWVzdCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBlc2NhcGVTdHJpbmdWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBzZXJpYWxpemVOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplVW5kZWZpbmVkKCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG5cbiAgICBpZiAoaXNDbGllbnRSZWZlcmVuY2UodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplQ2xpZW50UmVmZXJlbmNlKHJlcXVlc3QsIHBhcmVudCwga2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzU2VydmVyUmVmZXJlbmNlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZVNlcnZlclJlZmVyZW5jZShyZXF1ZXN0LCBwYXJlbnQsIGtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmICgvXm9uW0EtWl0vLnRlc3Qoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFdmVudCBoYW5kbGVycyBjYW5ub3QgYmUgcGFzc2VkIHRvIENsaWVudCBDb21wb25lbnQgcHJvcHMuJyArIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHBhcmVudCwga2V5KSArICdcXG5JZiB5b3UgbmVlZCBpbnRlcmFjdGl2aXR5LCBjb25zaWRlciBjb252ZXJ0aW5nIHBhcnQgb2YgdGhpcyB0byBhIENsaWVudCBDb21wb25lbnQuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb25zIGNhbm5vdCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ2xpZW50IENvbXBvbmVudHMgJyArICd1bmxlc3MgeW91IGV4cGxpY2l0bHkgZXhwb3NlIGl0IGJ5IG1hcmtpbmcgaXQgd2l0aCBcInVzZSBzZXJ2ZXJcIi4nICsgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UocGFyZW50LCBrZXkpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykge1xuICAgIHZhciB3cml0dGVuU3ltYm9scyA9IHJlcXVlc3Qud3JpdHRlblN5bWJvbHM7XG5cbiAgICB2YXIgX2V4aXN0aW5nSWQyID0gd3JpdHRlblN5bWJvbHMuZ2V0KHZhbHVlKTtcblxuICAgIGlmIChfZXhpc3RpbmdJZDIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5VmFsdWVJRChfZXhpc3RpbmdJZDIpO1xuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV0gYGRlc2NyaXB0aW9uYCBtaWdodCBiZSB1bmRlZmluZWRcblxuXG4gICAgdmFyIG5hbWUgPSB2YWx1ZS5kZXNjcmlwdGlvbjtcblxuICAgIGlmIChTeW1ib2wuZm9yKG5hbWUpICE9PSB2YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IGdsb2JhbCBzeW1ib2xzIHJlY2VpdmVkIGZyb20gU3ltYm9sLmZvciguLi4pIGNhbiBiZSBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMuICcgKyAoXCJUaGUgc3ltYm9sIFN5bWJvbC5mb3IoXCIgKyAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXSBgZGVzY3JpcHRpb25gIG1pZ2h0IGJlIHVuZGVmaW5lZFxuICAgICAgdmFsdWUuZGVzY3JpcHRpb24gKyBcIikgY2Fubm90IGJlIGZvdW5kIGFtb25nIGdsb2JhbCBzeW1ib2xzLlwiKSArIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHBhcmVudCwga2V5KSk7XG4gICAgfVxuXG4gICAgcmVxdWVzdC5wZW5kaW5nQ2h1bmtzKys7XG4gICAgdmFyIHN5bWJvbElkID0gcmVxdWVzdC5uZXh0Q2h1bmtJZCsrO1xuICAgIGVtaXRTeW1ib2xDaHVuayhyZXF1ZXN0LCBzeW1ib2xJZCwgbmFtZSk7XG4gICAgd3JpdHRlblN5bWJvbHMuc2V0KHZhbHVlLCBzeW1ib2xJZCk7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUJ5VmFsdWVJRChzeW1ib2xJZCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuXG4gICAgcmV0dXJuIHNlcmlhbGl6ZUJpZ0ludCh2YWx1ZSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlIFwiICsgdHlwZW9mIHZhbHVlICsgXCIgaXMgbm90IHN1cHBvcnRlZCBpbiBDbGllbnQgQ29tcG9uZW50IHByb3BzLlwiICsgZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UocGFyZW50LCBrZXkpKTtcbn1cblxuZnVuY3Rpb24gbG9nUG9zdHBvbmUocmVxdWVzdCwgcmVhc29uKSB7XG4gIHZhciBvblBvc3Rwb25lID0gcmVxdWVzdC5vblBvc3Rwb25lO1xuICBvblBvc3Rwb25lKHJlYXNvbik7XG59XG5cbmZ1bmN0aW9uIGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgdmFyIG9uRXJyb3IgPSByZXF1ZXN0Lm9uRXJyb3I7XG4gIHZhciBlcnJvckRpZ2VzdCA9IG9uRXJyb3IoZXJyb3IpO1xuXG4gIGlmIChlcnJvckRpZ2VzdCAhPSBudWxsICYmIHR5cGVvZiBlcnJvckRpZ2VzdCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvcHJvZC1lcnJvci1jb2Rlc1xuICAgIHRocm93IG5ldyBFcnJvcihcIm9uRXJyb3IgcmV0dXJuZWQgc29tZXRoaW5nIHdpdGggYSB0eXBlIG90aGVyIHRoYW4gXFxcInN0cmluZ1xcXCIuIG9uRXJyb3Igc2hvdWxkIHJldHVybiBhIHN0cmluZyBhbmQgbWF5IHJldHVybiBudWxsIG9yIHVuZGVmaW5lZCBidXQgbXVzdCBub3QgcmV0dXJuIGFueXRoaW5nIGVsc2UuIEl0IHJlY2VpdmVkIHNvbWV0aGluZyBvZiB0eXBlIFxcXCJcIiArIHR5cGVvZiBlcnJvckRpZ2VzdCArIFwiXFxcIiBpbnN0ZWFkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGVycm9yRGlnZXN0IHx8ICcnO1xufVxuXG5mdW5jdGlvbiBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKSB7XG5cblxuICBpZiAocmVxdWVzdC5kZXN0aW5hdGlvbiAhPT0gbnVsbCkge1xuICAgIHJlcXVlc3Quc3RhdHVzID0gQ0xPU0VEO1xuICAgIGNsb3NlV2l0aEVycm9yKHJlcXVlc3QuZGVzdGluYXRpb24sIGVycm9yKTtcbiAgfSBlbHNlIHtcbiAgICByZXF1ZXN0LnN0YXR1cyA9IENMT1NJTkc7XG4gICAgcmVxdWVzdC5mYXRhbEVycm9yID0gZXJyb3I7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFBvc3Rwb25lQ2h1bmsocmVxdWVzdCwgaWQsIHBvc3Rwb25lSW5zdGFuY2UpIHtcbiAgdmFyIHJvdztcblxuICB7XG4gICAgdmFyIHJlYXNvbiA9ICcnO1xuICAgIHZhciBzdGFjayA9ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICAgICAgcmVhc29uID0gU3RyaW5nKHBvc3Rwb25lSW5zdGFuY2UubWVzc2FnZSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG4gICAgICBzdGFjayA9IFN0cmluZyhwb3N0cG9uZUluc3RhbmNlLnN0YWNrKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuXG4gICAgcm93ID0gc2VyaWFsaXplUm93SGVhZGVyKCdQJywgaWQpICsgc3RyaW5naWZ5KHtcbiAgICAgIHJlYXNvbjogcmVhc29uLFxuICAgICAgc3RhY2s6IHN0YWNrXG4gICAgfSkgKyAnXFxuJztcbiAgfVxuXG4gIHZhciBwcm9jZXNzZWRDaHVuayA9IHN0cmluZ1RvQ2h1bmsocm93KTtcbiAgcmVxdWVzdC5jb21wbGV0ZWRFcnJvckNodW5rcy5wdXNoKHByb2Nlc3NlZENodW5rKTtcbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yQ2h1bmsocmVxdWVzdCwgaWQsIGRpZ2VzdCwgZXJyb3IpIHtcbiAgdmFyIGVycm9ySW5mbztcblxuICB7XG4gICAgdmFyIG1lc3NhZ2U7XG4gICAgdmFyIHN0YWNrID0gJyc7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG4gICAgICAgIG1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IubWVzc2FnZSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG4gICAgICAgIHN0YWNrID0gU3RyaW5nKGVycm9yLnN0YWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSAnRXJyb3I6ICcgKyBlcnJvcjtcbiAgICAgIH1cbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICBtZXNzYWdlID0gJ0FuIGVycm9yIG9jY3VycmVkIGJ1dCBzZXJpYWxpemluZyB0aGUgZXJyb3IgbWVzc2FnZSBmYWlsZWQuJztcbiAgICB9XG5cbiAgICBlcnJvckluZm8gPSB7XG4gICAgICBkaWdlc3Q6IGRpZ2VzdCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBzdGFjazogc3RhY2tcbiAgICB9O1xuICB9XG5cbiAgdmFyIHJvdyA9IHNlcmlhbGl6ZVJvd0hlYWRlcignRScsIGlkKSArIHN0cmluZ2lmeShlcnJvckluZm8pICsgJ1xcbic7XG4gIHZhciBwcm9jZXNzZWRDaHVuayA9IHN0cmluZ1RvQ2h1bmsocm93KTtcbiAgcmVxdWVzdC5jb21wbGV0ZWRFcnJvckNodW5rcy5wdXNoKHByb2Nlc3NlZENodW5rKTtcbn1cblxuZnVuY3Rpb24gZW1pdEltcG9ydENodW5rKHJlcXVlc3QsIGlkLCBjbGllbnRSZWZlcmVuY2VNZXRhZGF0YSkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXSBzdHJpbmdpZnkgY2FuIHJldHVybiBudWxsXG4gIHZhciBqc29uID0gc3RyaW5naWZ5KGNsaWVudFJlZmVyZW5jZU1ldGFkYXRhKTtcbiAgdmFyIHJvdyA9IHNlcmlhbGl6ZVJvd0hlYWRlcignSScsIGlkKSArIGpzb24gKyAnXFxuJztcbiAgdmFyIHByb2Nlc3NlZENodW5rID0gc3RyaW5nVG9DaHVuayhyb3cpO1xuICByZXF1ZXN0LmNvbXBsZXRlZEltcG9ydENodW5rcy5wdXNoKHByb2Nlc3NlZENodW5rKTtcbn1cblxuZnVuY3Rpb24gZW1pdEhpbnRDaHVuayhyZXF1ZXN0LCBjb2RlLCBtb2RlbCkge1xuICB2YXIganNvbiA9IHN0cmluZ2lmeShtb2RlbCk7XG4gIHZhciBpZCA9IHJlcXVlc3QubmV4dENodW5rSWQrKztcbiAgdmFyIHJvdyA9IHNlcmlhbGl6ZVJvd0hlYWRlcignSCcgKyBjb2RlLCBpZCkgKyBqc29uICsgJ1xcbic7XG4gIHZhciBwcm9jZXNzZWRDaHVuayA9IHN0cmluZ1RvQ2h1bmsocm93KTtcbiAgcmVxdWVzdC5jb21wbGV0ZWRIaW50Q2h1bmtzLnB1c2gocHJvY2Vzc2VkQ2h1bmspO1xufVxuXG5mdW5jdGlvbiBlbWl0U3ltYm9sQ2h1bmsocmVxdWVzdCwgaWQsIG5hbWUpIHtcbiAgdmFyIHN5bWJvbFJlZmVyZW5jZSA9IHNlcmlhbGl6ZVN5bWJvbFJlZmVyZW5jZShuYW1lKTtcbiAgdmFyIHByb2Nlc3NlZENodW5rID0gZW5jb2RlUmVmZXJlbmNlQ2h1bmsocmVxdWVzdCwgaWQsIHN5bWJvbFJlZmVyZW5jZSk7XG4gIHJlcXVlc3QuY29tcGxldGVkSW1wb3J0Q2h1bmtzLnB1c2gocHJvY2Vzc2VkQ2h1bmspO1xufVxuXG5mdW5jdGlvbiBlbWl0TW9kZWxDaHVuayhyZXF1ZXN0LCBpZCwgbW9kZWwpIHtcbiAgLy8gVHJhY2sgdGhlIHJvb3Qgc28gd2Uga25vdyB0aGF0IHdlIGhhdmUgdG8gZW1pdCB0aGlzIG9iamVjdCBldmVuIHRob3VnaCBpdFxuICAvLyBhbHJlYWR5IGhhcyBhbiBJRC4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3ZSBtaWdodCBzZWUgdGhpcyBvYmplY3QgdHdpY2VcbiAgLy8gaW4gdGhlIHNhbWUgdG9KU09OIGlmIGl0IGlzIGN5Y2xpYy5cbiAgbW9kZWxSb290ID0gbW9kZWw7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdIHN0cmluZ2lmeSBjYW4gcmV0dXJuIG51bGxcblxuICB2YXIganNvbiA9IHN0cmluZ2lmeShtb2RlbCwgcmVxdWVzdC50b0pTT04pO1xuICB2YXIgcm93ID0gaWQudG9TdHJpbmcoMTYpICsgJzonICsganNvbiArICdcXG4nO1xuICB2YXIgcHJvY2Vzc2VkQ2h1bmsgPSBzdHJpbmdUb0NodW5rKHJvdyk7XG4gIHJlcXVlc3QuY29tcGxldGVkUmVndWxhckNodW5rcy5wdXNoKHByb2Nlc3NlZENodW5rKTtcbn1cblxuZnVuY3Rpb24gcmV0cnlUYXNrKHJlcXVlc3QsIHRhc2spIHtcbiAgaWYgKHRhc2suc3RhdHVzICE9PSBQRU5ESU5HJDEpIHtcbiAgICAvLyBXZSBjb21wbGV0ZWQgdGhpcyBieSBvdGhlciBtZWFucyBiZWZvcmUgd2UgaGFkIGEgY2hhbmNlIHRvIHJldHJ5IGl0LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN3aXRjaENvbnRleHQodGFzay5jb250ZXh0KTtcblxuICB0cnkge1xuICAgIHZhciB2YWx1ZSA9IHRhc2subW9kZWw7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICByZXF1ZXN0LndyaXR0ZW5PYmplY3RzLnNldCh2YWx1ZSwgdGFzay5pZCk7IC8vIFRPRE86IENvbmNhdGVuYXRlIGtleXMgb2YgcGFyZW50cyBvbnRvIGNoaWxkcmVuLlxuXG4gICAgICB2YXIgZWxlbWVudCA9IHZhbHVlOyAvLyBXaGVuIHJldHJ5aW5nIGEgY29tcG9uZW50LCByZXVzZSB0aGUgdGhlbmFibGVTdGF0ZSBmcm9tIHRoZVxuICAgICAgLy8gcHJldmlvdXMgYXR0ZW1wdC5cblxuICAgICAgdmFyIHByZXZUaGVuYWJsZVN0YXRlID0gdGFzay50aGVuYWJsZVN0YXRlOyAvLyBBdHRlbXB0IHRvIHJlbmRlciB0aGUgU2VydmVyIENvbXBvbmVudC5cbiAgICAgIC8vIERvaW5nIHRoaXMgaGVyZSBsZXRzIHVzIHJldXNlIHRoaXMgc2FtZSB0YXNrIGlmIHRoZSBuZXh0IGNvbXBvbmVudFxuICAgICAgLy8gYWxzbyBzdXNwZW5kcy5cblxuICAgICAgdGFzay5tb2RlbCA9IHZhbHVlO1xuICAgICAgdmFsdWUgPSBhdHRlbXB0UmVzb2x2ZUVsZW1lbnQocmVxdWVzdCwgZWxlbWVudC50eXBlLCBlbGVtZW50LmtleSwgZWxlbWVudC5yZWYsIGVsZW1lbnQucHJvcHMsIHByZXZUaGVuYWJsZVN0YXRlKTsgLy8gU3VjY2Vzc2Z1bGx5IGZpbmlzaGVkIHRoaXMgY29tcG9uZW50LiBXZSdyZSBnb2luZyB0byBrZWVwIHJlbmRlcmluZ1xuICAgICAgLy8gdXNpbmcgdGhlIHNhbWUgdGFzaywgYnV0IHdlIHJlc2V0IGl0cyB0aGVuYWJsZSBzdGF0ZSBiZWZvcmUgY29udGludWluZy5cblxuICAgICAgdGFzay50aGVuYWJsZVN0YXRlID0gbnVsbDsgLy8gS2VlcCByZW5kZXJpbmcgYW5kIHJldXNlIHRoZSBzYW1lIHRhc2suIFRoaXMgaW5uZXIgbG9vcCBpcyBzZXBhcmF0ZVxuICAgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGFib3ZlIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byByZXNldCB0aGUgdGhlbmFibGUgc3RhdGVcbiAgICAgIC8vIHVudGlsIHRoZSBuZXh0IHRpbWUgc29tZXRoaW5nIHN1c3BlbmRzIGFuZCByZXRyaWVzLlxuXG4gICAgICB3aGlsZSAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICAgIHJlcXVlc3Qud3JpdHRlbk9iamVjdHMuc2V0KHZhbHVlLCB0YXNrLmlkKTsgLy8gVE9ETzogQ29uY2F0ZW5hdGUga2V5cyBvZiBwYXJlbnRzIG9udG8gY2hpbGRyZW4uXG5cbiAgICAgICAgdmFyIG5leHRFbGVtZW50ID0gdmFsdWU7XG4gICAgICAgIHRhc2subW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSBhdHRlbXB0UmVzb2x2ZUVsZW1lbnQocmVxdWVzdCwgbmV4dEVsZW1lbnQudHlwZSwgbmV4dEVsZW1lbnQua2V5LCBuZXh0RWxlbWVudC5yZWYsIG5leHRFbGVtZW50LnByb3BzLCBudWxsKTtcbiAgICAgIH1cbiAgICB9IC8vIFRyYWNrIHRoYXQgdGhpcyBvYmplY3QgaXMgb3V0bGluZWQgYW5kIGhhcyBhbiBpZC5cblxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJlcXVlc3Qud3JpdHRlbk9iamVjdHMuc2V0KHZhbHVlLCB0YXNrLmlkKTtcbiAgICB9XG5cbiAgICBlbWl0TW9kZWxDaHVuayhyZXF1ZXN0LCB0YXNrLmlkLCB2YWx1ZSk7XG4gICAgcmVxdWVzdC5hYm9ydGFibGVUYXNrcy5kZWxldGUodGFzayk7XG4gICAgdGFzay5zdGF0dXMgPSBDT01QTEVURUQ7XG4gIH0gY2F0Y2ggKHRocm93blZhbHVlKSB7XG4gICAgdmFyIHggPSB0aHJvd25WYWx1ZSA9PT0gU3VzcGVuc2VFeGNlcHRpb24gPyAvLyBUaGlzIGlzIGEgc3BlY2lhbCB0eXBlIG9mIGV4Y2VwdGlvbiB1c2VkIGZvciBTdXNwZW5zZS4gRm9yIGhpc3RvcmljYWxcbiAgICAvLyByZWFzb25zLCB0aGUgcmVzdCBvZiB0aGUgU3VzcGVuc2UgaW1wbGVtZW50YXRpb24gZXhwZWN0cyB0aGUgdGhyb3duXG4gICAgLy8gdmFsdWUgdG8gYmUgYSB0aGVuYWJsZSwgYmVjYXVzZSBiZWZvcmUgYHVzZWAgZXhpc3RlZCB0aGF0IHdhcyB0aGVcbiAgICAvLyAodW5zdGFibGUpIEFQSSBmb3Igc3VzcGVuZGluZy4gVGhpcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgY2FuIGNoYW5nZVxuICAgIC8vIGxhdGVyLCBvbmNlIHdlIGRlcHJlY2F0ZSB0aGUgb2xkIEFQSSBpbiBmYXZvciBvZiBgdXNlYC5cbiAgICBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpIDogdGhyb3duVmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICAgIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgICAgIGlmICh0eXBlb2YgeC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFNvbWV0aGluZyBzdXNwZW5kZWQgYWdhaW4sIGxldCdzIHBpY2sgaXQgYmFjayB1cCBsYXRlci5cbiAgICAgICAgdmFyIHBpbmcgPSB0YXNrLnBpbmc7XG4gICAgICAgIHgudGhlbihwaW5nLCBwaW5nKTtcbiAgICAgICAgdGFzay50aGVuYWJsZVN0YXRlID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVxdWVzdC5hYm9ydGFibGVUYXNrcy5kZWxldGUodGFzayk7XG4gICAgdGFzay5zdGF0dXMgPSBFUlJPUkVEJDE7XG4gICAgdmFyIGRpZ2VzdCA9IGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgeCk7XG4gICAgZW1pdEVycm9yQ2h1bmsocmVxdWVzdCwgdGFzay5pZCwgZGlnZXN0LCB4KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwZXJmb3JtV29yayhyZXF1ZXN0KSB7XG4gIHZhciBwcmV2RGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudDtcbiAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gSG9va3NEaXNwYXRjaGVyO1xuICB2YXIgcHJldlJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdDtcbiAgY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0O1xuICBwcmVwYXJlVG9Vc2VIb29rc0ZvclJlcXVlc3QocmVxdWVzdCk7XG5cbiAgdHJ5IHtcbiAgICB2YXIgcGluZ2VkVGFza3MgPSByZXF1ZXN0LnBpbmdlZFRhc2tzO1xuICAgIHJlcXVlc3QucGluZ2VkVGFza3MgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGluZ2VkVGFza3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0YXNrID0gcGluZ2VkVGFza3NbaV07XG4gICAgICByZXRyeVRhc2socmVxdWVzdCwgdGFzayk7XG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3QuZGVzdGluYXRpb24gIT09IG51bGwpIHtcbiAgICAgIGZsdXNoQ29tcGxldGVkQ2h1bmtzKHJlcXVlc3QsIHJlcXVlc3QuZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBwcmV2RGlzcGF0Y2hlcjtcbiAgICByZXNldEhvb2tzRm9yUmVxdWVzdCgpO1xuICAgIGN1cnJlbnRSZXF1ZXN0ID0gcHJldlJlcXVlc3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWJvcnRUYXNrKHRhc2ssIHJlcXVlc3QsIGVycm9ySWQpIHtcbiAgdGFzay5zdGF0dXMgPSBBQk9SVEVEOyAvLyBJbnN0ZWFkIG9mIGVtaXR0aW5nIGFuIGVycm9yIHBlciB0YXNrLmlkLCB3ZSBlbWl0IGEgbW9kZWwgdGhhdCBvbmx5XG4gIC8vIGhhcyBhIHNpbmdsZSB2YWx1ZSByZWZlcmVuY2luZyB0aGUgZXJyb3IuXG5cbiAgdmFyIHJlZiA9IHNlcmlhbGl6ZUJ5VmFsdWVJRChlcnJvcklkKTtcbiAgdmFyIHByb2Nlc3NlZENodW5rID0gZW5jb2RlUmVmZXJlbmNlQ2h1bmsocmVxdWVzdCwgdGFzay5pZCwgcmVmKTtcbiAgcmVxdWVzdC5jb21wbGV0ZWRFcnJvckNodW5rcy5wdXNoKHByb2Nlc3NlZENodW5rKTtcbn1cblxuZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRDaHVua3MocmVxdWVzdCwgZGVzdGluYXRpb24pIHtcbiAgYmVnaW5Xcml0aW5nKCk7XG5cbiAgdHJ5IHtcbiAgICAvLyBXZSBlbWl0IG1vZHVsZSBjaHVua3MgZmlyc3QgaW4gdGhlIHN0cmVhbSBzbyB0aGF0XG4gICAgLy8gdGhleSBjYW4gYmUgcHJlbG9hZGVkIGFzIGVhcmx5IGFzIHBvc3NpYmxlLlxuICAgIHZhciBpbXBvcnRzQ2h1bmtzID0gcmVxdWVzdC5jb21wbGV0ZWRJbXBvcnRDaHVua3M7XG4gICAgdmFyIGkgPSAwO1xuXG4gICAgZm9yICg7IGkgPCBpbXBvcnRzQ2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXF1ZXN0LnBlbmRpbmdDaHVua3MtLTtcbiAgICAgIHZhciBjaHVuayA9IGltcG9ydHNDaHVua3NbaV07XG4gICAgICB2YXIga2VlcFdyaXRpbmcgPSB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjaHVuayk7XG5cbiAgICAgIGlmICgha2VlcFdyaXRpbmcpIHtcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1wb3J0c0NodW5rcy5zcGxpY2UoMCwgaSk7IC8vIE5leHQgY29tZXMgaGludHMuXG5cbiAgICB2YXIgaGludENodW5rcyA9IHJlcXVlc3QuY29tcGxldGVkSGludENodW5rcztcbiAgICBpID0gMDtcblxuICAgIGZvciAoOyBpIDwgaGludENodW5rcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIF9jaHVuayA9IGhpbnRDaHVua3NbaV07XG5cbiAgICAgIHZhciBfa2VlcFdyaXRpbmcgPSB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBfY2h1bmspO1xuXG4gICAgICBpZiAoIV9rZWVwV3JpdGluZykge1xuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBoaW50Q2h1bmtzLnNwbGljZSgwLCBpKTsgLy8gTmV4dCBjb21lcyBtb2RlbCBkYXRhLlxuXG4gICAgdmFyIHJlZ3VsYXJDaHVua3MgPSByZXF1ZXN0LmNvbXBsZXRlZFJlZ3VsYXJDaHVua3M7XG4gICAgaSA9IDA7XG5cbiAgICBmb3IgKDsgaSA8IHJlZ3VsYXJDaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlcXVlc3QucGVuZGluZ0NodW5rcy0tO1xuICAgICAgdmFyIF9jaHVuazIgPSByZWd1bGFyQ2h1bmtzW2ldO1xuXG4gICAgICB2YXIgX2tlZXBXcml0aW5nMiA9IHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIF9jaHVuazIpO1xuXG4gICAgICBpZiAoIV9rZWVwV3JpdGluZzIpIHtcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVndWxhckNodW5rcy5zcGxpY2UoMCwgaSk7IC8vIEZpbmFsbHksIGVycm9ycyBhcmUgc2VudC4gVGhlIGlkZWEgaXMgdGhhdCBpdCdzIG9rIHRvIGRlbGF5XG4gICAgLy8gYW55IGVycm9yIG1lc3NhZ2VzIGFuZCBwcmlvcml0aXplIGRpc3BsYXkgb2Ygb3RoZXIgcGFydHMgb2ZcbiAgICAvLyB0aGUgcGFnZS5cblxuICAgIHZhciBlcnJvckNodW5rcyA9IHJlcXVlc3QuY29tcGxldGVkRXJyb3JDaHVua3M7XG4gICAgaSA9IDA7XG5cbiAgICBmb3IgKDsgaSA8IGVycm9yQ2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXF1ZXN0LnBlbmRpbmdDaHVua3MtLTtcbiAgICAgIHZhciBfY2h1bmszID0gZXJyb3JDaHVua3NbaV07XG5cbiAgICAgIHZhciBfa2VlcFdyaXRpbmczID0gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgX2NodW5rMyk7XG5cbiAgICAgIGlmICghX2tlZXBXcml0aW5nMykge1xuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvckNodW5rcy5zcGxpY2UoMCwgaSk7XG4gIH0gZmluYWxseSB7XG4gICAgcmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgIGNvbXBsZXRlV3JpdGluZyhkZXN0aW5hdGlvbik7XG4gIH1cblxuICBpZiAocmVxdWVzdC5wZW5kaW5nQ2h1bmtzID09PSAwKSB7XG5cbiAgICBjbG9zZSQxKGRlc3RpbmF0aW9uKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydFdvcmsocmVxdWVzdCkge1xuICByZXF1ZXN0LmZsdXNoU2NoZWR1bGVkID0gcmVxdWVzdC5kZXN0aW5hdGlvbiAhPT0gbnVsbDtcblxuICBpZiAoc3VwcG9ydHNSZXF1ZXN0U3RvcmFnZSkge1xuICAgIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdFN0b3JhZ2UucnVuKHJlcXVlc3QsIHBlcmZvcm1Xb3JrLCByZXF1ZXN0KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBzY2hlZHVsZVdvcmsoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVucXVldWVGbHVzaChyZXF1ZXN0KSB7XG4gIGlmIChyZXF1ZXN0LmZsdXNoU2NoZWR1bGVkID09PSBmYWxzZSAmJiAvLyBJZiB0aGVyZSBhcmUgcGluZ2VkIHRhc2tzIHdlIGFyZSBnb2luZyB0byBmbHVzaCBhbnl3YXkgYWZ0ZXIgd29yayBjb21wbGV0ZXNcbiAgcmVxdWVzdC5waW5nZWRUYXNrcy5sZW5ndGggPT09IDAgJiYgLy8gSWYgdGhlcmUgaXMgbm8gZGVzdGluYXRpb24gdGhlcmUgaXMgbm90aGluZyB3ZSBjYW4gZmx1c2ggdG8uIEEgZmx1c2ggd2lsbFxuICAvLyBoYXBwZW4gd2hlbiB3ZSBzdGFydCBmbG93aW5nIGFnYWluXG4gIHJlcXVlc3QuZGVzdGluYXRpb24gIT09IG51bGwpIHtcbiAgICB2YXIgZGVzdGluYXRpb24gPSByZXF1ZXN0LmRlc3RpbmF0aW9uO1xuICAgIHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmx1c2hDb21wbGV0ZWRDaHVua3MocmVxdWVzdCwgZGVzdGluYXRpb24pO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0Rmxvd2luZyhyZXF1ZXN0LCBkZXN0aW5hdGlvbikge1xuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NJTkcpIHtcbiAgICByZXF1ZXN0LnN0YXR1cyA9IENMT1NFRDtcbiAgICBjbG9zZVdpdGhFcnJvcihkZXN0aW5hdGlvbiwgcmVxdWVzdC5mYXRhbEVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NFRCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgLy8gV2UncmUgYWxyZWFkeSBmbG93aW5nLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlcXVlc3QuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcblxuICB0cnkge1xuICAgIGZsdXNoQ29tcGxldGVkQ2h1bmtzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfVxufVxuZnVuY3Rpb24gc3RvcEZsb3dpbmcocmVxdWVzdCkge1xuICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbn0gLy8gVGhpcyBpcyBjYWxsZWQgdG8gZWFybHkgdGVybWluYXRlIGEgcmVxdWVzdC4gSXQgY3JlYXRlcyBhbiBlcnJvciBhdCBhbGwgcGVuZGluZyB0YXNrcy5cblxuZnVuY3Rpb24gYWJvcnQocmVxdWVzdCwgcmVhc29uKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFib3J0YWJsZVRhc2tzID0gcmVxdWVzdC5hYm9ydGFibGVUYXNrcztcblxuICAgIGlmIChhYm9ydGFibGVUYXNrcy5zaXplID4gMCkge1xuICAgICAgLy8gV2UgaGF2ZSB0YXNrcyB0byBhYm9ydC4gV2UnbGwgZW1pdCBvbmUgZXJyb3Igcm93IGFuZCB0aGVuIGVtaXQgYSByZWZlcmVuY2VcbiAgICAgIC8vIHRvIHRoYXQgcm93IGZyb20gZXZlcnkgcm93IHRoYXQncyBzdGlsbCByZW1haW5pbmcuXG4gICAgICByZXF1ZXN0LnBlbmRpbmdDaHVua3MrKztcbiAgICAgIHZhciBlcnJvcklkID0gcmVxdWVzdC5uZXh0Q2h1bmtJZCsrO1xuXG4gICAgICB2YXIgcG9zdHBvbmVJbnN0YW5jZTsgaWYgKGVuYWJsZVBvc3Rwb25lICYmIHR5cGVvZiByZWFzb24gPT09ICdvYmplY3QnICYmIHJlYXNvbiAhPT0gbnVsbCAmJiByZWFzb24uJCR0eXBlb2YgPT09IFJFQUNUX1BPU1RQT05FX1RZUEUpIDsgZWxzZSB7XG4gICAgICAgIHZhciBlcnJvciA9IHJlYXNvbiA9PT0gdW5kZWZpbmVkID8gbmV3IEVycm9yKCdUaGUgcmVuZGVyIHdhcyBhYm9ydGVkIGJ5IHRoZSBzZXJ2ZXIgd2l0aG91dCBhIHJlYXNvbi4nKSA6IHJlYXNvbjtcbiAgICAgICAgdmFyIGRpZ2VzdCA9IGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IpO1xuICAgICAgICBlbWl0RXJyb3JDaHVuayhyZXF1ZXN0LCBlcnJvcklkLCBkaWdlc3QsIGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgYWJvcnRhYmxlVGFza3MuZm9yRWFjaChmdW5jdGlvbiAodGFzaykge1xuICAgICAgICByZXR1cm4gYWJvcnRUYXNrKHRhc2ssIHJlcXVlc3QsIGVycm9ySWQpO1xuICAgICAgfSk7XG4gICAgICBhYm9ydGFibGVUYXNrcy5jbGVhcigpO1xuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgICBmbHVzaENvbXBsZXRlZENodW5rcyhyZXF1ZXN0LCByZXF1ZXN0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgZmF0YWxFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW1wb3J0U2VydmVyQ29udGV4dHMoY29udGV4dHMpIHtcblxuICByZXR1cm4gcm9vdENvbnRleHRTbmFwc2hvdDtcbn1cblxuLy8gVGhpcyBpcyB0aGUgcGFyc2VkIHNoYXBlIG9mIHRoZSB3aXJlIGZvcm1hdCB3aGljaCBpcyB3aHkgaXQgaXNcbi8vIGNvbmRlbnNlZCB0byBvbmx5IHRoZSBlc3NlbnRpYWx5IGluZm9ybWF0aW9uXG52YXIgSUQgPSAwO1xudmFyIENIVU5LUyA9IDE7XG52YXIgTkFNRSA9IDI7IC8vIGV4cG9ydCBjb25zdCBBU1lOQyA9IDM7XG4vLyBUaGlzIGxvZ2ljIGlzIGNvcnJlY3QgYmVjYXVzZSBjdXJyZW50bHkgb25seSBpbmNsdWRlIHRoZSA0dGggdHVwbGUgbWVtYmVyXG4vLyB3aGVuIHRoZSBtb2R1bGUgaXMgYXN5bmMuIElmIHRoYXQgY2hhbmdlcyB3ZSB3aWxsIG5lZWQgdG8gYWN0dWFsbHkgYXNzZXJ0XG4vLyB0aGUgdmFsdWUgaXMgdHJ1ZS4gV2UgZG9uJ3QgaW5kZXggaW50byB0aGUgNHRoIHNsb3QgYmVjYXVzZSBmbG93IGRvZXMgbm90XG4vLyBsaWtlIHRoZSBwb3RlbnRpYWwgb3V0IG9mIGJvdW5kcyBhY2Nlc3NcblxuZnVuY3Rpb24gaXNBc3luY0ltcG9ydChtZXRhZGF0YSkge1xuICByZXR1cm4gbWV0YWRhdGEubGVuZ3RoID09PSA0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU2VydmVyUmVmZXJlbmNlKGJ1bmRsZXJDb25maWcsIGlkKSB7XG4gIHZhciBuYW1lID0gJyc7XG4gIHZhciByZXNvbHZlZE1vZHVsZURhdGEgPSBidW5kbGVyQ29uZmlnW2lkXTtcblxuICBpZiAocmVzb2x2ZWRNb2R1bGVEYXRhKSB7XG4gICAgLy8gVGhlIHBvdGVudGlhbGx5IGFsaWFzZWQgbmFtZS5cbiAgICBuYW1lID0gcmVzb2x2ZWRNb2R1bGVEYXRhLm5hbWU7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgZGlkbid0IGZpbmQgdGhpcyBzcGVjaWZpYyBleHBvcnQgbmFtZSBidXQgd2UgbWlnaHQgaGF2ZSB0aGUgKiBleHBvcnRcbiAgICAvLyB3aGljaCBjb250YWlucyB0aGlzIG5hbWUgYXMgd2VsbC5cbiAgICAvLyBUT0RPOiBJdCdzIHVuZm9ydHVuYXRlIHRoYXQgd2Ugbm93IGhhdmUgdG8gcGFyc2UgdGhpcyBzdHJpbmcuIFdlIHNob3VsZFxuICAgIC8vIHByb2JhYmx5IGdvIGJhY2sgdG8gZW5jb2RpbmcgcGF0aCBhbmQgbmFtZSBzZXBhcmF0ZWx5IG9uIHRoZSBjbGllbnQgcmVmZXJlbmNlLlxuICAgIHZhciBpZHggPSBpZC5sYXN0SW5kZXhPZignIycpO1xuXG4gICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgIG5hbWUgPSBpZC5zbGljZShpZHggKyAxKTtcbiAgICAgIHJlc29sdmVkTW9kdWxlRGF0YSA9IGJ1bmRsZXJDb25maWdbaWQuc2xpY2UoMCwgaWR4KV07XG4gICAgfVxuXG4gICAgaWYgKCFyZXNvbHZlZE1vZHVsZURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgdGhlIG1vZHVsZSBcIicgKyBpZCArICdcIiBpbiB0aGUgUmVhY3QgU2VydmVyIE1hbmlmZXN0LiAnICsgJ1RoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIGJ1bmRsZXIuJyk7XG4gICAgfVxuICB9IC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gcmV0dXJuIGFzeW5jOiB0cnVlIGlmIGl0J3MgYW4gYXN5bmMgbW9kdWxlLlxuXG5cbiAgcmV0dXJuIFtyZXNvbHZlZE1vZHVsZURhdGEuaWQsIHJlc29sdmVkTW9kdWxlRGF0YS5jaHVua3MsIG5hbWVdO1xufSAvLyBUaGUgY2h1bmsgY2FjaGUgY29udGFpbnMgYWxsIHRoZSBjaHVua3Mgd2UndmUgcHJlbG9hZGVkIHNvIGZhci5cbi8vIElmIHRoZXkncmUgc3RpbGwgcGVuZGluZyB0aGV5J3JlIGEgdGhlbmFibGUuIFRoaXMgbWFwIGFsc28gZXhpc3RzXG4vLyBpbiBXZWJwYWNrIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0J3Mgbm90IGV4cG9zZWQgc28gd2UgaGF2ZSB0b1xuLy8gcmVwbGljYXRlIGl0IGluIHVzZXIgc3BhY2UuIG51bGwgbWVhbnMgdGhhdCBpdCBoYXMgYWxyZWFkeSBsb2FkZWQuXG5cbnZhciBjaHVua0NhY2hlID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiByZXF1aXJlQXN5bmNNb2R1bGUoaWQpIHtcbiAgLy8gV2UndmUgYWxyZWFkeSBsb2FkZWQgYWxsIHRoZSBjaHVua3MuIFdlIGNhbiByZXF1aXJlIHRoZSBtb2R1bGUuXG4gIHZhciBwcm9taXNlID0gZ2xvYmFsVGhpcy5fX25leHRfcmVxdWlyZV9fKGlkKTtcblxuICBpZiAodHlwZW9mIHByb21pc2UudGhlbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRoaXMgd2Fzbid0IGEgcHJvbWlzZSBhZnRlciBhbGwuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAocHJvbWlzZS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgLy8gVGhpcyBtb2R1bGUgd2FzIGFscmVhZHkgcmVzb2x2ZWQgZWFybGllci5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICAvLyBJbnN0cnVtZW50IHRoZSBQcm9taXNlIHRvIHN0YXNoIHRoZSByZXN1bHQuXG4gICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgdmFyIGZ1bGZpbGxlZFRoZW5hYmxlID0gcHJvbWlzZTtcbiAgICAgIGZ1bGZpbGxlZFRoZW5hYmxlLnN0YXR1cyA9ICdmdWxmaWxsZWQnO1xuICAgICAgZnVsZmlsbGVkVGhlbmFibGUudmFsdWUgPSB2YWx1ZTtcbiAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICB2YXIgcmVqZWN0ZWRUaGVuYWJsZSA9IHByb21pc2U7XG4gICAgICByZWplY3RlZFRoZW5hYmxlLnN0YXR1cyA9ICdyZWplY3RlZCc7XG4gICAgICByZWplY3RlZFRoZW5hYmxlLnJlYXNvbiA9IHJlYXNvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpZ25vcmVSZWplY3QoKSB7Ly8gV2UgcmVseSBvbiByZWplY3RlZCBwcm9taXNlcyB0byBiZSBoYW5kbGVkIGJ5IGFub3RoZXIgbGlzdGVuZXIuXG59IC8vIFN0YXJ0IHByZWxvYWRpbmcgdGhlIG1vZHVsZXMgc2luY2Ugd2UgbWlnaHQgbmVlZCB0aGVtIHNvb24uXG4vLyBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3Qgc3VzcGVuZC5cblxuXG5mdW5jdGlvbiBwcmVsb2FkTW9kdWxlKG1ldGFkYXRhKSB7XG4gIHZhciBjaHVua3MgPSBtZXRhZGF0YVtDSFVOS1NdO1xuICB2YXIgcHJvbWlzZXMgPSBbXTtcbiAgdmFyIGkgPSAwO1xuXG4gIHdoaWxlIChpIDwgY2h1bmtzLmxlbmd0aCkge1xuICAgIHZhciBjaHVua0lkID0gY2h1bmtzW2krK107XG4gICAgY2h1bmtzW2krK107XG4gICAgdmFyIGVudHJ5ID0gY2h1bmtDYWNoZS5nZXQoY2h1bmtJZCk7XG5cbiAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHRoZW5hYmxlID0gbG9hZENodW5rKGNodW5rSWQpO1xuICAgICAgcHJvbWlzZXMucHVzaCh0aGVuYWJsZSk7IC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cblxuICAgICAgdmFyIHJlc29sdmUgPSBjaHVua0NhY2hlLnNldC5iaW5kKGNodW5rQ2FjaGUsIGNodW5rSWQsIG51bGwpO1xuICAgICAgdGhlbmFibGUudGhlbihyZXNvbHZlLCBpZ25vcmVSZWplY3QpO1xuICAgICAgY2h1bmtDYWNoZS5zZXQoY2h1bmtJZCwgdGhlbmFibGUpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkgIT09IG51bGwpIHtcbiAgICAgIHByb21pc2VzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0FzeW5jSW1wb3J0KG1ldGFkYXRhKSkge1xuICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXF1aXJlQXN5bmNNb2R1bGUobWV0YWRhdGFbSURdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmVBc3luY01vZHVsZShtZXRhZGF0YVtJRF0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb21pc2VzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59IC8vIEFjdHVhbGx5IHJlcXVpcmUgdGhlIG1vZHVsZSBvciBzdXNwZW5kIGlmIGl0J3Mgbm90IHlldCByZWFkeS5cbi8vIEluY3JlYXNlIHByaW9yaXR5IGlmIG5lY2Vzc2FyeS5cblxuZnVuY3Rpb24gcmVxdWlyZU1vZHVsZShtZXRhZGF0YSkge1xuICB2YXIgbW9kdWxlRXhwb3J0cyA9IGdsb2JhbFRoaXMuX19uZXh0X3JlcXVpcmVfXyhtZXRhZGF0YVtJRF0pO1xuXG4gIGlmIChpc0FzeW5jSW1wb3J0KG1ldGFkYXRhKSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlRXhwb3J0cy50aGVuICE9PSAnZnVuY3Rpb24nKSA7IGVsc2UgaWYgKG1vZHVsZUV4cG9ydHMuc3RhdHVzID09PSAnZnVsZmlsbGVkJykge1xuICAgICAgLy8gVGhpcyBQcm9taXNlIHNob3VsZCd2ZSBiZWVuIGluc3RydW1lbnRlZCBieSBwcmVsb2FkTW9kdWxlLlxuICAgICAgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZUV4cG9ydHMudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG1vZHVsZUV4cG9ydHMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtZXRhZGF0YVtOQU1FXSA9PT0gJyonKSB7XG4gICAgLy8gVGhpcyBpcyBhIHBsYWNlaG9sZGVyIHZhbHVlIHRoYXQgcmVwcmVzZW50cyB0aGF0IHRoZSBjYWxsZXIgaW1wb3J0ZWQgdGhpc1xuICAgIC8vIGFzIGEgQ29tbW9uSlMgbW9kdWxlIGFzIGlzLlxuICAgIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICB9XG5cbiAgaWYgKG1ldGFkYXRhW05BTUVdID09PSAnJykge1xuICAgIC8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhhdCB0aGUgY2FsbGVyIGFjY2Vzc2VkIHRoZVxuICAgIC8vIGRlZmF1bHQgcHJvcGVydHkgb2YgdGhpcyBpZiBpdCB3YXMgYW4gRVNNIGludGVyb3AgbW9kdWxlLlxuICAgIHJldHVybiBtb2R1bGVFeHBvcnRzLl9fZXNNb2R1bGUgPyBtb2R1bGVFeHBvcnRzLmRlZmF1bHQgOiBtb2R1bGVFeHBvcnRzO1xuICB9XG5cbiAgcmV0dXJuIG1vZHVsZUV4cG9ydHNbbWV0YWRhdGFbTkFNRV1dO1xufVxuXG5mdW5jdGlvbiBsb2FkQ2h1bmsoY2h1bmtJZCwgZmlsZW5hbWUpIHtcbiAgcmV0dXJuIF9fd2VicGFja19jaHVua19sb2FkX18oY2h1bmtJZCk7XG59XG5cbi8vIFRoZSBzZXJ2ZXIgYWN0cyBhcyBhIENsaWVudCBvZiBpdHNlbGYgd2hlbiByZXNvbHZpbmcgU2VydmVyIFJlZmVyZW5jZXMuXG52YXIgUEVORElORyA9ICdwZW5kaW5nJztcbnZhciBCTE9DS0VEID0gJ2Jsb2NrZWQnO1xudmFyIFJFU09MVkVEX01PREVMID0gJ3Jlc29sdmVkX21vZGVsJztcbnZhciBJTklUSUFMSVpFRCA9ICdmdWxmaWxsZWQnO1xudmFyIEVSUk9SRUQgPSAncmVqZWN0ZWQnOyAvLyAkRmxvd0ZpeE1lW21pc3NpbmctdGhpcy1hbm5vdF1cblxuZnVuY3Rpb24gQ2h1bmsoc3RhdHVzLCB2YWx1ZSwgcmVhc29uLCByZXNwb25zZSkge1xuICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgdGhpcy5fcmVzcG9uc2UgPSByZXNwb25zZTtcbn0gLy8gV2Ugc3ViY2xhc3MgUHJvbWlzZS5wcm90b3R5cGUgc28gdGhhdCB3ZSBnZXQgb3RoZXIgbWV0aG9kcyBsaWtlIC5jYXRjaFxuXG5cbkNodW5rLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpOyAvLyBUT0RPOiBUaGlzIGRvZXNuJ3QgcmV0dXJuIGEgbmV3IFByb21pc2UgY2hhaW4gdW5saWtlIHRoZSByZWFsIC50aGVuXG5cbkNodW5rLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICB2YXIgY2h1bmsgPSB0aGlzOyAvLyBJZiB3ZSBoYXZlIHJlc29sdmVkIGNvbnRlbnQsIHdlIHRyeSB0byBpbml0aWFsaXplIGl0IGZpcnN0IHdoaWNoXG4gIC8vIG1pZ2h0IHB1dCB1cyBiYWNrIGludG8gb25lIG9mIHRoZSBvdGhlciBzdGF0ZXMuXG5cbiAgc3dpdGNoIChjaHVuay5zdGF0dXMpIHtcbiAgICBjYXNlIFJFU09MVkVEX01PREVMOlxuICAgICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspO1xuICAgICAgYnJlYWs7XG4gIH0gLy8gVGhlIHN0YXR1cyBtaWdodCBoYXZlIGNoYW5nZWQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG5cblxuICBzd2l0Y2ggKGNodW5rLnN0YXR1cykge1xuICAgIGNhc2UgSU5JVElBTElaRUQ6XG4gICAgICByZXNvbHZlKGNodW5rLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBQRU5ESU5HOlxuICAgIGNhc2UgQkxPQ0tFRDpcbiAgICAgIGlmIChyZXNvbHZlKSB7XG4gICAgICAgIGlmIChjaHVuay52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGNodW5rLnZhbHVlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBjaHVuay52YWx1ZS5wdXNoKHJlc29sdmUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVqZWN0KSB7XG4gICAgICAgIGlmIChjaHVuay5yZWFzb24gPT09IG51bGwpIHtcbiAgICAgICAgICBjaHVuay5yZWFzb24gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rLnJlYXNvbi5wdXNoKHJlamVjdCk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJlamVjdChjaHVuay5yZWFzb24pO1xuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldFJvb3QocmVzcG9uc2UpIHtcbiAgdmFyIGNodW5rID0gZ2V0Q2h1bmsocmVzcG9uc2UsIDApO1xuICByZXR1cm4gY2h1bms7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBlbmRpbmdDaHVuayhyZXNwb25zZSkge1xuICAvLyAkRmxvd0ZpeE1lW2ludmFsaWQtY29uc3RydWN0b3JdIEZsb3cgZG9lc24ndCBzdXBwb3J0IGZ1bmN0aW9ucyBhcyBjb25zdHJ1Y3RvcnNcbiAgcmV0dXJuIG5ldyBDaHVuayhQRU5ESU5HLCBudWxsLCBudWxsLCByZXNwb25zZSk7XG59XG5cbmZ1bmN0aW9uIHdha2VDaHVuayhsaXN0ZW5lcnMsIHZhbHVlKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmlnZ2VyRXJyb3JPbkNodW5rKGNodW5rLCBlcnJvcikge1xuICBpZiAoY2h1bmsuc3RhdHVzICE9PSBQRU5ESU5HICYmIGNodW5rLnN0YXR1cyAhPT0gQkxPQ0tFRCkge1xuICAgIC8vIFdlIGFscmVhZHkgcmVzb2x2ZWQuIFdlIGRpZG4ndCBleHBlY3QgdG8gc2VlIHRoaXMuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IGNodW5rLnJlYXNvbjtcbiAgdmFyIGVycm9yZWRDaHVuayA9IGNodW5rO1xuICBlcnJvcmVkQ2h1bmsuc3RhdHVzID0gRVJST1JFRDtcbiAgZXJyb3JlZENodW5rLnJlYXNvbiA9IGVycm9yO1xuXG4gIGlmIChsaXN0ZW5lcnMgIT09IG51bGwpIHtcbiAgICB3YWtlQ2h1bmsobGlzdGVuZXJzLCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZWRNb2RlbENodW5rKHJlc3BvbnNlLCB2YWx1ZSkge1xuICAvLyAkRmxvd0ZpeE1lW2ludmFsaWQtY29uc3RydWN0b3JdIEZsb3cgZG9lc24ndCBzdXBwb3J0IGZ1bmN0aW9ucyBhcyBjb25zdHJ1Y3RvcnNcbiAgcmV0dXJuIG5ldyBDaHVuayhSRVNPTFZFRF9NT0RFTCwgdmFsdWUsIG51bGwsIHJlc3BvbnNlKTtcbn1cblxuZnVuY3Rpb24gYmluZEFyZ3MkMShmbiwgYXJncykge1xuICByZXR1cm4gZm4uYmluZC5hcHBseShmbiwgW251bGxdLmNvbmNhdChhcmdzKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRTZXJ2ZXJSZWZlcmVuY2UkMShyZXNwb25zZSwgaWQsIGJvdW5kLCBwYXJlbnRDaHVuaywgcGFyZW50T2JqZWN0LCBrZXkpIHtcbiAgdmFyIHNlcnZlclJlZmVyZW5jZSA9IHJlc29sdmVTZXJ2ZXJSZWZlcmVuY2UocmVzcG9uc2UuX2J1bmRsZXJDb25maWcsIGlkKTsgLy8gV2UgZXhwZWN0IG1vc3Qgc2VydmVycyB0byBub3QgcmVhbGx5IG5lZWQgdGhpcyBiZWNhdXNlIHlvdSdkIGp1c3QgaGF2ZSBhbGxcbiAgLy8gdGhlIHJlbGV2YW50IG1vZHVsZXMgYWxyZWFkeSBsb2FkZWQgYnV0IGl0IGFsbG93cyBmb3IgbGF6eSBsb2FkaW5nIG9mIGNvZGVcbiAgLy8gaWYgbmVlZGVkLlxuXG4gIHZhciBwcmVsb2FkUHJvbWlzZSA9IHByZWxvYWRNb2R1bGUoc2VydmVyUmVmZXJlbmNlKTtcbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKGJvdW5kKSB7XG4gICAgcHJvbWlzZSA9IFByb21pc2UuYWxsKFtib3VuZCwgcHJlbG9hZFByb21pc2VdKS50aGVuKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgYXJncyA9IF9yZWZbMF07XG4gICAgICByZXR1cm4gYmluZEFyZ3MkMShyZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSksIGFyZ3MpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcmVsb2FkUHJvbWlzZSkge1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShwcmVsb2FkUHJvbWlzZSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3luY2hyb25vdXNseSBhdmFpbGFibGVcbiAgICAgIHJldHVybiByZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZS50aGVuKGNyZWF0ZU1vZGVsUmVzb2x2ZXIocGFyZW50Q2h1bmssIHBhcmVudE9iamVjdCwga2V5KSwgY3JlYXRlTW9kZWxSZWplY3QocGFyZW50Q2h1bmspKTsgLy8gV2UgbmVlZCBhIHBsYWNlaG9sZGVyIHZhbHVlIHRoYXQgd2lsbCBiZSByZXBsYWNlZCBsYXRlci5cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIGluaXRpYWxpemluZ0NodW5rID0gbnVsbDtcbnZhciBpbml0aWFsaXppbmdDaHVua0Jsb2NrZWRNb2RlbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGluaXRpYWxpemVNb2RlbENodW5rKGNodW5rKSB7XG4gIHZhciBwcmV2Q2h1bmsgPSBpbml0aWFsaXppbmdDaHVuaztcbiAgdmFyIHByZXZCbG9ja2VkID0gaW5pdGlhbGl6aW5nQ2h1bmtCbG9ja2VkTW9kZWw7XG4gIGluaXRpYWxpemluZ0NodW5rID0gY2h1bms7XG4gIGluaXRpYWxpemluZ0NodW5rQmxvY2tlZE1vZGVsID0gbnVsbDtcblxuICB0cnkge1xuICAgIHZhciB2YWx1ZSA9IEpTT04ucGFyc2UoY2h1bmsudmFsdWUsIGNodW5rLl9yZXNwb25zZS5fZnJvbUpTT04pO1xuXG4gICAgaWYgKGluaXRpYWxpemluZ0NodW5rQmxvY2tlZE1vZGVsICE9PSBudWxsICYmIGluaXRpYWxpemluZ0NodW5rQmxvY2tlZE1vZGVsLmRlcHMgPiAwKSB7XG4gICAgICBpbml0aWFsaXppbmdDaHVua0Jsb2NrZWRNb2RlbC52YWx1ZSA9IHZhbHVlOyAvLyBXZSBkaXNjb3ZlcmVkIG5ldyBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyB0aGF0IGFyZSBub3QgeWV0IHJlc29sdmVkLlxuICAgICAgLy8gV2UgaGF2ZSB0byBnbyB0aGUgQkxPQ0tFRCBzdGF0ZSB1bnRpbCB0aGV5J3JlIHJlc29sdmVkLlxuXG4gICAgICB2YXIgYmxvY2tlZENodW5rID0gY2h1bms7XG4gICAgICBibG9ja2VkQ2h1bmsuc3RhdHVzID0gQkxPQ0tFRDtcbiAgICAgIGJsb2NrZWRDaHVuay52YWx1ZSA9IG51bGw7XG4gICAgICBibG9ja2VkQ2h1bmsucmVhc29uID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGluaXRpYWxpemVkQ2h1bmsgPSBjaHVuaztcbiAgICAgIGluaXRpYWxpemVkQ2h1bmsuc3RhdHVzID0gSU5JVElBTElaRUQ7XG4gICAgICBpbml0aWFsaXplZENodW5rLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHZhciBlcnJvcmVkQ2h1bmsgPSBjaHVuaztcbiAgICBlcnJvcmVkQ2h1bmsuc3RhdHVzID0gRVJST1JFRDtcbiAgICBlcnJvcmVkQ2h1bmsucmVhc29uID0gZXJyb3I7XG4gIH0gZmluYWxseSB7XG4gICAgaW5pdGlhbGl6aW5nQ2h1bmsgPSBwcmV2Q2h1bms7XG4gICAgaW5pdGlhbGl6aW5nQ2h1bmtCbG9ja2VkTW9kZWwgPSBwcmV2QmxvY2tlZDtcbiAgfVxufSAvLyBSZXBvcnQgdGhhdCBhbnkgbWlzc2luZyBjaHVua3MgaW4gdGhlIG1vZGVsIGlzIG5vdyBnb2luZyB0byB0aHJvdyB0aGlzXG4vLyBlcnJvciB1cG9uIHJlYWQuIEFsc28gbm90aWZ5IGFueSBwZW5kaW5nIHByb21pc2VzLlxuXG5cbmZ1bmN0aW9uIHJlcG9ydEdsb2JhbEVycm9yKHJlc3BvbnNlLCBlcnJvcikge1xuICByZXNwb25zZS5fY2h1bmtzLmZvckVhY2goZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgLy8gSWYgdGhpcyBjaHVuayB3YXMgYWxyZWFkeSByZXNvbHZlZCBvciBlcnJvcmVkLCBpdCB3b24ndFxuICAgIC8vIHRyaWdnZXIgYW4gZXJyb3IgYnV0IGlmIGl0IHdhc24ndCB0aGVuIHdlIG5lZWQgdG9cbiAgICAvLyBiZWNhdXNlIHdlIHdvbid0IGJlIGdldHRpbmcgYW55IG5ldyBkYXRhIHRvIHJlc29sdmUgaXQuXG4gICAgaWYgKGNodW5rLnN0YXR1cyA9PT0gUEVORElORykge1xuICAgICAgdHJpZ2dlckVycm9yT25DaHVuayhjaHVuaywgZXJyb3IpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENodW5rKHJlc3BvbnNlLCBpZCkge1xuICB2YXIgY2h1bmtzID0gcmVzcG9uc2UuX2NodW5rcztcbiAgdmFyIGNodW5rID0gY2h1bmtzLmdldChpZCk7XG5cbiAgaWYgKCFjaHVuaykge1xuICAgIHZhciBwcmVmaXggPSByZXNwb25zZS5fcHJlZml4O1xuICAgIHZhciBrZXkgPSBwcmVmaXggKyBpZDsgLy8gQ2hlY2sgaWYgd2UgaGF2ZSB0aGlzIGZpZWxkIGluIHRoZSBiYWNraW5nIHN0b3JlIGFscmVhZHkuXG5cbiAgICB2YXIgYmFja2luZ0VudHJ5ID0gcmVzcG9uc2UuX2Zvcm1EYXRhLmdldChrZXkpO1xuXG4gICAgaWYgKGJhY2tpbmdFbnRyeSAhPSBudWxsKSB7XG4gICAgICAvLyBXZSBhc3N1bWUgdGhhdCB0aGlzIGlzIGEgc3RyaW5nIGVudHJ5IGZvciBub3cuXG4gICAgICBjaHVuayA9IGNyZWF0ZVJlc29sdmVkTW9kZWxDaHVuayhyZXNwb25zZSwgYmFja2luZ0VudHJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2UncmUgc3RpbGwgd2FpdGluZyBvbiB0aGlzIGVudHJ5IHRvIHN0cmVhbSBpbi5cbiAgICAgIGNodW5rID0gY3JlYXRlUGVuZGluZ0NodW5rKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBjaHVua3Muc2V0KGlkLCBjaHVuayk7XG4gIH1cblxuICByZXR1cm4gY2h1bms7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vZGVsUmVzb2x2ZXIoY2h1bmssIHBhcmVudE9iamVjdCwga2V5KSB7XG4gIHZhciBibG9ja2VkO1xuXG4gIGlmIChpbml0aWFsaXppbmdDaHVua0Jsb2NrZWRNb2RlbCkge1xuICAgIGJsb2NrZWQgPSBpbml0aWFsaXppbmdDaHVua0Jsb2NrZWRNb2RlbDtcbiAgICBibG9ja2VkLmRlcHMrKztcbiAgfSBlbHNlIHtcbiAgICBibG9ja2VkID0gaW5pdGlhbGl6aW5nQ2h1bmtCbG9ja2VkTW9kZWwgPSB7XG4gICAgICBkZXBzOiAxLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHBhcmVudE9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgYmxvY2tlZC5kZXBzLS07XG5cbiAgICBpZiAoYmxvY2tlZC5kZXBzID09PSAwKSB7XG4gICAgICBpZiAoY2h1bmsuc3RhdHVzICE9PSBCTE9DS0VEKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlc29sdmVMaXN0ZW5lcnMgPSBjaHVuay52YWx1ZTtcbiAgICAgIHZhciBpbml0aWFsaXplZENodW5rID0gY2h1bms7XG4gICAgICBpbml0aWFsaXplZENodW5rLnN0YXR1cyA9IElOSVRJQUxJWkVEO1xuICAgICAgaW5pdGlhbGl6ZWRDaHVuay52YWx1ZSA9IGJsb2NrZWQudmFsdWU7XG5cbiAgICAgIGlmIChyZXNvbHZlTGlzdGVuZXJzICE9PSBudWxsKSB7XG4gICAgICAgIHdha2VDaHVuayhyZXNvbHZlTGlzdGVuZXJzLCBibG9ja2VkLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vZGVsUmVqZWN0KGNodW5rKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJpZ2dlckVycm9yT25DaHVuayhjaHVuaywgZXJyb3IpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRPdXRsaW5lZE1vZGVsKHJlc3BvbnNlLCBpZCkge1xuICB2YXIgY2h1bmsgPSBnZXRDaHVuayhyZXNwb25zZSwgaWQpO1xuXG4gIGlmIChjaHVuay5zdGF0dXMgPT09IFJFU09MVkVEX01PREVMKSB7XG4gICAgaW5pdGlhbGl6ZU1vZGVsQ2h1bmsoY2h1bmspO1xuICB9XG5cbiAgaWYgKGNodW5rLnN0YXR1cyAhPT0gSU5JVElBTElaRUQpIHtcbiAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBpcyBlbWl0dGVkIGVhcmxpZXIgc28gb3RoZXJ3aXNlIGl0J3MgYW4gZXJyb3IuXG4gICAgdGhyb3cgY2h1bmsucmVhc29uO1xuICB9XG5cbiAgcmV0dXJuIGNodW5rLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1vZGVsU3RyaW5nKHJlc3BvbnNlLCBwYXJlbnRPYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlWzBdID09PSAnJCcpIHtcbiAgICBzd2l0Y2ggKHZhbHVlWzFdKSB7XG4gICAgICBjYXNlICckJzpcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgd2FzIGFuIGVzY2FwZWQgc3RyaW5nIHZhbHVlLlxuICAgICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdAJzpcbiAgICAgICAge1xuICAgICAgICAgIC8vIFByb21pc2VcbiAgICAgICAgICB2YXIgaWQgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMTYpO1xuICAgICAgICAgIHZhciBjaHVuayA9IGdldENodW5rKHJlc3BvbnNlLCBpZCk7XG4gICAgICAgICAgcmV0dXJuIGNodW5rO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ1MnOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gU3ltYm9sXG4gICAgICAgICAgcmV0dXJuIFN5bWJvbC5mb3IodmFsdWUuc2xpY2UoMikpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ0YnOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gU2VydmVyIFJlZmVyZW5jZVxuICAgICAgICAgIHZhciBfaWQgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMTYpOyAvLyBUT0RPOiBKdXN0IGVuY29kZSB0aGlzIGluIHRoZSByZWZlcmVuY2UgaW5saW5lIGluc3RlYWQgb2YgYXMgYSBtb2RlbC5cblxuXG4gICAgICAgICAgdmFyIG1ldGFEYXRhID0gZ2V0T3V0bGluZWRNb2RlbChyZXNwb25zZSwgX2lkKTtcbiAgICAgICAgICByZXR1cm4gbG9hZFNlcnZlclJlZmVyZW5jZSQxKHJlc3BvbnNlLCBtZXRhRGF0YS5pZCwgbWV0YURhdGEuYm91bmQsIGluaXRpYWxpemluZ0NodW5rLCBwYXJlbnRPYmplY3QsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnUSc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBNYXBcbiAgICAgICAgICB2YXIgX2lkMiA9IHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAxNik7XG5cbiAgICAgICAgICB2YXIgZGF0YSA9IGdldE91dGxpbmVkTW9kZWwocmVzcG9uc2UsIF9pZDIpO1xuICAgICAgICAgIHJldHVybiBuZXcgTWFwKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ1cnOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gU2V0XG4gICAgICAgICAgdmFyIF9pZDMgPSBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMTYpO1xuXG4gICAgICAgICAgdmFyIF9kYXRhID0gZ2V0T3V0bGluZWRNb2RlbChyZXNwb25zZSwgX2lkMyk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFNldChfZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnSyc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBGb3JtRGF0YVxuICAgICAgICAgIHZhciBzdHJpbmdJZCA9IHZhbHVlLnNsaWNlKDIpO1xuICAgICAgICAgIHZhciBmb3JtUHJlZml4ID0gcmVzcG9uc2UuX3ByZWZpeCArIHN0cmluZ0lkICsgJ18nO1xuXG4gICAgICAgICAgdmFyIF9kYXRhMiA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgdmFyIGJhY2tpbmdGb3JtRGF0YSA9IHJlc3BvbnNlLl9mb3JtRGF0YTsgLy8gV2UgYXNzdW1lIHRoYXQgdGhlIHJlZmVyZW5jZSB0byBGb3JtRGF0YSBhbHdheXMgY29tZXMgYWZ0ZXIgZWFjaFxuICAgICAgICAgIC8vIGVudHJ5IHRoYXQgaXQgcmVmZXJlbmNlcyBzbyB3ZSBjYW4gYXNzdW1lIHRoZXkgYWxsIGV4aXN0IGluIHRoZVxuICAgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgYWxyZWFkeS5cbiAgICAgICAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ10gRm9ybURhdGEgaGFzIGZvckVhY2ggb24gaXQuXG5cbiAgICAgICAgICBiYWNraW5nRm9ybURhdGEuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGVudHJ5S2V5KSB7XG4gICAgICAgICAgICBpZiAoZW50cnlLZXkuc3RhcnRzV2l0aChmb3JtUHJlZml4KSkge1xuICAgICAgICAgICAgICBfZGF0YTIuYXBwZW5kKGVudHJ5S2V5LnNsaWNlKGZvcm1QcmVmaXgubGVuZ3RoKSwgZW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBfZGF0YTI7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnSSc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyAkSW5maW5pdHlcbiAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnLSc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyAkLTAgb3IgJC1JbmZpbml0eVxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJyQtMCcpIHtcbiAgICAgICAgICAgIHJldHVybiAtMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC1JbmZpbml0eTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnTic6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyAkTmFOXG4gICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICd1JzpcbiAgICAgICAge1xuICAgICAgICAgIC8vIG1hdGNoZXMgXCIkdW5kZWZpbmVkXCJcbiAgICAgICAgICAvLyBTcGVjaWFsIGVuY29kaW5nIGZvciBgdW5kZWZpbmVkYCB3aGljaCBjYW4ndCBiZSBzZXJpYWxpemVkIGFzIEpTT04gb3RoZXJ3aXNlLlxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnRCc6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBEYXRlXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUuc2xpY2UoMikpKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICduJzpcbiAgICAgICAge1xuICAgICAgICAgIC8vIEJpZ0ludFxuICAgICAgICAgIHJldHVybiBCaWdJbnQodmFsdWUuc2xpY2UoMikpO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBhbnl0aGluZyBlbHNlIGlzIGEgcmVmZXJlbmNlIElELlxuICAgICAgICAgIHZhciBfaWQ0ID0gcGFyc2VJbnQodmFsdWUuc2xpY2UoMSksIDE2KTtcblxuICAgICAgICAgIHZhciBfY2h1bmsgPSBnZXRDaHVuayhyZXNwb25zZSwgX2lkNCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKF9jaHVuay5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgUkVTT0xWRURfTU9ERUw6XG4gICAgICAgICAgICAgIGluaXRpYWxpemVNb2RlbENodW5rKF9jaHVuayk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gLy8gVGhlIHN0YXR1cyBtaWdodCBoYXZlIGNoYW5nZWQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG5cblxuICAgICAgICAgIHN3aXRjaCAoX2NodW5rLnN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBJTklUSUFMSVpFRDpcbiAgICAgICAgICAgICAgcmV0dXJuIF9jaHVuay52YWx1ZTtcblxuICAgICAgICAgICAgY2FzZSBQRU5ESU5HOlxuICAgICAgICAgICAgY2FzZSBCTE9DS0VEOlxuICAgICAgICAgICAgICB2YXIgcGFyZW50Q2h1bmsgPSBpbml0aWFsaXppbmdDaHVuaztcblxuICAgICAgICAgICAgICBfY2h1bmsudGhlbihjcmVhdGVNb2RlbFJlc29sdmVyKHBhcmVudENodW5rLCBwYXJlbnRPYmplY3QsIGtleSksIGNyZWF0ZU1vZGVsUmVqZWN0KHBhcmVudENodW5rKSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IF9jaHVuay5yZWFzb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXNwb25zZShidW5kbGVyQ29uZmlnLCBmb3JtRmllbGRQcmVmaXgpIHtcbiAgdmFyIGJhY2tpbmdGb3JtRGF0YSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbmV3IEZvcm1EYXRhKCk7XG4gIHZhciBjaHVua3MgPSBuZXcgTWFwKCk7XG4gIHZhciByZXNwb25zZSA9IHtcbiAgICBfYnVuZGxlckNvbmZpZzogYnVuZGxlckNvbmZpZyxcbiAgICBfcHJlZml4OiBmb3JtRmllbGRQcmVmaXgsXG4gICAgX2Zvcm1EYXRhOiBiYWNraW5nRm9ybURhdGEsXG4gICAgX2NodW5rczogY2h1bmtzLFxuICAgIF9mcm9tSlNPTjogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIFdlIGNhbid0IHVzZSAuYmluZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCB0aGUgXCJ0aGlzXCIgdmFsdWUuXG4gICAgICAgIHJldHVybiBwYXJzZU1vZGVsU3RyaW5nKHJlc3BvbnNlLCB0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuZnVuY3Rpb24gY2xvc2UocmVzcG9uc2UpIHtcbiAgLy8gSW4gY2FzZSB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyB1bnJlc29sdmVkIGNodW5rcywgdGhleSB3b24ndFxuICAvLyBiZSByZXNvbHZlZCBub3cuIFNvIHdlIG5lZWQgdG8gaXNzdWUgYW4gZXJyb3IgdG8gdGhvc2UuXG4gIC8vIElkZWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZWFybHkgYmFpbCBvdXQgaWYgd2Uga2VwdCBhXG4gIC8vIHJlZiBjb3VudCBvZiBwZW5kaW5nIGNodW5rcy5cbiAgcmVwb3J0R2xvYmFsRXJyb3IocmVzcG9uc2UsIG5ldyBFcnJvcignQ29ubmVjdGlvbiBjbG9zZWQuJykpO1xufVxuXG5mdW5jdGlvbiBiaW5kQXJncyhmbiwgYXJncykge1xuICByZXR1cm4gZm4uYmluZC5hcHBseShmbiwgW251bGxdLmNvbmNhdChhcmdzKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRTZXJ2ZXJSZWZlcmVuY2UoYnVuZGxlckNvbmZpZywgaWQsIGJvdW5kKSB7XG4gIHZhciBzZXJ2ZXJSZWZlcmVuY2UgPSByZXNvbHZlU2VydmVyUmVmZXJlbmNlKGJ1bmRsZXJDb25maWcsIGlkKTsgLy8gV2UgZXhwZWN0IG1vc3Qgc2VydmVycyB0byBub3QgcmVhbGx5IG5lZWQgdGhpcyBiZWNhdXNlIHlvdSdkIGp1c3QgaGF2ZSBhbGxcbiAgLy8gdGhlIHJlbGV2YW50IG1vZHVsZXMgYWxyZWFkeSBsb2FkZWQgYnV0IGl0IGFsbG93cyBmb3IgbGF6eSBsb2FkaW5nIG9mIGNvZGVcbiAgLy8gaWYgbmVlZGVkLlxuXG4gIHZhciBwcmVsb2FkUHJvbWlzZSA9IHByZWxvYWRNb2R1bGUoc2VydmVyUmVmZXJlbmNlKTtcblxuICBpZiAoYm91bmQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2JvdW5kLCBwcmVsb2FkUHJvbWlzZV0pLnRoZW4oZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBhcmdzID0gX3JlZlswXTtcbiAgICAgIHJldHVybiBiaW5kQXJncyhyZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSksIGFyZ3MpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHByZWxvYWRQcm9taXNlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwcmVsb2FkUHJvbWlzZSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVxdWlyZU1vZHVsZShzZXJ2ZXJSZWZlcmVuY2UpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIFN5bmNocm9ub3VzbHkgYXZhaWxhYmxlXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXF1aXJlTW9kdWxlKHNlcnZlclJlZmVyZW5jZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlY29kZUJvdW5kQWN0aW9uTWV0YURhdGEoYm9keSwgc2VydmVyTWFuaWZlc3QsIGZvcm1GaWVsZFByZWZpeCkge1xuICAvLyBUaGUgZGF0YSBmb3IgdGhpcyByZWZlcmVuY2UgaXMgZW5jb2RlZCBpbiBtdWx0aXBsZSBmaWVsZHMgdW5kZXIgdGhpcyBwcmVmaXguXG4gIHZhciBhY3Rpb25SZXNwb25zZSA9IGNyZWF0ZVJlc3BvbnNlKHNlcnZlck1hbmlmZXN0LCBmb3JtRmllbGRQcmVmaXgsIGJvZHkpO1xuICBjbG9zZShhY3Rpb25SZXNwb25zZSk7XG4gIHZhciByZWZQcm9taXNlID0gZ2V0Um9vdChhY3Rpb25SZXNwb25zZSk7IC8vIEZvcmNlIGl0IHRvIGluaXRpYWxpemVcbiAgLy8gJEZsb3dGaXhNZVxuXG4gIHJlZlByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7fSk7XG5cbiAgaWYgKHJlZlByb21pc2Uuc3RhdHVzICE9PSAnZnVsZmlsbGVkJykge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICB0aHJvdyByZWZQcm9taXNlLnJlYXNvbjtcbiAgfVxuXG4gIHJldHVybiByZWZQcm9taXNlLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVBY3Rpb24oYm9keSwgc2VydmVyTWFuaWZlc3QpIHtcbiAgLy8gV2UncmUgZ29pbmcgdG8gY3JlYXRlIGEgbmV3IGZvcm1EYXRhIG9iamVjdCB0aGF0IGhvbGRzIGFsbCB0aGUgZmllbGRzIGV4Y2VwdFxuICAvLyB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgYWN0aW9uIGRhdGEuXG4gIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICB2YXIgYWN0aW9uID0gbnVsbDsgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cbiAgYm9keS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnJEFDVElPTl8nKSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gTGF0ZXIgYWN0aW9ucyBtYXkgb3ZlcnJpZGUgZWFybGllciBhY3Rpb25zIGlmIGEgYnV0dG9uIGlzIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRcbiAgICAvLyBmb3JtIGFjdGlvbi5cblxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCckQUNUSU9OX1JFRl8nKSkge1xuICAgICAgdmFyIGZvcm1GaWVsZFByZWZpeCA9ICckQUNUSU9OXycgKyBrZXkuc2xpY2UoMTIpICsgJzonO1xuICAgICAgdmFyIG1ldGFEYXRhID0gZGVjb2RlQm91bmRBY3Rpb25NZXRhRGF0YShib2R5LCBzZXJ2ZXJNYW5pZmVzdCwgZm9ybUZpZWxkUHJlZml4KTtcbiAgICAgIGFjdGlvbiA9IGxvYWRTZXJ2ZXJSZWZlcmVuY2Uoc2VydmVyTWFuaWZlc3QsIG1ldGFEYXRhLmlkLCBtZXRhRGF0YS5ib3VuZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCckQUNUSU9OX0lEXycpKSB7XG4gICAgICB2YXIgaWQgPSBrZXkuc2xpY2UoMTEpO1xuICAgICAgYWN0aW9uID0gbG9hZFNlcnZlclJlZmVyZW5jZShzZXJ2ZXJNYW5pZmVzdCwgaWQsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGFjdGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIFJldHVybiB0aGUgYWN0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBGb3JtRGF0YSBib3VuZCB0byB0aGUgZmlyc3QgYXJndW1lbnQuXG5cblxuICByZXR1cm4gYWN0aW9uLnRoZW4oZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIGZuLmJpbmQobnVsbCwgZm9ybURhdGEpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGRlY29kZUZvcm1TdGF0ZShhY3Rpb25SZXN1bHQsIGJvZHksIHNlcnZlck1hbmlmZXN0KSB7XG4gIHZhciBrZXlQYXRoID0gYm9keS5nZXQoJyRBQ1RJT05fS0VZJyk7XG5cbiAgaWYgKHR5cGVvZiBrZXlQYXRoICE9PSAnc3RyaW5nJykge1xuICAgIC8vIFRoaXMgZm9ybSBzdWJtaXNzaW9uIGRpZCBub3QgaW5jbHVkZSBhbnkgZm9ybSBzdGF0ZS5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICB9IC8vIFNlYXJjaCB0aHJvdWdoIHRoZSBmb3JtIGRhdGEgb2JqZWN0IHRvIGdldCB0aGUgcmVmZXJlbmNlIGlkIGFuZCB0aGUgbnVtYmVyXG4gIC8vIG9mIGJvdW5kIGFyZ3VtZW50cy4gVGhpcyByZXBlYXRzIHNvbWUgb2YgdGhlIHdvcmsgZG9uZSBpbiBkZWNvZGVBY3Rpb24uXG5cblxuICB2YXIgbWV0YURhdGEgPSBudWxsOyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cblxuICBib2R5LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJyRBQ1RJT05fUkVGXycpKSB7XG4gICAgICB2YXIgZm9ybUZpZWxkUHJlZml4ID0gJyRBQ1RJT05fJyArIGtleS5zbGljZSgxMikgKyAnOic7XG4gICAgICBtZXRhRGF0YSA9IGRlY29kZUJvdW5kQWN0aW9uTWV0YURhdGEoYm9keSwgc2VydmVyTWFuaWZlc3QsIGZvcm1GaWVsZFByZWZpeCk7XG4gICAgfSAvLyBXZSBkb24ndCBjaGVjayBmb3IgdGhlIHNpbXBsZSAkQUNUSU9OX0lEXyBjYXNlIGJlY2F1c2UgZm9ybSBzdGF0ZSBhY3Rpb25zXG4gICAgLy8gYXJlIGFsd2F5cyBib3VuZCB0byB0aGUgc3RhdGUgYXJndW1lbnQuXG5cbiAgfSk7XG5cbiAgaWYgKG1ldGFEYXRhID09PSBudWxsKSB7XG4gICAgLy8gU2hvdWxkIGJlIHVucmVhY2hhYmxlLlxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gIH1cblxuICB2YXIgcmVmZXJlbmNlSWQgPSBtZXRhRGF0YS5pZDtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtZXRhRGF0YS5ib3VuZCkudGhlbihmdW5jdGlvbiAoYm91bmQpIHtcbiAgICBpZiAoYm91bmQgPT09IG51bGwpIHtcbiAgICAgIC8vIFNob3VsZCBiZSB1bnJlYWNoYWJsZSBiZWNhdXNlIGZvcm0gc3RhdGUgYWN0aW9ucyBhcmUgYWx3YXlzIGJvdW5kIHRvIHRoZVxuICAgICAgLy8gc3RhdGUgYXJndW1lbnQuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIFRoZSBmb3JtIGFjdGlvbiBkaXNwYXRjaCBtZXRob2QgaXMgYWx3YXlzIGJvdW5kIHRvIHRoZSBpbml0aWFsIHN0YXRlLlxuICAgIC8vIEJ1dCB3aGVuIGNvbXBhcmluZyBzaWduYXR1cmVzLCB3ZSBjb21wYXJlIHRvIHRoZSBvcmlnaW5hbCB1bmJvdW5kIGFjdGlvbi5cbiAgICAvLyBTdWJ0cmFjdCBvbmUgZnJvbSB0aGUgYXJpdHkgdG8gYWNjb3VudCBmb3IgdGhpcy5cblxuXG4gICAgdmFyIGJvdW5kQXJpdHkgPSBib3VuZC5sZW5ndGggLSAxO1xuICAgIHJldHVybiBbYWN0aW9uUmVzdWx0LCBrZXlQYXRoLCByZWZlcmVuY2VJZCwgYm91bmRBcml0eV07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW5kZXJUb1JlYWRhYmxlU3RyZWFtKG1vZGVsLCB3ZWJwYWNrTWFwLCBvcHRpb25zKSB7XG4gIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdChtb2RlbCwgd2VicGFja01hcCwgb3B0aW9ucyA/IG9wdGlvbnMub25FcnJvciA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMuY29udGV4dCA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMuaWRlbnRpZmllclByZWZpeCA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMub25Qb3N0cG9uZSA6IHVuZGVmaW5lZCk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaWduYWwpIHtcbiAgICB2YXIgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XG5cbiAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIGFib3J0KHJlcXVlc3QsIHNpZ25hbC5yZWFzb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFib3J0KHJlcXVlc3QsIHNpZ25hbC5yZWFzb24pO1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcik7XG4gICAgICB9O1xuXG4gICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgdHlwZTogJ2J5dGVzJyxcbiAgICBzdGFydDogZnVuY3Rpb24gKGNvbnRyb2xsZXIpIHtcbiAgICAgIHN0YXJ0V29yayhyZXF1ZXN0KTtcbiAgICB9LFxuICAgIHB1bGw6IGZ1bmN0aW9uIChjb250cm9sbGVyKSB7XG4gICAgICBzdGFydEZsb3dpbmcocmVxdWVzdCwgY29udHJvbGxlcik7XG4gICAgfSxcbiAgICBjYW5jZWw6IGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgIHN0b3BGbG93aW5nKHJlcXVlc3QpO1xuICAgICAgYWJvcnQocmVxdWVzdCwgcmVhc29uKTtcbiAgICB9XG4gIH0sIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXSBzaXplKCkgbWV0aG9kcyBhcmUgbm90IGFsbG93ZWQgb24gYnl0ZSBzdHJlYW1zLlxuICB7XG4gICAgaGlnaFdhdGVyTWFyazogMFxuICB9KTtcbiAgcmV0dXJuIHN0cmVhbTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlUmVwbHkoYm9keSwgd2VicGFja01hcCkge1xuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtLmFwcGVuZCgnMCcsIGJvZHkpO1xuICAgIGJvZHkgPSBmb3JtO1xuICB9XG5cbiAgdmFyIHJlc3BvbnNlID0gY3JlYXRlUmVzcG9uc2Uod2VicGFja01hcCwgJycsIGJvZHkpO1xuICB2YXIgcm9vdCA9IGdldFJvb3QocmVzcG9uc2UpO1xuICBjbG9zZShyZXNwb25zZSk7XG4gIHJldHVybiByb290O1xufVxuXG5leHBvcnRzLmNyZWF0ZUNsaWVudE1vZHVsZVByb3h5ID0gY3JlYXRlQ2xpZW50TW9kdWxlUHJveHk7XG5leHBvcnRzLmRlY29kZUFjdGlvbiA9IGRlY29kZUFjdGlvbjtcbmV4cG9ydHMuZGVjb2RlRm9ybVN0YXRlID0gZGVjb2RlRm9ybVN0YXRlO1xuZXhwb3J0cy5kZWNvZGVSZXBseSA9IGRlY29kZVJlcGx5O1xuZXhwb3J0cy5yZWdpc3RlckNsaWVudFJlZmVyZW5jZSA9IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlO1xuZXhwb3J0cy5yZWdpc3RlclNlcnZlclJlZmVyZW5jZSA9IHJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlO1xuZXhwb3J0cy5yZW5kZXJUb1JlYWRhYmxlU3RyZWFtID0gcmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiUmVhY3QiLCJyZXF1aXJlIiwiUmVhY3RET00iLCJSZWFjdFNoYXJlZEludGVybmFscyIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiZXJyb3IiLCJmb3JtYXQiLCJfbGVuMiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkyIiwicHJpbnRXYXJuaW5nIiwibGV2ZWwiLCJSZWFjdERlYnVnQ3VycmVudEZyYW1lIiwic3RhY2siLCJnZXRTdGFja0FkZGVuZHVtIiwiY29uY2F0IiwiYXJnc1dpdGhGb3JtYXQiLCJtYXAiLCJpdGVtIiwiU3RyaW5nIiwidW5zaGlmdCIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiYXBwbHkiLCJjYWxsIiwiY29uc29sZSIsImVuYWJsZVBvc3Rwb25lIiwic2NoZWR1bGVXb3JrIiwiY2FsbGJhY2siLCJzZXRUaW1lb3V0IiwiVklFV19TSVpFIiwiY3VycmVudFZpZXciLCJ3cml0dGVuQnl0ZXMiLCJiZWdpbldyaXRpbmciLCJkZXN0aW5hdGlvbiIsIlVpbnQ4QXJyYXkiLCJ3cml0ZUNodW5rIiwiY2h1bmsiLCJieXRlTGVuZ3RoIiwicHJlY29tcHV0ZWRDaHVua1NldCIsImhhcyIsImVucXVldWUiLCJidWZmZXIiLCJieXRlc1RvV3JpdGUiLCJhbGxvd2FibGVCeXRlcyIsInNldCIsInN1YmFycmF5Iiwid3JpdGVDaHVua0FuZFJldHVybiIsImNvbXBsZXRlV3JpdGluZyIsImNsb3NlJDEiLCJjbG9zZSIsInRleHRFbmNvZGVyIiwiVGV4dEVuY29kZXIiLCJzdHJpbmdUb0NodW5rIiwiY29udGVudCIsImVuY29kZSIsIlNldCIsImJ5dGVMZW5ndGhPZkNodW5rIiwiY2xvc2VXaXRoRXJyb3IiLCJDTElFTlRfUkVGRVJFTkNFX1RBRyIsIlN5bWJvbCIsImZvciIsIlNFUlZFUl9SRUZFUkVOQ0VfVEFHIiwiaXNDbGllbnRSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCIkJHR5cGVvZiIsImlzU2VydmVyUmVmZXJlbmNlIiwicmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UiLCJwcm94eUltcGxlbWVudGF0aW9uIiwiaWQiLCJleHBvcnROYW1lIiwicmVnaXN0ZXJDbGllbnRSZWZlcmVuY2VJbXBsIiwiYXN5bmMiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCIkJGlkIiwiJCRhc3luYyIsIkZ1bmN0aW9uQmluZCIsImJpbmQiLCJBcnJheVNsaWNlIiwic2xpY2UiLCJuZXdGbiIsIiQkYm91bmQiLCJyZWdpc3RlclNlcnZlclJlZmVyZW5jZSIsIlBST01JU0VfUFJPVE9UWVBFIiwiUHJvbWlzZSIsImRlZXBQcm94eUhhbmRsZXJzIiwiZ2V0IiwidGFyZ2V0IiwibmFtZSIsInJlY2VpdmVyIiwidW5kZWZpbmVkIiwidG9QcmltaXRpdmUiLCJFcnJvciIsImV4cHJlc3Npb24iLCJnZXRSZWZlcmVuY2UiLCJtb2R1bGVJZCIsImRlZmF1bHQiLCJ0aGVuIiwiY2xpZW50UmVmZXJlbmNlIiwicHJveHkiLCJQcm94eSIsInByb3h5SGFuZGxlcnMiLCJzdGF0dXMiLCJyZXNvbHZlIiwicmVqZWN0IiwiY2FjaGVkUmVmZXJlbmNlIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjcmlwdG9yIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0UHJvdG90eXBlT2YiLCJjcmVhdGVDbGllbnRNb2R1bGVQcm94eSIsImdldENsaWVudFJlZmVyZW5jZUtleSIsInJlc29sdmVDbGllbnRSZWZlcmVuY2VNZXRhZGF0YSIsImNvbmZpZyIsIm1vZHVsZVBhdGgiLCJyZXNvbHZlZE1vZHVsZURhdGEiLCJpZHgiLCJsYXN0SW5kZXhPZiIsImNodW5rcyIsImdldFNlcnZlclJlZmVyZW5jZUlkIiwic2VydmVyUmVmZXJlbmNlIiwiZ2V0U2VydmVyUmVmZXJlbmNlQm91bmRBcmd1bWVudHMiLCJSZWFjdERPTVNoYXJlZEludGVybmFscyIsIlJlYWN0RE9NRmxpZ2h0U2VydmVyRGlzcGF0Y2hlciIsInByZWZldGNoRE5TIiwicHJlY29ubmVjdCIsInByZWxvYWQiLCJwcmVsb2FkTW9kdWxlIiwicHJlbG9hZE1vZHVsZSQxIiwicHJlaW5pdFN0eWxlIiwicHJlaW5pdFNjcmlwdCIsInByZWluaXRNb2R1bGVTY3JpcHQiLCJocmVmIiwicmVxdWVzdCIsInJlc29sdmVSZXF1ZXN0IiwiaGludHMiLCJnZXRIaW50cyIsImtleSIsImFkZCIsImVtaXRIaW50IiwiY3Jvc3NPcmlnaW4iLCJhcyIsIm9wdGlvbnMiLCJnZXRJbWFnZVByZWxvYWRLZXkiLCJpbWFnZVNyY1NldCIsImltYWdlU2l6ZXMiLCJ0cmltbWVkIiwidHJpbU9wdGlvbnMiLCJwcmVjZWRlbmNlIiwiaGFzUHJvcGVydGllcyIsInVuaXF1ZVBhcnQiLCJSZWFjdERPTUN1cnJlbnREaXNwYXRjaGVyIiwiRGlzcGF0Y2hlciIsInByZXBhcmVIb3N0RGlzcGF0Y2hlciIsImN1cnJlbnQiLCJjcmVhdGVIaW50cyIsInN1cHBvcnRzUmVxdWVzdFN0b3JhZ2UiLCJBc3luY0xvY2FsU3RvcmFnZSIsInJlcXVlc3RTdG9yYWdlIiwiYXN5bmNfaG9va3MiLCJjcmVhdGVIb29rIiwiZW5hYmxlIiwiZGlzYWJsZSIsImV4ZWN1dGlvbkFzeW5jSWQiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJSRUFDVF9GUkFHTUVOVF9UWVBFIiwiUkVBQ1RfU0VSVkVSX0NPTlRFWFRfVFlQRSIsIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCJSRUFDVF9TVVNQRU5TRV9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIiwiUkVBQ1RfTUVNT19UWVBFIiwiUkVBQ1RfTEFaWV9UWVBFIiwiUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTCIsIlJFQUNUX1BPU1RQT05FX1RZUEUiLCJNQVlCRV9JVEVSQVRPUl9TWU1CT0wiLCJpdGVyYXRvciIsIkZBVVhfSVRFUkFUT1JfU1lNQk9MIiwiZ2V0SXRlcmF0b3JGbiIsIm1heWJlSXRlcmFibGUiLCJtYXliZUl0ZXJhdG9yIiwicm9vdENvbnRleHRTbmFwc2hvdCIsImN1cnJlbnRBY3RpdmVTbmFwc2hvdCIsInBvcE5vZGUiLCJwcmV2IiwiY29udGV4dCIsIl9jdXJyZW50VmFsdWUiLCJwYXJlbnRWYWx1ZSIsInB1c2hOb2RlIiwibmV4dCIsInBvcFRvTmVhcmVzdENvbW1vbkFuY2VzdG9yIiwicGFyZW50UHJldiIsInBhcmVudCIsInBhcmVudE5leHQiLCJwb3BBbGxQcmV2aW91cyIsInB1c2hBbGxOZXh0IiwicG9wUHJldmlvdXNUb0NvbW1vbkxldmVsIiwiZGVwdGgiLCJwb3BOZXh0VG9Db21tb25MZXZlbCIsInN3aXRjaENvbnRleHQiLCJuZXdTbmFwc2hvdCIsImdldEFjdGl2ZUNvbnRleHQiLCJyZWFkQ29udGV4dCQxIiwiU3VzcGVuc2VFeGNlcHRpb24iLCJjcmVhdGVUaGVuYWJsZVN0YXRlIiwibm9vcCIsInRyYWNrVXNlZFRoZW5hYmxlIiwidGhlbmFibGVTdGF0ZSIsInRoZW5hYmxlIiwiaW5kZXgiLCJwcmV2aW91cyIsInB1c2giLCJmdWxmaWxsZWRWYWx1ZSIsInJlamVjdGVkRXJyb3IiLCJyZWFzb24iLCJwZW5kaW5nVGhlbmFibGUiLCJmdWxmaWxsZWRUaGVuYWJsZSIsInJlamVjdGVkVGhlbmFibGUiLCJzdXNwZW5kZWRUaGVuYWJsZSIsImdldFN1c3BlbmRlZFRoZW5hYmxlIiwiY3VycmVudFJlcXVlc3QkMSIsInRoZW5hYmxlSW5kZXhDb3VudGVyIiwicHJlcGFyZVRvVXNlSG9va3NGb3JSZXF1ZXN0IiwicmVzZXRIb29rc0ZvclJlcXVlc3QiLCJwcmVwYXJlVG9Vc2VIb29rc0ZvckNvbXBvbmVudCIsInByZXZUaGVuYWJsZVN0YXRlIiwiZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZyIsInN0YXRlIiwicmVhZENvbnRleHQiLCJIb29rc0Rpc3BhdGNoZXIiLCJ1c2VNZW1vIiwibmV4dENyZWF0ZSIsInVzZUNhbGxiYWNrIiwidXNlRGVidWdWYWx1ZSIsInVzZURlZmVycmVkVmFsdWUiLCJ1bnN1cHBvcnRlZEhvb2siLCJ1c2VUcmFuc2l0aW9uIiwidXNlQ29udGV4dCIsInVzZVJlZHVjZXIiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUluc2VydGlvbkVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwidXNlQ2FjaGVSZWZyZXNoIiwidW5zdXBwb3J0ZWRSZWZyZXNoIiwidXNlTWVtb0NhY2hlIiwic2l6ZSIsImRhdGEiLCJpIiwidXNlIiwiaWRlbnRpZmllckNvdW50IiwiaWRlbnRpZmllclByZWZpeCIsInRvU3RyaW5nIiwidXNhYmxlIiwiY3JlYXRlU2lnbmFsIiwiQWJvcnRDb250cm9sbGVyIiwic2lnbmFsIiwicmVzb2x2ZUNhY2hlIiwiZ2V0Q2FjaGUiLCJNYXAiLCJEZWZhdWx0Q2FjaGVEaXNwYXRjaGVyIiwiZ2V0Q2FjaGVTaWduYWwiLCJjYWNoZSIsImVudHJ5IiwiZ2V0Q2FjaGVGb3JUeXBlIiwicmVzb3VyY2VUeXBlIiwiaXNBcnJheUltcGwiLCJpc0FycmF5IiwiYSIsImpzeFByb3BzUGFyZW50cyIsIldlYWtNYXAiLCJqc3hDaGlsZHJlblBhcmVudHMiLCJpc09iamVjdFByb3RvdHlwZSIsIm9iamVjdCIsIk9iamVjdFByb3RvdHlwZSIsIm5hbWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImlzU2ltcGxlT2JqZWN0Iiwib2JqZWN0TmFtZSIsInJlcGxhY2UiLCJtIiwicDAiLCJkZXNjcmliZUtleUZvckVycm9yTWVzc2FnZSIsImVuY29kZWRLZXkiLCJKU09OIiwic3RyaW5naWZ5IiwiZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZSIsImRlc2NyaWJlRWxlbWVudFR5cGUiLCJ0eXBlIiwicmVuZGVyIiwibGF6eUNvbXBvbmVudCIsInBheWxvYWQiLCJfcGF5bG9hZCIsImluaXQiLCJfaW5pdCIsIngiLCJkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZSIsIm9iamVjdE9yQXJyYXkiLCJleHBhbmRlZE5hbWUiLCJvYmpLaW5kIiwic3RyIiwic3RhcnQiLCJhcnJheSIsInN1YnN0ciIsIl9hcnJheSIsIl9pIiwiX3ZhbHVlIiwiX3N1YnN0ciIsIl90eXBlIiwia2V5cyIsIl9pMiIsIl92YWx1ZTIiLCJfc3Vic3RyMiIsIl9vYmplY3QiLCJfbmFtZXMiLCJfaTMiLCJfbmFtZSIsIl92YWx1ZTMiLCJfc3Vic3RyMyIsImhpZ2hsaWdodCIsInJlcGVhdCIsIlJlYWN0U2hhcmVkU2VydmVySW50ZXJuYWxzIiwiX19TRUNSRVRfU0VSVkVSX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUEVORElORyQxIiwiQ09NUExFVEVEIiwiQUJPUlRFRCIsIkVSUk9SRUQkMSIsIlJlYWN0Q3VycmVudENhY2hlIiwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIsImRlZmF1bHRFcnJvckhhbmRsZXIiLCJkZWZhdWx0UG9zdHBvbmVIYW5kbGVyIiwiT1BFTiIsIkNMT1NJTkciLCJDTE9TRUQiLCJjcmVhdGVSZXF1ZXN0IiwibW9kZWwiLCJidW5kbGVyQ29uZmlnIiwib25FcnJvciIsIm9uUG9zdHBvbmUiLCJhYm9ydFNldCIsInBpbmdlZFRhc2tzIiwiY2xlYW51cFF1ZXVlIiwiZmx1c2hTY2hlZHVsZWQiLCJmYXRhbEVycm9yIiwibmV4dENodW5rSWQiLCJwZW5kaW5nQ2h1bmtzIiwiYWJvcnRhYmxlVGFza3MiLCJjb21wbGV0ZWRJbXBvcnRDaHVua3MiLCJjb21wbGV0ZWRIaW50Q2h1bmtzIiwiY29tcGxldGVkUmVndWxhckNodW5rcyIsImNvbXBsZXRlZEVycm9yQ2h1bmtzIiwid3JpdHRlblN5bWJvbHMiLCJ3cml0dGVuQ2xpZW50UmVmZXJlbmNlcyIsIndyaXR0ZW5TZXJ2ZXJSZWZlcmVuY2VzIiwid3JpdHRlblByb3ZpZGVycyIsIndyaXR0ZW5PYmplY3RzIiwidGFpbnRDbGVhbnVwUXVldWUiLCJ0b0pTT04iLCJyZXNvbHZlTW9kZWxUb0pTT04iLCJyb290Q29udGV4dCIsImNyZWF0ZVJvb3RDb250ZXh0Iiwicm9vdFRhc2siLCJjcmVhdGVUYXNrIiwiY3VycmVudFJlcXVlc3QiLCJzdG9yZSIsImdldFN0b3JlIiwicmVxQ29udGV4dCIsImltcG9ydFNlcnZlckNvbnRleHRzIiwic2VyaWFsaXplVGhlbmFibGUiLCJuZXdUYXNrIiwicGluZ1Rhc2siLCJkaWdlc3QiLCJsb2dSZWNvdmVyYWJsZUVycm9yIiwiZW1pdEVycm9yQ2h1bmsiLCJfZGlnZXN0IiwiZGVsZXRlIiwiZmx1c2hDb21wbGV0ZWRDaHVua3MiLCJjb2RlIiwiZW1pdEhpbnRDaHVuayIsImVucXVldWVGbHVzaCIsInJlYWRUaGVuYWJsZSIsImNyZWF0ZUxhenlXcmFwcGVyQXJvdW5kV2FrZWFibGUiLCJ3YWtlYWJsZSIsImxhenlUeXBlIiwiYXR0ZW1wdFJlc29sdmVFbGVtZW50IiwicmVmIiwicHJvcHMiLCJjaGlsZHJlbiIsInJlc3VsdCIsIndyYXBwZWRUeXBlIiwidGFzayIsInBlcmZvcm1Xb3JrIiwicGluZyIsInNlcmlhbGl6ZUJ5VmFsdWVJRCIsInNlcmlhbGl6ZUxhenlJRCIsInNlcmlhbGl6ZVByb21pc2VJRCIsInNlcmlhbGl6ZVNlcnZlclJlZmVyZW5jZUlEIiwic2VyaWFsaXplU3ltYm9sUmVmZXJlbmNlIiwic2VyaWFsaXplTnVtYmVyIiwibnVtYmVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJJbmZpbml0eSIsInNlcmlhbGl6ZVVuZGVmaW5lZCIsInNlcmlhbGl6ZURhdGVGcm9tRGF0ZUpTT04iLCJkYXRlSlNPTiIsInNlcmlhbGl6ZUJpZ0ludCIsIm4iLCJzZXJpYWxpemVSb3dIZWFkZXIiLCJ0YWciLCJlbmNvZGVSZWZlcmVuY2VDaHVuayIsImpzb24iLCJyb3ciLCJzZXJpYWxpemVDbGllbnRSZWZlcmVuY2UiLCJjbGllbnRSZWZlcmVuY2VLZXkiLCJleGlzdGluZ0lkIiwiY2xpZW50UmVmZXJlbmNlTWV0YWRhdGEiLCJpbXBvcnRJZCIsImVtaXRJbXBvcnRDaHVuayIsImVycm9ySWQiLCJvdXRsaW5lTW9kZWwiLCJyZXRyeVRhc2siLCJzZXJpYWxpemVTZXJ2ZXJSZWZlcmVuY2UiLCJib3VuZCIsInNlcnZlclJlZmVyZW5jZU1ldGFkYXRhIiwibWV0YWRhdGFJZCIsInNlcmlhbGl6ZUxhcmdlVGV4dFN0cmluZyIsInRleHQiLCJ0ZXh0SWQiLCJ0ZXh0Q2h1bmsiLCJiaW5hcnlMZW5ndGgiLCJoZWFkZXJDaHVuayIsInNlcmlhbGl6ZU1hcCIsImVudHJpZXMiLCJmcm9tIiwic2VyaWFsaXplU2V0IiwiZXNjYXBlU3RyaW5nVmFsdWUiLCJtb2RlbFJvb3QiLCJvcmlnaW5hbFZhbHVlIiwiRGF0ZSIsImpzeFBhcmVudFR5cGUiLCJuZXdJZCIsImVsZW1lbnQiLCJ0aHJvd25WYWx1ZSIsIl93cml0dGVuT2JqZWN0cyIsIl9leGlzdGluZ0lkIiwicHJvbWlzZUlkIiwiX25ld0lkIiwiaXRlcmF0b3JGbiIsInByb3RvIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImRlc2NyaXB0aW9uIiwiX29yaWdpbmFsVmFsdWUiLCJ0ZXN0IiwiX2V4aXN0aW5nSWQyIiwic3ltYm9sSWQiLCJlbWl0U3ltYm9sQ2h1bmsiLCJsb2dQb3N0cG9uZSIsImVycm9yRGlnZXN0IiwiZW1pdFBvc3Rwb25lQ2h1bmsiLCJwb3N0cG9uZUluc3RhbmNlIiwibWVzc2FnZSIsInByb2Nlc3NlZENodW5rIiwiZXJyb3JJbmZvIiwic3ltYm9sUmVmZXJlbmNlIiwiZW1pdE1vZGVsQ2h1bmsiLCJuZXh0RWxlbWVudCIsInByZXZEaXNwYXRjaGVyIiwicHJldlJlcXVlc3QiLCJhYm9ydFRhc2siLCJpbXBvcnRzQ2h1bmtzIiwia2VlcFdyaXRpbmciLCJzcGxpY2UiLCJoaW50Q2h1bmtzIiwiX2NodW5rIiwiX2tlZXBXcml0aW5nIiwicmVndWxhckNodW5rcyIsIl9jaHVuazIiLCJfa2VlcFdyaXRpbmcyIiwiZXJyb3JDaHVua3MiLCJfY2h1bmszIiwiX2tlZXBXcml0aW5nMyIsInN0YXJ0V29yayIsInJ1biIsInN0YXJ0Rmxvd2luZyIsInN0b3BGbG93aW5nIiwiYWJvcnQiLCJmb3JFYWNoIiwiY2xlYXIiLCJjb250ZXh0cyIsIklEIiwiQ0hVTktTIiwiTkFNRSIsImlzQXN5bmNJbXBvcnQiLCJtZXRhZGF0YSIsInJlc29sdmVTZXJ2ZXJSZWZlcmVuY2UiLCJjaHVua0NhY2hlIiwicmVxdWlyZUFzeW5jTW9kdWxlIiwicHJvbWlzZSIsImdsb2JhbFRoaXMiLCJfX25leHRfcmVxdWlyZV9fIiwiaWdub3JlUmVqZWN0IiwicHJvbWlzZXMiLCJjaHVua0lkIiwibG9hZENodW5rIiwiYWxsIiwicmVxdWlyZU1vZHVsZSIsIm1vZHVsZUV4cG9ydHMiLCJfX2VzTW9kdWxlIiwiZmlsZW5hbWUiLCJfX3dlYnBhY2tfY2h1bmtfbG9hZF9fIiwiUEVORElORyIsIkJMT0NLRUQiLCJSRVNPTFZFRF9NT0RFTCIsIklOSVRJQUxJWkVEIiwiRVJST1JFRCIsIkNodW5rIiwicmVzcG9uc2UiLCJfcmVzcG9uc2UiLCJjcmVhdGUiLCJpbml0aWFsaXplTW9kZWxDaHVuayIsImdldFJvb3QiLCJnZXRDaHVuayIsImNyZWF0ZVBlbmRpbmdDaHVuayIsIndha2VDaHVuayIsImxpc3RlbmVycyIsImxpc3RlbmVyIiwidHJpZ2dlckVycm9yT25DaHVuayIsImVycm9yZWRDaHVuayIsImNyZWF0ZVJlc29sdmVkTW9kZWxDaHVuayIsImJpbmRBcmdzJDEiLCJmbiIsImxvYWRTZXJ2ZXJSZWZlcmVuY2UkMSIsInBhcmVudENodW5rIiwicGFyZW50T2JqZWN0IiwiX2J1bmRsZXJDb25maWciLCJwcmVsb2FkUHJvbWlzZSIsIl9yZWYiLCJjcmVhdGVNb2RlbFJlc29sdmVyIiwiY3JlYXRlTW9kZWxSZWplY3QiLCJpbml0aWFsaXppbmdDaHVuayIsImluaXRpYWxpemluZ0NodW5rQmxvY2tlZE1vZGVsIiwicHJldkNodW5rIiwicHJldkJsb2NrZWQiLCJwYXJzZSIsIl9mcm9tSlNPTiIsImRlcHMiLCJibG9ja2VkQ2h1bmsiLCJpbml0aWFsaXplZENodW5rIiwicmVwb3J0R2xvYmFsRXJyb3IiLCJfY2h1bmtzIiwicHJlZml4IiwiX3ByZWZpeCIsImJhY2tpbmdFbnRyeSIsIl9mb3JtRGF0YSIsImJsb2NrZWQiLCJyZXNvbHZlTGlzdGVuZXJzIiwiZ2V0T3V0bGluZWRNb2RlbCIsInBhcnNlTW9kZWxTdHJpbmciLCJwYXJzZUludCIsIl9pZCIsIm1ldGFEYXRhIiwiX2lkMiIsIl9pZDMiLCJfZGF0YSIsInN0cmluZ0lkIiwiZm9ybVByZWZpeCIsIl9kYXRhMiIsIkZvcm1EYXRhIiwiYmFja2luZ0Zvcm1EYXRhIiwiZW50cnlLZXkiLCJzdGFydHNXaXRoIiwiYXBwZW5kIiwiTmFOIiwiQmlnSW50IiwiX2lkNCIsImNyZWF0ZVJlc3BvbnNlIiwiZm9ybUZpZWxkUHJlZml4IiwiYmluZEFyZ3MiLCJsb2FkU2VydmVyUmVmZXJlbmNlIiwiZGVjb2RlQm91bmRBY3Rpb25NZXRhRGF0YSIsImJvZHkiLCJzZXJ2ZXJNYW5pZmVzdCIsImFjdGlvblJlc3BvbnNlIiwicmVmUHJvbWlzZSIsImRlY29kZUFjdGlvbiIsImZvcm1EYXRhIiwiYWN0aW9uIiwiZGVjb2RlRm9ybVN0YXRlIiwiYWN0aW9uUmVzdWx0Iiwia2V5UGF0aCIsInJlZmVyZW5jZUlkIiwiYm91bmRBcml0eSIsInJlbmRlclRvUmVhZGFibGVTdHJlYW0iLCJ3ZWJwYWNrTWFwIiwiYWJvcnRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwic3RyZWFtIiwiUmVhZGFibGVTdHJlYW0iLCJjb250cm9sbGVyIiwicHVsbCIsImNhbmNlbCIsImhpZ2hXYXRlck1hcmsiLCJkZWNvZGVSZXBseSIsImZvcm0iLCJyb290IiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js":
/*!*********************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js ***!
\*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-server-dom-webpack-server.edge.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXNlcnZlci1kb20td2VicGFjay9zZXJ2ZXIuZWRnZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUVBLElBQUlBLEtBQXlCLEVBQWMsRUFFMUMsTUFBTTtJQUNMQyxpT0FBeUI7QUFDM0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svc2VydmVyLmVkZ2UuanM/ODdlYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrLXNlcnZlci5lZGdlLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LXNlcnZlci1kb20td2VicGFjay1zZXJ2ZXIuZWRnZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxdWlyZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react/cjs/react.development.js":
/*!************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react/cjs/react.development.js ***!
\************************************************************************/
/***/ ((module, exports, __webpack_require__) => {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * @license React\n * react.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 */ \nif (true) {\n (function() {\n \"use strict\";\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n }\n var ReactVersion = \"18.3.0-canary-60a927d04-20240113\";\n // ATTENTION\n // When adding new symbols to this file,\n // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n // The Symbol used to tag the ReactElement-like types.\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n var REACT_CACHE_TYPE = Symbol.for(\"react.cache\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === \"function\") {\n return maybeIterator;\n }\n return null;\n }\n /**\n * Keeps track of the current dispatcher.\n */ var ReactCurrentDispatcher$1 = {\n current: null\n };\n /**\n * Keeps track of the current Cache dispatcher.\n */ var ReactCurrentCache = {\n current: null\n };\n /**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */ var ReactCurrentBatchConfig = {\n transition: null\n };\n var ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false,\n // Tracks whether something called `use` during the current batch of work.\n // Determines whether we should yield to microtasks to unwrap already resolved\n // promises without suspending.\n didUsePromise: false\n };\n /**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */ var ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */ current: null\n };\n var ReactDebugCurrentFrame$1 = {};\n var currentExtraStackFrame = null;\n function setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n }\n {\n ReactDebugCurrentFrame$1.setExtraStackFrame = function(stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n ReactDebugCurrentFrame$1.getCurrentStack = null;\n ReactDebugCurrentFrame$1.getStackAddendum = function() {\n var stack = \"\"; // Add an extra top frame while an element is being validated\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n var impl = ReactDebugCurrentFrame$1.getCurrentStack;\n if (impl) {\n stack += impl() || \"\";\n }\n return stack;\n };\n }\n // -----------------------------------------------------------------------------\n var enableScopeAPI = false; // Experimental Create Event Handle API.\n var enableCacheElement = false;\n var enableTransitionTracing = false; // No known bugs, but needs performance testing\n var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n // stuff. Intended to enable React core members to more easily debug scheduling\n // issues in DEV builds.\n var enableDebugTracing = false;\n var ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher$1,\n ReactCurrentCache: ReactCurrentCache,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n };\n {\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame$1;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n }\n // by calls to these methods by a Babel plugin.\n //\n // In PROD (or in packages without access to React internals),\n // they are left as they are instead.\n function warn(format) {\n {\n {\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 printWarning(\"warn\", format, args);\n }\n }\n }\n function error(format) {\n {\n {\n for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format, args);\n }\n }\n }\n function printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n if (stack !== \"\") {\n format += \"%s\";\n args = args.concat([\n stack\n ]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n var argsWithFormat = args.map(function(item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n argsWithFormat.unshift(\"Warning: \" + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n var didWarnStateUpdateForUnmountedComponent = {};\n function warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || \"ReactClass\";\n var warningKey = componentName + \".\" + callerName;\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n error(\"Can't call %s on a component that is not yet mounted. \" + \"This is a no-op, but it might indicate a bug in your application. \" + \"Instead, assign to `this.state` directly or define a `state = {};` \" + \"class property with the desired state in the %s component.\", callerName, componentName);\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n }\n /**\n * This is the abstract API for an update queue.\n */ var ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */ isMounted: function(publicInstance) {\n return false;\n },\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */ enqueueForceUpdate: function(publicInstance, callback, callerName) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */ enqueueReplaceState: function(publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, \"replaceState\");\n },\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */ enqueueSetState: function(publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, \"setState\");\n }\n };\n var assign = Object.assign;\n var emptyObject = {};\n {\n Object.freeze(emptyObject);\n }\n /**\n * Base class helpers for the updating state of a component.\n */ function Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n }\n Component.prototype.isReactComponent = {};\n /**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */ Component.prototype.setState = function(partialState, callback) {\n if (typeof partialState !== \"object\" && typeof partialState !== \"function\" && partialState != null) {\n throw new Error(\"setState(...): takes an object of state variables to update or a \" + \"function which returns an object of state variables.\");\n }\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */ Component.prototype.forceUpdate = function(callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n /**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */ {\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in \" + \"componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see \" + \"https://github.com/facebook/react/issues/3236).\"\n ]\n };\n var defineDeprecationWarning = function(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function() {\n warn(\"%s(...) is deprecated in plain JavaScript React classes. %s\", info[0], info[1]);\n return undefined;\n }\n });\n };\n for(var fnName in deprecatedAPIs){\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n }\n function ComponentDummy() {}\n ComponentDummy.prototype = Component.prototype;\n /**\n * Convenience component with default shallow equality check for sCU.\n */ function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\n pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n assign(pureComponentPrototype, Component.prototype);\n pureComponentPrototype.isPureReactComponent = true;\n // an immutable object with a single mutable value\n function createRef() {\n var refObject = {\n current: null\n };\n {\n Object.seal(refObject);\n }\n return refObject;\n }\n var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n function isArray(a) {\n return isArrayImpl(a);\n }\n /*\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */ // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\n function typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\"; // $FlowFixMe[incompatible-return]\n return type;\n }\n } // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\n function willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n }\n function testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error(\"The provided key is an unsupported type %s.\" + \" This value must be coerced to a string before using it here.\", typeName(value));\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n }\n function getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n if (displayName) {\n return displayName;\n }\n var functionName = innerType.displayName || innerType.name || \"\";\n return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n } // Keep in sync with react-reconciler/getComponentNameFromFiber\n function getContextName(type) {\n return type.displayName || \"Context\";\n }\n var REACT_CLIENT_REFERENCE$2 = Symbol.for(\"react.client.reference\"); // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n function getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n if (typeof type === \"function\") {\n if (type.$$typeof === REACT_CLIENT_REFERENCE$2) {\n // TODO: Create a convention for naming client references with debug info.\n return null;\n }\n return type.displayName || type.name || null;\n }\n if (typeof type === \"string\") {\n return type;\n }\n switch(type){\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\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_CACHE_TYPE:\n {\n return \"Cache\";\n }\n }\n if (typeof type === \"object\") {\n {\n if (typeof type.tag === \"number\") {\n error(\"Received an unexpected object in getComponentNameFromType(). \" + \"This is likely a bug in React. Please file an issue.\");\n }\n }\n switch(type.$$typeof){\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + \".Consumer\";\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + \".Provider\";\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, \"ForwardRef\");\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n if (outerName !== null) {\n return outerName;\n }\n return getComponentNameFromType(type.type) || \"Memo\";\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n return null;\n }\n // $FlowFixMe[method-unbinding]\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n };\n var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n {\n didWarnAboutStringRefs = {};\n }\n function hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, \"ref\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"ref\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n }\n function hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function() {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n error(\"%s: `key` is not a prop. Trying to access it will result \" + \"in `undefined` being returned. If you need to access the same \" + \"value within the child component, you should pass it as a different \" + \"prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n function defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function() {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n error(\"%s: `ref` is not a prop. Trying to access it will result \" + \"in `undefined` being returned. If you need to access the same \" + \"value within the child component, you should pass it as a different \" + \"prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, \"ref\", {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n function warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === \"string\" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + \"Support for string refs will be removed in a future major release. \" + \"This case cannot be automatically converted to an arrow function. \" + \"We ask you to manually fix this case by using useRef() or createRef() instead. \" + \"Learn more about using refs safely here: \" + \"https://reactjs.org/link/strict-mode-string-ref\", componentName, config.ref);\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n }\n /**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */ function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n Object.defineProperty(element._store, \"validated\", {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n Object.defineProperty(element, \"_self\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, \"_source\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n return element;\n }\n /**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */ function createElement$1(type, config, children) {\n var propName; // Reserved names are extracted\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n key = \"\" + config.key;\n }\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n for(propName in config){\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for(var i = 0; i < childrenLength; i++){\n childArray[i] = arguments[i + 2];\n }\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n } // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for(propName in defaultProps){\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n {\n if (key || ref) {\n var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n }\n /**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */ function cloneElement$1(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n var propName; // Original props are copied\n var props = assign({}, element.props); // Reserved names are extracted\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source; // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n key = \"\" + config.key;\n } // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for(propName in config){\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for(var i = 0; i < childrenLength; i++){\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n return ReactElement(element.type, key, ref, self, source, owner, props);\n }\n /**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */ function isValidElement(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n var SEPARATOR = \".\";\n var SUBSEPARATOR = \":\";\n /**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */ function escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n var escapedString = key.replace(escapeRegex, function(match) {\n return escaperLookup[match];\n });\n return \"$\" + escapedString;\n }\n /**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */ var didWarnAboutMaps = false;\n var userProvidedKeyEscapeRegex = /\\/+/g;\n function escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, \"$&/\");\n }\n /**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */ function getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === \"object\" && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n return escape(\"\" + element.key);\n } // Implicit key determined by the index in the set\n return index.toString(36);\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (type === \"undefined\" || type === \"boolean\") {\n // All of the above are perceived as null.\n children = null;\n }\n var invokeCallback = false;\n if (children === null) {\n invokeCallback = true;\n } else {\n switch(type){\n case \"string\":\n case \"number\":\n invokeCallback = true;\n break;\n case \"object\":\n switch(children.$$typeof){\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n }\n }\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n var childKey = nameSoFar === \"\" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n if (isArray(mappedChild)) {\n var escapedChildKey = \"\";\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + \"/\";\n }\n mapIntoArray(mappedChild, array, escapedChildKey, \"\", function(c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe[incompatible-type] Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n mappedChild = cloneAndReplaceKey(mappedChild, // traverseAllChildren used to do for objects as children\n escapedPrefix + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? escapeUserProvidedKey(\"\" + mappedChild.key // eslint-disable-line react-internal/safe-string-coercion\n ) + \"/\" : \"\") + childKey);\n }\n array.push(mappedChild);\n }\n return 1;\n }\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === \"\" ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n if (isArray(children)) {\n for(var i = 0; i < children.length; i++){\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (typeof iteratorFn === \"function\") {\n var iterableChildren = children;\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn(\"Using Maps as children is not supported. \" + \"Use an array of keyed ReactElements instead.\");\n }\n didWarnAboutMaps = true;\n }\n }\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0; // $FlowFixMe[incompatible-use] `iteratorFn` might return null according to typing.\n while(!(step = iterator.next()).done){\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === \"object\") {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === \"[object Object]\" ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\" : childrenString) + \"). \" + \"If you meant to render a collection of children, use an array \" + \"instead.\");\n }\n }\n return subtreeCount;\n }\n /**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */ function mapChildren(children, func, context) {\n if (children == null) {\n // $FlowFixMe limitation refining abstract types in Flow\n return children;\n }\n var result = [];\n var count = 0;\n mapIntoArray(children, result, \"\", \"\", function(child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n /**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */ function countChildren(children) {\n var n = 0;\n mapChildren(children, function() {\n n++; // Don't return anything\n });\n return n;\n }\n /**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */ function forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function() {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n }\n /**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */ function toArray(children) {\n return mapChildren(children, function(child) {\n return child;\n }) || [];\n }\n /**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */ function onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error(\"React.Children.only expected to receive a single React element child.\");\n }\n return children;\n }\n function createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe[prop-missing]: Flow complains about not setting a value, which is intentional here\n Object.defineProperties(Consumer, {\n Provider: {\n get: function() {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n error(\"Rendering <Context.Consumer.Provider> is not supported and will be removed in \" + \"a future major release. Did you mean to render <Context.Provider> instead?\");\n }\n return context.Provider;\n },\n set: function(_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function() {\n return context._currentValue;\n },\n set: function(_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function() {\n return context._currentValue2;\n },\n set: function(_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function() {\n return context._threadCount;\n },\n set: function(_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function() {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n error(\"Rendering <Context.Consumer.Consumer> is not supported and will be removed in \" + \"a future major release. Did you mean to render <Context.Consumer> instead?\");\n }\n return context.Consumer;\n }\n },\n displayName: {\n get: function() {\n return context.displayName;\n },\n set: function(displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn(\"Setting `displayName` on Context.Consumer has no effect. \" + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe[prop-missing]: Flow complains about missing properties because it doesn't understand defineProperty\n context.Consumer = Consumer;\n }\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n return context;\n }\n var Uninitialized = -1;\n var Pending = 0;\n var Resolved = 1;\n var Rejected = 2;\n function lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n thenable.then(function(moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function(error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n {\n if (moduleObject === undefined) {\n error(\"lazy: Expected the result of a dynamic imp\" + \"ort() call. \" + \"Instead received: %s\\n\\nYour code should look like: \\n \" + // Break up imports to avoid accidentally parsing them as dependencies.\n \"const MyComponent = lazy(() => imp\" + \"ort('./MyComponent'))\\n\\n\" + \"Did you accidentally put curly braces around the import?\", moduleObject);\n }\n }\n {\n if (!(\"default\" in moduleObject)) {\n error(\"lazy: Expected the result of a dynamic imp\" + \"ort() call. \" + \"Instead received: %s\\n\\nYour code should look like: \\n \" + // Break up imports to avoid accidentally parsing them as dependencies.\n \"const MyComponent = lazy(() => imp\" + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n }\n function lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe[prop-missing]\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function() {\n return defaultProps;\n },\n // $FlowFixMe[missing-local-annot]\n set: function(newDefaultProps) {\n error(\"React.lazy(...): It is not supported to assign `defaultProps` to \" + \"a lazy component import. Either specify them where the component \" + \"is defined, or create a wrapping component around it.\");\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe[prop-missing]\n Object.defineProperty(lazyType, \"defaultProps\", {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function() {\n return propTypes;\n },\n // $FlowFixMe[missing-local-annot]\n set: function(newPropTypes) {\n error(\"React.lazy(...): It is not supported to assign `propTypes` to \" + \"a lazy component import. Either specify them where the component \" + \"is defined, or create a wrapping component around it.\");\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe[prop-missing]\n Object.defineProperty(lazyType, \"propTypes\", {\n enumerable: true\n });\n }\n }\n });\n }\n return lazyType;\n }\n function forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error(\"forwardRef requires a render function but received a `memo` \" + \"component. Instead of forwardRef(memo(...)), use \" + \"memo(forwardRef(...)).\");\n } else if (typeof render !== \"function\") {\n error(\"forwardRef requires a render function but was given %s.\", render === null ? \"null\" : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error(\"forwardRef render functions accept exactly two parameters: props and ref. %s\", render.length === 1 ? \"Did you forget to use the ref parameter?\" : \"Any additional parameter will be undefined.\");\n }\n }\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error(\"forwardRef render functions do not support propTypes or defaultProps. \" + \"Did you accidentally pass a React component?\");\n }\n }\n }\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n {\n var ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return ownName;\n },\n set: function(name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n return elementType;\n }\n var REACT_CLIENT_REFERENCE$1 = Symbol.for(\"react.client.reference\");\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_CLIENT_REFERENCE$1 || type.getModuleId !== undefined) {\n return true;\n }\n }\n return false;\n }\n function memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error(\"memo: The first argument must be a component. Instead \" + \"received: %s\", type === null ? \"null\" : typeof type);\n }\n }\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n {\n var ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return ownName;\n },\n set: function(name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n return elementType;\n }\n var UNTERMINATED = 0;\n var TERMINATED = 1;\n var ERRORED = 2;\n function createCacheRoot() {\n return new WeakMap();\n }\n function createCacheNode() {\n return {\n s: UNTERMINATED,\n // status, represents whether the cached computation returned a value or threw an error\n v: undefined,\n // value, either the cached result or an error, depending on s\n o: null,\n // object cache, a WeakMap where non-primitive arguments are stored\n p: null // primitive cache, a regular Map where primitive arguments are stored.\n };\n }\n function cache(fn) {\n return function() {\n var dispatcher = ReactCurrentCache.current;\n if (!dispatcher) {\n // If there is no dispatcher, then we treat this as not being cached.\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n return fn.apply(null, arguments);\n }\n var fnMap = dispatcher.getCacheForType(createCacheRoot);\n var fnNode = fnMap.get(fn);\n var cacheNode;\n if (fnNode === undefined) {\n cacheNode = createCacheNode();\n fnMap.set(fn, cacheNode);\n } else {\n cacheNode = fnNode;\n }\n for(var i = 0, l = arguments.length; i < l; i++){\n var arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n // Objects go into a WeakMap\n var objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = new WeakMap();\n }\n var objectNode = objectCache.get(arg);\n if (objectNode === undefined) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n // Primitives go into a regular Map\n var primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = new Map();\n }\n var primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === undefined) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n if (cacheNode.s === TERMINATED) {\n return cacheNode.v;\n }\n if (cacheNode.s === ERRORED) {\n throw cacheNode.v;\n }\n try {\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n var result = fn.apply(null, arguments);\n var terminatedNode = cacheNode;\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n } catch (error) {\n // We store the first error that's thrown and rethrow it.\n var erroredNode = cacheNode;\n erroredNode.s = ERRORED;\n erroredNode.v = error;\n throw error;\n }\n };\n }\n function resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher$1.current;\n {\n if (dispatcher === null) {\n error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for\" + \" one of the following reasons:\\n\" + \"1. You might have mismatching versions of React and the renderer (such as React DOM)\\n\" + \"2. You might be breaking the Rules of Hooks\\n\" + \"3. You might have more than one copy of React in the same app\\n\" + \"See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n }\n }\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n return dispatcher;\n }\n function useContext(Context) {\n var dispatcher = resolveDispatcher();\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n if (realContext.Consumer === Context) {\n error(\"Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be \" + \"removed in a future major release. Did you mean to call useContext(Context) instead?\");\n } else if (realContext.Provider === Context) {\n error(\"Calling useContext(Context.Provider) is not supported. \" + \"Did you mean to call useContext(Context) instead?\");\n }\n }\n }\n return dispatcher.useContext(Context);\n }\n function useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n }\n function useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n }\n function useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n }\n function useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n }\n function useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n }\n function useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n }\n function useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n }\n function useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n }\n function useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n }\n function useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n }\n function useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n }\n function useDeferredValue(value, initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value, initialValue);\n }\n function useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n }\n function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n }\n function useCacheRefresh() {\n var dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n return dispatcher.useCacheRefresh();\n }\n function use(usable) {\n var dispatcher = resolveDispatcher();\n return dispatcher.use(usable);\n }\n function useOptimistic(passthrough, reducer) {\n var dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n return dispatcher.useOptimistic(passthrough, reducer);\n }\n // Helpers to patch console.logs to avoid logging during side-effect free\n // replaying on render function. This currently only patches the object\n // lazily which won't cover if the log function was extracted eagerly.\n // We could also eagerly patch the method.\n var disabledDepth = 0;\n var prevLog;\n var prevInfo;\n var prevWarn;\n var prevError;\n var prevGroup;\n var prevGroupCollapsed;\n var prevGroupEnd;\n function disabledLog() {}\n disabledLog.__reactDisabledLog = true;\n function disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */ prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */ }\n disabledDepth++;\n }\n }\n function reenableLogs() {\n {\n disabledDepth--;\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */ var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */ }\n if (disabledDepth < 0) {\n error(\"disabledDepth fell below zero. \" + \"This is a bug in React. Please file an issue.\");\n }\n }\n }\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n var prefix;\n function describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || \"\";\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n return \"\\n\" + prefix + name;\n }\n }\n var reentry = false;\n var componentFrameCache;\n {\n var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n }\n /**\n * Leverages native browser/VM stack frames to get proper details (e.g.\n * filename, line + col number) for a single component in a component stack. We\n * do this by:\n * (1) throwing and catching an error in the function - this will be our\n * control error.\n * (2) calling the component which will eventually throw an error that we'll\n * catch - this will be our sample error.\n * (3) diffing the control and sample error stacks to find the stack frame\n * which represents our component.\n */ function describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return \"\";\n }\n {\n var frame = componentFrameCache.get(fn);\n if (frame !== undefined) {\n return frame;\n }\n }\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe[incompatible-type] It does accept undefined.\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n /**\n * Finding a common stack frame between sample and control errors can be\n * tricky given the different types and levels of stack trace truncation from\n * different JS VMs. So instead we'll attempt to control what that common\n * frame should be through this object method:\n * Having both the sample and control errors be in the function under the\n * `DescribeNativeComponentFrameRoot` property, + setting the `name` and\n * `displayName` properties of the function ensures that a stack\n * frame exists that has the method name `DescribeNativeComponentFrameRoot` in\n * it for both control and sample stacks.\n */ var RunInRootFrame = {\n DetermineComponentFrameRoot: function() {\n var control;\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function() {\n throw Error();\n }; // $FlowFixMe[prop-missing]\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function() {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n if (typeof Reflect === \"object\" && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n } // $FlowFixMe[prop-missing] found when upgrading Flow\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n } // TODO(luna): This will currently only throw if the function component\n // tries to access React/ReactDOM/props. We should probably make this throw\n // in simple components too\n var maybePromise = fn(); // If the function component returns a promise, it's likely an async\n // component, which we don't yet support. Attach a noop catch handler to\n // silence the error.\n // TODO: Implement component stacks for async client components?\n if (maybePromise && typeof maybePromise.catch === \"function\") {\n maybePromise.catch(function() {});\n }\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === \"string\") {\n return [\n sample.stack,\n control.stack\n ];\n }\n }\n return [\n null,\n null\n ];\n }\n }; // $FlowFixMe[prop-missing]\n RunInRootFrame.DetermineComponentFrameRoot.displayName = \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot, \"name\"); // Before ES6, the `name` property was not configurable.\n if (namePropDescriptor && namePropDescriptor.configurable) {\n // V8 utilizes a function's `name` property when generating a stack trace.\n Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot, // is set to `false`.\n // $FlowFixMe[cannot-write]\n \"name\", {\n value: \"DetermineComponentFrameRoot\"\n });\n }\n try {\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(), sampleStack = _RunInRootFrame$Deter[0], controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sampleStack.split(\"\\n\");\n var controlLines = controlStack.split(\"\\n\");\n var s = 0;\n var c = 0;\n while(s < sampleLines.length && !sampleLines[s].includes(\"DetermineComponentFrameRoot\")){\n s++;\n }\n while(c < controlLines.length && !controlLines[c].includes(\"DetermineComponentFrameRoot\")){\n c++;\n } // We couldn't find our intentionally injected common root frame, attempt\n // to find another common root frame by search from the bottom of the\n // control stack...\n if (s === sampleLines.length || c === controlLines.length) {\n s = sampleLines.length - 1;\n c = controlLines.length - 1;\n while(s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]){\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n }\n for(; s >= 1 && c >= 0; s--, c--){\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = \"\\n\" + sampleLines[s].replace(\" at new \", \" at \"); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n }\n if (true) {\n if (typeof fn === \"function\") {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n return _frame;\n }\n }while (s >= 1 && c >= 0);\n }\n break;\n }\n }\n }\n } finally{\n reentry = false;\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n var name = fn ? fn.displayName || fn.name : \"\";\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n {\n if (typeof fn === \"function\") {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n return syntheticFrame;\n }\n function describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n }\n function shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n }\n function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n if (type == null) {\n return \"\";\n }\n if (typeof type === \"function\") {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n if (typeof type === \"string\") {\n return describeBuiltInComponentFrame(type);\n }\n switch(type){\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (typeof type === \"object\") {\n switch(type.$$typeof){\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n return \"\";\n }\n var loggedTypeFailures = {};\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n function setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n }\n function checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe[incompatible-use] This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n for(var typeSpecName in typeSpecs){\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== \"function\") {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; \" + \"it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\" + \"This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n err.name = \"Invariant Violation\";\n throw err;\n }\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n } catch (ex) {\n error$1 = ex;\n }\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement$1(element);\n error(\"%s: type specification of %s\" + \" `%s` is invalid; the type checker \" + \"function must return `null` or an `Error` but returned a %s. \" + \"You may have forgotten to pass an argument to the type checker \" + \"creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and \" + \"shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n setCurrentlyValidatingElement$1(null);\n }\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement$1(element);\n error(\"Failed %s type: %s\", location, error$1.message);\n setCurrentlyValidatingElement$1(null);\n }\n }\n }\n }\n }\n var REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n function setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n }\n var propTypesMisspellWarningShown;\n {\n propTypesMisspellWarningShown = false;\n }\n function getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n if (name) {\n return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n }\n }\n return \"\";\n }\n function getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, \"\");\n var lineNumber = source.lineNumber;\n return \"\\n\\nCheck your code at \" + fileName + \":\" + lineNumber + \".\";\n }\n return \"\";\n }\n function getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n return \"\";\n }\n /**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */ var ownerHasKeyUseWarning = {};\n function getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n if (!info) {\n var parentName = getComponentNameFromType(parentType);\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n return info;\n }\n /**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */ function validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = \"\";\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n {\n setCurrentlyValidatingElement(element);\n error('Each child in a list should have a unique \"key\" prop.' + \"%s%s See https://reactjs.org/link/warning-keys for more information.\", currentComponentErrorInfo, childOwner);\n setCurrentlyValidatingElement(null);\n }\n }\n /**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */ function validateChildKeys(node, parentType) {\n if (typeof node !== \"object\" || !node) {\n return;\n }\n if (node.$$typeof === REACT_CLIENT_REFERENCE) ;\n else if (isArray(node)) {\n for(var i = 0; i < node.length; i++){\n var child = node[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else {\n var iteratorFn = getIteratorFn(node);\n if (typeof iteratorFn === \"function\") {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while(!(step = iterator.next()).done){\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n /**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */ function validatePropTypes(element) {\n {\n var type = element.type;\n if (type === null || type === undefined || typeof type === \"string\") {\n return;\n }\n if (type.$$typeof === REACT_CLIENT_REFERENCE) {\n return;\n }\n var propTypes;\n if (typeof type === \"function\") {\n propTypes = type.propTypes;\n } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, \"prop\", name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n var _name = getComponentNameFromType(type);\n error(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n }\n if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n error(\"getDefaultProps is only used on classic React.createClass \" + \"definitions. Use a static property named `defaultProps` instead.\");\n }\n }\n }\n /**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */ function validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n if (key !== \"children\" && key !== \"key\") {\n setCurrentlyValidatingElement(fragment);\n error(\"Invalid prop `%s` supplied to `React.Fragment`. \" + \"React.Fragment can only have `key` and `children` props.\", key);\n setCurrentlyValidatingElement(null);\n break;\n }\n }\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement(fragment);\n error(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n setCurrentlyValidatingElement(null);\n }\n }\n }\n function createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n var info = \"\";\n if (type === undefined || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n info += \" You likely forgot to export your component from the file \" + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n var typeString;\n if (type === null) {\n typeString = \"null\";\n } else if (isArray(type)) {\n typeString = \"array\";\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n info = \" Did you accidentally export a JSX literal instead of a component?\";\n } else {\n typeString = typeof type;\n }\n {\n error(\"React.createElement: type is invalid -- expected a string (for \" + \"built-in components) or a class/function (for composite \" + \"components) but got: %s.%s\", typeString, info);\n }\n }\n var element = createElement$1.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for(var i = 2; i < arguments.length; i++){\n validateChildKeys(arguments[i], type);\n }\n }\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n return element;\n }\n var didWarnAboutDeprecatedCreateFactory = false;\n function createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n warn(\"React.createFactory() is deprecated and will be removed in \" + \"a future major release. Consider using JSX \" + \"or use React.createElement() directly instead.\");\n } // Legacy hook: remove it\n Object.defineProperty(validatedFactory, \"type\", {\n enumerable: false,\n get: function() {\n warn(\"Factory.type is deprecated. Access the class directly \" + \"before passing it to createFactory.\");\n Object.defineProperty(this, \"type\", {\n value: type\n });\n return type;\n }\n });\n }\n return validatedFactory;\n }\n function cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement$1.apply(this, arguments);\n for(var i = 2; i < arguments.length; i++){\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n function startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n try {\n scope();\n } finally{\n ReactCurrentBatchConfig.transition = prevTransition;\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n currentTransition._updatedFibers.clear();\n if (updatedFibersCount > 10) {\n warn(\"Detected a large number of updates inside startTransition. \" + \"If this is due to a subscription please re-write it to use React provided hooks. \" + \"Otherwise concurrent mode guarantees are off the table.\");\n }\n }\n }\n }\n }\n var didWarnAboutMessageChannel = false;\n var enqueueTaskImpl = null;\n function enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n enqueueTaskImpl = nodeRequire.call(module, \"timers\").setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function(callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n if (typeof MessageChannel === \"undefined\") {\n error(\"This browser does not have a MessageChannel implementation, \" + \"so enqueuing tasks via await act(async () => ...) will fail. \" + \"Please file an issue at https://github.com/facebook/react/issues \" + \"if you encounter this warning.\");\n }\n }\n }\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n return enqueueTaskImpl(task);\n }\n // number of `act` scopes on the stack.\n var actScopeDepth = 0; // We only warn the first time you neglect to await an async `act` scope.\n var didWarnNoAwaitAct = false;\n function act(callback) {\n {\n // When ReactCurrentActQueue.current is not null, it signals to React that\n // we're currently inside an `act` scope. React will push all its tasks to\n // this queue instead of scheduling them with platform APIs.\n //\n // We set this to an empty array when we first enter an `act` scope, and\n // only unset it once we've left the outermost `act` scope — remember that\n // `act` calls can be nested.\n //\n // If we're already inside an `act` scope, reuse the existing queue.\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var prevActQueue = ReactCurrentActQueue.current;\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = ReactCurrentActQueue.current = prevActQueue !== null ? prevActQueue : []; // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n var result; // This tracks whether the `act` call is awaited. In certain cases, not\n // awaiting it is a mistake, so we will detect that and warn.\n var didAwaitActCall = false;\n try {\n // Reset this to `false` right before entering the React work loop. The\n // only place we ever read this fields is just below, right after running\n // the callback. So we don't need to reset after the callback runs.\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n result = callback();\n var didScheduleLegacyUpdate = ReactCurrentActQueue.didScheduleLegacyUpdate; // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n if (!prevIsBatchingLegacy && didScheduleLegacyUpdate) {\n flushActQueue(queue);\n } // `isBatchingLegacy` gets reset using the regular stack, not the async\n // one used to track `act` scopes. Why, you may be wondering? Because\n // that's how it worked before version 18. Yes, it's confusing! We should\n // delete legacy mode!!\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n } catch (error) {\n // `isBatchingLegacy` gets reset using the regular stack, not the async\n // one used to track `act` scopes. Why, you may be wondering? Because\n // that's how it worked before version 18. Yes, it's confusing! We should\n // delete legacy mode!!\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n popActScope(prevActQueue, prevActScopeDepth);\n throw error;\n }\n if (result !== null && typeof result === \"object\" && // $FlowFixMe[method-unbinding]\n typeof result.then === \"function\") {\n // A promise/thenable was returned from the callback. Wait for it to\n // resolve before flushing the queue.\n //\n // If `act` were implemented as an async function, this whole block could\n // be a single `await` call. That's really the only difference between\n // this branch and the next one.\n var thenable = result; // Warn if the an `act` call with an async scope is not awaited. In a\n // future release, consider making this an error.\n queueSeveralMicrotasks(function() {\n if (!didAwaitActCall && !didWarnNoAwaitAct) {\n didWarnNoAwaitAct = true;\n error(\"You called act(async () => ...) without await. \" + \"This could lead to unexpected testing behaviour, \" + \"interleaving multiple act calls and mixing their \" + \"scopes. \" + \"You should - await act(async () => ...);\");\n }\n });\n return {\n then: function(resolve, reject) {\n didAwaitActCall = true;\n thenable.then(function(returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (prevActScopeDepth === 0) {\n // We're exiting the outermost `act` scope. Flush the queue.\n try {\n flushActQueue(queue);\n enqueueTask(function() {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n } catch (error) {\n // `thenable` might not be a real promise, and `flushActQueue`\n // might throw, so we need to wrap `flushActQueue` in a\n // try/catch.\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }, function(error) {\n popActScope(prevActQueue, prevActScopeDepth);\n reject(error);\n });\n }\n };\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current\n // scope immediately.\n popActScope(prevActQueue, prevActScopeDepth);\n if (prevActScopeDepth === 0) {\n // We're exiting the outermost `act` scope. Flush the queue.\n flushActQueue(queue); // If the queue is not empty, it implies that we intentionally yielded\n // to the main thread, because something suspended. We will continue\n // in an asynchronous task.\n //\n // Warn if something suspends but the `act` call is not awaited.\n // In a future release, consider making this an error.\n if (queue.length !== 0) {\n queueSeveralMicrotasks(function() {\n if (!didAwaitActCall && !didWarnNoAwaitAct) {\n didWarnNoAwaitAct = true;\n error(\"A component suspended inside an `act` scope, but the \" + \"`act` call was not awaited. When testing React \" + \"components that depend on asynchronous data, you must \" + \"await the result:\\n\\n\" + \"await act(() => ...)\");\n }\n });\n } // Like many things in this module, this is next part is confusing.\n //\n // We do not currently require every `act` call that is passed a\n // callback to be awaited, through arguably we should. Since this\n // callback was synchronous, we need to exit the current scope before\n // returning.\n //\n // However, if thenable we're about to return *is* awaited, we'll\n // immediately restore the current scope. So it shouldn't observable.\n //\n // This doesn't affect the case where the scope callback is async,\n // because we always require those calls to be awaited.\n //\n // TODO: In a future version, consider always requiring all `act` calls\n // to be awaited, regardless of whether the callback is sync or async.\n ReactCurrentActQueue.current = null;\n }\n return {\n then: function(resolve, reject) {\n didAwaitActCall = true;\n if (prevActScopeDepth === 0) {\n // If the `act` call is awaited, restore the queue we were\n // using before (see long comment above) so we can flush it.\n ReactCurrentActQueue.current = queue;\n enqueueTask(function() {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n } else {\n resolve(returnValue);\n }\n }\n };\n }\n }\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error(\"You seem to have overlapping act() calls, this is not supported. \" + \"Be sure to await previous act() calls before making a new one. \");\n }\n actScopeDepth = prevActScopeDepth;\n }\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n // Check if any tasks were scheduled asynchronously.\n var queue = ReactCurrentActQueue.current;\n if (queue !== null) {\n if (queue.length !== 0) {\n // Async tasks were scheduled, mostly likely in a microtask.\n // Keep flushing until there are no more.\n try {\n flushActQueue(queue); // The work we just performed may have schedule additional async\n // tasks. Wait a macrotask and check again.\n enqueueTask(function() {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n } catch (error) {\n // Leave remaining tasks on the queue if something throws.\n reject(error);\n }\n } else {\n // The queue is empty. We can finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n }\n } else {\n resolve(returnValue);\n }\n }\n }\n var isFlushing = false;\n function flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n try {\n for(; i < queue.length; i++){\n var callback = queue[i];\n do {\n ReactCurrentActQueue.didUsePromise = false;\n var continuation = callback(false);\n if (continuation !== null) {\n if (ReactCurrentActQueue.didUsePromise) {\n // The component just suspended. Yield to the main thread in\n // case the promise is already resolved. If so, it will ping in\n // a microtask and we can resume without unwinding the stack.\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else {\n break;\n }\n }while (true);\n } // We flushed the entire queue.\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue.splice(0, i + 1);\n throw error;\n } finally{\n isFlushing = false;\n }\n }\n }\n } // Some of our warnings attempt to detect if the `act` call is awaited by\n // checking in an asynchronous task. Wait a few microtasks before checking. The\n // only reason one isn't sufficient is we want to accommodate the case where an\n // `act` call is returned from an async function without first being awaited,\n // since that's a somewhat common pattern. If you do this too many times in a\n // nested sequence, you might get a warning, but you can always fix by awaiting\n // the call.\n //\n // A macrotask would also work (and is the fallback) but depending on the test\n // environment it may cause the warning to fire too late.\n var queueSeveralMicrotasks = typeof queueMicrotask === \"function\" ? function(callback) {\n queueMicrotask(function() {\n return queueMicrotask(callback);\n });\n } : enqueueTask;\n var createElement = createElementWithValidation;\n var cloneElement = cloneElementWithValidation;\n var createFactory = createFactoryWithValidation;\n var Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n };\n exports.Children = Children;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\n exports.cache = cache;\n exports.cloneElement = cloneElement;\n exports.createContext = createContext;\n exports.createElement = createElement;\n exports.createFactory = createFactory;\n exports.createRef = createRef;\n exports.forwardRef = forwardRef;\n exports.isValidElement = isValidElement;\n exports.lazy = lazy;\n exports.memo = memo;\n exports.startTransition = startTransition;\n exports.unstable_act = act;\n exports.unstable_useCacheRefresh = useCacheRefresh;\n exports.use = use;\n exports.useCallback = useCallback;\n exports.useContext = useContext;\n exports.useDebugValue = useDebugValue;\n exports.useDeferredValue = useDeferredValue;\n exports.useEffect = useEffect;\n exports.useId = useId;\n exports.useImperativeHandle = useImperativeHandle;\n exports.useInsertionEffect = useInsertionEffect;\n exports.useLayoutEffect = useLayoutEffect;\n exports.useMemo = useMemo;\n exports.useOptimistic = useOptimistic;\n exports.useReducer = useReducer;\n exports.useRef = useRef;\n exports.useState = useState;\n exports.useSyncExternalStore = useSyncExternalStore;\n exports.useTransition = useTransition;\n exports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n }\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0NBUUMsR0FFRDtBQUVBLElBQUlBLElBQXFDLEVBQUU7SUFDeEM7UUFFTztRQUVWLHlDQUF5QyxHQUN6QyxJQUNFLE9BQU9DLG1DQUFtQyxlQUMxQyxPQUFPQSwrQkFBK0JDLDJCQUEyQixLQUMvRCxZQUNGO1lBQ0FELCtCQUErQkMsMkJBQTJCLENBQUMsSUFBSUM7UUFDakU7UUFDVSxJQUFJQyxlQUFlO1FBRTdCLFlBQVk7UUFDWix3Q0FBd0M7UUFDeEMsa0ZBQWtGO1FBQ2xGLHNEQUFzRDtRQUN0RCxJQUFJQyxxQkFBcUJDLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJQyxvQkFBb0JGLE9BQU9DLEdBQUcsQ0FBQztRQUNuQyxJQUFJRSxzQkFBc0JILE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJRyx5QkFBeUJKLE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJSSxzQkFBc0JMLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJSyxzQkFBc0JOLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJTSxxQkFBcUJQLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJTyx5QkFBeUJSLE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJUSxzQkFBc0JULE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJUywyQkFBMkJWLE9BQU9DLEdBQUcsQ0FBQztRQUMxQyxJQUFJVSxrQkFBa0JYLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJVyxrQkFBa0JaLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJWSx1QkFBdUJiLE9BQU9DLEdBQUcsQ0FBQztRQUN0QyxJQUFJYSxtQkFBbUJkLE9BQU9DLEdBQUcsQ0FBQztRQUNsQyxJQUFJYyx3QkFBd0JmLE9BQU9nQixRQUFRO1FBQzNDLElBQUlDLHVCQUF1QjtRQUMzQixT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LHVCQUF1QixHQUFHeEs7UUFDMUJ3SyxlQUFlLEdBQUd0SztRQUNsQnNLLHFCQUFxQixHQUFHeEo7UUFDeEJ3SixrQkFBa0IsR0FBR2pMO1FBQ3JCaUwsY0FBYyxHQUFHOUs7UUFDakI4SyxnQkFBZ0IsR0FBR25MO1FBQ25CbUwsNEJBQTRCLEdBQUcvSjtRQUMvQitKLHFCQUFxQixHQUFHbEs7UUFDeEJrSyxlQUFlLEdBQUd0ZjtRQUNSLHlDQUF5QyxHQUNuRCxJQUNFLE9BQU9ILG1DQUFtQyxlQUMxQyxPQUFPQSwrQkFBK0JrZ0IsMEJBQTBCLEtBQzlELFlBQ0Y7WUFDQWxnQiwrQkFBK0JrZ0IsMEJBQTBCLENBQUMsSUFBSWhnQjtRQUNoRTtJQUVFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanM/YTI1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICd1c2Ugc3RyaWN0JztcblxuLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuaWYgKFxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydCA9PT1cbiAgICAnZnVuY3Rpb24nXG4pIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdGFydChuZXcgRXJyb3IoKSk7XG59XG4gICAgICAgICAgdmFyIFJlYWN0VmVyc2lvbiA9ICcxOC4zLjAtY2FuYXJ5LTYwYTkyN2QwNC0yMDI0MDExMyc7XG5cbi8vIEFUVEVOVElPTlxuLy8gV2hlbiBhZGRpbmcgbmV3IHN5bWJvbHMgdG8gdGhpcyBmaWxlLFxuLy8gUGxlYXNlIGNvbnNpZGVyIGFsc28gYWRkaW5nIHRvICdyZWFjdC1kZXZ0b29scy1zaGFyZWQvc3JjL2JhY2tlbmQvUmVhY3RTeW1ib2xzJ1xuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpO1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJyk7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50Jyk7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJyk7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJyk7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJyk7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpO1xudmFyIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZScpO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKTtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJyk7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubGF6eScpO1xudmFyIFJFQUNUX09GRlNDUkVFTl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Qub2Zmc2NyZWVuJyk7XG52YXIgUkVBQ1RfQ0FDSEVfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNhY2hlJyk7XG52YXIgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InO1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIGlmIChtYXliZUl0ZXJhYmxlID09PSBudWxsIHx8IHR5cGVvZiBtYXliZUl0ZXJhYmxlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIG1heWJlSXRlcmF0b3IgPSBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtNQVlCRV9JVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdO1xuXG4gIGlmICh0eXBlb2YgbWF5YmVJdGVyYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtYXliZUl0ZXJhdG9yO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZGlzcGF0Y2hlci5cbiAqL1xudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSA9IHtcbiAgY3VycmVudDogbnVsbFxufTtcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBDYWNoZSBkaXNwYXRjaGVyLlxuICovXG52YXIgUmVhY3RDdXJyZW50Q2FjaGUgPSB7XG4gIGN1cnJlbnQ6IG51bGxcbn07XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgYmF0Y2gncyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgaG93IGxvbmcgYW4gdXBkYXRlXG4gKiBzaG91bGQgc3VzcGVuZCBmb3IgaWYgaXQgbmVlZHMgdG8uXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyA9IHtcbiAgdHJhbnNpdGlvbjogbnVsbFxufTtcblxudmFyIFJlYWN0Q3VycmVudEFjdFF1ZXVlID0ge1xuICBjdXJyZW50OiBudWxsLFxuICAvLyBVc2VkIHRvIHJlcHJvZHVjZSBiZWhhdmlvciBvZiBgYmF0Y2hlZFVwZGF0ZXNgIGluIGxlZ2FjeSBtb2RlLlxuICBpc0JhdGNoaW5nTGVnYWN5OiBmYWxzZSxcbiAgZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGU6IGZhbHNlLFxuICAvLyBUcmFja3Mgd2hldGhlciBzb21ldGhpbmcgY2FsbGVkIGB1c2VgIGR1cmluZyB0aGUgY3VycmVudCBiYXRjaCBvZiB3b3JrLlxuICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgd2Ugc2hvdWxkIHlpZWxkIHRvIG1pY3JvdGFza3MgdG8gdW53cmFwIGFscmVhZHkgcmVzb2x2ZWRcbiAgLy8gcHJvbWlzZXMgd2l0aG91dCBzdXNwZW5kaW5nLlxuICBkaWRVc2VQcm9taXNlOiBmYWxzZVxufTtcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxID0ge307XG52YXIgY3VycmVudEV4dHJhU3RhY2tGcmFtZSA9IG51bGw7XG5mdW5jdGlvbiBzZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spIHtcbiAge1xuICAgIGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUgPSBzdGFjaztcbiAgfVxufVxuXG57XG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUgPSBmdW5jdGlvbiAoc3RhY2spIHtcbiAgICB7XG4gICAgICBjdXJyZW50RXh0cmFTdGFja0ZyYW1lID0gc3RhY2s7XG4gICAgfVxuICB9OyAvLyBTdGFjayBpbXBsZW1lbnRhdGlvbiBpbmplY3RlZCBieSB0aGUgY3VycmVudCByZW5kZXJlci5cblxuXG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2sgPSBudWxsO1xuXG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRTdGFja0FkZGVuZHVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGFjayA9ICcnOyAvLyBBZGQgYW4gZXh0cmEgdG9wIGZyYW1lIHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgdmFsaWRhdGVkXG5cbiAgICBpZiAoY3VycmVudEV4dHJhU3RhY2tGcmFtZSkge1xuICAgICAgc3RhY2sgKz0gY3VycmVudEV4dHJhU3RhY2tGcmFtZTtcbiAgICB9IC8vIERlbGVnYXRlIHRvIHRoZSBpbmplY3RlZCByZW5kZXJlci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuXG5cbiAgICB2YXIgaW1wbCA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2s7XG5cbiAgICBpZiAoaW1wbCkge1xuICAgICAgc3RhY2sgKz0gaW1wbCgpIHx8ICcnO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFjaztcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cbnZhciBlbmFibGVDYWNoZUVsZW1lbnQgPSBmYWxzZTtcbnZhciBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyA9IGZhbHNlOyAvLyBObyBrbm93biBidWdzLCBidXQgbmVlZHMgcGVyZm9ybWFuY2UgdGVzdGluZ1xuXG52YXIgZW5hYmxlTGVnYWN5SGlkZGVuID0gZmFsc2U7IC8vIEVuYWJsZXMgdW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2sgZmVhdHVyZSBpbiBGaWJlclxuLy8gc3R1ZmYuIEludGVuZGVkIHRvIGVuYWJsZSBSZWFjdCBjb3JlIG1lbWJlcnMgdG8gbW9yZSBlYXNpbHkgZGVidWcgc2NoZWR1bGluZ1xuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXG5cbnZhciBlbmFibGVEZWJ1Z1RyYWNpbmcgPSBmYWxzZTtcblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0ge1xuICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiBSZWFjdEN1cnJlbnREaXNwYXRjaGVyJDEsXG4gIFJlYWN0Q3VycmVudENhY2hlOiBSZWFjdEN1cnJlbnRDYWNoZSxcbiAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6IFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFxuICBSZWFjdEN1cnJlbnRPd25lcjogUmVhY3RDdXJyZW50T3duZXJcbn07XG5cbntcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMTtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50QWN0UXVldWUgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZTtcbn1cblxuLy8gYnkgY2FsbHMgdG8gdGhlc2UgbWV0aG9kcyBieSBhIEJhYmVsIHBsdWdpbi5cbi8vXG4vLyBJbiBQUk9EIChvciBpbiBwYWNrYWdlcyB3aXRob3V0IGFjY2VzcyB0byBSZWFjdCBpbnRlcm5hbHMpLFxuLy8gdGhleSBhcmUgbGVmdCBhcyB0aGV5IGFyZSBpbnN0ZWFkLlxuXG5mdW5jdGlvbiB3YXJuKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCd3YXJuJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxudmFyIGRpZFdhcm5TdGF0ZVVwZGF0ZUZvclVubW91bnRlZENvbXBvbmVudCA9IHt9O1xuXG5mdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICB7XG4gICAgdmFyIF9jb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHZhciBjb21wb25lbnROYW1lID0gX2NvbnN0cnVjdG9yICYmIChfY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgX2NvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJztcbiAgICB2YXIgd2FybmluZ0tleSA9IGNvbXBvbmVudE5hbWUgKyBcIi5cIiArIGNhbGxlck5hbWU7XG5cbiAgICBpZiAoZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50W3dhcm5pbmdLZXldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXJyb3IoXCJDYW4ndCBjYWxsICVzIG9uIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IHlldCBtb3VudGVkLiBcIiArICdUaGlzIGlzIGEgbm8tb3AsIGJ1dCBpdCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB5b3VyIGFwcGxpY2F0aW9uLiAnICsgJ0luc3RlYWQsIGFzc2lnbiB0byBgdGhpcy5zdGF0ZWAgZGlyZWN0bHkgb3IgZGVmaW5lIGEgYHN0YXRlID0ge307YCAnICsgJ2NsYXNzIHByb3BlcnR5IHdpdGggdGhlIGRlc2lyZWQgc3RhdGUgaW4gdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjb21wb25lbnROYW1lKTtcblxuICAgIGRpZFdhcm5TdGF0ZVVwZGF0ZUZvclVubW91bnRlZENvbXBvbmVudFt3YXJuaW5nS2V5XSA9IHRydWU7XG4gIH1cbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG4gKi9cblxuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBjYWxsZXJOYW1lIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gY2FsbGVyTmFtZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgfVxufTtcblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbnZhciBlbXB0eU9iamVjdCA9IHt9O1xuXG57XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xufVxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7IC8vIElmIGEgY29tcG9uZW50IGhhcyBzdHJpbmcgcmVmcywgd2Ugd2lsbCBhc3NpZ24gYSBkaWZmZXJlbnQgb2JqZWN0IGxhdGVyLlxuXG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0OyAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cblxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5Db21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbi8qKlxuICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4gKiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJvZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5cbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIHBhcnRpYWxTdGF0ZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIHBhcnRpYWxTdGF0ZSAhPT0gJ2Z1bmN0aW9uJyAmJiBwYXJ0aWFsU3RhdGUgIT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSAnICsgJ2Z1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4nKTtcbiAgfVxuXG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlhbFN0YXRlLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG59O1xuLyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblxuXG5Db21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xufTtcbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5cblxue1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddXG4gIH07XG5cbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbXBvbmVudC5wcm90b3R5cGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICB3YXJuKCclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBDb21wb25lbnREdW1teSgpIHt9XG5cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4vKipcbiAqIENvbnZlbmllbmNlIGNvbXBvbmVudCB3aXRoIGRlZmF1bHQgc2hhbGxvdyBlcXVhbGl0eSBjaGVjayBmb3Igc0NVLlxuICovXG5cbmZ1bmN0aW9uIFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OyAvLyBJZiBhIGNvbXBvbmVudCBoYXMgc3RyaW5nIHJlZnMsIHdlIHdpbGwgYXNzaWduIGEgZGlmZmVyZW50IG9iamVjdCBsYXRlci5cblxuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxudmFyIHB1cmVDb21wb25lbnRQcm90b3R5cGUgPSBQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFB1cmVDb21wb25lbnQ7IC8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLlxuXG5hc3NpZ24ocHVyZUNvbXBvbmVudFByb3RvdHlwZSwgQ29tcG9uZW50LnByb3RvdHlwZSk7XG5wdXJlQ29tcG9uZW50UHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblxuLy8gYW4gaW1tdXRhYmxlIG9iamVjdCB3aXRoIGEgc2luZ2xlIG11dGFibGUgdmFsdWVcbmZ1bmN0aW9uIGNyZWF0ZVJlZigpIHtcbiAgdmFyIHJlZk9iamVjdCA9IHtcbiAgICBjdXJyZW50OiBudWxsXG4gIH07XG5cbiAge1xuICAgIE9iamVjdC5zZWFsKHJlZk9iamVjdCk7XG4gIH1cblxuICByZXR1cm4gcmVmT2JqZWN0O1xufVxuXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYSkge1xuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XG59XG5cbi8qXG4gKiBUaGUgYCcnICsgdmFsdWVgIHBhdHRlcm4gKHVzZWQgaW4gcGVyZi1zZW5zaXRpdmUgY29kZSkgdGhyb3dzIGZvciBTeW1ib2xcbiAqIGFuZCBUZW1wb3JhbC4qIHR5cGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjIwNjQuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB3aWxsIHRocm93IGFuIGVhc2llci10by11bmRlcnN0YW5kLFxuICogZWFzaWVyLXRvLWRlYnVnIGV4Y2VwdGlvbiB3aXRoIGEgY2xlYXIgZXJyb3JzIG1lc3NhZ2UgbWVzc2FnZSBleHBsYWluaW5nIHRoZVxuICogcHJvYmxlbS4gKEluc3RlYWQgb2YgYSBjb25mdXNpbmcgZXhjZXB0aW9uIHRocm93biBpbnNpZGUgdGhlIGltcGxlbWVudGF0aW9uXG4gKiBvZiB0aGUgYHZhbHVlYCBvYmplY3QpLlxuICovXG4vLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuZnVuY3Rpb24gdHlwZU5hbWUodmFsdWUpIHtcbiAge1xuICAgIC8vIHRvU3RyaW5nVGFnIGlzIG5lZWRlZCBmb3IgbmFtZXNwYWNlZCB0eXBlcyBsaWtlIFRlbXBvcmFsLkluc3RhbnRcbiAgICB2YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZztcbiAgICB2YXIgdHlwZSA9IGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10gfHwgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fCAnT2JqZWN0JzsgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXSBvbmx5IGNhbGxlZCBpbiBERVYsIHNvIHZvaWQgcmV0dXJuIGlzIG5vdCBwb3NzaWJsZS5cblxuXG5mdW5jdGlvbiB3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkge1xuICB7XG4gICAgdHJ5IHtcbiAgICAgIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAvLyBJZiB5b3UgZW5kZWQgdXAgaGVyZSBieSBmb2xsb3dpbmcgYW4gZXhjZXB0aW9uIGNhbGwgc3RhY2ssIGhlcmUncyB3aGF0J3NcbiAgLy8gaGFwcGVuZWQ6IHlvdSBzdXBwbGllZCBhbiBvYmplY3Qgb3Igc3ltYm9sIHZhbHVlIHRvIFJlYWN0IChhcyBhIHByb3AsIGtleSxcbiAgLy8gRE9NIGF0dHJpYnV0ZSwgQ1NTIHByb3BlcnR5LCBzdHJpbmcgcmVmLCBldGMuKSBhbmQgd2hlbiBSZWFjdCB0cmllZCB0b1xuICAvLyBjb2VyY2UgaXQgdG8gYSBzdHJpbmcgdXNpbmcgYCcnICsgdmFsdWVgLCBhbiBleGNlcHRpb24gd2FzIHRocm93bi5cbiAgLy9cbiAgLy8gVGhlIG1vc3QgY29tbW9uIHR5cGVzIHRoYXQgd2lsbCBjYXVzZSB0aGlzIGV4Y2VwdGlvbiBhcmUgYFN5bWJvbGAgaW5zdGFuY2VzXG4gIC8vIGFuZCBUZW1wb3JhbCBvYmplY3RzIGxpa2UgYFRlbXBvcmFsLkluc3RhbnRgLiBCdXQgYW55IG9iamVjdCB0aGF0IGhhcyBhXG4gIC8vIGB2YWx1ZU9mYCBvciBgW1N5bWJvbC50b1ByaW1pdGl2ZV1gIG1ldGhvZCB0aGF0IHRocm93cyB3aWxsIGFsc28gY2F1c2UgdGhpc1xuICAvLyBleGNlcHRpb24uIChMaWJyYXJ5IGF1dGhvcnMgZG8gdGhpcyB0byBwcmV2ZW50IHVzZXJzIGZyb20gdXNpbmcgYnVpbHQtaW5cbiAgLy8gbnVtZXJpYyBvcGVyYXRvcnMgbGlrZSBgK2Agb3IgY29tcGFyaXNvbiBvcGVyYXRvcnMgbGlrZSBgPj1gIGJlY2F1c2UgY3VzdG9tXG4gIC8vIG1ldGhvZHMgYXJlIG5lZWRlZCB0byBwZXJmb3JtIGFjY3VyYXRlIGFyaXRobWV0aWMgb3IgY29tcGFyaXNvbi4pXG4gIC8vXG4gIC8vIFRvIGZpeCB0aGUgcHJvYmxlbSwgY29lcmNlIHRoaXMgb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbiAgLy8gcGFzc2luZyBpdCB0byBSZWFjdC4gVGhlIG1vc3QgcmVsaWFibGUgd2F5IGlzIHVzdWFsbHkgYFN0cmluZyh2YWx1ZSlgLlxuICAvL1xuICAvLyBUbyBmaW5kIHdoaWNoIHZhbHVlIGlzIHRocm93aW5nLCBjaGVjayB0aGUgYnJvd3NlciBvciBkZWJ1Z2dlciBjb25zb2xlLlxuICAvLyBCZWZvcmUgdGhpcyBleGNlcHRpb24gd2FzIHRocm93biwgdGhlcmUgc2hvdWxkIGJlIGBjb25zb2xlLmVycm9yYCBvdXRwdXRcbiAgLy8gdGhhdCBzaG93cyB0aGUgdHlwZSAoU3ltYm9sLCBUZW1wb3JhbC5QbGFpbkRhdGUsIGV0Yy4pIHRoYXQgY2F1c2VkIHRoZVxuICAvLyBwcm9ibGVtIGFuZCBob3cgdGhhdCB0eXBlIHdhcyB1c2VkOiBrZXksIGF0cnJpYnV0ZSwgaW5wdXQgdmFsdWUgcHJvcCwgZXRjLlxuICAvLyBJbiBtb3N0IGNhc2VzLCB0aGlzIGNvbnNvbGUgb3V0cHV0IGFsc28gc2hvd3MgdGhlIGNvbXBvbmVudCBhbmQgaXRzXG4gIC8vIGFuY2VzdG9yIGNvbXBvbmVudHMgd2hlcmUgdGhlIGV4Y2VwdGlvbiBoYXBwZW5lZC5cbiAgLy9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG4gIHJldHVybiAnJyArIHZhbHVlO1xufVxuZnVuY3Rpb24gY2hlY2tLZXlTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICB7XG4gICAgaWYgKHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSkge1xuICAgICAgZXJyb3IoJ1RoZSBwcm92aWRlZCBrZXkgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4nICsgJyBUaGlzIHZhbHVlIG11c3QgYmUgY29lcmNlZCB0byBhIHN0cmluZyBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBkaXNwbGF5TmFtZSA9IG91dGVyVHlwZS5kaXNwbGF5TmFtZTtcblxuICBpZiAoZGlzcGxheU5hbWUpIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWU7XG4gIH1cblxuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gZnVuY3Rpb25OYW1lICE9PSAnJyA/IHdyYXBwZXJOYW1lICsgXCIoXCIgKyBmdW5jdGlvbk5hbWUgKyBcIilcIiA6IHdyYXBwZXJOYW1lO1xufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcblxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn1cblxudmFyIFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMiA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNsaWVudC5yZWZlcmVuY2UnKTsgLy8gTm90ZSB0aGF0IHRoZSByZWNvbmNpbGVyIHBhY2thZ2Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIGdldENvbXBvbmVudE5hbWVGcm9tRmliZXIoKSBpbnN0ZWFkLlxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgLy8gSG9zdCByb290LCB0ZXh0IG5vZGUgb3IganVzdCBpbnZhbGlkIHR5cGUuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQyKSB7XG4gICAgICAvLyBUT0RPOiBDcmVhdGUgYSBjb252ZW50aW9uIGZvciBuYW1pbmcgY2xpZW50IHJlZmVyZW5jZXMgd2l0aCBkZWJ1ZyBpbmZvLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICByZXR1cm4gJ0ZyYWdtZW50JztcblxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICByZXR1cm4gJ1BvcnRhbCc7XG5cbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICByZXR1cm4gJ1Byb2ZpbGVyJztcblxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgIHJldHVybiAnU3RyaWN0TW9kZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZUxpc3QnO1xuXG4gICAgY2FzZSBSRUFDVF9DQUNIRV9UWVBFOlxuICAgICAge1xuICAgICAgICByZXR1cm4gJ0NhY2hlJztcbiAgICAgIH1cblxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZS50YWcgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGVycm9yKCdSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gJyArICdUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUoY29udGV4dCkgKyAnLkNvbnN1bWVyJztcblxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB2YXIgcHJvdmlkZXIgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldFdyYXBwZWROYW1lKHR5cGUsIHR5cGUucmVuZGVyLCAnRm9yd2FyZFJlZicpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgdmFyIG91dGVyTmFtZSA9IHR5cGUuZGlzcGxheU5hbWUgfHwgbnVsbDtcblxuICAgICAgICBpZiAob3V0ZXJOYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG91dGVyTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnTWVtbyc7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShpbml0KHBheWxvYWQpKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyAkRmxvd0ZpeE1lW21ldGhvZC11bmJpbmRpbmddXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biwgZGlkV2FybkFib3V0U3RyaW5nUmVmcztcblxue1xuICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzID0ge307XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgY29uZmlnLl9fc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gY29uZmlnLl9fc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGNvbXBvbmVudE5hbWUsIGNvbmZpZy5yZWYpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgbm90IHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQGludGVybmFsXG4gKi9cblxuXG5mdW5jdGlvbiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93cyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudFxuICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG4gICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3BzLFxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIHtcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG4gICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cbiAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG4gICAgZWxlbWVudC5fc3RvcmUgPSB7fTsgLy8gVG8gbWFrZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdlIG1ha2VcbiAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVyZSBwb3NzaWJsZSwgd2hpY2ggc2hvdWxkXG4gICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3ZSBydW4gdGVzdHMgaW4pLCBzbyB0aGUgdGVzdCBmcmFtZXdvcmtcbiAgICAvLyBpZ25vcmVzIGl0LlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQuX3N0b3JlLCAndmFsaWRhdGVkJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9KTsgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBzZWxmXG4gICAgfSk7IC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgLy8gZXF1YWwgZm9yIHRlc3RpbmcgcHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20gZW51bWVyYXRpb24uXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3VyY2UnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc291cmNlXG4gICAgfSk7XG5cbiAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG4vKipcbiAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjY3JlYXRlZWxlbWVudFxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQkMSh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTsgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuXG4gIHZhciBwcm9wcyA9IHt9O1xuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG5cbiAgICAgIHtcbiAgICAgICAgd2FybklmU3RyaW5nUmVmQ2Fubm90QmVBdXRvQ29udmVydGVkKGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIHtcbiAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAgIH1cblxuICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcbiAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9IC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cblxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcblxuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkQXJyYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfSAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcblxuXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbn1cbmZ1bmN0aW9uIGNsb25lQW5kUmVwbGFjZUtleShvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG4vKipcbiAqIENsb25lIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNjbG9uZWVsZW1lbnRcbiAqL1xuXG5mdW5jdGlvbiBjbG9uZUVsZW1lbnQkMShlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIGlmIChlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiICsgZWxlbWVudCArIFwiLlwiKTtcbiAgfVxuXG4gIHZhciBwcm9wTmFtZTsgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuXG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyk7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICB2YXIga2V5ID0gZWxlbWVudC5rZXk7XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjsgLy8gU2VsZiBpcyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC5cblxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7IC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGFcbiAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuICAvLyB0cnVlIG93bmVyLlxuXG4gIHZhciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7IC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cblxuICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAgLy8gU2lsZW50bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuXG4gICAgICByZWYgPSBjb25maWcucmVmO1xuICAgICAgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIG92ZXJyaWRlIGV4aXN0aW5nIHByb3BzXG5cblxuICAgIHZhciBkZWZhdWx0UHJvcHM7XG5cbiAgICBpZiAoZWxlbWVudC50eXBlICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHtcbiAgICAgIGRlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgfVxuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgaWYgKGNvbmZpZ1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuXG5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuXG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2lzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIEBmaW5hbFxuICovXG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xufVxuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztcbi8qKlxuICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS5cbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7XG4gIHZhciBlc2NhcGVyTG9va3VwID0ge1xuICAgICc9JzogJz0wJyxcbiAgICAnOic6ICc9MidcbiAgfTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcgPSBrZXkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XG59XG4vKipcbiAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuICogcGF0dGVybi5cbiAqL1xuXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuXG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCAnJCYvJyk7XG59XG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBlbGVtZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGVsZW1lbnQgQSBlbGVtZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblxuXG5mdW5jdGlvbiBnZXRFbGVtZW50S2V5KGVsZW1lbnQsIGluZGV4KSB7XG4gIC8vIERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5zdXJlXG4gIC8vIHRoYXQgd2UgZG9uJ3QgYmxvY2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLlxuICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnICYmIGVsZW1lbnQgIT09IG51bGwgJiYgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgIC8vIEV4cGxpY2l0IGtleVxuICAgIHtcbiAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oZWxlbWVudC5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBlc2NhcGUoJycgKyBlbGVtZW50LmtleSk7XG4gIH0gLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcblxuXG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbmZ1bmN0aW9uIG1hcEludG9BcnJheShjaGlsZHJlbiwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5hbWVTb0ZhciwgY2FsbGJhY2spIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIHZhciBpbnZva2VDYWxsYmFjayA9IGZhbHNlO1xuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIGludm9rZUNhbGxiYWNrID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBpbnZva2VDYWxsYmFjayA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBzd2l0Y2ggKGNoaWxkcmVuLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICAgIGludm9rZUNhbGxiYWNrID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgaWYgKGludm9rZUNhbGxiYWNrKSB7XG4gICAgdmFyIF9jaGlsZCA9IGNoaWxkcmVuO1xuICAgIHZhciBtYXBwZWRDaGlsZCA9IGNhbGxiYWNrKF9jaGlsZCk7IC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93czpcblxuICAgIHZhciBjaGlsZEtleSA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRFbGVtZW50S2V5KF9jaGlsZCwgMCkgOiBuYW1lU29GYXI7XG5cbiAgICBpZiAoaXNBcnJheShtYXBwZWRDaGlsZCkpIHtcbiAgICAgIHZhciBlc2NhcGVkQ2hpbGRLZXkgPSAnJztcblxuICAgICAgaWYgKGNoaWxkS2V5ICE9IG51bGwpIHtcbiAgICAgICAgZXNjYXBlZENoaWxkS2V5ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KGNoaWxkS2V5KSArICcvJztcbiAgICAgIH1cblxuICAgICAgbWFwSW50b0FycmF5KG1hcHBlZENoaWxkLCBhcnJheSwgZXNjYXBlZENoaWxkS2V5LCAnJywgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKG1hcHBlZENoaWxkICE9IG51bGwpIHtcbiAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoZSBgaWZgIHN0YXRlbWVudCBoZXJlIHByZXZlbnRzIGF1dG8tZGlzYWJsaW5nIG9mIHRoZSBzYWZlXG4gICAgICAgICAgLy8gY29lcmNpb24gRVNMaW50IHJ1bGUsIHNvIHdlIG11c3QgbWFudWFsbHkgZGlzYWJsZSBpdCBiZWxvdy5cbiAgICAgICAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXSBGbG93IGluY29ycmVjdGx5IHRoaW5rcyBSZWFjdC5Qb3J0YWwgZG9lc24ndCBoYXZlIGEga2V5XG4gICAgICAgICAgaWYgKG1hcHBlZENoaWxkLmtleSAmJiAoIV9jaGlsZCB8fCBfY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpKSB7XG4gICAgICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1hcHBlZENoaWxkLmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbWFwcGVkQ2hpbGQgPSBjbG9uZUFuZFJlcGxhY2VLZXkobWFwcGVkQ2hpbGQsIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBkbyBmb3Igb2JqZWN0cyBhcyBjaGlsZHJlblxuICAgICAgICBlc2NhcGVkUHJlZml4ICsgKCAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXSBGbG93IGluY29ycmVjdGx5IHRoaW5rcyBSZWFjdC5Qb3J0YWwgZG9lc24ndCBoYXZlIGEga2V5XG4gICAgICAgIG1hcHBlZENoaWxkLmtleSAmJiAoIV9jaGlsZCB8fCBfY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpID8gZXNjYXBlVXNlclByb3ZpZGVkS2V5KCAvLyAkRmxvd0ZpeE1lW3Vuc2FmZS1hZGRpdGlvbl1cbiAgICAgICAgJycgKyBtYXBwZWRDaGlsZC5rZXkgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICAgICAgICApICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuICAgICAgfVxuXG4gICAgICBhcnJheS5wdXNoKG1hcHBlZENoaWxkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cblxuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xuXG4gIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0RWxlbWVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gbWFwSW50b0FycmF5KGNoaWxkLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgbmV4dE5hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcblxuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIGl0ZXJhYmxlQ2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgICAge1xuICAgICAgICAvLyBXYXJuIGFib3V0IHVzaW5nIE1hcHMgYXMgY2hpbGRyZW5cbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4gPT09IGl0ZXJhYmxlQ2hpbGRyZW4uZW50cmllcykge1xuICAgICAgICAgIGlmICghZGlkV2FybkFib3V0TWFwcykge1xuICAgICAgICAgICAgd2FybignVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ1VzZSBhbiBhcnJheSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGl0ZXJhYmxlQ2hpbGRyZW4pO1xuICAgICAgdmFyIHN0ZXA7XG4gICAgICB2YXIgaWkgPSAwOyAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdIGBpdGVyYXRvckZuYCBtaWdodCByZXR1cm4gbnVsbCBhY2NvcmRpbmcgdG8gdHlwaW5nLlxuXG4gICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkoY2hpbGQsIGlpKyspO1xuICAgICAgICBzdWJ0cmVlQ291bnQgKz0gbWFwSW50b0FycmF5KGNoaWxkLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgbmV4dE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiICsgKGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZykgKyBcIikuIFwiICsgJ0lmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG4vKipcbiAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRoZSBtYXAgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICovXG5cblxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICAvLyAkRmxvd0ZpeE1lIGxpbWl0YXRpb24gcmVmaW5pbmcgYWJzdHJhY3QgdHlwZXMgaW4gRmxvd1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgbWFwSW50b0FycmF5KGNoaWxkcmVuLCByZXN1bHQsICcnLCAnJywgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgY291bnQrKyk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVuY291bnRcbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIG4gPSAwO1xuICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKCkge1xuICAgIG4rKzsgLy8gRG9uJ3QgcmV0dXJuIGFueXRoaW5nXG4gIH0pO1xuICByZXR1cm4gbjtcbn1cbi8qKlxuICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVuZm9yZWFjaFxuICpcbiAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuICogQHBhcmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG4gIG1hcENoaWxkcmVuKGNoaWxkcmVuLCAvLyAkRmxvd0ZpeE1lW21pc3NpbmctdGhpcy1hbm5vdF1cbiAgZnVuY3Rpb24gKCkge1xuICAgIGZvckVhY2hGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIERvbid0IHJldHVybiBhbnl0aGluZy5cbiAgfSwgZm9yRWFjaENvbnRleHQpO1xufVxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW50b2FycmF5XG4gKi9cblxuXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHJldHVybiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KSB8fCBbXTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW5vbmx5XG4gKlxuICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5nbGUgY2hpbGQgZ2V0c1xuICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG9cbiAqIGFic3RyYWN0IGF3YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG4gKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBjb250YWluZWQgaW4gdGhlXG4gKiBzdHJ1Y3R1cmUuXG4gKi9cblxuXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgaWYgKCFpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSkge1xuICAvLyBUT0RPOiBTZWNvbmQgYXJndW1lbnQgdXNlZCB0byBiZSBhbiBvcHRpb25hbCBgY2FsY3VsYXRlQ2hhbmdlZEJpdHNgXG4gIC8vIGZ1bmN0aW9uLiBXYXJuIHRvIHJlc2VydmUgZm9yIGZ1dHVyZSB1c2U/XG4gIHZhciBjb250ZXh0ID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9DT05URVhUX1RZUEUsXG4gICAgLy8gQXMgYSB3b3JrYXJvdW5kIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uY3VycmVudCByZW5kZXJlcnMsIHdlIGNhdGVnb3JpemVcbiAgICAvLyBzb21lIHJlbmRlcmVycyBhcyBwcmltYXJ5IGFuZCBvdGhlcnMgYXMgc2Vjb25kYXJ5LiBXZSBvbmx5IGV4cGVjdFxuICAgIC8vIHRoZXJlIHRvIGJlIHR3byBjb25jdXJyZW50IHJlbmRlcmVycyBhdCBtb3N0OiBSZWFjdCBOYXRpdmUgKHByaW1hcnkpIGFuZFxuICAgIC8vIEZhYnJpYyAoc2Vjb25kYXJ5KTsgUmVhY3QgRE9NIChwcmltYXJ5KSBhbmQgUmVhY3QgQVJUIChzZWNvbmRhcnkpLlxuICAgIC8vIFNlY29uZGFyeSByZW5kZXJlcnMgc3RvcmUgdGhlaXIgY29udGV4dCB2YWx1ZXMgb24gc2VwYXJhdGUgZmllbGRzLlxuICAgIF9jdXJyZW50VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBfY3VycmVudFZhbHVlMjogZGVmYXVsdFZhbHVlLFxuICAgIC8vIFVzZWQgdG8gdHJhY2sgaG93IG1hbnkgY29uY3VycmVudCByZW5kZXJlcnMgdGhpcyBjb250ZXh0IGN1cnJlbnRseVxuICAgIC8vIHN1cHBvcnRzIHdpdGhpbiBpbiBhIHNpbmdsZSByZW5kZXJlci4gU3VjaCBhcyBwYXJhbGxlbCBzZXJ2ZXIgcmVuZGVyaW5nLlxuICAgIF90aHJlYWRDb3VudDogMCxcbiAgICAvLyBUaGVzZSBhcmUgY2lyY3VsYXJcbiAgICBQcm92aWRlcjogbnVsbCxcbiAgICBDb25zdW1lcjogbnVsbCxcbiAgICAvLyBBZGQgdGhlc2UgdG8gdXNlIHNhbWUgaGlkZGVuIGNsYXNzIGluIFZNIGFzIFNlcnZlckNvbnRleHRcbiAgICBfZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIF9nbG9iYWxOYW1lOiBudWxsXG4gIH07XG4gIGNvbnRleHQuUHJvdmlkZXIgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX1BST1ZJREVSX1RZUEUsXG4gICAgX2NvbnRleHQ6IGNvbnRleHRcbiAgfTtcbiAgdmFyIGhhc1dhcm5lZEFib3V0VXNpbmdOZXN0ZWRDb250ZXh0Q29uc3VtZXJzID0gZmFsc2U7XG4gIHZhciBoYXNXYXJuZWRBYm91dFVzaW5nQ29uc3VtZXJQcm92aWRlciA9IGZhbHNlO1xuICB2YXIgaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIgPSBmYWxzZTtcblxuICB7XG4gICAgLy8gQSBzZXBhcmF0ZSBvYmplY3QsIGJ1dCBwcm94aWVzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbnRleHQgb2JqZWN0IGZvclxuICAgIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBJdCBoYXMgYSBkaWZmZXJlbnQgJCR0eXBlb2YsIHNvIHdlIGNhbiBwcm9wZXJseVxuICAgIC8vIHdhcm4gZm9yIHRoZSBpbmNvcnJlY3QgdXNhZ2Ugb2YgQ29udGV4dCBhcyBhIENvbnN1bWVyLlxuICAgIHZhciBDb25zdW1lciA9IHtcbiAgICAgICQkdHlwZW9mOiBSRUFDVF9DT05URVhUX1RZUEUsXG4gICAgICBfY29udGV4dDogY29udGV4dFxuICAgIH07IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogRmxvdyBjb21wbGFpbnMgYWJvdXQgbm90IHNldHRpbmcgYSB2YWx1ZSwgd2hpY2ggaXMgaW50ZW50aW9uYWwgaGVyZVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ29uc3VtZXIsIHtcbiAgICAgIFByb3ZpZGVyOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXRVc2luZ0NvbnN1bWVyUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZEFib3V0VXNpbmdDb25zdW1lclByb3ZpZGVyID0gdHJ1ZTtcblxuICAgICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dC5Db25zdW1lci5Qcm92aWRlcj4gaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Qcm92aWRlcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGV4dC5Qcm92aWRlcjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX1Byb3ZpZGVyKSB7XG4gICAgICAgICAgY29udGV4dC5Qcm92aWRlciA9IF9Qcm92aWRlcjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIF9jdXJyZW50VmFsdWU6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX2N1cnJlbnRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX2N1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIGNvbnRleHQuX2N1cnJlbnRWYWx1ZSA9IF9jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfY3VycmVudFZhbHVlMjoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5fY3VycmVudFZhbHVlMjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoX2N1cnJlbnRWYWx1ZTIpIHtcbiAgICAgICAgICBjb250ZXh0Ll9jdXJyZW50VmFsdWUyID0gX2N1cnJlbnRWYWx1ZTI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBfdGhyZWFkQ291bnQ6IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3RocmVhZENvdW50O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChfdGhyZWFkQ291bnQpIHtcbiAgICAgICAgICBjb250ZXh0Ll90aHJlYWRDb3VudCA9IF90aHJlYWRDb3VudDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIENvbnN1bWVyOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXRVc2luZ05lc3RlZENvbnRleHRDb25zdW1lcnMpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZEFib3V0VXNpbmdOZXN0ZWRDb250ZXh0Q29uc3VtZXJzID0gdHJ1ZTtcblxuICAgICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dC5Db25zdW1lci5Db25zdW1lcj4gaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Db25zdW1lcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGV4dC5Db25zdW1lcjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc3BsYXlOYW1lOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjb250ZXh0LmRpc3BsYXlOYW1lO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChkaXNwbGF5TmFtZSkge1xuICAgICAgICAgIGlmICghaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIpIHtcbiAgICAgICAgICAgIHdhcm4oJ1NldHRpbmcgYGRpc3BsYXlOYW1lYCBvbiBDb250ZXh0LkNvbnN1bWVyIGhhcyBubyBlZmZlY3QuICcgKyBcIllvdSBzaG91bGQgc2V0IGl0IGRpcmVjdGx5IG9uIHRoZSBjb250ZXh0IHdpdGggQ29udGV4dC5kaXNwbGF5TmFtZSA9ICclcycuXCIsIGRpc3BsYXlOYW1lKTtcblxuICAgICAgICAgICAgaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pOyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IEZsb3cgY29tcGxhaW5zIGFib3V0IG1pc3NpbmcgcHJvcGVydGllcyBiZWNhdXNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCBkZWZpbmVQcm9wZXJ0eVxuXG4gICAgY29udGV4dC5Db25zdW1lciA9IENvbnN1bWVyO1xuICB9XG5cbiAge1xuICAgIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlciA9IG51bGw7XG4gICAgY29udGV4dC5fY3VycmVudFJlbmRlcmVyMiA9IG51bGw7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cblxudmFyIFVuaW5pdGlhbGl6ZWQgPSAtMTtcbnZhciBQZW5kaW5nID0gMDtcbnZhciBSZXNvbHZlZCA9IDE7XG52YXIgUmVqZWN0ZWQgPSAyO1xuXG5mdW5jdGlvbiBsYXp5SW5pdGlhbGl6ZXIocGF5bG9hZCkge1xuICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgdmFyIGN0b3IgPSBwYXlsb2FkLl9yZXN1bHQ7XG4gICAgdmFyIHRoZW5hYmxlID0gY3RvcigpOyAvLyBUcmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLlxuICAgIC8vIFRoaXMgbWlnaHQgdGhyb3cgZWl0aGVyIGJlY2F1c2UgaXQncyBtaXNzaW5nIG9yIHRocm93cy4gSWYgc28sIHdlIHRyZWF0IGl0XG4gICAgLy8gYXMgc3RpbGwgdW5pbml0aWFsaXplZCBhbmQgdHJ5IGFnYWluIG5leHQgdGltZS4gV2hpY2ggaXMgdGhlIHNhbWUgYXMgd2hhdFxuICAgIC8vIGhhcHBlbnMgaWYgdGhlIGN0b3Igb3IgYW55IHdyYXBwZXJzIHByb2Nlc3NpbmcgdGhlIGN0b3IgdGhyb3dzLiBUaGlzIG1pZ2h0XG4gICAgLy8gZW5kIHVwIGZpeGluZyBpdCBpZiB0aGUgcmVzb2x1dGlvbiB3YXMgYSBjb25jdXJyZW5jeSBidWcuXG5cbiAgICB0aGVuYWJsZS50aGVuKGZ1bmN0aW9uIChtb2R1bGVPYmplY3QpIHtcbiAgICAgIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFBlbmRpbmcgfHwgcGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgICAgIC8vIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc3RhdGUuXG4gICAgICAgIHZhciByZXNvbHZlZCA9IHBheWxvYWQ7XG4gICAgICAgIHJlc29sdmVkLl9zdGF0dXMgPSBSZXNvbHZlZDtcbiAgICAgICAgcmVzb2x2ZWQuX3Jlc3VsdCA9IG1vZHVsZU9iamVjdDtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFBlbmRpbmcgfHwgcGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgICAgIC8vIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc3RhdGUuXG4gICAgICAgIHZhciByZWplY3RlZCA9IHBheWxvYWQ7XG4gICAgICAgIHJlamVjdGVkLl9zdGF0dXMgPSBSZWplY3RlZDtcbiAgICAgICAgcmVqZWN0ZWQuX3Jlc3VsdCA9IGVycm9yO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gVW5pbml0aWFsaXplZCkge1xuICAgICAgLy8gSW4gY2FzZSwgd2UncmUgc3RpbGwgdW5pbml0aWFsaXplZCwgdGhlbiB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgdGhlbmFibGVcbiAgICAgIC8vIHRvIHJlc29sdmUuIFNldCBpdCBhcyBwZW5kaW5nIGluIHRoZSBtZWFudGltZS5cbiAgICAgIHZhciBwZW5kaW5nID0gcGF5bG9hZDtcbiAgICAgIHBlbmRpbmcuX3N0YXR1cyA9IFBlbmRpbmc7XG4gICAgICBwZW5kaW5nLl9yZXN1bHQgPSB0aGVuYWJsZTtcbiAgICB9XG4gIH1cblxuICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBSZXNvbHZlZCkge1xuICAgIHZhciBtb2R1bGVPYmplY3QgPSBwYXlsb2FkLl9yZXN1bHQ7XG5cbiAgICB7XG4gICAgICBpZiAobW9kdWxlT2JqZWN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXJyb3IoJ2xhenk6IEV4cGVjdGVkIHRoZSByZXN1bHQgb2YgYSBkeW5hbWljIGltcCcgKyAnb3J0KCkgY2FsbC4gJyArICdJbnN0ZWFkIHJlY2VpdmVkOiAlc1xcblxcbllvdXIgY29kZSBzaG91bGQgbG9vayBsaWtlOiBcXG4gICcgKyAvLyBCcmVhayB1cCBpbXBvcnRzIHRvIGF2b2lkIGFjY2lkZW50YWxseSBwYXJzaW5nIHRoZW0gYXMgZGVwZW5kZW5jaWVzLlxuICAgICAgICAnY29uc3QgTXlDb21wb25lbnQgPSBsYXp5KCgpID0+IGltcCcgKyBcIm9ydCgnLi9NeUNvbXBvbmVudCcpKVxcblxcblwiICsgJ0RpZCB5b3UgYWNjaWRlbnRhbGx5IHB1dCBjdXJseSBicmFjZXMgYXJvdW5kIHRoZSBpbXBvcnQ/JywgbW9kdWxlT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAoISgnZGVmYXVsdCcgaW4gbW9kdWxlT2JqZWN0KSkge1xuICAgICAgICBlcnJvcignbGF6eTogRXhwZWN0ZWQgdGhlIHJlc3VsdCBvZiBhIGR5bmFtaWMgaW1wJyArICdvcnQoKSBjYWxsLiAnICsgJ0luc3RlYWQgcmVjZWl2ZWQ6ICVzXFxuXFxuWW91ciBjb2RlIHNob3VsZCBsb29rIGxpa2U6IFxcbiAgJyArIC8vIEJyZWFrIHVwIGltcG9ydHMgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IHBhcnNpbmcgdGhlbSBhcyBkZXBlbmRlbmNpZXMuXG4gICAgICAgICdjb25zdCBNeUNvbXBvbmVudCA9IGxhenkoKCkgPT4gaW1wJyArIFwib3J0KCcuL015Q29tcG9uZW50JykpXCIsIG1vZHVsZU9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZU9iamVjdC5kZWZhdWx0O1xuICB9IGVsc2Uge1xuICAgIHRocm93IHBheWxvYWQuX3Jlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBsYXp5KGN0b3IpIHtcbiAgdmFyIHBheWxvYWQgPSB7XG4gICAgLy8gV2UgdXNlIHRoZXNlIGZpZWxkcyB0byBzdG9yZSB0aGUgcmVzdWx0LlxuICAgIF9zdGF0dXM6IFVuaW5pdGlhbGl6ZWQsXG4gICAgX3Jlc3VsdDogY3RvclxuICB9O1xuICB2YXIgbGF6eVR5cGUgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0xBWllfVFlQRSxcbiAgICBfcGF5bG9hZDogcGF5bG9hZCxcbiAgICBfaW5pdDogbGF6eUluaXRpYWxpemVyXG4gIH07XG5cbiAge1xuICAgIC8vIEluIHByb2R1Y3Rpb24sIHRoaXMgd291bGQganVzdCBzZXQgaXQgb24gdGhlIG9iamVjdC5cbiAgICB2YXIgZGVmYXVsdFByb3BzO1xuICAgIHZhciBwcm9wVHlwZXM7IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGF6eVR5cGUsIHtcbiAgICAgIGRlZmF1bHRQcm9wczoge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0UHJvcHM7XG4gICAgICAgIH0sXG4gICAgICAgIC8vICRGbG93Rml4TWVbbWlzc2luZy1sb2NhbC1hbm5vdF1cbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3RGVmYXVsdFByb3BzKSB7XG4gICAgICAgICAgZXJyb3IoJ1JlYWN0LmxhenkoLi4uKTogSXQgaXMgbm90IHN1cHBvcnRlZCB0byBhc3NpZ24gYGRlZmF1bHRQcm9wc2AgdG8gJyArICdhIGxhenkgY29tcG9uZW50IGltcG9ydC4gRWl0aGVyIHNwZWNpZnkgdGhlbSB3aGVyZSB0aGUgY29tcG9uZW50ICcgKyAnaXMgZGVmaW5lZCwgb3IgY3JlYXRlIGEgd3JhcHBpbmcgY29tcG9uZW50IGFyb3VuZCBpdC4nKTtcblxuICAgICAgICAgIGRlZmF1bHRQcm9wcyA9IG5ld0RlZmF1bHRQcm9wczsgLy8gTWF0Y2ggcHJvZHVjdGlvbiBiZWhhdmlvciBtb3JlIGNsb3NlbHk6XG4gICAgICAgICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eVR5cGUsICdkZWZhdWx0UHJvcHMnLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9wVHlwZXM6IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gcHJvcFR5cGVzO1xuICAgICAgICB9LFxuICAgICAgICAvLyAkRmxvd0ZpeE1lW21pc3NpbmctbG9jYWwtYW5ub3RdXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5ld1Byb3BUeXBlcykge1xuICAgICAgICAgIGVycm9yKCdSZWFjdC5sYXp5KC4uLik6IEl0IGlzIG5vdCBzdXBwb3J0ZWQgdG8gYXNzaWduIGBwcm9wVHlwZXNgIHRvICcgKyAnYSBsYXp5IGNvbXBvbmVudCBpbXBvcnQuIEVpdGhlciBzcGVjaWZ5IHRoZW0gd2hlcmUgdGhlIGNvbXBvbmVudCAnICsgJ2lzIGRlZmluZWQsIG9yIGNyZWF0ZSBhIHdyYXBwaW5nIGNvbXBvbmVudCBhcm91bmQgaXQuJyk7XG5cbiAgICAgICAgICBwcm9wVHlwZXMgPSBuZXdQcm9wVHlwZXM7IC8vIE1hdGNoIHByb2R1Y3Rpb24gYmVoYXZpb3IgbW9yZSBjbG9zZWx5OlxuICAgICAgICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxhenlUeXBlLCAncHJvcFR5cGVzJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbGF6eVR5cGU7XG59XG5cbmZ1bmN0aW9uIGZvcndhcmRSZWYocmVuZGVyKSB7XG4gIHtcbiAgICBpZiAocmVuZGVyICE9IG51bGwgJiYgcmVuZGVyLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCByZWNlaXZlZCBhIGBtZW1vYCAnICsgJ2NvbXBvbmVudC4gSW5zdGVhZCBvZiBmb3J3YXJkUmVmKG1lbW8oLi4uKSksIHVzZSAnICsgJ21lbW8oZm9yd2FyZFJlZiguLi4pKS4nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZW5kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCB3YXMgZ2l2ZW4gJXMuJywgcmVuZGVyID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHJlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZW5kZXIubGVuZ3RoICE9PSAwICYmIHJlbmRlci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgZXJyb3IoJ2ZvcndhcmRSZWYgcmVuZGVyIGZ1bmN0aW9ucyBhY2NlcHQgZXhhY3RseSB0d28gcGFyYW1ldGVyczogcHJvcHMgYW5kIHJlZi4gJXMnLCByZW5kZXIubGVuZ3RoID09PSAxID8gJ0RpZCB5b3UgZm9yZ2V0IHRvIHVzZSB0aGUgcmVmIHBhcmFtZXRlcj8nIDogJ0FueSBhZGRpdGlvbmFsIHBhcmFtZXRlciB3aWxsIGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVuZGVyICE9IG51bGwpIHtcbiAgICAgIGlmIChyZW5kZXIuZGVmYXVsdFByb3BzICE9IG51bGwgfHwgcmVuZGVyLnByb3BUeXBlcyAhPSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlbmRlciBmdW5jdGlvbnMgZG8gbm90IHN1cHBvcnQgcHJvcFR5cGVzIG9yIGRlZmF1bHRQcm9wcy4gJyArICdEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIGEgUmVhY3QgY29tcG9uZW50PycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSxcbiAgICByZW5kZXI6IHJlbmRlclxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHsuLi59KTtcbiAgICAgICAgLy8gVGhpcyBraW5kIG9mIGlubmVyIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGVsc2V3aGVyZSBzbyB0aGUgc2lkZSBlZmZlY3QgaXMgb2theS5cblxuICAgICAgICBpZiAoIXJlbmRlci5uYW1lICYmICFyZW5kZXIuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICByZW5kZXIuZGlzcGxheU5hbWUgPSBuYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudFR5cGU7XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgPSBTeW1ib2wuZm9yKCdyZWFjdC5jbGllbnQucmVmZXJlbmNlJyk7XG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gTm90ZTogdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgKGUuZy4gaWYgaXQncyBhIHBvbHlmaWxsKS5cblxuXG4gIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgZW5hYmxlRGVidWdUcmFjaW5nICB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IGVuYWJsZUxlZ2FjeUhpZGRlbiAgfHwgdHlwZSA9PT0gUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgfHwgZW5hYmxlU2NvcGVBUEkgIHx8IGVuYWJsZUNhY2hlRWxlbWVudCAgfHwgZW5hYmxlVHJhbnNpdGlvblRyYWNpbmcgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIFRoaXMgbmVlZHMgdG8gaW5jbHVkZSBhbGwgcG9zc2libGUgbW9kdWxlIHJlZmVyZW5jZSBvYmplY3RcbiAgICAvLyB0eXBlcyBzdXBwb3J0ZWQgYnkgYW55IEZsaWdodCBjb25maWd1cmF0aW9uIGFueXdoZXJlIHNpbmNlXG4gICAgLy8gd2UgZG9uJ3Qga25vdyB3aGljaCBGbGlnaHQgYnVpbGQgdGhpcyB3aWxsIGVuZCB1cCBiZWluZyB1c2VkXG4gICAgLy8gd2l0aC5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgfHwgdHlwZS5nZXRNb2R1bGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1lbW8odHlwZSwgY29tcGFyZSkge1xuICB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkpIHtcbiAgICAgIGVycm9yKCdtZW1vOiBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGNvbXBvbmVudC4gSW5zdGVhZCAnICsgJ3JlY2VpdmVkOiAlcycsIHR5cGUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGVsZW1lbnRUeXBlID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9NRU1PX1RZUEUsXG4gICAgdHlwZTogdHlwZSxcbiAgICBjb21wYXJlOiBjb21wYXJlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29tcGFyZVxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7Li4ufSk7XG4gICAgICAgIC8vIFRoaXMga2luZCBvZiBpbm5lciBmdW5jdGlvbiBpcyBub3QgdXNlZCBlbHNld2hlcmUgc28gdGhlIHNpZGUgZWZmZWN0IGlzIG9rYXkuXG5cbiAgICAgICAgaWYgKCF0eXBlLm5hbWUgJiYgIXR5cGUuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICB0eXBlLmRpc3BsYXlOYW1lID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRUeXBlO1xufVxuXG52YXIgVU5URVJNSU5BVEVEID0gMDtcbnZhciBURVJNSU5BVEVEID0gMTtcbnZhciBFUlJPUkVEID0gMjtcblxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVSb290KCkge1xuICByZXR1cm4gbmV3IFdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVOb2RlKCkge1xuICByZXR1cm4ge1xuICAgIHM6IFVOVEVSTUlOQVRFRCxcbiAgICAvLyBzdGF0dXMsIHJlcHJlc2VudHMgd2hldGhlciB0aGUgY2FjaGVkIGNvbXB1dGF0aW9uIHJldHVybmVkIGEgdmFsdWUgb3IgdGhyZXcgYW4gZXJyb3JcbiAgICB2OiB1bmRlZmluZWQsXG4gICAgLy8gdmFsdWUsIGVpdGhlciB0aGUgY2FjaGVkIHJlc3VsdCBvciBhbiBlcnJvciwgZGVwZW5kaW5nIG9uIHNcbiAgICBvOiBudWxsLFxuICAgIC8vIG9iamVjdCBjYWNoZSwgYSBXZWFrTWFwIHdoZXJlIG5vbi1wcmltaXRpdmUgYXJndW1lbnRzIGFyZSBzdG9yZWRcbiAgICBwOiBudWxsIC8vIHByaW1pdGl2ZSBjYWNoZSwgYSByZWd1bGFyIE1hcCB3aGVyZSBwcmltaXRpdmUgYXJndW1lbnRzIGFyZSBzdG9yZWQuXG5cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FjaGUoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudENhY2hlLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGRpc3BhdGNoZXIsIHRoZW4gd2UgdHJlYXQgdGhpcyBhcyBub3QgYmVpbmcgY2FjaGVkLlxuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IFdlIGRvbid0IHdhbnQgdG8gdXNlIHJlc3QgYXJndW1lbnRzIHNpbmNlIHdlIHRyYW5zcGlsZSB0aGUgY29kZS5cbiAgICAgIHJldHVybiBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHZhciBmbk1hcCA9IGRpc3BhdGNoZXIuZ2V0Q2FjaGVGb3JUeXBlKGNyZWF0ZUNhY2hlUm9vdCk7XG4gICAgdmFyIGZuTm9kZSA9IGZuTWFwLmdldChmbik7XG4gICAgdmFyIGNhY2hlTm9kZTtcblxuICAgIGlmIChmbk5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICBmbk1hcC5zZXQoZm4sIGNhY2hlTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlTm9kZSA9IGZuTm9kZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbCkge1xuICAgICAgICAvLyBPYmplY3RzIGdvIGludG8gYSBXZWFrTWFwXG4gICAgICAgIHZhciBvYmplY3RDYWNoZSA9IGNhY2hlTm9kZS5vO1xuXG4gICAgICAgIGlmIChvYmplY3RDYWNoZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGNhY2hlTm9kZS5vID0gb2JqZWN0Q2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9iamVjdE5vZGUgPSBvYmplY3RDYWNoZS5nZXQoYXJnKTtcblxuICAgICAgICBpZiAob2JqZWN0Tm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgb2JqZWN0Q2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBvYmplY3ROb2RlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcmltaXRpdmVzIGdvIGludG8gYSByZWd1bGFyIE1hcFxuICAgICAgICB2YXIgcHJpbWl0aXZlQ2FjaGUgPSBjYWNoZU5vZGUucDtcblxuICAgICAgICBpZiAocHJpbWl0aXZlQ2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgICBjYWNoZU5vZGUucCA9IHByaW1pdGl2ZUNhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByaW1pdGl2ZU5vZGUgPSBwcmltaXRpdmVDYWNoZS5nZXQoYXJnKTtcblxuICAgICAgICBpZiAocHJpbWl0aXZlTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgcHJpbWl0aXZlQ2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBwcmltaXRpdmVOb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlTm9kZS5zID09PSBURVJNSU5BVEVEKSB7XG4gICAgICByZXR1cm4gY2FjaGVOb2RlLnY7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlTm9kZS5zID09PSBFUlJPUkVEKSB7XG4gICAgICB0aHJvdyBjYWNoZU5vZGUudjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IFdlIGRvbid0IHdhbnQgdG8gdXNlIHJlc3QgYXJndW1lbnRzIHNpbmNlIHdlIHRyYW5zcGlsZSB0aGUgY29kZS5cbiAgICAgIHZhciByZXN1bHQgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgdmFyIHRlcm1pbmF0ZWROb2RlID0gY2FjaGVOb2RlO1xuICAgICAgdGVybWluYXRlZE5vZGUucyA9IFRFUk1JTkFURUQ7XG4gICAgICB0ZXJtaW5hdGVkTm9kZS52ID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gV2Ugc3RvcmUgdGhlIGZpcnN0IGVycm9yIHRoYXQncyB0aHJvd24gYW5kIHJldGhyb3cgaXQuXG4gICAgICB2YXIgZXJyb3JlZE5vZGUgPSBjYWNoZU5vZGU7XG4gICAgICBlcnJvcmVkTm9kZS5zID0gRVJST1JFRDtcbiAgICAgIGVycm9yZWROb2RlLnYgPSBlcnJvcjtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURpc3BhdGNoZXIoKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQ7XG5cbiAge1xuICAgIGlmIChkaXNwYXRjaGVyID09PSBudWxsKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICAgIH1cbiAgfSAvLyBXaWxsIHJlc3VsdCBpbiBhIG51bGwgYWNjZXNzIGVycm9yIGlmIGFjY2Vzc2VkIG91dHNpZGUgcmVuZGVyIHBoYXNlLiBXZVxuICAvLyBpbnRlbnRpb25hbGx5IGRvbid0IHRocm93IG91ciBvd24gZXJyb3IgYmVjYXVzZSB0aGlzIGlzIGluIGEgaG90IHBhdGguXG4gIC8vIEFsc28gaGVscHMgZW5zdXJlIHRoaXMgaXMgaW5saW5lZC5cblxuXG4gIHJldHVybiBkaXNwYXRjaGVyO1xufVxuZnVuY3Rpb24gdXNlQ29udGV4dChDb250ZXh0KSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcblxuICB7XG4gICAgLy8gVE9ETzogYWRkIGEgbW9yZSBnZW5lcmljIHdhcm5pbmcgZm9yIGludmFsaWQgdmFsdWVzLlxuICAgIGlmIChDb250ZXh0Ll9jb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZWFsQ29udGV4dCA9IENvbnRleHQuX2NvbnRleHQ7IC8vIERvbid0IGRlZHVwbGljYXRlIGJlY2F1c2UgdGhpcyBsZWdpdGltYXRlbHkgY2F1c2VzIGJ1Z3NcbiAgICAgIC8vIGFuZCBub2JvZHkgc2hvdWxkIGJlIHVzaW5nIHRoaXMgaW4gZXhpc3RpbmcgY29kZS5cblxuICAgICAgaWYgKHJlYWxDb250ZXh0LkNvbnN1bWVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Db25zdW1lcikgaXMgbm90IHN1cHBvcnRlZCwgbWF5IGNhdXNlIGJ1Z3MsIGFuZCB3aWxsIGJlICcgKyAncmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9IGVsc2UgaWYgKHJlYWxDb250ZXh0LlByb3ZpZGVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Qcm92aWRlcikgaXMgbm90IHN1cHBvcnRlZC4gJyArICdEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlQ29udGV4dChDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZVN0YXRlKGluaXRpYWxTdGF0ZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVN0YXRlKGluaXRpYWxTdGF0ZSk7XG59XG5mdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpO1xufVxuZnVuY3Rpb24gdXNlUmVmKGluaXRpYWxWYWx1ZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVJlZihpbml0aWFsVmFsdWUpO1xufVxuZnVuY3Rpb24gdXNlRWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlSW5zZXJ0aW9uRWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlTGF5b3V0RWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUxheW91dEVmZmVjdChjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlQ2FsbGJhY2soY2FsbGJhY2ssIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VDYWxsYmFjayhjYWxsYmFjaywgZGVwcyk7XG59XG5mdW5jdGlvbiB1c2VNZW1vKGNyZWF0ZSwgZGVwcykge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZU1lbW8oY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlckZuKSB7XG4gIHtcbiAgICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gICAgcmV0dXJuIGRpc3BhdGNoZXIudXNlRGVidWdWYWx1ZSh2YWx1ZSwgZm9ybWF0dGVyRm4pO1xuICB9XG59XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZVRyYW5zaXRpb24oKTtcbn1cbmZ1bmN0aW9uIHVzZURlZmVycmVkVmFsdWUodmFsdWUsIGluaXRpYWxWYWx1ZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZURlZmVycmVkVmFsdWUodmFsdWUsIGluaXRpYWxWYWx1ZSk7XG59XG5mdW5jdGlvbiB1c2VJZCgpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VJZCgpO1xufVxuZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCk7XG59XG5mdW5jdGlvbiB1c2VDYWNoZVJlZnJlc2goKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTsgLy8gJEZsb3dGaXhNZVtub3QtYS1mdW5jdGlvbl0gVGhpcyBpcyB1bnN0YWJsZSwgdGh1cyBvcHRpb25hbFxuXG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZUNhY2hlUmVmcmVzaCgpO1xufVxuZnVuY3Rpb24gdXNlKHVzYWJsZSkge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7XG4gIHJldHVybiBkaXNwYXRjaGVyLnVzZSh1c2FibGUpO1xufVxuZnVuY3Rpb24gdXNlT3B0aW1pc3RpYyhwYXNzdGhyb3VnaCwgcmVkdWNlcikge1xuICB2YXIgZGlzcGF0Y2hlciA9IHJlc29sdmVEaXNwYXRjaGVyKCk7IC8vICRGbG93Rml4TWVbbm90LWEtZnVuY3Rpb25dIFRoaXMgaXMgdW5zdGFibGUsIHRodXMgb3B0aW9uYWxcblxuICByZXR1cm4gZGlzcGF0Y2hlci51c2VPcHRpbWlzdGljKHBhc3N0aHJvdWdoLCByZWR1Y2VyKTtcbn1cblxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxuLy8gcmVwbGF5aW5nIG9uIHJlbmRlciBmdW5jdGlvbi4gVGhpcyBjdXJyZW50bHkgb25seSBwYXRjaGVzIHRoZSBvYmplY3Rcbi8vIGxhemlseSB3aGljaCB3b24ndCBjb3ZlciBpZiB0aGUgbG9nIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZWFnZXJseS5cbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxudmFyIGRpc2FibGVkRGVwdGggPSAwO1xudmFyIHByZXZMb2c7XG52YXIgcHJldkluZm87XG52YXIgcHJldldhcm47XG52YXIgcHJldkVycm9yO1xudmFyIHByZXZHcm91cDtcbnZhciBwcmV2R3JvdXBDb2xsYXBzZWQ7XG52YXIgcHJldkdyb3VwRW5kO1xuXG5mdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG5cbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XG5mdW5jdGlvbiBkaXNhYmxlTG9ncygpIHtcbiAge1xuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHByZXZMb2cgPSBjb25zb2xlLmxvZztcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICBwcmV2RXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICBwcmV2R3JvdXBFbmQgPSBjb25zb2xlLmdyb3VwRW5kOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MDk5XG5cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZGlzYWJsZWRMb2csXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV0gRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgIHdhcm46IHByb3BzLFxuICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IHByb3BzLFxuICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBkaXNhYmxlZERlcHRoKys7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAge1xuICAgIGRpc2FibGVkRGVwdGgtLTtcblxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cbi8qKlxuICogTGV2ZXJhZ2VzIG5hdGl2ZSBicm93c2VyL1ZNIHN0YWNrIGZyYW1lcyB0byBnZXQgcHJvcGVyIGRldGFpbHMgKGUuZy5cbiAqIGZpbGVuYW1lLCBsaW5lICsgY29sIG51bWJlcikgZm9yIGEgc2luZ2xlIGNvbXBvbmVudCBpbiBhIGNvbXBvbmVudCBzdGFjay4gV2VcbiAqIGRvIHRoaXMgYnk6XG4gKiAgICgxKSB0aHJvd2luZyBhbmQgY2F0Y2hpbmcgYW4gZXJyb3IgaW4gdGhlIGZ1bmN0aW9uIC0gdGhpcyB3aWxsIGJlIG91clxuICogICAgICAgY29udHJvbCBlcnJvci5cbiAqICAgKDIpIGNhbGxpbmcgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgdGhyb3cgYW4gZXJyb3IgdGhhdCB3ZSdsbFxuICogICAgICAgY2F0Y2ggLSB0aGlzIHdpbGwgYmUgb3VyIHNhbXBsZSBlcnJvci5cbiAqICAgKDMpIGRpZmZpbmcgdGhlIGNvbnRyb2wgYW5kIHNhbXBsZSBlcnJvciBzdGFja3MgdG8gZmluZCB0aGUgc3RhY2sgZnJhbWVcbiAqICAgICAgIHdoaWNoIHJlcHJlc2VudHMgb3VyIGNvbXBvbmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmRpbmcgYSBjb21tb24gc3RhY2sgZnJhbWUgYmV0d2VlbiBzYW1wbGUgYW5kIGNvbnRyb2wgZXJyb3JzIGNhbiBiZVxuICAgKiB0cmlja3kgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcyBhbmQgbGV2ZWxzIG9mIHN0YWNrIHRyYWNlIHRydW5jYXRpb24gZnJvbVxuICAgKiBkaWZmZXJlbnQgSlMgVk1zLiBTbyBpbnN0ZWFkIHdlJ2xsIGF0dGVtcHQgdG8gY29udHJvbCB3aGF0IHRoYXQgY29tbW9uXG4gICAqIGZyYW1lIHNob3VsZCBiZSB0aHJvdWdoIHRoaXMgb2JqZWN0IG1ldGhvZDpcbiAgICogSGF2aW5nIGJvdGggdGhlIHNhbXBsZSBhbmQgY29udHJvbCBlcnJvcnMgYmUgaW4gdGhlIGZ1bmN0aW9uIHVuZGVyIHRoZVxuICAgKiBgRGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZVJvb3RgIHByb3BlcnR5LCArIHNldHRpbmcgdGhlIGBuYW1lYCBhbmRcbiAgICogYGRpc3BsYXlOYW1lYCBwcm9wZXJ0aWVzIG9mIHRoZSBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgYSBzdGFja1xuICAgKiBmcmFtZSBleGlzdHMgdGhhdCBoYXMgdGhlIG1ldGhvZCBuYW1lIGBEZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lUm9vdGAgaW5cbiAgICogaXQgZm9yIGJvdGggY29udHJvbCBhbmQgc2FtcGxlIHN0YWNrcy5cbiAgICovXG5cblxuICB2YXIgUnVuSW5Sb290RnJhbWUgPSB7XG4gICAgRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY29udHJvbDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfTsgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddIGZvdW5kIHdoZW4gdXBncmFkaW5nIEZsb3dcblxuXG4gICAgICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgfSAvLyBUT0RPKGx1bmEpOiBUaGlzIHdpbGwgY3VycmVudGx5IG9ubHkgdGhyb3cgaWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudFxuICAgICAgICAgIC8vIHRyaWVzIHRvIGFjY2VzcyBSZWFjdC9SZWFjdERPTS9wcm9wcy4gV2Ugc2hvdWxkIHByb2JhYmx5IG1ha2UgdGhpcyB0aHJvd1xuICAgICAgICAgIC8vIGluIHNpbXBsZSBjb21wb25lbnRzIHRvb1xuXG5cbiAgICAgICAgICB2YXIgbWF5YmVQcm9taXNlID0gZm4oKTsgLy8gSWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudCByZXR1cm5zIGEgcHJvbWlzZSwgaXQncyBsaWtlbHkgYW4gYXN5bmNcbiAgICAgICAgICAvLyBjb21wb25lbnQsIHdoaWNoIHdlIGRvbid0IHlldCBzdXBwb3J0LiBBdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgdG9cbiAgICAgICAgICAvLyBzaWxlbmNlIHRoZSBlcnJvci5cbiAgICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY29tcG9uZW50IHN0YWNrcyBmb3IgYXN5bmMgY2xpZW50IGNvbXBvbmVudHM/XG5cbiAgICAgICAgICBpZiAobWF5YmVQcm9taXNlICYmIHR5cGVvZiBtYXliZVByb21pc2UuY2F0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG1heWJlUHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07XG4gICAgfVxuICB9OyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cblxuICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWUgPSAnRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290JztcbiAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LCAnbmFtZScpOyAvLyBCZWZvcmUgRVM2LCB0aGUgYG5hbWVgIHByb3BlcnR5IHdhcyBub3QgY29uZmlndXJhYmxlLlxuXG4gIGlmIChuYW1lUHJvcERlc2NyaXB0b3IgJiYgbmFtZVByb3BEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgIC8vIFY4IHV0aWxpemVzIGEgZnVuY3Rpb24ncyBgbmFtZWAgcHJvcGVydHkgd2hlbiBnZW5lcmF0aW5nIGEgc3RhY2sgdHJhY2UuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwgLy8gQ29uZmlndXJhYmxlIHByb3BlcnRpZXMgY2FuIGJlIHVwZGF0ZWQgZXZlbiBpZiBpdHMgd3JpdGFibGUgZGVzY3JpcHRvclxuICAgIC8vIGlzIHNldCB0byBgZmFsc2VgLlxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuICAgICduYW1lJywge1xuICAgICAgdmFsdWU6ICdEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QnXG4gICAgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPSBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QoKSxcbiAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgIGNvbnRyb2xTdGFjayA9IF9SdW5JblJvb3RGcmFtZSREZXRlclsxXTtcblxuICAgIGlmIChzYW1wbGVTdGFjayAmJiBjb250cm9sU3RhY2spIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZVN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSAwO1xuICAgICAgdmFyIGMgPSAwO1xuXG4gICAgICB3aGlsZSAocyA8IHNhbXBsZUxpbmVzLmxlbmd0aCAmJiAhc2FtcGxlTGluZXNbc10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIHMrKztcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGMgPCBjb250cm9sTGluZXMubGVuZ3RoICYmICFjb250cm9sTGluZXNbY10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIGMrKztcbiAgICAgIH0gLy8gV2UgY291bGRuJ3QgZmluZCBvdXIgaW50ZW50aW9uYWxseSBpbmplY3RlZCBjb21tb24gcm9vdCBmcmFtZSwgYXR0ZW1wdFxuICAgICAgLy8gdG8gZmluZCBhbm90aGVyIGNvbW1vbiByb290IGZyYW1lIGJ5IHNlYXJjaCBmcm9tIHRoZSBib3R0b20gb2YgdGhlXG4gICAgICAvLyBjb250cm9sIHN0YWNrLi4uXG5cblxuICAgICAgaWYgKHMgPT09IHNhbXBsZUxpbmVzLmxlbmd0aCB8fCBjID09PSBjb250cm9sTGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgICBjLS07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7IC8vIElmIG91ciBjb21wb25lbnQgZnJhbWUgaXMgbGFiZWxlZCBcIjxhbm9ueW1vdXM+XCJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgLy8gc3BsaWNlIGl0IGluIHRvIG1ha2UgdGhlIHN0YWNrIG1vcmUgcmVhZGFibGUuXG5cblxuICAgICAgICAgICAgICAgIGlmIChmbi5kaXNwbGF5TmFtZSAmJiBfZnJhbWUuaW5jbHVkZXMoJzxhbm9ueW1vdXM+JykpIHtcbiAgICAgICAgICAgICAgICAgIF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKCc8YW5vbnltb3VzPicsIGZuLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgZmFsc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgdmFyIHByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhIShwcm90b3R5cGUgJiYgcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSwgc291cmNlLCBvd25lckZuKSB7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHtcbiAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsIHNob3VsZENvbnN0cnVjdCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2UnKTtcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZUxpc3QnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZSh0eXBlLnJlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAvLyBNZW1vIG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBzb3VyY2UsIG93bmVyRm4pO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50KSB7XG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXG4gICAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChoYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3Byb2QtZXJyb3ItY29kZXNcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvciQxLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yJDEubWVzc2FnZV0gPSB0cnVlO1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFID0gU3ltYm9sLmZvcigncmVhY3QuY2xpZW50LnJlZmVyZW5jZScpO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKSB7XG4gIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBmaWxlTmFtZSA9IHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XG4gICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bUZvclByb3BzKGVsZW1lbnRQcm9wcykge1xuICBpZiAoZWxlbWVudFByb3BzICE9PSBudWxsICYmIGVsZW1lbnRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKGVsZW1lbnRQcm9wcy5fX3NvdXJjZSk7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgdmFyIHBhcmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUocGFyZW50VHlwZSk7XG5cbiAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmZvO1xufVxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuIEVycm9yIHN0YXR1c2VzIGFyZSBjYWNoZWQgc28gYSB3YXJuaW5nXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gIGlmIChvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOyAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMgY2hpbGRyZW4gYXMgYVxuICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICB2YXIgY2hpbGRPd25lciA9ICcnO1xuXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gIH1cblxuICB7XG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBlcnJvcignRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyKTtcblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICB9XG59XG4vKipcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxuICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCAhbm9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChub2RlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFKSA7IGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG5cbiAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cbiAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gRW50cnkgaXRlcmF0b3JzIHVzZWQgdG8gcHJvdmlkZSBpbXBsaWNpdCBrZXlzLFxuICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTtcbiAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwcm9wVHlwZXM7XG5cbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIE5vdGU6IE1lbW8gb25seSBjaGVja3Mgb3V0ZXIgcHJvcHMgaGVyZS5cbiAgICAvLyBJbm5lciBwcm9wcyBhcmUgY2hlY2tlZCBpbiB0aGUgcmVjb25jaWxlci5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wVHlwZXMpIHtcbiAgICAgIC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgIGNoZWNrUHJvcFR5cGVzKHByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgJ3Byb3AnLCBuYW1lLCBlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuUHJvcFR5cGVzICE9PSB1bmRlZmluZWQgJiYgIXByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duKSB7XG4gICAgICBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93biA9IHRydWU7IC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG5cbiAgICAgIHZhciBfbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcblxuICAgICAgZXJyb3IoJ0NvbXBvbmVudCAlcyBkZWNsYXJlZCBgUHJvcFR5cGVzYCBpbnN0ZWFkIG9mIGBwcm9wVHlwZXNgLiBEaWQgeW91IG1pc3NwZWxsIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50PycsIF9uYW1lIHx8ICdVbmtub3duJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0eXBlLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhdHlwZS5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQpIHtcbiAgICAgIGVycm9yKCdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGEgZnJhZ21lbnQsIHZhbGlkYXRlIHRoYXQgaXQgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2l0aCBmcmFnbWVudCBwcm9wc1xuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGZyYWdtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZnJhZ21lbnQpIHtcbiAge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gJ2NoaWxkcmVuJyAmJiBrZXkgIT09ICdrZXknKSB7XG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XG5cbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuICB2YXIgdmFsaWRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpOyAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuXG4gIGlmICghdmFsaWRUeXBlKSB7XG4gICAgdmFyIGluZm8gPSAnJztcblxuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VJbmZvID0gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW1Gb3JQcm9wcyhwcm9wcyk7XG5cbiAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgaW5mbyArPSBzb3VyY2VJbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgIH1cblxuICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlU3RyaW5nID0gJ2FycmF5JztcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgIH1cblxuICAgIHtcbiAgICAgIGVycm9yKCdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCQxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcblxuXG4gIGlmICh2YWxpZFR5cGUpIHtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSkge1xuICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufVxudmFyIGRpZFdhcm5BYm91dERlcHJlY2F0ZWRDcmVhdGVGYWN0b3J5ID0gZmFsc2U7XG5mdW5jdGlvbiBjcmVhdGVGYWN0b3J5V2l0aFZhbGlkYXRpb24odHlwZSkge1xuICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IGNyZWF0ZUVsZW1lbnRXaXRoVmFsaWRhdGlvbi5iaW5kKG51bGwsIHR5cGUpO1xuICB2YWxpZGF0ZWRGYWN0b3J5LnR5cGUgPSB0eXBlO1xuXG4gIHtcbiAgICBpZiAoIWRpZFdhcm5BYm91dERlcHJlY2F0ZWRDcmVhdGVGYWN0b3J5KSB7XG4gICAgICBkaWRXYXJuQWJvdXREZXByZWNhdGVkQ3JlYXRlRmFjdG9yeSA9IHRydWU7XG5cbiAgICAgIHdhcm4oJ1JlYWN0LmNyZWF0ZUZhY3RvcnkoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJyArICdhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBDb25zaWRlciB1c2luZyBKU1ggJyArICdvciB1c2UgUmVhY3QuY3JlYXRlRWxlbWVudCgpIGRpcmVjdGx5IGluc3RlYWQuJyk7XG4gICAgfSAvLyBMZWdhY3kgaG9vazogcmVtb3ZlIGl0XG5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAndHlwZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdhcm4oJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3R5cGUnLCB7XG4gICAgICAgICAgdmFsdWU6IHR5cGVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlZEZhY3Rvcnk7XG59XG5mdW5jdGlvbiBjbG9uZUVsZW1lbnRXaXRoVmFsaWRhdGlvbihlbGVtZW50LCBwcm9wcywgY2hpbGRyZW4pIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBjbG9uZUVsZW1lbnQkMS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCBuZXdFbGVtZW50LnR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVQcm9wVHlwZXMobmV3RWxlbWVudCk7XG4gIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oc2NvcGUsIG9wdGlvbnMpIHtcbiAgdmFyIHByZXZUcmFuc2l0aW9uID0gUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbjtcbiAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbiA9IHt9O1xuICB2YXIgY3VycmVudFRyYW5zaXRpb24gPSBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uO1xuXG4gIHtcbiAgICBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uLl91cGRhdGVkRmliZXJzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzY29wZSgpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb24gPSBwcmV2VHJhbnNpdGlvbjtcblxuICAgIHtcbiAgICAgIGlmIChwcmV2VHJhbnNpdGlvbiA9PT0gbnVsbCAmJiBjdXJyZW50VHJhbnNpdGlvbi5fdXBkYXRlZEZpYmVycykge1xuICAgICAgICB2YXIgdXBkYXRlZEZpYmVyc0NvdW50ID0gY3VycmVudFRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMuc2l6ZTtcblxuICAgICAgICBjdXJyZW50VHJhbnNpdGlvbi5fdXBkYXRlZEZpYmVycy5jbGVhcigpO1xuXG4gICAgICAgIGlmICh1cGRhdGVkRmliZXJzQ291bnQgPiAxMCkge1xuICAgICAgICAgIHdhcm4oJ0RldGVjdGVkIGEgbGFyZ2UgbnVtYmVyIG9mIHVwZGF0ZXMgaW5zaWRlIHN0YXJ0VHJhbnNpdGlvbi4gJyArICdJZiB0aGlzIGlzIGR1ZSB0byBhIHN1YnNjcmlwdGlvbiBwbGVhc2UgcmUtd3JpdGUgaXQgdG8gdXNlIFJlYWN0IHByb3ZpZGVkIGhvb2tzLiAnICsgJ090aGVyd2lzZSBjb25jdXJyZW50IG1vZGUgZ3VhcmFudGVlcyBhcmUgb2ZmIHRoZSB0YWJsZS4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgZGlkV2FybkFib3V0TWVzc2FnZUNoYW5uZWwgPSBmYWxzZTtcbnZhciBlbnF1ZXVlVGFza0ltcGwgPSBudWxsO1xuZnVuY3Rpb24gZW5xdWV1ZVRhc2sodGFzaykge1xuICBpZiAoZW5xdWV1ZVRhc2tJbXBsID09PSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIHJlYWQgcmVxdWlyZSBvZmYgdGhlIG1vZHVsZSBvYmplY3QgdG8gZ2V0IGFyb3VuZCB0aGUgYnVuZGxlcnMuXG4gICAgICAvLyB3ZSBkb24ndCB3YW50IHRoZW0gdG8gZGV0ZWN0IGEgcmVxdWlyZSBhbmQgYnVuZGxlIGEgTm9kZSBwb2x5ZmlsbC5cbiAgICAgIHZhciByZXF1aXJlU3RyaW5nID0gKCdyZXF1aXJlJyArIE1hdGgucmFuZG9tKCkpLnNsaWNlKDAsIDcpO1xuICAgICAgdmFyIG5vZGVSZXF1aXJlID0gbW9kdWxlICYmIG1vZHVsZVtyZXF1aXJlU3RyaW5nXTsgLy8gYXNzdW1pbmcgd2UncmUgaW4gbm9kZSwgbGV0J3MgdHJ5IHRvIGdldCBub2RlJ3NcbiAgICAgIC8vIHZlcnNpb24gb2Ygc2V0SW1tZWRpYXRlLCBieXBhc3NpbmcgZmFrZSB0aW1lcnMgaWYgYW55LlxuXG4gICAgICBlbnF1ZXVlVGFza0ltcGwgPSBub2RlUmVxdWlyZS5jYWxsKG1vZHVsZSwgJ3RpbWVycycpLnNldEltbWVkaWF0ZTtcbiAgICB9IGNhdGNoIChfZXJyKSB7XG4gICAgICAvLyB3ZSdyZSBpbiBhIGJyb3dzZXJcbiAgICAgIC8vIHdlIGNhbid0IHVzZSByZWd1bGFyIHRpbWVycyBiZWNhdXNlIHRoZXkgbWF5IHN0aWxsIGJlIGZha2VkXG4gICAgICAvLyBzbyB3ZSB0cnkgTWVzc2FnZUNoYW5uZWwrcG9zdE1lc3NhZ2UgaW5zdGVhZFxuICAgICAgZW5xdWV1ZVRhc2tJbXBsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoZGlkV2FybkFib3V0TWVzc2FnZUNoYW5uZWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkaWRXYXJuQWJvdXRNZXNzYWdlQ2hhbm5lbCA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWVzc2FnZUNoYW5uZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIGVycm9yKCdUaGlzIGJyb3dzZXIgZG9lcyBub3QgaGF2ZSBhIE1lc3NhZ2VDaGFubmVsIGltcGxlbWVudGF0aW9uLCAnICsgJ3NvIGVucXVldWluZyB0YXNrcyB2aWEgYXdhaXQgYWN0KGFzeW5jICgpID0+IC4uLikgd2lsbCBmYWlsLiAnICsgJ1BsZWFzZSBmaWxlIGFuIGlzc3VlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMgJyArICdpZiB5b3UgZW5jb3VudGVyIHRoaXMgd2FybmluZy4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNhbGxiYWNrO1xuICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKHVuZGVmaW5lZCk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbnF1ZXVlVGFza0ltcGwodGFzayk7XG59XG5cbi8vIG51bWJlciBvZiBgYWN0YCBzY29wZXMgb24gdGhlIHN0YWNrLlxuXG52YXIgYWN0U2NvcGVEZXB0aCA9IDA7IC8vIFdlIG9ubHkgd2FybiB0aGUgZmlyc3QgdGltZSB5b3UgbmVnbGVjdCB0byBhd2FpdCBhbiBhc3luYyBgYWN0YCBzY29wZS5cblxudmFyIGRpZFdhcm5Ob0F3YWl0QWN0ID0gZmFsc2U7XG5mdW5jdGlvbiBhY3QoY2FsbGJhY2spIHtcbiAge1xuICAgIC8vIFdoZW4gUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCBpcyBub3QgbnVsbCwgaXQgc2lnbmFscyB0byBSZWFjdCB0aGF0XG4gICAgLy8gd2UncmUgY3VycmVudGx5IGluc2lkZSBhbiBgYWN0YCBzY29wZS4gUmVhY3Qgd2lsbCBwdXNoIGFsbCBpdHMgdGFza3MgdG9cbiAgICAvLyB0aGlzIHF1ZXVlIGluc3RlYWQgb2Ygc2NoZWR1bGluZyB0aGVtIHdpdGggcGxhdGZvcm0gQVBJcy5cbiAgICAvL1xuICAgIC8vIFdlIHNldCB0aGlzIHRvIGFuIGVtcHR5IGFycmF5IHdoZW4gd2UgZmlyc3QgZW50ZXIgYW4gYGFjdGAgc2NvcGUsIGFuZFxuICAgIC8vIG9ubHkgdW5zZXQgaXQgb25jZSB3ZSd2ZSBsZWZ0IHRoZSBvdXRlcm1vc3QgYGFjdGAgc2NvcGUg4oCUIHJlbWVtYmVyIHRoYXRcbiAgICAvLyBgYWN0YCBjYWxscyBjYW4gYmUgbmVzdGVkLlxuICAgIC8vXG4gICAgLy8gSWYgd2UncmUgYWxyZWFkeSBpbnNpZGUgYW4gYGFjdGAgc2NvcGUsIHJldXNlIHRoZSBleGlzdGluZyBxdWV1ZS5cbiAgICB2YXIgcHJldklzQmF0Y2hpbmdMZWdhY3kgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5pc0JhdGNoaW5nTGVnYWN5O1xuICAgIHZhciBwcmV2QWN0UXVldWUgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5jdXJyZW50O1xuICAgIHZhciBwcmV2QWN0U2NvcGVEZXB0aCA9IGFjdFNjb3BlRGVwdGg7XG4gICAgYWN0U2NvcGVEZXB0aCsrO1xuICAgIHZhciBxdWV1ZSA9IFJlYWN0Q3VycmVudEFjdFF1ZXVlLmN1cnJlbnQgPSBwcmV2QWN0UXVldWUgIT09IG51bGwgPyBwcmV2QWN0UXVldWUgOiBbXTsgLy8gVXNlZCB0byByZXByb2R1Y2UgYmVoYXZpb3Igb2YgYGJhdGNoZWRVcGRhdGVzYCBpbiBsZWdhY3kgbW9kZS4gT25seVxuICAgIC8vIHNldCB0byBgdHJ1ZWAgd2hpbGUgdGhlIGdpdmVuIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLCBub3QgZm9yIHVwZGF0ZXNcbiAgICAvLyB0cmlnZ2VyZWQgZHVyaW5nIGFuIGFzeW5jIGV2ZW50LCBiZWNhdXNlIHRoaXMgaXMgaG93IHRoZSBsZWdhY3lcbiAgICAvLyBpbXBsZW1lbnRhdGlvbiBvZiBgYWN0YCBiZWhhdmVkLlxuXG4gICAgUmVhY3RDdXJyZW50QWN0UXVldWUuaXNCYXRjaGluZ0xlZ2FjeSA9IHRydWU7XG4gICAgdmFyIHJlc3VsdDsgLy8gVGhpcyB0cmFja3Mgd2hldGhlciB0aGUgYGFjdGAgY2FsbCBpcyBhd2FpdGVkLiBJbiBjZXJ0YWluIGNhc2VzLCBub3RcbiAgICAvLyBhd2FpdGluZyBpdCBpcyBhIG1pc3Rha2UsIHNvIHdlIHdpbGwgZGV0ZWN0IHRoYXQgYW5kIHdhcm4uXG5cbiAgICB2YXIgZGlkQXdhaXRBY3RDYWxsID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVzZXQgdGhpcyB0byBgZmFsc2VgIHJpZ2h0IGJlZm9yZSBlbnRlcmluZyB0aGUgUmVhY3Qgd29yayBsb29wLiBUaGVcbiAgICAgIC8vIG9ubHkgcGxhY2Ugd2UgZXZlciByZWFkIHRoaXMgZmllbGRzIGlzIGp1c3QgYmVsb3csIHJpZ2h0IGFmdGVyIHJ1bm5pbmdcbiAgICAgIC8vIHRoZSBjYWxsYmFjay4gU28gd2UgZG9uJ3QgbmVlZCB0byByZXNldCBhZnRlciB0aGUgY2FsbGJhY2sgcnVucy5cbiAgICAgIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmRpZFNjaGVkdWxlTGVnYWN5VXBkYXRlID0gZmFsc2U7XG4gICAgICByZXN1bHQgPSBjYWxsYmFjaygpO1xuICAgICAgdmFyIGRpZFNjaGVkdWxlTGVnYWN5VXBkYXRlID0gUmVhY3RDdXJyZW50QWN0UXVldWUuZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGU7IC8vIFJlcGxpY2F0ZSBiZWhhdmlvciBvZiBvcmlnaW5hbCBgYWN0YCBpbXBsZW1lbnRhdGlvbiBpbiBsZWdhY3kgbW9kZSxcbiAgICAgIC8vIHdoaWNoIGZsdXNoZWQgdXBkYXRlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgc2NvcGUgZnVuY3Rpb24gZXhpdHMsIGV2ZW5cbiAgICAgIC8vIGlmIGl0J3MgYW4gYXN5bmMgZnVuY3Rpb24uXG5cbiAgICAgIGlmICghcHJldklzQmF0Y2hpbmdMZWdhY3kgJiYgZGlkU2NoZWR1bGVMZWdhY3lVcGRhdGUpIHtcbiAgICAgICAgZmx1c2hBY3RRdWV1ZShxdWV1ZSk7XG4gICAgICB9IC8vIGBpc0JhdGNoaW5nTGVnYWN5YCBnZXRzIHJlc2V0IHVzaW5nIHRoZSByZWd1bGFyIHN0YWNrLCBub3QgdGhlIGFzeW5jXG4gICAgICAvLyBvbmUgdXNlZCB0byB0cmFjayBgYWN0YCBzY29wZXMuIFdoeSwgeW91IG1heSBiZSB3b25kZXJpbmc/IEJlY2F1c2VcbiAgICAgIC8vIHRoYXQncyBob3cgaXQgd29ya2VkIGJlZm9yZSB2ZXJzaW9uIDE4LiBZZXMsIGl0J3MgY29uZnVzaW5nISBXZSBzaG91bGRcbiAgICAgIC8vIGRlbGV0ZSBsZWdhY3kgbW9kZSEhXG5cblxuICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuaXNCYXRjaGluZ0xlZ2FjeSA9IHByZXZJc0JhdGNoaW5nTGVnYWN5O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBgaXNCYXRjaGluZ0xlZ2FjeWAgZ2V0cyByZXNldCB1c2luZyB0aGUgcmVndWxhciBzdGFjaywgbm90IHRoZSBhc3luY1xuICAgICAgLy8gb25lIHVzZWQgdG8gdHJhY2sgYGFjdGAgc2NvcGVzLiBXaHksIHlvdSBtYXkgYmUgd29uZGVyaW5nPyBCZWNhdXNlXG4gICAgICAvLyB0aGF0J3MgaG93IGl0IHdvcmtlZCBiZWZvcmUgdmVyc2lvbiAxOC4gWWVzLCBpdCdzIGNvbmZ1c2luZyEgV2Ugc2hvdWxkXG4gICAgICAvLyBkZWxldGUgbGVnYWN5IG1vZGUhIVxuICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuaXNCYXRjaGluZ0xlZ2FjeSA9IHByZXZJc0JhdGNoaW5nTGVnYWN5O1xuICAgICAgcG9wQWN0U2NvcGUocHJldkFjdFF1ZXVlLCBwcmV2QWN0U2NvcGVEZXB0aCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmIC8vICRGbG93Rml4TWVbbWV0aG9kLXVuYmluZGluZ11cbiAgICB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEEgcHJvbWlzZS90aGVuYWJsZSB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgY2FsbGJhY2suIFdhaXQgZm9yIGl0IHRvXG4gICAgICAvLyByZXNvbHZlIGJlZm9yZSBmbHVzaGluZyB0aGUgcXVldWUuXG4gICAgICAvL1xuICAgICAgLy8gSWYgYGFjdGAgd2VyZSBpbXBsZW1lbnRlZCBhcyBhbiBhc3luYyBmdW5jdGlvbiwgdGhpcyB3aG9sZSBibG9jayBjb3VsZFxuICAgICAgLy8gYmUgYSBzaW5nbGUgYGF3YWl0YCBjYWxsLiBUaGF0J3MgcmVhbGx5IHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICAgLy8gdGhpcyBicmFuY2ggYW5kIHRoZSBuZXh0IG9uZS5cbiAgICAgIHZhciB0aGVuYWJsZSA9IHJlc3VsdDsgLy8gV2FybiBpZiB0aGUgYW4gYGFjdGAgY2FsbCB3aXRoIGFuIGFzeW5jIHNjb3BlIGlzIG5vdCBhd2FpdGVkLiBJbiBhXG4gICAgICAvLyBmdXR1cmUgcmVsZWFzZSwgY29uc2lkZXIgbWFraW5nIHRoaXMgYW4gZXJyb3IuXG5cbiAgICAgIHF1ZXVlU2V2ZXJhbE1pY3JvdGFza3MoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWRpZEF3YWl0QWN0Q2FsbCAmJiAhZGlkV2Fybk5vQXdhaXRBY3QpIHtcbiAgICAgICAgICBkaWRXYXJuTm9Bd2FpdEFjdCA9IHRydWU7XG5cbiAgICAgICAgICBlcnJvcignWW91IGNhbGxlZCBhY3QoYXN5bmMgKCkgPT4gLi4uKSB3aXRob3V0IGF3YWl0LiAnICsgJ1RoaXMgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHRlc3RpbmcgYmVoYXZpb3VyLCAnICsgJ2ludGVybGVhdmluZyBtdWx0aXBsZSBhY3QgY2FsbHMgYW5kIG1peGluZyB0aGVpciAnICsgJ3Njb3Blcy4gJyArICdZb3Ugc2hvdWxkIC0gYXdhaXQgYWN0KGFzeW5jICgpID0+IC4uLik7Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGRpZEF3YWl0QWN0Q2FsbCA9IHRydWU7XG4gICAgICAgICAgdGhlbmFibGUudGhlbihmdW5jdGlvbiAocmV0dXJuVmFsdWUpIHtcbiAgICAgICAgICAgIHBvcEFjdFNjb3BlKHByZXZBY3RRdWV1ZSwgcHJldkFjdFNjb3BlRGVwdGgpO1xuXG4gICAgICAgICAgICBpZiAocHJldkFjdFNjb3BlRGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgLy8gV2UncmUgZXhpdGluZyB0aGUgb3V0ZXJtb3N0IGBhY3RgIHNjb3BlLiBGbHVzaCB0aGUgcXVldWUuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZmx1c2hBY3RRdWV1ZShxdWV1ZSk7XG4gICAgICAgICAgICAgICAgZW5xdWV1ZVRhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuICgvLyBSZWN1cnNpdmVseSBmbHVzaCB0YXNrcyBzY2hlZHVsZWQgYnkgYSBtaWNyb3Rhc2suXG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5Rmx1c2hBc3luY0FjdFdvcmsocmV0dXJuVmFsdWUsIHJlc29sdmUsIHJlamVjdClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gYHRoZW5hYmxlYCBtaWdodCBub3QgYmUgYSByZWFsIHByb21pc2UsIGFuZCBgZmx1c2hBY3RRdWV1ZWBcbiAgICAgICAgICAgICAgICAvLyBtaWdodCB0aHJvdywgc28gd2UgbmVlZCB0byB3cmFwIGBmbHVzaEFjdFF1ZXVlYCBpbiBhXG4gICAgICAgICAgICAgICAgLy8gdHJ5L2NhdGNoLlxuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgcG9wQWN0U2NvcGUocHJldkFjdFF1ZXVlLCBwcmV2QWN0U2NvcGVEZXB0aCk7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmV0dXJuVmFsdWUgPSByZXN1bHQ7IC8vIFRoZSBjYWxsYmFjayBpcyBub3QgYW4gYXN5bmMgZnVuY3Rpb24uIEV4aXQgdGhlIGN1cnJlbnRcbiAgICAgIC8vIHNjb3BlIGltbWVkaWF0ZWx5LlxuXG4gICAgICBwb3BBY3RTY29wZShwcmV2QWN0UXVldWUsIHByZXZBY3RTY29wZURlcHRoKTtcblxuICAgICAgaWYgKHByZXZBY3RTY29wZURlcHRoID09PSAwKSB7XG4gICAgICAgIC8vIFdlJ3JlIGV4aXRpbmcgdGhlIG91dGVybW9zdCBgYWN0YCBzY29wZS4gRmx1c2ggdGhlIHF1ZXVlLlxuICAgICAgICBmbHVzaEFjdFF1ZXVlKHF1ZXVlKTsgLy8gSWYgdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eSwgaXQgaW1wbGllcyB0aGF0IHdlIGludGVudGlvbmFsbHkgeWllbGRlZFxuICAgICAgICAvLyB0byB0aGUgbWFpbiB0aHJlYWQsIGJlY2F1c2Ugc29tZXRoaW5nIHN1c3BlbmRlZC4gV2Ugd2lsbCBjb250aW51ZVxuICAgICAgICAvLyBpbiBhbiBhc3luY2hyb25vdXMgdGFzay5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2FybiBpZiBzb21ldGhpbmcgc3VzcGVuZHMgYnV0IHRoZSBgYWN0YCBjYWxsIGlzIG5vdCBhd2FpdGVkLlxuICAgICAgICAvLyBJbiBhIGZ1dHVyZSByZWxlYXNlLCBjb25zaWRlciBtYWtpbmcgdGhpcyBhbiBlcnJvci5cblxuICAgICAgICBpZiAocXVldWUubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgcXVldWVTZXZlcmFsTWljcm90YXNrcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWRpZEF3YWl0QWN0Q2FsbCAmJiAhZGlkV2Fybk5vQXdhaXRBY3QpIHtcbiAgICAgICAgICAgICAgZGlkV2Fybk5vQXdhaXRBY3QgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGVycm9yKCdBIGNvbXBvbmVudCBzdXNwZW5kZWQgaW5zaWRlIGFuIGBhY3RgIHNjb3BlLCBidXQgdGhlICcgKyAnYGFjdGAgY2FsbCB3YXMgbm90IGF3YWl0ZWQuIFdoZW4gdGVzdGluZyBSZWFjdCAnICsgJ2NvbXBvbmVudHMgdGhhdCBkZXBlbmQgb24gYXN5bmNocm9ub3VzIGRhdGEsIHlvdSBtdXN0ICcgKyAnYXdhaXQgdGhlIHJlc3VsdDpcXG5cXG4nICsgJ2F3YWl0IGFjdCgoKSA9PiAuLi4pJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gLy8gTGlrZSBtYW55IHRoaW5ncyBpbiB0aGlzIG1vZHVsZSwgdGhpcyBpcyBuZXh0IHBhcnQgaXMgY29uZnVzaW5nLlxuICAgICAgICAvL1xuICAgICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHJlcXVpcmUgZXZlcnkgYGFjdGAgY2FsbCB0aGF0IGlzIHBhc3NlZCBhXG4gICAgICAgIC8vIGNhbGxiYWNrIHRvIGJlIGF3YWl0ZWQsIHRocm91Z2ggYXJndWFibHkgd2Ugc2hvdWxkLiBTaW5jZSB0aGlzXG4gICAgICAgIC8vIGNhbGxiYWNrIHdhcyBzeW5jaHJvbm91cywgd2UgbmVlZCB0byBleGl0IHRoZSBjdXJyZW50IHNjb3BlIGJlZm9yZVxuICAgICAgICAvLyByZXR1cm5pbmcuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEhvd2V2ZXIsIGlmIHRoZW5hYmxlIHdlJ3JlIGFib3V0IHRvIHJldHVybiAqaXMqIGF3YWl0ZWQsIHdlJ2xsXG4gICAgICAgIC8vIGltbWVkaWF0ZWx5IHJlc3RvcmUgdGhlIGN1cnJlbnQgc2NvcGUuIFNvIGl0IHNob3VsZG4ndCBvYnNlcnZhYmxlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgYWZmZWN0IHRoZSBjYXNlIHdoZXJlIHRoZSBzY29wZSBjYWxsYmFjayBpcyBhc3luYyxcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBhbHdheXMgcmVxdWlyZSB0aG9zZSBjYWxscyB0byBiZSBhd2FpdGVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUT0RPOiBJbiBhIGZ1dHVyZSB2ZXJzaW9uLCBjb25zaWRlciBhbHdheXMgcmVxdWlyaW5nIGFsbCBgYWN0YCBjYWxsc1xuICAgICAgICAvLyB0byBiZSBhd2FpdGVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGNhbGxiYWNrIGlzIHN5bmMgb3IgYXN5bmMuXG5cblxuICAgICAgICBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGRpZEF3YWl0QWN0Q2FsbCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAocHJldkFjdFNjb3BlRGVwdGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBgYWN0YCBjYWxsIGlzIGF3YWl0ZWQsIHJlc3RvcmUgdGhlIHF1ZXVlIHdlIHdlcmVcbiAgICAgICAgICAgIC8vIHVzaW5nIGJlZm9yZSAoc2VlIGxvbmcgY29tbWVudCBhYm92ZSkgc28gd2UgY2FuIGZsdXNoIGl0LlxuICAgICAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IHF1ZXVlO1xuICAgICAgICAgICAgZW5xdWV1ZVRhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gKC8vIFJlY3Vyc2l2ZWx5IGZsdXNoIHRhc2tzIHNjaGVkdWxlZCBieSBhIG1pY3JvdGFzay5cbiAgICAgICAgICAgICAgICByZWN1cnNpdmVseUZsdXNoQXN5bmNBY3RXb3JrKHJldHVyblZhbHVlLCByZXNvbHZlLCByZWplY3QpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwb3BBY3RTY29wZShwcmV2QWN0UXVldWUsIHByZXZBY3RTY29wZURlcHRoKSB7XG4gIHtcbiAgICBpZiAocHJldkFjdFNjb3BlRGVwdGggIT09IGFjdFNjb3BlRGVwdGggLSAxKSB7XG4gICAgICBlcnJvcignWW91IHNlZW0gdG8gaGF2ZSBvdmVybGFwcGluZyBhY3QoKSBjYWxscywgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ0JlIHN1cmUgdG8gYXdhaXQgcHJldmlvdXMgYWN0KCkgY2FsbHMgYmVmb3JlIG1ha2luZyBhIG5ldyBvbmUuICcpO1xuICAgIH1cblxuICAgIGFjdFNjb3BlRGVwdGggPSBwcmV2QWN0U2NvcGVEZXB0aDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNpdmVseUZsdXNoQXN5bmNBY3RXb3JrKHJldHVyblZhbHVlLCByZXNvbHZlLCByZWplY3QpIHtcbiAge1xuICAgIC8vIENoZWNrIGlmIGFueSB0YXNrcyB3ZXJlIHNjaGVkdWxlZCBhc3luY2hyb25vdXNseS5cbiAgICB2YXIgcXVldWUgPSBSZWFjdEN1cnJlbnRBY3RRdWV1ZS5jdXJyZW50O1xuXG4gICAgaWYgKHF1ZXVlICE9PSBudWxsKSB7XG4gICAgICBpZiAocXVldWUubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIC8vIEFzeW5jIHRhc2tzIHdlcmUgc2NoZWR1bGVkLCBtb3N0bHkgbGlrZWx5IGluIGEgbWljcm90YXNrLlxuICAgICAgICAvLyBLZWVwIGZsdXNoaW5nIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZsdXNoQWN0UXVldWUocXVldWUpOyAvLyBUaGUgd29yayB3ZSBqdXN0IHBlcmZvcm1lZCBtYXkgaGF2ZSBzY2hlZHVsZSBhZGRpdGlvbmFsIGFzeW5jXG4gICAgICAgICAgLy8gdGFza3MuIFdhaXQgYSBtYWNyb3Rhc2sgYW5kIGNoZWNrIGFnYWluLlxuXG4gICAgICAgICAgZW5xdWV1ZVRhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZWx5Rmx1c2hBc3luY0FjdFdvcmsocmV0dXJuVmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gTGVhdmUgcmVtYWluaW5nIHRhc2tzIG9uIHRoZSBxdWV1ZSBpZiBzb21ldGhpbmcgdGhyb3dzLlxuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZSBxdWV1ZSBpcyBlbXB0eS4gV2UgY2FuIGZpbmlzaC5cbiAgICAgICAgUmVhY3RDdXJyZW50QWN0UXVldWUuY3VycmVudCA9IG51bGw7XG4gICAgICAgIHJlc29sdmUocmV0dXJuVmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKHJldHVyblZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGlzRmx1c2hpbmcgPSBmYWxzZTtcblxuZnVuY3Rpb24gZmx1c2hBY3RRdWV1ZShxdWV1ZSkge1xuICB7XG4gICAgaWYgKCFpc0ZsdXNoaW5nKSB7XG4gICAgICAvLyBQcmV2ZW50IHJlLWVudHJhbmNlLlxuICAgICAgaXNGbHVzaGluZyA9IHRydWU7XG4gICAgICB2YXIgaSA9IDA7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBxdWV1ZVtpXTtcblxuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudEFjdFF1ZXVlLmRpZFVzZVByb21pc2UgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBjb250aW51YXRpb24gPSBjYWxsYmFjayhmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmIChjb250aW51YXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudEFjdFF1ZXVlLmRpZFVzZVByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgY29tcG9uZW50IGp1c3Qgc3VzcGVuZGVkLiBZaWVsZCB0byB0aGUgbWFpbiB0aHJlYWQgaW5cbiAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZSBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQuIElmIHNvLCBpdCB3aWxsIHBpbmcgaW5cbiAgICAgICAgICAgICAgICAvLyBhIG1pY3JvdGFzayBhbmQgd2UgY2FuIHJlc3VtZSB3aXRob3V0IHVud2luZGluZyB0aGUgc3RhY2suXG4gICAgICAgICAgICAgICAgcXVldWVbaV0gPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBxdWV1ZS5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY2FsbGJhY2sgPSBjb250aW51YXRpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlICh0cnVlKTtcbiAgICAgICAgfSAvLyBXZSBmbHVzaGVkIHRoZSBlbnRpcmUgcXVldWUuXG5cblxuICAgICAgICBxdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgc29tZXRoaW5nIHRocm93cywgbGVhdmUgdGhlIHJlbWFpbmluZyBjYWxsYmFja3Mgb24gdGhlIHF1ZXVlLlxuICAgICAgICBxdWV1ZS5zcGxpY2UoMCwgaSArIDEpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzRmx1c2hpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8gU29tZSBvZiBvdXIgd2FybmluZ3MgYXR0ZW1wdCB0byBkZXRlY3QgaWYgdGhlIGBhY3RgIGNhbGwgaXMgYXdhaXRlZCBieVxuLy8gY2hlY2tpbmcgaW4gYW4gYXN5bmNocm9ub3VzIHRhc2suIFdhaXQgYSBmZXcgbWljcm90YXNrcyBiZWZvcmUgY2hlY2tpbmcuIFRoZVxuLy8gb25seSByZWFzb24gb25lIGlzbid0IHN1ZmZpY2llbnQgaXMgd2Ugd2FudCB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZSB3aGVyZSBhblxuLy8gYGFjdGAgY2FsbCBpcyByZXR1cm5lZCBmcm9tIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGhvdXQgZmlyc3QgYmVpbmcgYXdhaXRlZCxcbi8vIHNpbmNlIHRoYXQncyBhIHNvbWV3aGF0IGNvbW1vbiBwYXR0ZXJuLiBJZiB5b3UgZG8gdGhpcyB0b28gbWFueSB0aW1lcyBpbiBhXG4vLyBuZXN0ZWQgc2VxdWVuY2UsIHlvdSBtaWdodCBnZXQgYSB3YXJuaW5nLCBidXQgeW91IGNhbiBhbHdheXMgZml4IGJ5IGF3YWl0aW5nXG4vLyB0aGUgY2FsbC5cbi8vXG4vLyBBIG1hY3JvdGFzayB3b3VsZCBhbHNvIHdvcmsgKGFuZCBpcyB0aGUgZmFsbGJhY2spIGJ1dCBkZXBlbmRpbmcgb24gdGhlIHRlc3Rcbi8vIGVudmlyb25tZW50IGl0IG1heSBjYXVzZSB0aGUgd2FybmluZyB0byBmaXJlIHRvbyBsYXRlLlxuXG5cbnZhciBxdWV1ZVNldmVyYWxNaWNyb3Rhc2tzID0gdHlwZW9mIHF1ZXVlTWljcm90YXNrID09PSAnZnVuY3Rpb24nID8gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHF1ZXVlTWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcXVldWVNaWNyb3Rhc2soY2FsbGJhY2spO1xuICB9KTtcbn0gOiBlbnF1ZXVlVGFzaztcblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50V2l0aFZhbGlkYXRpb24gO1xudmFyIGNsb25lRWxlbWVudCA9IGNsb25lRWxlbWVudFdpdGhWYWxpZGF0aW9uIDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gY3JlYXRlRmFjdG9yeVdpdGhWYWxpZGF0aW9uIDtcbnZhciBDaGlsZHJlbiA9IHtcbiAgbWFwOiBtYXBDaGlsZHJlbixcbiAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLFxuICBjb3VudDogY291bnRDaGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheSxcbiAgb25seTogb25seUNoaWxkXG59O1xuXG5leHBvcnRzLkNoaWxkcmVuID0gQ2hpbGRyZW47XG5leHBvcnRzLkNvbXBvbmVudCA9IENvbXBvbmVudDtcbmV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuZXhwb3J0cy5Qcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG5leHBvcnRzLlB1cmVDb21wb25lbnQgPSBQdXJlQ29tcG9uZW50O1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xuZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzO1xuZXhwb3J0cy5jYWNoZSA9IGNhY2hlO1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQgPSBjbG9uZUVsZW1lbnQ7XG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudDtcbmV4cG9ydHMuY3JlYXRlRmFjdG9yeSA9IGNyZWF0ZUZhY3Rvcnk7XG5leHBvcnRzLmNyZWF0ZVJlZiA9IGNyZWF0ZVJlZjtcbmV4cG9ydHMuZm9yd2FyZFJlZiA9IGZvcndhcmRSZWY7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBsYXp5O1xuZXhwb3J0cy5tZW1vID0gbWVtbztcbmV4cG9ydHMuc3RhcnRUcmFuc2l0aW9uID0gc3RhcnRUcmFuc2l0aW9uO1xuZXhwb3J0cy51bnN0YWJsZV9hY3QgPSBhY3Q7XG5leHBvcnRzLnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaCA9IHVzZUNhY2hlUmVmcmVzaDtcbmV4cG9ydHMudXNlID0gdXNlO1xuZXhwb3J0cy51c2VDYWxsYmFjayA9IHVzZUNhbGxiYWNrO1xuZXhwb3J0cy51c2VDb250ZXh0ID0gdXNlQ29udGV4dDtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZSA9IHVzZURlYnVnVmFsdWU7XG5leHBvcnRzLnVzZURlZmVycmVkVmFsdWUgPSB1c2VEZWZlcnJlZFZhbHVlO1xuZXhwb3J0cy51c2VFZmZlY3QgPSB1c2VFZmZlY3Q7XG5leHBvcnRzLnVzZUlkID0gdXNlSWQ7XG5leHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGUgPSB1c2VJbXBlcmF0aXZlSGFuZGxlO1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3QgPSB1c2VJbnNlcnRpb25FZmZlY3Q7XG5leHBvcnRzLnVzZUxheW91dEVmZmVjdCA9IHVzZUxheW91dEVmZmVjdDtcbmV4cG9ydHMudXNlTWVtbyA9IHVzZU1lbW87XG5leHBvcnRzLnVzZU9wdGltaXN0aWMgPSB1c2VPcHRpbWlzdGljO1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gdXNlUmVkdWNlcjtcbmV4cG9ydHMudXNlUmVmID0gdXNlUmVmO1xuZXhwb3J0cy51c2VTdGF0ZSA9IHVzZVN0YXRlO1xuZXhwb3J0cy51c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlO1xuZXhwb3J0cy51c2VUcmFuc2l0aW9uID0gdXNlVHJhbnNpdGlvbjtcbmV4cG9ydHMudmVyc2lvbiA9IFJlYWN0VmVyc2lvbjtcbiAgICAgICAgICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG5pZiAoXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AgPT09XG4gICAgJ2Z1bmN0aW9uJ1xuKSB7XG4gIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RvcChuZXcgRXJyb3IoKSk7XG59XG4gICAgICAgIFxuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJyZWdpc3RlckludGVybmFsTW9kdWxlU3RhcnQiLCJFcnJvciIsIlJlYWN0VmVyc2lvbiIsIlJFQUNUX0VMRU1FTlRfVFlQRSIsIlN5bWJvbCIsImZvciIsIlJFQUNUX1BPUlRBTF9UWVBFIiwiUkVBQ1RfRlJBR01FTlRfVFlQRSIsIlJFQUNUX1NUUklDVF9NT0RFX1RZUEUiLCJSRUFDVF9QUk9GSUxFUl9UWVBFIiwiUkVBQ1RfUFJPVklERVJfVFlQRSIsIlJFQUNUX0NPTlRFWFRfVFlQRSIsIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCJSRUFDVF9TVVNQRU5TRV9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIiwiUkVBQ1RfTUVNT19UWVBFIiwiUkVBQ1RfTEFaWV9UWVBFIiwiUkVBQ1RfT0ZGU0NSRUVOX1RZUEUiLCJSRUFDVF9DQUNIRV9UWVBFIiwiTUFZQkVfSVRFUkFUT1JfU1lNQk9MIiwiaXRlcmF0b3IiLCJGQVVYX0lURVJBVE9SX1NZTUJPTCIsImdldEl0ZXJhdG9yRm4iLCJtYXliZUl0ZXJhYmxlIiwibWF5YmVJdGVyYXRvciIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSIsImN1cnJlbnQiLCJSZWFjdEN1cnJlbnRDYWNoZSIsIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnIiwidHJhbnNpdGlvbiIsIlJlYWN0Q3VycmVudEFjdFF1ZXVlIiwiaXNCYXRjaGluZ0xlZ2FjeSIsImRpZFNjaGVkdWxlTGVnYWN5VXBkYXRlIiwiZGlkVXNlUHJvbWlzZSIsIlJlYWN0Q3VycmVudE93bmVyIiwiUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxIiwiY3VycmVudEV4dHJhU3RhY2tGcmFtZSIsInNldEV4dHJhU3RhY2tGcmFtZSIsInN0YWNrIiwiZ2V0Q3VycmVudFN0YWNrIiwiZ2V0U3RhY2tBZGRlbmR1bSIsImltcGwiLCJlbmFibGVTY29wZUFQSSIsImVuYWJsZUNhY2hlRWxlbWVudCIsImVuYWJsZVRyYW5zaXRpb25UcmFjaW5nIiwiZW5hYmxlTGVnYWN5SGlkZGVuIiwiZW5hYmxlRGVidWdUcmFjaW5nIiwiUmVhY3RTaGFyZWRJbnRlcm5hbHMiLCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyIiwiUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSIsIndhcm4iLCJmb3JtYXQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInByaW50V2FybmluZyIsImVycm9yIiwiX2xlbjIiLCJfa2V5MiIsImxldmVsIiwiY29uY2F0IiwiYXJnc1dpdGhGb3JtYXQiLCJtYXAiLCJpdGVtIiwiU3RyaW5nIiwidW5zaGlmdCIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiYXBwbHkiLCJjYWxsIiwiY29uc29sZSIsImRpZFdhcm5TdGF0ZVVwZGF0ZUZvclVubW91bnRlZENvbXBvbmVudCIsIndhcm5Ob29wIiwicHVibGljSW5zdGFuY2UiLCJjYWxsZXJOYW1lIiwiX2NvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiLCJjb21wb25lbnROYW1lIiwiZGlzcGxheU5hbWUiLCJuYW1lIiwid2FybmluZ0tleSIsIlJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIiwiaXNNb3VudGVkIiwiZW5xdWV1ZUZvcmNlVXBkYXRlIiwiY2FsbGJhY2siLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiY29tcGxldGVTdGF0ZSIsImVucXVldWVTZXRTdGF0ZSIsInBhcnRpYWxTdGF0ZSIsImFzc2lnbiIsIk9iamVjdCIsImVtcHR5T2JqZWN0IiwiZnJlZXplIiwiQ29tcG9uZW50IiwicHJvcHMiLCJjb250ZXh0IiwidXBkYXRlciIsInJlZnMiLCJpc1JlYWN0Q29tcG9uZW50Iiwic2V0U3RhdGUiLCJmb3JjZVVwZGF0ZSIsImRlcHJlY2F0ZWRBUElzIiwicmVwbGFjZVN0YXRlIiwiZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nIiwibWV0aG9kTmFtZSIsImluZm8iLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInVuZGVmaW5lZCIsImZuTmFtZSIsImhhc093blByb3BlcnR5IiwiQ29tcG9uZW50RHVtbXkiLCJQdXJlQ29tcG9uZW50IiwicHVyZUNvbXBvbmVudFByb3RvdHlwZSIsImlzUHVyZVJlYWN0Q29tcG9uZW50IiwiY3JlYXRlUmVmIiwicmVmT2JqZWN0Iiwic2VhbCIsImlzQXJyYXlJbXBsIiwiaXNBcnJheSIsImEiLCJ0eXBlTmFtZSIsInZhbHVlIiwiaGFzVG9TdHJpbmdUYWciLCJ0b1N0cmluZ1RhZyIsInR5cGUiLCJ3aWxsQ29lcmNpb25UaHJvdyIsInRlc3RTdHJpbmdDb2VyY2lvbiIsImUiLCJjaGVja0tleVN0cmluZ0NvZXJjaW9uIiwiZ2V0V3JhcHBlZE5hbWUiLCJvdXRlclR5cGUiLCJpbm5lclR5cGUiLCJ3cmFwcGVyTmFtZSIsImZ1bmN0aW9uTmFtZSIsImdldENvbnRleHROYW1lIiwiUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQyIiwiZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlIiwiJCR0eXBlb2YiLCJ0YWciLCJwcm92aWRlciIsIl9jb250ZXh0IiwicmVuZGVyIiwib3V0ZXJOYW1lIiwibGF6eUNvbXBvbmVudCIsInBheWxvYWQiLCJfcGF5bG9hZCIsImluaXQiLCJfaW5pdCIsIngiLCJSRVNFUlZFRF9QUk9QUyIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwic3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24iLCJzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biIsImRpZFdhcm5BYm91dFN0cmluZ1JlZnMiLCJoYXNWYWxpZFJlZiIsImNvbmZpZyIsImdldHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImlzUmVhY3RXYXJuaW5nIiwiaGFzVmFsaWRLZXkiLCJkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlciIsIndhcm5BYm91dEFjY2Vzc2luZ0tleSIsImNvbmZpZ3VyYWJsZSIsImRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyIiwid2FybkFib3V0QWNjZXNzaW5nUmVmIiwid2FybklmU3RyaW5nUmVmQ2Fubm90QmVBdXRvQ29udmVydGVkIiwic3RhdGVOb2RlIiwiUmVhY3RFbGVtZW50Iiwic2VsZiIsInNvdXJjZSIsIm93bmVyIiwiZWxlbWVudCIsIl9vd25lciIsIl9zdG9yZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImNyZWF0ZUVsZW1lbnQkMSIsImNoaWxkcmVuIiwicHJvcE5hbWUiLCJjaGlsZHJlbkxlbmd0aCIsImNoaWxkQXJyYXkiLCJpIiwiZGVmYXVsdFByb3BzIiwiY2xvbmVBbmRSZXBsYWNlS2V5Iiwib2xkRWxlbWVudCIsIm5ld0tleSIsIm5ld0VsZW1lbnQiLCJfc2VsZiIsIl9zb3VyY2UiLCJjbG9uZUVsZW1lbnQkMSIsImlzVmFsaWRFbGVtZW50Iiwib2JqZWN0IiwiU0VQQVJBVE9SIiwiU1VCU0VQQVJBVE9SIiwiZXNjYXBlIiwiZXNjYXBlUmVnZXgiLCJlc2NhcGVyTG9va3VwIiwiZXNjYXBlZFN0cmluZyIsInJlcGxhY2UiLCJtYXRjaCIsImRpZFdhcm5BYm91dE1hcHMiLCJ1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCIsImVzY2FwZVVzZXJQcm92aWRlZEtleSIsInRleHQiLCJnZXRFbGVtZW50S2V5IiwiaW5kZXgiLCJ0b1N0cmluZyIsIm1hcEludG9BcnJheSIsImFycmF5IiwiZXNjYXBlZFByZWZpeCIsIm5hbWVTb0ZhciIsImludm9rZUNhbGxiYWNrIiwiX2NoaWxkIiwibWFwcGVkQ2hpbGQiLCJjaGlsZEtleSIsImVzY2FwZWRDaGlsZEtleSIsImMiLCJwdXNoIiwiY2hpbGQiLCJuZXh0TmFtZSIsInN1YnRyZWVDb3VudCIsIm5leHROYW1lUHJlZml4IiwiaXRlcmF0b3JGbiIsIml0ZXJhYmxlQ2hpbGRyZW4iLCJlbnRyaWVzIiwic3RlcCIsImlpIiwibmV4dCIsImRvbmUiLCJjaGlsZHJlblN0cmluZyIsImtleXMiLCJqb2luIiwibWFwQ2hpbGRyZW4iLCJmdW5jIiwicmVzdWx0IiwiY291bnQiLCJjb3VudENoaWxkcmVuIiwibiIsImZvckVhY2hDaGlsZHJlbiIsImZvckVhY2hGdW5jIiwiZm9yRWFjaENvbnRleHQiLCJ0b0FycmF5Iiwib25seUNoaWxkIiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRWYWx1ZSIsIl9jdXJyZW50VmFsdWUiLCJfY3VycmVudFZhbHVlMiIsIl90aHJlYWRDb3VudCIsIlByb3ZpZGVyIiwiQ29uc3VtZXIiLCJfZGVmYXVsdFZhbHVlIiwiX2dsb2JhbE5hbWUiLCJoYXNXYXJuZWRBYm91dFVzaW5nTmVzdGVkQ29udGV4dENvbnN1bWVycyIsImhhc1dhcm5lZEFib3V0VXNpbmdDb25zdW1lclByb3ZpZGVyIiwiaGFzV2FybmVkQWJvdXREaXNwbGF5TmFtZU9uQ29uc3VtZXIiLCJkZWZpbmVQcm9wZXJ0aWVzIiwic2V0IiwiX1Byb3ZpZGVyIiwiX2N1cnJlbnRSZW5kZXJlciIsIl9jdXJyZW50UmVuZGVyZXIyIiwiVW5pbml0aWFsaXplZCIsIlBlbmRpbmciLCJSZXNvbHZlZCIsIlJlamVjdGVkIiwibGF6eUluaXRpYWxpemVyIiwiX3N0YXR1cyIsImN0b3IiLCJfcmVzdWx0IiwidGhlbmFibGUiLCJ0aGVuIiwibW9kdWxlT2JqZWN0IiwicmVzb2x2ZWQiLCJyZWplY3RlZCIsInBlbmRpbmciLCJkZWZhdWx0IiwibGF6eSIsImxhenlUeXBlIiwicHJvcFR5cGVzIiwibmV3RGVmYXVsdFByb3BzIiwibmV3UHJvcFR5cGVzIiwiZm9yd2FyZFJlZiIsImVsZW1lbnRUeXBlIiwib3duTmFtZSIsIlJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMSIsImlzVmFsaWRFbGVtZW50VHlwZSIsImdldE1vZHVsZUlkIiwibWVtbyIsImNvbXBhcmUiLCJVTlRFUk1JTkFURUQiLCJURVJNSU5BVEVEIiwiRVJST1JFRCIsImNyZWF0ZUNhY2hlUm9vdCIsIldlYWtNYXAiLCJjcmVhdGVDYWNoZU5vZGUiLCJzIiwidiIsIm8iLCJwIiwiY2FjaGUiLCJmbiIsImRpc3BhdGNoZXIiLCJmbk1hcCIsImdldENhY2hlRm9yVHlwZSIsImZuTm9kZSIsImNhY2hlTm9kZSIsImwiLCJhcmciLCJvYmplY3RDYWNoZSIsIm9iamVjdE5vZGUiLCJwcmltaXRpdmVDYWNoZSIsIk1hcCIsInByaW1pdGl2ZU5vZGUiLCJ0ZXJtaW5hdGVkTm9kZSIsImVycm9yZWROb2RlIiwicmVzb2x2ZURpc3BhdGNoZXIiLCJ1c2VDb250ZXh0IiwiQ29udGV4dCIsInJlYWxDb250ZXh0IiwidXNlU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJ1c2VSZWR1Y2VyIiwicmVkdWNlciIsImluaXRpYWxBcmciLCJ1c2VSZWYiLCJpbml0aWFsVmFsdWUiLCJ1c2VFZmZlY3QiLCJjcmVhdGUiLCJkZXBzIiwidXNlSW5zZXJ0aW9uRWZmZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VNZW1vIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZURlYnVnVmFsdWUiLCJmb3JtYXR0ZXJGbiIsInVzZVRyYW5zaXRpb24iLCJ1c2VEZWZlcnJlZFZhbHVlIiwidXNlSWQiLCJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInN1YnNjcmliZSIsImdldFNuYXBzaG90IiwiZ2V0U2VydmVyU25hcHNob3QiLCJ1c2VDYWNoZVJlZnJlc2giLCJ1c2UiLCJ1c2FibGUiLCJ1c2VPcHRpbWlzdGljIiwicGFzc3Rocm91Z2giLCJkaXNhYmxlZERlcHRoIiwicHJldkxvZyIsInByZXZJbmZvIiwicHJldldhcm4iLCJwcmV2RXJyb3IiLCJwcmV2R3JvdXAiLCJwcmV2R3JvdXBDb2xsYXBzZWQiLCJwcmV2R3JvdXBFbmQiLCJkaXNhYmxlZExvZyIsIl9fcmVhY3REaXNhYmxlZExvZyIsImRpc2FibGVMb2dzIiwibG9nIiwiZ3JvdXAiLCJncm91cENvbGxhcHNlZCIsImdyb3VwRW5kIiwicmVlbmFibGVMb2dzIiwicHJlZml4IiwiZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUiLCJvd25lckZuIiwidHJpbSIsInJlZW50cnkiLCJjb21wb25lbnRGcmFtZUNhY2hlIiwiUG9zc2libHlXZWFrTWFwIiwiZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSIsImNvbnN0cnVjdCIsImZyYW1lIiwicHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSIsInByZXBhcmVTdGFja1RyYWNlIiwicHJldmlvdXNEaXNwYXRjaGVyIiwiUnVuSW5Sb290RnJhbWUiLCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QiLCJjb250cm9sIiwiRmFrZSIsIlJlZmxlY3QiLCJtYXliZVByb21pc2UiLCJjYXRjaCIsInNhbXBsZSIsIm5hbWVQcm9wRGVzY3JpcHRvciIsIl9SdW5JblJvb3RGcmFtZSREZXRlciIsInNhbXBsZVN0YWNrIiwiY29udHJvbFN0YWNrIiwic2FtcGxlTGluZXMiLCJzcGxpdCIsImNvbnRyb2xMaW5lcyIsImluY2x1ZGVzIiwiX2ZyYW1lIiwic3ludGhldGljRnJhbWUiLCJkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUiLCJzaG91bGRDb25zdHJ1Y3QiLCJkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYiLCJsb2dnZWRUeXBlRmFpbHVyZXMiLCJzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxIiwiY2hlY2tQcm9wVHlwZXMiLCJ0eXBlU3BlY3MiLCJ2YWx1ZXMiLCJsb2NhdGlvbiIsImhhcyIsImJpbmQiLCJ0eXBlU3BlY05hbWUiLCJlcnJvciQxIiwiZXJyIiwiZXgiLCJtZXNzYWdlIiwiUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSIsInNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50IiwicHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24iLCJnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0iLCJnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtRm9yUHJvcHMiLCJlbGVtZW50UHJvcHMiLCJvd25lckhhc0tleVVzZVdhcm5pbmciLCJnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvIiwicGFyZW50VHlwZSIsInBhcmVudE5hbWUiLCJ2YWxpZGF0ZUV4cGxpY2l0S2V5IiwidmFsaWRhdGVkIiwiY3VycmVudENvbXBvbmVudEVycm9ySW5mbyIsImNoaWxkT3duZXIiLCJ2YWxpZGF0ZUNoaWxkS2V5cyIsIm5vZGUiLCJ2YWxpZGF0ZVByb3BUeXBlcyIsIlByb3BUeXBlcyIsIl9uYW1lIiwiZ2V0RGVmYXVsdFByb3BzIiwiaXNSZWFjdENsYXNzQXBwcm92ZWQiLCJ2YWxpZGF0ZUZyYWdtZW50UHJvcHMiLCJmcmFnbWVudCIsImNyZWF0ZUVsZW1lbnRXaXRoVmFsaWRhdGlvbiIsInZhbGlkVHlwZSIsInNvdXJjZUluZm8iLCJ0eXBlU3RyaW5nIiwiZGlkV2FybkFib3V0RGVwcmVjYXRlZENyZWF0ZUZhY3RvcnkiLCJjcmVhdGVGYWN0b3J5V2l0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZWRGYWN0b3J5IiwiY2xvbmVFbGVtZW50V2l0aFZhbGlkYXRpb24iLCJzdGFydFRyYW5zaXRpb24iLCJzY29wZSIsIm9wdGlvbnMiLCJwcmV2VHJhbnNpdGlvbiIsImN1cnJlbnRUcmFuc2l0aW9uIiwiX3VwZGF0ZWRGaWJlcnMiLCJTZXQiLCJ1cGRhdGVkRmliZXJzQ291bnQiLCJzaXplIiwiY2xlYXIiLCJkaWRXYXJuQWJvdXRNZXNzYWdlQ2hhbm5lbCIsImVucXVldWVUYXNrSW1wbCIsImVucXVldWVUYXNrIiwidGFzayIsInJlcXVpcmVTdHJpbmciLCJNYXRoIiwicmFuZG9tIiwic2xpY2UiLCJub2RlUmVxdWlyZSIsIm1vZHVsZSIsInNldEltbWVkaWF0ZSIsIl9lcnIiLCJNZXNzYWdlQ2hhbm5lbCIsImNoYW5uZWwiLCJwb3J0MSIsIm9ubWVzc2FnZSIsInBvcnQyIiwicG9zdE1lc3NhZ2UiLCJhY3RTY29wZURlcHRoIiwiZGlkV2Fybk5vQXdhaXRBY3QiLCJhY3QiLCJwcmV2SXNCYXRjaGluZ0xlZ2FjeSIsInByZXZBY3RRdWV1ZSIsInByZXZBY3RTY29wZURlcHRoIiwicXVldWUiLCJkaWRBd2FpdEFjdENhbGwiLCJmbHVzaEFjdFF1ZXVlIiwicG9wQWN0U2NvcGUiLCJxdWV1ZVNldmVyYWxNaWNyb3Rhc2tzIiwicmVzb2x2ZSIsInJlamVjdCIsInJldHVyblZhbHVlIiwicmVjdXJzaXZlbHlGbHVzaEFzeW5jQWN0V29yayIsImlzRmx1c2hpbmciLCJjb250aW51YXRpb24iLCJzcGxpY2UiLCJxdWV1ZU1pY3JvdGFzayIsImNyZWF0ZUVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVGYWN0b3J5IiwiQ2hpbGRyZW4iLCJmb3JFYWNoIiwib25seSIsImV4cG9ydHMiLCJGcmFnbWVudCIsIlByb2ZpbGVyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJ1bnN0YWJsZV9hY3QiLCJ1bnN0YWJsZV91c2VDYWNoZVJlZnJlc2giLCJ2ZXJzaW9uIiwicmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react/cjs/react.development.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react/cjs/react.shared-subset.development.js":
/*!**************************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react/cjs/react.shared-subset.development.js ***!
\**************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
eval("/**\n * @license React\n * react.shared-subset.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 */ \nif (true) {\n (function() {\n \"use strict\";\n /**\n * Keeps track of the current dispatcher.\n */ var ReactCurrentDispatcher$1 = {\n current: null\n };\n /**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */ var ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */ current: null\n };\n var ReactDebugCurrentFrame$1 = {};\n var currentExtraStackFrame = null;\n function setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n }\n {\n ReactDebugCurrentFrame$1.setExtraStackFrame = function(stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n ReactDebugCurrentFrame$1.getCurrentStack = null;\n ReactDebugCurrentFrame$1.getStackAddendum = function() {\n var stack = \"\"; // Add an extra top frame while an element is being validated\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n var impl = ReactDebugCurrentFrame$1.getCurrentStack;\n if (impl) {\n stack += impl() || \"\";\n }\n return stack;\n };\n }\n // -----------------------------------------------------------------------------\n var enableScopeAPI = false; // Experimental Create Event Handle API.\n var enableCacheElement = false;\n var enableTransitionTracing = false; // No known bugs, but needs performance testing\n var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n // stuff. Intended to enable React core members to more easily debug scheduling\n // issues in DEV builds.\n var enableDebugTracing = false;\n var ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher$1,\n ReactCurrentOwner: ReactCurrentOwner\n };\n {\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame$1;\n }\n // by calls to these methods by a Babel plugin.\n //\n // In PROD (or in packages without access to React internals),\n // they are left as they are instead.\n function warn(format) {\n {\n {\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 printWarning(\"warn\", format, args);\n }\n }\n }\n function error(format) {\n {\n {\n for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){\n args[_key2 - 1] = arguments[_key2];\n }\n printWarning(\"error\", format, args);\n }\n }\n }\n function printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n if (stack !== \"\") {\n format += \"%s\";\n args = args.concat([\n stack\n ]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n var argsWithFormat = args.map(function(item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n argsWithFormat.unshift(\"Warning: \" + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n }\n var assign = Object.assign;\n /**\n * Keeps track of the current Cache dispatcher.\n */ var ReactCurrentCache = {\n current: null\n };\n function createFetchCache() {\n return new Map();\n }\n var simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]'; // generateCacheKey(new Request('https://blank'));\n function 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 }\n {\n if (typeof fetch === \"function\") {\n var originalFetch = fetch;\n var cachedFetch = function fetch1(resource, options) {\n var dispatcher = ReactCurrentCache.current;\n if (!dispatcher) {\n // We're outside a cached scope.\n return originalFetch(resource, options);\n }\n if (options && options.signal && options.signal !== dispatcher.getCacheSignal()) {\n // If we're passed a signal that is not ours, 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 } // Normalize the Request\n var url;\n var 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 var request = typeof resource === \"string\" || resource instanceof URL ? new Request(resource, options) : resource;\n if (request.method !== \"GET\" && request.method !== \"HEAD\" || // $FlowFixMe[prop-missing]: keepalive is real\n 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 var cache = dispatcher.getCacheForType(createFetchCache);\n var cacheEntries = cache.get(url);\n var match;\n if (cacheEntries === undefined) {\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n match = originalFetch(resource, options);\n cache.set(url, [\n cacheKey,\n match\n ]);\n } else {\n // We use an array as the inner data structure since it's lighter and\n // we typically only expect to see one or two entries here.\n for(var i = 0, l = cacheEntries.length; i < l; i += 2){\n var key = cacheEntries[i];\n var value = cacheEntries[i + 1];\n if (key === cacheKey) {\n match = value; // I would've preferred a labelled break but lint says no.\n return match.then(function(response) {\n return response.clone();\n });\n }\n }\n match = originalFetch(resource, options);\n cacheEntries.push(cacheKey, match);\n } // We clone the response so that each time you call this you get a new read\n // of the body so that it can be read multiple times.\n return match.then(function(response) {\n return response.clone();\n });\n }; // We don't expect to see any extra properties on fetch but if there are any,\n // copy them over. Useful for extended fetch environments or mocks.\n assign(cachedFetch, originalFetch);\n try {\n // eslint-disable-next-line no-native-reassign\n fetch = cachedFetch;\n } catch (error1) {\n try {\n // In case assigning it globally fails, try globalThis instead just in case it exists.\n globalThis.fetch = cachedFetch;\n } catch (error2) {\n // Log even in production just to make sure this is seen if only prod is frozen.\n // eslint-disable-next-line react-internal/no-production-logging\n warn(\"React was unable to patch the fetch() function in this environment. \" + \"Suspensey APIs might not work correctly as a result.\");\n }\n }\n }\n }\n var ReactServerSharedInternals = {\n ReactCurrentCache: ReactCurrentCache\n };\n var ReactVersion = \"18.3.0-canary-60a927d04-20240113\";\n // ATTENTION\n // When adding new symbols to this file,\n // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n // The Symbol used to tag the ReactElement-like types.\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n var REACT_CACHE_TYPE = Symbol.for(\"react.cache\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === \"function\") {\n return maybeIterator;\n }\n return null;\n }\n var didWarnStateUpdateForUnmountedComponent = {};\n function warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || \"ReactClass\";\n var warningKey = componentName + \".\" + callerName;\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n error(\"Can't call %s on a component that is not yet mounted. \" + \"This is a no-op, but it might indicate a bug in your application. \" + \"Instead, assign to `this.state` directly or define a `state = {};` \" + \"class property with the desired state in the %s component.\", callerName, componentName);\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n }\n /**\n * This is the abstract API for an update queue.\n */ var ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */ isMounted: function(publicInstance) {\n return false;\n },\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */ enqueueForceUpdate: function(publicInstance, callback, callerName) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */ enqueueReplaceState: function(publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, \"replaceState\");\n },\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */ enqueueSetState: function(publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, \"setState\");\n }\n };\n var emptyObject = {};\n {\n Object.freeze(emptyObject);\n }\n /**\n * Base class helpers for the updating state of a component.\n */ function Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n }\n Component.prototype.isReactComponent = {};\n /**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */ Component.prototype.setState = function(partialState, callback) {\n if (typeof partialState !== \"object\" && typeof partialState !== \"function\" && partialState != null) {\n throw new Error(\"setState(...): takes an object of state variables to update or a \" + \"function which returns an object of state variables.\");\n }\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */ Component.prototype.forceUpdate = function(callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n /**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */ {\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in \" + \"componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see \" + \"https://github.com/facebook/react/issues/3236).\"\n ]\n };\n var defineDeprecationWarning = function(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function() {\n warn(\"%s(...) is deprecated in plain JavaScript React classes. %s\", info[0], info[1]);\n return undefined;\n }\n });\n };\n for(var fnName in deprecatedAPIs){\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n }\n function ComponentDummy() {}\n ComponentDummy.prototype = Component.prototype;\n /**\n * Convenience component with default shallow equality check for sCU.\n */ function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\n pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n assign(pureComponentPrototype, Component.prototype);\n pureComponentPrototype.isPureReactComponent = true;\n // an immutable object with a single mutable value\n function createRef() {\n var refObject = {\n current: null\n };\n {\n Object.seal(refObject);\n }\n return refObject;\n }\n var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n function isArray(a) {\n return isArrayImpl(a);\n }\n /*\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */ // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\n function typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\"; // $FlowFixMe[incompatible-return]\n return type;\n }\n } // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\n function willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n }\n function testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error(\"The provided key is an unsupported type %s.\" + \" This value must be coerced to a string before using it here.\", typeName(value));\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n }\n function getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n if (displayName) {\n return displayName;\n }\n var functionName = innerType.displayName || innerType.name || \"\";\n return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n } // Keep in sync with react-reconciler/getComponentNameFromFiber\n function getContextName(type) {\n return type.displayName || \"Context\";\n }\n var REACT_CLIENT_REFERENCE$2 = Symbol.for(\"react.client.reference\"); // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n function getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n if (typeof type === \"function\") {\n if (type.$$typeof === REACT_CLIENT_REFERENCE$2) {\n // TODO: Create a convention for naming client references with debug info.\n return null;\n }\n return type.displayName || type.name || null;\n }\n if (typeof type === \"string\") {\n return type;\n }\n switch(type){\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\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_CACHE_TYPE:\n {\n return \"Cache\";\n }\n }\n if (typeof type === \"object\") {\n {\n if (typeof type.tag === \"number\") {\n error(\"Received an unexpected object in getComponentNameFromType(). \" + \"This is likely a bug in React. Please file an issue.\");\n }\n }\n switch(type.$$typeof){\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + \".Consumer\";\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + \".Provider\";\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, \"ForwardRef\");\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n if (outerName !== null) {\n return outerName;\n }\n return getComponentNameFromType(type.type) || \"Memo\";\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n return null;\n }\n // $FlowFixMe[method-unbinding]\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n };\n var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n {\n didWarnAboutStringRefs = {};\n }\n function hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, \"ref\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"ref\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n }\n function hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function() {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n error(\"%s: `key` is not a prop. Trying to access it will result \" + \"in `undefined` being returned. If you need to access the same \" + \"value within the child component, you should pass it as a different \" + \"prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n function defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function() {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n error(\"%s: `ref` is not a prop. Trying to access it will result \" + \"in `undefined` being returned. If you need to access the same \" + \"value within the child component, you should pass it as a different \" + \"prop. (https://reactjs.org/link/special-props)\", displayName);\n }\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, \"ref\", {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n function warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === \"string\" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + \"Support for string refs will be removed in a future major release. \" + \"This case cannot be automatically converted to an arrow function. \" + \"We ask you to manually fix this case by using useRef() or createRef() instead. \" + \"Learn more about using refs safely here: \" + \"https://reactjs.org/link/strict-mode-string-ref\", componentName, config.ref);\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n }\n /**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */ function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n Object.defineProperty(element._store, \"validated\", {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n Object.defineProperty(element, \"_self\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, \"_source\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n return element;\n }\n /**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */ function createElement$1(type, config, children) {\n var propName; // Reserved names are extracted\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n key = \"\" + config.key;\n }\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n for(propName in config){\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for(var i = 0; i < childrenLength; i++){\n childArray[i] = arguments[i + 2];\n }\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n } // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for(propName in defaultProps){\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n {\n if (key || ref) {\n var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n }\n /**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */ function cloneElement$1(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n var propName; // Original props are copied\n var props = assign({}, element.props); // Reserved names are extracted\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source; // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n key = \"\" + config.key;\n } // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for(propName in config){\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for(var i = 0; i < childrenLength; i++){\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n return ReactElement(element.type, key, ref, self, source, owner, props);\n }\n /**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */ function isValidElement(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n var SEPARATOR = \".\";\n var SUBSEPARATOR = \":\";\n /**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */ function escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n var escapedString = key.replace(escapeRegex, function(match) {\n return escaperLookup[match];\n });\n return \"$\" + escapedString;\n }\n /**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */ var didWarnAboutMaps = false;\n var userProvidedKeyEscapeRegex = /\\/+/g;\n function escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, \"$&/\");\n }\n /**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */ function getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === \"object\" && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n return escape(\"\" + element.key);\n } // Implicit key determined by the index in the set\n return index.toString(36);\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (type === \"undefined\" || type === \"boolean\") {\n // All of the above are perceived as null.\n children = null;\n }\n var invokeCallback = false;\n if (children === null) {\n invokeCallback = true;\n } else {\n switch(type){\n case \"string\":\n case \"number\":\n invokeCallback = true;\n break;\n case \"object\":\n switch(children.$$typeof){\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n }\n }\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n var childKey = nameSoFar === \"\" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n if (isArray(mappedChild)) {\n var escapedChildKey = \"\";\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + \"/\";\n }\n mapIntoArray(mappedChild, array, escapedChildKey, \"\", function(c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe[incompatible-type] Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n mappedChild = cloneAndReplaceKey(mappedChild, // traverseAllChildren used to do for objects as children\n escapedPrefix + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? escapeUserProvidedKey(\"\" + mappedChild.key // eslint-disable-line react-internal/safe-string-coercion\n ) + \"/\" : \"\") + childKey);\n }\n array.push(mappedChild);\n }\n return 1;\n }\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === \"\" ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n if (isArray(children)) {\n for(var i = 0; i < children.length; i++){\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (typeof iteratorFn === \"function\") {\n var iterableChildren = children;\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn(\"Using Maps as children is not supported. \" + \"Use an array of keyed ReactElements instead.\");\n }\n didWarnAboutMaps = true;\n }\n }\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0; // $FlowFixMe[incompatible-use] `iteratorFn` might return null according to typing.\n while(!(step = iterator.next()).done){\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === \"object\") {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === \"[object Object]\" ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\" : childrenString) + \"). \" + \"If you meant to render a collection of children, use an array \" + \"instead.\");\n }\n }\n return subtreeCount;\n }\n /**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */ function mapChildren(children, func, context) {\n if (children == null) {\n // $FlowFixMe limitation refining abstract types in Flow\n return children;\n }\n var result = [];\n var count = 0;\n mapIntoArray(children, result, \"\", \"\", function(child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n /**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */ function countChildren(children) {\n var n = 0;\n mapChildren(children, function() {\n n++; // Don't return anything\n });\n return n;\n }\n /**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */ function forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function() {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n }\n /**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */ function toArray(children) {\n return mapChildren(children, function(child) {\n return child;\n }) || [];\n }\n /**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */ function onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error(\"React.Children.only expected to receive a single React element child.\");\n }\n return children;\n }\n var Uninitialized = -1;\n var Pending = 0;\n var Resolved = 1;\n var Rejected = 2;\n function lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n thenable.then(function(moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function(error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n {\n if (moduleObject === undefined) {\n error(\"lazy: Expected the result of a dynamic imp\" + \"ort() call. \" + \"Instead received: %s\\n\\nYour code should look like: \\n \" + // Break up imports to avoid accidentally parsing them as dependencies.\n \"const MyComponent = lazy(() => imp\" + \"ort('./MyComponent'))\\n\\n\" + \"Did you accidentally put curly braces around the import?\", moduleObject);\n }\n }\n {\n if (!(\"default\" in moduleObject)) {\n error(\"lazy: Expected the result of a dynamic imp\" + \"ort() call. \" + \"Instead received: %s\\n\\nYour code should look like: \\n \" + // Break up imports to avoid accidentally parsing them as dependencies.\n \"const MyComponent = lazy(() => imp\" + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n }\n function lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe[prop-missing]\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function() {\n return defaultProps;\n },\n // $FlowFixMe[missing-local-annot]\n set: function(newDefaultProps) {\n error(\"React.lazy(...): It is not supported to assign `defaultProps` to \" + \"a lazy component import. Either specify them where the component \" + \"is defined, or create a wrapping component around it.\");\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe[prop-missing]\n Object.defineProperty(lazyType, \"defaultProps\", {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function() {\n return propTypes;\n },\n // $FlowFixMe[missing-local-annot]\n set: function(newPropTypes) {\n error(\"React.lazy(...): It is not supported to assign `propTypes` to \" + \"a lazy component import. Either specify them where the component \" + \"is defined, or create a wrapping component around it.\");\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe[prop-missing]\n Object.defineProperty(lazyType, \"propTypes\", {\n enumerable: true\n });\n }\n }\n });\n }\n return lazyType;\n }\n function forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error(\"forwardRef requires a render function but received a `memo` \" + \"component. Instead of forwardRef(memo(...)), use \" + \"memo(forwardRef(...)).\");\n } else if (typeof render !== \"function\") {\n error(\"forwardRef requires a render function but was given %s.\", render === null ? \"null\" : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error(\"forwardRef render functions accept exactly two parameters: props and ref. %s\", render.length === 1 ? \"Did you forget to use the ref parameter?\" : \"Any additional parameter will be undefined.\");\n }\n }\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error(\"forwardRef render functions do not support propTypes or defaultProps. \" + \"Did you accidentally pass a React component?\");\n }\n }\n }\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n {\n var ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return ownName;\n },\n set: function(name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n return elementType;\n }\n var REACT_CLIENT_REFERENCE$1 = Symbol.for(\"react.client.reference\");\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_CLIENT_REFERENCE$1 || type.getModuleId !== undefined) {\n return true;\n }\n }\n return false;\n }\n function memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error(\"memo: The first argument must be a component. Instead \" + \"received: %s\", type === null ? \"null\" : typeof type);\n }\n }\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n {\n var ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return ownName;\n },\n set: function(name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n return elementType;\n }\n var UNTERMINATED = 0;\n var TERMINATED = 1;\n var ERRORED = 2;\n function createCacheRoot() {\n return new WeakMap();\n }\n function createCacheNode() {\n return {\n s: UNTERMINATED,\n // status, represents whether the cached computation returned a value or threw an error\n v: undefined,\n // value, either the cached result or an error, depending on s\n o: null,\n // object cache, a WeakMap where non-primitive arguments are stored\n p: null // primitive cache, a regular Map where primitive arguments are stored.\n };\n }\n function cache(fn) {\n return function() {\n var dispatcher = ReactCurrentCache.current;\n if (!dispatcher) {\n // If there is no dispatcher, then we treat this as not being cached.\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n return fn.apply(null, arguments);\n }\n var fnMap = dispatcher.getCacheForType(createCacheRoot);\n var fnNode = fnMap.get(fn);\n var cacheNode;\n if (fnNode === undefined) {\n cacheNode = createCacheNode();\n fnMap.set(fn, cacheNode);\n } else {\n cacheNode = fnNode;\n }\n for(var i = 0, l = arguments.length; i < l; i++){\n var arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n // Objects go into a WeakMap\n var objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = new WeakMap();\n }\n var objectNode = objectCache.get(arg);\n if (objectNode === undefined) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n // Primitives go into a regular Map\n var primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = new Map();\n }\n var primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === undefined) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n if (cacheNode.s === TERMINATED) {\n return cacheNode.v;\n }\n if (cacheNode.s === ERRORED) {\n throw cacheNode.v;\n }\n try {\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n var result = fn.apply(null, arguments);\n var terminatedNode = cacheNode;\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n } catch (error) {\n // We store the first error that's thrown and rethrow it.\n var erroredNode = cacheNode;\n erroredNode.s = ERRORED;\n erroredNode.v = error;\n throw error;\n }\n };\n }\n function resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher$1.current;\n {\n if (dispatcher === null) {\n error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for\" + \" one of the following reasons:\\n\" + \"1. You might have mismatching versions of React and the renderer (such as React DOM)\\n\" + \"2. You might be breaking the Rules of Hooks\\n\" + \"3. You might have more than one copy of React in the same app\\n\" + \"See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n }\n }\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n return dispatcher;\n }\n function useContext(Context) {\n var dispatcher = resolveDispatcher();\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n if (realContext.Consumer === Context) {\n error(\"Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be \" + \"removed in a future major release. Did you mean to call useContext(Context) instead?\");\n } else if (realContext.Provider === Context) {\n error(\"Calling useContext(Context.Provider) is not supported. \" + \"Did you mean to call useContext(Context) instead?\");\n }\n }\n }\n return dispatcher.useContext(Context);\n }\n function useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n }\n function useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n }\n function useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n }\n function useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n }\n function use(usable) {\n var dispatcher = resolveDispatcher();\n return dispatcher.use(usable);\n }\n // Helpers to patch console.logs to avoid logging during side-effect free\n // replaying on render function. This currently only patches the object\n // lazily which won't cover if the log function was extracted eagerly.\n // We could also eagerly patch the method.\n var disabledDepth = 0;\n var prevLog;\n var prevInfo;\n var prevWarn;\n var prevError;\n var prevGroup;\n var prevGroupCollapsed;\n var prevGroupEnd;\n function disabledLog() {}\n disabledLog.__reactDisabledLog = true;\n function disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */ prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */ }\n disabledDepth++;\n }\n }\n function reenableLogs() {\n {\n disabledDepth--;\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */ var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */ }\n if (disabledDepth < 0) {\n error(\"disabledDepth fell below zero. \" + \"This is a bug in React. Please file an issue.\");\n }\n }\n }\n var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n var prefix;\n function describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || \"\";\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n return \"\\n\" + prefix + name;\n }\n }\n var reentry = false;\n var componentFrameCache;\n {\n var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n }\n /**\n * Leverages native browser/VM stack frames to get proper details (e.g.\n * filename, line + col number) for a single component in a component stack. We\n * do this by:\n * (1) throwing and catching an error in the function - this will be our\n * control error.\n * (2) calling the component which will eventually throw an error that we'll\n * catch - this will be our sample error.\n * (3) diffing the control and sample error stacks to find the stack frame\n * which represents our component.\n */ function describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return \"\";\n }\n {\n var frame = componentFrameCache.get(fn);\n if (frame !== undefined) {\n return frame;\n }\n }\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe[incompatible-type] It does accept undefined.\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n /**\n * Finding a common stack frame between sample and control errors can be\n * tricky given the different types and levels of stack trace truncation from\n * different JS VMs. So instead we'll attempt to control what that common\n * frame should be through this object method:\n * Having both the sample and control errors be in the function under the\n * `DescribeNativeComponentFrameRoot` property, + setting the `name` and\n * `displayName` properties of the function ensures that a stack\n * frame exists that has the method name `DescribeNativeComponentFrameRoot` in\n * it for both control and sample stacks.\n */ var RunInRootFrame = {\n DetermineComponentFrameRoot: function() {\n var control;\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function() {\n throw Error();\n }; // $FlowFixMe[prop-missing]\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function() {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n if (typeof Reflect === \"object\" && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n } // $FlowFixMe[prop-missing] found when upgrading Flow\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n } // TODO(luna): This will currently only throw if the function component\n // tries to access React/ReactDOM/props. We should probably make this throw\n // in simple components too\n var maybePromise = fn(); // If the function component returns a promise, it's likely an async\n // component, which we don't yet support. Attach a noop catch handler to\n // silence the error.\n // TODO: Implement component stacks for async client components?\n if (maybePromise && typeof maybePromise.catch === \"function\") {\n maybePromise.catch(function() {});\n }\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === \"string\") {\n return [\n sample.stack,\n control.stack\n ];\n }\n }\n return [\n null,\n null\n ];\n }\n }; // $FlowFixMe[prop-missing]\n RunInRootFrame.DetermineComponentFrameRoot.displayName = \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot, \"name\"); // Before ES6, the `name` property was not configurable.\n if (namePropDescriptor && namePropDescriptor.configurable) {\n // V8 utilizes a function's `name` property when generating a stack trace.\n Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot, // is set to `false`.\n // $FlowFixMe[cannot-write]\n \"name\", {\n value: \"DetermineComponentFrameRoot\"\n });\n }\n try {\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(), sampleStack = _RunInRootFrame$Deter[0], controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sampleStack.split(\"\\n\");\n var controlLines = controlStack.split(\"\\n\");\n var s = 0;\n var c = 0;\n while(s < sampleLines.length && !sampleLines[s].includes(\"DetermineComponentFrameRoot\")){\n s++;\n }\n while(c < controlLines.length && !controlLines[c].includes(\"DetermineComponentFrameRoot\")){\n c++;\n } // We couldn't find our intentionally injected common root frame, attempt\n // to find another common root frame by search from the bottom of the\n // control stack...\n if (s === sampleLines.length || c === controlLines.length) {\n s = sampleLines.length - 1;\n c = controlLines.length - 1;\n while(s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]){\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n }\n for(; s >= 1 && c >= 0; s--, c--){\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = \"\\n\" + sampleLines[s].replace(\" at new \", \" at \"); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n }\n if (true) {\n if (typeof fn === \"function\") {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n return _frame;\n }\n }while (s >= 1 && c >= 0);\n }\n break;\n }\n }\n }\n } finally{\n reentry = false;\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n var name = fn ? fn.displayName || fn.name : \"\";\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n {\n if (typeof fn === \"function\") {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n return syntheticFrame;\n }\n function describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n }\n function shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n }\n function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n if (type == null) {\n return \"\";\n }\n if (typeof type === \"function\") {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n if (typeof type === \"string\") {\n return describeBuiltInComponentFrame(type);\n }\n switch(type){\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (typeof type === \"object\") {\n switch(type.$$typeof){\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n return \"\";\n }\n var loggedTypeFailures = {};\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n function setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n }\n function checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe[incompatible-use] This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n for(var typeSpecName in typeSpecs){\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== \"function\") {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; \" + \"it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\" + \"This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n err.name = \"Invariant Violation\";\n throw err;\n }\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n } catch (ex) {\n error$1 = ex;\n }\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement$1(element);\n error(\"%s: type specification of %s\" + \" `%s` is invalid; the type checker \" + \"function must return `null` or an `Error` but returned a %s. \" + \"You may have forgotten to pass an argument to the type checker \" + \"creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and \" + \"shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n setCurrentlyValidatingElement$1(null);\n }\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement$1(element);\n error(\"Failed %s type: %s\", location, error$1.message);\n setCurrentlyValidatingElement$1(null);\n }\n }\n }\n }\n }\n var REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n function setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n }\n var propTypesMisspellWarningShown;\n {\n propTypesMisspellWarningShown = false;\n }\n function getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n if (name) {\n return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n }\n }\n return \"\";\n }\n function getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, \"\");\n var lineNumber = source.lineNumber;\n return \"\\n\\nCheck your code at \" + fileName + \":\" + lineNumber + \".\";\n }\n return \"\";\n }\n function getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n return \"\";\n }\n /**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */ var ownerHasKeyUseWarning = {};\n function getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n if (!info) {\n var parentName = getComponentNameFromType(parentType);\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n return info;\n }\n /**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */ function validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = \"\";\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n {\n setCurrentlyValidatingElement(element);\n error('Each child in a list should have a unique \"key\" prop.' + \"%s%s See https://reactjs.org/link/warning-keys for more information.\", currentComponentErrorInfo, childOwner);\n setCurrentlyValidatingElement(null);\n }\n }\n /**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */ function validateChildKeys(node, parentType) {\n if (typeof node !== \"object\" || !node) {\n return;\n }\n if (node.$$typeof === REACT_CLIENT_REFERENCE) ;\n else if (isArray(node)) {\n for(var i = 0; i < node.length; i++){\n var child = node[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else {\n var iteratorFn = getIteratorFn(node);\n if (typeof iteratorFn === \"function\") {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while(!(step = iterator.next()).done){\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n /**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */ function validatePropTypes(element) {\n {\n var type = element.type;\n if (type === null || type === undefined || typeof type === \"string\") {\n return;\n }\n if (type.$$typeof === REACT_CLIENT_REFERENCE) {\n return;\n }\n var propTypes;\n if (typeof type === \"function\") {\n propTypes = type.propTypes;\n } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, \"prop\", name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n var _name = getComponentNameFromType(type);\n error(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n }\n if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n error(\"getDefaultProps is only used on classic React.createClass \" + \"definitions. Use a static property named `defaultProps` instead.\");\n }\n }\n }\n /**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */ function validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n if (key !== \"children\" && key !== \"key\") {\n setCurrentlyValidatingElement(fragment);\n error(\"Invalid prop `%s` supplied to `React.Fragment`. \" + \"React.Fragment can only have `key` and `children` props.\", key);\n setCurrentlyValidatingElement(null);\n break;\n }\n }\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement(fragment);\n error(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n setCurrentlyValidatingElement(null);\n }\n }\n }\n function createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n var info = \"\";\n if (type === undefined || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n info += \" You likely forgot to export your component from the file \" + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n var typeString;\n if (type === null) {\n typeString = \"null\";\n } else if (isArray(type)) {\n typeString = \"array\";\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n info = \" Did you accidentally export a JSX literal instead of a component?\";\n } else {\n typeString = typeof type;\n }\n {\n error(\"React.createElement: type is invalid -- expected a string (for \" + \"built-in components) or a class/function (for composite \" + \"components) but got: %s.%s\", typeString, info);\n }\n }\n var element = createElement$1.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for(var i = 2; i < arguments.length; i++){\n validateChildKeys(arguments[i], type);\n }\n }\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n return element;\n }\n function cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement$1.apply(this, arguments);\n for(var i = 2; i < arguments.length; i++){\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n function createServerContext(globalName, defaultValue) {\n {\n throw new Error(\"Not implemented.\");\n }\n }\n /**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */ var ReactCurrentBatchConfig = {\n transition: null\n };\n function startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n try {\n scope();\n } finally{\n ReactCurrentBatchConfig.transition = prevTransition;\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n currentTransition._updatedFibers.clear();\n if (updatedFibersCount > 10) {\n warn(\"Detected a large number of updates inside startTransition. \" + \"If this is due to a subscription please re-write it to use React provided hooks. \" + \"Otherwise concurrent mode guarantees are off the table.\");\n }\n }\n }\n }\n }\n var createElement = createElementWithValidation;\n var cloneElement = cloneElementWithValidation;\n var Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n };\n exports.Children = Children;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\n exports.__SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactServerSharedInternals;\n exports.cache = cache;\n exports.cloneElement = cloneElement;\n exports.createElement = createElement;\n exports.createRef = createRef;\n exports.createServerContext = createServerContext;\n exports.forwardRef = forwardRef;\n exports.isValidElement = isValidElement;\n exports.lazy = lazy;\n exports.memo = memo;\n exports.startTransition = startTransition;\n exports.use = use;\n exports.useCallback = useCallback;\n exports.useContext = useContext;\n exports.useDebugValue = useDebugValue;\n exports.useId = useId;\n exports.useMemo = useMemo;\n exports.version = ReactVersion;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC5zaGFyZWQtc3Vic2V0LmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztDQVFDLEdBRUQ7QUFFQSxJQUFJQSxJQUFxQyxFQUFFO0lBQ3hDO1FBQ0g7UUFFQTs7Q0FFQyxHQUNELElBQUlDLDJCQUEyQjtZQUM3QkMsU0FBUztRQUNYO1FBRUE7Ozs7O0NBS0MsR0FDRCxJQUFJQyxvQkFBb0I7WUFDdEI7OztHQUdDLEdBQ0RELFNBQVM7UUFDWDtRQUVBLElBQUlFLDJCQUEyQixDQUFDO1FBQ2hDLElBQUlDLHlCQUF5QjtRQUM3QixTQUFTQyxtQkFBbUJDLEtBQUs7WUFDL0I7Z0JBQ0VGLHlCQUF5QkU7WUFDM0I7UUFDRjtRQUVBO1lBQ0VILHlCQUF5QkUsa0JBQWtCLEdBQUcsU0FBVUMsS0FBSztnQkFDM0Q7b0JBQ0VGLHlCQUF5QkU7Z0JBQzNCO1lBQ0YsR0FBRyx5REFBeUQ7WUFHNURILHlCQUF5QkksZUFBZSxHQUFHO1lBRTNDSix5QkFBeUJLLGdCQUFnQixHQUFHO2dCQUMxQyxJQUFJRixRQUFRLElBQUksNkRBQTZEO2dCQUU3RSxJQUFJRix3QkFBd0I7b0JBQzFCRSxTQUFTRjtnQkFDWCxFQUFFLDREQUE0RDtnQkFHOUQsSUFBSUssT0FBT04seUJBQXlCSSxlQUFlO2dCQUVuRCxJQUFJRSxNQUFNO29CQUNSSCxTQUFTRyxVQUFVO2dCQUNyQjtnQkFFQSxPQUFPSDtZQUNUO1FBQ0Y7UUFFQSxnRkFBZ0Y7UUFFaEYsSUFBSUksaUJBQWlCLE9BQU8sd0NBQXdDO1FBQ3BFLElBQUlDLHFCQUFxQjtRQUN6QixJQUFJQywwQkFBMEIsT0FBTywrQ0FBK0M7UUFFcEYsSUFBSUMscUJBQXFCLE9BQU8sc0RBQXNEO1FBQ3RGLCtFQUErRTtRQUMvRSx3QkFBd0I7UUFFeEIsSUFBSUMscUJBQXFCO1FBRXpCLElBQUlDLHVCQUF1QjtZQUN6QkMsd0JBQXdCaEI7WUFDeEJFLG1CQUFtQkE7UUFDckI7UUFFQTtZQUNFYSxxQkFBcUJFLHNCQUFzQixHQUFHZDtRQUNoRDtRQUVBLCtDQUErQztRQUMvQyxFQUFFO1FBQ0YsOERBQThEO1FBQzlELHFDQUFxQztRQUVyQyxTQUFTZSxLQUFLQyxNQUFNO1lBQ2xCO2dCQUNFO29CQUNFLElBQUssSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU8sSUFBSUEsT0FBTyxJQUFJLElBQUlLLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBUTt3QkFDMUdGLElBQUksQ0FBQ0UsT0FBTyxFQUFFLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztvQkFDbEM7b0JBRUFDLGFBQWEsUUFBUVAsUUFBUUk7Z0JBQy9CO1lBQ0Y7UUFDRjtRQUNBLFNBQVNJLE1BQU1SLE1BQU07WUFDbkI7Z0JBQ0U7b0JBQ0UsSUFBSyxJQUFJUyxRQUFRUCxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUksUUFBUSxJQUFJQSxRQUFRLElBQUksSUFBSUMsUUFBUSxHQUFHQSxRQUFRRCxPQUFPQyxRQUFTO3dCQUNqSE4sSUFBSSxDQUFDTSxRQUFRLEVBQUUsR0FBR1IsU0FBUyxDQUFDUSxNQUFNO29CQUNwQztvQkFFQUgsYUFBYSxTQUFTUCxRQUFRSTtnQkFDaEM7WUFDRjtRQUNGO1FBRUEsU0FBU0csYUFBYUksS0FBSyxFQUFFWCxNQUFNLEVBQUVJLElBQUk7WUFDdkMsbURBQW1EO1lBQ25ELDZDQUE2QztZQUM3QztnQkFDRSxJQUFJTix5QkFBeUJGLHFCQUFxQkUsc0JBQXNCO2dCQUN4RSxJQUFJWCxRQUFRVyx1QkFBdUJULGdCQUFnQjtnQkFFbkQsSUFBSUYsVUFBVSxJQUFJO29CQUNoQmEsVUFBVTtvQkFDVkksT0FBT0EsS0FBS1EsTUFBTSxDQUFDO3dCQUFDekI7cUJBQU07Z0JBQzVCLEVBQUUsK0RBQStEO2dCQUdqRSxJQUFJMEIsaUJBQWlCVCxLQUFLVSxHQUFHLENBQUMsU0FBVUMsSUFBSTtvQkFDMUMsT0FBT0MsT0FBT0Q7Z0JBQ2hCLElBQUksK0NBQStDO2dCQUVuREYsZUFBZUksT0FBTyxDQUFDLGNBQWNqQixTQUFTLG9FQUFvRTtnQkFDbEgsNkRBQTZEO2dCQUM3RCxnRUFBZ0U7Z0JBRWhFa0IsU0FBU0MsU0FBUyxDQUFDQyxLQUFLLENBQUNDLElBQUksQ0FBQ0MsT0FBTyxDQUFDWCxNQUFNLEVBQUVXLFNBQVNUO1lBQ3pEO1FBQ0Y7UUFFQSxJQUFJVSxTQUFTQyxPQUFPRCxNQUFNO1FBRTFCOztDQUVDLEdBQ0QsSUFBSUUsb0JBQW9CO1lBQ3RCM0MsU0FBUztRQUNYO1FBRUEsU0FBUzRDO1lBQ1AsT0FBTyxJQUFJQztRQUNiO1FBRUEsSUFBSUMsaUJBQWlCLGdEQUFnRCxrREFBa0Q7UUFFdkgsU0FBU0MsaUJBQWlCQyxPQUFPO1lBQy9CLHFFQUFxRTtZQUNyRSx1RUFBdUU7WUFDdkUsMkNBQTJDO1lBQzNDLHdFQUF3RTtZQUN4RSw0RUFBNEU7WUFDNUUsc0RBQXNEO1lBQ3RELE9BQU9DLEtBQUtDLFNBQVMsQ0FBQztnQkFBQ0YsUUFBUUcsTUFBTTtnQkFBRTVCLE1BQU02QixJQUFJLENBQUNKLFFBQVFLLE9BQU8sQ0FBQ0MsT0FBTztnQkFBS04sUUFBUU8sSUFBSTtnQkFBRVAsUUFBUVEsUUFBUTtnQkFBRVIsUUFBUVMsV0FBVztnQkFBRVQsUUFBUVUsUUFBUTtnQkFBRVYsUUFBUVcsY0FBYztnQkFBRVgsUUFBUVksU0FBUzthQUFDO1FBQ2pNO1FBRUE7WUFDRSxJQUFJLE9BQU9DLFVBQVUsWUFBWTtnQkFDL0IsSUFBSUMsZ0JBQWdCRDtnQkFFcEIsSUFBSUUsY0FBYyxTQUFTRixPQUFNRyxRQUFRLEVBQUVDLE9BQU87b0JBQ2hELElBQUlDLGFBQWF2QixrQkFBa0IzQyxPQUFPO29CQUUxQyxJQUFJLENBQUNrRSxZQUFZO3dCQUNmLGdDQUFnQzt3QkFDaEMsT0FBT0osY0FBY0UsVUFBVUM7b0JBQ2pDO29CQUVBLElBQUlBLFdBQVdBLFFBQVFFLE1BQU0sSUFBSUYsUUFBUUUsTUFBTSxLQUFLRCxXQUFXRSxjQUFjLElBQUk7d0JBQy9FLGlFQUFpRTt3QkFDakUsb0VBQW9FO3dCQUNwRSxtREFBbUQ7d0JBQ25ELDZEQUE2RDt3QkFDN0QsNkRBQTZEO3dCQUM3RCxrRUFBa0U7d0JBQ2xFLHVCQUF1Qjt3QkFDdkIsT0FBT04sY0FBY0UsVUFBVUM7b0JBQ2pDLEVBQUUsd0JBQXdCO29CQUcxQixJQUFJSTtvQkFDSixJQUFJQztvQkFFSixJQUFJLE9BQU9OLGFBQWEsWUFBWSxDQUFDQyxTQUFTO3dCQUM1QyxhQUFhO3dCQUNiSyxXQUFXeEI7d0JBQ1h1QixNQUFNTDtvQkFDUixPQUFPO3dCQUNMLHlCQUF5Qjt3QkFDekIsb0VBQW9FO3dCQUNwRSxvREFBb0Q7d0JBQ3BELG1GQUFtRjt3QkFDbkYsSUFBSWhCLFVBQVUsT0FBT2dCLGFBQWEsWUFBWUEsb0JBQW9CTyxNQUFNLElBQUlDLFFBQVFSLFVBQVVDLFdBQVdEO3dCQUV6RyxJQUFJaEIsUUFBUUcsTUFBTSxLQUFLLFNBQVNILFFBQVFHLE1BQU0sS0FBSyxVQUFVLDhDQUE4Qzt3QkFDM0dILFFBQVF5QixTQUFTLEVBQUU7NEJBQ2pCLHlFQUF5RTs0QkFDekUsMEVBQTBFOzRCQUMxRSw0QkFBNEI7NEJBQzVCLDBFQUEwRTs0QkFDMUUsT0FBT1gsY0FBY0UsVUFBVUM7d0JBQ2pDO3dCQUVBSyxXQUFXdkIsaUJBQWlCQzt3QkFDNUJxQixNQUFNckIsUUFBUXFCLEdBQUc7b0JBQ25CO29CQUVBLElBQUlLLFFBQVFSLFdBQVdTLGVBQWUsQ0FBQy9CO29CQUN2QyxJQUFJZ0MsZUFBZUYsTUFBTUcsR0FBRyxDQUFDUjtvQkFDN0IsSUFBSVM7b0JBRUosSUFBSUYsaUJBQWlCRyxXQUFXO3dCQUM5QixzRUFBc0U7d0JBQ3RFLHVEQUF1RDt3QkFDdkRELFFBQVFoQixjQUFjRSxVQUFVQzt3QkFDaENTLE1BQU1NLEdBQUcsQ0FBQ1gsS0FBSzs0QkFBQ0M7NEJBQVVRO3lCQUFNO29CQUNsQyxPQUFPO3dCQUNMLHFFQUFxRTt3QkFDckUsMkRBQTJEO3dCQUMzRCxJQUFLLElBQUlHLElBQUksR0FBR0MsSUFBSU4sYUFBYXZELE1BQU0sRUFBRTRELElBQUlDLEdBQUdELEtBQUssRUFBRzs0QkFDdEQsSUFBSUUsTUFBTVAsWUFBWSxDQUFDSyxFQUFFOzRCQUN6QixJQUFJRyxRQUFRUixZQUFZLENBQUNLLElBQUksRUFBRTs0QkFFL0IsSUFBSUUsUUFBUWIsVUFBVTtnQ0FDcEJRLFFBQVFNLE9BQU8sMERBQTBEO2dDQUV6RSxPQUFPTixNQUFNTyxJQUFJLENBQUMsU0FBVUMsUUFBUTtvQ0FDbEMsT0FBT0EsU0FBU0MsS0FBSztnQ0FDdkI7NEJBQ0Y7d0JBQ0Y7d0JBRUFULFFBQVFoQixjQUFjRSxVQUFVQzt3QkFDaENXLGFBQWFZLElBQUksQ0FBQ2xCLFVBQVVRO29CQUM5QixFQUFFLDJFQUEyRTtvQkFDN0UscURBQXFEO29CQUdyRCxPQUFPQSxNQUFNTyxJQUFJLENBQUMsU0FBVUMsUUFBUTt3QkFDbEMsT0FBT0EsU0FBU0MsS0FBSztvQkFDdkI7Z0JBQ0YsR0FBRyw2RUFBNkU7Z0JBQ2hGLG1FQUFtRTtnQkFHbkU5QyxPQUFPc0IsYUFBYUQ7Z0JBRXBCLElBQUk7b0JBQ0YsOENBQThDO29CQUM5Q0QsUUFBUUU7Z0JBQ1YsRUFBRSxPQUFPMEIsUUFBUTtvQkFDZixJQUFJO3dCQUNGLHNGQUFzRjt3QkFDdEZDLFdBQVc3QixLQUFLLEdBQUdFO29CQUNyQixFQUFFLE9BQU80QixRQUFRO3dCQUNmLGdGQUFnRjt3QkFDaEYsZ0VBQWdFO3dCQUNoRTFFLEtBQUsseUVBQXlFO29CQUNoRjtnQkFDRjtZQUNGO1FBQ0Y7UUFFQSxJQUFJMkUsNkJBQTZCO1lBQy9CakQsbUJBQW1CQTtRQUNyQjtRQUVBLElBQUlrRCxlQUFlO1FBRW5CLFlBQVk7UUFDWix3Q0FBd0M7UUFDeEMsa0ZBQWtGO1FBQ2xGLHNEQUFzRDtRQUN0RCxJQUFJQyxxQkFBcUJDLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJQyxvQkFBb0JGLE9BQU9DLEdBQUcsQ0FBQztRQUNuQyxJQUFJRSxzQkFBc0JILE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJRyx5QkFBeUJKLE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJSSxzQkFBc0JMLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJSyxzQkFBc0JOLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJTSxxQkFBcUJQLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJTyx5QkFBeUJSLE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJUSxzQkFBc0JULE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJUywyQkFBMkJWLE9BQU9DLEdBQUcsQ0FBQztRQUMxQyxJQUFJVSxrQkFBa0JYLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJVyxrQkFBa0JaLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJWSx1QkFBdUJiLE9BQU9DLEdBQUcsQ0FBQztRQUN0QyxJQUFJYSxtQkFBbUJkLE9BQU9DLEdBQUcsQ0FBQztRQUNsQyxJQUFJYyx3QkFBd0JmLE9BQU9nQixRQUFRO1FBQzNDLElBQUlDLHVCQUF1QjtRQUMzQixTQUFTQyxjQUFjQyxhQUFhO1lBQ2xDLElBQUlBLGtCQUFrQixRQUFRLE9BQU9BLGtCQUFrQixVQUFVO2dCQUMvRCxPQUFPO1lBQ1Q7WUFFQSxJQUFJQyxnQkFBZ0JMLHlCQUF5QkksYUFBYSxDQUFDSixzQkFBc0IsSUFBSUksYUFBYSxDQUFDRixxQkFBcUI7WUFFeEgsSUFBSSxPQUFPRyxrQkFBa0IsWUFBWTtnQkFDdkMsT0FBT0E7WUFDVDtZQUVBLE9BQU87UUFDVDtRQUVBLElBQUlDLDBDQUEwQyxDQUFDO1FBRS9DLFNBQVNDLFNBQVNDLGNBQWMsRUFBRUMsVUFBVTtZQUMxQztnQkFDRSxJQUFJQyxlQUFlRixlQUFlRyxXQUFXO2dCQUM3QyxJQUFJQyxnQkFBZ0JGLGdCQUFpQkEsQ0FBQUEsYUFBYUcsV0FBVyxJQUFJSCxhQUFhSSxJQUFJLEtBQUs7Z0JBQ3ZGLElBQUlDLGFBQWFILGdCQUFnQixNQUFNSDtnQkFFdkMsSUFBSUgsdUNBQXVDLENBQUNTLFdBQVcsRUFBRTtvQkFDdkQ7Z0JBQ0Y7Z0JBRUFuRyxNQUFNLDJEQUEyRCx1RUFBdUUsd0VBQXdFLDhEQUE4RDZGLFlBQVlHO2dCQUUxUk4sdUNBQXVDLENBQUNTLFdBQVcsR0FBRztZQUN4RDtRQUNGO1FBQ0E7O0NBRUMsR0FHRCxJQUFJQyx1QkFBdUI7WUFDekI7Ozs7OztHQU1DLEdBQ0RDLFdBQVcsU0FBVVQsY0FBYztnQkFDakMsT0FBTztZQUNUO1lBRUE7Ozs7Ozs7Ozs7Ozs7O0dBY0MsR0FDRFUsb0JBQW9CLFNBQVVWLGNBQWMsRUFBRVcsUUFBUSxFQUFFVixVQUFVO2dCQUNoRUYsU0FBU0MsZ0JBQWdCO1lBQzNCO1lBRUE7Ozs7Ozs7Ozs7OztHQVlDLEdBQ0RZLHFCQUFxQixTQUFVWixjQUFjLEVBQUVhLGFBQWEsRUFBRUYsUUFBUSxFQUFFVixVQUFVO2dCQUNoRkYsU0FBU0MsZ0JBQWdCO1lBQzNCO1lBRUE7Ozs7Ozs7Ozs7O0dBV0MsR0FDRGMsaUJBQWlCLFNBQVVkLGNBQWMsRUFBRWUsWUFBWSxFQUFFSixRQUFRLEVBQUVWLFVBQVU7Z0JBQzNFRixTQUFTQyxnQkFBZ0I7WUFDM0I7UUFDRjtRQUVBLElBQUlnQixjQUFjLENBQUM7UUFFbkI7WUFDRTVGLE9BQU82RixNQUFNLENBQUNEO1FBQ2hCO1FBQ0E7O0NBRUMsR0FHRCxTQUFTRSxVQUFVQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsT0FBTztZQUN4QyxJQUFJLENBQUNGLEtBQUssR0FBR0E7WUFDYixJQUFJLENBQUNDLE9BQU8sR0FBR0EsU0FBUywyRUFBMkU7WUFFbkcsSUFBSSxDQUFDRSxJQUFJLEdBQUdOLGFBQWEsMEVBQTBFO1lBQ25HLFlBQVk7WUFFWixJQUFJLENBQUNLLE9BQU8sR0FBR0EsV0FBV2I7UUFDNUI7UUFFQVUsVUFBVW5HLFNBQVMsQ0FBQ3dHLGdCQUFnQixHQUFHLENBQUM7UUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCQyxHQUVETCxVQUFVbkcsU0FBUyxDQUFDeUcsUUFBUSxHQUFHLFNBQVVULFlBQVksRUFBRUosUUFBUTtZQUM3RCxJQUFJLE9BQU9JLGlCQUFpQixZQUFZLE9BQU9BLGlCQUFpQixjQUFjQSxnQkFBZ0IsTUFBTTtnQkFDbEcsTUFBTSxJQUFJVSxNQUFNLHNFQUFzRTtZQUN4RjtZQUVBLElBQUksQ0FBQ0osT0FBTyxDQUFDUCxlQUFlLENBQUMsSUFBSSxFQUFFQyxjQUFjSixVQUFVO1FBQzdEO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUdETyxVQUFVbkcsU0FBUyxDQUFDMkcsV0FBVyxHQUFHLFNBQVVmLFFBQVE7WUFDbEQsSUFBSSxDQUFDVSxPQUFPLENBQUNYLGtCQUFrQixDQUFDLElBQUksRUFBRUMsVUFBVTtRQUNsRDtRQUNBOzs7O0NBSUMsR0FHRDtZQUNFLElBQUlnQixpQkFBaUI7Z0JBQ25CbEIsV0FBVztvQkFBQztvQkFBYSwwRUFBMEU7aUJBQWdEO2dCQUNuSm1CLGNBQWM7b0JBQUM7b0JBQWdCLHFEQUFxRDtpQkFBa0Q7WUFDeEk7WUFFQSxJQUFJQywyQkFBMkIsU0FBVUMsVUFBVSxFQUFFQyxJQUFJO2dCQUN2RDNHLE9BQU80RyxjQUFjLENBQUNkLFVBQVVuRyxTQUFTLEVBQUUrRyxZQUFZO29CQUNyRHZFLEtBQUs7d0JBQ0g1RCxLQUFLLCtEQUErRG9JLElBQUksQ0FBQyxFQUFFLEVBQUVBLElBQUksQ0FBQyxFQUFFO3dCQUVwRixPQUFPdEU7b0JBQ1Q7Z0JBQ0Y7WUFDRjtZQUVBLElBQUssSUFBSXdFLFVBQVVOLGVBQWdCO2dCQUNqQyxJQUFJQSxlQUFlTyxjQUFjLENBQUNELFNBQVM7b0JBQ3pDSix5QkFBeUJJLFFBQVFOLGNBQWMsQ0FBQ00sT0FBTztnQkFDekQ7WUFDRjtRQUNGO1FBRUEsU0FBU0Usa0JBQWtCO1FBRTNCQSxlQUFlcEgsU0FBUyxHQUFHbUcsVUFBVW5HLFNBQVM7UUFDOUM7O0NBRUMsR0FFRCxTQUFTcUgsY0FBY2pCLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxPQUFPO1lBQzVDLElBQUksQ0FBQ0YsS0FBSyxHQUFHQTtZQUNiLElBQUksQ0FBQ0MsT0FBTyxHQUFHQSxTQUFTLDJFQUEyRTtZQUVuRyxJQUFJLENBQUNFLElBQUksR0FBR047WUFDWixJQUFJLENBQUNLLE9BQU8sR0FBR0EsV0FBV2I7UUFDNUI7UUFFQSxJQUFJNkIseUJBQXlCRCxjQUFjckgsU0FBUyxHQUFHLElBQUlvSDtRQUMzREUsdUJBQXVCbEMsV0FBVyxHQUFHaUMsZUFBZSxtREFBbUQ7UUFFdkdqSCxPQUFPa0gsd0JBQXdCbkIsVUFBVW5HLFNBQVM7UUFDbERzSCx1QkFBdUJDLG9CQUFvQixHQUFHO1FBRTlDLGtEQUFrRDtRQUNsRCxTQUFTQztZQUNQLElBQUlDLFlBQVk7Z0JBQ2Q5SixTQUFTO1lBQ1g7WUFFQTtnQkFDRTBDLE9BQU9xSCxJQUFJLENBQUNEO1lBQ2Q7WUFFQSxPQUFPQTtRQUNUO1FBRUEsSUFBSUUsY0FBY3pJLE1BQU0wSSxPQUFPLEVBQUUsd0NBQXdDO1FBRXpFLFNBQVNBLFFBQVFDLENBQUM7WUFDaEIsT0FBT0YsWUFBWUU7UUFDckI7UUFFQTs7Ozs7Ozs7Q0FRQyxHQUNELHNGQUFzRjtRQUN0RixTQUFTQyxTQUFTL0UsS0FBSztZQUNyQjtnQkFDRSxtRUFBbUU7Z0JBQ25FLElBQUlnRixpQkFBaUIsT0FBT3JFLFdBQVcsY0FBY0EsT0FBT3NFLFdBQVc7Z0JBQ3ZFLElBQUlDLE9BQU9GLGtCQUFrQmhGLEtBQUssQ0FBQ1csT0FBT3NFLFdBQVcsQ0FBQyxJQUFJakYsTUFBTXFDLFdBQVcsQ0FBQ0csSUFBSSxJQUFJLFVBQVUsa0NBQWtDO2dCQUVoSSxPQUFPMEM7WUFDVDtRQUNGLEVBQUUsc0ZBQXNGO1FBR3hGLFNBQVNDLGtCQUFrQm5GLEtBQUs7WUFDOUI7Z0JBQ0UsSUFBSTtvQkFDRm9GLG1CQUFtQnBGO29CQUNuQixPQUFPO2dCQUNULEVBQUUsT0FBT3FGLEdBQUc7b0JBQ1YsT0FBTztnQkFDVDtZQUNGO1FBQ0Y7UUFFQSxTQUFTRCxtQkFBbUJwRixLQUFLO1lBQy9CLDJFQUEyRTtZQUMzRSw2RUFBNkU7WUFDN0UseUVBQXlFO1lBQ3pFLHFFQUFxRTtZQUNyRSxFQUFFO1lBQ0YsOEVBQThFO1lBQzlFLDBFQUEwRTtZQUMxRSw4RUFBOEU7WUFDOUUsMkVBQTJFO1lBQzNFLDhFQUE4RTtZQUM5RSxvRUFBb0U7WUFDcEUsRUFBRTtZQUNGLDRFQUE0RTtZQUM1RSx5RUFBeUU7WUFDekUsRUFBRTtZQUNGLDBFQUEwRTtZQUMxRSwyRUFBMkU7WUFDM0UseUVBQXlFO1lBQ3pFLDZFQUE2RTtZQUM3RSxzRUFBc0U7WUFDdEUsb0RBQW9EO1lBQ3BELEVBQUU7WUFDRiwrREFBK0Q7WUFDL0QsT0FBTyxLQUFLQTtRQUNkO1FBQ0EsU0FBU3NGLHVCQUF1QnRGLEtBQUs7WUFDbkM7Z0JBQ0UsSUFBSW1GLGtCQUFrQm5GLFFBQVE7b0JBQzVCMUQsTUFBTSxnREFBZ0QsaUVBQWlFeUksU0FBUy9FO29CQUVoSSxPQUFPb0YsbUJBQW1CcEYsUUFBUSx3REFBd0Q7Z0JBQzVGO1lBQ0Y7UUFDRjtRQUVBLFNBQVN1RixlQUFlQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsV0FBVztZQUN2RCxJQUFJbkQsY0FBY2lELFVBQVVqRCxXQUFXO1lBRXZDLElBQUlBLGFBQWE7Z0JBQ2YsT0FBT0E7WUFDVDtZQUVBLElBQUlvRCxlQUFlRixVQUFVbEQsV0FBVyxJQUFJa0QsVUFBVWpELElBQUksSUFBSTtZQUM5RCxPQUFPbUQsaUJBQWlCLEtBQUtELGNBQWMsTUFBTUMsZUFBZSxNQUFNRDtRQUN4RSxFQUFFLCtEQUErRDtRQUdqRSxTQUFTRSxlQUFlVixJQUFJO1lBQzFCLE9BQU9BLEtBQUszQyxXQUFXLElBQUk7UUFDN0I7UUFFQSxJQUFJc0QsMkJBQTJCbEYsT0FBT0MsR0FBRyxDQUFDLDJCQUEyQix1R0FBdUc7UUFFNUssU0FBU2tGLHlCQUF5QlosSUFBSTtZQUNwQyxJQUFJQSxRQUFRLE1BQU07Z0JBQ2hCLDZDQUE2QztnQkFDN0MsT0FBTztZQUNUO1lBRUEsSUFBSSxPQUFPQSxTQUFTLFlBQVk7Z0JBQzlCLElBQUlBLEtBQUthLFFBQVEsS0FBS0YsMEJBQTBCO29CQUM5QywwRUFBMEU7b0JBQzFFLE9BQU87Z0JBQ1Q7Z0JBRUEsT0FBT1gsS0FBSzNDLFdBQVcsSUFBSTJDLEtBQUsxQyxJQUFJLElBQUk7WUFDMUM7WUFFQSxJQUFJLE9BQU8wQyxTQUFTLFVBQVU7Z0JBQzVCLE9BQU9BO1lBQ1Q7WUFFQSxPQUFRQTtnQkFDTixLQUFLcEU7b0JBQ0gsT0FBTztnQkFFVCxLQUFLRDtvQkFDSCxPQUFPO2dCQUVULEtBQUtHO29CQUNILE9BQU87Z0JBRVQsS0FBS0Q7b0JBQ0gsT0FBTztnQkFFVCxLQUFLSztvQkFDSCxPQUFPO2dCQUVULEtBQUtDO29CQUNILE9BQU87Z0JBRVQsS0FBS0k7b0JBQ0g7d0JBQ0UsT0FBTztvQkFDVDtZQUVKO1lBRUEsSUFBSSxPQUFPeUQsU0FBUyxVQUFVO2dCQUM1QjtvQkFDRSxJQUFJLE9BQU9BLEtBQUtjLEdBQUcsS0FBSyxVQUFVO3dCQUNoQzFKLE1BQU0sa0VBQWtFO29CQUMxRTtnQkFDRjtnQkFFQSxPQUFRNEksS0FBS2EsUUFBUTtvQkFDbkIsS0FBSzdFO3dCQUNILElBQUlvQyxVQUFVNEI7d0JBQ2QsT0FBT1UsZUFBZXRDLFdBQVc7b0JBRW5DLEtBQUtyQzt3QkFDSCxJQUFJZ0YsV0FBV2Y7d0JBQ2YsT0FBT1UsZUFBZUssU0FBU0MsUUFBUSxJQUFJO29CQUU3QyxLQUFLL0U7d0JBQ0gsT0FBT29FLGVBQWVMLE1BQU1BLEtBQUtpQixNQUFNLEVBQUU7b0JBRTNDLEtBQUs3RTt3QkFDSCxJQUFJOEUsWUFBWWxCLEtBQUszQyxXQUFXLElBQUk7d0JBRXBDLElBQUk2RCxjQUFjLE1BQU07NEJBQ3RCLE9BQU9BO3dCQUNUO3dCQUVBLE9BQU9OLHlCQUF5QlosS0FBS0EsSUFBSSxLQUFLO29CQUVoRCxLQUFLM0Q7d0JBQ0g7NEJBQ0UsSUFBSThFLGdCQUFnQm5COzRCQUNwQixJQUFJb0IsVUFBVUQsY0FBY0UsUUFBUTs0QkFDcEMsSUFBSUMsT0FBT0gsY0FBY0ksS0FBSzs0QkFFOUIsSUFBSTtnQ0FDRixPQUFPWCx5QkFBeUJVLEtBQUtGOzRCQUN2QyxFQUFFLE9BQU9JLEdBQUc7Z0NBQ1YsT0FBTzs0QkFDVDt3QkFDRjtnQkFFSjtZQUNGO1lBRUEsT0FBTztRQUNUO1FBRUEsK0JBQStCO1FBQy9CLElBQUl0QyxpQkFBaUI5RyxPQUFPTCxTQUFTLENBQUNtSCxjQUFjO1FBRXBELElBQUl1QyxpQkFBaUI7WUFDbkI1RyxLQUFLO1lBQ0w2RyxLQUFLO1lBQ0xDLFFBQVE7WUFDUkMsVUFBVTtRQUNaO1FBQ0EsSUFBSUMsNEJBQTRCQyw0QkFBNEJDO1FBRTVEO1lBQ0VBLHlCQUF5QixDQUFDO1FBQzVCO1FBRUEsU0FBU0MsWUFBWUMsTUFBTTtZQUN6QjtnQkFDRSxJQUFJL0MsZUFBZWpILElBQUksQ0FBQ2dLLFFBQVEsUUFBUTtvQkFDdEMsSUFBSUMsU0FBUzlKLE9BQU8rSix3QkFBd0IsQ0FBQ0YsUUFBUSxPQUFPMUgsR0FBRztvQkFFL0QsSUFBSTJILFVBQVVBLE9BQU9FLGNBQWMsRUFBRTt3QkFDbkMsT0FBTztvQkFDVDtnQkFDRjtZQUNGO1lBRUEsT0FBT0gsT0FBT1AsR0FBRyxLQUFLakg7UUFDeEI7UUFFQSxTQUFTNEgsWUFBWUosTUFBTTtZQUN6QjtnQkFDRSxJQUFJL0MsZUFBZWpILElBQUksQ0FBQ2dLLFFBQVEsUUFBUTtvQkFDdEMsSUFBSUMsU0FBUzlKLE9BQU8rSix3QkFBd0IsQ0FBQ0YsUUFBUSxPQUFPMUgsR0FBRztvQkFFL0QsSUFBSTJILFVBQVVBLE9BQU9FLGNBQWMsRUFBRTt3QkFDbkMsT0FBTztvQkFDVDtnQkFDRjtZQUNGO1lBRUEsT0FBT0gsT0FBT3BILEdBQUcsS0FBS0o7UUFDeEI7UUFFQSxTQUFTNkgsMkJBQTJCbkUsS0FBSyxFQUFFZCxXQUFXO1lBQ3BELElBQUlrRix3QkFBd0I7Z0JBQzFCO29CQUNFLElBQUksQ0FBQ1YsNEJBQTRCO3dCQUMvQkEsNkJBQTZCO3dCQUU3QnpLLE1BQU0sOERBQThELG1FQUFtRSx5RUFBeUUsa0RBQWtEaUc7b0JBQ3BRO2dCQUNGO1lBQ0Y7WUFFQWtGLHNCQUFzQkgsY0FBYyxHQUFHO1lBQ3ZDaEssT0FBTzRHLGNBQWMsQ0FBQ2IsT0FBTyxPQUFPO2dCQUNsQzVELEtBQUtnSTtnQkFDTEMsY0FBYztZQUNoQjtRQUNGO1FBRUEsU0FBU0MsMkJBQTJCdEUsS0FBSyxFQUFFZCxXQUFXO1lBQ3BELElBQUlxRix3QkFBd0I7Z0JBQzFCO29CQUNFLElBQUksQ0FBQ1osNEJBQTRCO3dCQUMvQkEsNkJBQTZCO3dCQUU3QjFLLE1BQU0sOERBQThELG1FQUFtRSx5RUFBeUUsa0RBQWtEaUc7b0JBQ3BRO2dCQUNGO1lBQ0Y7WUFFQXFGLHNCQUFzQk4sY0FBYyxHQUFHO1lBQ3ZDaEssT0FBTzRHLGNBQWMsQ0FBQ2IsT0FBTyxPQUFPO2dCQUNsQzVELEtBQUttSTtnQkFDTEYsY0FBYztZQUNoQjtRQUNGO1FBRUEsU0FBU0cscUNBQXFDVixNQUFNO1lBQ2xEO2dCQUNFLElBQUksT0FBT0EsT0FBT1AsR0FBRyxLQUFLLFlBQVkvTCxrQkFBa0JELE9BQU8sSUFBSXVNLE9BQU9OLE1BQU0sSUFBSWhNLGtCQUFrQkQsT0FBTyxDQUFDa04sU0FBUyxLQUFLWCxPQUFPTixNQUFNLEVBQUU7b0JBQ3pJLElBQUl2RSxnQkFBZ0J3RCx5QkFBeUJqTCxrQkFBa0JELE9BQU8sQ0FBQ3NLLElBQUk7b0JBRTNFLElBQUksQ0FBQytCLHNCQUFzQixDQUFDM0UsY0FBYyxFQUFFO3dCQUMxQ2hHLE1BQU0sa0RBQWtELHdFQUF3RSx1RUFBdUUsb0ZBQW9GLDhDQUE4QyxtREFBbURnRyxlQUFlNkUsT0FBT1AsR0FBRzt3QkFFclpLLHNCQUFzQixDQUFDM0UsY0FBYyxHQUFHO29CQUMxQztnQkFDRjtZQUNGO1FBQ0Y7UUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUdELFNBQVN5RixhQUFhN0MsSUFBSSxFQUFFbkYsR0FBRyxFQUFFNkcsR0FBRyxFQUFFb0IsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRTdFLEtBQUs7WUFDOUQsSUFBSThFLFVBQVU7Z0JBQ1osa0VBQWtFO2dCQUNsRXBDLFVBQVVyRjtnQkFDVixpREFBaUQ7Z0JBQ2pEd0UsTUFBTUE7Z0JBQ05uRixLQUFLQTtnQkFDTDZHLEtBQUtBO2dCQUNMdkQsT0FBT0E7Z0JBQ1AsOERBQThEO2dCQUM5RCtFLFFBQVFGO1lBQ1Y7WUFFQTtnQkFDRSwwREFBMEQ7Z0JBQzFELG9FQUFvRTtnQkFDcEUsbUVBQW1FO2dCQUNuRSwwQ0FBMEM7Z0JBQzFDQyxRQUFRRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLHVFQUF1RTtnQkFDNUYsbUVBQW1FO2dCQUNuRSxvRUFBb0U7Z0JBQ3BFLGNBQWM7Z0JBRWQvSyxPQUFPNEcsY0FBYyxDQUFDaUUsUUFBUUUsTUFBTSxFQUFFLGFBQWE7b0JBQ2pEWCxjQUFjO29CQUNkWSxZQUFZO29CQUNaQyxVQUFVO29CQUNWdkksT0FBTztnQkFDVCxJQUFJLDJDQUEyQztnQkFFL0MxQyxPQUFPNEcsY0FBYyxDQUFDaUUsU0FBUyxTQUFTO29CQUN0Q1QsY0FBYztvQkFDZFksWUFBWTtvQkFDWkMsVUFBVTtvQkFDVnZJLE9BQU9nSTtnQkFDVCxJQUFJLG9FQUFvRTtnQkFDeEUsd0VBQXdFO2dCQUV4RTFLLE9BQU80RyxjQUFjLENBQUNpRSxTQUFTLFdBQVc7b0JBQ3hDVCxjQUFjO29CQUNkWSxZQUFZO29CQUNaQyxVQUFVO29CQUNWdkksT0FBT2lJO2dCQUNUO2dCQUVBLElBQUkzSyxPQUFPNkYsTUFBTSxFQUFFO29CQUNqQjdGLE9BQU82RixNQUFNLENBQUNnRixRQUFROUUsS0FBSztvQkFDM0IvRixPQUFPNkYsTUFBTSxDQUFDZ0Y7Z0JBQ2hCO1lBQ0Y7WUFFQSxPQUFPQTtRQUNUO1FBQ0E7OztDQUdDLEdBRUQsU0FBU0ssZ0JBQWdCdEQsSUFBSSxFQUFFaUMsTUFBTSxFQUFFc0IsUUFBUTtZQUM3QyxJQUFJQyxVQUFVLCtCQUErQjtZQUU3QyxJQUFJckYsUUFBUSxDQUFDO1lBQ2IsSUFBSXRELE1BQU07WUFDVixJQUFJNkcsTUFBTTtZQUNWLElBQUlvQixPQUFPO1lBQ1gsSUFBSUMsU0FBUztZQUViLElBQUlkLFVBQVUsTUFBTTtnQkFDbEIsSUFBSUQsWUFBWUMsU0FBUztvQkFDdkJQLE1BQU1PLE9BQU9QLEdBQUc7b0JBRWhCO3dCQUNFaUIscUNBQXFDVjtvQkFDdkM7Z0JBQ0Y7Z0JBRUEsSUFBSUksWUFBWUosU0FBUztvQkFDdkI7d0JBQ0U3Qix1QkFBdUI2QixPQUFPcEgsR0FBRztvQkFDbkM7b0JBRUFBLE1BQU0sS0FBS29ILE9BQU9wSCxHQUFHO2dCQUN2QjtnQkFFQWlJLE9BQU9iLE9BQU9OLE1BQU0sS0FBS2xILFlBQVksT0FBT3dILE9BQU9OLE1BQU07Z0JBQ3pEb0IsU0FBU2QsT0FBT0wsUUFBUSxLQUFLbkgsWUFBWSxPQUFPd0gsT0FBT0wsUUFBUSxFQUFFLHVEQUF1RDtnQkFFeEgsSUFBSzRCLFlBQVl2QixPQUFRO29CQUN2QixJQUFJL0MsZUFBZWpILElBQUksQ0FBQ2dLLFFBQVF1QixhQUFhLENBQUMvQixlQUFldkMsY0FBYyxDQUFDc0UsV0FBVzt3QkFDckZyRixLQUFLLENBQUNxRixTQUFTLEdBQUd2QixNQUFNLENBQUN1QixTQUFTO29CQUNwQztnQkFDRjtZQUNGLEVBQUUseUVBQXlFO1lBQzNFLG9DQUFvQztZQUdwQyxJQUFJQyxpQkFBaUIzTSxVQUFVQyxNQUFNLEdBQUc7WUFFeEMsSUFBSTBNLG1CQUFtQixHQUFHO2dCQUN4QnRGLE1BQU1vRixRQUFRLEdBQUdBO1lBQ25CLE9BQU8sSUFBSUUsaUJBQWlCLEdBQUc7Z0JBQzdCLElBQUlDLGFBQWF6TSxNQUFNd007Z0JBRXZCLElBQUssSUFBSTlJLElBQUksR0FBR0EsSUFBSThJLGdCQUFnQjlJLElBQUs7b0JBQ3ZDK0ksVUFBVSxDQUFDL0ksRUFBRSxHQUFHN0QsU0FBUyxDQUFDNkQsSUFBSSxFQUFFO2dCQUNsQztnQkFFQTtvQkFDRSxJQUFJdkMsT0FBTzZGLE1BQU0sRUFBRTt3QkFDakI3RixPQUFPNkYsTUFBTSxDQUFDeUY7b0JBQ2hCO2dCQUNGO2dCQUVBdkYsTUFBTW9GLFFBQVEsR0FBR0c7WUFDbkIsRUFBRSx3QkFBd0I7WUFHMUIsSUFBSTFELFFBQVFBLEtBQUsyRCxZQUFZLEVBQUU7Z0JBQzdCLElBQUlBLGVBQWUzRCxLQUFLMkQsWUFBWTtnQkFFcEMsSUFBS0gsWUFBWUcsYUFBYztvQkFDN0IsSUFBSXhGLEtBQUssQ0FBQ3FGLFNBQVMsS0FBSy9JLFdBQVc7d0JBQ2pDMEQsS0FBSyxDQUFDcUYsU0FBUyxHQUFHRyxZQUFZLENBQUNILFNBQVM7b0JBQzFDO2dCQUNGO1lBQ0Y7WUFFQTtnQkFDRSxJQUFJM0ksT0FBTzZHLEtBQUs7b0JBQ2QsSUFBSXJFLGNBQWMsT0FBTzJDLFNBQVMsYUFBYUEsS0FBSzNDLFdBQVcsSUFBSTJDLEtBQUsxQyxJQUFJLElBQUksWUFBWTBDO29CQUU1RixJQUFJbkYsS0FBSzt3QkFDUHlILDJCQUEyQm5FLE9BQU9kO29CQUNwQztvQkFFQSxJQUFJcUUsS0FBSzt3QkFDUGUsMkJBQTJCdEUsT0FBT2Q7b0JBQ3BDO2dCQUNGO1lBQ0Y7WUFFQSxPQUFPd0YsYUFBYTdDLE1BQU1uRixLQUFLNkcsS0FBS29CLE1BQU1DLFFBQVFwTixrQkFBa0JELE9BQU8sRUFBRXlJO1FBQy9FO1FBQ0EsU0FBU3lGLG1CQUFtQkMsVUFBVSxFQUFFQyxNQUFNO1lBQzVDLElBQUlDLGFBQWFsQixhQUFhZ0IsV0FBVzdELElBQUksRUFBRThELFFBQVFELFdBQVduQyxHQUFHLEVBQUVtQyxXQUFXRyxLQUFLLEVBQUVILFdBQVdJLE9BQU8sRUFBRUosV0FBV1gsTUFBTSxFQUFFVyxXQUFXMUYsS0FBSztZQUNoSixPQUFPNEY7UUFDVDtRQUNBOzs7Q0FHQyxHQUVELFNBQVNHLGVBQWVqQixPQUFPLEVBQUVoQixNQUFNLEVBQUVzQixRQUFRO1lBQy9DLElBQUlOLFlBQVksUUFBUUEsWUFBWXhJLFdBQVc7Z0JBQzdDLE1BQU0sSUFBSWdFLE1BQU0sbUZBQW1Gd0UsVUFBVTtZQUMvRztZQUVBLElBQUlPLFVBQVUsNEJBQTRCO1lBRTFDLElBQUlyRixRQUFRaEcsT0FBTyxDQUFDLEdBQUc4SyxRQUFROUUsS0FBSyxHQUFHLCtCQUErQjtZQUV0RSxJQUFJdEQsTUFBTW9JLFFBQVFwSSxHQUFHO1lBQ3JCLElBQUk2RyxNQUFNdUIsUUFBUXZCLEdBQUcsRUFBRSxrREFBa0Q7WUFFekUsSUFBSW9CLE9BQU9HLFFBQVFlLEtBQUssRUFBRSx5RUFBeUU7WUFDbkcsNEVBQTRFO1lBQzVFLGNBQWM7WUFFZCxJQUFJakIsU0FBU0UsUUFBUWdCLE9BQU8sRUFBRSxvREFBb0Q7WUFFbEYsSUFBSWpCLFFBQVFDLFFBQVFDLE1BQU07WUFFMUIsSUFBSWpCLFVBQVUsTUFBTTtnQkFDbEIsSUFBSUQsWUFBWUMsU0FBUztvQkFDdkIsMENBQTBDO29CQUMxQ1AsTUFBTU8sT0FBT1AsR0FBRztvQkFDaEJzQixRQUFRck4sa0JBQWtCRCxPQUFPO2dCQUNuQztnQkFFQSxJQUFJMk0sWUFBWUosU0FBUztvQkFDdkI7d0JBQ0U3Qix1QkFBdUI2QixPQUFPcEgsR0FBRztvQkFDbkM7b0JBRUFBLE1BQU0sS0FBS29ILE9BQU9wSCxHQUFHO2dCQUN2QixFQUFFLCtDQUErQztnQkFHakQsSUFBSThJO2dCQUVKLElBQUlWLFFBQVFqRCxJQUFJLElBQUlpRCxRQUFRakQsSUFBSSxDQUFDMkQsWUFBWSxFQUFFO29CQUM3Q0EsZUFBZVYsUUFBUWpELElBQUksQ0FBQzJELFlBQVk7Z0JBQzFDO2dCQUVBLElBQUtILFlBQVl2QixPQUFRO29CQUN2QixJQUFJL0MsZUFBZWpILElBQUksQ0FBQ2dLLFFBQVF1QixhQUFhLENBQUMvQixlQUFldkMsY0FBYyxDQUFDc0UsV0FBVzt3QkFDckYsSUFBSXZCLE1BQU0sQ0FBQ3VCLFNBQVMsS0FBSy9JLGFBQWFrSixpQkFBaUJsSixXQUFXOzRCQUNoRSx3QkFBd0I7NEJBQ3hCMEQsS0FBSyxDQUFDcUYsU0FBUyxHQUFHRyxZQUFZLENBQUNILFNBQVM7d0JBQzFDLE9BQU87NEJBQ0xyRixLQUFLLENBQUNxRixTQUFTLEdBQUd2QixNQUFNLENBQUN1QixTQUFTO3dCQUNwQztvQkFDRjtnQkFDRjtZQUNGLEVBQUUseUVBQXlFO1lBQzNFLG9DQUFvQztZQUdwQyxJQUFJQyxpQkFBaUIzTSxVQUFVQyxNQUFNLEdBQUc7WUFFeEMsSUFBSTBNLG1CQUFtQixHQUFHO2dCQUN4QnRGLE1BQU1vRixRQUFRLEdBQUdBO1lBQ25CLE9BQU8sSUFBSUUsaUJBQWlCLEdBQUc7Z0JBQzdCLElBQUlDLGFBQWF6TSxNQUFNd007Z0JBRXZCLElBQUssSUFBSTlJLElBQUksR0FBR0EsSUFBSThJLGdCQUFnQjlJLElBQUs7b0JBQ3ZDK0ksVUFBVSxDQUFDL0ksRUFBRSxHQUFHN0QsU0FBUyxDQUFDNkQsSUFBSSxFQUFFO2dCQUNsQztnQkFFQXdELE1BQU1vRixRQUFRLEdBQUdHO1lBQ25CO1lBRUEsT0FBT2IsYUFBYUksUUFBUWpELElBQUksRUFBRW5GLEtBQUs2RyxLQUFLb0IsTUFBTUMsUUFBUUMsT0FBTzdFO1FBQ25FO1FBQ0E7Ozs7OztDQU1DLEdBRUQsU0FBU2dHLGVBQWVDLE1BQU07WUFDNUIsT0FBTyxPQUFPQSxXQUFXLFlBQVlBLFdBQVcsUUFBUUEsT0FBT3ZELFFBQVEsS0FBS3JGO1FBQzlFO1FBRUEsSUFBSTZJLFlBQVk7UUFDaEIsSUFBSUMsZUFBZTtRQUNuQjs7Ozs7Q0FLQyxHQUVELFNBQVNDLE9BQU8xSixHQUFHO1lBQ2pCLElBQUkySixjQUFjO1lBQ2xCLElBQUlDLGdCQUFnQjtnQkFDbEIsS0FBSztnQkFDTCxLQUFLO1lBQ1A7WUFDQSxJQUFJQyxnQkFBZ0I3SixJQUFJOEosT0FBTyxDQUFDSCxhQUFhLFNBQVVoSyxLQUFLO2dCQUMxRCxPQUFPaUssYUFBYSxDQUFDakssTUFBTTtZQUM3QjtZQUNBLE9BQU8sTUFBTWtLO1FBQ2Y7UUFDQTs7O0NBR0MsR0FHRCxJQUFJRSxtQkFBbUI7UUFDdkIsSUFBSUMsNkJBQTZCO1FBRWpDLFNBQVNDLHNCQUFzQkMsSUFBSTtZQUNqQyxPQUFPQSxLQUFLSixPQUFPLENBQUNFLDRCQUE0QjtRQUNsRDtRQUNBOzs7Ozs7Q0FNQyxHQUdELFNBQVNHLGNBQWMvQixPQUFPLEVBQUVnQyxLQUFLO1lBQ25DLDBFQUEwRTtZQUMxRSxnREFBZ0Q7WUFDaEQsSUFBSSxPQUFPaEMsWUFBWSxZQUFZQSxZQUFZLFFBQVFBLFFBQVFwSSxHQUFHLElBQUksTUFBTTtnQkFDMUUsZUFBZTtnQkFDZjtvQkFDRXVGLHVCQUF1QjZDLFFBQVFwSSxHQUFHO2dCQUNwQztnQkFFQSxPQUFPMEosT0FBTyxLQUFLdEIsUUFBUXBJLEdBQUc7WUFDaEMsRUFBRSxrREFBa0Q7WUFHcEQsT0FBT29LLE1BQU1DLFFBQVEsQ0FBQztRQUN4QjtRQUVBLFNBQVNDLGFBQWE1QixRQUFRLEVBQUU2QixLQUFLLEVBQUVDLGFBQWEsRUFBRUMsU0FBUyxFQUFFM0gsUUFBUTtZQUN2RSxJQUFJcUMsT0FBTyxPQUFPdUQ7WUFFbEIsSUFBSXZELFNBQVMsZUFBZUEsU0FBUyxXQUFXO2dCQUM5QywwQ0FBMEM7Z0JBQzFDdUQsV0FBVztZQUNiO1lBRUEsSUFBSWdDLGlCQUFpQjtZQUVyQixJQUFJaEMsYUFBYSxNQUFNO2dCQUNyQmdDLGlCQUFpQjtZQUNuQixPQUFPO2dCQUNMLE9BQVF2RjtvQkFDTixLQUFLO29CQUNMLEtBQUs7d0JBQ0h1RixpQkFBaUI7d0JBQ2pCO29CQUVGLEtBQUs7d0JBQ0gsT0FBUWhDLFNBQVMxQyxRQUFROzRCQUN2QixLQUFLckY7NEJBQ0wsS0FBS0c7Z0NBQ0g0SixpQkFBaUI7d0JBQ3JCO2dCQUVKO1lBQ0Y7WUFFQSxJQUFJQSxnQkFBZ0I7Z0JBQ2xCLElBQUlDLFNBQVNqQztnQkFDYixJQUFJa0MsY0FBYzlILFNBQVM2SCxTQUFTLDBFQUEwRTtnQkFDOUcsMkRBQTJEO2dCQUUzRCxJQUFJRSxXQUFXSixjQUFjLEtBQUtqQixZQUFZVyxjQUFjUSxRQUFRLEtBQUtGO2dCQUV6RSxJQUFJM0YsUUFBUThGLGNBQWM7b0JBQ3hCLElBQUlFLGtCQUFrQjtvQkFFdEIsSUFBSUQsWUFBWSxNQUFNO3dCQUNwQkMsa0JBQWtCYixzQkFBc0JZLFlBQVk7b0JBQ3REO29CQUVBUCxhQUFhTSxhQUFhTCxPQUFPTyxpQkFBaUIsSUFBSSxTQUFVQyxDQUFDO3dCQUMvRCxPQUFPQTtvQkFDVDtnQkFDRixPQUFPLElBQUlILGVBQWUsTUFBTTtvQkFDOUIsSUFBSXRCLGVBQWVzQixjQUFjO3dCQUMvQjs0QkFDRSw4REFBOEQ7NEJBQzlELDhEQUE4RDs0QkFDOUQsd0ZBQXdGOzRCQUN4RixJQUFJQSxZQUFZNUssR0FBRyxJQUFLLEVBQUMySyxVQUFVQSxPQUFPM0ssR0FBRyxLQUFLNEssWUFBWTVLLEdBQUcsR0FBRztnQ0FDbEV1Rix1QkFBdUJxRixZQUFZNUssR0FBRzs0QkFDeEM7d0JBQ0Y7d0JBRUE0SyxjQUFjN0IsbUJBQW1CNkIsYUFDakMseURBQXlEO3dCQUN6REosZ0JBQ0FJLENBQUFBLFlBQVk1SyxHQUFHLElBQUssRUFBQzJLLFVBQVVBLE9BQU8zSyxHQUFHLEtBQUs0SyxZQUFZNUssR0FBRyxJQUFJaUssc0JBQ2pFLEtBQUtXLFlBQVk1SyxHQUFHLENBQUMsMERBQTBEOzRCQUMzRSxNQUFNLEVBQUMsSUFBSzZLO29CQUNsQjtvQkFFQU4sTUFBTWxLLElBQUksQ0FBQ3VLO2dCQUNiO2dCQUVBLE9BQU87WUFDVDtZQUVBLElBQUlJO1lBQ0osSUFBSUM7WUFDSixJQUFJQyxlQUFlLEdBQUcsa0RBQWtEO1lBRXhFLElBQUlDLGlCQUFpQlYsY0FBYyxLQUFLakIsWUFBWWlCLFlBQVloQjtZQUVoRSxJQUFJM0UsUUFBUTRELFdBQVc7Z0JBQ3JCLElBQUssSUFBSTVJLElBQUksR0FBR0EsSUFBSTRJLFNBQVN4TSxNQUFNLEVBQUU0RCxJQUFLO29CQUN4Q2tMLFFBQVF0QyxRQUFRLENBQUM1SSxFQUFFO29CQUNuQm1MLFdBQVdFLGlCQUFpQmhCLGNBQWNhLE9BQU9sTDtvQkFDakRvTCxnQkFBZ0JaLGFBQWFVLE9BQU9ULE9BQU9DLGVBQWVTLFVBQVVuSTtnQkFDdEU7WUFDRixPQUFPO2dCQUNMLElBQUlzSSxhQUFhdEosY0FBYzRHO2dCQUUvQixJQUFJLE9BQU8wQyxlQUFlLFlBQVk7b0JBQ3BDLElBQUlDLG1CQUFtQjNDO29CQUV2Qjt3QkFDRSxvQ0FBb0M7d0JBQ3BDLElBQUkwQyxlQUFlQyxpQkFBaUJsTixPQUFPLEVBQUU7NEJBQzNDLElBQUksQ0FBQzRMLGtCQUFrQjtnQ0FDckJqTyxLQUFLLDhDQUE4Qzs0QkFDckQ7NEJBRUFpTyxtQkFBbUI7d0JBQ3JCO29CQUNGO29CQUVBLElBQUluSSxXQUFXd0osV0FBV2hPLElBQUksQ0FBQ2lPO29CQUMvQixJQUFJQztvQkFDSixJQUFJQyxLQUFLLEdBQUcsbUZBQW1GO29CQUUvRixNQUFPLENBQUMsQ0FBQ0QsT0FBTzFKLFNBQVM0SixJQUFJLEVBQUMsRUFBR0MsSUFBSSxDQUFFO3dCQUNyQ1QsUUFBUU0sS0FBS3JMLEtBQUs7d0JBQ2xCZ0wsV0FBV0UsaUJBQWlCaEIsY0FBY2EsT0FBT087d0JBQ2pETCxnQkFBZ0JaLGFBQWFVLE9BQU9ULE9BQU9DLGVBQWVTLFVBQVVuSTtvQkFDdEU7Z0JBQ0YsT0FBTyxJQUFJcUMsU0FBUyxVQUFVO29CQUM1QiwrREFBK0Q7b0JBQy9ELElBQUl1RyxpQkFBaUIzTyxPQUFPMkw7b0JBQzVCLE1BQU0sSUFBSTlFLE1BQU0sb0RBQXFEOEgsQ0FBQUEsbUJBQW1CLG9CQUFvQix1QkFBdUJuTyxPQUFPb08sSUFBSSxDQUFDakQsVUFBVWtELElBQUksQ0FBQyxRQUFRLE1BQU1GLGNBQWEsSUFBSyxRQUFRLG1FQUFtRTtnQkFDM1E7WUFDRjtZQUVBLE9BQU9SO1FBQ1Q7UUFDQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FHRCxTQUFTVyxZQUFZbkQsUUFBUSxFQUFFb0QsSUFBSSxFQUFFdkksT0FBTztZQUMxQyxJQUFJbUYsWUFBWSxNQUFNO2dCQUNwQix3REFBd0Q7Z0JBQ3hELE9BQU9BO1lBQ1Q7WUFFQSxJQUFJcUQsU0FBUyxFQUFFO1lBQ2YsSUFBSUMsUUFBUTtZQUNaMUIsYUFBYTVCLFVBQVVxRCxRQUFRLElBQUksSUFBSSxTQUFVZixLQUFLO2dCQUNwRCxPQUFPYyxLQUFLMU8sSUFBSSxDQUFDbUcsU0FBU3lILE9BQU9nQjtZQUNuQztZQUNBLE9BQU9EO1FBQ1Q7UUFDQTs7Ozs7Ozs7Q0FRQyxHQUdELFNBQVNFLGNBQWN2RCxRQUFRO1lBQzdCLElBQUl3RCxJQUFJO1lBQ1JMLFlBQVluRCxVQUFVO2dCQUNwQndELEtBQUssd0JBQXdCO1lBQy9CO1lBQ0EsT0FBT0E7UUFDVDtRQUNBOzs7Ozs7Ozs7OztDQVdDLEdBR0QsU0FBU0MsZ0JBQWdCekQsUUFBUSxFQUFFMEQsV0FBVyxFQUFFQyxjQUFjO1lBQzVEUixZQUFZbkQsVUFDWjtnQkFDRTBELFlBQVlqUCxLQUFLLENBQUMsSUFBSSxFQUFFbEIsWUFBWSx5QkFBeUI7WUFDL0QsR0FBR29RO1FBQ0w7UUFDQTs7Ozs7Q0FLQyxHQUdELFNBQVNDLFFBQVE1RCxRQUFRO1lBQ3ZCLE9BQU9tRCxZQUFZbkQsVUFBVSxTQUFVc0MsS0FBSztnQkFDMUMsT0FBT0E7WUFDVCxNQUFNLEVBQUU7UUFDVjtRQUNBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FHRCxTQUFTdUIsVUFBVTdELFFBQVE7WUFDekIsSUFBSSxDQUFDWSxlQUFlWixXQUFXO2dCQUM3QixNQUFNLElBQUk5RSxNQUFNO1lBQ2xCO1lBRUEsT0FBTzhFO1FBQ1Q7UUFFQSxJQUFJOEQsZ0JBQWdCLENBQUM7UUFDckIsSUFBSUMsVUFBVTtRQUNkLElBQUlDLFdBQVc7UUFDZixJQUFJQyxXQUFXO1FBRWYsU0FBU0MsZ0JBQWdCckcsT0FBTztZQUM5QixJQUFJQSxRQUFRc0csT0FBTyxLQUFLTCxlQUFlO2dCQUNyQyxJQUFJTSxPQUFPdkcsUUFBUXdHLE9BQU87Z0JBQzFCLElBQUlDLFdBQVdGLFFBQVEsZ0NBQWdDO2dCQUN2RCw2RUFBNkU7Z0JBQzdFLDRFQUE0RTtnQkFDNUUsNkVBQTZFO2dCQUM3RSw0REFBNEQ7Z0JBRTVERSxTQUFTOU0sSUFBSSxDQUFDLFNBQVUrTSxZQUFZO29CQUNsQyxJQUFJMUcsUUFBUXNHLE9BQU8sS0FBS0osV0FBV2xHLFFBQVFzRyxPQUFPLEtBQUtMLGVBQWU7d0JBQ3BFLGdDQUFnQzt3QkFDaEMsSUFBSVUsV0FBVzNHO3dCQUNmMkcsU0FBU0wsT0FBTyxHQUFHSDt3QkFDbkJRLFNBQVNILE9BQU8sR0FBR0U7b0JBQ3JCO2dCQUNGLEdBQUcsU0FBVTFRLEtBQUs7b0JBQ2hCLElBQUlnSyxRQUFRc0csT0FBTyxLQUFLSixXQUFXbEcsUUFBUXNHLE9BQU8sS0FBS0wsZUFBZTt3QkFDcEUsZ0NBQWdDO3dCQUNoQyxJQUFJVyxXQUFXNUc7d0JBQ2Y0RyxTQUFTTixPQUFPLEdBQUdGO3dCQUNuQlEsU0FBU0osT0FBTyxHQUFHeFE7b0JBQ3JCO2dCQUNGO2dCQUVBLElBQUlnSyxRQUFRc0csT0FBTyxLQUFLTCxlQUFlO29CQUNyQywwRUFBMEU7b0JBQzFFLGlEQUFpRDtvQkFDakQsSUFBSVksVUFBVTdHO29CQUNkNkcsUUFBUVAsT0FBTyxHQUFHSjtvQkFDbEJXLFFBQVFMLE9BQU8sR0FBR0M7Z0JBQ3BCO1lBQ0Y7WUFFQSxJQUFJekcsUUFBUXNHLE9BQU8sS0FBS0gsVUFBVTtnQkFDaEMsSUFBSU8sZUFBZTFHLFFBQVF3RyxPQUFPO2dCQUVsQztvQkFDRSxJQUFJRSxpQkFBaUJyTixXQUFXO3dCQUM5QnJELE1BQU0sK0NBQStDLGlCQUFpQiw2REFBNkQsdUVBQXVFO3dCQUMxTSx1Q0FBdUMsOEJBQThCLDREQUE0RDBRO29CQUNuSTtnQkFDRjtnQkFFQTtvQkFDRSxJQUFJLENBQUUsY0FBYUEsWUFBVyxHQUFJO3dCQUNoQzFRLE1BQU0sK0NBQStDLGlCQUFpQiw2REFBNkQsdUVBQXVFO3dCQUMxTSx1Q0FBdUMseUJBQXlCMFE7b0JBQ2xFO2dCQUNGO2dCQUVBLE9BQU9BLGFBQWFJLE9BQU87WUFDN0IsT0FBTztnQkFDTCxNQUFNOUcsUUFBUXdHLE9BQU87WUFDdkI7UUFDRjtRQUVBLFNBQVNPLEtBQUtSLElBQUk7WUFDaEIsSUFBSXZHLFVBQVU7Z0JBQ1osMkNBQTJDO2dCQUMzQ3NHLFNBQVNMO2dCQUNUTyxTQUFTRDtZQUNYO1lBQ0EsSUFBSVMsV0FBVztnQkFDYnZILFVBQVV4RTtnQkFDVmdGLFVBQVVEO2dCQUNWRyxPQUFPa0c7WUFDVDtZQUVBO2dCQUNFLHVEQUF1RDtnQkFDdkQsSUFBSTlEO2dCQUNKLElBQUkwRSxXQUFXLDJCQUEyQjtnQkFFMUNqUSxPQUFPa1EsZ0JBQWdCLENBQUNGLFVBQVU7b0JBQ2hDekUsY0FBYzt3QkFDWm5CLGNBQWM7d0JBQ2RqSSxLQUFLOzRCQUNILE9BQU9vSjt3QkFDVDt3QkFDQSxrQ0FBa0M7d0JBQ2xDakosS0FBSyxTQUFVNk4sZUFBZTs0QkFDNUJuUixNQUFNLHNFQUFzRSxzRUFBc0U7NEJBRWxKdU0sZUFBZTRFLGlCQUFpQiwwQ0FBMEM7NEJBQzFFLDJCQUEyQjs0QkFFM0JuUSxPQUFPNEcsY0FBYyxDQUFDb0osVUFBVSxnQkFBZ0I7Z0NBQzlDaEYsWUFBWTs0QkFDZDt3QkFDRjtvQkFDRjtvQkFDQWlGLFdBQVc7d0JBQ1Q3RixjQUFjO3dCQUNkakksS0FBSzs0QkFDSCxPQUFPOE47d0JBQ1Q7d0JBQ0Esa0NBQWtDO3dCQUNsQzNOLEtBQUssU0FBVThOLFlBQVk7NEJBQ3pCcFIsTUFBTSxtRUFBbUUsc0VBQXNFOzRCQUUvSWlSLFlBQVlHLGNBQWMsMENBQTBDOzRCQUNwRSwyQkFBMkI7NEJBRTNCcFEsT0FBTzRHLGNBQWMsQ0FBQ29KLFVBQVUsYUFBYTtnQ0FDM0NoRixZQUFZOzRCQUNkO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0Y7WUFFQSxPQUFPZ0Y7UUFDVDtRQUVBLFNBQVNLLFdBQVd4SCxNQUFNO1lBQ3hCO2dCQUNFLElBQUlBLFVBQVUsUUFBUUEsT0FBT0osUUFBUSxLQUFLekUsaUJBQWlCO29CQUN6RGhGLE1BQU0saUVBQWlFLHNEQUFzRDtnQkFDL0gsT0FBTyxJQUFJLE9BQU82SixXQUFXLFlBQVk7b0JBQ3ZDN0osTUFBTSwyREFBMkQ2SixXQUFXLE9BQU8sU0FBUyxPQUFPQTtnQkFDckcsT0FBTztvQkFDTCxJQUFJQSxPQUFPbEssTUFBTSxLQUFLLEtBQUtrSyxPQUFPbEssTUFBTSxLQUFLLEdBQUc7d0JBQzlDSyxNQUFNLGdGQUFnRjZKLE9BQU9sSyxNQUFNLEtBQUssSUFBSSw2Q0FBNkM7b0JBQzNKO2dCQUNGO2dCQUVBLElBQUlrSyxVQUFVLE1BQU07b0JBQ2xCLElBQUlBLE9BQU8wQyxZQUFZLElBQUksUUFBUTFDLE9BQU9vSCxTQUFTLElBQUksTUFBTTt3QkFDM0RqUixNQUFNLDJFQUEyRTtvQkFDbkY7Z0JBQ0Y7WUFDRjtZQUVBLElBQUlzUixjQUFjO2dCQUNoQjdILFVBQVU1RTtnQkFDVmdGLFFBQVFBO1lBQ1Y7WUFFQTtnQkFDRSxJQUFJMEg7Z0JBQ0p2USxPQUFPNEcsY0FBYyxDQUFDMEosYUFBYSxlQUFlO29CQUNoRHRGLFlBQVk7b0JBQ1paLGNBQWM7b0JBQ2RqSSxLQUFLO3dCQUNILE9BQU9vTztvQkFDVDtvQkFDQWpPLEtBQUssU0FBVTRDLElBQUk7d0JBQ2pCcUwsVUFBVXJMLE1BQU0seUVBQXlFO3dCQUN6RiwrQ0FBK0M7d0JBQy9DLDZEQUE2RDt3QkFDN0QsMEVBQTBFO3dCQUMxRSwyREFBMkQ7d0JBQzNELDZDQUE2Qzt3QkFDN0MsZ0ZBQWdGO3dCQUVoRixJQUFJLENBQUMyRCxPQUFPM0QsSUFBSSxJQUFJLENBQUMyRCxPQUFPNUQsV0FBVyxFQUFFOzRCQUN2QzRELE9BQU81RCxXQUFXLEdBQUdDO3dCQUN2QjtvQkFDRjtnQkFDRjtZQUNGO1lBRUEsT0FBT29MO1FBQ1Q7UUFFQSxJQUFJRSwyQkFBMkJuTixPQUFPQyxHQUFHLENBQUM7UUFDMUMsU0FBU21OLG1CQUFtQjdJLElBQUk7WUFDOUIsSUFBSSxPQUFPQSxTQUFTLFlBQVksT0FBT0EsU0FBUyxZQUFZO2dCQUMxRCxPQUFPO1lBQ1QsRUFBRSxtRkFBbUY7WUFHckYsSUFBSUEsU0FBU3BFLHVCQUF1Qm9FLFNBQVNsRSx1QkFBdUJ2RixzQkFBdUJ5SixTQUFTbkUsMEJBQTBCbUUsU0FBUzlELHVCQUF1QjhELFNBQVM3RCw0QkFBNEI3RixzQkFBdUIwSixTQUFTMUQsd0JBQXdCbkcsa0JBQW1CQyxzQkFBdUJDLHlCQUEwQjtnQkFDN1QsT0FBTztZQUNUO1lBRUEsSUFBSSxPQUFPMkosU0FBUyxZQUFZQSxTQUFTLE1BQU07Z0JBQzdDLElBQUlBLEtBQUthLFFBQVEsS0FBS3hFLG1CQUFtQjJELEtBQUthLFFBQVEsS0FBS3pFLG1CQUFtQjRELEtBQUthLFFBQVEsS0FBSzlFLHVCQUF1QmlFLEtBQUthLFFBQVEsS0FBSzdFLHNCQUFzQmdFLEtBQUthLFFBQVEsS0FBSzVFLDBCQUEwQiw2REFBNkQ7Z0JBQ3hRLDZEQUE2RDtnQkFDN0QsK0RBQStEO2dCQUMvRCxRQUFRO2dCQUNSK0QsS0FBS2EsUUFBUSxLQUFLK0gsNEJBQTRCNUksS0FBSzhJLFdBQVcsS0FBS3JPLFdBQVc7b0JBQzVFLE9BQU87Z0JBQ1Q7WUFDRjtZQUVBLE9BQU87UUFDVDtRQUVBLFNBQVNzTyxLQUFLL0ksSUFBSSxFQUFFZ0osT0FBTztZQUN6QjtnQkFDRSxJQUFJLENBQUNILG1CQUFtQjdJLE9BQU87b0JBQzdCNUksTUFBTSwyREFBMkQsZ0JBQWdCNEksU0FBUyxPQUFPLFNBQVMsT0FBT0E7Z0JBQ25IO1lBQ0Y7WUFFQSxJQUFJMEksY0FBYztnQkFDaEI3SCxVQUFVekU7Z0JBQ1Y0RCxNQUFNQTtnQkFDTmdKLFNBQVNBLFlBQVl2TyxZQUFZLE9BQU91TztZQUMxQztZQUVBO2dCQUNFLElBQUlMO2dCQUNKdlEsT0FBTzRHLGNBQWMsQ0FBQzBKLGFBQWEsZUFBZTtvQkFDaER0RixZQUFZO29CQUNaWixjQUFjO29CQUNkakksS0FBSzt3QkFDSCxPQUFPb087b0JBQ1Q7b0JBQ0FqTyxLQUFLLFNBQVU0QyxJQUFJO3dCQUNqQnFMLFVBQVVyTCxNQUFNLHlFQUF5RTt3QkFDekYsK0NBQStDO3dCQUMvQyw2REFBNkQ7d0JBQzdELDBFQUEwRTt3QkFDMUUsMkRBQTJEO3dCQUMzRCxrQ0FBa0M7d0JBQ2xDLGdGQUFnRjt3QkFFaEYsSUFBSSxDQUFDMEMsS0FBSzFDLElBQUksSUFBSSxDQUFDMEMsS0FBSzNDLFdBQVcsRUFBRTs0QkFDbkMyQyxLQUFLM0MsV0FBVyxHQUFHQzt3QkFDckI7b0JBQ0Y7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU9vTDtRQUNUO1FBRUEsSUFBSU8sZUFBZTtRQUNuQixJQUFJQyxhQUFhO1FBQ2pCLElBQUlDLFVBQVU7UUFFZCxTQUFTQztZQUNQLE9BQU8sSUFBSUM7UUFDYjtRQUVBLFNBQVNDO1lBQ1AsT0FBTztnQkFDTEMsR0FBR047Z0JBQ0gsdUZBQXVGO2dCQUN2Rk8sR0FBRy9PO2dCQUNILDhEQUE4RDtnQkFDOURnUCxHQUFHO2dCQUNILG1FQUFtRTtnQkFDbkVDLEdBQUcsS0FBSyx1RUFBdUU7WUFFakY7UUFDRjtRQUVBLFNBQVN0UCxNQUFNdVAsRUFBRTtZQUNmLE9BQU87Z0JBQ0wsSUFBSS9QLGFBQWF2QixrQkFBa0IzQyxPQUFPO2dCQUUxQyxJQUFJLENBQUNrRSxZQUFZO29CQUNmLHFFQUFxRTtvQkFDckUsa0dBQWtHO29CQUNsRyxPQUFPK1AsR0FBRzNSLEtBQUssQ0FBQyxNQUFNbEI7Z0JBQ3hCO2dCQUVBLElBQUk4UyxRQUFRaFEsV0FBV1MsZUFBZSxDQUFDK087Z0JBQ3ZDLElBQUlTLFNBQVNELE1BQU1yUCxHQUFHLENBQUNvUDtnQkFDdkIsSUFBSUc7Z0JBRUosSUFBSUQsV0FBV3BQLFdBQVc7b0JBQ3hCcVAsWUFBWVI7b0JBQ1pNLE1BQU1sUCxHQUFHLENBQUNpUCxJQUFJRztnQkFDaEIsT0FBTztvQkFDTEEsWUFBWUQ7Z0JBQ2Q7Z0JBRUEsSUFBSyxJQUFJbFAsSUFBSSxHQUFHQyxJQUFJOUQsVUFBVUMsTUFBTSxFQUFFNEQsSUFBSUMsR0FBR0QsSUFBSztvQkFDaEQsSUFBSW9QLE1BQU1qVCxTQUFTLENBQUM2RCxFQUFFO29CQUV0QixJQUFJLE9BQU9vUCxRQUFRLGNBQWMsT0FBT0EsUUFBUSxZQUFZQSxRQUFRLE1BQU07d0JBQ3hFLDRCQUE0Qjt3QkFDNUIsSUFBSUMsY0FBY0YsVUFBVUwsQ0FBQzt3QkFFN0IsSUFBSU8sZ0JBQWdCLE1BQU07NEJBQ3hCRixVQUFVTCxDQUFDLEdBQUdPLGNBQWMsSUFBSVg7d0JBQ2xDO3dCQUVBLElBQUlZLGFBQWFELFlBQVl6UCxHQUFHLENBQUN3UDt3QkFFakMsSUFBSUUsZUFBZXhQLFdBQVc7NEJBQzVCcVAsWUFBWVI7NEJBQ1pVLFlBQVl0UCxHQUFHLENBQUNxUCxLQUFLRDt3QkFDdkIsT0FBTzs0QkFDTEEsWUFBWUc7d0JBQ2Q7b0JBQ0YsT0FBTzt3QkFDTCxtQ0FBbUM7d0JBQ25DLElBQUlDLGlCQUFpQkosVUFBVUosQ0FBQzt3QkFFaEMsSUFBSVEsbUJBQW1CLE1BQU07NEJBQzNCSixVQUFVSixDQUFDLEdBQUdRLGlCQUFpQixJQUFJM1I7d0JBQ3JDO3dCQUVBLElBQUk0UixnQkFBZ0JELGVBQWUzUCxHQUFHLENBQUN3UDt3QkFFdkMsSUFBSUksa0JBQWtCMVAsV0FBVzs0QkFDL0JxUCxZQUFZUjs0QkFDWlksZUFBZXhQLEdBQUcsQ0FBQ3FQLEtBQUtEO3dCQUMxQixPQUFPOzRCQUNMQSxZQUFZSzt3QkFDZDtvQkFDRjtnQkFDRjtnQkFFQSxJQUFJTCxVQUFVUCxDQUFDLEtBQUtMLFlBQVk7b0JBQzlCLE9BQU9ZLFVBQVVOLENBQUM7Z0JBQ3BCO2dCQUVBLElBQUlNLFVBQVVQLENBQUMsS0FBS0osU0FBUztvQkFDM0IsTUFBTVcsVUFBVU4sQ0FBQztnQkFDbkI7Z0JBRUEsSUFBSTtvQkFDRixrR0FBa0c7b0JBQ2xHLElBQUk1QyxTQUFTK0MsR0FBRzNSLEtBQUssQ0FBQyxNQUFNbEI7b0JBQzVCLElBQUlzVCxpQkFBaUJOO29CQUNyQk0sZUFBZWIsQ0FBQyxHQUFHTDtvQkFDbkJrQixlQUFlWixDQUFDLEdBQUc1QztvQkFDbkIsT0FBT0E7Z0JBQ1QsRUFBRSxPQUFPeFAsT0FBTztvQkFDZCx5REFBeUQ7b0JBQ3pELElBQUlpVCxjQUFjUDtvQkFDbEJPLFlBQVlkLENBQUMsR0FBR0o7b0JBQ2hCa0IsWUFBWWIsQ0FBQyxHQUFHcFM7b0JBQ2hCLE1BQU1BO2dCQUNSO1lBQ0Y7UUFDRjtRQUVBLFNBQVNrVDtZQUNQLElBQUkxUSxhQUFhbkUseUJBQXlCQyxPQUFPO1lBRWpEO2dCQUNFLElBQUlrRSxlQUFlLE1BQU07b0JBQ3ZCeEMsTUFBTSxrSEFBa0gscUNBQXFDLDJGQUEyRixrREFBa0Qsb0VBQW9FO2dCQUNoWDtZQUNGO1lBQ0EseUVBQXlFO1lBQ3pFLHFDQUFxQztZQUdyQyxPQUFPd0M7UUFDVDtRQUNBLFNBQVMyUSxXQUFXQyxPQUFPO1lBQ3pCLElBQUk1USxhQUFhMFE7WUFFakI7Z0JBQ0UsdURBQXVEO2dCQUN2RCxJQUFJRSxRQUFReEosUUFBUSxLQUFLdkcsV0FBVztvQkFDbEMsSUFBSWdRLGNBQWNELFFBQVF4SixRQUFRLEVBQUUsMERBQTBEO29CQUM5RixvREFBb0Q7b0JBRXBELElBQUl5SixZQUFZQyxRQUFRLEtBQUtGLFNBQVM7d0JBQ3BDcFQsTUFBTSx3RkFBd0Y7b0JBQ2hHLE9BQU8sSUFBSXFULFlBQVlFLFFBQVEsS0FBS0gsU0FBUzt3QkFDM0NwVCxNQUFNLDREQUE0RDtvQkFDcEU7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU93QyxXQUFXMlEsVUFBVSxDQUFDQztRQUMvQjtRQUNBLFNBQVNJLFlBQVlqTixRQUFRLEVBQUVrTixJQUFJO1lBQ2pDLElBQUlqUixhQUFhMFE7WUFDakIsT0FBTzFRLFdBQVdnUixXQUFXLENBQUNqTixVQUFVa047UUFDMUM7UUFDQSxTQUFTQyxRQUFRQyxNQUFNLEVBQUVGLElBQUk7WUFDM0IsSUFBSWpSLGFBQWEwUTtZQUNqQixPQUFPMVEsV0FBV2tSLE9BQU8sQ0FBQ0MsUUFBUUY7UUFDcEM7UUFDQSxTQUFTRyxjQUFjbFEsS0FBSyxFQUFFbVEsV0FBVztZQUN2QztnQkFDRSxJQUFJclIsYUFBYTBRO2dCQUNqQixPQUFPMVEsV0FBV29SLGFBQWEsQ0FBQ2xRLE9BQU9tUTtZQUN6QztRQUNGO1FBQ0EsU0FBU0M7WUFDUCxJQUFJdFIsYUFBYTBRO1lBQ2pCLE9BQU8xUSxXQUFXc1IsS0FBSztRQUN6QjtRQUNBLFNBQVNDLElBQUlDLE1BQU07WUFDakIsSUFBSXhSLGFBQWEwUTtZQUNqQixPQUFPMVEsV0FBV3VSLEdBQUcsQ0FBQ0M7UUFDeEI7UUFFQSx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSwwQ0FBMEM7UUFDMUMsSUFBSUMsZ0JBQWdCO1FBQ3BCLElBQUlDO1FBQ0osSUFBSUM7UUFDSixJQUFJQztRQUNKLElBQUlDO1FBQ0osSUFBSUM7UUFDSixJQUFJQztRQUNKLElBQUlDO1FBRUosU0FBU0MsZUFBZTtRQUV4QkEsWUFBWUMsa0JBQWtCLEdBQUc7UUFDakMsU0FBU0M7WUFDUDtnQkFDRSxJQUFJVixrQkFBa0IsR0FBRztvQkFDdkIsdURBQXVELEdBQ3ZEQyxVQUFVcFQsUUFBUThULEdBQUc7b0JBQ3JCVCxXQUFXclQsUUFBUTZHLElBQUk7b0JBQ3ZCeU0sV0FBV3RULFFBQVF2QixJQUFJO29CQUN2QjhVLFlBQVl2VCxRQUFRZCxLQUFLO29CQUN6QnNVLFlBQVl4VCxRQUFRK1QsS0FBSztvQkFDekJOLHFCQUFxQnpULFFBQVFnVSxjQUFjO29CQUMzQ04sZUFBZTFULFFBQVFpVSxRQUFRLEVBQUUsaURBQWlEO29CQUVsRixJQUFJaE8sUUFBUTt3QkFDVnFFLGNBQWM7d0JBQ2RZLFlBQVk7d0JBQ1p0SSxPQUFPK1E7d0JBQ1B4SSxVQUFVO29CQUNaLEdBQUcsNkRBQTZEO29CQUVoRWpMLE9BQU9rUSxnQkFBZ0IsQ0FBQ3BRLFNBQVM7d0JBQy9CNkcsTUFBTVo7d0JBQ042TixLQUFLN047d0JBQ0x4SCxNQUFNd0g7d0JBQ04vRyxPQUFPK0c7d0JBQ1A4TixPQUFPOU47d0JBQ1ArTixnQkFBZ0IvTjt3QkFDaEJnTyxVQUFVaE87b0JBQ1o7Z0JBQ0Esc0RBQXNELEdBQ3hEO2dCQUVBa047WUFDRjtRQUNGO1FBQ0EsU0FBU2U7WUFDUDtnQkFDRWY7Z0JBRUEsSUFBSUEsa0JBQWtCLEdBQUc7b0JBQ3ZCLHVEQUF1RCxHQUN2RCxJQUFJbE4sUUFBUTt3QkFDVnFFLGNBQWM7d0JBQ2RZLFlBQVk7d0JBQ1pDLFVBQVU7b0JBQ1osR0FBRyw2REFBNkQ7b0JBRWhFakwsT0FBT2tRLGdCQUFnQixDQUFDcFEsU0FBUzt3QkFDL0I4VCxLQUFLN1QsT0FBTyxDQUFDLEdBQUdnRyxPQUFPOzRCQUNyQnJELE9BQU93UTt3QkFDVDt3QkFDQXZNLE1BQU01RyxPQUFPLENBQUMsR0FBR2dHLE9BQU87NEJBQ3RCckQsT0FBT3lRO3dCQUNUO3dCQUNBNVUsTUFBTXdCLE9BQU8sQ0FBQyxHQUFHZ0csT0FBTzs0QkFDdEJyRCxPQUFPMFE7d0JBQ1Q7d0JBQ0FwVSxPQUFPZSxPQUFPLENBQUMsR0FBR2dHLE9BQU87NEJBQ3ZCckQsT0FBTzJRO3dCQUNUO3dCQUNBUSxPQUFPOVQsT0FBTyxDQUFDLEdBQUdnRyxPQUFPOzRCQUN2QnJELE9BQU80UTt3QkFDVDt3QkFDQVEsZ0JBQWdCL1QsT0FBTyxDQUFDLEdBQUdnRyxPQUFPOzRCQUNoQ3JELE9BQU82UTt3QkFDVDt3QkFDQVEsVUFBVWhVLE9BQU8sQ0FBQyxHQUFHZ0csT0FBTzs0QkFDMUJyRCxPQUFPOFE7d0JBQ1Q7b0JBQ0Y7Z0JBQ0Esc0RBQXNELEdBQ3hEO2dCQUVBLElBQUlQLGdCQUFnQixHQUFHO29CQUNyQmpVLE1BQU0sb0NBQW9DO2dCQUM1QztZQUNGO1FBQ0Y7UUFFQSxJQUFJWCx5QkFBeUJELHFCQUFxQkMsc0JBQXNCO1FBQ3hFLElBQUk0VjtRQUNKLFNBQVNDLDhCQUE4QmhQLElBQUksRUFBRXlGLE1BQU0sRUFBRXdKLE9BQU87WUFDMUQ7Z0JBQ0UsSUFBSUYsV0FBVzVSLFdBQVc7b0JBQ3hCLG9EQUFvRDtvQkFDcEQsSUFBSTt3QkFDRixNQUFNZ0U7b0JBQ1IsRUFBRSxPQUFPK0MsR0FBRzt3QkFDVixJQUFJaEgsUUFBUWdILEVBQUV6TCxLQUFLLENBQUN5VyxJQUFJLEdBQUdoUyxLQUFLLENBQUM7d0JBQ2pDNlIsU0FBUzdSLFNBQVNBLEtBQUssQ0FBQyxFQUFFLElBQUk7b0JBQ2hDO2dCQUNGLEVBQUUsMkVBQTJFO2dCQUc3RSxPQUFPLE9BQU82UixTQUFTL087WUFDekI7UUFDRjtRQUNBLElBQUltUCxVQUFVO1FBQ2QsSUFBSUM7UUFFSjtZQUNFLElBQUlDLGtCQUFrQixPQUFPdEQsWUFBWSxhQUFhQSxVQUFVOVE7WUFDaEVtVSxzQkFBc0IsSUFBSUM7UUFDNUI7UUFDQTs7Ozs7Ozs7OztDQVVDLEdBR0QsU0FBU0MsNkJBQTZCakQsRUFBRSxFQUFFa0QsU0FBUztZQUNqRCw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDbEQsTUFBTThDLFNBQVM7Z0JBQ2xCLE9BQU87WUFDVDtZQUVBO2dCQUNFLElBQUlLLFFBQVFKLG9CQUFvQm5TLEdBQUcsQ0FBQ29QO2dCQUVwQyxJQUFJbUQsVUFBVXJTLFdBQVc7b0JBQ3ZCLE9BQU9xUztnQkFDVDtZQUNGO1lBRUFMLFVBQVU7WUFDVixJQUFJTSw0QkFBNEJ0TyxNQUFNdU8saUJBQWlCLEVBQUUsMERBQTBEO1lBRW5Idk8sTUFBTXVPLGlCQUFpQixHQUFHdlM7WUFDMUIsSUFBSXdTO1lBRUo7Z0JBQ0VBLHFCQUFxQnhXLHVCQUF1QmYsT0FBTyxFQUFFLDhFQUE4RTtnQkFDbkksZ0JBQWdCO2dCQUVoQmUsdUJBQXVCZixPQUFPLEdBQUc7Z0JBQ2pDcVc7WUFDRjtZQUNBOzs7Ozs7Ozs7O0dBVUMsR0FHRCxJQUFJbUIsaUJBQWlCO2dCQUNuQkMsNkJBQTZCO29CQUMzQixJQUFJQztvQkFFSixJQUFJO3dCQUNGLHFCQUFxQjt3QkFDckIsSUFBSVAsV0FBVzs0QkFDYiw0REFBNEQ7NEJBQzVELElBQUlRLE9BQU87Z0NBQ1QsTUFBTTVPOzRCQUNSLEdBQUcsMkJBQTJCOzRCQUc5QnJHLE9BQU80RyxjQUFjLENBQUNxTyxLQUFLdFYsU0FBUyxFQUFFLFNBQVM7Z0NBQzdDMkMsS0FBSztvQ0FDSCxtRUFBbUU7b0NBQ25FLDBEQUEwRDtvQ0FDMUQsTUFBTStEO2dDQUNSOzRCQUNGOzRCQUVBLElBQUksT0FBTzZPLFlBQVksWUFBWUEsUUFBUVQsU0FBUyxFQUFFO2dDQUNwRCxzRUFBc0U7Z0NBQ3RFLHNDQUFzQztnQ0FDdEMsSUFBSTtvQ0FDRlMsUUFBUVQsU0FBUyxDQUFDUSxNQUFNLEVBQUU7Z0NBQzVCLEVBQUUsT0FBTzdMLEdBQUc7b0NBQ1Y0TCxVQUFVNUw7Z0NBQ1o7Z0NBRUE4TCxRQUFRVCxTQUFTLENBQUNsRCxJQUFJLEVBQUUsRUFBRTBEOzRCQUM1QixPQUFPO2dDQUNMLElBQUk7b0NBQ0ZBLEtBQUtwVixJQUFJO2dDQUNYLEVBQUUsT0FBT3VKLEdBQUc7b0NBQ1Y0TCxVQUFVNUw7Z0NBQ1osRUFBRSxxREFBcUQ7Z0NBR3ZEbUksR0FBRzFSLElBQUksQ0FBQ29WLEtBQUt0VixTQUFTOzRCQUN4Qjt3QkFDRixPQUFPOzRCQUNMLElBQUk7Z0NBQ0YsTUFBTTBHOzRCQUNSLEVBQUUsT0FBTytDLEdBQUc7Z0NBQ1Y0TCxVQUFVNUw7NEJBQ1osRUFBRSx1RUFBdUU7NEJBQ3pFLDJFQUEyRTs0QkFDM0UsMkJBQTJCOzRCQUczQixJQUFJK0wsZUFBZTVELE1BQU0sb0VBQW9FOzRCQUM3Rix3RUFBd0U7NEJBQ3hFLHFCQUFxQjs0QkFDckIsZ0VBQWdFOzRCQUVoRSxJQUFJNEQsZ0JBQWdCLE9BQU9BLGFBQWFDLEtBQUssS0FBSyxZQUFZO2dDQUM1REQsYUFBYUMsS0FBSyxDQUFDLFlBQWE7NEJBQ2xDO3dCQUNGO29CQUNGLEVBQUUsT0FBT0MsUUFBUTt3QkFDZixpRUFBaUU7d0JBQ2pFLElBQUlBLFVBQVVMLFdBQVcsT0FBT0ssT0FBTzFYLEtBQUssS0FBSyxVQUFVOzRCQUN6RCxPQUFPO2dDQUFDMFgsT0FBTzFYLEtBQUs7Z0NBQUVxWCxRQUFRclgsS0FBSzs2QkFBQzt3QkFDdEM7b0JBQ0Y7b0JBRUEsT0FBTzt3QkFBQzt3QkFBTTtxQkFBSztnQkFDckI7WUFDRixHQUFHLDJCQUEyQjtZQUU5Qm1YLGVBQWVDLDJCQUEyQixDQUFDOVAsV0FBVyxHQUFHO1lBQ3pELElBQUlxUSxxQkFBcUJ0VixPQUFPK0osd0JBQXdCLENBQUMrSyxlQUFlQywyQkFBMkIsRUFBRSxTQUFTLHdEQUF3RDtZQUV0SyxJQUFJTyxzQkFBc0JBLG1CQUFtQmxMLFlBQVksRUFBRTtnQkFDekQsMEVBQTBFO2dCQUMxRXBLLE9BQU80RyxjQUFjLENBQUNrTyxlQUFlQywyQkFBMkIsRUFDaEUscUJBQXFCO2dCQUNyQiwyQkFBMkI7Z0JBQzNCLFFBQVE7b0JBQ05yUyxPQUFPO2dCQUNUO1lBQ0Y7WUFFQSxJQUFJO2dCQUNGLElBQUk2Uyx3QkFBd0JULGVBQWVDLDJCQUEyQixJQUNsRVMsY0FBY0QscUJBQXFCLENBQUMsRUFBRSxFQUN0Q0UsZUFBZUYscUJBQXFCLENBQUMsRUFBRTtnQkFFM0MsSUFBSUMsZUFBZUMsY0FBYztvQkFDL0IsZ0ZBQWdGO29CQUNoRixxRUFBcUU7b0JBQ3JFLElBQUlDLGNBQWNGLFlBQVlHLEtBQUssQ0FBQztvQkFDcEMsSUFBSUMsZUFBZUgsYUFBYUUsS0FBSyxDQUFDO29CQUN0QyxJQUFJeEUsSUFBSTtvQkFDUixJQUFJM0QsSUFBSTtvQkFFUixNQUFPMkQsSUFBSXVFLFlBQVkvVyxNQUFNLElBQUksQ0FBQytXLFdBQVcsQ0FBQ3ZFLEVBQUUsQ0FBQzBFLFFBQVEsQ0FBQywrQkFBZ0M7d0JBQ3hGMUU7b0JBQ0Y7b0JBRUEsTUFBTzNELElBQUlvSSxhQUFhalgsTUFBTSxJQUFJLENBQUNpWCxZQUFZLENBQUNwSSxFQUFFLENBQUNxSSxRQUFRLENBQUMsK0JBQWdDO3dCQUMxRnJJO29CQUNGLEVBQUUseUVBQXlFO29CQUMzRSxxRUFBcUU7b0JBQ3JFLG1CQUFtQjtvQkFHbkIsSUFBSTJELE1BQU11RSxZQUFZL1csTUFBTSxJQUFJNk8sTUFBTW9JLGFBQWFqWCxNQUFNLEVBQUU7d0JBQ3pEd1MsSUFBSXVFLFlBQVkvVyxNQUFNLEdBQUc7d0JBQ3pCNk8sSUFBSW9JLGFBQWFqWCxNQUFNLEdBQUc7d0JBRTFCLE1BQU93UyxLQUFLLEtBQUszRCxLQUFLLEtBQUtrSSxXQUFXLENBQUN2RSxFQUFFLEtBQUt5RSxZQUFZLENBQUNwSSxFQUFFLENBQUU7NEJBQzdELG1EQUFtRDs0QkFDbkQseUVBQXlFOzRCQUN6RSx1RUFBdUU7NEJBQ3ZFLDBFQUEwRTs0QkFDMUUsMEVBQTBFOzRCQUMxRSx1Q0FBdUM7NEJBQ3ZDQTt3QkFDRjtvQkFDRjtvQkFFQSxNQUFPMkQsS0FBSyxLQUFLM0QsS0FBSyxHQUFHMkQsS0FBSzNELElBQUs7d0JBQ2pDLHFFQUFxRTt3QkFDckUseURBQXlEO3dCQUN6RCxJQUFJa0ksV0FBVyxDQUFDdkUsRUFBRSxLQUFLeUUsWUFBWSxDQUFDcEksRUFBRSxFQUFFOzRCQUN0Qyx1RUFBdUU7NEJBQ3ZFLCtFQUErRTs0QkFDL0UsNkVBQTZFOzRCQUM3RSxrRkFBa0Y7NEJBQ2xGLGdGQUFnRjs0QkFDaEYsSUFBSTJELE1BQU0sS0FBSzNELE1BQU0sR0FBRztnQ0FDdEIsR0FBRztvQ0FDRDJEO29DQUNBM0QsS0FBSyx5RUFBeUU7b0NBQzlFLCtEQUErRDtvQ0FFL0QsSUFBSUEsSUFBSSxLQUFLa0ksV0FBVyxDQUFDdkUsRUFBRSxLQUFLeUUsWUFBWSxDQUFDcEksRUFBRSxFQUFFO3dDQUMvQyxrRkFBa0Y7d0NBQ2xGLElBQUlzSSxTQUFTLE9BQU9KLFdBQVcsQ0FBQ3ZFLEVBQUUsQ0FBQzVFLE9BQU8sQ0FBQyxZQUFZLFNBQVMsa0RBQWtEO3dDQUNsSCw0Q0FBNEM7d0NBQzVDLGdEQUFnRDt3Q0FHaEQsSUFBSWdGLEdBQUd0TSxXQUFXLElBQUk2USxPQUFPRCxRQUFRLENBQUMsZ0JBQWdCOzRDQUNwREMsU0FBU0EsT0FBT3ZKLE9BQU8sQ0FBQyxlQUFlZ0YsR0FBR3RNLFdBQVc7d0NBQ3ZEO3dDQUVBLElBQUksSUFBSSxFQUFFOzRDQUNSLElBQUksT0FBT3NNLE9BQU8sWUFBWTtnREFDNUIrQyxvQkFBb0JoUyxHQUFHLENBQUNpUCxJQUFJdUU7NENBQzlCO3dDQUNGLEVBQUUsNEJBQTRCO3dDQUc5QixPQUFPQTtvQ0FDVDtnQ0FDRixRQUFTM0UsS0FBSyxLQUFLM0QsS0FBSyxHQUFHOzRCQUM3Qjs0QkFFQTt3QkFDRjtvQkFDRjtnQkFDRjtZQUNGLFNBQVU7Z0JBQ1I2RyxVQUFVO2dCQUVWO29CQUNFaFcsdUJBQXVCZixPQUFPLEdBQUd1WDtvQkFDakNiO2dCQUNGO2dCQUVBM04sTUFBTXVPLGlCQUFpQixHQUFHRDtZQUM1QixFQUFFLGdFQUFnRTtZQUdsRSxJQUFJelAsT0FBT3FNLEtBQUtBLEdBQUd0TSxXQUFXLElBQUlzTSxHQUFHck0sSUFBSSxHQUFHO1lBQzVDLElBQUk2USxpQkFBaUI3USxPQUFPZ1AsOEJBQThCaFAsUUFBUTtZQUVsRTtnQkFDRSxJQUFJLE9BQU9xTSxPQUFPLFlBQVk7b0JBQzVCK0Msb0JBQW9CaFMsR0FBRyxDQUFDaVAsSUFBSXdFO2dCQUM5QjtZQUNGO1lBRUEsT0FBT0E7UUFDVDtRQUNBLFNBQVNDLCtCQUErQnpFLEVBQUUsRUFBRTVHLE1BQU0sRUFBRXdKLE9BQU87WUFDekQ7Z0JBQ0UsT0FBT0ssNkJBQTZCakQsSUFBSTtZQUMxQztRQUNGO1FBRUEsU0FBUzBFLGdCQUFnQm5RLFNBQVM7WUFDaEMsSUFBSW5HLFlBQVltRyxVQUFVbkcsU0FBUztZQUNuQyxPQUFPLENBQUMsQ0FBRUEsQ0FBQUEsYUFBYUEsVUFBVXdHLGdCQUFnQjtRQUNuRDtRQUVBLFNBQVMrUCxxQ0FBcUN0TyxJQUFJLEVBQUUrQyxNQUFNLEVBQUV3SixPQUFPO1lBRWpFLElBQUl2TSxRQUFRLE1BQU07Z0JBQ2hCLE9BQU87WUFDVDtZQUVBLElBQUksT0FBT0EsU0FBUyxZQUFZO2dCQUM5QjtvQkFDRSxPQUFPNE0sNkJBQTZCNU0sTUFBTXFPLGdCQUFnQnJPO2dCQUM1RDtZQUNGO1lBRUEsSUFBSSxPQUFPQSxTQUFTLFVBQVU7Z0JBQzVCLE9BQU9zTSw4QkFBOEJ0TTtZQUN2QztZQUVBLE9BQVFBO2dCQUNOLEtBQUs5RDtvQkFDSCxPQUFPb1EsOEJBQThCO2dCQUV2QyxLQUFLblE7b0JBQ0gsT0FBT21RLDhCQUE4QjtZQUN6QztZQUVBLElBQUksT0FBT3RNLFNBQVMsVUFBVTtnQkFDNUIsT0FBUUEsS0FBS2EsUUFBUTtvQkFDbkIsS0FBSzVFO3dCQUNILE9BQU9tUywrQkFBK0JwTyxLQUFLaUIsTUFBTTtvQkFFbkQsS0FBSzdFO3dCQUNILG9FQUFvRTt3QkFDcEUsT0FBT2tTLHFDQUFxQ3RPLEtBQUtBLElBQUksRUFBRStDLFFBQVF3SjtvQkFFakUsS0FBS2xRO3dCQUNIOzRCQUNFLElBQUk4RSxnQkFBZ0JuQjs0QkFDcEIsSUFBSW9CLFVBQVVELGNBQWNFLFFBQVE7NEJBQ3BDLElBQUlDLE9BQU9ILGNBQWNJLEtBQUs7NEJBRTlCLElBQUk7Z0NBQ0Ysb0VBQW9FO2dDQUNwRSxPQUFPK00scUNBQXFDaE4sS0FBS0YsVUFBVTJCLFFBQVF3Sjs0QkFDckUsRUFBRSxPQUFPL0ssR0FBRyxDQUFDO3dCQUNmO2dCQUNKO1lBQ0Y7WUFFQSxPQUFPO1FBQ1Q7UUFFQSxJQUFJK00scUJBQXFCLENBQUM7UUFDMUIsSUFBSTdYLHlCQUF5QkYscUJBQXFCRSxzQkFBc0I7UUFFeEUsU0FBUzhYLGdDQUFnQ3ZMLE9BQU87WUFDOUM7Z0JBQ0UsSUFBSUEsU0FBUztvQkFDWCxJQUFJRCxRQUFRQyxRQUFRQyxNQUFNO29CQUMxQixJQUFJbk4sUUFBUXVZLHFDQUFxQ3JMLFFBQVFqRCxJQUFJLEVBQUVpRCxRQUFRZ0IsT0FBTyxFQUFFakIsUUFBUUEsTUFBTWhELElBQUksR0FBRztvQkFDckd0Six1QkFBdUJaLGtCQUFrQixDQUFDQztnQkFDNUMsT0FBTztvQkFDTFcsdUJBQXVCWixrQkFBa0IsQ0FBQztnQkFDNUM7WUFDRjtRQUNGO1FBRUEsU0FBUzJZLGVBQWVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUV4UixhQUFhLEVBQUU2RixPQUFPO1lBQ3pFO2dCQUNFLHNFQUFzRTtnQkFDdEUsSUFBSTRMLE1BQU0vVyxTQUFTRyxJQUFJLENBQUM2VyxJQUFJLENBQUM1UDtnQkFFN0IsSUFBSyxJQUFJNlAsZ0JBQWdCTCxVQUFXO29CQUNsQyxJQUFJRyxJQUFJSCxXQUFXSyxlQUFlO3dCQUNoQyxJQUFJQyxVQUFVLEtBQUssR0FBRyxvRUFBb0U7d0JBQzFGLG1FQUFtRTt3QkFDbkUsMERBQTBEO3dCQUUxRCxJQUFJOzRCQUNGLHFFQUFxRTs0QkFDckUsbUVBQW1FOzRCQUNuRSxJQUFJLE9BQU9OLFNBQVMsQ0FBQ0ssYUFBYSxLQUFLLFlBQVk7Z0NBQ2pELDJEQUEyRDtnQ0FDM0QsSUFBSUUsTUFBTXhRLE1BQU0sQ0FBQ3JCLGlCQUFpQixhQUFZLElBQUssT0FBT3dSLFdBQVcsWUFBWUcsZUFBZSxtQkFBbUIsaUZBQWlGLE9BQU9MLFNBQVMsQ0FBQ0ssYUFBYSxHQUFHLE9BQU87Z0NBQzVPRSxJQUFJM1IsSUFBSSxHQUFHO2dDQUNYLE1BQU0yUjs0QkFDUjs0QkFFQUQsVUFBVU4sU0FBUyxDQUFDSyxhQUFhLENBQUNKLFFBQVFJLGNBQWMzUixlQUFld1IsVUFBVSxNQUFNO3dCQUN6RixFQUFFLE9BQU9NLElBQUk7NEJBQ1hGLFVBQVVFO3dCQUNaO3dCQUVBLElBQUlGLFdBQVcsQ0FBRUEsQ0FBQUEsbUJBQW1CdlEsS0FBSSxHQUFJOzRCQUMxQytQLGdDQUFnQ3ZMOzRCQUVoQzdMLE1BQU0saUNBQWlDLHdDQUF3QyxrRUFBa0Usb0VBQW9FLG1FQUFtRSxtQ0FBbUNnRyxpQkFBaUIsZUFBZXdSLFVBQVVHLGNBQWMsT0FBT0M7NEJBRTFYUixnQ0FBZ0M7d0JBQ2xDO3dCQUVBLElBQUlRLG1CQUFtQnZRLFNBQVMsQ0FBRXVRLENBQUFBLFFBQVFHLE9BQU8sSUFBSVosa0JBQWlCLEdBQUk7NEJBQ3hFLHdFQUF3RTs0QkFDeEUsY0FBYzs0QkFDZEEsa0JBQWtCLENBQUNTLFFBQVFHLE9BQU8sQ0FBQyxHQUFHOzRCQUN0Q1gsZ0NBQWdDdkw7NEJBRWhDN0wsTUFBTSxzQkFBc0J3WCxVQUFVSSxRQUFRRyxPQUFPOzRCQUVyRFgsZ0NBQWdDO3dCQUNsQztvQkFDRjtnQkFDRjtZQUNGO1FBQ0Y7UUFFQSxJQUFJWSx5QkFBeUIzVCxPQUFPQyxHQUFHLENBQUM7UUFFeEMsU0FBUzJULDhCQUE4QnBNLE9BQU87WUFDNUM7Z0JBQ0UsSUFBSUEsU0FBUztvQkFDWCxJQUFJRCxRQUFRQyxRQUFRQyxNQUFNO29CQUMxQixJQUFJbk4sUUFBUXVZLHFDQUFxQ3JMLFFBQVFqRCxJQUFJLEVBQUVpRCxRQUFRZ0IsT0FBTyxFQUFFakIsUUFBUUEsTUFBTWhELElBQUksR0FBRztvQkFDckdsSyxtQkFBbUJDO2dCQUNyQixPQUFPO29CQUNMRCxtQkFBbUI7Z0JBQ3JCO1lBQ0Y7UUFDRjtRQUVBLElBQUl3WjtRQUVKO1lBQ0VBLGdDQUFnQztRQUNsQztRQUVBLFNBQVNDO1lBQ1AsSUFBSTVaLGtCQUFrQkQsT0FBTyxFQUFFO2dCQUM3QixJQUFJNEgsT0FBT3NELHlCQUF5QmpMLGtCQUFrQkQsT0FBTyxDQUFDc0ssSUFBSTtnQkFFbEUsSUFBSTFDLE1BQU07b0JBQ1IsT0FBTyxxQ0FBcUNBLE9BQU87Z0JBQ3JEO1lBQ0Y7WUFFQSxPQUFPO1FBQ1Q7UUFFQSxTQUFTa1MsMkJBQTJCek0sTUFBTTtZQUN4QyxJQUFJQSxXQUFXdEksV0FBVztnQkFDeEIsSUFBSWdWLFdBQVcxTSxPQUFPME0sUUFBUSxDQUFDOUssT0FBTyxDQUFDLGFBQWE7Z0JBQ3BELElBQUkrSyxhQUFhM00sT0FBTzJNLFVBQVU7Z0JBQ2xDLE9BQU8sNEJBQTRCRCxXQUFXLE1BQU1DLGFBQWE7WUFDbkU7WUFFQSxPQUFPO1FBQ1Q7UUFFQSxTQUFTQyxtQ0FBbUNDLFlBQVk7WUFDdEQsSUFBSUEsaUJBQWlCLFFBQVFBLGlCQUFpQm5WLFdBQVc7Z0JBQ3ZELE9BQU8rVSwyQkFBMkJJLGFBQWFoTyxRQUFRO1lBQ3pEO1lBRUEsT0FBTztRQUNUO1FBQ0E7Ozs7Q0FJQyxHQUdELElBQUlpTyx3QkFBd0IsQ0FBQztRQUU3QixTQUFTQyw2QkFBNkJDLFVBQVU7WUFDOUMsSUFBSWhSLE9BQU93UTtZQUVYLElBQUksQ0FBQ3hRLE1BQU07Z0JBQ1QsSUFBSWlSLGFBQWFwUCx5QkFBeUJtUDtnQkFFMUMsSUFBSUMsWUFBWTtvQkFDZGpSLE9BQU8sZ0RBQWdEaVIsYUFBYTtnQkFDdEU7WUFDRjtZQUVBLE9BQU9qUjtRQUNUO1FBQ0E7Ozs7Ozs7Ozs7Q0FVQyxHQUdELFNBQVNrUixvQkFBb0JoTixPQUFPLEVBQUU4TSxVQUFVO1lBQzlDLElBQUksQ0FBQzlNLFFBQVFFLE1BQU0sSUFBSUYsUUFBUUUsTUFBTSxDQUFDK00sU0FBUyxJQUFJak4sUUFBUXBJLEdBQUcsSUFBSSxNQUFNO2dCQUN0RTtZQUNGO1lBRUFvSSxRQUFRRSxNQUFNLENBQUMrTSxTQUFTLEdBQUc7WUFDM0IsSUFBSUMsNEJBQTRCTCw2QkFBNkJDO1lBRTdELElBQUlGLHFCQUFxQixDQUFDTSwwQkFBMEIsRUFBRTtnQkFDcEQ7WUFDRjtZQUVBTixxQkFBcUIsQ0FBQ00sMEJBQTBCLEdBQUcsTUFBTSw2RUFBNkU7WUFDdEksc0VBQXNFO1lBQ3RFLHNCQUFzQjtZQUV0QixJQUFJQyxhQUFhO1lBRWpCLElBQUluTixXQUFXQSxRQUFRQyxNQUFNLElBQUlELFFBQVFDLE1BQU0sS0FBS3ZOLGtCQUFrQkQsT0FBTyxFQUFFO2dCQUM3RSx5REFBeUQ7Z0JBQ3pEMGEsYUFBYSxpQ0FBaUN4UCx5QkFBeUJxQyxRQUFRQyxNQUFNLENBQUNsRCxJQUFJLElBQUk7WUFDaEc7WUFFQTtnQkFDRXFQLDhCQUE4QnBNO2dCQUU5QjdMLE1BQU0sMERBQTBELHdFQUF3RStZLDJCQUEyQkM7Z0JBRW5LZiw4QkFBOEI7WUFDaEM7UUFDRjtRQUNBOzs7Ozs7OztDQVFDLEdBR0QsU0FBU2dCLGtCQUFrQkMsSUFBSSxFQUFFUCxVQUFVO1lBQ3pDLElBQUksT0FBT08sU0FBUyxZQUFZLENBQUNBLE1BQU07Z0JBQ3JDO1lBQ0Y7WUFFQSxJQUFJQSxLQUFLelAsUUFBUSxLQUFLdU87aUJBQStCLElBQUl6UCxRQUFRMlEsT0FBTztnQkFDdEUsSUFBSyxJQUFJM1YsSUFBSSxHQUFHQSxJQUFJMlYsS0FBS3ZaLE1BQU0sRUFBRTRELElBQUs7b0JBQ3BDLElBQUlrTCxRQUFReUssSUFBSSxDQUFDM1YsRUFBRTtvQkFFbkIsSUFBSXdKLGVBQWUwQixRQUFRO3dCQUN6Qm9LLG9CQUFvQnBLLE9BQU9rSztvQkFDN0I7Z0JBQ0Y7WUFDRixPQUFPLElBQUk1TCxlQUFlbU0sT0FBTztnQkFDL0IsK0NBQStDO2dCQUMvQyxJQUFJQSxLQUFLbk4sTUFBTSxFQUFFO29CQUNmbU4sS0FBS25OLE1BQU0sQ0FBQytNLFNBQVMsR0FBRztnQkFDMUI7WUFDRixPQUFPO2dCQUNMLElBQUlqSyxhQUFhdEosY0FBYzJUO2dCQUUvQixJQUFJLE9BQU9ySyxlQUFlLFlBQVk7b0JBQ3BDLGlEQUFpRDtvQkFDakQsc0RBQXNEO29CQUN0RCxJQUFJQSxlQUFlcUssS0FBS3RYLE9BQU8sRUFBRTt3QkFDL0IsSUFBSXlELFdBQVd3SixXQUFXaE8sSUFBSSxDQUFDcVk7d0JBQy9CLElBQUluSzt3QkFFSixNQUFPLENBQUMsQ0FBQ0EsT0FBTzFKLFNBQVM0SixJQUFJLEVBQUMsRUFBR0MsSUFBSSxDQUFFOzRCQUNyQyxJQUFJbkMsZUFBZWdDLEtBQUtyTCxLQUFLLEdBQUc7Z0NBQzlCbVYsb0JBQW9COUosS0FBS3JMLEtBQUssRUFBRWlWOzRCQUNsQzt3QkFDRjtvQkFDRjtnQkFDRjtZQUNGO1FBQ0Y7UUFDQTs7Ozs7Q0FLQyxHQUdELFNBQVNRLGtCQUFrQnROLE9BQU87WUFDaEM7Z0JBQ0UsSUFBSWpELE9BQU9pRCxRQUFRakQsSUFBSTtnQkFFdkIsSUFBSUEsU0FBUyxRQUFRQSxTQUFTdkYsYUFBYSxPQUFPdUYsU0FBUyxVQUFVO29CQUNuRTtnQkFDRjtnQkFFQSxJQUFJQSxLQUFLYSxRQUFRLEtBQUt1Tyx3QkFBd0I7b0JBQzVDO2dCQUNGO2dCQUVBLElBQUkvRztnQkFFSixJQUFJLE9BQU9ySSxTQUFTLFlBQVk7b0JBQzlCcUksWUFBWXJJLEtBQUtxSSxTQUFTO2dCQUM1QixPQUFPLElBQUksT0FBT3JJLFNBQVMsWUFBYUEsQ0FBQUEsS0FBS2EsUUFBUSxLQUFLNUUsMEJBQTBCLDJDQUEyQztnQkFDL0gsNkNBQTZDO2dCQUM3QytELEtBQUthLFFBQVEsS0FBS3pFLGVBQWMsR0FBSTtvQkFDbENpTSxZQUFZckksS0FBS3FJLFNBQVM7Z0JBQzVCLE9BQU87b0JBQ0w7Z0JBQ0Y7Z0JBRUEsSUFBSUEsV0FBVztvQkFDYiw4REFBOEQ7b0JBQzlELElBQUkvSyxPQUFPc0QseUJBQXlCWjtvQkFDcEN5TyxlQUFlcEcsV0FBV3BGLFFBQVE5RSxLQUFLLEVBQUUsUUFBUWIsTUFBTTJGO2dCQUN6RCxPQUFPLElBQUlqRCxLQUFLd1EsU0FBUyxLQUFLL1YsYUFBYSxDQUFDNlUsK0JBQStCO29CQUN6RUEsZ0NBQWdDLE1BQU0sOERBQThEO29CQUVwRyxJQUFJbUIsUUFBUTdQLHlCQUF5Qlo7b0JBRXJDNUksTUFBTSx1R0FBdUdxWixTQUFTO2dCQUN4SDtnQkFFQSxJQUFJLE9BQU96USxLQUFLMFEsZUFBZSxLQUFLLGNBQWMsQ0FBQzFRLEtBQUswUSxlQUFlLENBQUNDLG9CQUFvQixFQUFFO29CQUM1RnZaLE1BQU0sK0RBQStEO2dCQUN2RTtZQUNGO1FBQ0Y7UUFDQTs7O0NBR0MsR0FHRCxTQUFTd1osc0JBQXNCQyxRQUFRO1lBQ3JDO2dCQUNFLElBQUlySyxPQUFPcE8sT0FBT29PLElBQUksQ0FBQ3FLLFNBQVMxUyxLQUFLO2dCQUVyQyxJQUFLLElBQUl4RCxJQUFJLEdBQUdBLElBQUk2TCxLQUFLelAsTUFBTSxFQUFFNEQsSUFBSztvQkFDcEMsSUFBSUUsTUFBTTJMLElBQUksQ0FBQzdMLEVBQUU7b0JBRWpCLElBQUlFLFFBQVEsY0FBY0EsUUFBUSxPQUFPO3dCQUN2Q3dVLDhCQUE4QndCO3dCQUU5QnpaLE1BQU0scURBQXFELDREQUE0RHlEO3dCQUV2SHdVLDhCQUE4Qjt3QkFDOUI7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsSUFBSXdCLFNBQVNuUCxHQUFHLEtBQUssTUFBTTtvQkFDekIyTiw4QkFBOEJ3QjtvQkFFOUJ6WixNQUFNO29CQUVOaVksOEJBQThCO2dCQUNoQztZQUNGO1FBQ0Y7UUFDQSxTQUFTeUIsNEJBQTRCOVEsSUFBSSxFQUFFN0IsS0FBSyxFQUFFb0YsUUFBUTtZQUN4RCxJQUFJd04sWUFBWWxJLG1CQUFtQjdJLE9BQU8sMEVBQTBFO1lBQ3BILHFEQUFxRDtZQUVyRCxJQUFJLENBQUMrUSxXQUFXO2dCQUNkLElBQUloUyxPQUFPO2dCQUVYLElBQUlpQixTQUFTdkYsYUFBYSxPQUFPdUYsU0FBUyxZQUFZQSxTQUFTLFFBQVE1SCxPQUFPb08sSUFBSSxDQUFDeEcsTUFBTWpKLE1BQU0sS0FBSyxHQUFHO29CQUNyR2dJLFFBQVEsK0RBQStEO2dCQUN6RTtnQkFFQSxJQUFJaVMsYUFBYXJCLG1DQUFtQ3hSO2dCQUVwRCxJQUFJNlMsWUFBWTtvQkFDZGpTLFFBQVFpUztnQkFDVixPQUFPO29CQUNMalMsUUFBUXdRO2dCQUNWO2dCQUVBLElBQUkwQjtnQkFFSixJQUFJalIsU0FBUyxNQUFNO29CQUNqQmlSLGFBQWE7Z0JBQ2YsT0FBTyxJQUFJdFIsUUFBUUssT0FBTztvQkFDeEJpUixhQUFhO2dCQUNmLE9BQU8sSUFBSWpSLFNBQVN2RixhQUFhdUYsS0FBS2EsUUFBUSxLQUFLckYsb0JBQW9CO29CQUNyRXlWLGFBQWEsTUFBT3JRLENBQUFBLHlCQUF5QlosS0FBS0EsSUFBSSxLQUFLLFNBQVEsSUFBSztvQkFDeEVqQixPQUFPO2dCQUNULE9BQU87b0JBQ0xrUyxhQUFhLE9BQU9qUjtnQkFDdEI7Z0JBRUE7b0JBQ0U1SSxNQUFNLG9FQUFvRSw2REFBNkQsOEJBQThCNlosWUFBWWxTO2dCQUNuTDtZQUNGO1lBRUEsSUFBSWtFLFVBQVVLLGdCQUFnQnRMLEtBQUssQ0FBQyxJQUFJLEVBQUVsQixZQUFZLG9FQUFvRTtZQUMxSCx5RUFBeUU7WUFFekUsSUFBSW1NLFdBQVcsTUFBTTtnQkFDbkIsT0FBT0E7WUFDVCxFQUFFLDBFQUEwRTtZQUM1RSw0RUFBNEU7WUFDNUUsbUVBQW1FO1lBQ25FLDBFQUEwRTtZQUMxRSx3Q0FBd0M7WUFHeEMsSUFBSThOLFdBQVc7Z0JBQ2IsSUFBSyxJQUFJcFcsSUFBSSxHQUFHQSxJQUFJN0QsVUFBVUMsTUFBTSxFQUFFNEQsSUFBSztvQkFDekMwVixrQkFBa0J2WixTQUFTLENBQUM2RCxFQUFFLEVBQUVxRjtnQkFDbEM7WUFDRjtZQUVBLElBQUlBLFNBQVNwRSxxQkFBcUI7Z0JBQ2hDZ1Ysc0JBQXNCM047WUFDeEIsT0FBTztnQkFDTHNOLGtCQUFrQnROO1lBQ3BCO1lBRUEsT0FBT0E7UUFDVDtRQUNBLFNBQVNpTywyQkFBMkJqTyxPQUFPLEVBQUU5RSxLQUFLLEVBQUVvRixRQUFRO1lBQzFELElBQUlRLGFBQWFHLGVBQWVsTSxLQUFLLENBQUMsSUFBSSxFQUFFbEI7WUFFNUMsSUFBSyxJQUFJNkQsSUFBSSxHQUFHQSxJQUFJN0QsVUFBVUMsTUFBTSxFQUFFNEQsSUFBSztnQkFDekMwVixrQkFBa0J2WixTQUFTLENBQUM2RCxFQUFFLEVBQUVvSixXQUFXL0QsSUFBSTtZQUNqRDtZQUVBdVEsa0JBQWtCeE07WUFDbEIsT0FBT0E7UUFDVDtRQUVBLFNBQVNvTixvQkFBb0JDLFVBQVUsRUFBRUMsWUFBWTtZQUNuRDtnQkFDRSxNQUFNLElBQUk1UyxNQUFNO1lBQ2xCO1FBQ0Y7UUFFQTs7O0NBR0MsR0FDRCxJQUFJNlMsMEJBQTBCO1lBQzVCQyxZQUFZO1FBQ2Q7UUFFQSxTQUFTQyxnQkFBZ0JDLEtBQUssRUFBRTlYLE9BQU87WUFDckMsSUFBSStYLGlCQUFpQkosd0JBQXdCQyxVQUFVO1lBQ3ZERCx3QkFBd0JDLFVBQVUsR0FBRyxDQUFDO1lBQ3RDLElBQUlJLG9CQUFvQkwsd0JBQXdCQyxVQUFVO1lBRTFEO2dCQUNFRCx3QkFBd0JDLFVBQVUsQ0FBQ0ssY0FBYyxHQUFHLElBQUlDO1lBQzFEO1lBRUEsSUFBSTtnQkFDRko7WUFDRixTQUFVO2dCQUNSSCx3QkFBd0JDLFVBQVUsR0FBR0c7Z0JBRXJDO29CQUNFLElBQUlBLG1CQUFtQixRQUFRQyxrQkFBa0JDLGNBQWMsRUFBRTt3QkFDL0QsSUFBSUUscUJBQXFCSCxrQkFBa0JDLGNBQWMsQ0FBQ0csSUFBSTt3QkFFOURKLGtCQUFrQkMsY0FBYyxDQUFDSSxLQUFLO3dCQUV0QyxJQUFJRixxQkFBcUIsSUFBSTs0QkFDM0JuYixLQUFLLGdFQUFnRSxzRkFBc0Y7d0JBQzdKO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLElBQUlzYixnQkFBZ0JuQjtRQUNwQixJQUFJb0IsZUFBZWhCO1FBQ25CLElBQUlpQixXQUFXO1lBQ2J6YSxLQUFLZ1A7WUFDTDBMLFNBQVNwTDtZQUNUSCxPQUFPQztZQUNQSyxTQUFTQTtZQUNUa0wsTUFBTWpMO1FBQ1I7UUFFQWtMLGdCQUFnQixHQUFHSDtRQUNuQkcsZ0JBQWdCLEdBQUcxVztRQUNuQjBXLGdCQUFnQixHQUFHeFc7UUFDbkJ3VyxrQkFBa0IsR0FBR3pXO1FBQ3JCeVcsZ0JBQWdCLEdBQUdwVztRQUNuQm9XLDBEQUEwRCxHQUFHOWI7UUFDN0Q4YixpRUFBaUUsR0FBR2hYO1FBQ3BFZ1gsYUFBYSxHQUFHbFk7UUFDaEJrWSxvQkFBb0IsR0FBR0o7UUFDdkJJLHFCQUFxQixHQUFHTDtRQUN4QkssaUJBQWlCLEdBQUcvUztRQUNwQitTLDJCQUEyQixHQUFHbkI7UUFDOUJtQixrQkFBa0IsR0FBRzdKO1FBQ3JCNkosc0JBQXNCLEdBQUduTztRQUN6Qm1PLFlBQVksR0FBR25LO1FBQ2ZtSyxZQUFZLEdBQUd2SjtRQUNmdUosdUJBQXVCLEdBQUdkO1FBQzFCYyxXQUFXLEdBQUduSDtRQUNkbUgsbUJBQW1CLEdBQUcxSDtRQUN0QjBILGtCQUFrQixHQUFHL0g7UUFDckIrSCxxQkFBcUIsR0FBR3RIO1FBQ3hCc0gsYUFBYSxHQUFHcEg7UUFDaEJvSCxlQUFlLEdBQUd4SDtRQUNsQndILGVBQWUsR0FBRy9XO0lBQ2hCO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3Quc2hhcmVkLXN1YnNldC5kZXZlbG9wbWVudC5qcz85OTViIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnNoYXJlZC1zdWJzZXQuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZGlzcGF0Y2hlci5cbiAqL1xudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSA9IHtcbiAgY3VycmVudDogbnVsbFxufTtcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxID0ge307XG52YXIgY3VycmVudEV4dHJhU3RhY2tGcmFtZSA9IG51bGw7XG5mdW5jdGlvbiBzZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spIHtcbiAge1xuICAgIGN1cnJlbnRFeHRyYVN0YWNrRnJhbWUgPSBzdGFjaztcbiAgfVxufVxuXG57XG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUgPSBmdW5jdGlvbiAoc3RhY2spIHtcbiAgICB7XG4gICAgICBjdXJyZW50RXh0cmFTdGFja0ZyYW1lID0gc3RhY2s7XG4gICAgfVxuICB9OyAvLyBTdGFjayBpbXBsZW1lbnRhdGlvbiBpbmplY3RlZCBieSB0aGUgY3VycmVudCByZW5kZXJlci5cblxuXG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2sgPSBudWxsO1xuXG4gIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRTdGFja0FkZGVuZHVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGFjayA9ICcnOyAvLyBBZGQgYW4gZXh0cmEgdG9wIGZyYW1lIHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgdmFsaWRhdGVkXG5cbiAgICBpZiAoY3VycmVudEV4dHJhU3RhY2tGcmFtZSkge1xuICAgICAgc3RhY2sgKz0gY3VycmVudEV4dHJhU3RhY2tGcmFtZTtcbiAgICB9IC8vIERlbGVnYXRlIHRvIHRoZSBpbmplY3RlZCByZW5kZXJlci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuXG5cbiAgICB2YXIgaW1wbCA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2s7XG5cbiAgICBpZiAoaW1wbCkge1xuICAgICAgc3RhY2sgKz0gaW1wbCgpIHx8ICcnO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFjaztcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cbnZhciBlbmFibGVDYWNoZUVsZW1lbnQgPSBmYWxzZTtcbnZhciBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyA9IGZhbHNlOyAvLyBObyBrbm93biBidWdzLCBidXQgbmVlZHMgcGVyZm9ybWFuY2UgdGVzdGluZ1xuXG52YXIgZW5hYmxlTGVnYWN5SGlkZGVuID0gZmFsc2U7IC8vIEVuYWJsZXMgdW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2sgZmVhdHVyZSBpbiBGaWJlclxuLy8gc3R1ZmYuIEludGVuZGVkIHRvIGVuYWJsZSBSZWFjdCBjb3JlIG1lbWJlcnMgdG8gbW9yZSBlYXNpbHkgZGVidWcgc2NoZWR1bGluZ1xuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXG5cbnZhciBlbmFibGVEZWJ1Z1RyYWNpbmcgPSBmYWxzZTtcblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0ge1xuICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiBSZWFjdEN1cnJlbnREaXNwYXRjaGVyJDEsXG4gIFJlYWN0Q3VycmVudE93bmVyOiBSZWFjdEN1cnJlbnRPd25lclxufTtcblxue1xuICBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxO1xufVxuXG4vLyBieSBjYWxscyB0byB0aGVzZSBtZXRob2RzIGJ5IGEgQmFiZWwgcGx1Z2luLlxuLy9cbi8vIEluIFBST0QgKG9yIGluIHBhY2thZ2VzIHdpdGhvdXQgYWNjZXNzIHRvIFJlYWN0IGludGVybmFscyksXG4vLyB0aGV5IGFyZSBsZWZ0IGFzIHRoZXkgYXJlIGluc3RlYWQuXG5cbmZ1bmN0aW9uIHdhcm4oZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ3dhcm4nLCBmb3JtYXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG52YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBDYWNoZSBkaXNwYXRjaGVyLlxuICovXG52YXIgUmVhY3RDdXJyZW50Q2FjaGUgPSB7XG4gIGN1cnJlbnQ6IG51bGxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUZldGNoQ2FjaGUoKSB7XG4gIHJldHVybiBuZXcgTWFwKCk7XG59XG5cbnZhciBzaW1wbGVDYWNoZUtleSA9ICdbXCJHRVRcIixbXSxudWxsLFwiZm9sbG93XCIsbnVsbCxudWxsLG51bGwsbnVsbF0nOyAvLyBnZW5lcmF0ZUNhY2hlS2V5KG5ldyBSZXF1ZXN0KCdodHRwczovL2JsYW5rJykpO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUNhY2hlS2V5KHJlcXVlc3QpIHtcbiAgLy8gV2UgcGljayB0aGUgZmllbGRzIHRoYXQgZ29lcyBpbnRvIHRoZSBrZXkgdXNlZCB0byBkZWR1cGUgcmVxdWVzdHMuXG4gIC8vIFdlIGRvbid0IGluY2x1ZGUgdGhlIGBjYWNoZWAgZmllbGQsIGJlY2F1c2Ugd2UgZW5kIHVwIHVzaW5nIHdoYXRldmVyXG4gIC8vIGNhY2hpbmcgcmVzdWx0ZWQgZnJvbSB0aGUgZmlyc3QgcmVxdWVzdC5cbiAgLy8gTm90YWJseSB3ZSBjdXJyZW50bHkgZG9uJ3QgY29uc2lkZXIgbm9uLXN0YW5kYXJkIChvciBmdXR1cmUpIG9wdGlvbnMuXG4gIC8vIFRoaXMgbWlnaHQgbm90IGJlIHNhZmUuIFRPRE86IHdhcm4gZm9yIG5vbi1zdGFuZGFyZCBleHRlbnNpb25zIGRpZmZlcmluZy5cbiAgLy8gSUYgWU9VIENIQU5HRSBUSElTIFVQREFURSBUSEUgc2ltcGxlQ2FjaGVLZXkgQUJPVkUuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbcmVxdWVzdC5tZXRob2QsIEFycmF5LmZyb20ocmVxdWVzdC5oZWFkZXJzLmVudHJpZXMoKSksIHJlcXVlc3QubW9kZSwgcmVxdWVzdC5yZWRpcmVjdCwgcmVxdWVzdC5jcmVkZW50aWFscywgcmVxdWVzdC5yZWZlcnJlciwgcmVxdWVzdC5yZWZlcnJlclBvbGljeSwgcmVxdWVzdC5pbnRlZ3JpdHldKTtcbn1cblxue1xuICBpZiAodHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG9yaWdpbmFsRmV0Y2ggPSBmZXRjaDtcblxuICAgIHZhciBjYWNoZWRGZXRjaCA9IGZ1bmN0aW9uIGZldGNoKHJlc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudENhY2hlLmN1cnJlbnQ7XG5cbiAgICAgIGlmICghZGlzcGF0Y2hlcikge1xuICAgICAgICAvLyBXZSdyZSBvdXRzaWRlIGEgY2FjaGVkIHNjb3BlLlxuICAgICAgICByZXR1cm4gb3JpZ2luYWxGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2lnbmFsICYmIG9wdGlvbnMuc2lnbmFsICE9PSBkaXNwYXRjaGVyLmdldENhY2hlU2lnbmFsKCkpIHtcbiAgICAgICAgLy8gSWYgd2UncmUgcGFzc2VkIGEgc2lnbmFsIHRoYXQgaXMgbm90IG91cnMsIHRoZW4gd2UgYXNzdW1lIHRoYXRcbiAgICAgICAgLy8gc29tZW9uZSBlbHNlIGNvbnRyb2xzIHRoZSBsaWZldGltZSBvZiB0aGlzIG9iamVjdCBhbmQgb3B0cyBvdXQgb2ZcbiAgICAgICAgLy8gY2FjaGluZy4gSXQncyBlZmZlY3RpdmVseSB0aGUgb3B0LW91dCBtZWNoYW5pc20uXG4gICAgICAgIC8vIElkZWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgdGhpcyBvbiB0aGUgUmVxdWVzdCBidXRcbiAgICAgICAgLy8gaXQgYWx3YXlzIGdldHMgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgb3duIHNpZ25hbCBzbyB3ZSBkb24ndFxuICAgICAgICAvLyBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gb3ZlcnJpZGUgLSB1bmxlc3Mgd2UgYWxzbyBvdmVycmlkZSB0aGVcbiAgICAgICAgLy8gUmVxdWVzdCBjb25zdHJ1Y3Rvci5cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgfSAvLyBOb3JtYWxpemUgdGhlIFJlcXVlc3RcblxuXG4gICAgICB2YXIgdXJsO1xuICAgICAgdmFyIGNhY2hlS2V5O1xuXG4gICAgICBpZiAodHlwZW9mIHJlc291cmNlID09PSAnc3RyaW5nJyAmJiAhb3B0aW9ucykge1xuICAgICAgICAvLyBGYXN0IHBhdGguXG4gICAgICAgIGNhY2hlS2V5ID0gc2ltcGxlQ2FjaGVLZXk7XG4gICAgICAgIHVybCA9IHJlc291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm9ybWFsaXplIHRoZSByZXF1ZXN0LlxuICAgICAgICAvLyBpZiByZXNvdXJjZSBpcyBub3QgYSBzdHJpbmcgb3IgYSBVUkwgKGl0cyBhbiBpbnN0YW5jZSBvZiBSZXF1ZXN0KVxuICAgICAgICAvLyB0aGVuIGRvIG5vdCBpbnN0YW50aWF0ZSBhIG5ldyBSZXF1ZXN0IGJ1dCBpbnN0ZWFkXG4gICAgICAgIC8vIHJldXNlIHRoZSByZXF1ZXN0IGFzIHRvIG5vdCBkaXN0dXJiIHRoZSBib2R5IGluIHRoZSBldmVudCBpdCdzIGEgUmVhZGFibGVTdHJlYW0uXG4gICAgICAgIHZhciByZXF1ZXN0ID0gdHlwZW9mIHJlc291cmNlID09PSAnc3RyaW5nJyB8fCByZXNvdXJjZSBpbnN0YW5jZW9mIFVSTCA/IG5ldyBSZXF1ZXN0KHJlc291cmNlLCBvcHRpb25zKSA6IHJlc291cmNlO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJyB8fCAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IGtlZXBhbGl2ZSBpcyByZWFsXG4gICAgICAgIHJlcXVlc3Qua2VlcGFsaXZlKSB7XG4gICAgICAgICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGRlZHVwZSByZXF1ZXN0cyB0aGF0IG1pZ2h0IGhhdmUgc2lkZS1lZmZlY3RzLiBUaG9zZVxuICAgICAgICAgIC8vIGhhdmUgdG8gYmUgZXhwbGljaXRseSBjYWNoZWQuIFdlIGFzc3VtZSB0aGF0IHRoZSByZXF1ZXN0IGRvZXNuJ3QgaGF2ZSBhXG4gICAgICAgICAgLy8gYm9keSBpZiBpdCdzIEdFVCBvciBIRUFELlxuICAgICAgICAgIC8vIGtlZXBhbGl2ZSBnZXRzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgaWYgeW91IHBhc3NlZCBhIGN1c3RvbSBjYWNoZSBzaWduYWwuXG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGVLZXkgPSBnZW5lcmF0ZUNhY2hlS2V5KHJlcXVlc3QpO1xuICAgICAgICB1cmwgPSByZXF1ZXN0LnVybDtcbiAgICAgIH1cblxuICAgICAgdmFyIGNhY2hlID0gZGlzcGF0Y2hlci5nZXRDYWNoZUZvclR5cGUoY3JlYXRlRmV0Y2hDYWNoZSk7XG4gICAgICB2YXIgY2FjaGVFbnRyaWVzID0gY2FjaGUuZ2V0KHVybCk7XG4gICAgICB2YXIgbWF0Y2g7XG5cbiAgICAgIGlmIChjYWNoZUVudHJpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBXZSBwYXNzIHRoZSBvcmlnaW5hbCBhcmd1bWVudHMgaGVyZSBpbiBjYXNlIG5vcm1hbGl6aW5nIHRoZSBSZXF1ZXN0XG4gICAgICAgIC8vIGRvZXNuJ3QgaW5jbHVkZSBhbGwgdGhlIG9wdGlvbnMgaW4gdGhpcyBlbnZpcm9ubWVudC5cbiAgICAgICAgbWF0Y2ggPSBvcmlnaW5hbEZldGNoKHJlc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgY2FjaGUuc2V0KHVybCwgW2NhY2hlS2V5LCBtYXRjaF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2UgdXNlIGFuIGFycmF5IGFzIHRoZSBpbm5lciBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdCdzIGxpZ2h0ZXIgYW5kXG4gICAgICAgIC8vIHdlIHR5cGljYWxseSBvbmx5IGV4cGVjdCB0byBzZWUgb25lIG9yIHR3byBlbnRyaWVzIGhlcmUuXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2FjaGVFbnRyaWVzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMikge1xuICAgICAgICAgIHZhciBrZXkgPSBjYWNoZUVudHJpZXNbaV07XG4gICAgICAgICAgdmFyIHZhbHVlID0gY2FjaGVFbnRyaWVzW2kgKyAxXTtcblxuICAgICAgICAgIGlmIChrZXkgPT09IGNhY2hlS2V5KSB7XG4gICAgICAgICAgICBtYXRjaCA9IHZhbHVlOyAvLyBJIHdvdWxkJ3ZlIHByZWZlcnJlZCBhIGxhYmVsbGVkIGJyZWFrIGJ1dCBsaW50IHNheXMgbm8uXG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuY2xvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG1hdGNoID0gb3JpZ2luYWxGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhY2hlRW50cmllcy5wdXNoKGNhY2hlS2V5LCBtYXRjaCk7XG4gICAgICB9IC8vIFdlIGNsb25lIHRoZSByZXNwb25zZSBzbyB0aGF0IGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzIHlvdSBnZXQgYSBuZXcgcmVhZFxuICAgICAgLy8gb2YgdGhlIGJvZHkgc28gdGhhdCBpdCBjYW4gYmUgcmVhZCBtdWx0aXBsZSB0aW1lcy5cblxuXG4gICAgICByZXR1cm4gbWF0Y2gudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmNsb25lKCk7XG4gICAgICB9KTtcbiAgICB9OyAvLyBXZSBkb24ndCBleHBlY3QgdG8gc2VlIGFueSBleHRyYSBwcm9wZXJ0aWVzIG9uIGZldGNoIGJ1dCBpZiB0aGVyZSBhcmUgYW55LFxuICAgIC8vIGNvcHkgdGhlbSBvdmVyLiBVc2VmdWwgZm9yIGV4dGVuZGVkIGZldGNoIGVudmlyb25tZW50cyBvciBtb2Nrcy5cblxuXG4gICAgYXNzaWduKGNhY2hlZEZldGNoLCBvcmlnaW5hbEZldGNoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmF0aXZlLXJlYXNzaWduXG4gICAgICBmZXRjaCA9IGNhY2hlZEZldGNoO1xuICAgIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gSW4gY2FzZSBhc3NpZ25pbmcgaXQgZ2xvYmFsbHkgZmFpbHMsIHRyeSBnbG9iYWxUaGlzIGluc3RlYWQganVzdCBpbiBjYXNlIGl0IGV4aXN0cy5cbiAgICAgICAgZ2xvYmFsVGhpcy5mZXRjaCA9IGNhY2hlZEZldGNoO1xuICAgICAgfSBjYXRjaCAoZXJyb3IyKSB7XG4gICAgICAgIC8vIExvZyBldmVuIGluIHByb2R1Y3Rpb24ganVzdCB0byBtYWtlIHN1cmUgdGhpcyBpcyBzZWVuIGlmIG9ubHkgcHJvZCBpcyBmcm96ZW4uXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcbiAgICAgICAgd2FybignUmVhY3Qgd2FzIHVuYWJsZSB0byBwYXRjaCB0aGUgZmV0Y2goKSBmdW5jdGlvbiBpbiB0aGlzIGVudmlyb25tZW50LiAnICsgJ1N1c3BlbnNleSBBUElzIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseSBhcyBhIHJlc3VsdC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0U2VydmVyU2hhcmVkSW50ZXJuYWxzID0ge1xuICBSZWFjdEN1cnJlbnRDYWNoZTogUmVhY3RDdXJyZW50Q2FjaGVcbn07XG5cbnZhciBSZWFjdFZlcnNpb24gPSAnMTguMy4wLWNhbmFyeS02MGE5MjdkMDQtMjAyNDAxMTMnO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKTtcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xudmFyIFJFQUNUX0NBQ0hFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jYWNoZScpO1xudmFyIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJztcbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICBpZiAobWF5YmVJdGVyYWJsZSA9PT0gbnVsbCB8fCB0eXBlb2YgbWF5YmVJdGVyYWJsZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYXliZUl0ZXJhdG9yID0gTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXTtcblxuICBpZiAodHlwZW9mIG1heWJlSXRlcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbWF5YmVJdGVyYXRvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50ID0ge307XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHtcbiAgICB2YXIgX2NvbnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgdmFyIGNvbXBvbmVudE5hbWUgPSBfY29uc3RydWN0b3IgJiYgKF9jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBfY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnO1xuICAgIHZhciB3YXJuaW5nS2V5ID0gY29tcG9uZW50TmFtZSArIFwiLlwiICsgY2FsbGVyTmFtZTtcblxuICAgIGlmIChkaWRXYXJuU3RhdGVVcGRhdGVGb3JVbm1vdW50ZWRDb21wb25lbnRbd2FybmluZ0tleV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlcnJvcihcIkNhbid0IGNhbGwgJXMgb24gYSBjb21wb25lbnQgdGhhdCBpcyBub3QgeWV0IG1vdW50ZWQuIFwiICsgJ1RoaXMgaXMgYSBuby1vcCwgYnV0IGl0IG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHlvdXIgYXBwbGljYXRpb24uICcgKyAnSW5zdGVhZCwgYXNzaWduIHRvIGB0aGlzLnN0YXRlYCBkaXJlY3RseSBvciBkZWZpbmUgYSBgc3RhdGUgPSB7fTtgICcgKyAnY2xhc3MgcHJvcGVydHkgd2l0aCB0aGUgZGVzaXJlZCBzdGF0ZSBpbiB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgZGlkV2FyblN0YXRlVXBkYXRlRm9yVW5tb3VudGVkQ29tcG9uZW50W3dhcm5pbmdLZXldID0gdHJ1ZTtcbiAgfVxufVxuLyoqXG4gKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS5cbiAqL1xuXG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIGNvbXBvbmVudCBpcyB1cGRhdGVkLlxuICAgKiBAcGFyYW0gez9zdHJpbmd9IGNhbGxlck5hbWUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBjYWxsZXJOYW1lIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAqIGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBjb21wb25lbnQgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHs/c3RyaW5nfSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxue1xuICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTtcbn1cbi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4gKi9cblxuXG5mdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OyAvLyBJZiBhIGNvbXBvbmVudCBoYXMgc3RyaW5nIHJlZnMsIHdlIHdpbGwgYXNzaWduIGEgZGlmZmVyZW50IG9iamVjdCBsYXRlci5cblxuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDsgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIuXG5cbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG4vKipcbiAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8gbXV0YXRlXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBydW4gc3luY2hyb25vdXNseSxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuICogY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHlcbiAqIGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cbiAqIHRoZSBmdXR1cmUgKG5vdCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZVxuICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcbiAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG4gKiBzaG91bGRDb21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdpbGwgbm90IHlldCBiZVxuICogYXNzaWduZWQgdG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0b1xuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAqL1xuXG5Db21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBwYXJ0aWFsU3RhdGUgIT09ICdvYmplY3QnICYmIHR5cGVvZiBwYXJ0aWFsU3RhdGUgIT09ICdmdW5jdGlvbicgJiYgcGFydGlhbFN0YXRlICE9IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgJyArICdmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJyk7XG4gIH1cblxuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2ssICdzZXRTdGF0ZScpO1xufTtcbi8qKlxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gKlxuICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAqXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5cblxuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsIGNhbGxiYWNrLCAnZm9yY2VVcGRhdGUnKTtcbn07XG4vKipcbiAqIERlcHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3NlcyBidXQgc2luY2VcbiAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5vdCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzXG4gKiBtb2Rlcm4gYmFzZSBjbGFzcy4gSW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nlc3NlZC5cbiAqL1xuXG5cbntcbiAgdmFyIGRlcHJlY2F0ZWRBUElzID0ge1xuICAgIGlzTW91bnRlZDogWydpc01vdW50ZWQnLCAnSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gJyArICdjb21wb25lbnRXaWxsVW5tb3VudCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4nXSxcbiAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXVxuICB9O1xuXG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2FybignJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKTtcblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuICAgIGlmIChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7XG4gICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5hbWVdKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7fVxuXG5Db21wb25lbnREdW1teS5wcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuLyoqXG4gKiBDb252ZW5pZW5jZSBjb21wb25lbnQgd2l0aCBkZWZhdWx0IHNoYWxsb3cgZXF1YWxpdHkgY2hlY2sgZm9yIHNDVS5cbiAqL1xuXG5mdW5jdGlvbiBQdXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsgLy8gSWYgYSBjb21wb25lbnQgaGFzIHN0cmluZyByZWZzLCB3ZSB3aWxsIGFzc2lnbiBhIGRpZmZlcmVudCBvYmplY3QgbGF0ZXIuXG5cbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cbnZhciBwdXJlQ29tcG9uZW50UHJvdG90eXBlID0gUHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50RHVtbXkoKTtcbnB1cmVDb21wb25lbnRQcm90b3R5cGUuY29uc3RydWN0b3IgPSBQdXJlQ29tcG9uZW50OyAvLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy5cblxuYXNzaWduKHB1cmVDb21wb25lbnRQcm90b3R5cGUsIENvbXBvbmVudC5wcm90b3R5cGUpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9IHRydWU7XG5cbi8vIGFuIGltbXV0YWJsZSBvYmplY3Qgd2l0aCBhIHNpbmdsZSBtdXRhYmxlIHZhbHVlXG5mdW5jdGlvbiBjcmVhdGVSZWYoKSB7XG4gIHZhciByZWZPYmplY3QgPSB7XG4gICAgY3VycmVudDogbnVsbFxuICB9O1xuXG4gIHtcbiAgICBPYmplY3Quc2VhbChyZWZPYmplY3QpO1xuICB9XG5cbiAgcmV0dXJuIHJlZk9iamVjdDtcbn1cblxudmFyIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuXG5mdW5jdGlvbiBpc0FycmF5KGEpIHtcbiAgcmV0dXJuIGlzQXJyYXlJbXBsKGEpO1xufVxuXG4vKlxuICogVGhlIGAnJyArIHZhbHVlYCBwYXR0ZXJuICh1c2VkIGluIHBlcmYtc2Vuc2l0aXZlIGNvZGUpIHRocm93cyBmb3IgU3ltYm9sXG4gKiBhbmQgVGVtcG9yYWwuKiB0eXBlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzIyMDY0LlxuICpcbiAqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgd2lsbCB0aHJvdyBhbiBlYXNpZXItdG8tdW5kZXJzdGFuZCxcbiAqIGVhc2llci10by1kZWJ1ZyBleGNlcHRpb24gd2l0aCBhIGNsZWFyIGVycm9ycyBtZXNzYWdlIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGVcbiAqIHByb2JsZW0uIChJbnN0ZWFkIG9mIGEgY29uZnVzaW5nIGV4Y2VwdGlvbiB0aHJvd24gaW5zaWRlIHRoZSBpbXBsZW1lbnRhdGlvblxuICogb2YgdGhlIGB2YWx1ZWAgb2JqZWN0KS5cbiAqL1xuLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXSBvbmx5IGNhbGxlZCBpbiBERVYsIHNvIHZvaWQgcmV0dXJuIGlzIG5vdCBwb3NzaWJsZS5cbmZ1bmN0aW9uIHR5cGVOYW1lKHZhbHVlKSB7XG4gIHtcbiAgICAvLyB0b1N0cmluZ1RhZyBpcyBuZWVkZWQgZm9yIG5hbWVzcGFjZWQgdHlwZXMgbGlrZSBUZW1wb3JhbC5JbnN0YW50XG4gICAgdmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wudG9TdHJpbmdUYWc7XG4gICAgdmFyIHR5cGUgPSBoYXNUb1N0cmluZ1RhZyAmJiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddIHx8IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl0gb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuJywgdHlwZU5hbWUodmFsdWUpKTtcblxuICAgICAgcmV0dXJuIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSk7IC8vIHRocm93ICh0byBoZWxwIGNhbGxlcnMgZmluZCB0cm91Ymxlc2hvb3RpbmcgY29tbWVudHMpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZGlzcGxheU5hbWUgPSBvdXRlclR5cGUuZGlzcGxheU5hbWU7XG5cbiAgaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGlubmVyVHlwZS5kaXNwbGF5TmFtZSB8fCBpbm5lclR5cGUubmFtZSB8fCAnJztcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcbn0gLy8gS2VlcCBpbiBzeW5jIHdpdGggcmVhY3QtcmVjb25jaWxlci9nZXRDb21wb25lbnROYW1lRnJvbUZpYmVyXG5cblxuZnVuY3Rpb24gZ2V0Q29udGV4dE5hbWUodHlwZSkge1xuICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCAnQ29udGV4dCc7XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDIgPSBTeW1ib2wuZm9yKCdyZWFjdC5jbGllbnQucmVmZXJlbmNlJyk7IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIC8vIEhvc3Qgcm9vdCwgdGV4dCBub2RlIG9yIGp1c3QgaW52YWxpZCB0eXBlLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMikge1xuICAgICAgLy8gVE9ETzogQ3JlYXRlIGEgY29udmVudGlvbiBmb3IgbmFtaW5nIGNsaWVudCByZWZlcmVuY2VzIHdpdGggZGVidWcgaW5mby5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgcmV0dXJuICdGcmFnbWVudCc7XG5cbiAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgcmV0dXJuICdQb3J0YWwnO1xuXG4gICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgcmV0dXJuICdQcm9maWxlcic7XG5cbiAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N0cmljdE1vZGUnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2VMaXN0JztcblxuICAgIGNhc2UgUkVBQ1RfQ0FDSEVfVFlQRTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuICdDYWNoZSc7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICB7XG4gICAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuICcgKyAnVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgIHZhciBjb250ZXh0ID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKGNvbnRleHQpICsgJy5Db25zdW1lcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgdmFyIHByb3ZpZGVyID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKHByb3ZpZGVyLl9jb250ZXh0KSArICcuUHJvdmlkZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBnZXRXcmFwcGVkTmFtZSh0eXBlLCB0eXBlLnJlbmRlciwgJ0ZvcndhcmRSZWYnKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHZhciBvdXRlck5hbWUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGw7XG5cbiAgICAgICAgaWYgKG91dGVyTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBvdXRlck5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ01lbW8nO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoaW5pdChwYXlsb2FkKSk7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gJEZsb3dGaXhNZVttZXRob2QtdW5iaW5kaW5nXVxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcbnZhciBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biwgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24sIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcbiAgICB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuICAgIHtcbiAgICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcbiAgICAgICAgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgIGVycm9yKCclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gd2FybklmU3RyaW5nUmVmQ2Fubm90QmVBdXRvQ29udmVydGVkKGNvbmZpZykge1xuICB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmID09PSAnc3RyaW5nJyAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIGNvbmZpZy5fX3NlbGYgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5zdGF0ZU5vZGUgIT09IGNvbmZpZy5fX3NlbGYpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0U3RyaW5nUmVmc1tjb21wb25lbnROYW1lXSkge1xuICAgICAgICBlcnJvcignQ29tcG9uZW50IFwiJXNcIiBjb250YWlucyB0aGUgc3RyaW5nIHJlZiBcIiVzXCIuICcgKyAnU3VwcG9ydCBmb3Igc3RyaW5nIHJlZnMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuICcgKyAnVGhpcyBjYXNlIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBhbiBhcnJvdyBmdW5jdGlvbi4gJyArICdXZSBhc2sgeW91IHRvIG1hbnVhbGx5IGZpeCB0aGlzIGNhc2UgYnkgdXNpbmcgdXNlUmVmKCkgb3IgY3JlYXRlUmVmKCkgaW5zdGVhZC4gJyArICdMZWFybiBtb3JlIGFib3V0IHVzaW5nIHJlZnMgc2FmZWx5IGhlcmU6ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3N0cmljdC1tb2RlLXN0cmluZy1yZWYnLCBjb21wb25lbnROYW1lLCBjb25maWcucmVmKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIG5vdCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5cblxuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxlbWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvd3MgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc2VsZlxuICAgIH0pOyAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNvdXJjZVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufVxuLyoqXG4gKiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2NyZWF0ZWVsZW1lbnRcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50JDEodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIGtleSA9IG51bGw7XG4gIHZhciByZWYgPSBudWxsO1xuICB2YXIgc2VsZiA9IG51bGw7XG4gIHZhciBzb3VyY2UgPSBudWxsO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG4gICAgICByZWYgPSBjb25maWcucmVmO1xuXG4gICAgICB7XG4gICAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG4gICAgc291cmNlID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNlOyAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuXG5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH0gLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cblxuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcblxuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB7XG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG59XG5mdW5jdGlvbiBjbG9uZUFuZFJlcGxhY2VLZXkob2xkRWxlbWVudCwgbmV3S2V5KSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVudC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG4gIHJldHVybiBuZXdFbGVtZW50O1xufVxuLyoqXG4gKiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRoZSBzdGFydGluZyBwb2ludC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjY2xvbmVlbGVtZW50XG4gKi9cblxuZnVuY3Rpb24gY2xvbmVFbGVtZW50JDEoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICBpZiAoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIiArIGVsZW1lbnQgKyBcIi5cIik7XG4gIH1cblxuICB2YXIgcHJvcE5hbWU7IC8vIE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWRcblxuICB2YXIgcHJvcHMgPSBhc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpOyAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7IC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG5cbiAgdmFyIHNlbGYgPSBlbGVtZW50Ll9zZWxmOyAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG4gIC8vIHRyYW5zcGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVcbiAgLy8gdHJ1ZSBvd25lci5cblxuICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlOyAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG5cbiAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfSAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuXG5cbiAgICB2YXIgZGVmYXVsdFByb3BzO1xuXG4gICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cblxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cblxuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuXG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cblxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xufVxuLyoqXG4gKiBWZXJpZmllcyB0aGUgb2JqZWN0IGlzIGEgUmVhY3RFbGVtZW50LlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNpc3ZhbGlkZWxlbWVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBAZmluYWxcbiAqL1xuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cblxudmFyIFNFUEFSQVRPUiA9ICcuJztcbnZhciBTVUJTRVBBUkFUT1IgPSAnOic7XG4vKipcbiAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLlxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHtcbiAgICAnPSc6ICc9MCcsXG4gICAgJzonOiAnPTInXG4gIH07XG4gIHZhciBlc2NhcGVkU3RyaW5nID0ga2V5LnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG4gIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nO1xufVxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxuXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLysvZztcblxuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgJyQmLycpO1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgZWxlbWVudCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBlbGVtZW50IEEgZWxlbWVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEtleShlbGVtZW50LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnb2JqZWN0JyAmJiBlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICB7XG4gICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGVsZW1lbnQua2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXNjYXBlKCcnICsgZWxlbWVudC5rZXkpO1xuICB9IC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG5cblxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG5mdW5jdGlvbiBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIGFycmF5LCBlc2NhcGVkUHJlZml4LCBuYW1lU29GYXIsIGNhbGxiYWNrKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1cblxuICB2YXIgaW52b2tlQ2FsbGJhY2sgPSBmYWxzZTtcblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICBpbnZva2VDYWxsYmFjayA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaW52b2tlQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgc3dpdGNoIChjaGlsZHJlbi4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgICAgICBpbnZva2VDYWxsYmFjayA9IHRydWU7XG4gICAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIGlmIChpbnZva2VDYWxsYmFjaykge1xuICAgIHZhciBfY2hpbGQgPSBjaGlsZHJlbjtcbiAgICB2YXIgbWFwcGVkQ2hpbGQgPSBjYWxsYmFjayhfY2hpbGQpOyAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3M6XG5cbiAgICB2YXIgY2hpbGRLZXkgPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0RWxlbWVudEtleShfY2hpbGQsIDApIDogbmFtZVNvRmFyO1xuXG4gICAgaWYgKGlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgICB2YXIgZXNjYXBlZENoaWxkS2V5ID0gJyc7XG5cbiAgICAgIGlmIChjaGlsZEtleSAhPSBudWxsKSB7XG4gICAgICAgIGVzY2FwZWRDaGlsZEtleSA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShjaGlsZEtleSkgKyAnLyc7XG4gICAgICB9XG5cbiAgICAgIG1hcEludG9BcnJheShtYXBwZWRDaGlsZCwgYXJyYXksIGVzY2FwZWRDaGlsZEtleSwgJycsIGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQpKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGUgYGlmYCBzdGF0ZW1lbnQgaGVyZSBwcmV2ZW50cyBhdXRvLWRpc2FibGluZyBvZiB0aGUgc2FmZVxuICAgICAgICAgIC8vIGNvZXJjaW9uIEVTTGludCBydWxlLCBzbyB3ZSBtdXN0IG1hbnVhbGx5IGRpc2FibGUgaXQgYmVsb3cuXG4gICAgICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV0gRmxvdyBpbmNvcnJlY3RseSB0aGlua3MgUmVhY3QuUG9ydGFsIGRvZXNuJ3QgaGF2ZSBhIGtleVxuICAgICAgICAgIGlmIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFfY2hpbGQgfHwgX2NoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSkge1xuICAgICAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihtYXBwZWRDaGlsZC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG1hcHBlZENoaWxkID0gY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLCAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5IGRpZmZlciwganVzdCBhc1xuICAgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgICAgZXNjYXBlZFByZWZpeCArICggLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV0gRmxvdyBpbmNvcnJlY3RseSB0aGlua3MgUmVhY3QuUG9ydGFsIGRvZXNuJ3QgaGF2ZSBhIGtleVxuICAgICAgICBtYXBwZWRDaGlsZC5rZXkgJiYgKCFfY2hpbGQgfHwgX2NoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVzY2FwZVVzZXJQcm92aWRlZEtleSggLy8gJEZsb3dGaXhNZVt1bnNhZmUtYWRkaXRpb25dXG4gICAgICAgICcnICsgbWFwcGVkQ2hpbGQua2V5IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgICAgICAgKSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTtcbiAgICAgIH1cblxuICAgICAgYXJyYXkucHVzaChtYXBwZWRDaGlsZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFtZTtcbiAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuXG5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAgc3VidHJlZUNvdW50ICs9IG1hcEludG9BcnJheShjaGlsZCwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5leHROYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG5cbiAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBpdGVyYWJsZUNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAgIHtcbiAgICAgICAgLy8gV2FybiBhYm91dCB1c2luZyBNYXBzIGFzIGNoaWxkcmVuXG4gICAgICAgIGlmIChpdGVyYXRvckZuID09PSBpdGVyYWJsZUNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoIWRpZFdhcm5BYm91dE1hcHMpIHtcbiAgICAgICAgICAgIHdhcm4oJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHN1cHBvcnRlZC4gJyArICdVc2UgYW4gYXJyYXkgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChpdGVyYWJsZUNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgdmFyIGlpID0gMDsgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdXNlXSBgaXRlcmF0b3JGbmAgbWlnaHQgcmV0dXJuIG51bGwgYWNjb3JkaW5nIHRvIHR5cGluZy5cblxuICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRFbGVtZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgc3VidHJlZUNvdW50ICs9IG1hcEludG9BcnJheShjaGlsZCwgYXJyYXksIGVzY2FwZWRQcmVmaXgsIG5leHROYW1lLCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG4gICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArIChjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcpICsgXCIpLiBcIiArICdJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZC4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3VidHJlZUNvdW50O1xufVxuLyoqXG4gKiBNYXBzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI3JlYWN0Y2hpbGRyZW5tYXBcbiAqXG4gKiBUaGUgcHJvdmlkZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZnVuYyBUaGUgbWFwIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgZm9yIG1hcEZ1bmN0aW9uLlxuICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cbiAqL1xuXG5cbmZ1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgLy8gJEZsb3dGaXhNZSBsaW1pdGF0aW9uIHJlZmluaW5nIGFic3RyYWN0IHR5cGVzIGluIEZsb3dcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBjb3VudCA9IDA7XG4gIG1hcEludG9BcnJheShjaGlsZHJlbiwgcmVzdWx0LCAnJywgJycsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGNvdW50KyspO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogQ291bnQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG4gKiBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uXG4gKi9cblxuXG5mdW5jdGlvbiBjb3VudENoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIHZhciBuID0gMDtcbiAgbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICgpIHtcbiAgICBuKys7IC8vIERvbid0IHJldHVybiBhbnl0aGluZ1xuICB9KTtcbiAgcmV0dXJuIG47XG59XG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjaGlsZHJlbmZvcmVhY2hcbiAqXG4gKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9yRWFjaEZ1bmNcbiAqIEBwYXJhbSB7Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCBmb3IgZm9yRWFjaENvbnRleHQuXG4gKi9cblxuXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgLy8gJEZsb3dGaXhNZVttaXNzaW5nLXRoaXMtYW5ub3RdXG4gIGZ1bmN0aW9uICgpIHtcbiAgICBmb3JFYWNoRnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBEb24ndCByZXR1cm4gYW55dGhpbmcuXG4gIH0sIGZvckVhY2hDb250ZXh0KTtcbn1cbi8qKlxuICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gKSBhbmRcbiAqIHJldHVybiBhbiBhcnJheSB3aXRoIGFwcHJvcHJpYXRlbHkgcmUta2V5ZWQgY2hpbGRyZW4uXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVudG9hcnJheVxuICovXG5cblxuZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuICByZXR1cm4gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZDtcbiAgfSkgfHwgW107XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVyZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG4gKlxuICogU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGNoaWxkcmVub25seVxuICpcbiAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcbiAqIHBhc3NlZCB3aXRob3V0IGEgd3JhcHBlciwgYnV0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvXG4gKiBhYnN0cmFjdCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvZiBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLlxuICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3QgYW5kIG9ubHkgYFJlYWN0RWxlbWVudGAgY29udGFpbmVkIGluIHRoZVxuICogc3RydWN0dXJlLlxuICovXG5cblxuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gIGlmICghaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC4nKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxudmFyIFVuaW5pdGlhbGl6ZWQgPSAtMTtcbnZhciBQZW5kaW5nID0gMDtcbnZhciBSZXNvbHZlZCA9IDE7XG52YXIgUmVqZWN0ZWQgPSAyO1xuXG5mdW5jdGlvbiBsYXp5SW5pdGlhbGl6ZXIocGF5bG9hZCkge1xuICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgdmFyIGN0b3IgPSBwYXlsb2FkLl9yZXN1bHQ7XG4gICAgdmFyIHRoZW5hYmxlID0gY3RvcigpOyAvLyBUcmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLlxuICAgIC8vIFRoaXMgbWlnaHQgdGhyb3cgZWl0aGVyIGJlY2F1c2UgaXQncyBtaXNzaW5nIG9yIHRocm93cy4gSWYgc28sIHdlIHRyZWF0IGl0XG4gICAgLy8gYXMgc3RpbGwgdW5pbml0aWFsaXplZCBhbmQgdHJ5IGFnYWluIG5leHQgdGltZS4gV2hpY2ggaXMgdGhlIHNhbWUgYXMgd2hhdFxuICAgIC8vIGhhcHBlbnMgaWYgdGhlIGN0b3Igb3IgYW55IHdyYXBwZXJzIHByb2Nlc3NpbmcgdGhlIGN0b3IgdGhyb3dzLiBUaGlzIG1pZ2h0XG4gICAgLy8gZW5kIHVwIGZpeGluZyBpdCBpZiB0aGUgcmVzb2x1dGlvbiB3YXMgYSBjb25jdXJyZW5jeSBidWcuXG5cbiAgICB0aGVuYWJsZS50aGVuKGZ1bmN0aW9uIChtb2R1bGVPYmplY3QpIHtcbiAgICAgIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFBlbmRpbmcgfHwgcGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgICAgIC8vIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc3RhdGUuXG4gICAgICAgIHZhciByZXNvbHZlZCA9IHBheWxvYWQ7XG4gICAgICAgIHJlc29sdmVkLl9zdGF0dXMgPSBSZXNvbHZlZDtcbiAgICAgICAgcmVzb2x2ZWQuX3Jlc3VsdCA9IG1vZHVsZU9iamVjdDtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChwYXlsb2FkLl9zdGF0dXMgPT09IFBlbmRpbmcgfHwgcGF5bG9hZC5fc3RhdHVzID09PSBVbmluaXRpYWxpemVkKSB7XG4gICAgICAgIC8vIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc3RhdGUuXG4gICAgICAgIHZhciByZWplY3RlZCA9IHBheWxvYWQ7XG4gICAgICAgIHJlamVjdGVkLl9zdGF0dXMgPSBSZWplY3RlZDtcbiAgICAgICAgcmVqZWN0ZWQuX3Jlc3VsdCA9IGVycm9yO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHBheWxvYWQuX3N0YXR1cyA9PT0gVW5pbml0aWFsaXplZCkge1xuICAgICAgLy8gSW4gY2FzZSwgd2UncmUgc3RpbGwgdW5pbml0aWFsaXplZCwgdGhlbiB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgdGhlbmFibGVcbiAgICAgIC8vIHRvIHJlc29sdmUuIFNldCBpdCBhcyBwZW5kaW5nIGluIHRoZSBtZWFudGltZS5cbiAgICAgIHZhciBwZW5kaW5nID0gcGF5bG9hZDtcbiAgICAgIHBlbmRpbmcuX3N0YXR1cyA9IFBlbmRpbmc7XG4gICAgICBwZW5kaW5nLl9yZXN1bHQgPSB0aGVuYWJsZTtcbiAgICB9XG4gIH1cblxuICBpZiAocGF5bG9hZC5fc3RhdHVzID09PSBSZXNvbHZlZCkge1xuICAgIHZhciBtb2R1bGVPYmplY3QgPSBwYXlsb2FkLl9yZXN1bHQ7XG5cbiAgICB7XG4gICAgICBpZiAobW9kdWxlT2JqZWN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXJyb3IoJ2xhenk6IEV4cGVjdGVkIHRoZSByZXN1bHQgb2YgYSBkeW5hbWljIGltcCcgKyAnb3J0KCkgY2FsbC4gJyArICdJbnN0ZWFkIHJlY2VpdmVkOiAlc1xcblxcbllvdXIgY29kZSBzaG91bGQgbG9vayBsaWtlOiBcXG4gICcgKyAvLyBCcmVhayB1cCBpbXBvcnRzIHRvIGF2b2lkIGFjY2lkZW50YWxseSBwYXJzaW5nIHRoZW0gYXMgZGVwZW5kZW5jaWVzLlxuICAgICAgICAnY29uc3QgTXlDb21wb25lbnQgPSBsYXp5KCgpID0+IGltcCcgKyBcIm9ydCgnLi9NeUNvbXBvbmVudCcpKVxcblxcblwiICsgJ0RpZCB5b3UgYWNjaWRlbnRhbGx5IHB1dCBjdXJseSBicmFjZXMgYXJvdW5kIHRoZSBpbXBvcnQ/JywgbW9kdWxlT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAoISgnZGVmYXVsdCcgaW4gbW9kdWxlT2JqZWN0KSkge1xuICAgICAgICBlcnJvcignbGF6eTogRXhwZWN0ZWQgdGhlIHJlc3VsdCBvZiBhIGR5bmFtaWMgaW1wJyArICdvcnQoKSBjYWxsLiAnICsgJ0luc3RlYWQgcmVjZWl2ZWQ6ICVzXFxuXFxuWW91ciBjb2RlIHNob3VsZCBsb29rIGxpa2U6IFxcbiAgJyArIC8vIEJyZWFrIHVwIGltcG9ydHMgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IHBhcnNpbmcgdGhlbSBhcyBkZXBlbmRlbmNpZXMuXG4gICAgICAgICdjb25zdCBNeUNvbXBvbmVudCA9IGxhenkoKCkgPT4gaW1wJyArIFwib3J0KCcuL015Q29tcG9uZW50JykpXCIsIG1vZHVsZU9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZU9iamVjdC5kZWZhdWx0O1xuICB9IGVsc2Uge1xuICAgIHRocm93IHBheWxvYWQuX3Jlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBsYXp5KGN0b3IpIHtcbiAgdmFyIHBheWxvYWQgPSB7XG4gICAgLy8gV2UgdXNlIHRoZXNlIGZpZWxkcyB0byBzdG9yZSB0aGUgcmVzdWx0LlxuICAgIF9zdGF0dXM6IFVuaW5pdGlhbGl6ZWQsXG4gICAgX3Jlc3VsdDogY3RvclxuICB9O1xuICB2YXIgbGF6eVR5cGUgPSB7XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0xBWllfVFlQRSxcbiAgICBfcGF5bG9hZDogcGF5bG9hZCxcbiAgICBfaW5pdDogbGF6eUluaXRpYWxpemVyXG4gIH07XG5cbiAge1xuICAgIC8vIEluIHByb2R1Y3Rpb24sIHRoaXMgd291bGQganVzdCBzZXQgaXQgb24gdGhlIG9iamVjdC5cbiAgICB2YXIgZGVmYXVsdFByb3BzO1xuICAgIHZhciBwcm9wVHlwZXM7IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGF6eVR5cGUsIHtcbiAgICAgIGRlZmF1bHRQcm9wczoge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0UHJvcHM7XG4gICAgICAgIH0sXG4gICAgICAgIC8vICRGbG93Rml4TWVbbWlzc2luZy1sb2NhbC1hbm5vdF1cbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3RGVmYXVsdFByb3BzKSB7XG4gICAgICAgICAgZXJyb3IoJ1JlYWN0LmxhenkoLi4uKTogSXQgaXMgbm90IHN1cHBvcnRlZCB0byBhc3NpZ24gYGRlZmF1bHRQcm9wc2AgdG8gJyArICdhIGxhenkgY29tcG9uZW50IGltcG9ydC4gRWl0aGVyIHNwZWNpZnkgdGhlbSB3aGVyZSB0aGUgY29tcG9uZW50ICcgKyAnaXMgZGVmaW5lZCwgb3IgY3JlYXRlIGEgd3JhcHBpbmcgY29tcG9uZW50IGFyb3VuZCBpdC4nKTtcblxuICAgICAgICAgIGRlZmF1bHRQcm9wcyA9IG5ld0RlZmF1bHRQcm9wczsgLy8gTWF0Y2ggcHJvZHVjdGlvbiBiZWhhdmlvciBtb3JlIGNsb3NlbHk6XG4gICAgICAgICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eVR5cGUsICdkZWZhdWx0UHJvcHMnLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9wVHlwZXM6IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gcHJvcFR5cGVzO1xuICAgICAgICB9LFxuICAgICAgICAvLyAkRmxvd0ZpeE1lW21pc3NpbmctbG9jYWwtYW5ub3RdXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5ld1Byb3BUeXBlcykge1xuICAgICAgICAgIGVycm9yKCdSZWFjdC5sYXp5KC4uLik6IEl0IGlzIG5vdCBzdXBwb3J0ZWQgdG8gYXNzaWduIGBwcm9wVHlwZXNgIHRvICcgKyAnYSBsYXp5IGNvbXBvbmVudCBpbXBvcnQuIEVpdGhlciBzcGVjaWZ5IHRoZW0gd2hlcmUgdGhlIGNvbXBvbmVudCAnICsgJ2lzIGRlZmluZWQsIG9yIGNyZWF0ZSBhIHdyYXBwaW5nIGNvbXBvbmVudCBhcm91bmQgaXQuJyk7XG5cbiAgICAgICAgICBwcm9wVHlwZXMgPSBuZXdQcm9wVHlwZXM7IC8vIE1hdGNoIHByb2R1Y3Rpb24gYmVoYXZpb3IgbW9yZSBjbG9zZWx5OlxuICAgICAgICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxhenlUeXBlLCAncHJvcFR5cGVzJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbGF6eVR5cGU7XG59XG5cbmZ1bmN0aW9uIGZvcndhcmRSZWYocmVuZGVyKSB7XG4gIHtcbiAgICBpZiAocmVuZGVyICE9IG51bGwgJiYgcmVuZGVyLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCByZWNlaXZlZCBhIGBtZW1vYCAnICsgJ2NvbXBvbmVudC4gSW5zdGVhZCBvZiBmb3J3YXJkUmVmKG1lbW8oLi4uKSksIHVzZSAnICsgJ21lbW8oZm9yd2FyZFJlZiguLi4pKS4nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZW5kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlcXVpcmVzIGEgcmVuZGVyIGZ1bmN0aW9uIGJ1dCB3YXMgZ2l2ZW4gJXMuJywgcmVuZGVyID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHJlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZW5kZXIubGVuZ3RoICE9PSAwICYmIHJlbmRlci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgZXJyb3IoJ2ZvcndhcmRSZWYgcmVuZGVyIGZ1bmN0aW9ucyBhY2NlcHQgZXhhY3RseSB0d28gcGFyYW1ldGVyczogcHJvcHMgYW5kIHJlZi4gJXMnLCByZW5kZXIubGVuZ3RoID09PSAxID8gJ0RpZCB5b3UgZm9yZ2V0IHRvIHVzZSB0aGUgcmVmIHBhcmFtZXRlcj8nIDogJ0FueSBhZGRpdGlvbmFsIHBhcmFtZXRlciB3aWxsIGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVuZGVyICE9IG51bGwpIHtcbiAgICAgIGlmIChyZW5kZXIuZGVmYXVsdFByb3BzICE9IG51bGwgfHwgcmVuZGVyLnByb3BUeXBlcyAhPSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdmb3J3YXJkUmVmIHJlbmRlciBmdW5jdGlvbnMgZG8gbm90IHN1cHBvcnQgcHJvcFR5cGVzIG9yIGRlZmF1bHRQcm9wcy4gJyArICdEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIGEgUmVhY3QgY29tcG9uZW50PycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50VHlwZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSxcbiAgICByZW5kZXI6IHJlbmRlclxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHsuLi59KTtcbiAgICAgICAgLy8gVGhpcyBraW5kIG9mIGlubmVyIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGVsc2V3aGVyZSBzbyB0aGUgc2lkZSBlZmZlY3QgaXMgb2theS5cblxuICAgICAgICBpZiAoIXJlbmRlci5uYW1lICYmICFyZW5kZXIuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICByZW5kZXIuZGlzcGxheU5hbWUgPSBuYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudFR5cGU7XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgPSBTeW1ib2wuZm9yKCdyZWFjdC5jbGllbnQucmVmZXJlbmNlJyk7XG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gTm90ZTogdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgKGUuZy4gaWYgaXQncyBhIHBvbHlmaWxsKS5cblxuXG4gIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgZW5hYmxlRGVidWdUcmFjaW5nICB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IGVuYWJsZUxlZ2FjeUhpZGRlbiAgfHwgdHlwZSA9PT0gUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgfHwgZW5hYmxlU2NvcGVBUEkgIHx8IGVuYWJsZUNhY2hlRWxlbWVudCAgfHwgZW5hYmxlVHJhbnNpdGlvblRyYWNpbmcgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIFRoaXMgbmVlZHMgdG8gaW5jbHVkZSBhbGwgcG9zc2libGUgbW9kdWxlIHJlZmVyZW5jZSBvYmplY3RcbiAgICAvLyB0eXBlcyBzdXBwb3J0ZWQgYnkgYW55IEZsaWdodCBjb25maWd1cmF0aW9uIGFueXdoZXJlIHNpbmNlXG4gICAgLy8gd2UgZG9uJ3Qga25vdyB3aGljaCBGbGlnaHQgYnVpbGQgdGhpcyB3aWxsIGVuZCB1cCBiZWluZyB1c2VkXG4gICAgLy8gd2l0aC5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgfHwgdHlwZS5nZXRNb2R1bGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1lbW8odHlwZSwgY29tcGFyZSkge1xuICB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSkpIHtcbiAgICAgIGVycm9yKCdtZW1vOiBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGNvbXBvbmVudC4gSW5zdGVhZCAnICsgJ3JlY2VpdmVkOiAlcycsIHR5cGUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGVsZW1lbnRUeXBlID0ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9NRU1PX1RZUEUsXG4gICAgdHlwZTogdHlwZSxcbiAgICBjb21wYXJlOiBjb21wYXJlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29tcGFyZVxuICB9O1xuXG4gIHtcbiAgICB2YXIgb3duTmFtZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudFR5cGUsICdkaXNwbGF5TmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBvd25OYW1lO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgb3duTmFtZSA9IG5hbWU7IC8vIFRoZSBpbm5lciBjb21wb25lbnQgc2hvdWxkbid0IGluaGVyaXQgdGhpcyBkaXNwbGF5IG5hbWUgaW4gbW9zdCBjYXNlcyxcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgY29tcG9uZW50IG1heSBiZSB1c2VkIGVsc2V3aGVyZS5cbiAgICAgICAgLy8gQnV0IGl0J3MgbmljZSBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucyB0byBpbmhlcml0IHRoZSBuYW1lLFxuICAgICAgICAvLyBzbyB0aGF0IG91ciBjb21wb25lbnQtc3RhY2sgZ2VuZXJhdGlvbiBsb2dpYyB3aWxsIGRpc3BsYXkgdGhlaXIgZnJhbWVzLlxuICAgICAgICAvLyBBbiBhbm9ueW1vdXMgZnVuY3Rpb24gZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgcGF0dGVybiBsaWtlOlxuICAgICAgICAvLyAgIFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7Li4ufSk7XG4gICAgICAgIC8vIFRoaXMga2luZCBvZiBpbm5lciBmdW5jdGlvbiBpcyBub3QgdXNlZCBlbHNld2hlcmUgc28gdGhlIHNpZGUgZWZmZWN0IGlzIG9rYXkuXG5cbiAgICAgICAgaWYgKCF0eXBlLm5hbWUgJiYgIXR5cGUuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICB0eXBlLmRpc3BsYXlOYW1lID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRUeXBlO1xufVxuXG52YXIgVU5URVJNSU5BVEVEID0gMDtcbnZhciBURVJNSU5BVEVEID0gMTtcbnZhciBFUlJPUkVEID0gMjtcblxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVSb290KCkge1xuICByZXR1cm4gbmV3IFdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVOb2RlKCkge1xuICByZXR1cm4ge1xuICAgIHM6IFVOVEVSTUlOQVRFRCxcbiAgICAvLyBzdGF0dXMsIHJlcHJlc2VudHMgd2hldGhlciB0aGUgY2FjaGVkIGNvbXB1dGF0aW9uIHJldHVybmVkIGEgdmFsdWUgb3IgdGhyZXcgYW4gZXJyb3JcbiAgICB2OiB1bmRlZmluZWQsXG4gICAgLy8gdmFsdWUsIGVpdGhlciB0aGUgY2FjaGVkIHJlc3VsdCBvciBhbiBlcnJvciwgZGVwZW5kaW5nIG9uIHNcbiAgICBvOiBudWxsLFxuICAgIC8vIG9iamVjdCBjYWNoZSwgYSBXZWFrTWFwIHdoZXJlIG5vbi1wcmltaXRpdmUgYXJndW1lbnRzIGFyZSBzdG9yZWRcbiAgICBwOiBudWxsIC8vIHByaW1pdGl2ZSBjYWNoZSwgYSByZWd1bGFyIE1hcCB3aGVyZSBwcmltaXRpdmUgYXJndW1lbnRzIGFyZSBzdG9yZWQuXG5cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FjaGUoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudENhY2hlLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWRpc3BhdGNoZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGRpc3BhdGNoZXIsIHRoZW4gd2UgdHJlYXQgdGhpcyBhcyBub3QgYmVpbmcgY2FjaGVkLlxuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IFdlIGRvbid0IHdhbnQgdG8gdXNlIHJlc3QgYXJndW1lbnRzIHNpbmNlIHdlIHRyYW5zcGlsZSB0aGUgY29kZS5cbiAgICAgIHJldHVybiBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHZhciBmbk1hcCA9IGRpc3BhdGNoZXIuZ2V0Q2FjaGVGb3JUeXBlKGNyZWF0ZUNhY2hlUm9vdCk7XG4gICAgdmFyIGZuTm9kZSA9IGZuTWFwLmdldChmbik7XG4gICAgdmFyIGNhY2hlTm9kZTtcblxuICAgIGlmIChmbk5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICBmbk1hcC5zZXQoZm4sIGNhY2hlTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlTm9kZSA9IGZuTm9kZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbCkge1xuICAgICAgICAvLyBPYmplY3RzIGdvIGludG8gYSBXZWFrTWFwXG4gICAgICAgIHZhciBvYmplY3RDYWNoZSA9IGNhY2hlTm9kZS5vO1xuXG4gICAgICAgIGlmIChvYmplY3RDYWNoZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGNhY2hlTm9kZS5vID0gb2JqZWN0Q2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9iamVjdE5vZGUgPSBvYmplY3RDYWNoZS5nZXQoYXJnKTtcblxuICAgICAgICBpZiAob2JqZWN0Tm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgb2JqZWN0Q2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBvYmplY3ROb2RlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcmltaXRpdmVzIGdvIGludG8gYSByZWd1bGFyIE1hcFxuICAgICAgICB2YXIgcHJpbWl0aXZlQ2FjaGUgPSBjYWNoZU5vZGUucDtcblxuICAgICAgICBpZiAocHJpbWl0aXZlQ2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgICBjYWNoZU5vZGUucCA9IHByaW1pdGl2ZUNhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHByaW1pdGl2ZU5vZGUgPSBwcmltaXRpdmVDYWNoZS5nZXQoYXJnKTtcblxuICAgICAgICBpZiAocHJpbWl0aXZlTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgcHJpbWl0aXZlQ2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBwcmltaXRpdmVOb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlTm9kZS5zID09PSBURVJNSU5BVEVEKSB7XG4gICAgICByZXR1cm4gY2FjaGVOb2RlLnY7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlTm9kZS5zID09PSBFUlJPUkVEKSB7XG4gICAgICB0aHJvdyBjYWNoZU5vZGUudjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IFdlIGRvbid0IHdhbnQgdG8gdXNlIHJlc3QgYXJndW1lbnRzIHNpbmNlIHdlIHRyYW5zcGlsZSB0aGUgY29kZS5cbiAgICAgIHZhciByZXN1bHQgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgdmFyIHRlcm1pbmF0ZWROb2RlID0gY2FjaGVOb2RlO1xuICAgICAgdGVybWluYXRlZE5vZGUucyA9IFRFUk1JTkFURUQ7XG4gICAgICB0ZXJtaW5hdGVkTm9kZS52ID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gV2Ugc3RvcmUgdGhlIGZpcnN0IGVycm9yIHRoYXQncyB0aHJvd24gYW5kIHJldGhyb3cgaXQuXG4gICAgICB2YXIgZXJyb3JlZE5vZGUgPSBjYWNoZU5vZGU7XG4gICAgICBlcnJvcmVkTm9kZS5zID0gRVJST1JFRDtcbiAgICAgIGVycm9yZWROb2RlLnYgPSBlcnJvcjtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURpc3BhdGNoZXIoKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQ7XG5cbiAge1xuICAgIGlmIChkaXNwYXRjaGVyID09PSBudWxsKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICAgIH1cbiAgfSAvLyBXaWxsIHJlc3VsdCBpbiBhIG51bGwgYWNjZXNzIGVycm9yIGlmIGFjY2Vzc2VkIG91dHNpZGUgcmVuZGVyIHBoYXNlLiBXZVxuICAvLyBpbnRlbnRpb25hbGx5IGRvbid0IHRocm93IG91ciBvd24gZXJyb3IgYmVjYXVzZSB0aGlzIGlzIGluIGEgaG90IHBhdGguXG4gIC8vIEFsc28gaGVscHMgZW5zdXJlIHRoaXMgaXMgaW5saW5lZC5cblxuXG4gIHJldHVybiBkaXNwYXRjaGVyO1xufVxuZnVuY3Rpb24gdXNlQ29udGV4dChDb250ZXh0KSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcblxuICB7XG4gICAgLy8gVE9ETzogYWRkIGEgbW9yZSBnZW5lcmljIHdhcm5pbmcgZm9yIGludmFsaWQgdmFsdWVzLlxuICAgIGlmIChDb250ZXh0Ll9jb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciByZWFsQ29udGV4dCA9IENvbnRleHQuX2NvbnRleHQ7IC8vIERvbid0IGRlZHVwbGljYXRlIGJlY2F1c2UgdGhpcyBsZWdpdGltYXRlbHkgY2F1c2VzIGJ1Z3NcbiAgICAgIC8vIGFuZCBub2JvZHkgc2hvdWxkIGJlIHVzaW5nIHRoaXMgaW4gZXhpc3RpbmcgY29kZS5cblxuICAgICAgaWYgKHJlYWxDb250ZXh0LkNvbnN1bWVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Db25zdW1lcikgaXMgbm90IHN1cHBvcnRlZCwgbWF5IGNhdXNlIGJ1Z3MsIGFuZCB3aWxsIGJlICcgKyAncmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9IGVsc2UgaWYgKHJlYWxDb250ZXh0LlByb3ZpZGVyID09PSBDb250ZXh0KSB7XG4gICAgICAgIGVycm9yKCdDYWxsaW5nIHVzZUNvbnRleHQoQ29udGV4dC5Qcm92aWRlcikgaXMgbm90IHN1cHBvcnRlZC4gJyArICdEaWQgeW91IG1lYW4gdG8gY2FsbCB1c2VDb250ZXh0KENvbnRleHQpIGluc3RlYWQ/Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlQ29udGV4dChDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlQ2FsbGJhY2soY2FsbGJhY2ssIGRlcHMpO1xufVxuZnVuY3Rpb24gdXNlTWVtbyhjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2VNZW1vKGNyZWF0ZSwgZGVwcyk7XG59XG5mdW5jdGlvbiB1c2VEZWJ1Z1ZhbHVlKHZhbHVlLCBmb3JtYXR0ZXJGbikge1xuICB7XG4gICAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICAgIHJldHVybiBkaXNwYXRjaGVyLnVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlckZuKTtcbiAgfVxufVxuZnVuY3Rpb24gdXNlSWQoKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gcmVzb2x2ZURpc3BhdGNoZXIoKTtcbiAgcmV0dXJuIGRpc3BhdGNoZXIudXNlSWQoKTtcbn1cbmZ1bmN0aW9uIHVzZSh1c2FibGUpIHtcbiAgdmFyIGRpc3BhdGNoZXIgPSByZXNvbHZlRGlzcGF0Y2hlcigpO1xuICByZXR1cm4gZGlzcGF0Y2hlci51c2UodXNhYmxlKTtcbn1cblxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxuLy8gcmVwbGF5aW5nIG9uIHJlbmRlciBmdW5jdGlvbi4gVGhpcyBjdXJyZW50bHkgb25seSBwYXRjaGVzIHRoZSBvYmplY3Rcbi8vIGxhemlseSB3aGljaCB3b24ndCBjb3ZlciBpZiB0aGUgbG9nIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZWFnZXJseS5cbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxudmFyIGRpc2FibGVkRGVwdGggPSAwO1xudmFyIHByZXZMb2c7XG52YXIgcHJldkluZm87XG52YXIgcHJldldhcm47XG52YXIgcHJldkVycm9yO1xudmFyIHByZXZHcm91cDtcbnZhciBwcmV2R3JvdXBDb2xsYXBzZWQ7XG52YXIgcHJldkdyb3VwRW5kO1xuXG5mdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG5cbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XG5mdW5jdGlvbiBkaXNhYmxlTG9ncygpIHtcbiAge1xuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHByZXZMb2cgPSBjb25zb2xlLmxvZztcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICBwcmV2RXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICBwcmV2R3JvdXBFbmQgPSBjb25zb2xlLmdyb3VwRW5kOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MDk5XG5cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZGlzYWJsZWRMb2csXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV0gRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgIHdhcm46IHByb3BzLFxuICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IHByb3BzLFxuICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBkaXNhYmxlZERlcHRoKys7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAge1xuICAgIGRpc2FibGVkRGVwdGgtLTtcblxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cbi8qKlxuICogTGV2ZXJhZ2VzIG5hdGl2ZSBicm93c2VyL1ZNIHN0YWNrIGZyYW1lcyB0byBnZXQgcHJvcGVyIGRldGFpbHMgKGUuZy5cbiAqIGZpbGVuYW1lLCBsaW5lICsgY29sIG51bWJlcikgZm9yIGEgc2luZ2xlIGNvbXBvbmVudCBpbiBhIGNvbXBvbmVudCBzdGFjay4gV2VcbiAqIGRvIHRoaXMgYnk6XG4gKiAgICgxKSB0aHJvd2luZyBhbmQgY2F0Y2hpbmcgYW4gZXJyb3IgaW4gdGhlIGZ1bmN0aW9uIC0gdGhpcyB3aWxsIGJlIG91clxuICogICAgICAgY29udHJvbCBlcnJvci5cbiAqICAgKDIpIGNhbGxpbmcgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgdGhyb3cgYW4gZXJyb3IgdGhhdCB3ZSdsbFxuICogICAgICAgY2F0Y2ggLSB0aGlzIHdpbGwgYmUgb3VyIHNhbXBsZSBlcnJvci5cbiAqICAgKDMpIGRpZmZpbmcgdGhlIGNvbnRyb2wgYW5kIHNhbXBsZSBlcnJvciBzdGFja3MgdG8gZmluZCB0aGUgc3RhY2sgZnJhbWVcbiAqICAgICAgIHdoaWNoIHJlcHJlc2VudHMgb3VyIGNvbXBvbmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmRpbmcgYSBjb21tb24gc3RhY2sgZnJhbWUgYmV0d2VlbiBzYW1wbGUgYW5kIGNvbnRyb2wgZXJyb3JzIGNhbiBiZVxuICAgKiB0cmlja3kgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcyBhbmQgbGV2ZWxzIG9mIHN0YWNrIHRyYWNlIHRydW5jYXRpb24gZnJvbVxuICAgKiBkaWZmZXJlbnQgSlMgVk1zLiBTbyBpbnN0ZWFkIHdlJ2xsIGF0dGVtcHQgdG8gY29udHJvbCB3aGF0IHRoYXQgY29tbW9uXG4gICAqIGZyYW1lIHNob3VsZCBiZSB0aHJvdWdoIHRoaXMgb2JqZWN0IG1ldGhvZDpcbiAgICogSGF2aW5nIGJvdGggdGhlIHNhbXBsZSBhbmQgY29udHJvbCBlcnJvcnMgYmUgaW4gdGhlIGZ1bmN0aW9uIHVuZGVyIHRoZVxuICAgKiBgRGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZVJvb3RgIHByb3BlcnR5LCArIHNldHRpbmcgdGhlIGBuYW1lYCBhbmRcbiAgICogYGRpc3BsYXlOYW1lYCBwcm9wZXJ0aWVzIG9mIHRoZSBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgYSBzdGFja1xuICAgKiBmcmFtZSBleGlzdHMgdGhhdCBoYXMgdGhlIG1ldGhvZCBuYW1lIGBEZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lUm9vdGAgaW5cbiAgICogaXQgZm9yIGJvdGggY29udHJvbCBhbmQgc2FtcGxlIHN0YWNrcy5cbiAgICovXG5cblxuICB2YXIgUnVuSW5Sb290RnJhbWUgPSB7XG4gICAgRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY29udHJvbDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfTsgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddIGZvdW5kIHdoZW4gdXBncmFkaW5nIEZsb3dcblxuXG4gICAgICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgfSAvLyBUT0RPKGx1bmEpOiBUaGlzIHdpbGwgY3VycmVudGx5IG9ubHkgdGhyb3cgaWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudFxuICAgICAgICAgIC8vIHRyaWVzIHRvIGFjY2VzcyBSZWFjdC9SZWFjdERPTS9wcm9wcy4gV2Ugc2hvdWxkIHByb2JhYmx5IG1ha2UgdGhpcyB0aHJvd1xuICAgICAgICAgIC8vIGluIHNpbXBsZSBjb21wb25lbnRzIHRvb1xuXG5cbiAgICAgICAgICB2YXIgbWF5YmVQcm9taXNlID0gZm4oKTsgLy8gSWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudCByZXR1cm5zIGEgcHJvbWlzZSwgaXQncyBsaWtlbHkgYW4gYXN5bmNcbiAgICAgICAgICAvLyBjb21wb25lbnQsIHdoaWNoIHdlIGRvbid0IHlldCBzdXBwb3J0LiBBdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgdG9cbiAgICAgICAgICAvLyBzaWxlbmNlIHRoZSBlcnJvci5cbiAgICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY29tcG9uZW50IHN0YWNrcyBmb3IgYXN5bmMgY2xpZW50IGNvbXBvbmVudHM/XG5cbiAgICAgICAgICBpZiAobWF5YmVQcm9taXNlICYmIHR5cGVvZiBtYXliZVByb21pc2UuY2F0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG1heWJlUHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07XG4gICAgfVxuICB9OyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cblxuICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWUgPSAnRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290JztcbiAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LCAnbmFtZScpOyAvLyBCZWZvcmUgRVM2LCB0aGUgYG5hbWVgIHByb3BlcnR5IHdhcyBub3QgY29uZmlndXJhYmxlLlxuXG4gIGlmIChuYW1lUHJvcERlc2NyaXB0b3IgJiYgbmFtZVByb3BEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgIC8vIFY4IHV0aWxpemVzIGEgZnVuY3Rpb24ncyBgbmFtZWAgcHJvcGVydHkgd2hlbiBnZW5lcmF0aW5nIGEgc3RhY2sgdHJhY2UuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwgLy8gQ29uZmlndXJhYmxlIHByb3BlcnRpZXMgY2FuIGJlIHVwZGF0ZWQgZXZlbiBpZiBpdHMgd3JpdGFibGUgZGVzY3JpcHRvclxuICAgIC8vIGlzIHNldCB0byBgZmFsc2VgLlxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuICAgICduYW1lJywge1xuICAgICAgdmFsdWU6ICdEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QnXG4gICAgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPSBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QoKSxcbiAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgIGNvbnRyb2xTdGFjayA9IF9SdW5JblJvb3RGcmFtZSREZXRlclsxXTtcblxuICAgIGlmIChzYW1wbGVTdGFjayAmJiBjb250cm9sU3RhY2spIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZVN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSAwO1xuICAgICAgdmFyIGMgPSAwO1xuXG4gICAgICB3aGlsZSAocyA8IHNhbXBsZUxpbmVzLmxlbmd0aCAmJiAhc2FtcGxlTGluZXNbc10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIHMrKztcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGMgPCBjb250cm9sTGluZXMubGVuZ3RoICYmICFjb250cm9sTGluZXNbY10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIGMrKztcbiAgICAgIH0gLy8gV2UgY291bGRuJ3QgZmluZCBvdXIgaW50ZW50aW9uYWxseSBpbmplY3RlZCBjb21tb24gcm9vdCBmcmFtZSwgYXR0ZW1wdFxuICAgICAgLy8gdG8gZmluZCBhbm90aGVyIGNvbW1vbiByb290IGZyYW1lIGJ5IHNlYXJjaCBmcm9tIHRoZSBib3R0b20gb2YgdGhlXG4gICAgICAvLyBjb250cm9sIHN0YWNrLi4uXG5cblxuICAgICAgaWYgKHMgPT09IHNhbXBsZUxpbmVzLmxlbmd0aCB8fCBjID09PSBjb250cm9sTGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgICBjLS07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7IC8vIElmIG91ciBjb21wb25lbnQgZnJhbWUgaXMgbGFiZWxlZCBcIjxhbm9ueW1vdXM+XCJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgLy8gc3BsaWNlIGl0IGluIHRvIG1ha2UgdGhlIHN0YWNrIG1vcmUgcmVhZGFibGUuXG5cblxuICAgICAgICAgICAgICAgIGlmIChmbi5kaXNwbGF5TmFtZSAmJiBfZnJhbWUuaW5jbHVkZXMoJzxhbm9ueW1vdXM+JykpIHtcbiAgICAgICAgICAgICAgICAgIF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKCc8YW5vbnltb3VzPicsIGZuLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgZmFsc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgdmFyIHByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhIShwcm90b3R5cGUgJiYgcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSwgc291cmNlLCBvd25lckZuKSB7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHtcbiAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsIHNob3VsZENvbnN0cnVjdCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2UnKTtcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZUxpc3QnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZSh0eXBlLnJlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAvLyBNZW1vIG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBzb3VyY2UsIG93bmVyRm4pO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50KSB7XG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXG4gICAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChoYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3Byb2QtZXJyb3ItY29kZXNcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvciQxLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yJDEubWVzc2FnZV0gPSB0cnVlO1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFID0gU3ltYm9sLmZvcigncmVhY3QuY2xpZW50LnJlZmVyZW5jZScpO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKSB7XG4gIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBmaWxlTmFtZSA9IHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XG4gICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bUZvclByb3BzKGVsZW1lbnRQcm9wcykge1xuICBpZiAoZWxlbWVudFByb3BzICE9PSBudWxsICYmIGVsZW1lbnRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKGVsZW1lbnRQcm9wcy5fX3NvdXJjZSk7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgdmFyIHBhcmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUocGFyZW50VHlwZSk7XG5cbiAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmZvO1xufVxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuIEVycm9yIHN0YXR1c2VzIGFyZSBjYWNoZWQgc28gYSB3YXJuaW5nXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gIGlmIChvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10gPSB0cnVlOyAvLyBVc3VhbGx5IHRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBvZmZlbmRlciwgYnV0IGlmIGl0IGFjY2VwdHMgY2hpbGRyZW4gYXMgYVxuICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICB2YXIgY2hpbGRPd25lciA9ICcnO1xuXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gIH1cblxuICB7XG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBlcnJvcignRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyKTtcblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICB9XG59XG4vKipcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxuICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCAhbm9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChub2RlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFKSA7IGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG5cbiAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cbiAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gRW50cnkgaXRlcmF0b3JzIHVzZWQgdG8gcHJvdmlkZSBpbXBsaWNpdCBrZXlzLFxuICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChub2RlKTtcbiAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwcm9wVHlwZXM7XG5cbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIE5vdGU6IE1lbW8gb25seSBjaGVja3Mgb3V0ZXIgcHJvcHMgaGVyZS5cbiAgICAvLyBJbm5lciBwcm9wcyBhcmUgY2hlY2tlZCBpbiB0aGUgcmVjb25jaWxlci5cbiAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUpKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wVHlwZXMpIHtcbiAgICAgIC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgIGNoZWNrUHJvcFR5cGVzKHByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgJ3Byb3AnLCBuYW1lLCBlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuUHJvcFR5cGVzICE9PSB1bmRlZmluZWQgJiYgIXByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duKSB7XG4gICAgICBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93biA9IHRydWU7IC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG5cbiAgICAgIHZhciBfbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcblxuICAgICAgZXJyb3IoJ0NvbXBvbmVudCAlcyBkZWNsYXJlZCBgUHJvcFR5cGVzYCBpbnN0ZWFkIG9mIGBwcm9wVHlwZXNgLiBEaWQgeW91IG1pc3NwZWxsIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50PycsIF9uYW1lIHx8ICdVbmtub3duJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0eXBlLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiAhdHlwZS5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQpIHtcbiAgICAgIGVycm9yKCdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJyk7XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGEgZnJhZ21lbnQsIHZhbGlkYXRlIHRoYXQgaXQgY2FuIG9ubHkgYmUgcHJvdmlkZWQgd2l0aCBmcmFnbWVudCBwcm9wc1xuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGZyYWdtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZnJhZ21lbnQpIHtcbiAge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gJ2NoaWxkcmVuJyAmJiBrZXkgIT09ICdrZXknKSB7XG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XG5cbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuICB2YXIgdmFsaWRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpOyAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuXG4gIGlmICghdmFsaWRUeXBlKSB7XG4gICAgdmFyIGluZm8gPSAnJztcblxuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VJbmZvID0gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW1Gb3JQcm9wcyhwcm9wcyk7XG5cbiAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgaW5mbyArPSBzb3VyY2VJbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgIH1cblxuICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlU3RyaW5nID0gJ2FycmF5JztcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgIH1cblxuICAgIHtcbiAgICAgIGVycm9yKCdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCQxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcblxuXG4gIGlmICh2YWxpZFR5cGUpIHtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsaWRhdGVDaGlsZEtleXMoYXJndW1lbnRzW2ldLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSkge1xuICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufVxuZnVuY3Rpb24gY2xvbmVFbGVtZW50V2l0aFZhbGlkYXRpb24oZWxlbWVudCwgcHJvcHMsIGNoaWxkcmVuKSB7XG4gIHZhciBuZXdFbGVtZW50ID0gY2xvbmVFbGVtZW50JDEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgbmV3RWxlbWVudC50eXBlKTtcbiAgfVxuXG4gIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpO1xuICByZXR1cm4gbmV3RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2VydmVyQ29udGV4dChnbG9iYWxOYW1lLCBkZWZhdWx0VmFsdWUpIHtcbiAge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgYmF0Y2gncyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgaG93IGxvbmcgYW4gdXBkYXRlXG4gKiBzaG91bGQgc3VzcGVuZCBmb3IgaWYgaXQgbmVlZHMgdG8uXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyA9IHtcbiAgdHJhbnNpdGlvbjogbnVsbFxufTtcblxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKHNjb3BlLCBvcHRpb25zKSB7XG4gIHZhciBwcmV2VHJhbnNpdGlvbiA9IFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb247XG4gIFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLnRyYW5zaXRpb24gPSB7fTtcbiAgdmFyIGN1cnJlbnRUcmFuc2l0aW9uID0gUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbjtcblxuICB7XG4gICAgUmVhY3RDdXJyZW50QmF0Y2hDb25maWcudHJhbnNpdGlvbi5fdXBkYXRlZEZpYmVycyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgc2NvcGUoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdEN1cnJlbnRCYXRjaENvbmZpZy50cmFuc2l0aW9uID0gcHJldlRyYW5zaXRpb247XG5cbiAgICB7XG4gICAgICBpZiAocHJldlRyYW5zaXRpb24gPT09IG51bGwgJiYgY3VycmVudFRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMpIHtcbiAgICAgICAgdmFyIHVwZGF0ZWRGaWJlcnNDb3VudCA9IGN1cnJlbnRUcmFuc2l0aW9uLl91cGRhdGVkRmliZXJzLnNpemU7XG5cbiAgICAgICAgY3VycmVudFRyYW5zaXRpb24uX3VwZGF0ZWRGaWJlcnMuY2xlYXIoKTtcblxuICAgICAgICBpZiAodXBkYXRlZEZpYmVyc0NvdW50ID4gMTApIHtcbiAgICAgICAgICB3YXJuKCdEZXRlY3RlZCBhIGxhcmdlIG51bWJlciBvZiB1cGRhdGVzIGluc2lkZSBzdGFydFRyYW5zaXRpb24uICcgKyAnSWYgdGhpcyBpcyBkdWUgdG8gYSBzdWJzY3JpcHRpb24gcGxlYXNlIHJlLXdyaXRlIGl0IHRvIHVzZSBSZWFjdCBwcm92aWRlZCBob29rcy4gJyArICdPdGhlcndpc2UgY29uY3VycmVudCBtb2RlIGd1YXJhbnRlZXMgYXJlIG9mZiB0aGUgdGFibGUuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50V2l0aFZhbGlkYXRpb24gO1xudmFyIGNsb25lRWxlbWVudCA9IGNsb25lRWxlbWVudFdpdGhWYWxpZGF0aW9uIDtcbnZhciBDaGlsZHJlbiA9IHtcbiAgbWFwOiBtYXBDaGlsZHJlbixcbiAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLFxuICBjb3VudDogY291bnRDaGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheSxcbiAgb25seTogb25seUNoaWxkXG59O1xuXG5leHBvcnRzLkNoaWxkcmVuID0gQ2hpbGRyZW47XG5leHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbmV4cG9ydHMuUHJvZmlsZXIgPSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xuZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzO1xuZXhwb3J0cy5fX1NFQ1JFVF9TRVJWRVJfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSBSZWFjdFNlcnZlclNoYXJlZEludGVybmFscztcbmV4cG9ydHMuY2FjaGUgPSBjYWNoZTtcbmV4cG9ydHMuY2xvbmVFbGVtZW50ID0gY2xvbmVFbGVtZW50O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudDtcbmV4cG9ydHMuY3JlYXRlUmVmID0gY3JlYXRlUmVmO1xuZXhwb3J0cy5jcmVhdGVTZXJ2ZXJDb250ZXh0ID0gY3JlYXRlU2VydmVyQ29udGV4dDtcbmV4cG9ydHMuZm9yd2FyZFJlZiA9IGZvcndhcmRSZWY7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBsYXp5O1xuZXhwb3J0cy5tZW1vID0gbWVtbztcbmV4cG9ydHMuc3RhcnRUcmFuc2l0aW9uID0gc3RhcnRUcmFuc2l0aW9uO1xuZXhwb3J0cy51c2UgPSB1c2U7XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2s7XG5leHBvcnRzLnVzZUNvbnRleHQgPSB1c2VDb250ZXh0O1xuZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlID0gdXNlRGVidWdWYWx1ZTtcbmV4cG9ydHMudXNlSWQgPSB1c2VJZDtcbmV4cG9ydHMudXNlTWVtbyA9IHVzZU1lbW87XG5leHBvcnRzLnZlcnNpb24gPSBSZWFjdFZlcnNpb247XG4gIH0pKCk7XG59XG4iXSwibmFtZXMiOlsicHJvY2VzcyIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSIsImN1cnJlbnQiLCJSZWFjdEN1cnJlbnRPd25lciIsIlJlYWN0RGVidWdDdXJyZW50RnJhbWUkMSIsImN1cnJlbnRFeHRyYVN0YWNrRnJhbWUiLCJzZXRFeHRyYVN0YWNrRnJhbWUiLCJzdGFjayIsImdldEN1cnJlbnRTdGFjayIsImdldFN0YWNrQWRkZW5kdW0iLCJpbXBsIiwiZW5hYmxlU2NvcGVBUEkiLCJlbmFibGVDYWNoZUVsZW1lbnQiLCJlbmFibGVUcmFuc2l0aW9uVHJhY2luZyIsImVuYWJsZUxlZ2FjeUhpZGRlbiIsImVuYWJsZURlYnVnVHJhY2luZyIsIlJlYWN0U2hhcmVkSW50ZXJuYWxzIiwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIsIlJlYWN0RGVidWdDdXJyZW50RnJhbWUiLCJ3YXJuIiwiZm9ybWF0IiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJwcmludFdhcm5pbmciLCJlcnJvciIsIl9sZW4yIiwiX2tleTIiLCJsZXZlbCIsImNvbmNhdCIsImFyZ3NXaXRoRm9ybWF0IiwibWFwIiwiaXRlbSIsIlN0cmluZyIsInVuc2hpZnQiLCJGdW5jdGlvbiIsInByb3RvdHlwZSIsImFwcGx5IiwiY2FsbCIsImNvbnNvbGUiLCJhc3NpZ24iLCJPYmplY3QiLCJSZWFjdEN1cnJlbnRDYWNoZSIsImNyZWF0ZUZldGNoQ2FjaGUiLCJNYXAiLCJzaW1wbGVDYWNoZUtleSIsImdlbmVyYXRlQ2FjaGVLZXkiLCJyZXF1ZXN0IiwiSlNPTiIsInN0cmluZ2lmeSIsIm1ldGhvZCIsImZyb20iLCJoZWFkZXJzIiwiZW50cmllcyIsIm1vZGUiLCJyZWRpcmVjdCIsImNyZWRlbnRpYWxzIiwicmVmZXJyZXIiLCJyZWZlcnJlclBvbGljeSIsImludGVncml0eSIsImZldGNoIiwib3JpZ2luYWxGZXRjaCIsImNhY2hlZEZldGNoIiwicmVzb3VyY2UiLCJvcHRpb25zIiwiZGlzcGF0Y2hlciIsInNpZ25hbCIsImdldENhY2hlU2lnbmFsIiwidXJsIiwiY2FjaGVLZXkiLCJVUkwiLCJSZXF1ZXN0Iiwia2VlcGFsaXZlIiwiY2FjaGUiLCJnZXRDYWNoZUZvclR5cGUiLCJjYWNoZUVudHJpZXMiLCJnZXQiLCJtYXRjaCIsInVuZGVmaW5lZCIsInNldCIsImkiLCJsIiwia2V5IiwidmFsdWUiLCJ0aGVuIiwicmVzcG9uc2UiLCJjbG9uZSIsInB1c2giLCJlcnJvcjEiLCJnbG9iYWxUaGlzIiwiZXJyb3IyIiwiUmVhY3RTZXJ2ZXJTaGFyZWRJbnRlcm5hbHMiLCJSZWFjdFZlcnNpb24iLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJTeW1ib2wiLCJmb3IiLCJSRUFDVF9QT1JUQUxfVFlQRSIsIlJFQUNUX0ZSQUdNRU5UX1RZUEUiLCJSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIiwiUkVBQ1RfUFJPRklMRVJfVFlQRSIsIlJFQUNUX1BST1ZJREVSX1RZUEUiLCJSRUFDVF9DT05URVhUX1RZUEUiLCJSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfVFlQRSIsIlJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSIsIlJFQUNUX01FTU9fVFlQRSIsIlJFQUNUX0xBWllfVFlQRSIsIlJFQUNUX09GRlNDUkVFTl9UWVBFIiwiUkVBQ1RfQ0FDSEVfVFlQRSIsIk1BWUJFX0lURVJBVE9SX1NZTUJPTCIsIml0ZXJhdG9yIiwiRkFVWF9JVEVSQVRPUl9TWU1CT0wiLCJnZXRJdGVyYXRvckZuIiwibWF5YmVJdGVyYWJsZSIsIm1heWJlSXRlcmF0b3IiLCJkaWRXYXJuU3RhdGVVcGRhdGVGb3JVbm1vdW50ZWRDb21wb25lbnQiLCJ3YXJuTm9vcCIsInB1YmxpY0luc3RhbmNlIiwiY2FsbGVyTmFtZSIsIl9jb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiY29tcG9uZW50TmFtZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsIndhcm5pbmdLZXkiLCJSZWFjdE5vb3BVcGRhdGVRdWV1ZSIsImlzTW91bnRlZCIsImVucXVldWVGb3JjZVVwZGF0ZSIsImNhbGxiYWNrIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImNvbXBsZXRlU3RhdGUiLCJlbnF1ZXVlU2V0U3RhdGUiLCJwYXJ0aWFsU3RhdGUiLCJlbXB0eU9iamVjdCIsImZyZWV6ZSIsIkNvbXBvbmVudCIsInByb3BzIiwiY29udGV4dCIsInVwZGF0ZXIiLCJyZWZzIiwiaXNSZWFjdENvbXBvbmVudCIsInNldFN0YXRlIiwiRXJyb3IiLCJmb3JjZVVwZGF0ZSIsImRlcHJlY2F0ZWRBUElzIiwicmVwbGFjZVN0YXRlIiwiZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nIiwibWV0aG9kTmFtZSIsImluZm8iLCJkZWZpbmVQcm9wZXJ0eSIsImZuTmFtZSIsImhhc093blByb3BlcnR5IiwiQ29tcG9uZW50RHVtbXkiLCJQdXJlQ29tcG9uZW50IiwicHVyZUNvbXBvbmVudFByb3RvdHlwZSIsImlzUHVyZVJlYWN0Q29tcG9uZW50IiwiY3JlYXRlUmVmIiwicmVmT2JqZWN0Iiwic2VhbCIsImlzQXJyYXlJbXBsIiwiaXNBcnJheSIsImEiLCJ0eXBlTmFtZSIsImhhc1RvU3RyaW5nVGFnIiwidG9TdHJpbmdUYWciLCJ0eXBlIiwid2lsbENvZXJjaW9uVGhyb3ciLCJ0ZXN0U3RyaW5nQ29lcmNpb24iLCJlIiwiY2hlY2tLZXlTdHJpbmdDb2VyY2lvbiIsImdldFdyYXBwZWROYW1lIiwib3V0ZXJUeXBlIiwiaW5uZXJUeXBlIiwid3JhcHBlck5hbWUiLCJmdW5jdGlvbk5hbWUiLCJnZXRDb250ZXh0TmFtZSIsIlJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMiIsImdldENvbXBvbmVudE5hbWVGcm9tVHlwZSIsIiQkdHlwZW9mIiwidGFnIiwicHJvdmlkZXIiLCJfY29udGV4dCIsInJlbmRlciIsIm91dGVyTmFtZSIsImxhenlDb21wb25lbnQiLCJwYXlsb2FkIiwiX3BheWxvYWQiLCJpbml0IiwiX2luaXQiLCJ4IiwiUkVTRVJWRURfUFJPUFMiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duIiwic3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24iLCJkaWRXYXJuQWJvdXRTdHJpbmdSZWZzIiwiaGFzVmFsaWRSZWYiLCJjb25maWciLCJnZXR0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpc1JlYWN0V2FybmluZyIsImhhc1ZhbGlkS2V5IiwiZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIiLCJ3YXJuQWJvdXRBY2Nlc3NpbmdLZXkiLCJjb25maWd1cmFibGUiLCJkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlciIsIndhcm5BYm91dEFjY2Vzc2luZ1JlZiIsIndhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZCIsInN0YXRlTm9kZSIsIlJlYWN0RWxlbWVudCIsInNlbGYiLCJzb3VyY2UiLCJvd25lciIsImVsZW1lbnQiLCJfb3duZXIiLCJfc3RvcmUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJjcmVhdGVFbGVtZW50JDEiLCJjaGlsZHJlbiIsInByb3BOYW1lIiwiY2hpbGRyZW5MZW5ndGgiLCJjaGlsZEFycmF5IiwiZGVmYXVsdFByb3BzIiwiY2xvbmVBbmRSZXBsYWNlS2V5Iiwib2xkRWxlbWVudCIsIm5ld0tleSIsIm5ld0VsZW1lbnQiLCJfc2VsZiIsIl9zb3VyY2UiLCJjbG9uZUVsZW1lbnQkMSIsImlzVmFsaWRFbGVtZW50Iiwib2JqZWN0IiwiU0VQQVJBVE9SIiwiU1VCU0VQQVJBVE9SIiwiZXNjYXBlIiwiZXNjYXBlUmVnZXgiLCJlc2NhcGVyTG9va3VwIiwiZXNjYXBlZFN0cmluZyIsInJlcGxhY2UiLCJkaWRXYXJuQWJvdXRNYXBzIiwidXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgiLCJlc2NhcGVVc2VyUHJvdmlkZWRLZXkiLCJ0ZXh0IiwiZ2V0RWxlbWVudEtleSIsImluZGV4IiwidG9TdHJpbmciLCJtYXBJbnRvQXJyYXkiLCJhcnJheSIsImVzY2FwZWRQcmVmaXgiLCJuYW1lU29GYXIiLCJpbnZva2VDYWxsYmFjayIsIl9jaGlsZCIsIm1hcHBlZENoaWxkIiwiY2hpbGRLZXkiLCJlc2NhcGVkQ2hpbGRLZXkiLCJjIiwiY2hpbGQiLCJuZXh0TmFtZSIsInN1YnRyZWVDb3VudCIsIm5leHROYW1lUHJlZml4IiwiaXRlcmF0b3JGbiIsIml0ZXJhYmxlQ2hpbGRyZW4iLCJzdGVwIiwiaWkiLCJuZXh0IiwiZG9uZSIsImNoaWxkcmVuU3RyaW5nIiwia2V5cyIsImpvaW4iLCJtYXBDaGlsZHJlbiIsImZ1bmMiLCJyZXN1bHQiLCJjb3VudCIsImNvdW50Q2hpbGRyZW4iLCJuIiwiZm9yRWFjaENoaWxkcmVuIiwiZm9yRWFjaEZ1bmMiLCJmb3JFYWNoQ29udGV4dCIsInRvQXJyYXkiLCJvbmx5Q2hpbGQiLCJVbmluaXRpYWxpemVkIiwiUGVuZGluZyIsIlJlc29sdmVkIiwiUmVqZWN0ZWQiLCJsYXp5SW5pdGlhbGl6ZXIiLCJfc3RhdHVzIiwiY3RvciIsIl9yZXN1bHQiLCJ0aGVuYWJsZSIsIm1vZHVsZU9iamVjdCIsInJlc29sdmVkIiwicmVqZWN0ZWQiLCJwZW5kaW5nIiwiZGVmYXVsdCIsImxhenkiLCJsYXp5VHlwZSIsInByb3BUeXBlcyIsImRlZmluZVByb3BlcnRpZXMiLCJuZXdEZWZhdWx0UHJvcHMiLCJuZXdQcm9wVHlwZXMiLCJmb3J3YXJkUmVmIiwiZWxlbWVudFR5cGUiLCJvd25OYW1lIiwiUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQxIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwiZ2V0TW9kdWxlSWQiLCJtZW1vIiwiY29tcGFyZSIsIlVOVEVSTUlOQVRFRCIsIlRFUk1JTkFURUQiLCJFUlJPUkVEIiwiY3JlYXRlQ2FjaGVSb290IiwiV2Vha01hcCIsImNyZWF0ZUNhY2hlTm9kZSIsInMiLCJ2IiwibyIsInAiLCJmbiIsImZuTWFwIiwiZm5Ob2RlIiwiY2FjaGVOb2RlIiwiYXJnIiwib2JqZWN0Q2FjaGUiLCJvYmplY3ROb2RlIiwicHJpbWl0aXZlQ2FjaGUiLCJwcmltaXRpdmVOb2RlIiwidGVybWluYXRlZE5vZGUiLCJlcnJvcmVkTm9kZSIsInJlc29sdmVEaXNwYXRjaGVyIiwidXNlQ29udGV4dCIsIkNvbnRleHQiLCJyZWFsQ29udGV4dCIsIkNvbnN1bWVyIiwiUHJvdmlkZXIiLCJ1c2VDYWxsYmFjayIsImRlcHMiLCJ1c2VNZW1vIiwiY3JlYXRlIiwidXNlRGVidWdWYWx1ZSIsImZvcm1hdHRlckZuIiwidXNlSWQiLCJ1c2UiLCJ1c2FibGUiLCJkaXNhYmxlZERlcHRoIiwicHJldkxvZyIsInByZXZJbmZvIiwicHJldldhcm4iLCJwcmV2RXJyb3IiLCJwcmV2R3JvdXAiLCJwcmV2R3JvdXBDb2xsYXBzZWQiLCJwcmV2R3JvdXBFbmQiLCJkaXNhYmxlZExvZyIsIl9fcmVhY3REaXNhYmxlZExvZyIsImRpc2FibGVMb2dzIiwibG9nIiwiZ3JvdXAiLCJncm91cENvbGxhcHNlZCIsImdyb3VwRW5kIiwicmVlbmFibGVMb2dzIiwicHJlZml4IiwiZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUiLCJvd25lckZuIiwidHJpbSIsInJlZW50cnkiLCJjb21wb25lbnRGcmFtZUNhY2hlIiwiUG9zc2libHlXZWFrTWFwIiwiZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSIsImNvbnN0cnVjdCIsImZyYW1lIiwicHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSIsInByZXBhcmVTdGFja1RyYWNlIiwicHJldmlvdXNEaXNwYXRjaGVyIiwiUnVuSW5Sb290RnJhbWUiLCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QiLCJjb250cm9sIiwiRmFrZSIsIlJlZmxlY3QiLCJtYXliZVByb21pc2UiLCJjYXRjaCIsInNhbXBsZSIsIm5hbWVQcm9wRGVzY3JpcHRvciIsIl9SdW5JblJvb3RGcmFtZSREZXRlciIsInNhbXBsZVN0YWNrIiwiY29udHJvbFN0YWNrIiwic2FtcGxlTGluZXMiLCJzcGxpdCIsImNvbnRyb2xMaW5lcyIsImluY2x1ZGVzIiwiX2ZyYW1lIiwic3ludGhldGljRnJhbWUiLCJkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUiLCJzaG91bGRDb25zdHJ1Y3QiLCJkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYiLCJsb2dnZWRUeXBlRmFpbHVyZXMiLCJzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxIiwiY2hlY2tQcm9wVHlwZXMiLCJ0eXBlU3BlY3MiLCJ2YWx1ZXMiLCJsb2NhdGlvbiIsImhhcyIsImJpbmQiLCJ0eXBlU3BlY05hbWUiLCJlcnJvciQxIiwiZXJyIiwiZXgiLCJtZXNzYWdlIiwiUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSIsInNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50IiwicHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24iLCJnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0iLCJnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtRm9yUHJvcHMiLCJlbGVtZW50UHJvcHMiLCJvd25lckhhc0tleVVzZVdhcm5pbmciLCJnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvIiwicGFyZW50VHlwZSIsInBhcmVudE5hbWUiLCJ2YWxpZGF0ZUV4cGxpY2l0S2V5IiwidmFsaWRhdGVkIiwiY3VycmVudENvbXBvbmVudEVycm9ySW5mbyIsImNoaWxkT3duZXIiLCJ2YWxpZGF0ZUNoaWxkS2V5cyIsIm5vZGUiLCJ2YWxpZGF0ZVByb3BUeXBlcyIsIlByb3BUeXBlcyIsIl9uYW1lIiwiZ2V0RGVmYXVsdFByb3BzIiwiaXNSZWFjdENsYXNzQXBwcm92ZWQiLCJ2YWxpZGF0ZUZyYWdtZW50UHJvcHMiLCJmcmFnbWVudCIsImNyZWF0ZUVsZW1lbnRXaXRoVmFsaWRhdGlvbiIsInZhbGlkVHlwZSIsInNvdXJjZUluZm8iLCJ0eXBlU3RyaW5nIiwiY2xvbmVFbGVtZW50V2l0aFZhbGlkYXRpb24iLCJjcmVhdGVTZXJ2ZXJDb250ZXh0IiwiZ2xvYmFsTmFtZSIsImRlZmF1bHRWYWx1ZSIsIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnIiwidHJhbnNpdGlvbiIsInN0YXJ0VHJhbnNpdGlvbiIsInNjb3BlIiwicHJldlRyYW5zaXRpb24iLCJjdXJyZW50VHJhbnNpdGlvbiIsIl91cGRhdGVkRmliZXJzIiwiU2V0IiwidXBkYXRlZEZpYmVyc0NvdW50Iiwic2l6ZSIsImNsZWFyIiwiY3JlYXRlRWxlbWVudCIsImNsb25lRWxlbWVudCIsIkNoaWxkcmVuIiwiZm9yRWFjaCIsIm9ubHkiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJQcm9maWxlciIsIlN0cmljdE1vZGUiLCJTdXNwZW5zZSIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiX19TRUNSRVRfU0VSVkVSX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwidmVyc2lvbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react/cjs/react.shared-subset.development.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react/index.js":
/*!********************************************************!*\
!*** ./node_modules/next/dist/compiled/react/index.js ***!
\********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react/cjs/react.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBRUEsSUFBSUEsS0FBeUIsRUFBYyxFQUUxQyxNQUFNO0lBQ0xDLGdKQUF5QjtBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzP2RlMzciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvY2VzcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXF1aXJlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/react/react.shared-subset.js":
/*!**********************************************************************!*\
!*** ./node_modules/next/dist/compiled/react/react.shared-subset.js ***!
\**********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react.shared-subset.development.js */ \"(rsc)/./node_modules/next/dist/compiled/react/cjs/react.shared-subset.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L3JlYWN0LnNoYXJlZC1zdWJzZXQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxJQUFJQSxLQUF5QixFQUFjLEVBRTFDLE1BQU07SUFDTEMsNEtBQXlCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvcmVhY3Quc2hhcmVkLXN1YnNldC5qcz9jNjIyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5zaGFyZWQtc3Vic2V0LnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnNoYXJlZC1zdWJzZXQuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/react/react.shared-subset.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js":
/*!*******************************************************************!*\
!*** ./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js ***!
\*******************************************************************/
/***/ ((module, exports, __webpack_require__) => {
"use strict";
eval("var __dirname = \"/\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n(()=>{\n var i = {\n 226: function(i, e) {\n (function(o, a) {\n \"use strict\";\n var r = \"1.0.35\", t = \"\", n = \"?\", s = \"function\", b = \"undefined\", w = \"object\", l = \"string\", d = \"major\", c = \"model\", u = \"name\", p = \"type\", m = \"vendor\", f = \"version\", h = \"architecture\", v = \"console\", g = \"mobile\", k = \"tablet\", x = \"smarttv\", _ = \"wearable\", y = \"embedded\", q = 350;\n var T = \"Amazon\", S = \"Apple\", z = \"ASUS\", N = \"BlackBerry\", A = \"Browser\", C = \"Chrome\", E = \"Edge\", O = \"Firefox\", U = \"Google\", j = \"Huawei\", P = \"LG\", R = \"Microsoft\", M = \"Motorola\", B = \"Opera\", V = \"Samsung\", D = \"Sharp\", I = \"Sony\", W = \"Viera\", F = \"Xiaomi\", G = \"Zebra\", H = \"Facebook\", L = \"Chromium OS\", Z = \"Mac OS\";\n var extend = function(i, e) {\n var o = {};\n for(var a in i){\n if (e[a] && e[a].length % 2 === 0) {\n o[a] = e[a].concat(i[a]);\n } else {\n o[a] = i[a];\n }\n }\n return o;\n }, enumerize = function(i) {\n var e = {};\n for(var o = 0; o < i.length; o++){\n e[i[o].toUpperCase()] = i[o];\n }\n return e;\n }, has = function(i, e) {\n return typeof i === l ? lowerize(e).indexOf(lowerize(i)) !== -1 : false;\n }, lowerize = function(i) {\n return i.toLowerCase();\n }, majorize = function(i) {\n return typeof i === l ? i.replace(/[^\\d\\.]/g, t).split(\".\")[0] : a;\n }, trim = function(i, e) {\n if (typeof i === l) {\n i = i.replace(/^\\s\\s*/, t);\n return typeof e === b ? i : i.substring(0, q);\n }\n };\n var rgxMapper = function(i, e) {\n var o = 0, r, t, n, b, l, d;\n while(o < e.length && !l){\n var c = e[o], u = e[o + 1];\n r = t = 0;\n while(r < c.length && !l){\n if (!c[r]) {\n break;\n }\n l = c[r++].exec(i);\n if (!!l) {\n for(n = 0; n < u.length; n++){\n d = l[++t];\n b = u[n];\n if (typeof b === w && b.length > 0) {\n if (b.length === 2) {\n if (typeof b[1] == s) {\n this[b[0]] = b[1].call(this, d);\n } else {\n this[b[0]] = b[1];\n }\n } else if (b.length === 3) {\n if (typeof b[1] === s && !(b[1].exec && b[1].test)) {\n this[b[0]] = d ? b[1].call(this, d, b[2]) : a;\n } else {\n this[b[0]] = d ? d.replace(b[1], b[2]) : a;\n }\n } else if (b.length === 4) {\n this[b[0]] = d ? b[3].call(this, d.replace(b[1], b[2])) : a;\n }\n } else {\n this[b] = d ? d : a;\n }\n }\n }\n }\n o += 2;\n }\n }, strMapper = function(i, e) {\n for(var o in e){\n if (typeof e[o] === w && e[o].length > 0) {\n for(var r = 0; r < e[o].length; r++){\n if (has(e[o][r], i)) {\n return o === n ? a : o;\n }\n }\n } else if (has(e[o], i)) {\n return o === n ? a : o;\n }\n }\n return i;\n };\n var $ = {\n \"1.0\": \"/8\",\n 1.2: \"/1\",\n 1.3: \"/3\",\n \"2.0\": \"/412\",\n \"2.0.2\": \"/416\",\n \"2.0.3\": \"/417\",\n \"2.0.4\": \"/419\",\n \"?\": \"/\"\n }, X = {\n ME: \"4.90\",\n \"NT 3.11\": \"NT3.51\",\n \"NT 4.0\": \"NT4.0\",\n 2e3: \"NT 5.0\",\n XP: [\n \"NT 5.1\",\n \"NT 5.2\"\n ],\n Vista: \"NT 6.0\",\n 7: \"NT 6.1\",\n 8: \"NT 6.2\",\n 8.1: \"NT 6.3\",\n 10: [\n \"NT 6.4\",\n \"NT 10.0\"\n ],\n RT: \"ARM\"\n };\n var K = {\n browser: [\n [\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Chrome\"\n ]\n ],\n [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Edge\"\n ]\n ],\n [\n /(opera mini)\\/([-\\w\\.]+)/i,\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /opios[\\/ ]+([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n B + \" Mini\"\n ]\n ],\n [\n /\\bopr\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n B\n ]\n ],\n [\n /(kindle)\\/([\\w\\.]+)/i,\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i,\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i,\n /(?:ms|\\()(ie) ([\\w\\.]+)/i,\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n /(heytap|ovi)browser\\/([\\d\\.]+)/i,\n /(weibo)__([\\d\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"UC\" + A\n ]\n ],\n [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i,\n /\\bqbcore\\/([\\w\\.]+).+microm/i\n ],\n [\n f,\n [\n u,\n \"WeChat(Win) Desktop\"\n ]\n ],\n [\n /micromessenger\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"WeChat\"\n ]\n ],\n [\n /konqueror\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Konqueror\"\n ]\n ],\n [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i\n ],\n [\n f,\n [\n u,\n \"IE\"\n ]\n ],\n [\n /ya(?:search)?browser\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Yandex\"\n ]\n ],\n [\n /(avast|avg)\\/([\\w\\.]+)/i\n ],\n [\n [\n u,\n /(.+)/,\n \"$1 Secure \" + A\n ],\n f\n ],\n [\n /\\bfocus\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n O + \" Focus\"\n ]\n ],\n [\n /\\bopt\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n B + \" Touch\"\n ]\n ],\n [\n /coc_coc\\w+\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Coc Coc\"\n ]\n ],\n [\n /dolfin\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Dolphin\"\n ]\n ],\n [\n /coast\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n B + \" Coast\"\n ]\n ],\n [\n /miuibrowser\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"MIUI \" + A\n ]\n ],\n [\n /fxios\\/([-\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n O\n ]\n ],\n [\n /\\bqihu|(qi?ho?o?|360)browser/i\n ],\n [\n [\n u,\n \"360 \" + A\n ]\n ],\n [\n /(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i\n ],\n [\n [\n u,\n /(.+)/,\n \"$1 \" + A\n ],\n f\n ],\n [\n /(comodo_dragon)\\/([\\w\\.]+)/i\n ],\n [\n [\n u,\n /_/g,\n \" \"\n ],\n f\n ],\n [\n /(electron)\\/([\\w\\.]+) safari/i,\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /(metasr)[\\/ ]?([\\w\\.]+)/i,\n /(lbbrowser)/i,\n /\\[(linkedin)app\\]/i\n ],\n [\n u\n ],\n [\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i\n ],\n [\n [\n u,\n H\n ],\n f\n ],\n [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,\n /safari (line)\\/([\\w\\.]+)/i,\n /\\b(line)\\/([\\w\\.]+)\\/iab/i,\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i\n ],\n [\n f,\n [\n u,\n \"GSA\"\n ]\n ],\n [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"TikTok\"\n ]\n ],\n [\n /headlesschrome(?:\\/([\\w\\.]+)| )/i\n ],\n [\n f,\n [\n u,\n C + \" Headless\"\n ]\n ],\n [\n / wv\\).+(chrome)\\/([\\w\\.]+)/i\n ],\n [\n [\n u,\n C + \" WebView\"\n ],\n f\n ],\n [\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i\n ],\n [\n f,\n [\n u,\n \"Android \" + A\n ]\n ],\n [\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i\n ],\n [\n f,\n [\n u,\n \"Mobile Safari\"\n ]\n ],\n [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i\n ],\n [\n f,\n u\n ],\n [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i\n ],\n [\n u,\n [\n f,\n strMapper,\n $\n ]\n ],\n [\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ],\n [\n u,\n f\n ],\n [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i\n ],\n [\n [\n u,\n \"Netscape\"\n ],\n f\n ],\n [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i\n ],\n [\n f,\n [\n u,\n O + \" Reality\"\n ]\n ],\n [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i,\n /(swiftfox)/i,\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n /(firefox)\\/([\\w\\.]+)/i,\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n /(links) \\(([\\w\\.]+)/i,\n /panasonic;(viera)/i\n ],\n [\n u,\n f\n ],\n [\n /(cobalt)\\/([\\w\\.]+)/i\n ],\n [\n u,\n [\n f,\n /master.|lts./,\n \"\"\n ]\n ]\n ],\n cpu: [\n [\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i\n ],\n [\n [\n h,\n \"amd64\"\n ]\n ],\n [\n /(ia32(?=;))/i\n ],\n [\n [\n h,\n lowerize\n ]\n ],\n [\n /((?:i[346]|x)86)[;\\)]/i\n ],\n [\n [\n h,\n \"ia32\"\n ]\n ],\n [\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i\n ],\n [\n [\n h,\n \"arm64\"\n ]\n ],\n [\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i\n ],\n [\n [\n h,\n \"armhf\"\n ]\n ],\n [\n /windows (ce|mobile); ppc;/i\n ],\n [\n [\n h,\n \"arm\"\n ]\n ],\n [\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i\n ],\n [\n [\n h,\n /ower/,\n t,\n lowerize\n ]\n ],\n [\n /(sun4\\w)[;\\)]/i\n ],\n [\n [\n h,\n \"sparc\"\n ]\n ],\n [\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n ],\n [\n [\n h,\n lowerize\n ]\n ]\n ],\n device: [\n [\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ],\n [\n c,\n [\n m,\n V\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ],\n [\n c,\n [\n m,\n V\n ],\n [\n p,\n g\n ]\n ],\n [\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i\n ],\n [\n c,\n [\n m,\n S\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\((ipad);[-\\w\\),; ]+apple/i,\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ],\n [\n c,\n [\n m,\n S\n ],\n [\n p,\n k\n ]\n ],\n [\n /(macintosh);/i\n ],\n [\n c,\n [\n m,\n S\n ]\n ],\n [\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ],\n [\n c,\n [\n m,\n D\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ],\n [\n c,\n [\n m,\n j\n ],\n [\n p,\n k\n ]\n ],\n [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ],\n [\n c,\n [\n m,\n j\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(poco[\\w ]+)(?: bui|\\))/i,\n /\\b; (\\w+) build\\/hm\\1/i,\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i\n ],\n [\n [\n c,\n /_/g,\n \" \"\n ],\n [\n m,\n F\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i\n ],\n [\n [\n c,\n /_/g,\n \" \"\n ],\n [\n m,\n F\n ],\n [\n p,\n k\n ]\n ],\n [\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ],\n [\n c,\n [\n m,\n \"OPPO\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ],\n [\n c,\n [\n m,\n \"Vivo\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ],\n [\n c,\n [\n m,\n \"Realme\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ],\n [\n c,\n [\n m,\n M\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ],\n [\n c,\n [\n m,\n M\n ],\n [\n p,\n k\n ]\n ],\n [\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ],\n [\n c,\n [\n m,\n P\n ],\n [\n p,\n k\n ]\n ],\n [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ],\n [\n c,\n [\n m,\n P\n ],\n [\n p,\n g\n ]\n ],\n [\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ],\n [\n c,\n [\n m,\n \"Lenovo\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ],\n [\n [\n c,\n /_/g,\n \" \"\n ],\n [\n m,\n \"Nokia\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /(pixel c)\\b/i\n ],\n [\n c,\n [\n m,\n U\n ],\n [\n p,\n k\n ]\n ],\n [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i\n ],\n [\n c,\n [\n m,\n U\n ],\n [\n p,\n g\n ]\n ],\n [\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ],\n [\n c,\n [\n m,\n I\n ],\n [\n p,\n g\n ]\n ],\n [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ],\n [\n [\n c,\n \"Xperia Tablet\"\n ],\n [\n m,\n I\n ],\n [\n p,\n k\n ]\n ],\n [\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ],\n [\n c,\n [\n m,\n \"OnePlus\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,\n /(kf[a-z]+)( bui|\\)).+silk\\//i\n ],\n [\n c,\n [\n m,\n T\n ],\n [\n p,\n k\n ]\n ],\n [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i\n ],\n [\n [\n c,\n /(.+)/g,\n \"Fire Phone $1\"\n ],\n [\n m,\n T\n ],\n [\n p,\n g\n ]\n ],\n [\n /(playbook);[-\\w\\),; ]+(rim)/i\n ],\n [\n c,\n m,\n [\n p,\n k\n ]\n ],\n [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i\n ],\n [\n c,\n [\n m,\n N\n ],\n [\n p,\n g\n ]\n ],\n [\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ],\n [\n c,\n [\n m,\n z\n ],\n [\n p,\n k\n ]\n ],\n [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ],\n [\n c,\n [\n m,\n z\n ],\n [\n p,\n g\n ]\n ],\n [\n /(nexus 9)/i\n ],\n [\n c,\n [\n m,\n \"HTC\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i\n ],\n [\n m,\n [\n c,\n /_/g,\n \" \"\n ],\n [\n p,\n g\n ]\n ],\n [\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ],\n [\n c,\n [\n m,\n \"Acer\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ],\n [\n c,\n [\n m,\n \"Meizu\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n /(hp) ([\\w ]+\\w)/i,\n /(asus)-?(\\w+)/i,\n /(microsoft); (lumia[\\w ]+)/i,\n /(lenovo)[-_ ]?([-\\w]+)/i,\n /(jolla)/i,\n /(oppo) ?([\\w ]+) bui/i\n ],\n [\n m,\n c,\n [\n p,\n g\n ]\n ],\n [\n /(kobo)\\s(ereader|touch)/i,\n /(archos) (gamepad2?)/i,\n /(hp).+(touchpad(?!.+tablet)|tablet)/i,\n /(kindle)\\/([\\w\\.]+)/i,\n /(nook)[\\w ]+build\\/(\\w+)/i,\n /(dell) (strea[kpr\\d ]*[\\dko])/i,\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,\n /(trinity)[- ]*(t\\d{3}) bui/i,\n /(gigaset)[- ]+(q\\w{1,9}) bui/i,\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i\n ],\n [\n m,\n c,\n [\n p,\n k\n ]\n ],\n [\n /(surface duo)/i\n ],\n [\n c,\n [\n m,\n R\n ],\n [\n p,\n k\n ]\n ],\n [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i\n ],\n [\n c,\n [\n m,\n \"Fairphone\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /(u304aa)/i\n ],\n [\n c,\n [\n m,\n \"AT&T\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\bsie-(\\w*)/i\n ],\n [\n c,\n [\n m,\n \"Siemens\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(rct\\w+) b/i\n ],\n [\n c,\n [\n m,\n \"RCA\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(venue[\\d ]{2,7}) b/i\n ],\n [\n c,\n [\n m,\n \"Dell\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(q(?:mv|ta)\\w+) b/i\n ],\n [\n c,\n [\n m,\n \"Verizon\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i\n ],\n [\n c,\n [\n m,\n \"Barnes & Noble\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(tm\\d{3}\\w+) b/i\n ],\n [\n c,\n [\n m,\n \"NuVision\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(k88) b/i\n ],\n [\n c,\n [\n m,\n \"ZTE\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(nx\\d{3}j) b/i\n ],\n [\n c,\n [\n m,\n \"ZTE\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(gen\\d{3}) b.+49h/i\n ],\n [\n c,\n [\n m,\n \"Swiss\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(zur\\d{3}) b/i\n ],\n [\n c,\n [\n m,\n \"Swiss\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b((zeki)?tb.*\\b) b/i\n ],\n [\n c,\n [\n m,\n \"Zeki\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i\n ],\n [\n [\n m,\n \"Dragon Touch\"\n ],\n c,\n [\n p,\n k\n ]\n ],\n [\n /\\b(ns-?\\w{0,9}) b/i\n ],\n [\n c,\n [\n m,\n \"Insignia\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b((nxa|next)-?\\w{0,9}) b/i\n ],\n [\n c,\n [\n m,\n \"NextBook\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i\n ],\n [\n [\n m,\n \"Voice\"\n ],\n c,\n [\n p,\n g\n ]\n ],\n [\n /\\b(lvtel\\-)?(v1[12]) b/i\n ],\n [\n [\n m,\n \"LvTel\"\n ],\n c,\n [\n p,\n g\n ]\n ],\n [\n /\\b(ph-1) /i\n ],\n [\n c,\n [\n m,\n \"Essential\"\n ],\n [\n p,\n g\n ]\n ],\n [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i\n ],\n [\n c,\n [\n m,\n \"Envizen\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\b(trio[-\\w\\. ]+) b/i\n ],\n [\n c,\n [\n m,\n \"MachSpeed\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /\\btu_(1491) b/i\n ],\n [\n c,\n [\n m,\n \"Rotor\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /(shield[\\w ]+) b/i\n ],\n [\n c,\n [\n m,\n \"Nvidia\"\n ],\n [\n p,\n k\n ]\n ],\n [\n /(sprint) (\\w+)/i\n ],\n [\n m,\n c,\n [\n p,\n g\n ]\n ],\n [\n /(kin\\.[onetw]{3})/i\n ],\n [\n [\n c,\n /\\./g,\n \" \"\n ],\n [\n m,\n R\n ],\n [\n p,\n g\n ]\n ],\n [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i\n ],\n [\n c,\n [\n m,\n G\n ],\n [\n p,\n k\n ]\n ],\n [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ],\n [\n c,\n [\n m,\n G\n ],\n [\n p,\n g\n ]\n ],\n [\n /smart-tv.+(samsung)/i\n ],\n [\n m,\n [\n p,\n x\n ]\n ],\n [\n /hbbtv.+maple;(\\d+)/i\n ],\n [\n [\n c,\n /^/,\n \"SmartTV\"\n ],\n [\n m,\n V\n ],\n [\n p,\n x\n ]\n ],\n [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ],\n [\n [\n m,\n P\n ],\n [\n p,\n x\n ]\n ],\n [\n /(apple) ?tv/i\n ],\n [\n m,\n [\n c,\n S + \" TV\"\n ],\n [\n p,\n x\n ]\n ],\n [\n /crkey/i\n ],\n [\n [\n c,\n C + \"cast\"\n ],\n [\n m,\n U\n ],\n [\n p,\n x\n ]\n ],\n [\n /droid.+aft(\\w)( bui|\\))/i\n ],\n [\n c,\n [\n m,\n T\n ],\n [\n p,\n x\n ]\n ],\n [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i\n ],\n [\n c,\n [\n m,\n D\n ],\n [\n p,\n x\n ]\n ],\n [\n /(bravia[\\w ]+)( bui|\\))/i\n ],\n [\n c,\n [\n m,\n I\n ],\n [\n p,\n x\n ]\n ],\n [\n /(mitv-\\w{5}) bui/i\n ],\n [\n c,\n [\n m,\n F\n ],\n [\n p,\n x\n ]\n ],\n [\n /Hbbtv.*(technisat) (.*);/i\n ],\n [\n m,\n c,\n [\n p,\n x\n ]\n ],\n [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i\n ],\n [\n [\n m,\n trim\n ],\n [\n c,\n trim\n ],\n [\n p,\n x\n ]\n ],\n [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n ],\n [\n [\n p,\n x\n ]\n ],\n [\n /(ouya)/i,\n /(nintendo) ([wids3utch]+)/i\n ],\n [\n m,\n c,\n [\n p,\n v\n ]\n ],\n [\n /droid.+; (shield) bui/i\n ],\n [\n c,\n [\n m,\n \"Nvidia\"\n ],\n [\n p,\n v\n ]\n ],\n [\n /(playstation [345portablevi]+)/i\n ],\n [\n c,\n [\n m,\n I\n ],\n [\n p,\n v\n ]\n ],\n [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i\n ],\n [\n c,\n [\n m,\n R\n ],\n [\n p,\n v\n ]\n ],\n [\n /((pebble))app/i\n ],\n [\n m,\n c,\n [\n p,\n _\n ]\n ],\n [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i\n ],\n [\n c,\n [\n m,\n S\n ],\n [\n p,\n _\n ]\n ],\n [\n /droid.+; (glass) \\d/i\n ],\n [\n c,\n [\n m,\n U\n ],\n [\n p,\n _\n ]\n ],\n [\n /droid.+; (wt63?0{2,3})\\)/i\n ],\n [\n c,\n [\n m,\n G\n ],\n [\n p,\n _\n ]\n ],\n [\n /(quest( 2| pro)?)/i\n ],\n [\n c,\n [\n m,\n H\n ],\n [\n p,\n _\n ]\n ],\n [\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i\n ],\n [\n m,\n [\n p,\n y\n ]\n ],\n [\n /(aeobc)\\b/i\n ],\n [\n c,\n [\n m,\n T\n ],\n [\n p,\n y\n ]\n ],\n [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i\n ],\n [\n c,\n [\n p,\n g\n ]\n ],\n [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i\n ],\n [\n c,\n [\n p,\n k\n ]\n ],\n [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i\n ],\n [\n [\n p,\n k\n ]\n ],\n [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i\n ],\n [\n [\n p,\n g\n ]\n ],\n [\n /(android[-\\w\\. ]{0,9});.+buil/i\n ],\n [\n c,\n [\n m,\n \"Generic\"\n ]\n ]\n ],\n engine: [\n [\n /windows.+ edge\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n E + \"HTML\"\n ]\n ],\n [\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"Blink\"\n ]\n ],\n [\n /(presto)\\/([\\w\\.]+)/i,\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,\n /ekioh(flow)\\/([\\w\\.]+)/i,\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,\n /\\b(libweb)/i\n ],\n [\n u,\n f\n ],\n [\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i\n ],\n [\n f,\n u\n ]\n ],\n os: [\n [\n /microsoft (windows) (vista|xp)/i\n ],\n [\n u,\n f\n ],\n [\n /(windows) nt 6\\.2; (arm)/i,\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i,\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ],\n [\n u,\n [\n f,\n strMapper,\n X\n ]\n ],\n [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ],\n [\n [\n u,\n \"Windows\"\n ],\n [\n f,\n strMapper,\n X\n ]\n ],\n [\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,\n /ios;fbsv\\/([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ],\n [\n [\n f,\n /_/g,\n \".\"\n ],\n [\n u,\n \"iOS\"\n ]\n ],\n [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i\n ],\n [\n [\n u,\n Z\n ],\n [\n f,\n /_/g,\n \".\"\n ]\n ],\n [\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i\n ],\n [\n f,\n u\n ],\n [\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i,\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i,\n /\\((series40);/i\n ],\n [\n u,\n f\n ],\n [\n /\\(bb(10);/i\n ],\n [\n f,\n [\n u,\n N\n ]\n ],\n [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i\n ],\n [\n f,\n [\n u,\n \"Symbian\"\n ]\n ],\n [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n O + \" OS\"\n ]\n ],\n [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"webOS\"\n ]\n ],\n [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i\n ],\n [\n f,\n [\n u,\n \"watchOS\"\n ]\n ],\n [\n /crkey\\/([\\d\\.]+)/i\n ],\n [\n f,\n [\n u,\n C + \"cast\"\n ]\n ],\n [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i\n ],\n [\n [\n u,\n L\n ],\n f\n ],\n [\n /panasonic;(viera)/i,\n /(netrange)mmh/i,\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,\n /(nintendo|playstation) ([wids345portablevuch]+)/i,\n /(xbox); +xbox ([^\\);]+)/i,\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,\n /(mint)[\\/\\(\\) ]?(\\w*)/i,\n /(mageia|vectorlinux)[; ]/i,\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n /(hurd|linux) ?([\\w\\.]*)/i,\n /(gnu) ?([\\w\\.]*)/i,\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,\n /(haiku) (\\w+)/i\n ],\n [\n u,\n f\n ],\n [\n /(sunos) ?([\\w\\.\\d]*)/i\n ],\n [\n [\n u,\n \"Solaris\"\n ],\n f\n ],\n [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,\n /(unix) ?([\\w\\.]*)/i\n ],\n [\n u,\n f\n ]\n ]\n };\n var UAParser = function(i, e) {\n if (typeof i === w) {\n e = i;\n i = a;\n }\n if (!(this instanceof UAParser)) {\n return new UAParser(i, e).getResult();\n }\n var r = typeof o !== b && o.navigator ? o.navigator : a;\n var n = i || (r && r.userAgent ? r.userAgent : t);\n var v = r && r.userAgentData ? r.userAgentData : a;\n var x = e ? extend(K, e) : K;\n var _ = r && r.userAgent == n;\n this.getBrowser = function() {\n var i = {};\n i[u] = a;\n i[f] = a;\n rgxMapper.call(i, n, x.browser);\n i[d] = majorize(i[f]);\n if (_ && r && r.brave && typeof r.brave.isBrave == s) {\n i[u] = \"Brave\";\n }\n return i;\n };\n this.getCPU = function() {\n var i = {};\n i[h] = a;\n rgxMapper.call(i, n, x.cpu);\n return i;\n };\n this.getDevice = function() {\n var i = {};\n i[m] = a;\n i[c] = a;\n i[p] = a;\n rgxMapper.call(i, n, x.device);\n if (_ && !i[p] && v && v.mobile) {\n i[p] = g;\n }\n if (_ && i[c] == \"Macintosh\" && r && typeof r.standalone !== b && r.maxTouchPoints && r.maxTouchPoints > 2) {\n i[c] = \"iPad\";\n i[p] = k;\n }\n return i;\n };\n this.getEngine = function() {\n var i = {};\n i[u] = a;\n i[f] = a;\n rgxMapper.call(i, n, x.engine);\n return i;\n };\n this.getOS = function() {\n var i = {};\n i[u] = a;\n i[f] = a;\n rgxMapper.call(i, n, x.os);\n if (_ && !i[u] && v && v.platform != \"Unknown\") {\n i[u] = v.platform.replace(/chrome os/i, L).replace(/macos/i, Z);\n }\n return i;\n };\n this.getResult = function() {\n return {\n ua: this.getUA(),\n browser: this.getBrowser(),\n engine: this.getEngine(),\n os: this.getOS(),\n device: this.getDevice(),\n cpu: this.getCPU()\n };\n };\n this.getUA = function() {\n return n;\n };\n this.setUA = function(i) {\n n = typeof i === l && i.length > q ? trim(i, q) : i;\n return this;\n };\n this.setUA(n);\n return this;\n };\n UAParser.VERSION = r;\n UAParser.BROWSER = enumerize([\n u,\n f,\n d\n ]);\n UAParser.CPU = enumerize([\n h\n ]);\n UAParser.DEVICE = enumerize([\n c,\n m,\n p,\n v,\n g,\n x,\n k,\n _,\n y\n ]);\n UAParser.ENGINE = UAParser.OS = enumerize([\n u,\n f\n ]);\n if (typeof e !== b) {\n if (\"object\" !== b && i.exports) {\n e = i.exports = UAParser;\n }\n e.UAParser = UAParser;\n } else {\n if (\"function\" === s && __webpack_require__.amdO) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n return UAParser;\n }).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof o !== b) {\n o.UAParser = UAParser;\n }\n }\n var Q = typeof o !== b && (o.jQuery || o.Zepto);\n if (Q && !Q.ua) {\n var Y = new UAParser;\n Q.ua = Y.getResult();\n Q.ua.get = function() {\n return Y.getUA();\n };\n Q.ua.set = function(i) {\n Y.setUA(i);\n var e = Y.getResult();\n for(var o in e){\n Q.ua[o] = e[o];\n }\n };\n }\n })( false ? 0 : this);\n }\n };\n var e = {};\n function __nccwpck_require__(o) {\n var a = e[o];\n if (a !== undefined) {\n return a.exports;\n }\n var r = e[o] = {\n exports: {}\n };\n var t = true;\n try {\n i[o].call(r.exports, r, r.exports, __nccwpck_require__);\n t = false;\n } finally{\n if (t) delete e[o];\n }\n return r.exports;\n }\n if (typeof __nccwpck_require__ !== \"undefined\") __nccwpck_require__.ab = __dirname + \"/\";\n var o = __nccwpck_require__(226);\n module.exports = o;\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3VhLXBhcnNlci1qcy91YS1wYXJzZXIuanMiLCJtYXBwaW5ncyI6Ijs7QUFBQztJQUFLLElBQUlBLElBQUU7UUFBQyxLQUFJLFNBQVNBLENBQUMsRUFBQ0MsQ0FBQztZQUFHLFVBQVNDLENBQUMsRUFBQ0MsQ0FBQztnQkFBRTtnQkFBYSxJQUFJQyxJQUFFLFVBQVNDLElBQUUsSUFBR0MsSUFBRSxLQUFJQyxJQUFFLFlBQVdDLElBQUUsYUFBWUMsSUFBRSxVQUFTQyxJQUFFLFVBQVNDLElBQUUsU0FBUUMsSUFBRSxTQUFRQyxJQUFFLFFBQU9DLElBQUUsUUFBT0MsSUFBRSxVQUFTQyxJQUFFLFdBQVVDLElBQUUsZ0JBQWVDLElBQUUsV0FBVUMsSUFBRSxVQUFTQyxJQUFFLFVBQVNDLElBQUUsV0FBVUMsSUFBRSxZQUFXQyxJQUFFLFlBQVdDLElBQUU7Z0JBQUksSUFBSUMsSUFBRSxVQUFTQyxJQUFFLFNBQVFDLElBQUUsUUFBT0MsSUFBRSxjQUFhQyxJQUFFLFdBQVVDLElBQUUsVUFBU0MsSUFBRSxRQUFPQyxJQUFFLFdBQVVDLElBQUUsVUFBU0MsSUFBRSxVQUFTQyxJQUFFLE1BQUtDLElBQUUsYUFBWUMsSUFBRSxZQUFXQyxJQUFFLFNBQVFDLElBQUUsV0FBVUMsSUFBRSxTQUFRQyxJQUFFLFFBQU9DLElBQUUsU0FBUUMsSUFBRSxVQUFTQyxJQUFFLFNBQVFDLElBQUUsWUFBV0MsSUFBRSxlQUFjQyxJQUFFO2dCQUFTLElBQUlDLFNBQU8sU0FBU2hELENBQUMsRUFBQ0MsQ0FBQztvQkFBRSxJQUFJQyxJQUFFLENBQUM7b0JBQUUsSUFBSSxJQUFJQyxLQUFLSCxFQUFFO3dCQUFDLElBQUdDLENBQUMsQ0FBQ0UsRUFBRSxJQUFFRixDQUFDLENBQUNFLEVBQUUsQ0FBQzhDLE1BQU0sR0FBQyxNQUFJLEdBQUU7NEJBQUMvQyxDQUFDLENBQUNDLEVBQUUsR0FBQ0YsQ0FBQyxDQUFDRSxFQUFFLENB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QUtELEVBQUU7NEJBQUMwRyxFQUFFWixFQUFFLENBQUM3RixFQUFFLEdBQUNELENBQUMsQ0FBQ0MsRUFBRTt3QkFBQTtvQkFBQztnQkFBQztZQUFDLEdBQUcsTUFBd0IsR0FBQytHLENBQU1BLEdBQUMsSUFBSTtRQUFDO0lBQUM7SUFBRSxJQUFJaEgsSUFBRSxDQUFDO0lBQUUsU0FBU2lILG9CQUFvQmhILENBQUM7UUFBRSxJQUFJQyxJQUFFRixDQUFDLENBQUNDLEVBQUU7UUFBQyxJQUFHQyxNQUFJZ0gsV0FBVTtZQUFDLE9BQU9oSCxFQUFFcUcsT0FBTztRQUFBO1FBQUMsSUFBSXBHLElBQUVILENBQUMsQ0FBQ0MsRUFBRSxHQUFDO1lBQUNzRyxTQUFRLENBQUM7UUFBQztRQUFFLElBQUluRyxJQUFFO1FBQUssSUFBRztZQUFDTCxDQUFDLENBQUNFLEVBQUUsQ0FBQzhELElBQUksQ0FBQzVELEVBQUVvRyxPQUFPLEVBQUNwRyxHQUFFQSxFQUFFb0csT0FBTyxFQUFDVTtZQUFxQjdHLElBQUU7UUFBSyxTQUFRO1lBQUMsSUFBR0EsR0FBRSxPQUFPSixDQUFDLENBQUNDLEVBQUU7UUFBQTtRQUFDLE9BQU9FLEVBQUVvRyxPQUFPO0lBQUE7SUFBQyxJQUFHLE9BQU9VLHdCQUFzQixhQUFZQSxvQkFBb0JFLEVBQUUsR0FBQ0MsU0FBU0EsR0FBQztJQUFJLElBQUluSCxJQUFFZ0gsb0JBQW9CO0lBQUtJLE9BQU9kLE9BQU8sR0FBQ3RHO0FBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC91YS1wYXJzZXItanMvdWEtcGFyc2VyLmpzPzkyYjMiXSwic291cmNlc0NvbnRlbnQiOlsiKCgpPT57dmFyIGk9ezIyNjpmdW5jdGlvbihpLGUpeyhmdW5jdGlvbihvLGEpe1widXNlIHN0cmljdFwiO3ZhciByPVwiMS4wLjM1XCIsdD1cIlwiLG49XCI/XCIscz1cImZ1bmN0aW9uXCIsYj1cInVuZGVmaW5lZFwiLHc9XCJvYmplY3RcIixsPVwic3RyaW5nXCIsZD1cIm1ham9yXCIsYz1cIm1vZGVsXCIsdT1cIm5hbWVcIixwPVwidHlwZVwiLG09XCJ2ZW5kb3JcIixmPVwidmVyc2lvblwiLGg9XCJhcmNoaXRlY3R1cmVcIix2PVwiY29uc29sZVwiLGc9XCJtb2JpbGVcIixrPVwidGFibGV0XCIseD1cInNtYXJ0dHZcIixfPVwid2VhcmFibGVcIix5PVwiZW1iZWRkZWRcIixxPTM1MDt2YXIgVD1cIkFtYXpvblwiLFM9XCJBcHBsZVwiLHo9XCJBU1VTXCIsTj1cIkJsYWNrQmVycnlcIixBPVwiQnJvd3NlclwiLEM9XCJDaHJvbWVcIixFPVwiRWRnZVwiLE89XCJGaXJlZm94XCIsVT1cIkdvb2dsZVwiLGo9XCJIdWF3ZWlcIixQPVwiTEdcIixSPVwiTWljcm9zb2Z0XCIsTT1cIk1vdG9yb2xhXCIsQj1cIk9wZXJhXCIsVj1cIlNhbXN1bmdcIixEPVwiU2hhcnBcIixJPVwiU29ueVwiLFc9XCJWaWVyYVwiLEY9XCJYaWFvbWlcIixHPVwiWmVicmFcIixIPVwiRmFjZWJvb2tcIixMPVwiQ2hyb21pdW0gT1NcIixaPVwiTWFjIE9TXCI7dmFyIGV4dGVuZD1mdW5jdGlvbihpLGUpe3ZhciBvPXt9O2Zvcih2YXIgYSBpbiBpKXtpZihlW2FdJiZlW2FdLmxlbmd0aCUyPT09MCl7b1thXT1lW2FdLmNvbmNhdChpW2FdKX1lbHNle29bYV09aVthXX19cmV0dXJuIG99LGVudW1lcml6ZT1mdW5jdGlvbihpKXt2YXIgZT17fTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl7ZVtpW29dLnRvVXBwZXJDYXNlKCldPWlbb119cmV0dXJuIGV9LGhhcz1mdW5jdGlvbihpLGUpe3JldHVybiB0eXBlb2YgaT09PWw/bG93ZXJpemUoZSkuaW5kZXhPZihsb3dlcml6ZShpKSkhPT0tMTpmYWxzZX0sbG93ZXJpemU9ZnVuY3Rpb24oaSl7cmV0dXJuIGkudG9Mb3dlckNhc2UoKX0sbWFqb3JpemU9ZnVuY3Rpb24oaSl7cmV0dXJuIHR5cGVvZiBpPT09bD9pLnJlcGxhY2UoL1teXFxkXFwuXS9nLHQpLnNwbGl0KFwiLlwiKVswXTphfSx0cmltPWZ1bmN0aW9uKGksZSl7aWYodHlwZW9mIGk9PT1sKXtpPWkucmVwbGFjZSgvXlxcc1xccyovLHQpO3JldHVybiB0eXBlb2YgZT09PWI/aTppLnN1YnN0cmluZygwLHEpfX07dmFyIHJneE1hcHBlcj1mdW5jdGlvbihpLGUpe3ZhciBvPTAscix0LG4sYixsLGQ7d2hpbGUobzxlLmxlbmd0aCYmIWwpe3ZhciBjPWVbb10sdT1lW28rMV07cj10PTA7d2hpbGUocjxjLmxlbmd0aCYmIWwpe2lmKCFjW3JdKXticmVha31sPWNbcisrXS5leGVjKGkpO2lmKCEhbCl7Zm9yKG49MDtuPHUubGVuZ3RoO24rKyl7ZD1sWysrdF07Yj11W25dO2lmKHR5cGVvZiBiPT09dyYmYi5sZW5ndGg+MCl7aWYoYi5sZW5ndGg9PT0yKXtpZih0eXBlb2YgYlsxXT09cyl7dGhpc1tiWzBdXT1iWzFdLmNhbGwodGhpcyxkKX1lbHNle3RoaXNbYlswXV09YlsxXX19ZWxzZSBpZihiLmxlbmd0aD09PTMpe2lmKHR5cGVvZiBiWzFdPT09cyYmIShiWzFdLmV4ZWMmJmJbMV0udGVzdCkpe3RoaXNbYlswXV09ZD9iWzFdLmNhbGwodGhpcyxkLGJbMl0pOmF9ZWxzZXt0aGlzW2JbMF1dPWQ/ZC5yZXBsYWNlKGJbMV0sYlsyXSk6YX19ZWxzZSBpZihiLmxlbmd0aD09PTQpe3RoaXNbYlswXV09ZD9iWzNdLmNhbGwodGhpcyxkLnJlcGxhY2UoYlsxXSxiWzJdKSk6YX19ZWxzZXt0aGlzW2JdPWQ/ZDphfX19fW8rPTJ9fSxzdHJNYXBwZXI9ZnVuY3Rpb24oaSxlKXtmb3IodmFyIG8gaW4gZSl7aWYodHlwZW9mIGVbb109PT13JiZlW29dLmxlbmd0aD4wKXtmb3IodmFyIHI9MDtyPGVbb10ubGVuZ3RoO3IrKyl7aWYoaGFzKGVbb11bcl0saSkpe3JldHVybiBvPT09bj9hOm99fX1lbHNlIGlmKGhhcyhlW29dLGkpKXtyZXR1cm4gbz09PW4/YTpvfX1yZXR1cm4gaX07dmFyICQ9e1wiMS4wXCI6XCIvOFwiLDEuMjpcIi8xXCIsMS4zOlwiLzNcIixcIjIuMFwiOlwiLzQxMlwiLFwiMi4wLjJcIjpcIi80MTZcIixcIjIuMC4zXCI6XCIvNDE3XCIsXCIyLjAuNFwiOlwiLzQxOVwiLFwiP1wiOlwiL1wifSxYPXtNRTpcIjQuOTBcIixcIk5UIDMuMTFcIjpcIk5UMy41MVwiLFwiTlQgNC4wXCI6XCJOVDQuMFwiLDJlMzpcIk5UIDUuMFwiLFhQOltcIk5UIDUuMVwiLFwiTlQgNS4yXCJdLFZpc3RhOlwiTlQgNi4wXCIsNzpcIk5UIDYuMVwiLDg6XCJOVCA2LjJcIiw4LjE6XCJOVCA2LjNcIiwxMDpbXCJOVCA2LjRcIixcIk5UIDEwLjBcIl0sUlQ6XCJBUk1cIn07dmFyIEs9e2Jyb3dzZXI6W1svXFxiKD86Y3Jtb3xjcmlvcylcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIkNocm9tZVwiXV0sWy9lZGcoPzplfGlvc3xhKT9cXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIkVkZ2VcIl1dLFsvKG9wZXJhIG1pbmkpXFwvKFstXFx3XFwuXSspL2ksLyhvcGVyYSBbbW9iaWxldGFiXXszLDZ9KVxcYi4rdmVyc2lvblxcLyhbLVxcd1xcLl0rKS9pLC8ob3BlcmEpKD86Lit2ZXJzaW9uXFwvfFtcXC8gXSspKFtcXHdcXC5dKykvaV0sW3UsZl0sWy9vcGlvc1tcXC8gXSsoW1xcd1xcLl0rKS9pXSxbZixbdSxCK1wiIE1pbmlcIl1dLFsvXFxib3ByXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsQl1dLFsvKGtpbmRsZSlcXC8oW1xcd1xcLl0rKS9pLC8obHVuYXNjYXBlfG1heHRob258bmV0ZnJvbnR8amFzbWluZXxibGF6ZXIpW1xcLyBdPyhbXFx3XFwuXSopL2ksLyhhdmFudCB8aWVtb2JpbGV8c2xpbSkoPzpicm93c2VyKT9bXFwvIF0/KFtcXHdcXC5dKikvaSwvKGJhP2lkdWJyb3dzZXIpW1xcLyBdPyhbXFx3XFwuXSspL2ksLyg/Om1zfFxcKCkoaWUpIChbXFx3XFwuXSspL2ksLyhmbG9ja3xyb2NrbWVsdHxtaWRvcml8ZXBpcGhhbnl8c2lsa3xza3lmaXJlfGJvbHR8aXJvbnx2aXZhbGRpfGlyaWRpdW18cGhhbnRvbWpzfGJvd3NlcnxxdWFya3xxdXB6aWxsYXxmYWxrb258cmVrb25xfHB1ZmZpbnxicmF2ZXx3aGFsZSg/IS4rbmF2ZXIpfHFxYnJvd3NlcmxpdGV8cXF8ZHVja2R1Y2tnbylcXC8oWy1cXHdcXC5dKykvaSwvKGhleXRhcHxvdmkpYnJvd3NlclxcLyhbXFxkXFwuXSspL2ksLyh3ZWlibylfXyhbXFxkXFwuXSspL2ldLFt1LGZdLFsvKD86XFxidWM/ID9icm93c2VyfCg/Omp1Yy4rKXVjd2ViKVtcXC8gXT8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIlVDXCIrQV1dLFsvbWljcm9tLitcXGJxYmNvcmVcXC8oW1xcd1xcLl0rKS9pLC9cXGJxYmNvcmVcXC8oW1xcd1xcLl0rKS4rbWljcm9tL2ldLFtmLFt1LFwiV2VDaGF0KFdpbikgRGVza3RvcFwiXV0sWy9taWNyb21lc3NlbmdlclxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwiV2VDaGF0XCJdXSxbL2tvbnF1ZXJvclxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwiS29ucXVlcm9yXCJdXSxbL3RyaWRlbnQuK3J2WzogXShbXFx3XFwuXXsxLDl9KVxcYi4rbGlrZSBnZWNrby9pXSxbZixbdSxcIklFXCJdXSxbL3lhKD86c2VhcmNoKT9icm93c2VyXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJZYW5kZXhcIl1dLFsvKGF2YXN0fGF2ZylcXC8oW1xcd1xcLl0rKS9pXSxbW3UsLyguKykvLFwiJDEgU2VjdXJlIFwiK0FdLGZdLFsvXFxiZm9jdXNcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxPK1wiIEZvY3VzXCJdXSxbL1xcYm9wdFxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LEIrXCIgVG91Y2hcIl1dLFsvY29jX2NvY1xcdytcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIkNvYyBDb2NcIl1dLFsvZG9sZmluXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJEb2xwaGluXCJdXSxbL2NvYXN0XFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsQitcIiBDb2FzdFwiXV0sWy9taXVpYnJvd3NlclxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwiTUlVSSBcIitBXV0sWy9meGlvc1xcLyhbLVxcd1xcLl0rKS9pXSxbZixbdSxPXV0sWy9cXGJxaWh1fChxaT9obz9vP3wzNjApYnJvd3Nlci9pXSxbW3UsXCIzNjAgXCIrQV1dLFsvKG9jdWx1c3xzYW1zdW5nfHNhaWxmaXNofGh1YXdlaSlicm93c2VyXFwvKFtcXHdcXC5dKykvaV0sW1t1LC8oLispLyxcIiQxIFwiK0FdLGZdLFsvKGNvbW9kb19kcmFnb24pXFwvKFtcXHdcXC5dKykvaV0sW1t1LC9fL2csXCIgXCJdLGZdLFsvKGVsZWN0cm9uKVxcLyhbXFx3XFwuXSspIHNhZmFyaS9pLC8odGVzbGEpKD86IHF0Y2FyYnJvd3NlcnxcXC8oMjBcXGRcXGRcXC5bLVxcd1xcLl0rKSkvaSwvbT8ocXFicm93c2VyfGJhaWR1Ym94YXBwfDIzNDVFeHBsb3JlcilbXFwvIF0/KFtcXHdcXC5dKykvaV0sW3UsZl0sWy8obWV0YXNyKVtcXC8gXT8oW1xcd1xcLl0rKS9pLC8obGJicm93c2VyKS9pLC9cXFsobGlua2VkaW4pYXBwXFxdL2ldLFt1XSxbLygoPzpmYmFuXFwvZmJpb3N8ZmJfaWFiXFwvZmI0YSkoPyEuK2ZiYXYpfDtmYmF2XFwvKFtcXHdcXC5dKyk7KS9pXSxbW3UsSF0sZl0sWy8oa2FrYW8oPzp0YWxrfHN0b3J5KSlbXFwvIF0oW1xcd1xcLl0rKS9pLC8obmF2ZXIpXFwoLio/KFxcZCtcXC5bXFx3XFwuXSspLipcXCkvaSwvc2FmYXJpIChsaW5lKVxcLyhbXFx3XFwuXSspL2ksL1xcYihsaW5lKVxcLyhbXFx3XFwuXSspXFwvaWFiL2ksLyhjaHJvbWl1bXxpbnN0YWdyYW0pW1xcLyBdKFstXFx3XFwuXSspL2ldLFt1LGZdLFsvXFxiZ3NhXFwvKFtcXHdcXC5dKykgLipzYWZhcmlcXC8vaV0sW2YsW3UsXCJHU0FcIl1dLFsvbXVzaWNhbF9seSg/Oi4rYXBwXz92ZXJzaW9uXFwvfF8pKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJUaWtUb2tcIl1dLFsvaGVhZGxlc3NjaHJvbWUoPzpcXC8oW1xcd1xcLl0rKXwgKS9pXSxbZixbdSxDK1wiIEhlYWRsZXNzXCJdXSxbLyB3dlxcKS4rKGNocm9tZSlcXC8oW1xcd1xcLl0rKS9pXSxbW3UsQytcIiBXZWJWaWV3XCJdLGZdLFsvZHJvaWQuKyB2ZXJzaW9uXFwvKFtcXHdcXC5dKylcXGIuKyg/Om1vYmlsZSBzYWZhcml8c2FmYXJpKS9pXSxbZixbdSxcIkFuZHJvaWQgXCIrQV1dLFsvKGNocm9tZXxvbW5pd2VifGFyb3JhfFt0aXplbm9rYV17NX0gP2Jyb3dzZXIpXFwvdj8oW1xcd1xcLl0rKS9pXSxbdSxmXSxbL3ZlcnNpb25cXC8oW1xcd1xcLlxcLF0rKSAuKm1vYmlsZVxcL1xcdysgKHNhZmFyaSkvaV0sW2YsW3UsXCJNb2JpbGUgU2FmYXJpXCJdXSxbL3ZlcnNpb25cXC8oW1xcdyhcXC58XFwsKV0rKSAuKihtb2JpbGUgP3NhZmFyaXxzYWZhcmkpL2ldLFtmLHVdLFsvd2Via2l0Lis/KG1vYmlsZSA/c2FmYXJpfHNhZmFyaSkoXFwvW1xcd1xcLl0rKS9pXSxbdSxbZixzdHJNYXBwZXIsJF1dLFsvKHdlYmtpdHxraHRtbClcXC8oW1xcd1xcLl0rKS9pXSxbdSxmXSxbLyhuYXZpZ2F0b3J8bmV0c2NhcGVcXGQ/KVxcLyhbLVxcd1xcLl0rKS9pXSxbW3UsXCJOZXRzY2FwZVwiXSxmXSxbL21vYmlsZSB2cjsgcnY6KFtcXHdcXC5dKylcXCkuK2ZpcmVmb3gvaV0sW2YsW3UsTytcIiBSZWFsaXR5XCJdXSxbL2VraW9oZi4rKGZsb3cpXFwvKFtcXHdcXC5dKykvaSwvKHN3aWZ0Zm94KS9pLC8oaWNlZHJhZ29ufGljZXdlYXNlbHxjYW1pbm98Y2hpbWVyYXxmZW5uZWN8bWFlbW8gYnJvd3NlcnxtaW5pbW98Y29ua2Vyb3J8a2xhcilbXFwvIF0/KFtcXHdcXC5cXCtdKykvaSwvKHNlYW1vbmtleXxrLW1lbGVvbnxpY2VjYXR8aWNlYXBlfGZpcmViaXJkfHBob2VuaXh8cGFsZW1vb258YmFzaWxpc2t8d2F0ZXJmb3gpXFwvKFstXFx3XFwuXSspJC9pLC8oZmlyZWZveClcXC8oW1xcd1xcLl0rKS9pLC8obW96aWxsYSlcXC8oW1xcd1xcLl0rKSAuK3J2XFw6LitnZWNrb1xcL1xcZCsvaSwvKHBvbGFyaXN8bHlueHxkaWxsb3xpY2FifGRvcmlzfGFtYXlhfHczbXxuZXRzdXJmfHNsZWlwbmlyfG9iaWdvfG1vc2FpY3woPzpnb3xpY2V8dXApW1xcLiBdP2Jyb3dzZXIpWy1cXC8gXT92PyhbXFx3XFwuXSspL2ksLyhsaW5rcykgXFwoKFtcXHdcXC5dKykvaSwvcGFuYXNvbmljOyh2aWVyYSkvaV0sW3UsZl0sWy8oY29iYWx0KVxcLyhbXFx3XFwuXSspL2ldLFt1LFtmLC9tYXN0ZXIufGx0cy4vLFwiXCJdXV0sY3B1OltbLyg/OihhbWR8eCg/Oig/Ojg2fDY0KVstX10pP3x3b3d8d2luKTY0KVs7XFwpXS9pXSxbW2gsXCJhbWQ2NFwiXV0sWy8oaWEzMig/PTspKS9pXSxbW2gsbG93ZXJpemVdXSxbLygoPzppWzM0Nl18eCk4NilbO1xcKV0vaV0sW1toLFwiaWEzMlwiXV0sWy9cXGIoYWFyY2g2NHxhcm0odj84ZT9sP3xfPzY0KSlcXGIvaV0sW1toLFwiYXJtNjRcIl1dLFsvXFxiKGFybSg/OnZbNjddKT9odD9uP1tmbF1wPylcXGIvaV0sW1toLFwiYXJtaGZcIl1dLFsvd2luZG93cyAoY2V8bW9iaWxlKTsgcHBjOy9pXSxbW2gsXCJhcm1cIl1dLFsvKCg/OnBwY3xwb3dlcnBjKSg/OjY0KT8pKD86IG1hY3w7fFxcKSkvaV0sW1toLC9vd2VyLyx0LGxvd2VyaXplXV0sWy8oc3VuNFxcdylbO1xcKV0vaV0sW1toLFwic3BhcmNcIl1dLFsvKCg/OmF2cjMyfGlhNjQoPz07KSl8NjhrKD89XFwpKXxcXGJhcm0oPz12KD86WzEtN118WzUtN10xKWw/fDt8ZWFiaSl8KD89YXRtZWwgKWF2cnwoPzppcml4fG1pcHN8c3BhcmMpKD86NjQpP1xcYnxwYS1yaXNjKS9pXSxbW2gsbG93ZXJpemVdXV0sZGV2aWNlOltbL1xcYihzY2gtaVs4OV0wXFxkfHNody1tMzgwc3xzbS1bcHR4XVxcd3syLDR9fGd0LVtwbl1cXGR7Miw0fXxzZ2gtdDhbNTZdOXxuZXh1cyAxMCkvaV0sW2MsW20sVl0sW3Asa11dLFsvXFxiKCg/OnNbY2dwXWh8Z3R8c20pLVxcdyt8c2NbZy1dP1tcXGRdK2E/fGdhbGF4eSBuZXh1cykvaSwvc2Ftc3VuZ1stIF0oWy1cXHddKykvaSwvc2VjLShzZ2hcXHcrKS9pXSxbYyxbbSxWXSxbcCxnXV0sWy8oPzpcXC98XFwoKShpcCg/OmhvbmV8b2QpW1xcdywgXSopKD86XFwvfDspL2ldLFtjLFttLFNdLFtwLGddXSxbL1xcKChpcGFkKTtbLVxcd1xcKSw7IF0rYXBwbGUvaSwvYXBwbGVjb3JlbWVkaWFcXC9bXFx3XFwuXSsgXFwoKGlwYWQpL2ksL1xcYihpcGFkKVxcZFxcZD8sXFxkXFxkP1s7XFxdXS4raW9zL2ldLFtjLFttLFNdLFtwLGtdXSxbLyhtYWNpbnRvc2gpOy9pXSxbYyxbbSxTXV0sWy9cXGIoc2gtP1thbHR2el0/XFxkXFxkW2EtZWttXT8pL2ldLFtjLFttLERdLFtwLGddXSxbL1xcYigoPzphZ1tyc11bMjNdP3xiYWgyP3xzaHQ/fGJ0diktYT9bbHddXFxkezJ9KVxcYig/IS4rZFxcL3MpL2ldLFtjLFttLGpdLFtwLGtdXSxbLyg/Omh1YXdlaXxob25vcikoWy1cXHcgXSspWztcXCldL2ksL1xcYihuZXh1cyA2cHxcXHd7Miw0fWU/LVthdHVdP1tsbl1bXFxkeF1bMDEyMzU5Y11bYWRuXT8pXFxiKD8hLitkXFwvcykvaV0sW2MsW20sal0sW3AsZ11dLFsvXFxiKHBvY29bXFx3IF0rKSg/OiBidWl8XFwpKS9pLC9cXGI7IChcXHcrKSBidWlsZFxcL2htXFwxL2ksL1xcYihobVstXyBdP25vdGU/W18gXT8oPzpcXGRcXHcpPykgYnVpL2ksL1xcYihyZWRtaVtcXC1fIF0/KD86bm90ZXxrKT9bXFx3XyBdKykoPzogYnVpfFxcKSkvaSwvXFxiKG1pWy1fIF0/KD86YVxcZHxvbmV8b25lW18gXXBsdXN8bm90ZSBsdGV8bWF4fGNjKT9bXyBdPyg/OlxcZD9cXHc/KVtfIF0/KD86cGx1c3xzZXxsaXRlKT8pKD86IGJ1aXxcXCkpL2ldLFtbYywvXy9nLFwiIFwiXSxbbSxGXSxbcCxnXV0sWy9cXGIobWlbLV8gXT8oPzpwYWQpKD86W1xcd18gXSspKSg/OiBidWl8XFwpKS9pXSxbW2MsL18vZyxcIiBcIl0sW20sRl0sW3Asa11dLFsvOyAoXFx3KykgYnVpLisgb3Bwby9pLC9cXGIoY3BoWzEyXVxcZHszfXxwKD86YWZ8Y1thbF18ZFxcd3xlW2FyXSlbbXRdXFxkMHx4OTAwN3xhMTAxb3ApXFxiL2ldLFtjLFttLFwiT1BQT1wiXSxbcCxnXV0sWy92aXZvIChcXHcrKSg/OiBidWl8XFwpKS9pLC9cXGIodlsxMl1cXGR7M31cXHc/W2F0XSkoPzogYnVpfDspL2ldLFtjLFttLFwiVml2b1wiXSxbcCxnXV0sWy9cXGIocm14WzEyXVxcZHszfSkoPzogYnVpfDt8XFwpKS9pXSxbYyxbbSxcIlJlYWxtZVwiXSxbcCxnXV0sWy9cXGIobWlsZXN0b25lfGRyb2lkKD86WzItNHhdfCAoPzpiaW9uaWN8eDJ8cHJvfHJhenIpKT86PyggNGcpPylcXGJbXFx3IF0rYnVpbGRcXC8vaSwvXFxibW90KD86b3JvbGEpP1stIF0oXFx3KikvaSwvKCg/Om1vdG9bXFx3XFwoXFwpIF0rfHh0XFxkezMsNH18bmV4dXMgNikoPz0gYnVpfFxcKSkpL2ldLFtjLFttLE1dLFtwLGddXSxbL1xcYihtejYwXFxkfHhvb21bMiBdezAsMn0pIGJ1aWxkXFwvL2ldLFtjLFttLE1dLFtwLGtdXSxbLygoPz1sZyk/W3ZsXWtcXC0/XFxkezN9KSBidWl8IDNcXC5bLVxcdzsgXXsxMH1sZz8tKFswNmN2OV17Myw0fSkvaV0sW2MsW20sUF0sW3Asa11dLFsvKGxtKD86LT9mMTAwW252XT98LVtcXHdcXC5dKykoPz0gYnVpfFxcKSl8bmV4dXMgWzQ1XSkvaSwvXFxibGdbLWU7XFwvIF0rKCg/IWJyb3dzZXJ8bmV0Y2FzdHxhbmRyb2lkIHR2KVxcdyspL2ksL1xcYmxnLT8oW1xcZFxcd10rKSBidWkvaV0sW2MsW20sUF0sW3AsZ11dLFsvKGlkZWF0YWJbLVxcdyBdKykvaSwvbGVub3ZvID8oc1s1Nl0wMDBbLVxcd10rfHRhYig/OltcXHcgXSspfHl0Wy1cXGRcXHddezZ9fHRiWy1cXGRcXHddezZ9KS9pXSxbYyxbbSxcIkxlbm92b1wiXSxbcCxrXV0sWy8oPzptYWVtb3xub2tpYSkuKihuOTAwfGx1bWlhIFxcZCspL2ksL25va2lhWy1fIF0/KFstXFx3XFwuXSopL2ldLFtbYywvXy9nLFwiIFwiXSxbbSxcIk5va2lhXCJdLFtwLGddXSxbLyhwaXhlbCBjKVxcYi9pXSxbYyxbbSxVXSxbcCxrXV0sWy9kcm9pZC4rOyAocGl4ZWxbXFxkYXhsIF17MCw2fSkoPzogYnVpfFxcKSkvaV0sW2MsW20sVV0sW3AsZ11dLFsvZHJvaWQuKyAoYT9cXGRbMC0yXXsyfXNvfFtjLWddXFxkezR9fHNvWy1nbF1cXHcrfHhxLWFcXHdbNC03XVsxMl0pKD89IGJ1aXxcXCkuK2Nocm9tZVxcLyg/IVsxLTZdezAsMX1cXGRcXC4pKS9pXSxbYyxbbSxJXSxbcCxnXV0sWy9zb255IHRhYmxldCBbcHNdL2ksL1xcYig/OnNvbnkpP3NncFxcdysoPzogYnVpfFxcKSkvaV0sW1tjLFwiWHBlcmlhIFRhYmxldFwiXSxbbSxJXSxbcCxrXV0sWy8gKGtiMjAwNXxpbjIwWzEyXTV8YmUyMFsxMl1bNTldKVxcYi9pLC8oPzpvbmUpPyg/OnBsdXMpPyAoYVxcZDBcXGRcXGQpKD86IGJ8XFwpKS9pXSxbYyxbbSxcIk9uZVBsdXNcIl0sW3AsZ11dLFsvKGFsZXhhKXdlYm0vaSwvKGtmW2Etel17Mn13aXxhZW9bYy1yXXsyfSkoIGJ1aXxcXCkpL2ksLyhrZlthLXpdKykoIGJ1aXxcXCkpLitzaWxrXFwvL2ldLFtjLFttLFRdLFtwLGtdXSxbLygoPzpzZHxrZilbMDM0OWhpam9yc3R1d10rKSggYnVpfFxcKSkuK3NpbGtcXC8vaV0sW1tjLC8oLispL2csXCJGaXJlIFBob25lICQxXCJdLFttLFRdLFtwLGddXSxbLyhwbGF5Ym9vayk7Wy1cXHdcXCksOyBdKyhyaW0pL2ldLFtjLG0sW3Asa11dLFsvXFxiKCg/OmJiW2EtZl18c3RbaHZdKTEwMC1cXGQpL2ksL1xcKGJiMTA7IChcXHcrKS9pXSxbYyxbbSxOXSxbcCxnXV0sWy8oPzpcXGJ8YXN1c18pKHRyYW5zZm9bcHJpbWUgXXs0LDEwfSBcXHcrfGVlZXBjfHNsaWRlciBcXHcrfG5leHVzIDd8cGFkZm9uZXxwMDBbY2pdKS9pXSxbYyxbbSx6XSxbcCxrXV0sWy8gKHpbYmVzXTZbMDI3XVswMTJdW2ttXVtsc118emVuZm9uZSBcXGRcXHc/KVxcYi9pXSxbYyxbbSx6XSxbcCxnXV0sWy8obmV4dXMgOSkvaV0sW2MsW20sXCJIVENcIl0sW3Asa11dLFsvKGh0YylbLTtfIF17MSwyfShbXFx3IF0rKD89XFwpfCBidWkpfFxcdyspL2ksLyh6dGUpWy0gXShbXFx3IF0rPykoPzogYnVpfFxcL3xcXCkpL2ksLyhhbGNhdGVsfGdlZWtzcGhvbmV8bmV4aWFufHBhbmFzb25pYyg/ISg/Ojt8XFwuKSl8c29ueSg/IS1icmEpKVstXyBdPyhbLVxcd10qKS9pXSxbbSxbYywvXy9nLFwiIFwiXSxbcCxnXV0sWy9kcm9pZC4rOyAoW2FiXVsxLTddLT9bMDE3OGFdXFxkXFxkPykvaV0sW2MsW20sXCJBY2VyXCJdLFtwLGtdXSxbL2Ryb2lkLis7IChtWzEtNV0gbm90ZSkgYnVpL2ksL1xcYm16LShbLVxcd117Mix9KS9pXSxbYyxbbSxcIk1laXp1XCJdLFtwLGddXSxbLyhibGFja2JlcnJ5fGJlbnF8cGFsbSg/PVxcLSl8c29ueWVyaWNzc29ufGFjZXJ8YXN1c3xkZWxsfG1laXp1fG1vdG9yb2xhfHBvbHl0cm9uKVstXyBdPyhbLVxcd10qKS9pLC8oaHApIChbXFx3IF0rXFx3KS9pLC8oYXN1cyktPyhcXHcrKS9pLC8obWljcm9zb2Z0KTsgKGx1bWlhW1xcdyBdKykvaSwvKGxlbm92bylbLV8gXT8oWy1cXHddKykvaSwvKGpvbGxhKS9pLC8ob3BwbykgPyhbXFx3IF0rKSBidWkvaV0sW20sYyxbcCxnXV0sWy8oa29ibylcXHMoZXJlYWRlcnx0b3VjaCkvaSwvKGFyY2hvcykgKGdhbWVwYWQyPykvaSwvKGhwKS4rKHRvdWNocGFkKD8hLit0YWJsZXQpfHRhYmxldCkvaSwvKGtpbmRsZSlcXC8oW1xcd1xcLl0rKS9pLC8obm9vaylbXFx3IF0rYnVpbGRcXC8oXFx3KykvaSwvKGRlbGwpIChzdHJlYVtrcHJcXGQgXSpbXFxka29dKS9pLC8obGVbLSBdK3BhbilbLSBdKyhcXHd7MSw5fSkgYnVpL2ksLyh0cmluaXR5KVstIF0qKHRcXGR7M30pIGJ1aS9pLC8oZ2lnYXNldClbLSBdKyhxXFx3ezEsOX0pIGJ1aS9pLC8odm9kYWZvbmUpIChbXFx3IF0rKSg/OlxcKXwgYnVpKS9pXSxbbSxjLFtwLGtdXSxbLyhzdXJmYWNlIGR1bykvaV0sW2MsW20sUl0sW3Asa11dLFsvZHJvaWQgW1xcZFxcLl0rOyAoZnBcXGR1PykoPzogYnxcXCkpL2ldLFtjLFttLFwiRmFpcnBob25lXCJdLFtwLGddXSxbLyh1MzA0YWEpL2ldLFtjLFttLFwiQVQmVFwiXSxbcCxnXV0sWy9cXGJzaWUtKFxcdyopL2ldLFtjLFttLFwiU2llbWVuc1wiXSxbcCxnXV0sWy9cXGIocmN0XFx3KykgYi9pXSxbYyxbbSxcIlJDQVwiXSxbcCxrXV0sWy9cXGIodmVudWVbXFxkIF17Miw3fSkgYi9pXSxbYyxbbSxcIkRlbGxcIl0sW3Asa11dLFsvXFxiKHEoPzptdnx0YSlcXHcrKSBiL2ldLFtjLFttLFwiVmVyaXpvblwiXSxbcCxrXV0sWy9cXGIoPzpiYXJuZXNbJiBdK25vYmxlIHxibltydF0pKFtcXHdcXCsgXSopIGIvaV0sW2MsW20sXCJCYXJuZXMgJiBOb2JsZVwiXSxbcCxrXV0sWy9cXGIodG1cXGR7M31cXHcrKSBiL2ldLFtjLFttLFwiTnVWaXNpb25cIl0sW3Asa11dLFsvXFxiKGs4OCkgYi9pXSxbYyxbbSxcIlpURVwiXSxbcCxrXV0sWy9cXGIobnhcXGR7M31qKSBiL2ldLFtjLFttLFwiWlRFXCJdLFtwLGddXSxbL1xcYihnZW5cXGR7M30pIGIuKzQ5aC9pXSxbYyxbbSxcIlN3aXNzXCJdLFtwLGddXSxbL1xcYih6dXJcXGR7M30pIGIvaV0sW2MsW20sXCJTd2lzc1wiXSxbcCxrXV0sWy9cXGIoKHpla2kpP3RiLipcXGIpIGIvaV0sW2MsW20sXCJaZWtpXCJdLFtwLGtdXSxbL1xcYihbeXJdXFxkezJ9KSBiL2ksL1xcYihkcmFnb25bLSBdK3RvdWNoIHxkdCkoXFx3ezV9KSBiL2ldLFtbbSxcIkRyYWdvbiBUb3VjaFwiXSxjLFtwLGtdXSxbL1xcYihucy0/XFx3ezAsOX0pIGIvaV0sW2MsW20sXCJJbnNpZ25pYVwiXSxbcCxrXV0sWy9cXGIoKG54YXxuZXh0KS0/XFx3ezAsOX0pIGIvaV0sW2MsW20sXCJOZXh0Qm9va1wiXSxbcCxrXV0sWy9cXGIoeHRyZW1lXFxfKT8odigxWzA0NV18MlswMTVdfFszNDY5XTB8N1swNV0pKSBiL2ldLFtbbSxcIlZvaWNlXCJdLGMsW3AsZ11dLFsvXFxiKGx2dGVsXFwtKT8odjFbMTJdKSBiL2ldLFtbbSxcIkx2VGVsXCJdLGMsW3AsZ11dLFsvXFxiKHBoLTEpIC9pXSxbYyxbbSxcIkVzc2VudGlhbFwiXSxbcCxnXV0sWy9cXGIodigxMDBtZHw3MDBuYXw3MDExfDkxN2cpLipcXGIpIGIvaV0sW2MsW20sXCJFbnZpemVuXCJdLFtwLGtdXSxbL1xcYih0cmlvWy1cXHdcXC4gXSspIGIvaV0sW2MsW20sXCJNYWNoU3BlZWRcIl0sW3Asa11dLFsvXFxidHVfKDE0OTEpIGIvaV0sW2MsW20sXCJSb3RvclwiXSxbcCxrXV0sWy8oc2hpZWxkW1xcdyBdKykgYi9pXSxbYyxbbSxcIk52aWRpYVwiXSxbcCxrXV0sWy8oc3ByaW50KSAoXFx3KykvaV0sW20sYyxbcCxnXV0sWy8oa2luXFwuW29uZXR3XXszfSkvaV0sW1tjLC9cXC4vZyxcIiBcIl0sW20sUl0sW3AsZ11dLFsvZHJvaWQuKzsgKGNjNjY2Nj98ZXQ1WzE2XXxtY1syMzldWzIzXXg/fHZjOFswM114PylcXCkvaV0sW2MsW20sR10sW3Asa11dLFsvZHJvaWQuKzsgKGVjMzB8cHMyMHx0Y1syLThdXFxkW2t4XSlcXCkvaV0sW2MsW20sR10sW3AsZ11dLFsvc21hcnQtdHYuKyhzYW1zdW5nKS9pXSxbbSxbcCx4XV0sWy9oYmJ0di4rbWFwbGU7KFxcZCspL2ldLFtbYywvXi8sXCJTbWFydFRWXCJdLFttLFZdLFtwLHhdXSxbLyhudXg7IG5ldGNhc3QuK3NtYXJ0dHZ8bGcgKG5ldGNhc3RcXC50di0yMDFcXGR8YW5kcm9pZCB0dikpL2ldLFtbbSxQXSxbcCx4XV0sWy8oYXBwbGUpID90di9pXSxbbSxbYyxTK1wiIFRWXCJdLFtwLHhdXSxbL2Nya2V5L2ldLFtbYyxDK1wiY2FzdFwiXSxbbSxVXSxbcCx4XV0sWy9kcm9pZC4rYWZ0KFxcdykoIGJ1aXxcXCkpL2ldLFtjLFttLFRdLFtwLHhdXSxbL1xcKGR0dltcXCk7XS4rKGFxdW9zKS9pLC8oYXF1b3MtdHZbXFx3IF0rKVxcKS9pXSxbYyxbbSxEXSxbcCx4XV0sWy8oYnJhdmlhW1xcdyBdKykoIGJ1aXxcXCkpL2ldLFtjLFttLEldLFtwLHhdXSxbLyhtaXR2LVxcd3s1fSkgYnVpL2ldLFtjLFttLEZdLFtwLHhdXSxbL0hiYnR2LioodGVjaG5pc2F0KSAoLiopOy9pXSxbbSxjLFtwLHhdXSxbL1xcYihyb2t1KVtcXGR4XSpbXFwpXFwvXSgoPzpkdnAtKT9bXFxkXFwuXSopL2ksL2hiYnR2XFwvXFxkK1xcLlxcZCtcXC5cXGQrICtcXChbXFx3XFwrIF0qOyAqKFtcXHdcXGRdW147XSopOyhbXjtdKikvaV0sW1ttLHRyaW1dLFtjLHRyaW1dLFtwLHhdXSxbL1xcYihhbmRyb2lkIHR2fHNtYXJ0Wy0gXT90dnxvcGVyYSB0dnx0djsgcnY6KVxcYi9pXSxbW3AseF1dLFsvKG91eWEpL2ksLyhuaW50ZW5kbykgKFt3aWRzM3V0Y2hdKykvaV0sW20sYyxbcCx2XV0sWy9kcm9pZC4rOyAoc2hpZWxkKSBidWkvaV0sW2MsW20sXCJOdmlkaWFcIl0sW3Asdl1dLFsvKHBsYXlzdGF0aW9uIFszNDVwb3J0YWJsZXZpXSspL2ldLFtjLFttLEldLFtwLHZdXSxbL1xcYih4Ym94KD86IG9uZSk/KD8hOyB4Ym94KSlbXFwpOyBdL2ldLFtjLFttLFJdLFtwLHZdXSxbLygocGViYmxlKSlhcHAvaV0sW20sYyxbcCxfXV0sWy8od2F0Y2gpKD86ID9vc1ssXFwvXXxcXGQsXFxkXFwvKVtcXGRcXC5dKy9pXSxbYyxbbSxTXSxbcCxfXV0sWy9kcm9pZC4rOyAoZ2xhc3MpIFxcZC9pXSxbYyxbbSxVXSxbcCxfXV0sWy9kcm9pZC4rOyAod3Q2Mz8wezIsM30pXFwpL2ldLFtjLFttLEddLFtwLF9dXSxbLyhxdWVzdCggMnwgcHJvKT8pL2ldLFtjLFttLEhdLFtwLF9dXSxbLyh0ZXNsYSkoPzogcXRjYXJicm93c2VyfFxcL1stXFx3XFwuXSspL2ldLFttLFtwLHldXSxbLyhhZW9iYylcXGIvaV0sW2MsW20sVF0sW3AseV1dLFsvZHJvaWQgLis/OyAoW147XSs/KSg/OiBidWl8XFwpIGFwcGxldykuKz8gbW9iaWxlIHNhZmFyaS9pXSxbYyxbcCxnXV0sWy9kcm9pZCAuKz87IChbXjtdKz8pKD86IGJ1aXxcXCkgYXBwbGV3KS4rPyg/ISBtb2JpbGUpIHNhZmFyaS9pXSxbYyxbcCxrXV0sWy9cXGIoKHRhYmxldHx0YWIpWztcXC9dfGZvY3VzXFwvXFxkKD8hLittb2JpbGUpKS9pXSxbW3Asa11dLFsvKHBob25lfG1vYmlsZSg/Ols7XFwvXXwgWyBcXHdcXC9cXC5dKnNhZmFyaSl8cGRhKD89Lit3aW5kb3dzIGNlKSkvaV0sW1twLGddXSxbLyhhbmRyb2lkWy1cXHdcXC4gXXswLDl9KTsuK2J1aWwvaV0sW2MsW20sXCJHZW5lcmljXCJdXV0sZW5naW5lOltbL3dpbmRvd3MuKyBlZGdlXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsRStcIkhUTUxcIl1dLFsvd2Via2l0XFwvNTM3XFwuMzYuK2Nocm9tZVxcLyg/ITI3KShbXFx3XFwuXSspL2ldLFtmLFt1LFwiQmxpbmtcIl1dLFsvKHByZXN0bylcXC8oW1xcd1xcLl0rKS9pLC8od2Via2l0fHRyaWRlbnR8bmV0ZnJvbnR8bmV0c3VyZnxhbWF5YXxseW54fHczbXxnb2FubmEpXFwvKFtcXHdcXC5dKykvaSwvZWtpb2goZmxvdylcXC8oW1xcd1xcLl0rKS9pLC8oa2h0bWx8dGFzbWFufGxpbmtzKVtcXC8gXVxcKD8oW1xcd1xcLl0rKS9pLC8oaWNhYilbXFwvIF0oWzIzXVxcLltcXGRcXC5dKykvaSwvXFxiKGxpYndlYikvaV0sW3UsZl0sWy9ydlxcOihbXFx3XFwuXXsxLDl9KVxcYi4rKGdlY2tvKS9pXSxbZix1XV0sb3M6W1svbWljcm9zb2Z0ICh3aW5kb3dzKSAodmlzdGF8eHApL2ldLFt1LGZdLFsvKHdpbmRvd3MpIG50IDZcXC4yOyAoYXJtKS9pLC8od2luZG93cyAoPzpwaG9uZSg/OiBvcyk/fG1vYmlsZSkpW1xcLyBdPyhbXFxkXFwuXFx3IF0qKS9pLC8od2luZG93cylbXFwvIF0/KFtudGNlXFxkXFwuIF0rXFx3KSg/IS4reGJveCkvaV0sW3UsW2Ysc3RyTWFwcGVyLFhdXSxbLyh3aW4oPz0zfDl8bil8d2luIDl4ICkoW250XFxkXFwuXSspL2ldLFtbdSxcIldpbmRvd3NcIl0sW2Ysc3RyTWFwcGVyLFhdXSxbL2lwW2hvbmVhZF17Miw0fVxcYig/Oi4qb3MgKFtcXHddKykgbGlrZSBtYWN8OyBvcGVyYSkvaSwvaW9zO2Zic3ZcXC8oW1xcZFxcLl0rKS9pLC9jZm5ldHdvcmtcXC8uK2Rhcndpbi9pXSxbW2YsL18vZyxcIi5cIl0sW3UsXCJpT1NcIl1dLFsvKG1hYyBvcyB4KSA/KFtcXHdcXC4gXSopL2ksLyhtYWNpbnRvc2h8bWFjX3Bvd2VycGNcXGIpKD8hLitoYWlrdSkvaV0sW1t1LFpdLFtmLC9fL2csXCIuXCJdXSxbL2Ryb2lkIChbXFx3XFwuXSspXFxiLisoYW5kcm9pZFstIF14ODZ8aGFybW9ueW9zKS9pXSxbZix1XSxbLyhhbmRyb2lkfHdlYm9zfHFueHxiYWRhfHJpbSB0YWJsZXQgb3N8bWFlbW98bWVlZ298c2FpbGZpc2gpWy1cXC8gXT8oW1xcd1xcLl0qKS9pLC8oYmxhY2tiZXJyeSlcXHcqXFwvKFtcXHdcXC5dKikvaSwvKHRpemVufGthaW9zKVtcXC8gXShbXFx3XFwuXSspL2ksL1xcKChzZXJpZXM0MCk7L2ldLFt1LGZdLFsvXFwoYmIoMTApOy9pXSxbZixbdSxOXV0sWy8oPzpzeW1iaWFuID9vc3xzeW1ib3N8czYwKD89Oyl8c2VyaWVzNjApWy1cXC8gXT8oW1xcd1xcLl0qKS9pXSxbZixbdSxcIlN5bWJpYW5cIl1dLFsvbW96aWxsYVxcL1tcXGRcXC5dKyBcXCgoPzptb2JpbGV8dGFibGV0fHR2fG1vYmlsZTsgW1xcdyBdKyk7IHJ2Oi4rIGdlY2tvXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsTytcIiBPU1wiXV0sWy93ZWIwczsuK3J0KHR2KS9pLC9cXGIoPzpocCk/d29zKD86YnJvd3Nlcik/XFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJ3ZWJPU1wiXV0sWy93YXRjaCg/OiA/b3NbLFxcL118XFxkLFxcZFxcLykoW1xcZFxcLl0rKS9pXSxbZixbdSxcIndhdGNoT1NcIl1dLFsvY3JrZXlcXC8oW1xcZFxcLl0rKS9pXSxbZixbdSxDK1wiY2FzdFwiXV0sWy8oY3JvcykgW1xcd10rKD86XFwpfCAoW1xcd1xcLl0rKVxcYikvaV0sW1t1LExdLGZdLFsvcGFuYXNvbmljOyh2aWVyYSkvaSwvKG5ldHJhbmdlKW1taC9pLC8obmV0dHYpXFwvKFxcZCtcXC5bXFx3XFwuXSspL2ksLyhuaW50ZW5kb3xwbGF5c3RhdGlvbikgKFt3aWRzMzQ1cG9ydGFibGV2dWNoXSspL2ksLyh4Ym94KTsgK3hib3ggKFteXFwpO10rKS9pLC9cXGIoam9saXxwYWxtKVxcYiA/KD86b3MpP1xcLz8oW1xcd1xcLl0qKS9pLC8obWludClbXFwvXFwoXFwpIF0/KFxcdyopL2ksLyhtYWdlaWF8dmVjdG9ybGludXgpWzsgXS9pLC8oW2t4bG5dP3VidW50dXxkZWJpYW58c3VzZXxvcGVuc3VzZXxnZW50b298YXJjaCg/PSBsaW51eCl8c2xhY2t3YXJlfGZlZG9yYXxtYW5kcml2YXxjZW50b3N8cGNsaW51eG9zfHJlZCA/aGF0fHplbndhbGt8bGlucHVzfHJhc3BiaWFufHBsYW4gOXxtaW5peHxyaXNjIG9zfGNvbnRpa2l8ZGVlcGlufG1hbmphcm98ZWxlbWVudGFyeSBvc3xzYWJheW9ufGxpbnNwaXJlKSg/OiBnbnVcXC9saW51eCk/KD86IGVudGVycHJpc2UpPyg/OlstIF1saW51eCk/KD86LWdudSk/Wy1cXC8gXT8oPyFjaHJvbXxwYWNrYWdlKShbLVxcd1xcLl0qKS9pLC8oaHVyZHxsaW51eCkgPyhbXFx3XFwuXSopL2ksLyhnbnUpID8oW1xcd1xcLl0qKS9pLC9cXGIoWy1mcmVudG9wY2doc117MCw1fWJzZHxkcmFnb25mbHkpW1xcLyBdPyg/IWFtZHxbaXgzNDZdezEsMn04NikoW1xcd1xcLl0qKS9pLC8oaGFpa3UpIChcXHcrKS9pXSxbdSxmXSxbLyhzdW5vcykgPyhbXFx3XFwuXFxkXSopL2ldLFtbdSxcIlNvbGFyaXNcIl0sZl0sWy8oKD86b3Blbik/c29sYXJpcylbLVxcLyBdPyhbXFx3XFwuXSopL2ksLyhhaXgpICgoXFxkKSg/PVxcLnxcXCl8IClbXFx3XFwuXSkqL2ksL1xcYihiZW9zfG9zXFwvMnxhbWlnYW9zfG1vcnBob3N8b3BlbnZtc3xmdWNoc2lhfGhwLXV4fHNlcmVuaXR5b3MpL2ksLyh1bml4KSA/KFtcXHdcXC5dKikvaV0sW3UsZl1dfTt2YXIgVUFQYXJzZXI9ZnVuY3Rpb24oaSxlKXtpZih0eXBlb2YgaT09PXcpe2U9aTtpPWF9aWYoISh0aGlzIGluc3RhbmNlb2YgVUFQYXJzZXIpKXtyZXR1cm4gbmV3IFVBUGFyc2VyKGksZSkuZ2V0UmVzdWx0KCl9dmFyIHI9dHlwZW9mIG8hPT1iJiZvLm5hdmlnYXRvcj9vLm5hdmlnYXRvcjphO3ZhciBuPWl8fChyJiZyLnVzZXJBZ2VudD9yLnVzZXJBZ2VudDp0KTt2YXIgdj1yJiZyLnVzZXJBZ2VudERhdGE/ci51c2VyQWdlbnREYXRhOmE7dmFyIHg9ZT9leHRlbmQoSyxlKTpLO3ZhciBfPXImJnIudXNlckFnZW50PT1uO3RoaXMuZ2V0QnJvd3Nlcj1mdW5jdGlvbigpe3ZhciBpPXt9O2lbdV09YTtpW2ZdPWE7cmd4TWFwcGVyLmNhbGwoaSxuLHguYnJvd3Nlcik7aVtkXT1tYWpvcml6ZShpW2ZdKTtpZihfJiZyJiZyLmJyYXZlJiZ0eXBlb2Ygci5icmF2ZS5pc0JyYXZlPT1zKXtpW3VdPVwiQnJhdmVcIn1yZXR1cm4gaX07dGhpcy5nZXRDUFU9ZnVuY3Rpb24oKXt2YXIgaT17fTtpW2hdPWE7cmd4TWFwcGVyLmNhbGwoaSxuLHguY3B1KTtyZXR1cm4gaX07dGhpcy5nZXREZXZpY2U9ZnVuY3Rpb24oKXt2YXIgaT17fTtpW21dPWE7aVtjXT1hO2lbcF09YTtyZ3hNYXBwZXIuY2FsbChpLG4seC5kZXZpY2UpO2lmKF8mJiFpW3BdJiZ2JiZ2Lm1vYmlsZSl7aVtwXT1nfWlmKF8mJmlbY109PVwiTWFjaW50b3NoXCImJnImJnR5cGVvZiByLnN0YW5kYWxvbmUhPT1iJiZyLm1heFRvdWNoUG9pbnRzJiZyLm1heFRvdWNoUG9pbnRzPjIpe2lbY109XCJpUGFkXCI7aVtwXT1rfXJldHVybiBpfTt0aGlzLmdldEVuZ2luZT1mdW5jdGlvbigpe3ZhciBpPXt9O2lbdV09YTtpW2ZdPWE7cmd4TWFwcGVyLmNhbGwoaSxuLHguZW5naW5lKTtyZXR1cm4gaX07dGhpcy5nZXRPUz1mdW5jdGlvbigpe3ZhciBpPXt9O2lbdV09YTtpW2ZdPWE7cmd4TWFwcGVyLmNhbGwoaSxuLHgub3MpO2lmKF8mJiFpW3VdJiZ2JiZ2LnBsYXRmb3JtIT1cIlVua25vd25cIil7aVt1XT12LnBsYXRmb3JtLnJlcGxhY2UoL2Nocm9tZSBvcy9pLEwpLnJlcGxhY2UoL21hY29zL2ksWil9cmV0dXJuIGl9O3RoaXMuZ2V0UmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJue3VhOnRoaXMuZ2V0VUEoKSxicm93c2VyOnRoaXMuZ2V0QnJvd3NlcigpLGVuZ2luZTp0aGlzLmdldEVuZ2luZSgpLG9zOnRoaXMuZ2V0T1MoKSxkZXZpY2U6dGhpcy5nZXREZXZpY2UoKSxjcHU6dGhpcy5nZXRDUFUoKX19O3RoaXMuZ2V0VUE9ZnVuY3Rpb24oKXtyZXR1cm4gbn07dGhpcy5zZXRVQT1mdW5jdGlvbihpKXtuPXR5cGVvZiBpPT09bCYmaS5sZW5ndGg+cT90cmltKGkscSk6aTtyZXR1cm4gdGhpc307dGhpcy5zZXRVQShuKTtyZXR1cm4gdGhpc307VUFQYXJzZXIuVkVSU0lPTj1yO1VBUGFyc2VyLkJST1dTRVI9ZW51bWVyaXplKFt1LGYsZF0pO1VBUGFyc2VyLkNQVT1lbnVtZXJpemUoW2hdKTtVQVBhcnNlci5ERVZJQ0U9ZW51bWVyaXplKFtjLG0scCx2LGcseCxrLF8seV0pO1VBUGFyc2VyLkVOR0lORT1VQVBhcnNlci5PUz1lbnVtZXJpemUoW3UsZl0pO2lmKHR5cGVvZiBlIT09Yil7aWYoXCJvYmplY3RcIiE9PWImJmkuZXhwb3J0cyl7ZT1pLmV4cG9ydHM9VUFQYXJzZXJ9ZS5VQVBhcnNlcj1VQVBhcnNlcn1lbHNle2lmKHR5cGVvZiBkZWZpbmU9PT1zJiZkZWZpbmUuYW1kKXtkZWZpbmUoKGZ1bmN0aW9uKCl7cmV0dXJuIFVBUGFyc2VyfSkpfWVsc2UgaWYodHlwZW9mIG8hPT1iKXtvLlVBUGFyc2VyPVVBUGFyc2VyfX12YXIgUT10eXBlb2YgbyE9PWImJihvLmpRdWVyeXx8by5aZXB0byk7aWYoUSYmIVEudWEpe3ZhciBZPW5ldyBVQVBhcnNlcjtRLnVhPVkuZ2V0UmVzdWx0KCk7US51YS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gWS5nZXRVQSgpfTtRLnVhLnNldD1mdW5jdGlvbihpKXtZLnNldFVBKGkpO3ZhciBlPVkuZ2V0UmVzdWx0KCk7Zm9yKHZhciBvIGluIGUpe1EudWFbb109ZVtvXX19fX0pKHR5cGVvZiB3aW5kb3c9PT1cIm9iamVjdFwiP3dpbmRvdzp0aGlzKX19O3ZhciBlPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18obyl7dmFyIGE9ZVtvXTtpZihhIT09dW5kZWZpbmVkKXtyZXR1cm4gYS5leHBvcnRzfXZhciByPWVbb109e2V4cG9ydHM6e319O3ZhciB0PXRydWU7dHJ5e2lbb10uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7dD1mYWxzZX1maW5hbGx5e2lmKHQpZGVsZXRlIGVbb119cmV0dXJuIHIuZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIG89X19uY2N3cGNrX3JlcXVpcmVfXygyMjYpO21vZHVsZS5leHBvcnRzPW99KSgpOyJdLCJuYW1lcyI6WyJpIiwiZSIsIm8iLCJhIiwiciIsInQiLCJuIiwicyIsImIiLCJ3IiwibCIsImQiLCJjIiwidSIsInAiLCJtIiwiZiIsImgiLCJ2IiwiZyIsImsiLCJ4IiwiXyIsInkiLCJxIiwiVCIsIlMiLCJ6IiwiTiIsIkEiLCJDIiwiRSIsIk8iLCJVIiwiaiIsIlAiLCJSIiwiTSIsIkIiLCJWIiwiRCIsIkkiLCJXIiwiRiIsIkciLCJIIiwiTCIsIloiLCJleHRlbmQiLCJsZW5ndGgiLCJjb25jYXQiLCJlbnVtZXJpemUiLCJ0b1VwcGVyQ2FzZSIsImhhcyIsImxvd2VyaXplIiwiaW5kZXhPZiIsInRvTG93ZXJDYXNlIiwibWFqb3JpemUiLCJyZXBsYWNlIiwic3BsaXQiLCJ0cmltIiwic3Vic3RyaW5nIiwicmd4TWFwcGVyIiwiZXhlYyIsImNhbGwiLCJ0ZXN0Iiwic3RyTWFwcGVyIiwiJCIsIlgiLCJNRSIsIlhQIiwiVmlzdGEiLCJSVCIsIksiLCJicm93c2VyIiwiY3B1IiwiZGV2aWNlIiwiZW5naW5lIiwib3MiLCJVQVBhcnNlciIsImdldFJlc3VsdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInVzZXJBZ2VudERhdGEiLCJnZXRCcm93c2VyIiwiYnJhdmUiLCJpc0JyYXZlIiwiZ2V0Q1BVIiwiZ2V0RGV2aWNlIiwibW9iaWxlIiwic3RhbmRhbG9uZSIsIm1heFRvdWNoUG9pbnRzIiwiZ2V0RW5naW5lIiwiZ2V0T1MiLCJwbGF0Zm9ybSIsInVhIiwiZ2V0VUEiLCJzZXRVQSIsIlZFUlNJT04iLCJCUk9XU0VSIiwiQ1BVIiwiREVWSUNFIiwiRU5HSU5FIiwiT1MiLCJleHBvcnRzIiwiZGVmaW5lIiwiYW1kIiwiUSIsImpRdWVyeSIsIlplcHRvIiwiWSIsImdldCIsInNldCIsIndpbmRvdyIsIl9fbmNjd3Bja19yZXF1aXJlX18iLCJ1bmRlZmluZWQiLCJhYiIsIl9fZGlybmFtZSIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/api/server.js":
/*!**************************************************!*\
!*** ./node_modules/next/dist/esm/api/server.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageResponse: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.ImageResponse),\n/* harmony export */ NextRequest: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.NextRequest),\n/* harmony export */ NextResponse: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.NextResponse),\n/* harmony export */ URLPattern: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.URLPattern),\n/* harmony export */ userAgent: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.userAgent),\n/* harmony export */ userAgentFromString: () => (/* reexport safe */ _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__.userAgentFromString)\n/* harmony export */ });\n/* harmony import */ var _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../server/web/exports/index */ \"(rsc)/./node_modules/next/dist/esm/server/web/exports/index.js\");\n //# sourceMappingURL=server.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9hcGkvc2VydmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBNEMsQ0FFNUMsa0NBQWtDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2FwaS9zZXJ2ZXIuanM/ODNmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi4vc2VydmVyL3dlYi9leHBvcnRzL2luZGV4XCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcnZlci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/api/server.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/build/output/log.js":
/*!********************************************************!*\
!*** ./node_modules/next/dist/esm/build/output/log.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bootstrap: () => (/* binding */ bootstrap),\n/* harmony export */ error: () => (/* binding */ error),\n/* harmony export */ event: () => (/* binding */ event),\n/* harmony export */ info: () => (/* binding */ info),\n/* harmony export */ prefixes: () => (/* binding */ prefixes),\n/* harmony export */ ready: () => (/* binding */ ready),\n/* harmony export */ trace: () => (/* binding */ trace),\n/* harmony export */ wait: () => (/* binding */ wait),\n/* harmony export */ warn: () => (/* binding */ warn),\n/* harmony export */ warnOnce: () => (/* binding */ warnOnce)\n/* harmony export */ });\n/* harmony import */ var _lib_picocolors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/picocolors */ \"(rsc)/./node_modules/next/dist/esm/lib/picocolors.js\");\n\nconst prefixes = {\n wait: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.white)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\"○\")),\n error: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.red)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\"\")),\n warn: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.yellow)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\"⚠\")),\n ready: \"▲\",\n info: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.white)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\" \")),\n event: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.green)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\"✓\")),\n trace: (0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.magenta)((0,_lib_picocolors__WEBPACK_IMPORTED_MODULE_0__.bold)(\"\\xbb\"))\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 console[consoleMethod](\" \" + prefix, ...message);\n }\n}\nfunction bootstrap(...message) {\n console.log(\" \", ...message);\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 warnOnceMessages = new Set();\nfunction warnOnce(...message) {\n if (!warnOnceMessages.has(message[0])) {\n warnOnceMessages.add(message.join(\" \"));\n warn(...message);\n }\n} //# sourceMappingURL=log.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9idWlsZC9vdXRwdXQvbG9nLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWdGO0FBQ3pFLE1BQU1NLFdBQVc7SUFDcEJDLE1BQU1GLHNEQUFLQSxDQUFDTCxxREFBSUEsQ0FBQztJQUNqQlEsT0FBT0wsb0RBQUdBLENBQUNILHFEQUFJQSxDQUFDO0lBQ2hCUyxNQUFNTCx1REFBTUEsQ0FBQ0oscURBQUlBLENBQUM7SUFDbEJVLE9BQU87SUFDUEMsTUFBTU4sc0RBQUtBLENBQUNMLHFEQUFJQSxDQUFDO0lBQ2pCWSxPQUFPWCxzREFBS0EsQ0FBQ0QscURBQUlBLENBQUM7SUFDbEJhLE9BQU9YLHdEQUFPQSxDQUFDRixxREFBSUEsQ0FBQztBQUN4QixFQUFFO0FBQ0YsTUFBTWMsaUJBQWlCO0lBQ25CQyxLQUFLO0lBQ0xOLE1BQU07SUFDTkQsT0FBTztBQUNYO0FBQ0EsU0FBU1EsWUFBWUMsVUFBVSxFQUFFLEdBQUdDLE9BQU87SUFDdkMsSUFBSSxDQUFDQSxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU1BLE9BQU8sQ0FBQyxFQUFFLEtBQUtDLFNBQVEsS0FBTUQsUUFBUUUsTUFBTSxLQUFLLEdBQUc7UUFDekVGLFFBQVFHLEtBQUs7SUFDakI7SUFDQSxNQUFNQyxnQkFBZ0JMLGNBQWNILGlCQUFpQkEsY0FBYyxDQUFDRyxXQUFXLEdBQUc7SUFDbEYsTUFBTU0sU0FBU2pCLFFBQVEsQ0FBQ1csV0FBVztJQUNuQywrREFBK0Q7SUFDL0QsSUFBSUMsUUFBUUUsTUFBTSxLQUFLLEdBQUc7UUFDdEJJLE9BQU8sQ0FBQ0YsY0FBYyxDQUFDO0lBQzNCLE9BQU87UUFDSEUsT0FBTyxDQUFDRixjQUFjLENBQUMsTUFBTUMsV0FBV0w7SUFDNUM7QUFDSjtBQUNPLFNBQVNPLFVBQVUsR0FBR1AsT0FBTztJQUNoQ00sUUFBUVQsR0FBRyxDQUFDLFFBQVFHO0FBQ3hCO0FBQ08sU0FBU1gsS0FBSyxHQUFHVyxPQUFPO0lBQzNCRixZQUFZLFdBQVdFO0FBQzNCO0FBQ08sU0FBU1YsTUFBTSxHQUFHVSxPQUFPO0lBQzVCRixZQUFZLFlBQVlFO0FBQzVCO0FBQ08sU0FBU1QsS0FBSyxHQUFHUyxPQUFPO0lBQzNCRixZQUFZLFdBQVdFO0FBQzNCO0FBQ08sU0FBU1IsTUFBTSxHQUFHUSxPQUFPO0lBQzVCRixZQUFZLFlBQVlFO0FBQzVCO0FBQ08sU0FBU1AsS0FBSyxHQUFHTyxPQUFPO0lBQzNCRixZQUFZLFdBQVdFO0FBQzNCO0FBQ08sU0FBU04sTUFBTSxHQUFHTSxPQUFPO0lBQzVCRixZQUFZLFlBQVlFO0FBQzVCO0FBQ08sU0FBU0wsTUFBTSxHQUFHSyxPQUFPO0lBQzVCRixZQUFZLFlBQVlFO0FBQzVCO0FBQ0EsTUFBTVEsbUJBQW1CLElBQUlDO0FBQ3RCLFNBQVNDLFNBQVMsR0FBR1YsT0FBTztJQUMvQixJQUFJLENBQUNRLGlCQUFpQkcsR0FBRyxDQUFDWCxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ25DUSxpQkFBaUJJLEdBQUcsQ0FBQ1osUUFBUWEsSUFBSSxDQUFDO1FBQ2xDdEIsUUFBUVM7SUFDWjtBQUNKLEVBRUEsK0JBQStCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2J1aWxkL291dHB1dC9sb2cuanM/MGM5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib2xkLCBncmVlbiwgbWFnZW50YSwgcmVkLCB5ZWxsb3csIHdoaXRlIH0gZnJvbSBcIi4uLy4uL2xpYi9waWNvY29sb3JzXCI7XG5leHBvcnQgY29uc3QgcHJlZml4ZXMgPSB7XG4gICAgd2FpdDogd2hpdGUoYm9sZChcIuKXi1wiKSksXG4gICAgZXJyb3I6IHJlZChib2xkKFwi4qivXCIpKSxcbiAgICB3YXJuOiB5ZWxsb3coYm9sZChcIuKaoFwiKSksXG4gICAgcmVhZHk6IFwi4payXCIsXG4gICAgaW5mbzogd2hpdGUoYm9sZChcIiBcIikpLFxuICAgIGV2ZW50OiBncmVlbihib2xkKFwi4pyTXCIpKSxcbiAgICB0cmFjZTogbWFnZW50YShib2xkKFwiXFx4YmJcIikpXG59O1xuY29uc3QgTE9HR0lOR19NRVRIT0QgPSB7XG4gICAgbG9nOiBcImxvZ1wiLFxuICAgIHdhcm46IFwid2FyblwiLFxuICAgIGVycm9yOiBcImVycm9yXCJcbn07XG5mdW5jdGlvbiBwcmVmaXhlZExvZyhwcmVmaXhUeXBlLCAuLi5tZXNzYWdlKSB7XG4gICAgaWYgKChtZXNzYWdlWzBdID09PSBcIlwiIHx8IG1lc3NhZ2VbMF0gPT09IHVuZGVmaW5lZCkgJiYgbWVzc2FnZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgbWVzc2FnZS5zaGlmdCgpO1xuICAgIH1cbiAgICBjb25zdCBjb25zb2xlTWV0aG9kID0gcHJlZml4VHlwZSBpbiBMT0dHSU5HX01FVEhPRCA/IExPR0dJTkdfTUVUSE9EW3ByZWZpeFR5cGVdIDogXCJsb2dcIjtcbiAgICBjb25zdCBwcmVmaXggPSBwcmVmaXhlc1twcmVmaXhUeXBlXTtcbiAgICAvLyBJZiB0aGVyZSdzIG5vIG1lc3NhZ2UsIGRvbid0IHByaW50IHRoZSBwcmVmaXggYnV0IGEgbmV3IGxpbmVcbiAgICBpZiAobWVzc2FnZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZVtjb25zb2xlTWV0aG9kXShcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlW2NvbnNvbGVNZXRob2RdKFwiIFwiICsgcHJlZml4LCAuLi5tZXNzYWdlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwKC4uLm1lc3NhZ2UpIHtcbiAgICBjb25zb2xlLmxvZyhcIiBcIiwgLi4ubWVzc2FnZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2FpdCguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coXCJ3YWl0XCIsIC4uLm1lc3NhZ2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yKC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZyhcImVycm9yXCIsIC4uLm1lc3NhZ2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdhcm4oLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKFwid2FyblwiLCAuLi5tZXNzYWdlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWFkeSguLi5tZXNzYWdlKSB7XG4gICAgcHJlZml4ZWRMb2coXCJyZWFkeVwiLCAuLi5tZXNzYWdlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKC4uLm1lc3NhZ2UpIHtcbiAgICBwcmVmaXhlZExvZyhcImluZm9cIiwgLi4ubWVzc2FnZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXZlbnQoLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKFwiZXZlbnRcIiwgLi4ubWVzc2FnZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhY2UoLi4ubWVzc2FnZSkge1xuICAgIHByZWZpeGVkTG9nKFwidHJhY2VcIiwgLi4ubWVzc2FnZSk7XG59XG5jb25zdCB3YXJuT25jZU1lc3NhZ2VzID0gbmV3IFNldCgpO1xuZXhwb3J0IGZ1bmN0aW9uIHdhcm5PbmNlKC4uLm1lc3NhZ2UpIHtcbiAgICBpZiAoIXdhcm5PbmNlTWVzc2FnZXMuaGFzKG1lc3NhZ2VbMF0pKSB7XG4gICAgICAgIHdhcm5PbmNlTWVzc2FnZXMuYWRkKG1lc3NhZ2Uuam9pbihcIiBcIikpO1xuICAgICAgICB3YXJuKC4uLm1lc3NhZ2UpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bG9nLmpzLm1hcCJdLCJuYW1lcyI6WyJib2xkIiwiZ3JlZW4iLCJtYWdlbnRhIiwicmVkIiwieWVsbG93Iiwid2hpdGUiLCJwcmVmaXhlcyIsIndhaXQiLCJlcnJvciIsIndhcm4iLCJyZWFkeSIsImluZm8iLCJldmVudCIsInRyYWNlIiwiTE9HR0lOR19NRVRIT0QiLCJsb2ciLCJwcmVmaXhlZExvZyIsInByZWZpeFR5cGUiLCJtZXNzYWdlIiwidW5kZWZpbmVkIiwibGVuZ3RoIiwic2hpZnQiLCJjb25zb2xlTWV0aG9kIiwicHJlZml4IiwiY29uc29sZSIsImJvb3RzdHJhcCIsIndhcm5PbmNlTWVzc2FnZXMiLCJTZXQiLCJ3YXJuT25jZSIsImhhcyIsImFkZCIsImpvaW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/build/output/log.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js ***!
\*********************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createProxy: () => (/* binding */ createProxy)\n/* harmony export */ });\n/* harmony import */ var react_server_dom_webpack_server_edge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-server-dom-webpack/server.edge */ \"(rsc)/./node_modules/next/dist/compiled/react-server-dom-webpack/server.edge.js\");\n/* eslint-disable import/no-extraneous-dependencies */ \n// Re-assign to make it typed.\nconst createProxy = react_server_dom_webpack_server_edge__WEBPACK_IMPORTED_MODULE_0__.createClientModuleProxy; //# sourceMappingURL=module-proxy.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUFvRCxHQUFrRjtBQUN0SSw4QkFBOEI7QUFDdkIsTUFBTUMsY0FBY0QseUZBQXVCQSxDQUFDLENBRW5ELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtbG9hZGVyL21vZHVsZS1wcm94eS5qcz9mZjZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqLyBpbXBvcnQgeyBjcmVhdGVDbGllbnRNb2R1bGVQcm94eSB9IGZyb20gXCJyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svc2VydmVyLmVkZ2VcIjtcbi8vIFJlLWFzc2lnbiB0byBtYWtlIGl0IHR5cGVkLlxuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb3h5ID0gY3JlYXRlQ2xpZW50TW9kdWxlUHJveHk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZHVsZS1wcm94eS5qcy5tYXAiXSwibmFtZXMiOlsiY3JlYXRlQ2xpZW50TW9kdWxlUHJveHkiLCJjcmVhdGVQcm94eSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js":
/*!****************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/app-router-headers.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ACTION: () => (/* binding */ ACTION),\n/* harmony export */ FLIGHT_PARAMETERS: () => (/* binding */ FLIGHT_PARAMETERS),\n/* harmony export */ NEXT_DID_POSTPONE_HEADER: () => (/* binding */ NEXT_DID_POSTPONE_HEADER),\n/* harmony export */ NEXT_ROUTER_PREFETCH_HEADER: () => (/* binding */ NEXT_ROUTER_PREFETCH_HEADER),\n/* harmony export */ NEXT_ROUTER_STATE_TREE: () => (/* binding */ NEXT_ROUTER_STATE_TREE),\n/* harmony export */ NEXT_RSC_UNION_QUERY: () => (/* binding */ NEXT_RSC_UNION_QUERY),\n/* harmony export */ NEXT_URL: () => (/* binding */ NEXT_URL),\n/* harmony export */ RSC_CONTENT_TYPE_HEADER: () => (/* binding */ RSC_CONTENT_TYPE_HEADER),\n/* harmony export */ RSC_HEADER: () => (/* binding */ RSC_HEADER),\n/* harmony export */ RSC_VARY_HEADER: () => (/* binding */ RSC_VARY_HEADER)\n/* harmony export */ });\nconst RSC_HEADER = \"RSC\";\nconst ACTION = \"Next-Action\";\nconst NEXT_ROUTER_STATE_TREE = \"Next-Router-State-Tree\";\nconst NEXT_ROUTER_PREFETCH_HEADER = \"Next-Router-Prefetch\";\nconst NEXT_URL = \"Next-Url\";\nconst RSC_CONTENT_TYPE_HEADER = \"text/x-component\";\nconst RSC_VARY_HEADER = RSC_HEADER + \", \" + NEXT_ROUTER_STATE_TREE + \", \" + NEXT_ROUTER_PREFETCH_HEADER + \", \" + NEXT_URL;\nconst FLIGHT_PARAMETERS = [\n [\n RSC_HEADER\n ],\n [\n NEXT_ROUTER_STATE_TREE\n ],\n [\n NEXT_ROUTER_PREFETCH_HEADER\n ]\n];\nconst NEXT_RSC_UNION_QUERY = \"_rsc\";\nconst NEXT_DID_POSTPONE_HEADER = \"x-nextjs-postponed\"; //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFPLE1BQU1BLGFBQWEsTUFBTTtBQUN6QixNQUFNQyxTQUFTLGNBQWM7QUFDN0IsTUFBTUMseUJBQXlCLHlCQUF5QjtBQUN4RCxNQUFNQyw4QkFBOEIsdUJBQXVCO0FBQzNELE1BQU1DLFdBQVcsV0FBVztBQUM1QixNQUFNQywwQkFBMEIsbUJBQW1CO0FBQ25ELE1BQU1DLGtCQUFrQk4sYUFBYSxPQUFPRSx5QkFBeUIsT0FBT0MsOEJBQThCLE9BQU9DLFNBQVM7QUFDMUgsTUFBTUcsb0JBQW9CO0lBQzdCO1FBQ0lQO0tBQ0g7SUFDRDtRQUNJRTtLQUNIO0lBQ0Q7UUFDSUM7S0FDSDtDQUNKLENBQUM7QUFDSyxNQUFNSyx1QkFBdUIsT0FBTztBQUNwQyxNQUFNQywyQkFBMkIscUJBQXFCLENBRTdELDhDQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMuanM/MjI3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9IFwiUlNDXCI7XG5leHBvcnQgY29uc3QgQUNUSU9OID0gXCJOZXh0LUFjdGlvblwiO1xuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NUQVRFX1RSRUUgPSBcIk5leHQtUm91dGVyLVN0YXRlLVRyZWVcIjtcbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIgPSBcIk5leHQtUm91dGVyLVByZWZldGNoXCI7XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSBcIk5leHQtVXJsXCI7XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSBcInRleHQveC1jb21wb25lbnRcIjtcbmV4cG9ydCBjb25zdCBSU0NfVkFSWV9IRUFERVIgPSBSU0NfSEVBREVSICsgXCIsIFwiICsgTkVYVF9ST1VURVJfU1RBVEVfVFJFRSArIFwiLCBcIiArIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiArIFwiLCBcIiArIE5FWFRfVVJMO1xuZXhwb3J0IGNvbnN0IEZMSUdIVF9QQVJBTUVURVJTID0gW1xuICAgIFtcbiAgICAgICAgUlNDX0hFQURFUlxuICAgIF0sXG4gICAgW1xuICAgICAgICBORVhUX1JPVVRFUl9TVEFURV9UUkVFXG4gICAgXSxcbiAgICBbXG4gICAgICAgIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUlxuICAgIF1cbl07XG5leHBvcnQgY29uc3QgTkVYVF9SU0NfVU5JT05fUVVFUlkgPSBcIl9yc2NcIjtcbmV4cG9ydCBjb25zdCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIgPSBcIngtbmV4dGpzLXBvc3Rwb25lZFwiO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcm91dGVyLWhlYWRlcnMuanMubWFwIl0sIm5hbWVzIjpbIlJTQ19IRUFERVIiLCJBQ1RJT04iLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9VUkwiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIlJTQ19WQVJZX0hFQURFUiIsIkZMSUdIVF9QQVJBTUVURVJTIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/draft-mode.js":
/*!********************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/draft-mode.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DraftMode: () => (/* binding */ DraftMode)\n/* harmony export */ });\n/* harmony import */ var _static_generation_bailout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./static-generation-bailout */ \"(rsc)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js\");\n\nclass DraftMode {\n get isEnabled() {\n return this._provider.isEnabled;\n }\n enable() {\n if ((0,_static_generation_bailout__WEBPACK_IMPORTED_MODULE_0__.staticGenerationBailout)(\"draftMode().enable()\")) {\n return;\n }\n return this._provider.enable();\n }\n disable() {\n if ((0,_static_generation_bailout__WEBPACK_IMPORTED_MODULE_0__.staticGenerationBailout)(\"draftMode().disable()\")) {\n return;\n }\n return this._provider.disable();\n }\n constructor(provider){\n this._provider = provider;\n }\n} //# sourceMappingURL=draft-mode.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9kcmFmdC1tb2RlLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXNFO0FBQy9ELE1BQU1DO0lBQ1QsSUFBSUMsWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDQyxTQUFTLENBQUNELFNBQVM7SUFDbkM7SUFDQUUsU0FBUztRQUNMLElBQUlKLG1GQUF1QkEsQ0FBQyx5QkFBeUI7WUFDakQ7UUFDSjtRQUNBLE9BQU8sSUFBSSxDQUFDRyxTQUFTLENBQUNDLE1BQU07SUFDaEM7SUFDQUMsVUFBVTtRQUNOLElBQUlMLG1GQUF1QkEsQ0FBQywwQkFBMEI7WUFDbEQ7UUFDSjtRQUNBLE9BQU8sSUFBSSxDQUFDRyxTQUFTLENBQUNFLE9BQU87SUFDakM7SUFDQUMsWUFBWUMsUUFBUSxDQUFDO1FBQ2pCLElBQUksQ0FBQ0osU0FBUyxHQUFHSTtJQUNyQjtBQUNKLEVBRUEsc0NBQXNDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2NsaWVudC9jb21wb25lbnRzL2RyYWZ0LW1vZGUuanM/OTFhYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGF0aWNHZW5lcmF0aW9uQmFpbG91dCB9IGZyb20gXCIuL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXRcIjtcbmV4cG9ydCBjbGFzcyBEcmFmdE1vZGUge1xuICAgIGdldCBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5pc0VuYWJsZWQ7XG4gICAgfVxuICAgIGVuYWJsZSgpIHtcbiAgICAgICAgaWYgKHN0YXRpY0dlbmVyYXRpb25CYWlsb3V0KFwiZHJhZnRNb2RlKCkuZW5hYmxlKClcIikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIuZW5hYmxlKCk7XG4gICAgfVxuICAgIGRpc2FibGUoKSB7XG4gICAgICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uQmFpbG91dChcImRyYWZ0TW9kZSgpLmRpc2FibGUoKVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHByb3ZpZGVyKXtcbiAgICAgICAgdGhpcy5fcHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRyYWZ0LW1vZGUuanMubWFwIl0sIm5hbWVzIjpbInN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IiwiRHJhZnRNb2RlIiwiaXNFbmFibGVkIiwiX3Byb3ZpZGVyIiwiZW5hYmxlIiwiZGlzYWJsZSIsImNvbnN0cnVjdG9yIiwicHJvdmlkZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/draft-mode.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/headers.js":
/*!*****************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/headers.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cookies: () => (/* binding */ cookies),\n/* harmony export */ draftMode: () => (/* binding */ draftMode),\n/* harmony export */ headers: () => (/* binding */ headers)\n/* harmony export */ });\n/* harmony import */ var _server_web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../server/web/spec-extension/adapters/request-cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js\");\n/* harmony import */ var _server_web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../server/web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js\");\n/* harmony import */ var _server_web_spec_extension_cookies__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../server/web/spec-extension/cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\");\n/* harmony import */ var _request_async_storage_external__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./request-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js\");\n/* harmony import */ var _action_async_storage_external__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./action-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js\");\n/* harmony import */ var _static_generation_bailout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./static-generation-bailout */ \"(rsc)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js\");\n/* harmony import */ var _draft_mode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draft-mode */ \"(rsc)/./node_modules/next/dist/esm/client/components/draft-mode.js\");\n\n\n\n\n\n\n\nfunction headers() {\n if ((0,_static_generation_bailout__WEBPACK_IMPORTED_MODULE_5__.staticGenerationBailout)(\"headers\", {\n link: \"https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering\"\n })) {\n return _server_web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__.HeadersAdapter.seal(new Headers({}));\n }\n const requestStore = _request_async_storage_external__WEBPACK_IMPORTED_MODULE_3__.requestAsyncStorage.getStore();\n if (!requestStore) {\n throw new Error(\"Invariant: headers() expects to have requestAsyncStorage, none available.\");\n }\n return requestStore.headers;\n}\nfunction cookies() {\n if ((0,_static_generation_bailout__WEBPACK_IMPORTED_MODULE_5__.staticGenerationBailout)(\"cookies\", {\n link: \"https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering\"\n })) {\n return _server_web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_0__.RequestCookiesAdapter.seal(new _server_web_spec_extension_cookies__WEBPACK_IMPORTED_MODULE_2__.RequestCookies(new Headers({})));\n }\n const requestStore = _request_async_storage_external__WEBPACK_IMPORTED_MODULE_3__.requestAsyncStorage.getStore();\n if (!requestStore) {\n throw new Error(\"Invariant: cookies() expects to have requestAsyncStorage, none available.\");\n }\n const asyncActionStore = _action_async_storage_external__WEBPACK_IMPORTED_MODULE_4__.actionAsyncStorage.getStore();\n if (asyncActionStore && (asyncActionStore.isAction || asyncActionStore.isAppRoute)) {\n // We can't conditionally return different types here based on the context.\n // To avoid confusion, we always return the readonly type here.\n return requestStore.mutableCookies;\n }\n return requestStore.cookies;\n}\nfunction draftMode() {\n const requestStore = _request_async_storage_external__WEBPACK_IMPORTED_MODULE_3__.requestAsyncStorage.getStore();\n if (!requestStore) {\n throw new Error(\"Invariant: draftMode() expects to have requestAsyncStorage, none available.\");\n }\n return new _draft_mode__WEBPACK_IMPORTED_MODULE_6__.DraftMode(requestStore.draftMode);\n} //# sourceMappingURL=headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9oZWFkZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBaUc7QUFDZjtBQUNUO0FBQ0Y7QUFDRjtBQUNDO0FBQzdCO0FBQ2xDLFNBQVNPO0lBQ1osSUFBSUYsbUZBQXVCQSxDQUFDLFdBQVc7UUFDbkNHLE1BQU07SUFDVixJQUFJO1FBQ0EsT0FBT1AsdUZBQWNBLENBQUNRLElBQUksQ0FBQyxJQUFJQyxRQUFRLENBQUM7SUFDNUM7SUFDQSxNQUFNQyxlQUFlUixnRkFBbUJBLENBQUNTLFFBQVE7SUFDakQsSUFBSSxDQUFDRCxjQUFjO1FBQ2YsTUFBTSxJQUFJRSxNQUFNO0lBQ3BCO0lBQ0EsT0FBT0YsYUFBYUosT0FBTztBQUMvQjtBQUNPLFNBQVNPO0lBQ1osSUFBSVQsbUZBQXVCQSxDQUFDLFdBQVc7UUFDbkNHLE1BQU07SUFDVixJQUFJO1FBQ0EsT0FBT1Isc0dBQXFCQSxDQUFDUyxJQUFJLENBQUMsSUFBSVAsOEVBQWNBLENBQUMsSUFBSVEsUUFBUSxDQUFDO0lBQ3RFO0lBQ0EsTUFBTUMsZUFBZVIsZ0ZBQW1CQSxDQUFDUyxRQUFRO0lBQ2pELElBQUksQ0FBQ0QsY0FBYztRQUNmLE1BQU0sSUFBSUUsTUFBTTtJQUNwQjtJQUNBLE1BQU1FLG1CQUFtQlgsOEVBQWtCQSxDQUFDUSxRQUFRO0lBQ3BELElBQUlHLG9CQUFxQkEsQ0FBQUEsaUJBQWlCQyxRQUFRLElBQUlELGlCQUFpQkUsVUFBVSxHQUFHO1FBQ2hGLDJFQUEyRTtRQUMzRSwrREFBK0Q7UUFDL0QsT0FBT04sYUFBYU8sY0FBYztJQUN0QztJQUNBLE9BQU9QLGFBQWFHLE9BQU87QUFDL0I7QUFDTyxTQUFTSztJQUNaLE1BQU1SLGVBQWVSLGdGQUFtQkEsQ0FBQ1MsUUFBUTtJQUNqRCxJQUFJLENBQUNELGNBQWM7UUFDZixNQUFNLElBQUlFLE1BQU07SUFDcEI7SUFDQSxPQUFPLElBQUlQLGtEQUFTQSxDQUFDSyxhQUFhUSxTQUFTO0FBQy9DLEVBRUEsbUNBQW1DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2NsaWVudC9jb21wb25lbnRzL2hlYWRlcnMuanM/NTdiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXF1ZXN0Q29va2llc0FkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZXF1ZXN0LWNvb2tpZXNcIjtcbmltcG9ydCB7IEhlYWRlcnNBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVyc1wiO1xuaW1wb3J0IHsgUmVxdWVzdENvb2tpZXMgfSBmcm9tIFwiLi4vLi4vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9jb29raWVzXCI7XG5pbXBvcnQgeyByZXF1ZXN0QXN5bmNTdG9yYWdlIH0gZnJvbSBcIi4vcmVxdWVzdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCI7XG5pbXBvcnQgeyBhY3Rpb25Bc3luY1N0b3JhZ2UgfSBmcm9tIFwiLi9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiO1xuaW1wb3J0IHsgc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQgfSBmcm9tIFwiLi9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0XCI7XG5pbXBvcnQgeyBEcmFmdE1vZGUgfSBmcm9tIFwiLi9kcmFmdC1tb2RlXCI7XG5leHBvcnQgZnVuY3Rpb24gaGVhZGVycygpIHtcbiAgICBpZiAoc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQoXCJoZWFkZXJzXCIsIHtcbiAgICAgICAgbGluazogXCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc3RhdGljLWFuZC1keW5hbWljI2R5bmFtaWMtcmVuZGVyaW5nXCJcbiAgICB9KSkge1xuICAgICAgICByZXR1cm4gSGVhZGVyc0FkYXB0ZXIuc2VhbChuZXcgSGVhZGVycyh7fSkpO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0U3RvcmUgPSByZXF1ZXN0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCFyZXF1ZXN0U3RvcmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YXJpYW50OiBoZWFkZXJzKCkgZXhwZWN0cyB0byBoYXZlIHJlcXVlc3RBc3luY1N0b3JhZ2UsIG5vbmUgYXZhaWxhYmxlLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RTdG9yZS5oZWFkZXJzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvb2tpZXMoKSB7XG4gICAgaWYgKHN0YXRpY0dlbmVyYXRpb25CYWlsb3V0KFwiY29va2llc1wiLCB7XG4gICAgICAgIGxpbms6IFwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3N0YXRpYy1hbmQtZHluYW1pYyNkeW5hbWljLXJlbmRlcmluZ1wiXG4gICAgfSkpIHtcbiAgICAgICAgcmV0dXJuIFJlcXVlc3RDb29raWVzQWRhcHRlci5zZWFsKG5ldyBSZXF1ZXN0Q29va2llcyhuZXcgSGVhZGVycyh7fSkpKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdFN0b3JlID0gcmVxdWVzdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmICghcmVxdWVzdFN0b3JlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFyaWFudDogY29va2llcygpIGV4cGVjdHMgdG8gaGF2ZSByZXF1ZXN0QXN5bmNTdG9yYWdlLCBub25lIGF2YWlsYWJsZS5cIik7XG4gICAgfVxuICAgIGNvbnN0IGFzeW5jQWN0aW9uU3RvcmUgPSBhY3Rpb25Bc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoYXN5bmNBY3Rpb25TdG9yZSAmJiAoYXN5bmNBY3Rpb25TdG9yZS5pc0FjdGlvbiB8fCBhc3luY0FjdGlvblN0b3JlLmlzQXBwUm91dGUpKSB7XG4gICAgICAgIC8vIFdlIGNhbid0IGNvbmRpdGlvbmFsbHkgcmV0dXJuIGRpZmZlcmVudCB0eXBlcyBoZXJlIGJhc2VkIG9uIHRoZSBjb250ZXh0LlxuICAgICAgICAvLyBUbyBhdm9pZCBjb25mdXNpb24sIHdlIGFsd2F5cyByZXR1cm4gdGhlIHJlYWRvbmx5IHR5cGUgaGVyZS5cbiAgICAgICAgcmV0dXJuIHJlcXVlc3RTdG9yZS5tdXRhYmxlQ29va2llcztcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RTdG9yZS5jb29raWVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRyYWZ0TW9kZSgpIHtcbiAgICBjb25zdCByZXF1ZXN0U3RvcmUgPSByZXF1ZXN0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKCFyZXF1ZXN0U3RvcmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YXJpYW50OiBkcmFmdE1vZGUoKSBleHBlY3RzIHRvIGhhdmUgcmVxdWVzdEFzeW5jU3RvcmFnZSwgbm9uZSBhdmFpbGFibGUuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERyYWZ0TW9kZShyZXF1ZXN0U3RvcmUuZHJhZnRNb2RlKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZGVycy5qcy5tYXAiXSwibmFtZXMiOlsiUmVxdWVzdENvb2tpZXNBZGFwdGVyIiwiSGVhZGVyc0FkYXB0ZXIiLCJSZXF1ZXN0Q29va2llcyIsInJlcXVlc3RBc3luY1N0b3JhZ2UiLCJhY3Rpb25Bc3luY1N0b3JhZ2UiLCJzdGF0aWNHZW5lcmF0aW9uQmFpbG91dCIsIkRyYWZ0TW9kZSIsImhlYWRlcnMiLCJsaW5rIiwic2VhbCIsIkhlYWRlcnMiLCJyZXF1ZXN0U3RvcmUiLCJnZXRTdG9yZSIsIkVycm9yIiwiY29va2llcyIsImFzeW5jQWN0aW9uU3RvcmUiLCJpc0FjdGlvbiIsImlzQXBwUm91dGUiLCJtdXRhYmxlQ29va2llcyIsImRyYWZ0TW9kZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/headers.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/hooks-server-context.js":
/*!******************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/hooks-server-context.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DynamicServerError: () => (/* binding */ DynamicServerError),\n/* harmony export */ isDynamicServerError: () => (/* binding */ isDynamicServerError)\n/* harmony export */ });\nconst DYNAMIC_ERROR_CODE = \"DYNAMIC_SERVER_USAGE\";\nclass DynamicServerError extends Error {\n constructor(description){\n super(\"Dynamic server usage: \" + description);\n this.description = description;\n 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} //# sourceMappingURL=hooks-server-context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQU1BLHFCQUFxQjtBQUNwQixNQUFNQywyQkFBMkJDO0lBQ3BDQyxZQUFZQyxXQUFXLENBQUM7UUFDcEIsS0FBSyxDQUFDLDJCQUEyQkE7UUFDakMsSUFBSSxDQUFDQSxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsTUFBTSxHQUFHTDtJQUNsQjtBQUNKO0FBQ08sU0FBU00scUJBQXFCQyxHQUFHO0lBQ3BDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLFFBQVEsQ0FBRSxhQUFZQSxHQUFFLEtBQU0sT0FBT0EsSUFBSUYsTUFBTSxLQUFLLFVBQVU7UUFDakcsT0FBTztJQUNYO0lBQ0EsT0FBT0UsSUFBSUYsTUFBTSxLQUFLTDtBQUMxQixFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC5qcz84MmVkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERZTkFNSUNfRVJST1JfQ09ERSA9IFwiRFlOQU1JQ19TRVJWRVJfVVNBR0VcIjtcbmV4cG9ydCBjbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoZGVzY3JpcHRpb24pe1xuICAgICAgICBzdXBlcihcIkR5bmFtaWMgc2VydmVyIHVzYWdlOiBcIiArIGRlc2NyaXB0aW9uKTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmRpZ2VzdCA9IERZTkFNSUNfRVJST1JfQ09ERTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEeW5hbWljU2VydmVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKHR5cGVvZiBlcnIgIT09IFwib2JqZWN0XCIgfHwgZXJyID09PSBudWxsIHx8ICEoXCJkaWdlc3RcIiBpbiBlcnIpIHx8IHR5cGVvZiBlcnIuZGlnZXN0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVyci5kaWdlc3QgPT09IERZTkFNSUNfRVJST1JfQ09ERTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG9va3Mtc2VydmVyLWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbIkRZTkFNSUNfRVJST1JfQ09ERSIsIkR5bmFtaWNTZXJ2ZXJFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJkZXNjcmlwdGlvbiIsImRpZ2VzdCIsImlzRHluYW1pY1NlcnZlckVycm9yIiwiZXJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/hooks-server-context.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/not-found.js":
/*!*******************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/not-found.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isNotFoundError: () => (/* binding */ isNotFoundError),\n/* harmony export */ notFound: () => (/* binding */ notFound)\n/* harmony export */ });\nconst NOT_FOUND_ERROR_CODE = \"NEXT_NOT_FOUND\";\n/**\n * When used in a React server component, this will set the status code to 404.\n * When used in a custom app route it will just send a 404 status.\n */ function notFound() {\n // eslint-disable-next-line no-throw-literal\n const error = new Error(NOT_FOUND_ERROR_CODE);\n error.digest = NOT_FOUND_ERROR_CODE;\n throw error;\n}\n/**\n * Checks an error to determine if it's an error generated by the `notFound()`\n * helper.\n *\n * @param error the error that may reference a not found error\n * @returns true if the error is a not found error\n */ function isNotFoundError(error) {\n if (typeof error !== \"object\" || error === null || !(\"digest\" in error)) {\n return false;\n }\n return error.digest === NOT_FOUND_ERROR_CODE;\n} //# sourceMappingURL=not-found.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNQSx1QkFBdUI7QUFDN0I7OztDQUdDLEdBQVUsU0FBU0M7SUFDaEIsNENBQTRDO0lBQzVDLE1BQU1DLFFBQVEsSUFBSUMsTUFBTUg7SUFDeEJFLE1BQU1FLE1BQU0sR0FBR0o7SUFDZixNQUFNRTtBQUNWO0FBQ0E7Ozs7OztDQU1DLEdBQVUsU0FBU0csZ0JBQWdCSCxLQUFLO0lBQ3JDLElBQUksT0FBT0EsVUFBVSxZQUFZQSxVQUFVLFFBQVEsQ0FBRSxhQUFZQSxLQUFJLEdBQUk7UUFDckUsT0FBTztJQUNYO0lBQ0EsT0FBT0EsTUFBTUUsTUFBTSxLQUFLSjtBQUM1QixFQUVBLHFDQUFxQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQuanM/YThmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IFwiTkVYVF9OT1RfRk9VTkRcIjtcbi8qKlxuICogV2hlbiB1c2VkIGluIGEgUmVhY3Qgc2VydmVyIGNvbXBvbmVudCwgdGhpcyB3aWxsIHNldCB0aGUgc3RhdHVzIGNvZGUgdG8gNDA0LlxuICogV2hlbiB1c2VkIGluIGEgY3VzdG9tIGFwcCByb3V0ZSBpdCB3aWxsIGp1c3Qgc2VuZCBhIDQwNCBzdGF0dXMuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIG5vdEZvdW5kKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoTk9UX0ZPVU5EX0VSUk9SX0NPREUpO1xuICAgIGVycm9yLmRpZ2VzdCA9IE5PVF9GT1VORF9FUlJPUl9DT0RFO1xuICAgIHRocm93IGVycm9yO1xufVxuLyoqXG4gKiBDaGVja3MgYW4gZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYW4gZXJyb3IgZ2VuZXJhdGVkIGJ5IHRoZSBgbm90Rm91bmQoKWBcbiAqIGhlbHBlci5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIG5vdCBmb3VuZCBlcnJvclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSBub3QgZm91bmQgZXJyb3JcbiAqLyBleHBvcnQgZnVuY3Rpb24gaXNOb3RGb3VuZEVycm9yKGVycm9yKSB7XG4gICAgaWYgKHR5cGVvZiBlcnJvciAhPT0gXCJvYmplY3RcIiB8fCBlcnJvciA9PT0gbnVsbCB8fCAhKFwiZGlnZXN0XCIgaW4gZXJyb3IpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yLmRpZ2VzdCA9PT0gTk9UX0ZPVU5EX0VSUk9SX0NPREU7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vdC1mb3VuZC5qcy5tYXAiXSwibmFtZXMiOlsiTk9UX0ZPVU5EX0VSUk9SX0NPREUiLCJub3RGb3VuZCIsImVycm9yIiwiRXJyb3IiLCJkaWdlc3QiLCJpc05vdEZvdW5kRXJyb3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/not-found.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/redirect-status-code.js":
/*!******************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/redirect-status-code.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RedirectStatusCode: () => (/* binding */ RedirectStatusCode)\n/* harmony export */ });\nvar RedirectStatusCode;\n(function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n})(RedirectStatusCode || (RedirectStatusCode = {})); //# sourceMappingURL=redirect-status-code.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC1zdGF0dXMtY29kZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sSUFBSUEsbUJBQW1CO0FBQzdCLFVBQVNBLGtCQUFrQjtJQUN4QkEsa0JBQWtCLENBQUNBLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUc7SUFDM0RBLGtCQUFrQixDQUFDQSxrQkFBa0IsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEdBQUc7SUFDcEVBLGtCQUFrQixDQUFDQSxrQkFBa0IsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEdBQUc7QUFDeEUsR0FBR0Esc0JBQXVCQSxDQUFBQSxxQkFBcUIsQ0FBQyxLQUVoRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGUuanM/YzkzMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFJlZGlyZWN0U3RhdHVzQ29kZTtcbihmdW5jdGlvbihSZWRpcmVjdFN0YXR1c0NvZGUpIHtcbiAgICBSZWRpcmVjdFN0YXR1c0NvZGVbUmVkaXJlY3RTdGF0dXNDb2RlW1wiU2VlT3RoZXJcIl0gPSAzMDNdID0gXCJTZWVPdGhlclwiO1xuICAgIFJlZGlyZWN0U3RhdHVzQ29kZVtSZWRpcmVjdFN0YXR1c0NvZGVbXCJUZW1wb3JhcnlSZWRpcmVjdFwiXSA9IDMwN10gPSBcIlRlbXBvcmFyeVJlZGlyZWN0XCI7XG4gICAgUmVkaXJlY3RTdGF0dXNDb2RlW1JlZGlyZWN0U3RhdHVzQ29kZVtcIlBlcm1hbmVudFJlZGlyZWN0XCJdID0gMzA4XSA9IFwiUGVybWFuZW50UmVkaXJlY3RcIjtcbn0pKFJlZGlyZWN0U3RhdHVzQ29kZSB8fCAoUmVkaXJlY3RTdGF0dXNDb2RlID0ge30pKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVkaXJlY3Qtc3RhdHVzLWNvZGUuanMubWFwIl0sIm5hbWVzIjpbIlJlZGlyZWN0U3RhdHVzQ29kZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/redirect-status-code.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/redirect.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/redirect.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RedirectType: () => (/* binding */ RedirectType),\n/* harmony export */ getRedirectError: () => (/* binding */ getRedirectError),\n/* harmony export */ getRedirectStatusCodeFromError: () => (/* binding */ getRedirectStatusCodeFromError),\n/* harmony export */ getRedirectTypeFromError: () => (/* binding */ getRedirectTypeFromError),\n/* harmony export */ getURLFromRedirectError: () => (/* binding */ getURLFromRedirectError),\n/* harmony export */ isRedirectError: () => (/* binding */ isRedirectError),\n/* harmony export */ permanentRedirect: () => (/* binding */ permanentRedirect),\n/* harmony export */ redirect: () => (/* binding */ redirect)\n/* harmony export */ });\n/* harmony import */ var _request_async_storage_external__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./request-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js\");\n/* harmony import */ var _action_async_storage_external__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./action-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js\");\n/* harmony import */ var _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./redirect-status-code */ \"(rsc)/./node_modules/next/dist/esm/client/components/redirect-status-code.js\");\n\n\n\nconst REDIRECT_ERROR_CODE = \"NEXT_REDIRECT\";\nvar RedirectType;\n(function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n})(RedirectType || (RedirectType = {}));\nfunction getRedirectError(url, type, statusCode) {\n if (statusCode === void 0) statusCode = _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode.TemporaryRedirect;\n const error = new Error(REDIRECT_ERROR_CODE);\n error.digest = REDIRECT_ERROR_CODE + \";\" + type + \";\" + url + \";\" + statusCode + \";\";\n const requestStore = _request_async_storage_external__WEBPACK_IMPORTED_MODULE_0__.requestAsyncStorage.getStore();\n if (requestStore) {\n error.mutableCookies = requestStore.mutableCookies;\n }\n return error;\n}\n/**\n * When used in a streaming context, this will insert a meta tag to\n * redirect the user to the target page. When used in a custom app route, it\n * will serve a 307/303 to the caller.\n *\n * @param url the url to redirect to\n */ function redirect(url, type) {\n if (type === void 0) type = \"replace\";\n const actionStore = _action_async_storage_external__WEBPACK_IMPORTED_MODULE_1__.actionAsyncStorage.getStore();\n throw getRedirectError(url, type, // as we don't want the POST request to follow the redirect,\n // as it could result in erroneous re-submissions.\n (actionStore == null ? void 0 : actionStore.isAction) ? _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode.SeeOther : _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode.TemporaryRedirect);\n}\n/**\n * When used in a streaming context, this will insert a meta tag to\n * redirect the user to the target page. When used in a custom app route, it\n * will serve a 308/303 to the caller.\n *\n * @param url the url to redirect to\n */ function permanentRedirect(url, type) {\n if (type === void 0) type = \"replace\";\n const actionStore = _action_async_storage_external__WEBPACK_IMPORTED_MODULE_1__.actionAsyncStorage.getStore();\n throw getRedirectError(url, type, // as we don't want the POST request to follow the redirect,\n // as it could result in erroneous re-submissions.\n (actionStore == null ? void 0 : actionStore.isAction) ? _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode.SeeOther : _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode.PermanentRedirect);\n}\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */ function isRedirectError(error) {\n if (typeof error !== \"object\" || error === null || !(\"digest\" in error) || typeof error.digest !== \"string\") {\n return false;\n }\n const [errorCode, type, destination, status] = error.digest.split(\";\", 4);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === \"replace\" || type === \"push\") && typeof destination === \"string\" && !isNaN(statusCode) && statusCode in _redirect_status_code__WEBPACK_IMPORTED_MODULE_2__.RedirectStatusCode;\n}\nfunction getURLFromRedirectError(error) {\n if (!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(\";\", 3)[2];\n}\nfunction getRedirectTypeFromError(error) {\n if (!isRedirectError(error)) {\n throw new Error(\"Not a redirect error\");\n }\n return error.digest.split(\";\", 2)[1];\n}\nfunction getRedirectStatusCodeFromError(error) {\n if (!isRedirectError(error)) {\n throw new Error(\"Not a redirect error\");\n }\n return Number(error.digest.split(\";\", 4)[3]);\n} //# sourceMappingURL=redirect.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUF1RTtBQUNGO0FBQ1Q7QUFDNUQsTUFBTUcsc0JBQXNCO0FBQ3JCLElBQUlDLGFBQWE7QUFDdkIsVUFBU0EsWUFBWTtJQUNsQkEsWUFBWSxDQUFDLE9BQU8sR0FBRztJQUN2QkEsWUFBWSxDQUFDLFVBQVUsR0FBRztBQUM5QixHQUFHQSxnQkFBaUJBLENBQUFBLGVBQWUsQ0FBQztBQUM3QixTQUFTQyxpQkFBaUJDLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxVQUFVO0lBQ2xELElBQUlBLGVBQWUsS0FBSyxHQUFHQSxhQUFhTixxRUFBa0JBLENBQUNPLGlCQUFpQjtJQUM1RSxNQUFNQyxRQUFRLElBQUlDLE1BQU1SO0lBQ3hCTyxNQUFNRSxNQUFNLEdBQUdULHNCQUFzQixNQUFNSSxPQUFPLE1BQU1ELE1BQU0sTUFBTUUsYUFBYTtJQUNqRixNQUFNSyxlQUFlYixnRkFBbUJBLENBQUNjLFFBQVE7SUFDakQsSUFBSUQsY0FBYztRQUNkSCxNQUFNSyxjQUFjLEdBQUdGLGFBQWFFLGNBQWM7SUFDdEQ7SUFDQSxPQUFPTDtBQUNYO0FBQ0E7Ozs7OztDQU1DLEdBQVUsU0FBU00sU0FBU1YsR0FBRyxFQUFFQyxJQUFJO0lBQ2xDLElBQUlBLFNBQVMsS0FBSyxHQUFHQSxPQUFPO0lBQzVCLE1BQU1VLGNBQWNoQiw4RUFBa0JBLENBQUNhLFFBQVE7SUFDL0MsTUFBTVQsaUJBQWlCQyxLQUFLQyxNQUc1Qiw0REFGNEQ7SUFDNUQsa0RBQWtEO0lBQ2pEVSxDQUFBQSxlQUFlLE9BQU8sS0FBSyxJQUFJQSxZQUFZQyxRQUFRLElBQUloQixxRUFBa0JBLENBQUNpQixRQUFRLEdBQUdqQixxRUFBa0JBLENBQUNPLGlCQUFpQjtBQUM5SDtBQUNBOzs7Ozs7Q0FNQyxHQUFVLFNBQVNXLGtCQUFrQmQsR0FBRyxFQUFFQyxJQUFJO0lBQzNDLElBQUlBLFNBQVMsS0FBSyxHQUFHQSxPQUFPO0lBQzVCLE1BQU1VLGNBQWNoQiw4RUFBa0JBLENBQUNhLFFBQVE7SUFDL0MsTUFBTVQsaUJBQWlCQyxLQUFLQyxNQUc1Qiw0REFGNEQ7SUFDNUQsa0RBQWtEO0lBQ2pEVSxDQUFBQSxlQUFlLE9BQU8sS0FBSyxJQUFJQSxZQUFZQyxRQUFRLElBQUloQixxRUFBa0JBLENBQUNpQixRQUFRLEdBQUdqQixxRUFBa0JBLENBQUNtQixpQkFBaUI7QUFDOUg7QUFDQTs7Ozs7O0NBTUMsR0FBVSxTQUFTQyxnQkFBZ0JaLEtBQUs7SUFDckMsSUFBSSxPQUFPQSxVQUFVLFlBQVlBLFVBQVUsUUFBUSxDQUFFLGFBQVlBLEtBQUksS0FBTSxPQUFPQSxNQUFNRSxNQUFNLEtBQUssVUFBVTtRQUN6RyxPQUFPO0lBQ1g7SUFDQSxNQUFNLENBQUNXLFdBQVdoQixNQUFNaUIsYUFBYUMsT0FBTyxHQUFHZixNQUFNRSxNQUFNLENBQUNjLEtBQUssQ0FBQyxLQUFLO0lBQ3ZFLE1BQU1sQixhQUFhbUIsT0FBT0Y7SUFDMUIsT0FBT0YsY0FBY3BCLHVCQUF3QkksQ0FBQUEsU0FBUyxhQUFhQSxTQUFTLE1BQUssS0FBTSxPQUFPaUIsZ0JBQWdCLFlBQVksQ0FBQ0ksTUFBTXBCLGVBQWVBLGNBQWNOLHFFQUFrQkE7QUFDcEw7QUFDTyxTQUFTMkIsd0JBQXdCbkIsS0FBSztJQUN6QyxJQUFJLENBQUNZLGdCQUFnQlosUUFBUSxPQUFPO0lBQ3BDLHdFQUF3RTtJQUN4RSxrQkFBa0I7SUFDbEIsT0FBT0EsTUFBTUUsTUFBTSxDQUFDYyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUN4QztBQUNPLFNBQVNJLHlCQUF5QnBCLEtBQUs7SUFDMUMsSUFBSSxDQUFDWSxnQkFBZ0JaLFFBQVE7UUFDekIsTUFBTSxJQUFJQyxNQUFNO0lBQ3BCO0lBQ0EsT0FBT0QsTUFBTUUsTUFBTSxDQUFDYyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUN4QztBQUNPLFNBQVNLLCtCQUErQnJCLEtBQUs7SUFDaEQsSUFBSSxDQUFDWSxnQkFBZ0JaLFFBQVE7UUFDekIsTUFBTSxJQUFJQyxNQUFNO0lBQ3BCO0lBQ0EsT0FBT2dCLE9BQU9qQixNQUFNRSxNQUFNLENBQUNjLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQy9DLEVBRUEsb0NBQW9DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LmpzP2UxNDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVxdWVzdEFzeW5jU3RvcmFnZSB9IGZyb20gXCIuL3JlcXVlc3QtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiO1xuaW1wb3J0IHsgYWN0aW9uQXN5bmNTdG9yYWdlIH0gZnJvbSBcIi4vYWN0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIjtcbmltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gXCIuL3JlZGlyZWN0LXN0YXR1cy1jb2RlXCI7XG5jb25zdCBSRURJUkVDVF9FUlJPUl9DT0RFID0gXCJORVhUX1JFRElSRUNUXCI7XG5leHBvcnQgdmFyIFJlZGlyZWN0VHlwZTtcbihmdW5jdGlvbihSZWRpcmVjdFR5cGUpIHtcbiAgICBSZWRpcmVjdFR5cGVbXCJwdXNoXCJdID0gXCJwdXNoXCI7XG4gICAgUmVkaXJlY3RUeXBlW1wicmVwbGFjZVwiXSA9IFwicmVwbGFjZVwiO1xufSkoUmVkaXJlY3RUeXBlIHx8IChSZWRpcmVjdFR5cGUgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0RXJyb3IodXJsLCB0eXBlLCBzdGF0dXNDb2RlKSB7XG4gICAgaWYgKHN0YXR1c0NvZGUgPT09IHZvaWQgMCkgc3RhdHVzQ29kZSA9IFJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdDtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihSRURJUkVDVF9FUlJPUl9DT0RFKTtcbiAgICBlcnJvci5kaWdlc3QgPSBSRURJUkVDVF9FUlJPUl9DT0RFICsgXCI7XCIgKyB0eXBlICsgXCI7XCIgKyB1cmwgKyBcIjtcIiArIHN0YXR1c0NvZGUgKyBcIjtcIjtcbiAgICBjb25zdCByZXF1ZXN0U3RvcmUgPSByZXF1ZXN0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHJlcXVlc3RTdG9yZSkge1xuICAgICAgICBlcnJvci5tdXRhYmxlQ29va2llcyA9IHJlcXVlc3RTdG9yZS5tdXRhYmxlQ29va2llcztcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xufVxuLyoqXG4gKiBXaGVuIHVzZWQgaW4gYSBzdHJlYW1pbmcgY29udGV4dCwgdGhpcyB3aWxsIGluc2VydCBhIG1ldGEgdGFnIHRvXG4gKiByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdGFyZ2V0IHBhZ2UuIFdoZW4gdXNlZCBpbiBhIGN1c3RvbSBhcHAgcm91dGUsIGl0XG4gKiB3aWxsIHNlcnZlIGEgMzA3LzMwMyB0byB0aGUgY2FsbGVyLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIHVybCB0byByZWRpcmVjdCB0b1xuICovIGV4cG9ydCBmdW5jdGlvbiByZWRpcmVjdCh1cmwsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB0eXBlID0gXCJyZXBsYWNlXCI7XG4gICAgY29uc3QgYWN0aW9uU3RvcmUgPSBhY3Rpb25Bc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgLy8gSWYgd2UncmUgaW4gYW4gYWN0aW9uLCB3ZSB3YW50IHRvIHVzZSBhIDMwMyByZWRpcmVjdFxuICAgIC8vIGFzIHdlIGRvbid0IHdhbnQgdGhlIFBPU1QgcmVxdWVzdCB0byBmb2xsb3cgdGhlIHJlZGlyZWN0LFxuICAgIC8vIGFzIGl0IGNvdWxkIHJlc3VsdCBpbiBlcnJvbmVvdXMgcmUtc3VibWlzc2lvbnMuXG4gICAgKGFjdGlvblN0b3JlID09IG51bGwgPyB2b2lkIDAgOiBhY3Rpb25TdG9yZS5pc0FjdGlvbikgPyBSZWRpcmVjdFN0YXR1c0NvZGUuU2VlT3RoZXIgOiBSZWRpcmVjdFN0YXR1c0NvZGUuVGVtcG9yYXJ5UmVkaXJlY3QpO1xufVxuLyoqXG4gKiBXaGVuIHVzZWQgaW4gYSBzdHJlYW1pbmcgY29udGV4dCwgdGhpcyB3aWxsIGluc2VydCBhIG1ldGEgdGFnIHRvXG4gKiByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdGFyZ2V0IHBhZ2UuIFdoZW4gdXNlZCBpbiBhIGN1c3RvbSBhcHAgcm91dGUsIGl0XG4gKiB3aWxsIHNlcnZlIGEgMzA4LzMwMyB0byB0aGUgY2FsbGVyLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIHVybCB0byByZWRpcmVjdCB0b1xuICovIGV4cG9ydCBmdW5jdGlvbiBwZXJtYW5lbnRSZWRpcmVjdCh1cmwsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB0eXBlID0gXCJyZXBsYWNlXCI7XG4gICAgY29uc3QgYWN0aW9uU3RvcmUgPSBhY3Rpb25Bc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgLy8gSWYgd2UncmUgaW4gYW4gYWN0aW9uLCB3ZSB3YW50IHRvIHVzZSBhIDMwMyByZWRpcmVjdFxuICAgIC8vIGFzIHdlIGRvbid0IHdhbnQgdGhlIFBPU1QgcmVxdWVzdCB0byBmb2xsb3cgdGhlIHJlZGlyZWN0LFxuICAgIC8vIGFzIGl0IGNvdWxkIHJlc3VsdCBpbiBlcnJvbmVvdXMgcmUtc3VibWlzc2lvbnMuXG4gICAgKGFjdGlvblN0b3JlID09IG51bGwgPyB2b2lkIDAgOiBhY3Rpb25TdG9yZS5pc0FjdGlvbikgPyBSZWRpcmVjdFN0YXR1c0NvZGUuU2VlT3RoZXIgOiBSZWRpcmVjdFN0YXR1c0NvZGUuUGVybWFuZW50UmVkaXJlY3QpO1xufVxuLyoqXG4gKiBDaGVja3MgYW4gZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYW4gZXJyb3IgZ2VuZXJhdGVkIGJ5IHRoZVxuICogYHJlZGlyZWN0KHVybClgIGhlbHBlci5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIHJlZGlyZWN0IGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIHJlZGlyZWN0IGVycm9yXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGlzUmVkaXJlY3RFcnJvcihlcnJvcikge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgIT09IFwib2JqZWN0XCIgfHwgZXJyb3IgPT09IG51bGwgfHwgIShcImRpZ2VzdFwiIGluIGVycm9yKSB8fCB0eXBlb2YgZXJyb3IuZGlnZXN0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgW2Vycm9yQ29kZSwgdHlwZSwgZGVzdGluYXRpb24sIHN0YXR1c10gPSBlcnJvci5kaWdlc3Quc3BsaXQoXCI7XCIsIDQpO1xuICAgIGNvbnN0IHN0YXR1c0NvZGUgPSBOdW1iZXIoc3RhdHVzKTtcbiAgICByZXR1cm4gZXJyb3JDb2RlID09PSBSRURJUkVDVF9FUlJPUl9DT0RFICYmICh0eXBlID09PSBcInJlcGxhY2VcIiB8fCB0eXBlID09PSBcInB1c2hcIikgJiYgdHlwZW9mIGRlc3RpbmF0aW9uID09PSBcInN0cmluZ1wiICYmICFpc05hTihzdGF0dXNDb2RlKSAmJiBzdGF0dXNDb2RlIGluIFJlZGlyZWN0U3RhdHVzQ29kZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcikge1xuICAgIGlmICghaXNSZWRpcmVjdEVycm9yKGVycm9yKSkgcmV0dXJuIG51bGw7XG4gICAgLy8gU2xpY2VzIG9mZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkaWdlc3QgdGhhdCBjb250YWlucyB0aGUgY29kZSBhbmQgdGhlXG4gICAgLy8gc2VwYXJhdGluZyAnOycuXG4gICAgcmV0dXJuIGVycm9yLmRpZ2VzdC5zcGxpdChcIjtcIiwgMylbMl07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yKSB7XG4gICAgaWYgKCFpc1JlZGlyZWN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBhIHJlZGlyZWN0IGVycm9yXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZXJyb3IuZGlnZXN0LnNwbGl0KFwiO1wiLCAyKVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgcmVkaXJlY3QgZXJyb3JcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIoZXJyb3IuZGlnZXN0LnNwbGl0KFwiO1wiLCA0KVszXSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZGlyZWN0LmpzLm1hcCJdLCJuYW1lcyI6WyJyZXF1ZXN0QXN5bmNTdG9yYWdlIiwiYWN0aW9uQXN5bmNTdG9yYWdlIiwiUmVkaXJlY3RTdGF0dXNDb2RlIiwiUkVESVJFQ1RfRVJST1JfQ09ERSIsIlJlZGlyZWN0VHlwZSIsImdldFJlZGlyZWN0RXJyb3IiLCJ1cmwiLCJ0eXBlIiwic3RhdHVzQ29kZSIsIlRlbXBvcmFyeVJlZGlyZWN0IiwiZXJyb3IiLCJFcnJvciIsImRpZ2VzdCIsInJlcXVlc3RTdG9yZSIsImdldFN0b3JlIiwibXV0YWJsZUNvb2tpZXMiLCJyZWRpcmVjdCIsImFjdGlvblN0b3JlIiwiaXNBY3Rpb24iLCJTZWVPdGhlciIsInBlcm1hbmVudFJlZGlyZWN0IiwiUGVybWFuZW50UmVkaXJlY3QiLCJpc1JlZGlyZWN0RXJyb3IiLCJlcnJvckNvZGUiLCJkZXN0aW5hdGlvbiIsInN0YXR1cyIsInNwbGl0IiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciIsImdldFJlZGlyZWN0VHlwZUZyb21FcnJvciIsImdldFJlZGlyZWN0U3RhdHVzQ29kZUZyb21FcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/redirect.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js":
/*!***********************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/static-generation-bailout.js ***!
\***********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isStaticGenBailoutError: () => (/* binding */ isStaticGenBailoutError),\n/* harmony export */ staticGenerationBailout: () => (/* binding */ staticGenerationBailout)\n/* harmony export */ });\n/* harmony import */ var _hooks_server_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hooks-server-context */ \"(rsc)/./node_modules/next/dist/esm/client/components/hooks-server-context.js\");\n/* harmony import */ var _static_generation_async_storage_external__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./static-generation-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js\");\n\n\nconst NEXT_STATIC_GEN_BAILOUT = \"NEXT_STATIC_GEN_BAILOUT\";\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args);\n 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}\nfunction formatErrorMessage(reason, opts) {\n const { dynamic, link } = opts || {};\n const suffix = link ? \" See more info here: \" + link : \"\";\n return \"Page\" + (dynamic ? ' with `dynamic = \"' + dynamic + '\"`' : \"\") + \" couldn't be rendered statically because it used `\" + reason + \"`.\" + suffix;\n}\nconst staticGenerationBailout = (reason, param)=>{\n let { dynamic, link } = param === void 0 ? {} : param;\n const staticGenerationStore = _static_generation_async_storage_external__WEBPACK_IMPORTED_MODULE_1__.staticGenerationAsyncStorage.getStore();\n if (!staticGenerationStore) return false;\n if (staticGenerationStore.forceStatic) {\n return true;\n }\n if (staticGenerationStore.dynamicShouldError) {\n throw new StaticGenBailoutError(formatErrorMessage(reason, {\n link,\n dynamic: dynamic != null ? dynamic : \"error\"\n }));\n }\n const message = formatErrorMessage(reason, {\n dynamic,\n // this error should be caught by Next to bail out of static generation\n // in case it's uncaught, this link provides some additional context as to why\n link: \"https://nextjs.org/docs/messages/dynamic-server-error\"\n });\n // If postpone is available, we should postpone the render.\n staticGenerationStore.postpone == null ? void 0 : staticGenerationStore.postpone.call(staticGenerationStore, reason);\n // As this is a bailout, we don't want to revalidate, so set the revalidate\n // to 0.\n staticGenerationStore.revalidate = 0;\n if (staticGenerationStore.isStaticGeneration) {\n const err = new _hooks_server_context__WEBPACK_IMPORTED_MODULE_0__.DynamicServerError(message);\n staticGenerationStore.dynamicUsageDescription = reason;\n staticGenerationStore.dynamicUsageStack = err.stack;\n throw err;\n }\n return false;\n}; //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEQ7QUFDOEI7QUFDMUYsTUFBTUUsMEJBQTBCO0FBQ2hDLE1BQU1DLDhCQUE4QkM7SUFDaENDLFlBQVksR0FBR0MsSUFBSSxDQUFDO1FBQ2hCLEtBQUssSUFBSUE7UUFDVCxJQUFJLENBQUNDLElBQUksR0FBR0w7SUFDaEI7QUFDSjtBQUNPLFNBQVNNLHdCQUF3QkMsS0FBSztJQUN6QyxJQUFJLE9BQU9BLFVBQVUsWUFBWUEsVUFBVSxRQUFRLENBQUUsV0FBVUEsS0FBSSxHQUFJO1FBQ25FLE9BQU87SUFDWDtJQUNBLE9BQU9BLE1BQU1GLElBQUksS0FBS0w7QUFDMUI7QUFDQSxTQUFTUSxtQkFBbUJDLE1BQU0sRUFBRUMsSUFBSTtJQUNwQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFLEdBQUdGLFFBQVEsQ0FBQztJQUNuQyxNQUFNRyxTQUFTRCxPQUFPLDBCQUEwQkEsT0FBTztJQUN2RCxPQUFPLFNBQVVELENBQUFBLFVBQVUsdUJBQXVCQSxVQUFVLE9BQU8sRUFBQyxJQUFLLHVEQUF1REYsU0FBUyxPQUFPSTtBQUNwSjtBQUNPLE1BQU1DLDBCQUEwQixDQUFDTCxRQUFRTTtJQUM1QyxJQUFJLEVBQUVKLE9BQU8sRUFBRUMsSUFBSSxFQUFFLEdBQUdHLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSUE7SUFDaEQsTUFBTUMsd0JBQXdCakIsbUdBQTRCQSxDQUFDa0IsUUFBUTtJQUNuRSxJQUFJLENBQUNELHVCQUF1QixPQUFPO0lBQ25DLElBQUlBLHNCQUFzQkUsV0FBVyxFQUFFO1FBQ25DLE9BQU87SUFDWDtJQUNBLElBQUlGLHNCQUFzQkcsa0JBQWtCLEVBQUU7UUFDMUMsTUFBTSxJQUFJbEIsc0JBQXNCTyxtQkFBbUJDLFFBQVE7WUFDdkRHO1lBQ0FELFNBQVNBLFdBQVcsT0FBT0EsVUFBVTtRQUN6QztJQUNKO0lBQ0EsTUFBTVMsVUFBVVosbUJBQW1CQyxRQUFRO1FBQ3ZDRTtRQUNBLHVFQUF1RTtRQUN2RSw4RUFBOEU7UUFDOUVDLE1BQU07SUFDVjtJQUNBLDJEQUEyRDtJQUMzREksc0JBQXNCSyxRQUFRLElBQUksT0FBTyxLQUFLLElBQUlMLHNCQUFzQkssUUFBUSxDQUFDQyxJQUFJLENBQUNOLHVCQUF1QlA7SUFDN0csMkVBQTJFO0lBQzNFLFFBQVE7SUFDUk8sc0JBQXNCTyxVQUFVLEdBQUc7SUFDbkMsSUFBSVAsc0JBQXNCUSxrQkFBa0IsRUFBRTtRQUMxQyxNQUFNQyxNQUFNLElBQUkzQixxRUFBa0JBLENBQUNzQjtRQUNuQ0osc0JBQXNCVSx1QkFBdUIsR0FBR2pCO1FBQ2hETyxzQkFBc0JXLGlCQUFpQixHQUFHRixJQUFJRyxLQUFLO1FBQ25ELE1BQU1IO0lBQ1Y7SUFDQSxPQUFPO0FBQ1gsRUFBRSxDQUVGLHFEQUFxRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LmpzP2RjODMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1NlcnZlckVycm9yIH0gZnJvbSBcIi4vaG9va3Mtc2VydmVyLWNvbnRleHRcIjtcbmltcG9ydCB7IHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UgfSBmcm9tIFwiLi9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCI7XG5jb25zdCBORVhUX1NUQVRJQ19HRU5fQkFJTE9VVCA9IFwiTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVRcIjtcbmNsYXNzIFN0YXRpY0dlbkJhaWxvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAgIHRoaXMuY29kZSA9IE5FWFRfU1RBVElDX0dFTl9CQUlMT1VUO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0dlbkJhaWxvdXRFcnJvcihlcnJvcikge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgIT09IFwib2JqZWN0XCIgfHwgZXJyb3IgPT09IG51bGwgfHwgIShcImNvZGVcIiBpbiBlcnJvcikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZXJyb3IuY29kZSA9PT0gTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQ7XG59XG5mdW5jdGlvbiBmb3JtYXRFcnJvck1lc3NhZ2UocmVhc29uLCBvcHRzKSB7XG4gICAgY29uc3QgeyBkeW5hbWljLCBsaW5rIH0gPSBvcHRzIHx8IHt9O1xuICAgIGNvbnN0IHN1ZmZpeCA9IGxpbmsgPyBcIiBTZWUgbW9yZSBpbmZvIGhlcmU6IFwiICsgbGluayA6IFwiXCI7XG4gICAgcmV0dXJuIFwiUGFnZVwiICsgKGR5bmFtaWMgPyAnIHdpdGggYGR5bmFtaWMgPSBcIicgKyBkeW5hbWljICsgJ1wiYCcgOiBcIlwiKSArIFwiIGNvdWxkbid0IGJlIHJlbmRlcmVkIHN0YXRpY2FsbHkgYmVjYXVzZSBpdCB1c2VkIGBcIiArIHJlYXNvbiArIFwiYC5cIiArIHN1ZmZpeDtcbn1cbmV4cG9ydCBjb25zdCBzdGF0aWNHZW5lcmF0aW9uQmFpbG91dCA9IChyZWFzb24sIHBhcmFtKT0+e1xuICAgIGxldCB7IGR5bmFtaWMsIGxpbmsgfSA9IHBhcmFtID09PSB2b2lkIDAgPyB7fSA6IHBhcmFtO1xuICAgIGNvbnN0IHN0YXRpY0dlbmVyYXRpb25TdG9yZSA9IHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXN0YXRpY0dlbmVyYXRpb25TdG9yZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IoZm9ybWF0RXJyb3JNZXNzYWdlKHJlYXNvbiwge1xuICAgICAgICAgICAgbGluayxcbiAgICAgICAgICAgIGR5bmFtaWM6IGR5bmFtaWMgIT0gbnVsbCA/IGR5bmFtaWMgOiBcImVycm9yXCJcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKHJlYXNvbiwge1xuICAgICAgICBkeW5hbWljLFxuICAgICAgICAvLyB0aGlzIGVycm9yIHNob3VsZCBiZSBjYXVnaHQgYnkgTmV4dCB0byBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvblxuICAgICAgICAvLyBpbiBjYXNlIGl0J3MgdW5jYXVnaHQsIHRoaXMgbGluayBwcm92aWRlcyBzb21lIGFkZGl0aW9uYWwgY29udGV4dCBhcyB0byB3aHlcbiAgICAgICAgbGluazogXCJodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9keW5hbWljLXNlcnZlci1lcnJvclwiXG4gICAgfSk7XG4gICAgLy8gSWYgcG9zdHBvbmUgaXMgYXZhaWxhYmxlLCB3ZSBzaG91bGQgcG9zdHBvbmUgdGhlIHJlbmRlci5cbiAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucG9zdHBvbmUgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5wb3N0cG9uZS5jYWxsKHN0YXRpY0dlbmVyYXRpb25TdG9yZSwgcmVhc29uKTtcbiAgICAvLyBBcyB0aGlzIGlzIGEgYmFpbG91dCwgd2UgZG9uJ3Qgd2FudCB0byByZXZhbGlkYXRlLCBzbyBzZXQgdGhlIHJldmFsaWRhdGVcbiAgICAvLyB0byAwLlxuICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5yZXZhbGlkYXRlID0gMDtcbiAgICBpZiAoc3RhdGljR2VuZXJhdGlvblN0b3JlLmlzU3RhdGljR2VuZXJhdGlvbikge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgRHluYW1pY1NlcnZlckVycm9yKG1lc3NhZ2UpO1xuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZHluYW1pY1VzYWdlRGVzY3JpcHRpb24gPSByZWFzb247XG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljVXNhZ2VTdGFjayA9IGVyci5zdGFjaztcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LmpzLm1hcCJdLCJuYW1lcyI6WyJEeW5hbWljU2VydmVyRXJyb3IiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQiLCJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImNvZGUiLCJpc1N0YXRpY0dlbkJhaWxvdXRFcnJvciIsImVycm9yIiwiZm9ybWF0RXJyb3JNZXNzYWdlIiwicmVhc29uIiwib3B0cyIsImR5bmFtaWMiLCJsaW5rIiwic3VmZml4Iiwic3RhdGljR2VuZXJhdGlvbkJhaWxvdXQiLCJwYXJhbSIsInN0YXRpY0dlbmVyYXRpb25TdG9yZSIsImdldFN0b3JlIiwiZm9yY2VTdGF0aWMiLCJkeW5hbWljU2hvdWxkRXJyb3IiLCJtZXNzYWdlIiwicG9zdHBvbmUiLCJjYWxsIiwicmV2YWxpZGF0ZSIsImlzU3RhdGljR2VuZXJhdGlvbiIsImVyciIsImR5bmFtaWNVc2FnZURlc2NyaXB0aW9uIiwiZHluYW1pY1VzYWdlU3RhY2siLCJzdGFjayJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/lib/constants.js":
/*!*****************************************************!*\
!*** ./node_modules/next/dist/esm/lib/constants.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_DIR_ALIAS: () => (/* binding */ APP_DIR_ALIAS),\n/* harmony export */ CACHE_ONE_YEAR: () => (/* binding */ CACHE_ONE_YEAR),\n/* harmony export */ DOT_NEXT_ALIAS: () => (/* binding */ DOT_NEXT_ALIAS),\n/* harmony export */ ESLINT_DEFAULT_DIRS: () => (/* binding */ ESLINT_DEFAULT_DIRS),\n/* harmony export */ ESLINT_PROMPT_VALUES: () => (/* binding */ ESLINT_PROMPT_VALUES),\n/* harmony export */ GSP_NO_RETURNED_VALUE: () => (/* binding */ GSP_NO_RETURNED_VALUE),\n/* harmony export */ GSSP_COMPONENT_MEMBER_ERROR: () => (/* binding */ GSSP_COMPONENT_MEMBER_ERROR),\n/* harmony export */ GSSP_NO_RETURNED_VALUE: () => (/* binding */ GSSP_NO_RETURNED_VALUE),\n/* harmony export */ INSTRUMENTATION_HOOK_FILENAME: () => (/* binding */ INSTRUMENTATION_HOOK_FILENAME),\n/* harmony export */ MIDDLEWARE_FILENAME: () => (/* binding */ MIDDLEWARE_FILENAME),\n/* harmony export */ MIDDLEWARE_LOCATION_REGEXP: () => (/* binding */ MIDDLEWARE_LOCATION_REGEXP),\n/* harmony export */ NEXT_BODY_SUFFIX: () => (/* binding */ NEXT_BODY_SUFFIX),\n/* harmony export */ NEXT_CACHE_IMPLICIT_TAG_ID: () => (/* binding */ NEXT_CACHE_IMPLICIT_TAG_ID),\n/* harmony export */ NEXT_CACHE_REVALIDATED_TAGS_HEADER: () => (/* binding */ NEXT_CACHE_REVALIDATED_TAGS_HEADER),\n/* harmony export */ NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: () => (/* binding */ NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER),\n/* harmony export */ NEXT_CACHE_SOFT_TAGS_HEADER: () => (/* binding */ NEXT_CACHE_SOFT_TAGS_HEADER),\n/* harmony export */ NEXT_CACHE_SOFT_TAG_MAX_LENGTH: () => (/* binding */ NEXT_CACHE_SOFT_TAG_MAX_LENGTH),\n/* harmony export */ NEXT_CACHE_TAGS_HEADER: () => (/* binding */ NEXT_CACHE_TAGS_HEADER),\n/* harmony export */ NEXT_CACHE_TAG_MAX_LENGTH: () => (/* binding */ NEXT_CACHE_TAG_MAX_LENGTH),\n/* harmony export */ NEXT_DATA_SUFFIX: () => (/* binding */ NEXT_DATA_SUFFIX),\n/* harmony export */ NEXT_META_SUFFIX: () => (/* binding */ NEXT_META_SUFFIX),\n/* harmony export */ NEXT_QUERY_PARAM_PREFIX: () => (/* binding */ NEXT_QUERY_PARAM_PREFIX),\n/* harmony export */ NON_STANDARD_NODE_ENV: () => (/* binding */ NON_STANDARD_NODE_ENV),\n/* harmony export */ PAGES_DIR_ALIAS: () => (/* binding */ PAGES_DIR_ALIAS),\n/* harmony export */ PRERENDER_REVALIDATE_HEADER: () => (/* binding */ PRERENDER_REVALIDATE_HEADER),\n/* harmony export */ PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: () => (/* binding */ PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER),\n/* harmony export */ PUBLIC_DIR_MIDDLEWARE_CONFLICT: () => (/* binding */ PUBLIC_DIR_MIDDLEWARE_CONFLICT),\n/* harmony export */ ROOT_DIR_ALIAS: () => (/* binding */ ROOT_DIR_ALIAS),\n/* harmony export */ RSC_ACTION_CLIENT_WRAPPER_ALIAS: () => (/* binding */ RSC_ACTION_CLIENT_WRAPPER_ALIAS),\n/* harmony export */ RSC_ACTION_ENCRYPTION_ALIAS: () => (/* binding */ RSC_ACTION_ENCRYPTION_ALIAS),\n/* harmony export */ RSC_ACTION_PROXY_ALIAS: () => (/* binding */ RSC_ACTION_PROXY_ALIAS),\n/* harmony export */ RSC_ACTION_VALIDATE_ALIAS: () => (/* binding */ RSC_ACTION_VALIDATE_ALIAS),\n/* harmony export */ RSC_MOD_REF_PROXY_ALIAS: () => (/* binding */ RSC_MOD_REF_PROXY_ALIAS),\n/* harmony export */ RSC_PREFETCH_SUFFIX: () => (/* binding */ RSC_PREFETCH_SUFFIX),\n/* harmony export */ RSC_SUFFIX: () => (/* binding */ RSC_SUFFIX),\n/* harmony export */ SERVER_PROPS_EXPORT_ERROR: () => (/* binding */ SERVER_PROPS_EXPORT_ERROR),\n/* harmony export */ SERVER_PROPS_GET_INIT_PROPS_CONFLICT: () => (/* binding */ SERVER_PROPS_GET_INIT_PROPS_CONFLICT),\n/* harmony export */ SERVER_PROPS_SSG_CONFLICT: () => (/* binding */ SERVER_PROPS_SSG_CONFLICT),\n/* harmony export */ SERVER_RUNTIME: () => (/* binding */ SERVER_RUNTIME),\n/* harmony export */ SSG_FALLBACK_EXPORT_ERROR: () => (/* binding */ SSG_FALLBACK_EXPORT_ERROR),\n/* harmony export */ SSG_GET_INITIAL_PROPS_CONFLICT: () => (/* binding */ SSG_GET_INITIAL_PROPS_CONFLICT),\n/* harmony export */ STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: () => (/* binding */ STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR),\n/* harmony export */ UNSTABLE_REVALIDATE_RENAME_ERROR: () => (/* binding */ UNSTABLE_REVALIDATE_RENAME_ERROR),\n/* harmony export */ WEBPACK_LAYERS: () => (/* binding */ WEBPACK_LAYERS),\n/* harmony export */ WEBPACK_RESOURCE_QUERIES: () => (/* binding */ WEBPACK_RESOURCE_QUERIES)\n/* harmony export */ });\nconst NEXT_QUERY_PARAM_PREFIX = \"nxtP\";\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_SUFFIX = \".rsc\";\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_SOFT_TAGS_HEADER = \"x-next-cache-soft-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_CACHE_TAG_MAX_LENGTH = 256;\nconst NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nconst NEXT_CACHE_IMPLICIT_TAG_ID = \"_N_T_\";\n// in seconds\nconst CACHE_ONE_YEAR = 31536000;\n// Patterns to detect middleware files\nconst MIDDLEWARE_FILENAME = \"middleware\";\nconst MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\n// Pattern to detect instrumentation hooks file\nconst INSTRUMENTATION_HOOK_FILENAME = \"instrumentation\";\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\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_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 ESLINT_PROMPT_VALUES = [\n {\n title: \"Strict\",\n recommended: true,\n config: {\n extends: \"next/core-web-vitals\"\n }\n },\n {\n title: \"Base\",\n config: {\n extends: \"next\"\n }\n },\n {\n title: \"Cancel\",\n config: null\n }\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 * React Server Components layer (rsc).\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 layer for the API routes.\n */ api: \"api\",\n /**\n * The layer for the middleware code.\n */ middleware: \"middleware\",\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 server bundle layer for metadata routes.\n */ appMetadataRoute: \"app-metadata-route\",\n /**\n * The layer for the server bundle for App Route handlers.\n */ appRouteHandler: \"app-route-handler\"\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n server: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.appMetadataRoute,\n WEBPACK_LAYERS_NAMES.appRouteHandler\n ],\n nonClientServerTarget: [\n // plus middleware and pages api\n WEBPACK_LAYERS_NAMES.middleware,\n WEBPACK_LAYERS_NAMES.api\n ],\n app: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.appMetadataRoute,\n WEBPACK_LAYERS_NAMES.appRouteHandler,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared\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 //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9saWIvY29uc3RhbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLE1BQU1BLDBCQUEwQixPQUFPO0FBQ3ZDLE1BQU1DLDhCQUE4Qix5QkFBeUI7QUFDN0QsTUFBTUMsNkNBQTZDLHNDQUFzQztBQUN6RixNQUFNQyxzQkFBc0IsZ0JBQWdCO0FBQzVDLE1BQU1DLGFBQWEsT0FBTztBQUMxQixNQUFNQyxtQkFBbUIsUUFBUTtBQUNqQyxNQUFNQyxtQkFBbUIsUUFBUTtBQUNqQyxNQUFNQyxtQkFBbUIsUUFBUTtBQUNqQyxNQUFNQyx5QkFBeUIsb0JBQW9CO0FBQ25ELE1BQU1DLDhCQUE4Qix5QkFBeUI7QUFDN0QsTUFBTUMscUNBQXFDLDBCQUEwQjtBQUNyRSxNQUFNQyx5Q0FBeUMsOEJBQThCO0FBQzdFLE1BQU1DLDRCQUE0QixJQUFJO0FBQ3RDLE1BQU1DLGlDQUFpQyxLQUFLO0FBQzVDLE1BQU1DLDZCQUE2QixRQUFRO0FBQ2xELGFBQWE7QUFDTixNQUFNQyxpQkFBaUIsU0FBUztBQUN2QyxzQ0FBc0M7QUFDL0IsTUFBTUMsc0JBQXNCLGFBQWE7QUFDekMsTUFBTUMsNkJBQTZCLENBQUMsU0FBUyxFQUFFRCxvQkFBb0IsQ0FBQyxDQUFDO0FBQzVFLCtDQUErQztBQUN4QyxNQUFNRSxnQ0FBZ0Msa0JBQWtCO0FBQy9ELDBHQUEwRztBQUMxRyxpQ0FBaUM7QUFDMUIsTUFBTUMsa0JBQWtCLHFCQUFxQjtBQUM3QyxNQUFNQyxpQkFBaUIsbUJBQW1CO0FBQzFDLE1BQU1DLGlCQUFpQix3QkFBd0I7QUFDL0MsTUFBTUMsZ0JBQWdCLHVCQUF1QjtBQUM3QyxNQUFNQywwQkFBMEIsaUNBQWlDO0FBQ2pFLE1BQU1DLDRCQUE0QixtQ0FBbUM7QUFDckUsTUFBTUMseUJBQXlCLG9DQUFvQztBQUNuRSxNQUFNQyw4QkFBOEIscUNBQXFDO0FBQ3pFLE1BQU1DLGtDQUFrQyx5Q0FBeUM7QUFDakYsTUFBTUMsaUNBQWlDLENBQUMsNktBQTZLLENBQUMsQ0FBQztBQUN2TixNQUFNQyxpQ0FBaUMsQ0FBQyxtR0FBbUcsQ0FBQyxDQUFDO0FBQzdJLE1BQU1DLHVDQUF1QyxDQUFDLHVGQUF1RixDQUFDLENBQUM7QUFDdkksTUFBTUMsNEJBQTRCLENBQUMsc0hBQXNILENBQUMsQ0FBQztBQUMzSixNQUFNQyw2Q0FBNkMsQ0FBQyx1R0FBdUcsQ0FBQyxDQUFDO0FBQzdKLE1BQU1DLDRCQUE0QixDQUFDLHVIQUF1SCxDQUFDLENBQUM7QUFDNUosTUFBTUMsd0JBQXdCLDZGQUE2RjtBQUMzSCxNQUFNQyx5QkFBeUIsaUdBQWlHO0FBQ2hJLE1BQU1DLG1DQUFtQyx1RUFBdUUsbUNBQW1DO0FBQ25KLE1BQU1DLDhCQUE4QixDQUFDLHdKQUF3SixDQUFDLENBQUM7QUFDL0wsTUFBTUMsd0JBQXdCLENBQUMsaU5BQWlOLENBQUMsQ0FBQztBQUNsUCxNQUFNQyw0QkFBNEIsQ0FBQyx3SkFBd0osQ0FBQyxDQUFDO0FBQzdMLE1BQU1DLHNCQUFzQjtJQUMvQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0gsQ0FBQztBQUNLLE1BQU1DLHVCQUF1QjtJQUNoQztRQUNJQyxPQUFPO1FBQ1BDLGFBQWE7UUFDYkMsUUFBUTtZQUNKQyxTQUFTO1FBQ2I7SUFDSjtJQUNBO1FBQ0lILE9BQU87UUFDUEUsUUFBUTtZQUNKQyxTQUFTO1FBQ2I7SUFDSjtJQUNBO1FBQ0lILE9BQU87UUFDUEUsUUFBUTtJQUNaO0NBQ0gsQ0FBQztBQUNLLE1BQU1FLGlCQUFpQjtJQUMxQkMsTUFBTTtJQUNOQyxrQkFBa0I7SUFDbEJDLFFBQVE7QUFDWixFQUFFO0FBQ0Y7OztDQUdDLEdBQUcsTUFBTUMsdUJBQXVCO0lBQzdCOztHQUVELEdBQUdDLFFBQVE7SUFDVjs7R0FFRCxHQUFHQyx1QkFBdUI7SUFDekI7O0dBRUQsR0FBR0MscUJBQXFCO0lBQ3ZCOztHQUVELEdBQUdDLGVBQWU7SUFDakI7O0dBRUQsR0FBR0MsS0FBSztJQUNQOztHQUVELEdBQUdDLFlBQVk7SUFDZDs7R0FFRCxHQUFHQyxXQUFXO0lBQ2I7O0dBRUQsR0FBR0MsaUJBQWlCO0lBQ25COztHQUVELEdBQUdDLGtCQUFrQjtJQUNwQjs7R0FFRCxHQUFHQyxpQkFBaUI7QUFDdkI7QUFDQSxNQUFNQyxpQkFBaUI7SUFDbkIsR0FBR1gsb0JBQW9CO0lBQ3ZCWSxPQUFPO1FBQ0hDLFFBQVE7WUFDSmIscUJBQXFCRSxxQkFBcUI7WUFDMUNGLHFCQUFxQkksYUFBYTtZQUNsQ0oscUJBQXFCUyxnQkFBZ0I7WUFDckNULHFCQUFxQlUsZUFBZTtTQUN2QztRQUNESSx1QkFBdUI7WUFDbkIsZ0NBQWdDO1lBQ2hDZCxxQkFBcUJNLFVBQVU7WUFDL0JOLHFCQUFxQkssR0FBRztTQUMzQjtRQUNEVSxLQUFLO1lBQ0RmLHFCQUFxQkUscUJBQXFCO1lBQzFDRixxQkFBcUJJLGFBQWE7WUFDbENKLHFCQUFxQlMsZ0JBQWdCO1lBQ3JDVCxxQkFBcUJVLGVBQWU7WUFDcENWLHFCQUFxQkcsbUJBQW1CO1lBQ3hDSCxxQkFBcUJRLGVBQWU7WUFDcENSLHFCQUFxQkMsTUFBTTtTQUM5QjtJQUNMO0FBQ0o7QUFDQSxNQUFNZSwyQkFBMkI7SUFDN0JDLGNBQWM7SUFDZEMsVUFBVTtJQUNWQyxlQUFlO0lBQ2ZDLG1CQUFtQjtBQUN2QjtBQUNvRCxDQUVwRCxxQ0FBcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vbGliL2NvbnN0YW50cy5qcz9kMTAxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCA9IFwibnh0UFwiO1xuZXhwb3J0IGNvbnN0IFBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUiA9IFwieC1wcmVyZW5kZXItcmV2YWxpZGF0ZVwiO1xuZXhwb3J0IGNvbnN0IFBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUiA9IFwieC1wcmVyZW5kZXItcmV2YWxpZGF0ZS1pZi1nZW5lcmF0ZWRcIjtcbmV4cG9ydCBjb25zdCBSU0NfUFJFRkVUQ0hfU1VGRklYID0gXCIucHJlZmV0Y2gucnNjXCI7XG5leHBvcnQgY29uc3QgUlNDX1NVRkZJWCA9IFwiLnJzY1wiO1xuZXhwb3J0IGNvbnN0IE5FWFRfREFUQV9TVUZGSVggPSBcIi5qc29uXCI7XG5leHBvcnQgY29uc3QgTkVYVF9NRVRBX1NVRkZJWCA9IFwiLm1ldGFcIjtcbmV4cG9ydCBjb25zdCBORVhUX0JPRFlfU1VGRklYID0gXCIuYm9keVwiO1xuZXhwb3J0IGNvbnN0IE5FWFRfQ0FDSEVfVEFHU19IRUFERVIgPSBcIngtbmV4dC1jYWNoZS10YWdzXCI7XG5leHBvcnQgY29uc3QgTkVYVF9DQUNIRV9TT0ZUX1RBR1NfSEVBREVSID0gXCJ4LW5leHQtY2FjaGUtc29mdC10YWdzXCI7XG5leHBvcnQgY29uc3QgTkVYVF9DQUNIRV9SRVZBTElEQVRFRF9UQUdTX0hFQURFUiA9IFwieC1uZXh0LXJldmFsaWRhdGVkLXRhZ3NcIjtcbmV4cG9ydCBjb25zdCBORVhUX0NBQ0hFX1JFVkFMSURBVEVfVEFHX1RPS0VOX0hFQURFUiA9IFwieC1uZXh0LXJldmFsaWRhdGUtdGFnLXRva2VuXCI7XG5leHBvcnQgY29uc3QgTkVYVF9DQUNIRV9UQUdfTUFYX0xFTkdUSCA9IDI1NjtcbmV4cG9ydCBjb25zdCBORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEggPSAxMDI0O1xuZXhwb3J0IGNvbnN0IE5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lEID0gXCJfTl9UX1wiO1xuLy8gaW4gc2Vjb25kc1xuZXhwb3J0IGNvbnN0IENBQ0hFX09ORV9ZRUFSID0gMzE1MzYwMDA7XG4vLyBQYXR0ZXJucyB0byBkZXRlY3QgbWlkZGxld2FyZSBmaWxlc1xuZXhwb3J0IGNvbnN0IE1JRERMRVdBUkVfRklMRU5BTUUgPSBcIm1pZGRsZXdhcmVcIjtcbmV4cG9ydCBjb25zdCBNSURETEVXQVJFX0xPQ0FUSU9OX1JFR0VYUCA9IGAoPzpzcmMvKT8ke01JRERMRVdBUkVfRklMRU5BTUV9YDtcbi8vIFBhdHRlcm4gdG8gZGV0ZWN0IGluc3RydW1lbnRhdGlvbiBob29rcyBmaWxlXG5leHBvcnQgY29uc3QgSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUUgPSBcImluc3RydW1lbnRhdGlvblwiO1xuLy8gQmVjYXVzZSBvbiBXaW5kb3dzIGFic29sdXRlIHBhdGhzIGluIHRoZSBnZW5lcmF0ZWQgY29kZSBjYW4gYnJlYWsgYmVjYXVzZSBvZiBudW1iZXJzLCBlZyAxIGluIHRoZSBwYXRoLFxuLy8gd2UgaGF2ZSB0byB1c2UgYSBwcml2YXRlIGFsaWFzXG5leHBvcnQgY29uc3QgUEFHRVNfRElSX0FMSUFTID0gXCJwcml2YXRlLW5leHQtcGFnZXNcIjtcbmV4cG9ydCBjb25zdCBET1RfTkVYVF9BTElBUyA9IFwicHJpdmF0ZS1kb3QtbmV4dFwiO1xuZXhwb3J0IGNvbnN0IFJPT1RfRElSX0FMSUFTID0gXCJwcml2YXRlLW5leHQtcm9vdC1kaXJcIjtcbmV4cG9ydCBjb25zdCBBUFBfRElSX0FMSUFTID0gXCJwcml2YXRlLW5leHQtYXBwLWRpclwiO1xuZXhwb3J0IGNvbnN0IFJTQ19NT0RfUkVGX1BST1hZX0FMSUFTID0gXCJwcml2YXRlLW5leHQtcnNjLW1vZC1yZWYtcHJveHlcIjtcbmV4cG9ydCBjb25zdCBSU0NfQUNUSU9OX1ZBTElEQVRFX0FMSUFTID0gXCJwcml2YXRlLW5leHQtcnNjLWFjdGlvbi12YWxpZGF0ZVwiO1xuZXhwb3J0IGNvbnN0IFJTQ19BQ1RJT05fUFJPWFlfQUxJQVMgPSBcInByaXZhdGUtbmV4dC1yc2Mtc2VydmVyLXJlZmVyZW5jZVwiO1xuZXhwb3J0IGNvbnN0IFJTQ19BQ1RJT05fRU5DUllQVElPTl9BTElBUyA9IFwicHJpdmF0ZS1uZXh0LXJzYy1hY3Rpb24tZW5jcnlwdGlvblwiO1xuZXhwb3J0IGNvbnN0IFJTQ19BQ1RJT05fQ0xJRU5UX1dSQVBQRVJfQUxJQVMgPSBcInByaXZhdGUtbmV4dC1yc2MtYWN0aW9uLWNsaWVudC13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgUFVCTElDX0RJUl9NSURETEVXQVJFX0NPTkZMSUNUID0gYFlvdSBjYW4gbm90IGhhdmUgYSAnX25leHQnIGZvbGRlciBpbnNpZGUgb2YgeW91ciBwdWJsaWMgZm9sZGVyLiBUaGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBpbnRlcm5hbCAnL19uZXh0JyByb3V0ZS4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHVibGljLW5leHQtZm9sZGVyLWNvbmZsaWN0YDtcbmV4cG9ydCBjb25zdCBTU0dfR0VUX0lOSVRJQUxfUFJPUFNfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldEluaXRpYWxQcm9wcyB3aXRoIGdldFN0YXRpY1Byb3BzLiBUbyB1c2UgU1NHLCBwbGVhc2UgcmVtb3ZlIHlvdXIgZ2V0SW5pdGlhbFByb3BzYDtcbmV4cG9ydCBjb25zdCBTRVJWRVJfUFJPUFNfR0VUX0lOSVRfUFJPUFNfQ09ORkxJQ1QgPSBgWW91IGNhbiBub3QgdXNlIGdldEluaXRpYWxQcm9wcyB3aXRoIGdldFNlcnZlclNpZGVQcm9wcy4gUGxlYXNlIHJlbW92ZSBnZXRJbml0aWFsUHJvcHMuYDtcbmV4cG9ydCBjb25zdCBTRVJWRVJfUFJPUFNfU1NHX0NPTkZMSUNUID0gYFlvdSBjYW4gbm90IHVzZSBnZXRTdGF0aWNQcm9wcyBvciBnZXRTdGF0aWNQYXRocyB3aXRoIGdldFNlcnZlclNpZGVQcm9wcy4gVG8gdXNlIFNTRywgcGxlYXNlIHJlbW92ZSBnZXRTZXJ2ZXJTaWRlUHJvcHNgO1xuZXhwb3J0IGNvbnN0IFNUQVRJQ19TVEFUVVNfUEFHRV9HRVRfSU5JVElBTF9QUk9QU19FUlJPUiA9IGBjYW4gbm90IGhhdmUgZ2V0SW5pdGlhbFByb3BzL2dldFNlcnZlclNpZGVQcm9wcywgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvNDA0LWdldC1pbml0aWFsLXByb3BzYDtcbmV4cG9ydCBjb25zdCBTRVJWRVJfUFJPUFNfRVhQT1JUX0VSUk9SID0gYHBhZ2VzIHdpdGggXFxgZ2V0U2VydmVyU2lkZVByb3BzXFxgIGNhbiBub3QgYmUgZXhwb3J0ZWQuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1leHBvcnRgO1xuZXhwb3J0IGNvbnN0IEdTUF9OT19SRVRVUk5FRF9WQUxVRSA9IFwiWW91ciBgZ2V0U3RhdGljUHJvcHNgIGZ1bmN0aW9uIGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4gRGlkIHlvdSBmb3JnZXQgdG8gYWRkIGEgYHJldHVybmA/XCI7XG5leHBvcnQgY29uc3QgR1NTUF9OT19SRVRVUk5FRF9WQUxVRSA9IFwiWW91ciBgZ2V0U2VydmVyU2lkZVByb3BzYCBmdW5jdGlvbiBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBhIGByZXR1cm5gP1wiO1xuZXhwb3J0IGNvbnN0IFVOU1RBQkxFX1JFVkFMSURBVEVfUkVOQU1FX0VSUk9SID0gXCJUaGUgYHVuc3RhYmxlX3JldmFsaWRhdGVgIHByb3BlcnR5IGlzIGF2YWlsYWJsZSBmb3IgZ2VuZXJhbCB1c2UuXFxuXCIgKyBcIlBsZWFzZSB1c2UgYHJldmFsaWRhdGVgIGluc3RlYWQuXCI7XG5leHBvcnQgY29uc3QgR1NTUF9DT01QT05FTlRfTUVNQkVSX0VSUk9SID0gYGNhbiBub3QgYmUgYXR0YWNoZWQgdG8gYSBwYWdlJ3MgY29tcG9uZW50IGFuZCBtdXN0IGJlIGV4cG9ydGVkIGZyb20gdGhlIHBhZ2UuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZ3NzcC1jb21wb25lbnQtbWVtYmVyYDtcbmV4cG9ydCBjb25zdCBOT05fU1RBTkRBUkRfTk9ERV9FTlYgPSBgWW91IGFyZSB1c2luZyBhIG5vbi1zdGFuZGFyZCBcIk5PREVfRU5WXCIgdmFsdWUgaW4geW91ciBlbnZpcm9ubWVudC4gVGhpcyBjcmVhdGVzIGluY29uc2lzdGVuY2llcyBpbiB0aGUgcHJvamVjdCBhbmQgaXMgc3Ryb25nbHkgYWR2aXNlZCBhZ2FpbnN0LiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25vbi1zdGFuZGFyZC1ub2RlLWVudmA7XG5leHBvcnQgY29uc3QgU1NHX0ZBTExCQUNLX0VYUE9SVF9FUlJPUiA9IGBQYWdlcyB3aXRoIFxcYGZhbGxiYWNrXFxgIGVuYWJsZWQgaW4gXFxgZ2V0U3RhdGljUGF0aHNcXGAgY2FuIG5vdCBiZSBleHBvcnRlZC4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9zc2ctZmFsbGJhY2stdHJ1ZS1leHBvcnRgO1xuZXhwb3J0IGNvbnN0IEVTTElOVF9ERUZBVUxUX0RJUlMgPSBbXG4gICAgXCJhcHBcIixcbiAgICBcInBhZ2VzXCIsXG4gICAgXCJjb21wb25lbnRzXCIsXG4gICAgXCJsaWJcIixcbiAgICBcInNyY1wiXG5dO1xuZXhwb3J0IGNvbnN0IEVTTElOVF9QUk9NUFRfVkFMVUVTID0gW1xuICAgIHtcbiAgICAgICAgdGl0bGU6IFwiU3RyaWN0XCIsXG4gICAgICAgIHJlY29tbWVuZGVkOiB0cnVlLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIGV4dGVuZHM6IFwibmV4dC9jb3JlLXdlYi12aXRhbHNcIlxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHRpdGxlOiBcIkJhc2VcIixcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBleHRlbmRzOiBcIm5leHRcIlxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIHRpdGxlOiBcIkNhbmNlbFwiLFxuICAgICAgICBjb25maWc6IG51bGxcbiAgICB9XG5dO1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9SVU5USU1FID0ge1xuICAgIGVkZ2U6IFwiZWRnZVwiLFxuICAgIGV4cGVyaW1lbnRhbEVkZ2U6IFwiZXhwZXJpbWVudGFsLWVkZ2VcIixcbiAgICBub2RlanM6IFwibm9kZWpzXCJcbn07XG4vKipcbiAqIFRoZSBuYW1lcyBvZiB0aGUgd2VicGFjayBsYXllcnMuIFRoZXNlIGxheWVycyBhcmUgdGhlIHByaW1pdGl2ZXMgZm9yIHRoZVxuICogd2VicGFjayBjaHVua3MuXG4gKi8gY29uc3QgV0VCUEFDS19MQVlFUlNfTkFNRVMgPSB7XG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIHNoYXJlZCBjb2RlIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyIGJ1bmRsZXMuXG4gICAqLyBzaGFyZWQ6IFwic2hhcmVkXCIsXG4gICAgLyoqXG4gICAqIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIGxheWVyIChyc2MpLlxuICAgKi8gcmVhY3RTZXJ2ZXJDb21wb25lbnRzOiBcInJzY1wiLFxuICAgIC8qKlxuICAgKiBTZXJ2ZXIgU2lkZSBSZW5kZXJpbmcgbGF5ZXIgZm9yIGFwcCAoc3NyKS5cbiAgICovIHNlcnZlclNpZGVSZW5kZXJpbmc6IFwic3NyXCIsXG4gICAgLyoqXG4gICAqIFRoZSBicm93c2VyIGNsaWVudCBidW5kbGUgbGF5ZXIgZm9yIGFjdGlvbnMuXG4gICAqLyBhY3Rpb25Ccm93c2VyOiBcImFjdGlvbi1icm93c2VyXCIsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIEFQSSByb3V0ZXMuXG4gICAqLyBhcGk6IFwiYXBpXCIsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIG1pZGRsZXdhcmUgY29kZS5cbiAgICovIG1pZGRsZXdhcmU6IFwibWlkZGxld2FyZVwiLFxuICAgIC8qKlxuICAgKiBUaGUgbGF5ZXIgZm9yIGFzc2V0cyBvbiB0aGUgZWRnZS5cbiAgICovIGVkZ2VBc3NldDogXCJlZGdlLWFzc2V0XCIsXG4gICAgLyoqXG4gICAqIFRoZSBicm93c2VyIGNsaWVudCBidW5kbGUgbGF5ZXIgZm9yIEFwcCBkaXJlY3RvcnkuXG4gICAqLyBhcHBQYWdlc0Jyb3dzZXI6IFwiYXBwLXBhZ2VzLWJyb3dzZXJcIixcbiAgICAvKipcbiAgICogVGhlIHNlcnZlciBidW5kbGUgbGF5ZXIgZm9yIG1ldGFkYXRhIHJvdXRlcy5cbiAgICovIGFwcE1ldGFkYXRhUm91dGU6IFwiYXBwLW1ldGFkYXRhLXJvdXRlXCIsXG4gICAgLyoqXG4gICAqIFRoZSBsYXllciBmb3IgdGhlIHNlcnZlciBidW5kbGUgZm9yIEFwcCBSb3V0ZSBoYW5kbGVycy5cbiAgICovIGFwcFJvdXRlSGFuZGxlcjogXCJhcHAtcm91dGUtaGFuZGxlclwiXG59O1xuY29uc3QgV0VCUEFDS19MQVlFUlMgPSB7XG4gICAgLi4uV0VCUEFDS19MQVlFUlNfTkFNRVMsXG4gICAgR1JPVVA6IHtcbiAgICAgICAgc2VydmVyOiBbXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5yZWFjdFNlcnZlckNvbXBvbmVudHMsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hY3Rpb25Ccm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwTWV0YWRhdGFSb3V0ZSxcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLmFwcFJvdXRlSGFuZGxlclxuICAgICAgICBdLFxuICAgICAgICBub25DbGllbnRTZXJ2ZXJUYXJnZXQ6IFtcbiAgICAgICAgICAgIC8vIHBsdXMgbWlkZGxld2FyZSBhbmQgcGFnZXMgYXBpXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5taWRkbGV3YXJlLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBpXG4gICAgICAgIF0sXG4gICAgICAgIGFwcDogW1xuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMucmVhY3RTZXJ2ZXJDb21wb25lbnRzLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYWN0aW9uQnJvd3NlcixcbiAgICAgICAgICAgIFdFQlBBQ0tfTEFZRVJTX05BTUVTLmFwcE1ldGFkYXRhUm91dGUsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5hcHBSb3V0ZUhhbmRsZXIsXG4gICAgICAgICAgICBXRUJQQUNLX0xBWUVSU19OQU1FUy5zZXJ2ZXJTaWRlUmVuZGVyaW5nLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuYXBwUGFnZXNCcm93c2VyLFxuICAgICAgICAgICAgV0VCUEFDS19MQVlFUlNfTkFNRVMuc2hhcmVkXG4gICAgICAgIF1cbiAgICB9XG59O1xuY29uc3QgV0VCUEFDS19SRVNPVVJDRV9RVUVSSUVTID0ge1xuICAgIGVkZ2VTU1JFbnRyeTogXCJfX25leHRfZWRnZV9zc3JfZW50cnlfX1wiLFxuICAgIG1ldGFkYXRhOiBcIl9fbmV4dF9tZXRhZGF0YV9fXCIsXG4gICAgbWV0YWRhdGFSb3V0ZTogXCJfX25leHRfbWV0YWRhdGFfcm91dGVfX1wiLFxuICAgIG1ldGFkYXRhSW1hZ2VNZXRhOiBcIl9fbmV4dF9tZXRhZGF0YV9pbWFnZV9tZXRhX19cIlxufTtcbmV4cG9ydCB7IFdFQlBBQ0tfTEFZRVJTLCBXRUJQQUNLX1JFU09VUkNFX1FVRVJJRVMgfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJuYW1lcyI6WyJORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCIsIlBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUiIsIlBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUiIsIlJTQ19QUkVGRVRDSF9TVUZGSVgiLCJSU0NfU1VGRklYIiwiTkVYVF9EQVRBX1NVRkZJWCIsIk5FWFRfTUVUQV9TVUZGSVgiLCJORVhUX0JPRFlfU1VGRklYIiwiTkVYVF9DQUNIRV9UQUdTX0hFQURFUiIsIk5FWFRfQ0FDSEVfU09GVF9UQUdTX0hFQURFUiIsIk5FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVIiLCJORVhUX0NBQ0hFX1JFVkFMSURBVEVfVEFHX1RPS0VOX0hFQURFUiIsIk5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEgiLCJORVhUX0NBQ0hFX1NPRlRfVEFHX01BWF9MRU5HVEgiLCJORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRCIsIkNBQ0hFX09ORV9ZRUFSIiwiTUlERExFV0FSRV9GSUxFTkFNRSIsIk1JRERMRVdBUkVfTE9DQVRJT05fUkVHRVhQIiwiSU5TVFJVTUVOVEFUSU9OX0hPT0tfRklMRU5BTUUiLCJQQUdFU19ESVJfQUxJQVMiLCJET1RfTkVYVF9BTElBUyIsIlJPT1RfRElSX0FMSUFTIiwiQVBQX0RJUl9BTElBUyIsIlJTQ19NT0RfUkVGX1BST1hZX0FMSUFTIiwiUlNDX0FDVElPTl9WQUxJREFURV9BTElBUyIsIlJTQ19BQ1RJT05fUFJPWFlfQUxJQVMiLCJSU0NfQUNUSU9OX0VOQ1JZUFRJT05fQUxJQVMiLCJSU0NfQUNUSU9OX0NMSUVOVF9XUkFQUEVSX0FMSUFTIiwiUFVCTElDX0RJUl9NSURETEVXQVJFX0NPTkZMSUNUIiwiU1NHX0dFVF9JTklUSUFMX1BST1BTX0NPTkZMSUNUIiwiU0VSVkVSX1BST1BTX0dFVF9JTklUX1BST1BTX0NPTkZMSUNUIiwiU0VSVkVSX1BST1BTX1NTR19DT05GTElDVCIsIlNUQVRJQ19TVEFUVVNfUEFHRV9HRVRfSU5JVElBTF9QUk9QU19FUlJPUiIsIlNFUlZFUl9QUk9QU19FWFBPUlRfRVJST1IiLCJHU1BfTk9fUkVUVVJORURfVkFMVUUiLCJHU1NQX05PX1JFVFVSTkVEX1ZBTFVFIiwiVU5TVEFCTEVfUkVWQUxJREFURV9SRU5BTUVfRVJST1IiLCJHU1NQX0NPTVBPTkVOVF9NRU1CRVJfRVJST1IiLCJOT05fU1RBTkRBUkRfTk9ERV9FTlYiLCJTU0dfRkFMTEJBQ0tfRVhQT1JUX0VSUk9SIiwiRVNMSU5UX0RFRkFVTFRfRElSUyIsIkVTTElOVF9QUk9NUFRfVkFMVUVTIiwidGl0bGUiLCJyZWNvbW1lbmRlZCIsImNvbmZpZyIsImV4dGVuZHMiLCJTRVJWRVJfUlVOVElNRSIsImVkZ2UiLCJleHBlcmltZW50YWxFZGdlIiwibm9kZWpzIiwiV0VCUEFDS19MQVlFUlNfTkFNRVMiLCJzaGFyZWQiLCJyZWFjdFNlcnZlckNvbXBvbmVudHMiLCJzZXJ2ZXJTaWRlUmVuZGVyaW5nIiwiYWN0aW9uQnJvd3NlciIsImFwaSIsIm1pZGRsZXdhcmUiLCJlZGdlQXNzZXQiLCJhcHBQYWdlc0Jyb3dzZXIiLCJhcHBNZXRhZGF0YVJvdXRlIiwiYXBwUm91dGVIYW5kbGVyIiwiV0VCUEFDS19MQVlFUlMiLCJHUk9VUCIsInNlcnZlciIsIm5vbkNsaWVudFNlcnZlclRhcmdldCIsImFwcCIsIldFQlBBQ0tfUkVTT1VSQ0VfUVVFUklFUyIsImVkZ2VTU1JFbnRyeSIsIm1ldGFkYXRhIiwibWV0YWRhdGFSb3V0ZSIsIm1ldGFkYXRhSW1hZ2VNZXRhIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/lib/constants.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/lib/picocolors.js":
/*!******************************************************!*\
!*** ./node_modules/next/dist/esm/lib/picocolors.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bgBlack: () => (/* binding */ bgBlack),\n/* harmony export */ bgBlue: () => (/* binding */ bgBlue),\n/* harmony export */ bgCyan: () => (/* binding */ bgCyan),\n/* harmony export */ bgGreen: () => (/* binding */ bgGreen),\n/* harmony export */ bgMagenta: () => (/* binding */ bgMagenta),\n/* harmony export */ bgRed: () => (/* binding */ bgRed),\n/* harmony export */ bgWhite: () => (/* binding */ bgWhite),\n/* harmony export */ bgYellow: () => (/* binding */ bgYellow),\n/* harmony export */ black: () => (/* binding */ black),\n/* harmony export */ blue: () => (/* binding */ blue),\n/* harmony export */ bold: () => (/* binding */ bold),\n/* harmony export */ cyan: () => (/* binding */ cyan),\n/* harmony export */ dim: () => (/* binding */ dim),\n/* harmony export */ gray: () => (/* binding */ gray),\n/* harmony export */ green: () => (/* binding */ green),\n/* harmony export */ hidden: () => (/* binding */ hidden),\n/* harmony export */ inverse: () => (/* binding */ inverse),\n/* harmony export */ italic: () => (/* binding */ italic),\n/* harmony export */ magenta: () => (/* binding */ magenta),\n/* harmony export */ purple: () => (/* binding */ purple),\n/* harmony export */ red: () => (/* binding */ red),\n/* harmony export */ reset: () => (/* binding */ reset),\n/* harmony export */ strikethrough: () => (/* binding */ strikethrough),\n/* harmony export */ underline: () => (/* binding */ underline),\n/* harmony export */ white: () => (/* binding */ white),\n/* harmony export */ yellow: () => (/* binding */ yellow)\n/* harmony export */ });\n// 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\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\"); //# sourceMappingURL=picocolors.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9saWIvcGljb2NvbG9ycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGNBQWM7QUFDZCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSxvRUFBb0U7QUFDcEUsMkVBQTJFO0FBQzNFLG1FQUFtRTtBQUNuRSwwRUFBMEU7QUFDMUUseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw4R0FBOEc7QUFDOUcsSUFBSUE7QUFDSixNQUFNLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDRixjQUFjRyxVQUFTLEtBQU0sT0FBTyxLQUFLLElBQUlILFlBQVlJLE9BQU8sS0FBSyxDQUFDO0FBQ2hHLE1BQU1DLFVBQVVKLE9BQU8sQ0FBQ0EsSUFBSUssUUFBUSxJQUFLTCxDQUFBQSxJQUFJTSxXQUFXLElBQUksQ0FBQ0wsVUFBVSxPQUFPLEtBQUssSUFBSUEsT0FBT00sS0FBSyxLQUFLLENBQUNQLElBQUlRLEVBQUUsSUFBSVIsSUFBSVMsSUFBSSxLQUFLLE1BQUs7QUFDckksTUFBTUMsZUFBZSxDQUFDQyxLQUFLQyxPQUFPQyxTQUFTQztJQUN2QyxNQUFNQyxRQUFRSixJQUFJSyxTQUFTLENBQUMsR0FBR0YsU0FBU0Q7SUFDeEMsTUFBTUksTUFBTU4sSUFBSUssU0FBUyxDQUFDRixRQUFRRixNQUFNTSxNQUFNO0lBQzlDLE1BQU1DLFlBQVlGLElBQUlHLE9BQU8sQ0FBQ1I7SUFDOUIsT0FBTyxDQUFDTyxZQUFZSixRQUFRTCxhQUFhTyxLQUFLTCxPQUFPQyxTQUFTTSxhQUFhSixRQUFRRTtBQUN2RjtBQUNBLE1BQU1JLFlBQVksQ0FBQ0MsTUFBTVYsT0FBT0MsVUFBVVMsSUFBSTtJQUMxQyxJQUFJLENBQUNsQixTQUFTLE9BQU9tQjtJQUNyQixPQUFPLENBQUNDO1FBQ0osTUFBTUMsU0FBUyxLQUFLRDtRQUNwQixNQUFNVixRQUFRVyxPQUFPTCxPQUFPLENBQUNSLE9BQU9VLEtBQUtKLE1BQU07UUFDL0MsT0FBTyxDQUFDSixRQUFRUSxPQUFPWixhQUFhZSxRQUFRYixPQUFPQyxTQUFTQyxTQUFTRixRQUFRVSxPQUFPRyxTQUFTYjtJQUNqRztBQUNKO0FBQ08sTUFBTWMsUUFBUXRCLFVBQVUsQ0FBQ3VCLElBQUksQ0FBQyxPQUFPLEVBQUVBLEVBQUUsT0FBTyxDQUFDLEdBQUdKLE9BQU87QUFDM0QsTUFBTUssT0FBT1AsVUFBVSxXQUFXLFlBQVksbUJBQW1CO0FBQ2pFLE1BQU1RLE1BQU1SLFVBQVUsV0FBVyxZQUFZLG1CQUFtQjtBQUNoRSxNQUFNUyxTQUFTVCxVQUFVLFdBQVcsWUFBWTtBQUNoRCxNQUFNVSxZQUFZVixVQUFVLFdBQVcsWUFBWTtBQUNuRCxNQUFNVyxVQUFVWCxVQUFVLFdBQVcsWUFBWTtBQUNqRCxNQUFNWSxTQUFTWixVQUFVLFdBQVcsWUFBWTtBQUNoRCxNQUFNYSxnQkFBZ0JiLFVBQVUsV0FBVyxZQUFZO0FBQ3ZELE1BQU1jLFFBQVFkLFVBQVUsWUFBWSxZQUFZO0FBQ2hELE1BQU1lLE1BQU1mLFVBQVUsWUFBWSxZQUFZO0FBQzlDLE1BQU1nQixRQUFRaEIsVUFBVSxZQUFZLFlBQVk7QUFDaEQsTUFBTWlCLFNBQVNqQixVQUFVLFlBQVksWUFBWTtBQUNqRCxNQUFNa0IsT0FBT2xCLFVBQVUsWUFBWSxZQUFZO0FBQy9DLE1BQU1tQixVQUFVbkIsVUFBVSxZQUFZLFlBQVk7QUFDbEQsTUFBTW9CLFNBQVNwQixVQUFVLDBCQUEwQixZQUFZO0FBQy9ELE1BQU1xQixPQUFPckIsVUFBVSxZQUFZLFlBQVk7QUFDL0MsTUFBTXNCLFFBQVF0QixVQUFVLFlBQVksWUFBWTtBQUNoRCxNQUFNdUIsT0FBT3ZCLFVBQVUsWUFBWSxZQUFZO0FBQy9DLE1BQU13QixVQUFVeEIsVUFBVSxZQUFZLFlBQVk7QUFDbEQsTUFBTXlCLFFBQVF6QixVQUFVLFlBQVksWUFBWTtBQUNoRCxNQUFNMEIsVUFBVTFCLFVBQVUsWUFBWSxZQUFZO0FBQ2xELE1BQU0yQixXQUFXM0IsVUFBVSxZQUFZLFlBQVk7QUFDbkQsTUFBTTRCLFNBQVM1QixVQUFVLFlBQVksWUFBWTtBQUNqRCxNQUFNNkIsWUFBWTdCLFVBQVUsWUFBWSxZQUFZO0FBQ3BELE1BQU04QixTQUFTOUIsVUFBVSxZQUFZLFlBQVk7QUFDakQsTUFBTStCLFVBQVUvQixVQUFVLFlBQVksWUFBWSxDQUV6RCxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vbGliL3BpY29jb2xvcnMuanM/MWZlMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJU0MgTGljZW5zZVxuLy8gQ29weXJpZ2h0IChjKSAyMDIxIEFsZXhleSBSYXNwb3BvdiwgS29zdGlhbnR5biBEZW55c292LCBBbnRvbiBWZXJpbm92XG4vLyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbi8vIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbi8vIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuLy8gV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1Jcbi8vIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbi8vIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuLy8gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0Zcbi8vIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4vL1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZXhleXJhc3BvcG92L3BpY29jb2xvcnMvYmxvYi9iNjI2MTQ4N2U3YjgxYWFhYjI0NDBlMzk3YTM1NjczMmNhZDllMzQyL3BpY29jb2xvcnMuanMjTDFcbnZhciBfZ2xvYmFsVGhpcztcbmNvbnN0IHsgZW52LCBzdGRvdXQgfSA9ICgoX2dsb2JhbFRoaXMgPSBnbG9iYWxUaGlzKSA9PSBudWxsID8gdm9pZCAwIDogX2dsb2JhbFRoaXMucHJvY2VzcykgPz8ge307XG5jb25zdCBlbmFibGVkID0gZW52ICYmICFlbnYuTk9fQ09MT1IgJiYgKGVudi5GT1JDRV9DT0xPUiB8fCAoc3Rkb3V0ID09IG51bGwgPyB2b2lkIDAgOiBzdGRvdXQuaXNUVFkpICYmICFlbnYuQ0kgJiYgZW52LlRFUk0gIT09IFwiZHVtYlwiKTtcbmNvbnN0IHJlcGxhY2VDbG9zZSA9IChzdHIsIGNsb3NlLCByZXBsYWNlLCBpbmRleCk9PntcbiAgICBjb25zdCBzdGFydCA9IHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZTtcbiAgICBjb25zdCBlbmQgPSBzdHIuc3Vic3RyaW5nKGluZGV4ICsgY2xvc2UubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSk7XG4gICAgcmV0dXJuIH5uZXh0SW5kZXggPyBzdGFydCArIHJlcGxhY2VDbG9zZShlbmQsIGNsb3NlLCByZXBsYWNlLCBuZXh0SW5kZXgpIDogc3RhcnQgKyBlbmQ7XG59O1xuY29uc3QgZm9ybWF0dGVyID0gKG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3Blbik9PntcbiAgICBpZiAoIWVuYWJsZWQpIHJldHVybiBTdHJpbmc7XG4gICAgcmV0dXJuIChpbnB1dCk9PntcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gXCJcIiArIGlucHV0O1xuICAgICAgICBjb25zdCBpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiB+aW5kZXggPyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlIDogb3BlbiArIHN0cmluZyArIGNsb3NlO1xuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHJlc2V0ID0gZW5hYmxlZCA/IChzKT0+YFxceDFiWzBtJHtzfVxceDFiWzBtYCA6IFN0cmluZztcbmV4cG9ydCBjb25zdCBib2xkID0gZm9ybWF0dGVyKFwiXFx4MWJbMW1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsxbVwiKTtcbmV4cG9ydCBjb25zdCBkaW0gPSBmb3JtYXR0ZXIoXCJcXHgxYlsybVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzJtXCIpO1xuZXhwb3J0IGNvbnN0IGl0YWxpYyA9IGZvcm1hdHRlcihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpO1xuZXhwb3J0IGNvbnN0IHVuZGVybGluZSA9IGZvcm1hdHRlcihcIlxceDFiWzRtXCIsIFwiXFx4MWJbMjRtXCIpO1xuZXhwb3J0IGNvbnN0IGludmVyc2UgPSBmb3JtYXR0ZXIoXCJcXHgxYls3bVwiLCBcIlxceDFiWzI3bVwiKTtcbmV4cG9ydCBjb25zdCBoaWRkZW4gPSBmb3JtYXR0ZXIoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKTtcbmV4cG9ydCBjb25zdCBzdHJpa2V0aHJvdWdoID0gZm9ybWF0dGVyKFwiXFx4MWJbOW1cIiwgXCJcXHgxYlsyOW1cIik7XG5leHBvcnQgY29uc3QgYmxhY2sgPSBmb3JtYXR0ZXIoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIik7XG5leHBvcnQgY29uc3QgcmVkID0gZm9ybWF0dGVyKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpO1xuZXhwb3J0IGNvbnN0IGdyZWVuID0gZm9ybWF0dGVyKFwiXFx4MWJbMzJtXCIsIFwiXFx4MWJbMzltXCIpO1xuZXhwb3J0IGNvbnN0IHllbGxvdyA9IGZvcm1hdHRlcihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKTtcbmV4cG9ydCBjb25zdCBibHVlID0gZm9ybWF0dGVyKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpO1xuZXhwb3J0IGNvbnN0IG1hZ2VudGEgPSBmb3JtYXR0ZXIoXCJcXHgxYlszNW1cIiwgXCJcXHgxYlszOW1cIik7XG5leHBvcnQgY29uc3QgcHVycGxlID0gZm9ybWF0dGVyKFwiXFx4MWJbMzg7MjsxNzM7MTI3OzE2OG1cIiwgXCJcXHgxYlszOW1cIik7XG5leHBvcnQgY29uc3QgY3lhbiA9IGZvcm1hdHRlcihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKTtcbmV4cG9ydCBjb25zdCB3aGl0ZSA9IGZvcm1hdHRlcihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKTtcbmV4cG9ydCBjb25zdCBncmF5ID0gZm9ybWF0dGVyKFwiXFx4MWJbOTBtXCIsIFwiXFx4MWJbMzltXCIpO1xuZXhwb3J0IGNvbnN0IGJnQmxhY2sgPSBmb3JtYXR0ZXIoXCJcXHgxYls0MG1cIiwgXCJcXHgxYls0OW1cIik7XG5leHBvcnQgY29uc3QgYmdSZWQgPSBmb3JtYXR0ZXIoXCJcXHgxYls0MW1cIiwgXCJcXHgxYls0OW1cIik7XG5leHBvcnQgY29uc3QgYmdHcmVlbiA9IGZvcm1hdHRlcihcIlxceDFiWzQybVwiLCBcIlxceDFiWzQ5bVwiKTtcbmV4cG9ydCBjb25zdCBiZ1llbGxvdyA9IGZvcm1hdHRlcihcIlxceDFiWzQzbVwiLCBcIlxceDFiWzQ5bVwiKTtcbmV4cG9ydCBjb25zdCBiZ0JsdWUgPSBmb3JtYXR0ZXIoXCJcXHgxYls0NG1cIiwgXCJcXHgxYls0OW1cIik7XG5leHBvcnQgY29uc3QgYmdNYWdlbnRhID0gZm9ybWF0dGVyKFwiXFx4MWJbNDVtXCIsIFwiXFx4MWJbNDltXCIpO1xuZXhwb3J0IGNvbnN0IGJnQ3lhbiA9IGZvcm1hdHRlcihcIlxceDFiWzQ2bVwiLCBcIlxceDFiWzQ5bVwiKTtcbmV4cG9ydCBjb25zdCBiZ1doaXRlID0gZm9ybWF0dGVyKFwiXFx4MWJbNDdtXCIsIFwiXFx4MWJbNDltXCIpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1waWNvY29sb3JzLmpzLm1hcCJdLCJuYW1lcyI6WyJfZ2xvYmFsVGhpcyIsImVudiIsInN0ZG91dCIsImdsb2JhbFRoaXMiLCJwcm9jZXNzIiwiZW5hYmxlZCIsIk5PX0NPTE9SIiwiRk9SQ0VfQ09MT1IiLCJpc1RUWSIsIkNJIiwiVEVSTSIsInJlcGxhY2VDbG9zZSIsInN0ciIsImNsb3NlIiwicmVwbGFjZSIsImluZGV4Iiwic3RhcnQiLCJzdWJzdHJpbmciLCJlbmQiLCJsZW5ndGgiLCJuZXh0SW5kZXgiLCJpbmRleE9mIiwiZm9ybWF0dGVyIiwib3BlbiIsIlN0cmluZyIsImlucHV0Iiwic3RyaW5nIiwicmVzZXQiLCJzIiwiYm9sZCIsImRpbSIsIml0YWxpYyIsInVuZGVybGluZSIsImludmVyc2UiLCJoaWRkZW4iLCJzdHJpa2V0aHJvdWdoIiwiYmxhY2siLCJyZWQiLCJncmVlbiIsInllbGxvdyIsImJsdWUiLCJtYWdlbnRhIiwicHVycGxlIiwiY3lhbiIsIndoaXRlIiwiZ3JheSIsImJnQmxhY2siLCJiZ1JlZCIsImJnR3JlZW4iLCJiZ1llbGxvdyIsImJnQmx1ZSIsImJnTWFnZW50YSIsImJnQ3lhbiIsImJnV2hpdGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/lib/picocolors.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCookieParser: () => (/* binding */ getCookieParser)\n/* harmony export */ });\n/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */ function 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} //# sourceMappingURL=get-cookie-parser.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXBpLXV0aWxzL2dldC1jb29raWUtcGFyc2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7O0NBR0MsR0FBVSxTQUFTQSxnQkFBZ0JDLE9BQU87SUFDdkMsT0FBTyxTQUFTQztRQUNaLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdGO1FBQ25CLElBQUksQ0FBQ0UsUUFBUTtZQUNULE9BQU8sQ0FBQztRQUNaO1FBQ0EsTUFBTSxFQUFFQyxPQUFPQyxhQUFhLEVBQUUsR0FBR0MsbUJBQU9BLENBQUMsMEZBQTJCO1FBQ3BFLE9BQU9ELGNBQWNFLE1BQU1DLE9BQU8sQ0FBQ0wsVUFBVUEsT0FBT00sSUFBSSxDQUFDLFFBQVFOO0lBQ3JFO0FBQ0osRUFFQSw2Q0FBNkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2FwaS11dGlscy9nZXQtY29va2llLXBhcnNlci5qcz8wYzEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgY29va2llcyBmcm9tIHRoZSBgaGVhZGVyc2Agb2YgcmVxdWVzdFxuICogQHBhcmFtIHJlcSByZXF1ZXN0IG9iamVjdFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRDb29raWVQYXJzZXIoaGVhZGVycykge1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNvb2tpZSgpIHtcbiAgICAgICAgY29uc3QgeyBjb29raWUgfSA9IGhlYWRlcnM7XG4gICAgICAgIGlmICghY29va2llKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBwYXJzZTogcGFyc2VDb29raWVGbiB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9jb29raWVcIik7XG4gICAgICAgIHJldHVybiBwYXJzZUNvb2tpZUZuKEFycmF5LmlzQXJyYXkoY29va2llKSA/IGNvb2tpZS5qb2luKFwiOyBcIikgOiBjb29raWUpO1xuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1jb29raWUtcGFyc2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJnZXRDb29raWVQYXJzZXIiLCJoZWFkZXJzIiwicGFyc2VDb29raWUiLCJjb29raWUiLCJwYXJzZSIsInBhcnNlQ29va2llRm4iLCJyZXF1aXJlIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/api-utils/index.js":
/*!**************************************************************!*\
!*** ./node_modules/next/dist/esm/server/api-utils/index.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ApiError: () => (/* binding */ ApiError),\n/* harmony export */ COOKIE_NAME_PRERENDER_BYPASS: () => (/* binding */ COOKIE_NAME_PRERENDER_BYPASS),\n/* harmony export */ COOKIE_NAME_PRERENDER_DATA: () => (/* binding */ COOKIE_NAME_PRERENDER_DATA),\n/* harmony export */ RESPONSE_LIMIT_DEFAULT: () => (/* binding */ RESPONSE_LIMIT_DEFAULT),\n/* harmony export */ SYMBOL_CLEARED_COOKIES: () => (/* binding */ SYMBOL_CLEARED_COOKIES),\n/* harmony export */ SYMBOL_PREVIEW_DATA: () => (/* binding */ SYMBOL_PREVIEW_DATA),\n/* harmony export */ checkIsOnDemandRevalidate: () => (/* binding */ checkIsOnDemandRevalidate),\n/* harmony export */ clearPreviewData: () => (/* binding */ clearPreviewData),\n/* harmony export */ redirect: () => (/* binding */ redirect),\n/* harmony export */ sendError: () => (/* binding */ sendError),\n/* harmony export */ sendStatusCode: () => (/* binding */ sendStatusCode),\n/* harmony export */ setLazyProp: () => (/* binding */ setLazyProp)\n/* harmony export */ });\n/* harmony import */ var _web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n\n\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */ function sendStatusCode(res, statusCode) {\n res.statusCode = statusCode;\n return res;\n}\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */ function 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 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').`);\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 = _web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_0__.HeadersAdapter.from(req.headers);\n const previewModeId = headers.get(_lib_constants__WEBPACK_IMPORTED_MODULE_1__.PRERENDER_REVALIDATE_HEADER);\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.has(_lib_constants__WEBPACK_IMPORTED_MODULE_1__.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}\n/**\n * Custom error class\n */ class ApiError extends Error {\n constructor(statusCode, message){\n super(message);\n this.statusCode = statusCode;\n }\n}\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */ function sendError(res, statusCode, message) {\n res.statusCode = statusCode;\n res.statusMessage = message;\n res.end(message);\n}\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */ function 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} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXBpLXV0aWxzL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdFO0FBQ3NDO0FBQzlHOzs7O0NBSUMsR0FBVSxTQUFTRyxlQUFlQyxHQUFHLEVBQUVDLFVBQVU7SUFDOUNELElBQUlDLFVBQVUsR0FBR0E7SUFDakIsT0FBT0Q7QUFDWDtBQUNBOzs7OztDQUtDLEdBQVUsU0FBU0UsU0FBU0YsR0FBRyxFQUFFRyxXQUFXLEVBQUVDLEdBQUc7SUFDOUMsSUFBSSxPQUFPRCxnQkFBZ0IsVUFBVTtRQUNqQ0MsTUFBTUQ7UUFDTkEsY0FBYztJQUNsQjtJQUNBLElBQUksT0FBT0EsZ0JBQWdCLFlBQVksT0FBT0MsUUFBUSxVQUFVO1FBQzVELE1BQU0sSUFBSUMsTUFBTSxDQUFDLHFLQUFxSyxDQUFDO0lBQzNMO0lBQ0FMLElBQUlNLFNBQVMsQ0FBQ0gsYUFBYTtRQUN2QkksVUFBVUg7SUFDZDtJQUNBSixJQUFJUSxLQUFLLENBQUNKO0lBQ1ZKLElBQUlTLEdBQUc7SUFDUCxPQUFPVDtBQUNYO0FBQ08sU0FBU1UsMEJBQTBCQyxHQUFHLEVBQUVDLFlBQVk7SUFDdkQsTUFBTUMsVUFBVWpCLGdGQUFjQSxDQUFDa0IsSUFBSSxDQUFDSCxJQUFJRSxPQUFPO0lBQy9DLE1BQU1FLGdCQUFnQkYsUUFBUUcsR0FBRyxDQUFDbkIsdUVBQTJCQTtJQUM3RCxNQUFNb0IsdUJBQXVCRixrQkFBa0JILGFBQWFHLGFBQWE7SUFDekUsTUFBTUcsMEJBQTBCTCxRQUFRTSxHQUFHLENBQUNyQixzRkFBMENBO0lBQ3RGLE9BQU87UUFDSG1CO1FBQ0FDO0lBQ0o7QUFDSjtBQUNPLE1BQU1FLCtCQUErQixDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDMUQsTUFBTUMsNkJBQTZCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN6RCxNQUFNQyx5QkFBeUIsSUFBSSxPQUFPLEtBQUs7QUFDL0MsTUFBTUMsc0JBQXNCQyxPQUFPSCw0QkFBNEI7QUFDL0QsTUFBTUkseUJBQXlCRCxPQUFPSiw4QkFBOEI7QUFDcEUsU0FBU00saUJBQWlCMUIsR0FBRyxFQUFFMkIsVUFBVSxDQUFDLENBQUM7SUFDOUMsSUFBSUYsMEJBQTBCekIsS0FBSztRQUMvQixPQUFPQTtJQUNYO0lBQ0EsTUFBTSxFQUFFNEIsU0FBUyxFQUFFLEdBQUdDLG1CQUFPQSxDQUFDLDBGQUEyQjtJQUN6RCxNQUFNQyxXQUFXOUIsSUFBSStCLFNBQVMsQ0FBQztJQUMvQi9CLElBQUlnQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtXQUNyQixPQUFPRixhQUFhLFdBQVc7WUFDOUJBO1NBQ0gsR0FBR0csTUFBTUMsT0FBTyxDQUFDSixZQUFZQSxXQUFXLEVBQUU7UUFDM0NGLFVBQVVSLDhCQUE4QixJQUFJO1lBQ3hDLDJEQUEyRDtZQUMzRCxvREFBb0Q7WUFDcEQsd0VBQXdFO1lBQ3hFZSxTQUFTLElBQUlDLEtBQUs7WUFDbEJDLFVBQVU7WUFDVkMsVUFBVUMsTUFBc0MsR0FBRyxDQUFNLEdBQUc7WUFDNURDLFFBQVFELGtCQUF5QjtZQUNqQ0UsTUFBTTtZQUNOLEdBQUdkLFFBQVFjLElBQUksS0FBS0MsWUFBWTtnQkFDNUJELE1BQU1kLFFBQVFjLElBQUk7WUFDdEIsSUFBSUMsU0FBUztRQUNqQjtRQUNBZCxVQUFVUCw0QkFBNEIsSUFBSTtZQUN0QywyREFBMkQ7WUFDM0Qsb0RBQW9EO1lBQ3BELHdFQUF3RTtZQUN4RWMsU0FBUyxJQUFJQyxLQUFLO1lBQ2xCQyxVQUFVO1lBQ1ZDLFVBQVVDLE1BQXNDLEdBQUcsQ0FBTSxHQUFHO1lBQzVEQyxRQUFRRCxrQkFBeUI7WUFDakNFLE1BQU07WUFDTixHQUFHZCxRQUFRYyxJQUFJLEtBQUtDLFlBQVk7Z0JBQzVCRCxNQUFNZCxRQUFRYyxJQUFJO1lBQ3RCLElBQUlDLFNBQVM7UUFDakI7S0FDSDtJQUNEQyxPQUFPQyxjQUFjLENBQUM1QyxLQUFLeUIsd0JBQXdCO1FBQy9Db0IsT0FBTztRQUNQQyxZQUFZO0lBQ2hCO0lBQ0EsT0FBTzlDO0FBQ1g7QUFDQTs7Q0FFQyxHQUFVLE1BQU0rQyxpQkFBaUIxQztJQUM5QjJDLFlBQVkvQyxVQUFVLEVBQUVnRCxPQUFPLENBQUM7UUFDNUIsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ2hELFVBQVUsR0FBR0E7SUFDdEI7QUFDSjtBQUNBOzs7OztDQUtDLEdBQVUsU0FBU2lELFVBQVVsRCxHQUFHLEVBQUVDLFVBQVUsRUFBRWdELE9BQU87SUFDbERqRCxJQUFJQyxVQUFVLEdBQUdBO0lBQ2pCRCxJQUFJbUQsYUFBYSxHQUFHRjtJQUNwQmpELElBQUlTLEdBQUcsQ0FBQ3dDO0FBQ1o7QUFDQTs7Ozs7Q0FLQyxHQUFVLFNBQVNHLFlBQVksRUFBRXpDLEdBQUcsRUFBRSxFQUFFMEMsSUFBSSxFQUFFQyxNQUFNO0lBQ2pELE1BQU1DLE9BQU87UUFDVEMsY0FBYztRQUNkVixZQUFZO0lBQ2hCO0lBQ0EsTUFBTVcsWUFBWTtRQUNkLEdBQUdGLElBQUk7UUFDUEcsVUFBVTtJQUNkO0lBQ0FmLE9BQU9DLGNBQWMsQ0FBQ2pDLEtBQUswQyxNQUFNO1FBQzdCLEdBQUdFLElBQUk7UUFDUHZDLEtBQUs7WUFDRCxNQUFNNkIsUUFBUVM7WUFDZCw4REFBOEQ7WUFDOURYLE9BQU9DLGNBQWMsQ0FBQ2pDLEtBQUswQyxNQUFNO2dCQUM3QixHQUFHSSxTQUFTO2dCQUNaWjtZQUNKO1lBQ0EsT0FBT0E7UUFDWDtRQUNBYyxLQUFLLENBQUNkO1lBQ0ZGLE9BQU9DLGNBQWMsQ0FBQ2pDLEtBQUswQyxNQUFNO2dCQUM3QixHQUFHSSxTQUFTO2dCQUNaWjtZQUNKO1FBQ0o7SUFDSjtBQUNKLEVBRUEsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9hcGktdXRpbHMvaW5kZXguanM/ZjBmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWFkZXJzQWRhcHRlciB9IGZyb20gXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVyc1wiO1xuaW1wb3J0IHsgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSLCBQUkVSRU5ERVJfUkVWQUxJREFURV9PTkxZX0dFTkVSQVRFRF9IRUFERVIgfSBmcm9tIFwiLi4vLi4vbGliL2NvbnN0YW50c1wiO1xuLyoqXG4gKlxuICogQHBhcmFtIHJlcyByZXNwb25zZSBvYmplY3RcbiAqIEBwYXJhbSBzdGF0dXNDb2RlIGBIVFRQYCBzdGF0dXMgY29kZSBvZiByZXNwb25zZVxuICovIGV4cG9ydCBmdW5jdGlvbiBzZW5kU3RhdHVzQ29kZShyZXMsIHN0YXR1c0NvZGUpIHtcbiAgICByZXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgcmV0dXJuIHJlcztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSByZXMgcmVzcG9uc2Ugb2JqZWN0XG4gKiBAcGFyYW0gW3N0YXR1c09yVXJsXSBgSFRUUGAgc3RhdHVzIGNvZGUgb2YgcmVkaXJlY3RcbiAqIEBwYXJhbSB1cmwgVVJMIG9mIHJlZGlyZWN0XG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0KHJlcywgc3RhdHVzT3JVcmwsIHVybCkge1xuICAgIGlmICh0eXBlb2Ygc3RhdHVzT3JVcmwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdXJsID0gc3RhdHVzT3JVcmw7XG4gICAgICAgIHN0YXR1c09yVXJsID0gMzA3O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHN0YXR1c09yVXJsICE9PSBcIm51bWJlclwiIHx8IHR5cGVvZiB1cmwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlZGlyZWN0IGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBhIHNpbmdsZSBhcmd1bWVudCBVUkwsIGUuZy4gcmVzLnJlZGlyZWN0KCcvZGVzdGluYXRpb24nKSBvciB1c2UgYSBzdGF0dXMgY29kZSBhbmQgVVJMLCBlLmcuIHJlcy5yZWRpcmVjdCgzMDcsICcvZGVzdGluYXRpb24nKS5gKTtcbiAgICB9XG4gICAgcmVzLndyaXRlSGVhZChzdGF0dXNPclVybCwge1xuICAgICAgICBMb2NhdGlvbjogdXJsXG4gICAgfSk7XG4gICAgcmVzLndyaXRlKHVybCk7XG4gICAgcmVzLmVuZCgpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZShyZXEsIHByZXZpZXdQcm9wcykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBIZWFkZXJzQWRhcHRlci5mcm9tKHJlcS5oZWFkZXJzKTtcbiAgICBjb25zdCBwcmV2aWV3TW9kZUlkID0gaGVhZGVycy5nZXQoUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSKTtcbiAgICBjb25zdCBpc09uRGVtYW5kUmV2YWxpZGF0ZSA9IHByZXZpZXdNb2RlSWQgPT09IHByZXZpZXdQcm9wcy5wcmV2aWV3TW9kZUlkO1xuICAgIGNvbnN0IHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkID0gaGVhZGVycy5oYXMoUFJFUkVOREVSX1JFVkFMSURBVEVfT05MWV9HRU5FUkFURURfSEVBREVSKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSxcbiAgICAgICAgcmV2YWxpZGF0ZU9ubHlHZW5lcmF0ZWRcbiAgICB9O1xufVxuZXhwb3J0IGNvbnN0IENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MgPSBgX19wcmVyZW5kZXJfYnlwYXNzYDtcbmV4cG9ydCBjb25zdCBDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSA9IGBfX25leHRfcHJldmlld19kYXRhYDtcbmV4cG9ydCBjb25zdCBSRVNQT05TRV9MSU1JVF9ERUZBVUxUID0gNCAqIDEwMjQgKiAxMDI0O1xuZXhwb3J0IGNvbnN0IFNZTUJPTF9QUkVWSUVXX0RBVEEgPSBTeW1ib2woQ09PS0lFX05BTUVfUFJFUkVOREVSX0RBVEEpO1xuZXhwb3J0IGNvbnN0IFNZTUJPTF9DTEVBUkVEX0NPT0tJRVMgPSBTeW1ib2woQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUyk7XG5leHBvcnQgZnVuY3Rpb24gY2xlYXJQcmV2aWV3RGF0YShyZXMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmIChTWU1CT0xfQ0xFQVJFRF9DT09LSUVTIGluIHJlcykge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBjb25zdCB7IHNlcmlhbGl6ZSB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9jb29raWVcIik7XG4gICAgY29uc3QgcHJldmlvdXMgPSByZXMuZ2V0SGVhZGVyKFwiU2V0LUNvb2tpZVwiKTtcbiAgICByZXMuc2V0SGVhZGVyKGBTZXQtQ29va2llYCwgW1xuICAgICAgICAuLi50eXBlb2YgcHJldmlvdXMgPT09IFwic3RyaW5nXCIgPyBbXG4gICAgICAgICAgICBwcmV2aW91c1xuICAgICAgICBdIDogQXJyYXkuaXNBcnJheShwcmV2aW91cykgPyBwcmV2aW91cyA6IFtdLFxuICAgICAgICBzZXJpYWxpemUoQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUywgXCJcIiwge1xuICAgICAgICAgICAgLy8gVG8gZGVsZXRlIGEgY29va2llLCBzZXQgYGV4cGlyZXNgIHRvIGEgZGF0ZSBpbiB0aGUgcGFzdDpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjFcbiAgICAgICAgICAgIC8vIGBNYXgtQWdlOiAwYCBpcyBub3QgdmFsaWQsIHRodXMgaWdub3JlZCwgYW5kIHRoZSBjb29raWUgaXMgcGVyc2lzdGVkLlxuICAgICAgICAgICAgZXhwaXJlczogbmV3IERhdGUoMCksXG4gICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgIHNhbWVTaXRlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiID8gXCJub25lXCIgOiBcImxheFwiLFxuICAgICAgICAgICAgc2VjdXJlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiLFxuICAgICAgICAgICAgcGF0aDogXCIvXCIsXG4gICAgICAgICAgICAuLi5vcHRpb25zLnBhdGggIT09IHVuZGVmaW5lZCA/IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGhcbiAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgfSksXG4gICAgICAgIHNlcmlhbGl6ZShDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSwgXCJcIiwge1xuICAgICAgICAgICAgLy8gVG8gZGVsZXRlIGEgY29va2llLCBzZXQgYGV4cGlyZXNgIHRvIGEgZGF0ZSBpbiB0aGUgcGFzdDpcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjFcbiAgICAgICAgICAgIC8vIGBNYXgtQWdlOiAwYCBpcyBub3QgdmFsaWQsIHRodXMgaWdub3JlZCwgYW5kIHRoZSBjb29raWUgaXMgcGVyc2lzdGVkLlxuICAgICAgICAgICAgZXhwaXJlczogbmV3IERhdGUoMCksXG4gICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgIHNhbWVTaXRlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiID8gXCJub25lXCIgOiBcImxheFwiLFxuICAgICAgICAgICAgc2VjdXJlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiLFxuICAgICAgICAgICAgcGF0aDogXCIvXCIsXG4gICAgICAgICAgICAuLi5vcHRpb25zLnBhdGggIT09IHVuZGVmaW5lZCA/IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBvcHRpb25zLnBhdGhcbiAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICBdKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCBTWU1CT0xfQ0xFQVJFRF9DT09LSUVTLCB7XG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG59XG4vKipcbiAqIEN1c3RvbSBlcnJvciBjbGFzc1xuICovIGV4cG9ydCBjbGFzcyBBcGlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihzdGF0dXNDb2RlLCBtZXNzYWdlKXtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgfVxufVxuLyoqXG4gKiBTZW5kcyBlcnJvciBpbiBgcmVzcG9uc2VgXG4gKiBAcGFyYW0gcmVzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgb2YgcmVzcG9uc2VcbiAqIEBwYXJhbSBtZXNzYWdlIG9mIHJlc3BvbnNlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNlbmRFcnJvcihyZXMsIHN0YXR1c0NvZGUsIG1lc3NhZ2UpIHtcbiAgICByZXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgcmVzLnN0YXR1c01lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHJlcy5lbmQobWVzc2FnZSk7XG59XG4vKipcbiAqIEV4ZWN1dGUgZ2V0dGVyIGZ1bmN0aW9uIG9ubHkgaWYgaXRzIG5lZWRlZFxuICogQHBhcmFtIExhenlQcm9wcyBgcmVxYCBhbmQgYHBhcmFtc2AgZm9yIGxhenlQcm9wXG4gKiBAcGFyYW0gcHJvcCBuYW1lIG9mIHByb3BlcnR5XG4gKiBAcGFyYW0gZ2V0dGVyIGZ1bmN0aW9uIHRvIGdldCBkYXRhXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNldExhenlQcm9wKHsgcmVxIH0sIHByb3AsIGdldHRlcikge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH07XG4gICAgY29uc3Qgb3B0c1Jlc2V0ID0ge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcSwgcHJvcCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBnZXQ6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldHRlcigpO1xuICAgICAgICAgICAgLy8gd2Ugc2V0IHRoZSBwcm9wZXJ0eSBvbiB0aGUgb2JqZWN0IHRvIGF2b2lkIHJlY2FsY3VsYXRpbmcgaXRcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRzUmVzZXQsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6ICh2YWx1ZSk9PntcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsIHByb3AsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRzUmVzZXQsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJIZWFkZXJzQWRhcHRlciIsIlBSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUiIsIlBSRVJFTkRFUl9SRVZBTElEQVRFX09OTFlfR0VORVJBVEVEX0hFQURFUiIsInNlbmRTdGF0dXNDb2RlIiwicmVzIiwic3RhdHVzQ29kZSIsInJlZGlyZWN0Iiwic3RhdHVzT3JVcmwiLCJ1cmwiLCJFcnJvciIsIndyaXRlSGVhZCIsIkxvY2F0aW9uIiwid3JpdGUiLCJlbmQiLCJjaGVja0lzT25EZW1hbmRSZXZhbGlkYXRlIiwicmVxIiwicHJldmlld1Byb3BzIiwiaGVhZGVycyIsImZyb20iLCJwcmV2aWV3TW9kZUlkIiwiZ2V0IiwiaXNPbkRlbWFuZFJldmFsaWRhdGUiLCJyZXZhbGlkYXRlT25seUdlbmVyYXRlZCIsImhhcyIsIkNPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MiLCJDT09LSUVfTkFNRV9QUkVSRU5ERVJfREFUQSIsIlJFU1BPTlNFX0xJTUlUX0RFRkFVTFQiLCJTWU1CT0xfUFJFVklFV19EQVRBIiwiU3ltYm9sIiwiU1lNQk9MX0NMRUFSRURfQ09PS0lFUyIsImNsZWFyUHJldmlld0RhdGEiLCJvcHRpb25zIiwic2VyaWFsaXplIiwicmVxdWlyZSIsInByZXZpb3VzIiwiZ2V0SGVhZGVyIiwic2V0SGVhZGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZXhwaXJlcyIsIkRhdGUiLCJodHRwT25seSIsInNhbWVTaXRlIiwicHJvY2VzcyIsInNlY3VyZSIsInBhdGgiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsIkFwaUVycm9yIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwic2VuZEVycm9yIiwic3RhdHVzTWVzc2FnZSIsInNldExhenlQcm9wIiwicHJvcCIsImdldHRlciIsIm9wdHMiLCJjb25maWd1cmFibGUiLCJvcHRzUmVzZXQiLCJ3cml0YWJsZSIsInNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/api-utils/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js":
/*!********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js ***!
\********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DraftModeProvider: () => (/* binding */ DraftModeProvider)\n/* harmony export */ });\n/* harmony import */ var _api_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api-utils */ \"(rsc)/./node_modules/next/dist/esm/server/api-utils/index.js\");\n\nclass DraftModeProvider {\n constructor(previewProps, req, cookies, mutableCookies){\n var _cookies_get;\n // The logic for draftMode() is very similar to tryGetPreviewData()\n // but Draft Mode does not have any data associated with it.\n const isOnDemandRevalidate = previewProps && (0,_api_utils__WEBPACK_IMPORTED_MODULE_0__.checkIsOnDemandRevalidate)(req, previewProps).isOnDemandRevalidate;\n const cookieValue = (_cookies_get = cookies.get(_api_utils__WEBPACK_IMPORTED_MODULE_0__.COOKIE_NAME_PRERENDER_BYPASS)) == null ? void 0 : _cookies_get.value;\n this.isEnabled = Boolean(!isOnDemandRevalidate && cookieValue && previewProps && cookieValue === previewProps.previewModeId);\n this._previewModeId = previewProps == null ? void 0 : previewProps.previewModeId;\n this._mutableCookies = mutableCookies;\n }\n enable() {\n if (!this._previewModeId) {\n throw new Error(\"Invariant: previewProps missing previewModeId this should never happen\");\n }\n this._mutableCookies.set({\n name: _api_utils__WEBPACK_IMPORTED_MODULE_0__.COOKIE_NAME_PRERENDER_BYPASS,\n value: this._previewModeId,\n httpOnly: true,\n sameSite: false ? 0 : \"lax\",\n secure: \"development\" !== \"development\",\n path: \"/\"\n });\n }\n disable() {\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 this._mutableCookies.set({\n name: _api_utils__WEBPACK_IMPORTED_MODULE_0__.COOKIE_NAME_PRERENDER_BYPASS,\n value: \"\",\n httpOnly: true,\n sameSite: false ? 0 : \"lax\",\n secure: \"development\" !== \"development\",\n path: \"/\",\n expires: new Date(0)\n });\n }\n} //# sourceMappingURL=draft-mode-provider.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXN5bmMtc3RvcmFnZS9kcmFmdC1tb2RlLXByb3ZpZGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVGO0FBQ2hGLE1BQU1FO0lBQ1RDLFlBQVlDLFlBQVksRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLGNBQWMsQ0FBQztRQUNuRCxJQUFJQztRQUNKLG1FQUFtRTtRQUNuRSw0REFBNEQ7UUFDNUQsTUFBTUMsdUJBQXVCTCxnQkFBZ0JILHFFQUF5QkEsQ0FBQ0ksS0FBS0QsY0FBY0ssb0JBQW9CO1FBQzlHLE1BQU1DLGNBQWMsQ0FBQ0YsZUFBZUYsUUFBUUssR0FBRyxDQUFDWCxvRUFBNEJBLENBQUEsS0FBTSxPQUFPLEtBQUssSUFBSVEsYUFBYUksS0FBSztRQUNwSCxJQUFJLENBQUNDLFNBQVMsR0FBR0MsUUFBUSxDQUFDTCx3QkFBd0JDLGVBQWVOLGdCQUFnQk0sZ0JBQWdCTixhQUFhVyxhQUFhO1FBQzNILElBQUksQ0FBQ0MsY0FBYyxHQUFHWixnQkFBZ0IsT0FBTyxLQUFLLElBQUlBLGFBQWFXLGFBQWE7UUFDaEYsSUFBSSxDQUFDRSxlQUFlLEdBQUdWO0lBQzNCO0lBQ0FXLFNBQVM7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDRixjQUFjLEVBQUU7WUFDdEIsTUFBTSxJQUFJRyxNQUFNO1FBQ3BCO1FBQ0EsSUFBSSxDQUFDRixlQUFlLENBQUNHLEdBQUcsQ0FBQztZQUNyQkMsTUFBTXJCLG9FQUE0QkE7WUFDbENZLE9BQU8sSUFBSSxDQUFDSSxjQUFjO1lBQzFCTSxVQUFVO1lBQ1ZDLFVBQVVDLE1BQXNDLEdBQUcsQ0FBTSxHQUFHO1lBQzVEQyxRQUFRRCxrQkFBeUI7WUFDakNFLE1BQU07UUFDVjtJQUNKO0lBQ0FDLFVBQVU7UUFDTiwyREFBMkQ7UUFDM0Qsb0RBQW9EO1FBQ3BELHdFQUF3RTtRQUN4RSxJQUFJLENBQUNWLGVBQWUsQ0FBQ0csR0FBRyxDQUFDO1lBQ3JCQyxNQUFNckIsb0VBQTRCQTtZQUNsQ1ksT0FBTztZQUNQVSxVQUFVO1lBQ1ZDLFVBQVVDLE1BQXNDLEdBQUcsQ0FBTSxHQUFHO1lBQzVEQyxRQUFRRCxrQkFBeUI7WUFDakNFLE1BQU07WUFDTkUsU0FBUyxJQUFJQyxLQUFLO1FBQ3RCO0lBQ0o7QUFDSixFQUVBLCtDQUErQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXN5bmMtc3RvcmFnZS9kcmFmdC1tb2RlLXByb3ZpZGVyLmpzPzg3ZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUywgY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZSB9IGZyb20gXCIuLi9hcGktdXRpbHNcIjtcbmV4cG9ydCBjbGFzcyBEcmFmdE1vZGVQcm92aWRlciB7XG4gICAgY29uc3RydWN0b3IocHJldmlld1Byb3BzLCByZXEsIGNvb2tpZXMsIG11dGFibGVDb29raWVzKXtcbiAgICAgICAgdmFyIF9jb29raWVzX2dldDtcbiAgICAgICAgLy8gVGhlIGxvZ2ljIGZvciBkcmFmdE1vZGUoKSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdHJ5R2V0UHJldmlld0RhdGEoKVxuICAgICAgICAvLyBidXQgRHJhZnQgTW9kZSBkb2VzIG5vdCBoYXZlIGFueSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdC5cbiAgICAgICAgY29uc3QgaXNPbkRlbWFuZFJldmFsaWRhdGUgPSBwcmV2aWV3UHJvcHMgJiYgY2hlY2tJc09uRGVtYW5kUmV2YWxpZGF0ZShyZXEsIHByZXZpZXdQcm9wcykuaXNPbkRlbWFuZFJldmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IGNvb2tpZVZhbHVlID0gKF9jb29raWVzX2dldCA9IGNvb2tpZXMuZ2V0KENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MpKSA9PSBudWxsID8gdm9pZCAwIDogX2Nvb2tpZXNfZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLmlzRW5hYmxlZCA9IEJvb2xlYW4oIWlzT25EZW1hbmRSZXZhbGlkYXRlICYmIGNvb2tpZVZhbHVlICYmIHByZXZpZXdQcm9wcyAmJiBjb29raWVWYWx1ZSA9PT0gcHJldmlld1Byb3BzLnByZXZpZXdNb2RlSWQpO1xuICAgICAgICB0aGlzLl9wcmV2aWV3TW9kZUlkID0gcHJldmlld1Byb3BzID09IG51bGwgPyB2b2lkIDAgOiBwcmV2aWV3UHJvcHMucHJldmlld01vZGVJZDtcbiAgICAgICAgdGhpcy5fbXV0YWJsZUNvb2tpZXMgPSBtdXRhYmxlQ29va2llcztcbiAgICB9XG4gICAgZW5hYmxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpZXdNb2RlSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFyaWFudDogcHJldmlld1Byb3BzIG1pc3NpbmcgcHJldmlld01vZGVJZCB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbXV0YWJsZUNvb2tpZXMuc2V0KHtcbiAgICAgICAgICAgIG5hbWU6IENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fcHJldmlld01vZGVJZCxcbiAgICAgICAgICAgIGh0dHBPbmx5OiB0cnVlLFxuICAgICAgICAgICAgc2FtZVNpdGU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIgPyBcIm5vbmVcIiA6IFwibGF4XCIsXG4gICAgICAgICAgICBzZWN1cmU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIsXG4gICAgICAgICAgICBwYXRoOiBcIi9cIlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgLy8gVG8gZGVsZXRlIGEgY29va2llLCBzZXQgYGV4cGlyZXNgIHRvIGEgZGF0ZSBpbiB0aGUgcGFzdDpcbiAgICAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi00LjEuMVxuICAgICAgICAvLyBgTWF4LUFnZTogMGAgaXMgbm90IHZhbGlkLCB0aHVzIGlnbm9yZWQsIGFuZCB0aGUgY29va2llIGlzIHBlcnNpc3RlZC5cbiAgICAgICAgdGhpcy5fbXV0YWJsZUNvb2tpZXMuc2V0KHtcbiAgICAgICAgICAgIG5hbWU6IENPT0tJRV9OQU1FX1BSRVJFTkRFUl9CWVBBU1MsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgIGh0dHBPbmx5OiB0cnVlLFxuICAgICAgICAgICAgc2FtZVNpdGU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIgPyBcIm5vbmVcIiA6IFwibGF4XCIsXG4gICAgICAgICAgICBzZWN1cmU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIsXG4gICAgICAgICAgICBwYXRoOiBcIi9cIixcbiAgICAgICAgICAgIGV4cGlyZXM6IG5ldyBEYXRlKDApXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZHJhZnQtbW9kZS1wcm92aWRlci5qcy5tYXAiXSwibmFtZXMiOlsiQ09PS0lFX05BTUVfUFJFUkVOREVSX0JZUEFTUyIsImNoZWNrSXNPbkRlbWFuZFJldmFsaWRhdGUiLCJEcmFmdE1vZGVQcm92aWRlciIsImNvbnN0cnVjdG9yIiwicHJldmlld1Byb3BzIiwicmVxIiwiY29va2llcyIsIm11dGFibGVDb29raWVzIiwiX2Nvb2tpZXNfZ2V0IiwiaXNPbkRlbWFuZFJldmFsaWRhdGUiLCJjb29raWVWYWx1ZSIsImdldCIsInZhbHVlIiwiaXNFbmFibGVkIiwiQm9vbGVhbiIsInByZXZpZXdNb2RlSWQiLCJfcHJldmlld01vZGVJZCIsIl9tdXRhYmxlQ29va2llcyIsImVuYWJsZSIsIkVycm9yIiwic2V0IiwibmFtZSIsImh0dHBPbmx5Iiwic2FtZVNpdGUiLCJwcm9jZXNzIiwic2VjdXJlIiwicGF0aCIsImRpc2FibGUiLCJleHBpcmVzIiwiRGF0ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js":
/*!******************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js ***!
\******************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RequestAsyncStorageWrapper: () => (/* binding */ RequestAsyncStorageWrapper)\n/* harmony export */ });\n/* harmony import */ var _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\");\n/* harmony import */ var _web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../web/spec-extension/adapters/headers */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js\");\n/* harmony import */ var _web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../web/spec-extension/adapters/request-cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js\");\n/* harmony import */ var _web_spec_extension_cookies__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../web/spec-extension/cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\");\n/* harmony import */ var _draft_mode_provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./draft-mode-provider */ \"(rsc)/./node_modules/next/dist/esm/server/async-storage/draft-mode-provider.js\");\n\n\n\n\n\nfunction getHeaders(headers) {\n const cleaned = _web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__.HeadersAdapter.from(headers);\n for (const param of _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__.FLIGHT_PARAMETERS){\n cleaned.delete(param.toString().toLowerCase());\n }\n return _web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__.HeadersAdapter.seal(cleaned);\n}\nfunction getCookies(headers) {\n const cookies = new _web_spec_extension_cookies__WEBPACK_IMPORTED_MODULE_3__.RequestCookies(_web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__.HeadersAdapter.from(headers));\n return _web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_2__.RequestCookiesAdapter.seal(cookies);\n}\nfunction getMutableCookies(headers, onUpdateCookies) {\n const cookies = new _web_spec_extension_cookies__WEBPACK_IMPORTED_MODULE_3__.RequestCookies(_web_spec_extension_adapters_headers__WEBPACK_IMPORTED_MODULE_1__.HeadersAdapter.from(headers));\n return _web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_2__.MutableRequestCookiesAdapter.wrap(cookies, onUpdateCookies);\n}\nconst RequestAsyncStorageWrapper = {\n /**\n * Wrap the callback with the given store so it can access the underlying\n * store using hooks.\n *\n * @param storage underlying storage object returned by the module\n * @param context context to seed the store\n * @param callback function to call within the scope of the context\n * @returns the result returned by the callback\n */ wrap (storage, { req, res, renderOpts }, callback) {\n let previewProps = undefined;\n if (renderOpts && \"previewProps\" in renderOpts) {\n // TODO: investigate why previewProps isn't on RenderOpts\n previewProps = renderOpts.previewProps;\n }\n function defaultOnUpdateCookies(cookies) {\n if (res) {\n res.setHeader(\"Set-Cookie\", cookies);\n }\n }\n const cache = {};\n const store = {\n get headers () {\n if (!cache.headers) {\n // Seal the headers object that'll freeze out any methods that could\n // mutate the underlying data.\n cache.headers = getHeaders(req.headers);\n }\n return cache.headers;\n },\n get cookies () {\n if (!cache.cookies) {\n // Seal the cookies object that'll freeze out any methods that could\n // mutate the underlying data.\n cache.cookies = getCookies(req.headers);\n }\n return cache.cookies;\n },\n get mutableCookies () {\n if (!cache.mutableCookies) {\n cache.mutableCookies = getMutableCookies(req.headers, (renderOpts == null ? void 0 : renderOpts.onUpdateCookies) || (res ? defaultOnUpdateCookies : undefined));\n }\n return cache.mutableCookies;\n },\n get draftMode () {\n if (!cache.draftMode) {\n cache.draftMode = new _draft_mode_provider__WEBPACK_IMPORTED_MODULE_4__.DraftModeProvider(previewProps, req, this.cookies, this.mutableCookies);\n }\n return cache.draftMode;\n }\n };\n return storage.run(store, callback, store);\n }\n}; //# sourceMappingURL=request-async-storage-wrapper.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXN5bmMtc3RvcmFnZS9yZXF1ZXN0LWFzeW5jLXN0b3JhZ2Utd3JhcHBlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0U7QUFDUDtBQUM2QztBQUN0RDtBQUNMO0FBQzFELFNBQVNNLFdBQVdDLE9BQU87SUFDdkIsTUFBTUMsVUFBVVAsZ0ZBQWNBLENBQUNRLElBQUksQ0FBQ0Y7SUFDcEMsS0FBSyxNQUFNRyxTQUFTVixvRkFBaUJBLENBQUM7UUFDbENRLFFBQVFHLE1BQU0sQ0FBQ0QsTUFBTUUsUUFBUSxHQUFHQyxXQUFXO0lBQy9DO0lBQ0EsT0FBT1osZ0ZBQWNBLENBQUNhLElBQUksQ0FBQ047QUFDL0I7QUFDQSxTQUFTTyxXQUFXUixPQUFPO0lBQ3ZCLE1BQU1TLFVBQVUsSUFBSVosdUVBQWNBLENBQUNILGdGQUFjQSxDQUFDUSxJQUFJLENBQUNGO0lBQ3ZELE9BQU9KLCtGQUFxQkEsQ0FBQ1csSUFBSSxDQUFDRTtBQUN0QztBQUNBLFNBQVNDLGtCQUFrQlYsT0FBTyxFQUFFVyxlQUFlO0lBQy9DLE1BQU1GLFVBQVUsSUFBSVosdUVBQWNBLENBQUNILGdGQUFjQSxDQUFDUSxJQUFJLENBQUNGO0lBQ3ZELE9BQU9MLHNHQUE0QkEsQ0FBQ2lCLElBQUksQ0FBQ0gsU0FBU0U7QUFDdEQ7QUFDTyxNQUFNRSw2QkFBNkI7SUFDdEM7Ozs7Ozs7O0dBUUQsR0FBR0QsTUFBTUUsT0FBTyxFQUFFLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxVQUFVLEVBQUUsRUFBRUMsUUFBUTtRQUMvQyxJQUFJQyxlQUFlQztRQUNuQixJQUFJSCxjQUFjLGtCQUFrQkEsWUFBWTtZQUM1Qyx5REFBeUQ7WUFDekRFLGVBQWVGLFdBQVdFLFlBQVk7UUFDMUM7UUFDQSxTQUFTRSx1QkFBdUJaLE9BQU87WUFDbkMsSUFBSU8sS0FBSztnQkFDTEEsSUFBSU0sU0FBUyxDQUFDLGNBQWNiO1lBQ2hDO1FBQ0o7UUFDQSxNQUFNYyxRQUFRLENBQUM7UUFDZixNQUFNQyxRQUFRO1lBQ1YsSUFBSXhCLFdBQVc7Z0JBQ1gsSUFBSSxDQUFDdUIsTUFBTXZCLE9BQU8sRUFBRTtvQkFDaEIsb0VBQW9FO29CQUNwRSw4QkFBOEI7b0JBQzlCdUIsTUFBTXZCLE9BQU8sR0FBR0QsV0FBV2dCLElBQUlmLE9BQU87Z0JBQzFDO2dCQUNBLE9BQU91QixNQUFNdkIsT0FBTztZQUN4QjtZQUNBLElBQUlTLFdBQVc7Z0JBQ1gsSUFBSSxDQUFDYyxNQUFNZCxPQUFPLEVBQUU7b0JBQ2hCLG9FQUFvRTtvQkFDcEUsOEJBQThCO29CQUM5QmMsTUFBTWQsT0FBTyxHQUFHRCxXQUFXTyxJQUFJZixPQUFPO2dCQUMxQztnQkFDQSxPQUFPdUIsTUFBTWQsT0FBTztZQUN4QjtZQUNBLElBQUlnQixrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQ0YsTUFBTUUsY0FBYyxFQUFFO29CQUN2QkYsTUFBTUUsY0FBYyxHQUFHZixrQkFBa0JLLElBQUlmLE9BQU8sRUFBRSxDQUFDaUIsY0FBYyxPQUFPLEtBQUssSUFBSUEsV0FBV04sZUFBZSxLQUFNSyxDQUFBQSxNQUFNSyx5QkFBeUJELFNBQVE7Z0JBQ2hLO2dCQUNBLE9BQU9HLE1BQU1FLGNBQWM7WUFDL0I7WUFDQSxJQUFJQyxhQUFhO2dCQUNiLElBQUksQ0FBQ0gsTUFBTUcsU0FBUyxFQUFFO29CQUNsQkgsTUFBTUcsU0FBUyxHQUFHLElBQUk1QixtRUFBaUJBLENBQUNxQixjQUFjSixLQUFLLElBQUksQ0FBQ04sT0FBTyxFQUFFLElBQUksQ0FBQ2dCLGNBQWM7Z0JBQ2hHO2dCQUNBLE9BQU9GLE1BQU1HLFNBQVM7WUFDMUI7UUFDSjtRQUNBLE9BQU9aLFFBQVFhLEdBQUcsQ0FBQ0gsT0FBT04sVUFBVU07SUFDeEM7QUFDSixFQUFFLENBRUYseURBQXlEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9hc3luYy1zdG9yYWdlL3JlcXVlc3QtYXN5bmMtc3RvcmFnZS13cmFwcGVyLmpzP2M2NTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRkxJR0hUX1BBUkFNRVRFUlMgfSBmcm9tIFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzXCI7XG5pbXBvcnQgeyBIZWFkZXJzQWRhcHRlciB9IGZyb20gXCIuLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvaGVhZGVyc1wiO1xuaW1wb3J0IHsgTXV0YWJsZVJlcXVlc3RDb29raWVzQWRhcHRlciwgUmVxdWVzdENvb2tpZXNBZGFwdGVyIH0gZnJvbSBcIi4uL3dlYi9zcGVjLWV4dGVuc2lvbi9hZGFwdGVycy9yZXF1ZXN0LWNvb2tpZXNcIjtcbmltcG9ydCB7IFJlcXVlc3RDb29raWVzIH0gZnJvbSBcIi4uL3dlYi9zcGVjLWV4dGVuc2lvbi9jb29raWVzXCI7XG5pbXBvcnQgeyBEcmFmdE1vZGVQcm92aWRlciB9IGZyb20gXCIuL2RyYWZ0LW1vZGUtcHJvdmlkZXJcIjtcbmZ1bmN0aW9uIGdldEhlYWRlcnMoaGVhZGVycykge1xuICAgIGNvbnN0IGNsZWFuZWQgPSBIZWFkZXJzQWRhcHRlci5mcm9tKGhlYWRlcnMpO1xuICAgIGZvciAoY29uc3QgcGFyYW0gb2YgRkxJR0hUX1BBUkFNRVRFUlMpe1xuICAgICAgICBjbGVhbmVkLmRlbGV0ZShwYXJhbS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gSGVhZGVyc0FkYXB0ZXIuc2VhbChjbGVhbmVkKTtcbn1cbmZ1bmN0aW9uIGdldENvb2tpZXMoaGVhZGVycykge1xuICAgIGNvbnN0IGNvb2tpZXMgPSBuZXcgUmVxdWVzdENvb2tpZXMoSGVhZGVyc0FkYXB0ZXIuZnJvbShoZWFkZXJzKSk7XG4gICAgcmV0dXJuIFJlcXVlc3RDb29raWVzQWRhcHRlci5zZWFsKGNvb2tpZXMpO1xufVxuZnVuY3Rpb24gZ2V0TXV0YWJsZUNvb2tpZXMoaGVhZGVycywgb25VcGRhdGVDb29raWVzKSB7XG4gICAgY29uc3QgY29va2llcyA9IG5ldyBSZXF1ZXN0Q29va2llcyhIZWFkZXJzQWRhcHRlci5mcm9tKGhlYWRlcnMpKTtcbiAgICByZXR1cm4gTXV0YWJsZVJlcXVlc3RDb29raWVzQWRhcHRlci53cmFwKGNvb2tpZXMsIG9uVXBkYXRlQ29va2llcyk7XG59XG5leHBvcnQgY29uc3QgUmVxdWVzdEFzeW5jU3RvcmFnZVdyYXBwZXIgPSB7XG4gICAgLyoqXG4gICAqIFdyYXAgdGhlIGNhbGxiYWNrIHdpdGggdGhlIGdpdmVuIHN0b3JlIHNvIGl0IGNhbiBhY2Nlc3MgdGhlIHVuZGVybHlpbmdcbiAgICogc3RvcmUgdXNpbmcgaG9va3MuXG4gICAqXG4gICAqIEBwYXJhbSBzdG9yYWdlIHVuZGVybHlpbmcgc3RvcmFnZSBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIG1vZHVsZVxuICAgKiBAcGFyYW0gY29udGV4dCBjb250ZXh0IHRvIHNlZWQgdGhlIHN0b3JlXG4gICAqIEBwYXJhbSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGNvbnRleHRcbiAgICogQHJldHVybnMgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcbiAgICovIHdyYXAgKHN0b3JhZ2UsIHsgcmVxLCByZXMsIHJlbmRlck9wdHMgfSwgY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IHByZXZpZXdQcm9wcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlbmRlck9wdHMgJiYgXCJwcmV2aWV3UHJvcHNcIiBpbiByZW5kZXJPcHRzKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSB3aHkgcHJldmlld1Byb3BzIGlzbid0IG9uIFJlbmRlck9wdHNcbiAgICAgICAgICAgIHByZXZpZXdQcm9wcyA9IHJlbmRlck9wdHMucHJldmlld1Byb3BzO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRPblVwZGF0ZUNvb2tpZXMoY29va2llcykge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoXCJTZXQtQ29va2llXCIsIGNvb2tpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhY2hlID0ge307XG4gICAgICAgIGNvbnN0IHN0b3JlID0ge1xuICAgICAgICAgICAgZ2V0IGhlYWRlcnMgKCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGUuaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZWFsIHRoZSBoZWFkZXJzIG9iamVjdCB0aGF0J2xsIGZyZWV6ZSBvdXQgYW55IG1ldGhvZHMgdGhhdCBjb3VsZFxuICAgICAgICAgICAgICAgICAgICAvLyBtdXRhdGUgdGhlIHVuZGVybHlpbmcgZGF0YS5cbiAgICAgICAgICAgICAgICAgICAgY2FjaGUuaGVhZGVycyA9IGdldEhlYWRlcnMocmVxLmhlYWRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGUuaGVhZGVycztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29va2llcyAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZS5jb29raWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlYWwgdGhlIGNvb2tpZXMgb2JqZWN0IHRoYXQnbGwgZnJlZXplIG91dCBhbnkgbWV0aG9kcyB0aGF0IGNvdWxkXG4gICAgICAgICAgICAgICAgICAgIC8vIG11dGF0ZSB0aGUgdW5kZXJseWluZyBkYXRhLlxuICAgICAgICAgICAgICAgICAgICBjYWNoZS5jb29raWVzID0gZ2V0Q29va2llcyhyZXEuaGVhZGVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5jb29raWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBtdXRhYmxlQ29va2llcyAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZS5tdXRhYmxlQ29va2llcykge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZS5tdXRhYmxlQ29va2llcyA9IGdldE11dGFibGVDb29raWVzKHJlcS5oZWFkZXJzLCAocmVuZGVyT3B0cyA9PSBudWxsID8gdm9pZCAwIDogcmVuZGVyT3B0cy5vblVwZGF0ZUNvb2tpZXMpIHx8IChyZXMgPyBkZWZhdWx0T25VcGRhdGVDb29raWVzIDogdW5kZWZpbmVkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5tdXRhYmxlQ29va2llcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgZHJhZnRNb2RlICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLmRyYWZ0TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZS5kcmFmdE1vZGUgPSBuZXcgRHJhZnRNb2RlUHJvdmlkZXIocHJldmlld1Byb3BzLCByZXEsIHRoaXMuY29va2llcywgdGhpcy5tdXRhYmxlQ29va2llcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5kcmFmdE1vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzdG9yYWdlLnJ1bihzdG9yZSwgY2FsbGJhY2ssIHN0b3JlKTtcbiAgICB9XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWFzeW5jLXN0b3JhZ2Utd3JhcHBlci5qcy5tYXAiXSwibmFtZXMiOlsiRkxJR0hUX1BBUkFNRVRFUlMiLCJIZWFkZXJzQWRhcHRlciIsIk11dGFibGVSZXF1ZXN0Q29va2llc0FkYXB0ZXIiLCJSZXF1ZXN0Q29va2llc0FkYXB0ZXIiLCJSZXF1ZXN0Q29va2llcyIsIkRyYWZ0TW9kZVByb3ZpZGVyIiwiZ2V0SGVhZGVycyIsImhlYWRlcnMiLCJjbGVhbmVkIiwiZnJvbSIsInBhcmFtIiwiZGVsZXRlIiwidG9TdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInNlYWwiLCJnZXRDb29raWVzIiwiY29va2llcyIsImdldE11dGFibGVDb29raWVzIiwib25VcGRhdGVDb29raWVzIiwid3JhcCIsIlJlcXVlc3RBc3luY1N0b3JhZ2VXcmFwcGVyIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInJlbmRlck9wdHMiLCJjYWxsYmFjayIsInByZXZpZXdQcm9wcyIsInVuZGVmaW5lZCIsImRlZmF1bHRPblVwZGF0ZUNvb2tpZXMiLCJzZXRIZWFkZXIiLCJjYWNoZSIsInN0b3JlIiwibXV0YWJsZUNvb2tpZXMiLCJkcmFmdE1vZGUiLCJydW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/async-storage/static-generation-async-storage-wrapper.js":
/*!****************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/async-storage/static-generation-async-storage-wrapper.js ***!
\****************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StaticGenerationAsyncStorageWrapper: () => (/* binding */ StaticGenerationAsyncStorageWrapper)\n/* harmony export */ });\nconst StaticGenerationAsyncStorageWrapper = {\n wrap (storage, { urlPathname, renderOpts, postpone }, callback) {\n /**\n * Rules of Static & Dynamic HTML:\n *\n * 1.) We must generate static HTML unless the caller explicitly opts\n * in to dynamic HTML support.\n *\n * 2.) If dynamic HTML support is requested, we must honor that request\n * or throw an error. It is the sole responsibility of the caller to\n * ensure they aren't e.g. requesting dynamic HTML for an AMP page.\n *\n * 3.) If the request is in draft mode, we must generate dynamic HTML.\n *\n * 4.) If the request is a server action, we must generate dynamic HTML.\n *\n * These rules help ensure that other existing features like request caching,\n * coalescing, and ISR continue working as intended.\n */ const isStaticGeneration = !renderOpts.supportsDynamicHTML && !renderOpts.isDraftMode && !renderOpts.isServerAction;\n const store = {\n isStaticGeneration,\n urlPathname,\n pagePath: renderOpts.originalPathname,\n incrementalCache: // so that it can access the fs cache without mocks\n renderOpts.incrementalCache || globalThis.__incrementalCache,\n isRevalidate: renderOpts.isRevalidate,\n isPrerendering: renderOpts.nextExport,\n fetchCache: renderOpts.fetchCache,\n isOnDemandRevalidate: renderOpts.isOnDemandRevalidate,\n isDraftMode: renderOpts.isDraftMode,\n postpone: // we don't need to postpone.\n isStaticGeneration && renderOpts.experimental.ppr && postpone ? (reason)=>{\n // Keep track of if the postpone API has been called.\n store.postponeWasTriggered = true;\n return postpone(`This page needs to bail out of prerendering at this point because it used ${reason}. ` + `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 } : undefined\n };\n // TODO: remove this when we resolve accessing the store outside the execution context\n renderOpts.store = store;\n return storage.run(store, callback, store);\n }\n}; //# sourceMappingURL=static-generation-async-storage-wrapper.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvYXN5bmMtc3RvcmFnZS9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLXdyYXBwZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU1BLHNDQUFzQztJQUMvQ0MsTUFBTUMsT0FBTyxFQUFFLEVBQUVDLFdBQVcsRUFBRUMsVUFBVSxFQUFFQyxRQUFRLEVBQUUsRUFBRUMsUUFBUTtRQUMxRDs7Ozs7Ozs7Ozs7Ozs7OztLQWdCSCxHQUFHLE1BQU1DLHFCQUFxQixDQUFDSCxXQUFXSSxtQkFBbUIsSUFBSSxDQUFDSixXQUFXSyxXQUFXLElBQUksQ0FBQ0wsV0FBV00sY0FBYztRQUNuSCxNQUFNQyxRQUFRO1lBQ1ZKO1lBQ0FKO1lBQ0FTLFVBQVVSLFdBQVdTLGdCQUFnQjtZQUNyQ0Msa0JBQ0EsbURBQW1EO1lBQ25EVixXQUFXVSxnQkFBZ0IsSUFBSUMsV0FBV0Msa0JBQWtCO1lBQzVEQyxjQUFjYixXQUFXYSxZQUFZO1lBQ3JDQyxnQkFBZ0JkLFdBQVdlLFVBQVU7WUFDckNDLFlBQVloQixXQUFXZ0IsVUFBVTtZQUNqQ0Msc0JBQXNCakIsV0FBV2lCLG9CQUFvQjtZQUNyRFosYUFBYUwsV0FBV0ssV0FBVztZQUNuQ0osVUFDQSw2QkFBNkI7WUFDN0JFLHNCQUFzQkgsV0FBV2tCLFlBQVksQ0FBQ0MsR0FBRyxJQUFJbEIsV0FBVyxDQUFDbUI7Z0JBQzdELHFEQUFxRDtnQkFDckRiLE1BQU1jLG9CQUFvQixHQUFHO2dCQUM3QixPQUFPcEIsU0FBUyxDQUFDLDBFQUEwRSxFQUFFbUIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLCtFQUErRSxDQUFDLEdBQUcsQ0FBQyxpRkFBaUYsQ0FBQztZQUNyUixJQUFJRTtRQUNSO1FBQ0Esc0ZBQXNGO1FBQ3RGdEIsV0FBV08sS0FBSyxHQUFHQTtRQUNuQixPQUFPVCxRQUFReUIsR0FBRyxDQUFDaEIsT0FBT0wsVUFBVUs7SUFDeEM7QUFDSixFQUFFLENBRUYsbUVBQW1FIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9hc3luYy1zdG9yYWdlL3N0YXRpYy1nZW5lcmF0aW9uLWFzeW5jLXN0b3JhZ2Utd3JhcHBlci5qcz9hYmQzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlV3JhcHBlciA9IHtcbiAgICB3cmFwIChzdG9yYWdlLCB7IHVybFBhdGhuYW1lLCByZW5kZXJPcHRzLCBwb3N0cG9uZSB9LCBjYWxsYmFjaykge1xuICAgICAgICAvKipcbiAgICAgKiBSdWxlcyBvZiBTdGF0aWMgJiBEeW5hbWljIEhUTUw6XG4gICAgICpcbiAgICAgKiAgICAxLikgV2UgbXVzdCBnZW5lcmF0ZSBzdGF0aWMgSFRNTCB1bmxlc3MgdGhlIGNhbGxlciBleHBsaWNpdGx5IG9wdHNcbiAgICAgKiAgICAgICAgaW4gdG8gZHluYW1pYyBIVE1MIHN1cHBvcnQuXG4gICAgICpcbiAgICAgKiAgICAyLikgSWYgZHluYW1pYyBIVE1MIHN1cHBvcnQgaXMgcmVxdWVzdGVkLCB3ZSBtdXN0IGhvbm9yIHRoYXQgcmVxdWVzdFxuICAgICAqICAgICAgICBvciB0aHJvdyBhbiBlcnJvci4gSXQgaXMgdGhlIHNvbGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0b1xuICAgICAqICAgICAgICBlbnN1cmUgdGhleSBhcmVuJ3QgZS5nLiByZXF1ZXN0aW5nIGR5bmFtaWMgSFRNTCBmb3IgYW4gQU1QIHBhZ2UuXG4gICAgICpcbiAgICAgKiAgICAzLikgSWYgdGhlIHJlcXVlc3QgaXMgaW4gZHJhZnQgbW9kZSwgd2UgbXVzdCBnZW5lcmF0ZSBkeW5hbWljIEhUTUwuXG4gICAgICpcbiAgICAgKiAgICA0LikgSWYgdGhlIHJlcXVlc3QgaXMgYSBzZXJ2ZXIgYWN0aW9uLCB3ZSBtdXN0IGdlbmVyYXRlIGR5bmFtaWMgSFRNTC5cbiAgICAgKlxuICAgICAqIFRoZXNlIHJ1bGVzIGhlbHAgZW5zdXJlIHRoYXQgb3RoZXIgZXhpc3RpbmcgZmVhdHVyZXMgbGlrZSByZXF1ZXN0IGNhY2hpbmcsXG4gICAgICogY29hbGVzY2luZywgYW5kIElTUiBjb250aW51ZSB3b3JraW5nIGFzIGludGVuZGVkLlxuICAgICAqLyBjb25zdCBpc1N0YXRpY0dlbmVyYXRpb24gPSAhcmVuZGVyT3B0cy5zdXBwb3J0c0R5bmFtaWNIVE1MICYmICFyZW5kZXJPcHRzLmlzRHJhZnRNb2RlICYmICFyZW5kZXJPcHRzLmlzU2VydmVyQWN0aW9uO1xuICAgICAgICBjb25zdCBzdG9yZSA9IHtcbiAgICAgICAgICAgIGlzU3RhdGljR2VuZXJhdGlvbixcbiAgICAgICAgICAgIHVybFBhdGhuYW1lLFxuICAgICAgICAgICAgcGFnZVBhdGg6IHJlbmRlck9wdHMub3JpZ2luYWxQYXRobmFtZSxcbiAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGU6IC8vIHdlIGZhbGxiYWNrIHRvIGEgZ2xvYmFsIGluY3JlbWVudGFsIGNhY2hlIGZvciBlZGdlLXJ1bnRpbWUgbG9jYWxseVxuICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYWNjZXNzIHRoZSBmcyBjYWNoZSB3aXRob3V0IG1vY2tzXG4gICAgICAgICAgICByZW5kZXJPcHRzLmluY3JlbWVudGFsQ2FjaGUgfHwgZ2xvYmFsVGhpcy5fX2luY3JlbWVudGFsQ2FjaGUsXG4gICAgICAgICAgICBpc1JldmFsaWRhdGU6IHJlbmRlck9wdHMuaXNSZXZhbGlkYXRlLFxuICAgICAgICAgICAgaXNQcmVyZW5kZXJpbmc6IHJlbmRlck9wdHMubmV4dEV4cG9ydCxcbiAgICAgICAgICAgIGZldGNoQ2FjaGU6IHJlbmRlck9wdHMuZmV0Y2hDYWNoZSxcbiAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlOiByZW5kZXJPcHRzLmlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgaXNEcmFmdE1vZGU6IHJlbmRlck9wdHMuaXNEcmFmdE1vZGUsXG4gICAgICAgICAgICBwb3N0cG9uZTogLy8gSWYgd2UgYXJlbid0IHBlcmZvcm1pbmcgYSBzdGF0aWMgZ2VuZXJhdGlvbiBvciB3ZSBhcmVuJ3QgdXNpbmcgUFBSIHRoZW5cbiAgICAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcG9zdHBvbmUuXG4gICAgICAgICAgICBpc1N0YXRpY0dlbmVyYXRpb24gJiYgcmVuZGVyT3B0cy5leHBlcmltZW50YWwucHByICYmIHBvc3Rwb25lID8gKHJlYXNvbik9PntcbiAgICAgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGlmIHRoZSBwb3N0cG9uZSBBUEkgaGFzIGJlZW4gY2FsbGVkLlxuICAgICAgICAgICAgICAgIHN0b3JlLnBvc3Rwb25lV2FzVHJpZ2dlcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zdHBvbmUoYFRoaXMgcGFnZSBuZWVkcyB0byBiYWlsIG91dCBvZiBwcmVyZW5kZXJpbmcgYXQgdGhpcyBwb2ludCBiZWNhdXNlIGl0IHVzZWQgJHtyZWFzb259LiBgICsgYFJlYWN0IHRocm93cyB0aGlzIHNwZWNpYWwgb2JqZWN0IHRvIGluZGljYXRlIHdoZXJlLiBJdCBzaG91bGQgbm90IGJlIGNhdWdodCBieSBgICsgYHlvdXIgb3duIHRyeS9jYXRjaC4gTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHByLWNhdWdodC1lcnJvcmApO1xuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuICAgICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyB3aGVuIHdlIHJlc29sdmUgYWNjZXNzaW5nIHRoZSBzdG9yZSBvdXRzaWRlIHRoZSBleGVjdXRpb24gY29udGV4dFxuICAgICAgICByZW5kZXJPcHRzLnN0b3JlID0gc3RvcmU7XG4gICAgICAgIHJldHVybiBzdG9yYWdlLnJ1bihzdG9yZSwgY2FsbGJhY2ssIHN0b3JlKTtcbiAgICB9XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLXdyYXBwZXIuanMubWFwIl0sIm5hbWVzIjpbIlN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VXcmFwcGVyIiwid3JhcCIsInN0b3JhZ2UiLCJ1cmxQYXRobmFtZSIsInJlbmRlck9wdHMiLCJwb3N0cG9uZSIsImNhbGxiYWNrIiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwic3VwcG9ydHNEeW5hbWljSFRNTCIsImlzRHJhZnRNb2RlIiwiaXNTZXJ2ZXJBY3Rpb24iLCJzdG9yZSIsInBhZ2VQYXRoIiwib3JpZ2luYWxQYXRobmFtZSIsImluY3JlbWVudGFsQ2FjaGUiLCJnbG9iYWxUaGlzIiwiX19pbmNyZW1lbnRhbENhY2hlIiwiaXNSZXZhbGlkYXRlIiwiaXNQcmVyZW5kZXJpbmciLCJuZXh0RXhwb3J0IiwiZmV0Y2hDYWNoZSIsImlzT25EZW1hbmRSZXZhbGlkYXRlIiwiZXhwZXJpbWVudGFsIiwicHByIiwicmVhc29uIiwicG9zdHBvbmVXYXNUcmlnZ2VyZWQiLCJ1bmRlZmluZWQiLCJydW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/async-storage/static-generation-async-storage-wrapper.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/helpers/interception-routes.js":
/*!*********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/helpers/interception-routes.js ***!
\*********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INTERCEPTION_ROUTE_MARKERS: () => (/* binding */ INTERCEPTION_ROUTE_MARKERS),\n/* harmony export */ extractInterceptionRouteInformation: () => (/* binding */ extractInterceptionRouteInformation),\n/* harmony export */ isInterceptionRouteAppPath: () => (/* binding */ isInterceptionRouteAppPath)\n/* harmony export */ });\n/* harmony import */ var _shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js\");\n\n// order matters here, the first match will be used\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 [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(`Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`);\n }\n interceptingRoute = (0,_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_0__.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 new Error(`Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`);\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 new Error(`Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`);\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join(\"/\");\n break;\n default:\n throw new Error(\"Invariant: unexpected marker\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL2hlbHBlcnMvaW50ZXJjZXB0aW9uLXJvdXRlcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQThFO0FBQzlFLG1EQUFtRDtBQUM1QyxNQUFNQyw2QkFBNkI7SUFDdEM7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxDQUFDO0FBQ0ssU0FBU0MsMkJBQTJCQyxJQUFJO0lBQzNDLHdDQUF3QztJQUN4QyxPQUFPQSxLQUFLQyxLQUFLLENBQUMsS0FBS0MsSUFBSSxDQUFDLENBQUNDLFVBQVVMLDJCQUEyQkksSUFBSSxDQUFDLENBQUNFLElBQUlELFFBQVFFLFVBQVUsQ0FBQ0QsU0FBU0U7QUFDNUc7QUFDTyxTQUFTQyxvQ0FBb0NQLElBQUk7SUFDcEQsSUFBSVEsbUJBQW1CQyxRQUFRQztJQUMvQixLQUFLLE1BQU1QLFdBQVdILEtBQUtDLEtBQUssQ0FBQyxLQUFLO1FBQ2xDUSxTQUFTWCwyQkFBMkJJLElBQUksQ0FBQyxDQUFDRSxJQUFJRCxRQUFRRSxVQUFVLENBQUNEO1FBQ2pFLElBQUlLLFFBQVE7WUFDUixDQUFDRCxtQkFBbUJFLGlCQUFpQixHQUFHVixLQUFLQyxLQUFLLENBQUNRLFFBQVE7WUFDM0Q7UUFDSjtJQUNKO0lBQ0EsSUFBSSxDQUFDRCxxQkFBcUIsQ0FBQ0MsVUFBVSxDQUFDQyxrQkFBa0I7UUFDcEQsTUFBTSxJQUFJQyxNQUFNLENBQUMsNEJBQTRCLEVBQUVYLEtBQUssaUZBQWlGLENBQUM7SUFDMUk7SUFDQVEsb0JBQW9CWCxvRkFBZ0JBLENBQUNXLG1CQUFtQixpREFBaUQ7O0lBRXpHLE9BQU9DO1FBQ0gsS0FBSztZQUNELG9JQUFvSTtZQUNwSSxJQUFJRCxzQkFBc0IsS0FBSztnQkFDM0JFLG1CQUFtQixDQUFDLENBQUMsRUFBRUEsaUJBQWlCLENBQUM7WUFDN0MsT0FBTztnQkFDSEEsbUJBQW1CRixvQkFBb0IsTUFBTUU7WUFDakQ7WUFDQTtRQUNKLEtBQUs7WUFDRCx1SEFBdUg7WUFDdkgsSUFBSUYsc0JBQXNCLEtBQUs7Z0JBQzNCLE1BQU0sSUFBSUcsTUFBTSxDQUFDLDRCQUE0QixFQUFFWCxLQUFLLDREQUE0RCxDQUFDO1lBQ3JIO1lBQ0FVLG1CQUFtQkYsa0JBQWtCUCxLQUFLLENBQUMsS0FBS1csS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxNQUFNLENBQUNILGtCQUFrQkksSUFBSSxDQUFDO1lBQzNGO1FBQ0osS0FBSztZQUNELGtJQUFrSTtZQUNsSUosbUJBQW1CLE1BQU1BO1lBQ3pCO1FBQ0osS0FBSztZQUNELGlJQUFpSTtZQUNqSSxNQUFNSyx5QkFBeUJQLGtCQUFrQlAsS0FBSyxDQUFDO1lBQ3ZELElBQUljLHVCQUF1QkMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3BDLE1BQU0sSUFBSUwsTUFBTSxDQUFDLDRCQUE0QixFQUFFWCxLQUFLLCtEQUErRCxDQUFDO1lBQ3hIO1lBQ0FVLG1CQUFtQkssdUJBQXVCSCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0gsa0JBQWtCSSxJQUFJLENBQUM7WUFDckY7UUFDSjtZQUNJLE1BQU0sSUFBSUgsTUFBTTtJQUN4QjtJQUNBLE9BQU87UUFDSEg7UUFDQUU7SUFDSjtBQUNKLEVBRUEsK0NBQStDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9mdXR1cmUvaGVscGVycy9pbnRlcmNlcHRpb24tcm91dGVzLmpzPzk3ZTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplQXBwUGF0aCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHNcIjtcbi8vIG9yZGVyIG1hdHRlcnMgaGVyZSwgdGhlIGZpcnN0IG1hdGNoIHdpbGwgYmUgdXNlZFxuZXhwb3J0IGNvbnN0IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTID0gW1xuICAgIFwiKC4uKSguLilcIixcbiAgICBcIiguKVwiLFxuICAgIFwiKC4uKVwiLFxuICAgIFwiKC4uLilcIlxuXTtcbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aChwYXRoKSB7XG4gICAgLy8gVE9ETy1BUFA6IGFkZCBtb3JlIHNlcmlvdXMgdmFsaWRhdGlvblxuICAgIHJldHVybiBwYXRoLnNwbGl0KFwiL1wiKS5maW5kKChzZWdtZW50KT0+SU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuZmluZCgobSk9PnNlZ21lbnQuc3RhcnRzV2l0aChtKSkpICE9PSB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24ocGF0aCkge1xuICAgIGxldCBpbnRlcmNlcHRpbmdSb3V0ZSwgbWFya2VyLCBpbnRlcmNlcHRlZFJvdXRlO1xuICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoLnNwbGl0KFwiL1wiKSl7XG4gICAgICAgIG1hcmtlciA9IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLmZpbmQoKG0pPT5zZWdtZW50LnN0YXJ0c1dpdGgobSkpO1xuICAgICAgICBpZiAobWFya2VyKSB7XG4gICAgICAgICAgICBbaW50ZXJjZXB0aW5nUm91dGUsIGludGVyY2VwdGVkUm91dGVdID0gcGF0aC5zcGxpdChtYXJrZXIsIDIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpbnRlcmNlcHRpbmdSb3V0ZSB8fCAhbWFya2VyIHx8ICFpbnRlcmNlcHRlZFJvdXRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnRlcmNlcHRpb24gcm91dGU6ICR7cGF0aH0uIE11c3QgYmUgaW4gdGhlIGZvcm1hdCAvPGludGVyY2VwdGluZyByb3V0ZT4vKC4ufC4uLnwuLikoLi4pLzxpbnRlcmNlcHRlZCByb3V0ZT5gKTtcbiAgICB9XG4gICAgaW50ZXJjZXB0aW5nUm91dGUgPSBub3JtYWxpemVBcHBQYXRoKGludGVyY2VwdGluZ1JvdXRlKSAvLyBub3JtYWxpemUgdGhlIHBhdGgsIGUuZy4gLyhibG9nKS9mZWVkIC0+IC9mZWVkXG4gICAgO1xuICAgIHN3aXRjaChtYXJrZXIpe1xuICAgICAgICBjYXNlIFwiKC4pXCI6XG4gICAgICAgICAgICAvLyAoLikgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxkIG1hdGNoIHdpdGggc2libGluZyByb3V0ZXMsIHNvIHdlIGp1c3QgbmVlZCB0byBhcHBlbmQgdGhlIGludGVyY2VwdGVkIHJvdXRlIHRvIHRoZSBpbnRlcmNlcHRpbmcgcm91dGVcbiAgICAgICAgICAgIGlmIChpbnRlcmNlcHRpbmdSb3V0ZSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICAgICAgICBpbnRlcmNlcHRlZFJvdXRlID0gYC8ke2ludGVyY2VwdGVkUm91dGV9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW50ZXJjZXB0ZWRSb3V0ZSA9IGludGVyY2VwdGluZ1JvdXRlICsgXCIvXCIgKyBpbnRlcmNlcHRlZFJvdXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIoLi4pXCI6XG4gICAgICAgICAgICAvLyAoLi4pIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBtYXRjaCBhdCBvbmUgbGV2ZWwgdXAsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGludGVyY2VwdGluZyByb3V0ZVxuICAgICAgICAgICAgaWYgKGludGVyY2VwdGluZ1JvdXRlID09PSBcIi9cIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnRlcmNlcHRpb24gcm91dGU6ICR7cGF0aH0uIENhbm5vdCB1c2UgKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwsIHVzZSAoLikgaW5zdGVhZC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZS5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmNvbmNhdChpbnRlcmNlcHRlZFJvdXRlKS5qb2luKFwiL1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiKC4uLilcIjpcbiAgICAgICAgICAgIC8vICguLi4pIHdpbGwgbWF0Y2ggdGhlIHJvdXRlIHNlZ21lbnQgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gcHJlcGVuZCB0aGUgaW50ZXJjZXB0ZWQgcm91dGVcbiAgICAgICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBcIi9cIiArIGludGVyY2VwdGVkUm91dGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIiguLikoLi4pXCI6XG4gICAgICAgICAgICAvLyAoLi4pKC4uKSBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWF0Y2ggYXQgdHdvIGxldmVscyB1cCwgc28gd2UgbmVlZCB0byByZW1vdmUgdGhlIGxhc3QgdHdvIHNlZ21lbnRzIG9mIHRoZSBpbnRlcmNlcHRpbmcgcm91dGVcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0SW50ZXJjZXB0aW5nUm91dGUgPSBpbnRlcmNlcHRpbmdSb3V0ZS5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICBpZiAoc3BsaXRJbnRlcmNlcHRpbmdSb3V0ZS5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnRlcmNlcHRpb24gcm91dGU6ICR7cGF0aH0uIENhbm5vdCB1c2UgKC4uKSguLikgbWFya2VyIGF0IHRoZSByb290IGxldmVsIG9yIG9uZSBsZXZlbCB1cC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludGVyY2VwdGVkUm91dGUgPSBzcGxpdEludGVyY2VwdGluZ1JvdXRlLnNsaWNlKDAsIC0yKS5jb25jYXQoaW50ZXJjZXB0ZWRSb3V0ZSkuam9pbihcIi9cIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFyaWFudDogdW5leHBlY3RlZCBtYXJrZXJcIik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGludGVyY2VwdGluZ1JvdXRlLFxuICAgICAgICBpbnRlcmNlcHRlZFJvdXRlXG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJjZXB0aW9uLXJvdXRlcy5qcy5tYXAiXSwibmFtZXMiOlsibm9ybWFsaXplQXBwUGF0aCIsIklOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJwYXRoIiwic3BsaXQiLCJmaW5kIiwic2VnbWVudCIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24iLCJpbnRlcmNlcHRpbmdSb3V0ZSIsIm1hcmtlciIsImludGVyY2VwdGVkUm91dGUiLCJFcnJvciIsInNsaWNlIiwiY29uY2F0Iiwiam9pbiIsInNwbGl0SW50ZXJjZXB0aW5nUm91dGUiLCJsZW5ndGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/helpers/interception-routes.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-kind.js":
/*!****************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-kind.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RouteKind: () => (/* binding */ RouteKind)\n/* harmony export */ });\nvar RouteKind;\n(function(RouteKind) {\n RouteKind[/**\n * `PAGES` represents all the React pages that are under `pages/`.\n */ \"PAGES\"] = \"PAGES\";\n RouteKind[/**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */ \"PAGES_API\"] = \"PAGES_API\";\n RouteKind[/**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */ \"APP_PAGE\"] = \"APP_PAGE\";\n RouteKind[/**\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 */ \"APP_ROUTE\"] = \"APP_ROUTE\";\n})(RouteKind || (RouteKind = {})); //# sourceMappingURL=route-kind.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQUlBLFVBQVU7QUFDcEIsVUFBU0EsU0FBUztJQUNmQSxTQUFTLENBQUM7O0dBRVgsR0FBRyxRQUFRLEdBQUc7SUFDYkEsU0FBUyxDQUFDOztHQUVYLEdBQUcsWUFBWSxHQUFHO0lBQ2pCQSxTQUFTLENBQUM7OztHQUdYLEdBQUcsV0FBVyxHQUFHO0lBQ2hCQSxTQUFTLENBQUM7OztHQUdYLEdBQUcsWUFBWSxHQUFHO0FBQ3JCLEdBQUdBLGFBQWNBLENBQUFBLFlBQVksQ0FBQyxLQUU5QixzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kLmpzPzA5ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBSb3V0ZUtpbmQ7XG4oZnVuY3Rpb24oUm91dGVLaW5kKSB7XG4gICAgUm91dGVLaW5kWy8qKlxuICAgKiBgUEFHRVNgIHJlcHJlc2VudHMgYWxsIHRoZSBSZWFjdCBwYWdlcyB0aGF0IGFyZSB1bmRlciBgcGFnZXMvYC5cbiAgICovIFwiUEFHRVNcIl0gPSBcIlBBR0VTXCI7XG4gICAgUm91dGVLaW5kWy8qKlxuICAgKiBgUEFHRVNfQVBJYCByZXByZXNlbnRzIGFsbCB0aGUgQVBJIHJvdXRlcyB1bmRlciBgcGFnZXMvYXBpL2AuXG4gICAqLyBcIlBBR0VTX0FQSVwiXSA9IFwiUEFHRVNfQVBJXCI7XG4gICAgUm91dGVLaW5kWy8qKlxuICAgKiBgQVBQX1BBR0VgIHJlcHJlc2VudHMgYWxsIHRoZSBSZWFjdCBwYWdlcyB0aGF0IGFyZSB1bmRlciBgYXBwL2Agd2l0aCB0aGVcbiAgICogZmlsZW5hbWUgb2YgYHBhZ2Uue2osdH1zeyx4fWAuXG4gICAqLyBcIkFQUF9QQUdFXCJdID0gXCJBUFBfUEFHRVwiO1xuICAgIFJvdXRlS2luZFsvKipcbiAgICogYEFQUF9ST1VURWAgcmVwcmVzZW50cyBhbGwgdGhlIEFQSSByb3V0ZXMgYW5kIG1ldGFkYXRhIHJvdXRlcyB0aGF0IGFyZSB1bmRlciBgYXBwL2Agd2l0aCB0aGVcbiAgICogZmlsZW5hbWUgb2YgYHJvdXRlLntqLHR9c3sseH1gLlxuICAgKi8gXCJBUFBfUk9VVEVcIl0gPSBcIkFQUF9ST1VURVwiO1xufSkoUm91dGVLaW5kIHx8IChSb3V0ZUtpbmQgPSB7fSkpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1raW5kLmpzLm1hcCJdLCJuYW1lcyI6WyJSb3V0ZUtpbmQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-kind.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-matchers/route-matcher.js":
/*!**********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-matchers/route-matcher.js ***!
\**********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RouteMatcher: () => (/* binding */ RouteMatcher)\n/* harmony export */ });\n/* harmony import */ var _shared_lib_router_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../shared/lib/router/utils */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/index.js\");\n/* harmony import */ var _shared_lib_router_utils_route_matcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../shared/lib/router/utils/route-matcher */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-matcher.js\");\n/* harmony import */ var _shared_lib_router_utils_route_regex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../shared/lib/router/utils/route-regex */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-regex.js\");\n\n\n\nclass RouteMatcher {\n constructor(definition){\n this.definition = definition;\n if ((0,_shared_lib_router_utils__WEBPACK_IMPORTED_MODULE_0__.isDynamicRoute)(definition.pathname)) {\n this.dynamic = (0,_shared_lib_router_utils_route_matcher__WEBPACK_IMPORTED_MODULE_1__.getRouteMatcher)((0,_shared_lib_router_utils_route_regex__WEBPACK_IMPORTED_MODULE_2__.getRouteRegex)(definition.pathname));\n }\n }\n /**\n * Identity returns the identity part of the matcher. This is used to compare\n * a unique matcher to another. This is also used when sorting dynamic routes,\n * so it must contain the pathname part.\n */ get identity() {\n return this.definition.pathname;\n }\n get isDynamic() {\n return this.dynamic !== undefined;\n }\n match(pathname) {\n const result = this.test(pathname);\n if (!result) return null;\n return {\n definition: this.definition,\n params: result.params\n };\n }\n test(pathname) {\n if (this.dynamic) {\n const params = this.dynamic(pathname);\n if (!params) return null;\n return {\n params\n };\n }\n if (pathname === this.definition.pathname) {\n return {};\n }\n return null;\n }\n} //# sourceMappingURL=route-matcher.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1hdGNoZXJzL3JvdXRlLW1hdGNoZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrRTtBQUNlO0FBQ0o7QUFDdEUsTUFBTUc7SUFDVEMsWUFBWUMsVUFBVSxDQUFDO1FBQ25CLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtRQUNsQixJQUFJTCx3RUFBY0EsQ0FBQ0ssV0FBV0MsUUFBUSxHQUFHO1lBQ3JDLElBQUksQ0FBQ0MsT0FBTyxHQUFHTix1RkFBZUEsQ0FBQ0MsbUZBQWFBLENBQUNHLFdBQVdDLFFBQVE7UUFDcEU7SUFDSjtJQUNBOzs7O0dBSUQsR0FBRyxJQUFJRSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUNILFVBQVUsQ0FBQ0MsUUFBUTtJQUNuQztJQUNBLElBQUlHLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQ0YsT0FBTyxLQUFLRztJQUM1QjtJQUNBQyxNQUFNTCxRQUFRLEVBQUU7UUFDWixNQUFNTSxTQUFTLElBQUksQ0FBQ0MsSUFBSSxDQUFDUDtRQUN6QixJQUFJLENBQUNNLFFBQVEsT0FBTztRQUNwQixPQUFPO1lBQ0hQLFlBQVksSUFBSSxDQUFDQSxVQUFVO1lBQzNCUyxRQUFRRixPQUFPRSxNQUFNO1FBQ3pCO0lBQ0o7SUFDQUQsS0FBS1AsUUFBUSxFQUFFO1FBQ1gsSUFBSSxJQUFJLENBQUNDLE9BQU8sRUFBRTtZQUNkLE1BQU1PLFNBQVMsSUFBSSxDQUFDUCxPQUFPLENBQUNEO1lBQzVCLElBQUksQ0FBQ1EsUUFBUSxPQUFPO1lBQ3BCLE9BQU87Z0JBQ0hBO1lBQ0o7UUFDSjtRQUNBLElBQUlSLGFBQWEsSUFBSSxDQUFDRCxVQUFVLENBQUNDLFFBQVEsRUFBRTtZQUN2QyxPQUFPLENBQUM7UUFDWjtRQUNBLE9BQU87SUFDWDtBQUNKLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9mdXR1cmUvcm91dGUtbWF0Y2hlcnMvcm91dGUtbWF0Y2hlci5qcz80ODdkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRHluYW1pY1JvdXRlIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRSb3V0ZU1hdGNoZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcm91dGUtbWF0Y2hlclwiO1xuaW1wb3J0IHsgZ2V0Um91dGVSZWdleCB9IGZyb20gXCIuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleFwiO1xuZXhwb3J0IGNsYXNzIFJvdXRlTWF0Y2hlciB7XG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbil7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gICAgICAgIGlmIChpc0R5bmFtaWNSb3V0ZShkZWZpbml0aW9uLnBhdGhuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5keW5hbWljID0gZ2V0Um91dGVNYXRjaGVyKGdldFJvdXRlUmVnZXgoZGVmaW5pdGlvbi5wYXRobmFtZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgKiBJZGVudGl0eSByZXR1cm5zIHRoZSBpZGVudGl0eSBwYXJ0IG9mIHRoZSBtYXRjaGVyLiBUaGlzIGlzIHVzZWQgdG8gY29tcGFyZVxuICAgKiBhIHVuaXF1ZSBtYXRjaGVyIHRvIGFub3RoZXIuIFRoaXMgaXMgYWxzbyB1c2VkIHdoZW4gc29ydGluZyBkeW5hbWljIHJvdXRlcyxcbiAgICogc28gaXQgbXVzdCBjb250YWluIHRoZSBwYXRobmFtZSBwYXJ0LlxuICAgKi8gZ2V0IGlkZW50aXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9uLnBhdGhuYW1lO1xuICAgIH1cbiAgICBnZXQgaXNEeW5hbWljKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5keW5hbWljICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hdGNoKHBhdGhuYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudGVzdChwYXRobmFtZSk7XG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmluaXRpb246IHRoaXMuZGVmaW5pdGlvbixcbiAgICAgICAgICAgIHBhcmFtczogcmVzdWx0LnBhcmFtc1xuICAgICAgICB9O1xuICAgIH1cbiAgICB0ZXN0KHBhdGhuYW1lKSB7XG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZHluYW1pYyhwYXRobmFtZSk7XG4gICAgICAgICAgICBpZiAoIXBhcmFtcykgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aG5hbWUgPT09IHRoaXMuZGVmaW5pdGlvbi5wYXRobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUtbWF0Y2hlci5qcy5tYXAiXSwibmFtZXMiOlsiaXNEeW5hbWljUm91dGUiLCJnZXRSb3V0ZU1hdGNoZXIiLCJnZXRSb3V0ZVJlZ2V4IiwiUm91dGVNYXRjaGVyIiwiY29uc3RydWN0b3IiLCJkZWZpbml0aW9uIiwicGF0aG5hbWUiLCJkeW5hbWljIiwiaWRlbnRpdHkiLCJpc0R5bmFtaWMiLCJ1bmRlZmluZWQiLCJtYXRjaCIsInJlc3VsdCIsInRlc3QiLCJwYXJhbXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-matchers/route-matcher.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/auto-implement-methods.js":
/*!************************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/auto-implement-methods.js ***!
\************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ autoImplementMethods: () => (/* binding */ autoImplementMethods)\n/* harmony export */ });\n/* harmony import */ var _web_http__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../web/http */ \"(rsc)/./node_modules/next/dist/esm/server/web/http.js\");\n/* harmony import */ var _helpers_response_handlers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../helpers/response-handlers */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js\");\n\n\nconst AUTOMATIC_ROUTE_METHODS = [\n \"HEAD\",\n \"OPTIONS\"\n];\nfunction autoImplementMethods(handlers) {\n // Loop through all the HTTP methods to create the initial methods object.\n // Each of the methods will be set to the the 405 response handler.\n const methods = _web_http__WEBPACK_IMPORTED_MODULE_0__.HTTP_METHODS.reduce((acc, method)=>({\n ...acc,\n // If the userland module implements the method, then use it. Otherwise,\n // use the 405 response handler.\n [method]: handlers[method] ?? _helpers_response_handlers__WEBPACK_IMPORTED_MODULE_1__.handleMethodNotAllowedResponse\n }), {});\n // Get all the methods that could be automatically implemented that were not\n // implemented by the userland module.\n const implemented = new Set(_web_http__WEBPACK_IMPORTED_MODULE_0__.HTTP_METHODS.filter((method)=>handlers[method]));\n const missing = AUTOMATIC_ROUTE_METHODS.filter((method)=>!implemented.has(method));\n // Loop over the missing methods to automatically implement them if we can.\n for (const method of missing){\n // If the userland module doesn't implement the HEAD method, then\n // we'll automatically implement it by calling the GET method (if it\n // exists).\n if (method === \"HEAD\") {\n // If the userland module doesn't implement the GET method, then\n // we're done.\n if (!handlers.GET) break;\n // Implement the HEAD method by calling the GET method.\n methods.HEAD = handlers.GET;\n // Mark it as implemented.\n implemented.add(\"HEAD\");\n continue;\n }\n // If OPTIONS is not provided then implement it.\n if (method === \"OPTIONS\") {\n // TODO: check if HEAD is implemented, if so, use it to add more headers\n // Get all the methods that were implemented by the userland module.\n const allow = [\n \"OPTIONS\",\n ...implemented\n ];\n // If the list of methods doesn't include HEAD, but it includes GET, then\n // add HEAD as it's automatically implemented.\n if (!implemented.has(\"HEAD\") && implemented.has(\"GET\")) {\n allow.push(\"HEAD\");\n }\n // Sort and join the list with commas to create the `Allow` header. See:\n // https://httpwg.org/specs/rfc9110.html#field.allow\n const headers = {\n Allow: allow.sort().join(\", \")\n };\n // Implement the OPTIONS method by returning a 204 response with the\n // `Allow` header.\n methods.OPTIONS = ()=>new Response(null, {\n status: 204,\n headers\n });\n // Mark this method as implemented.\n implemented.add(\"OPTIONS\");\n continue;\n }\n throw new Error(`Invariant: should handle all automatic implementable methods, got method: ${method}`);\n }\n return methods;\n} //# sourceMappingURL=auto-implement-methods.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvYXV0by1pbXBsZW1lbnQtbWV0aG9kcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Q7QUFDNkI7QUFDakYsTUFBTUUsMEJBQTBCO0lBQzVCO0lBQ0E7Q0FDSDtBQUNNLFNBQVNDLHFCQUFxQkMsUUFBUTtJQUN6QywwRUFBMEU7SUFDMUUsbUVBQW1FO0lBQ25FLE1BQU1DLFVBQVVMLG1EQUFZQSxDQUFDTSxNQUFNLENBQUMsQ0FBQ0MsS0FBS0MsU0FBVTtZQUM1QyxHQUFHRCxHQUFHO1lBQ04sd0VBQXdFO1lBQ3hFLGdDQUFnQztZQUNoQyxDQUFDQyxPQUFPLEVBQUVKLFFBQVEsQ0FBQ0ksT0FBTyxJQUFJUCxzRkFBOEJBO1FBQ2hFLElBQUksQ0FBQztJQUNULDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsTUFBTVEsY0FBYyxJQUFJQyxJQUFJVixtREFBWUEsQ0FBQ1csTUFBTSxDQUFDLENBQUNILFNBQVNKLFFBQVEsQ0FBQ0ksT0FBTztJQUMxRSxNQUFNSSxVQUFVVix3QkFBd0JTLE1BQU0sQ0FBQyxDQUFDSCxTQUFTLENBQUNDLFlBQVlJLEdBQUcsQ0FBQ0w7SUFDMUUsMkVBQTJFO0lBQzNFLEtBQUssTUFBTUEsVUFBVUksUUFBUTtRQUN6QixpRUFBaUU7UUFDakUsb0VBQW9FO1FBQ3BFLFdBQVc7UUFDWCxJQUFJSixXQUFXLFFBQVE7WUFDbkIsZ0VBQWdFO1lBQ2hFLGNBQWM7WUFDZCxJQUFJLENBQUNKLFNBQVNVLEdBQUcsRUFBRTtZQUNuQix1REFBdUQ7WUFDdkRULFFBQVFVLElBQUksR0FBR1gsU0FBU1UsR0FBRztZQUMzQiwwQkFBMEI7WUFDMUJMLFlBQVlPLEdBQUcsQ0FBQztZQUNoQjtRQUNKO1FBQ0EsZ0RBQWdEO1FBQ2hELElBQUlSLFdBQVcsV0FBVztZQUN0Qix3RUFBd0U7WUFDeEUsb0VBQW9FO1lBQ3BFLE1BQU1TLFFBQVE7Z0JBQ1Y7bUJBQ0dSO2FBQ047WUFDRCx5RUFBeUU7WUFDekUsOENBQThDO1lBQzlDLElBQUksQ0FBQ0EsWUFBWUksR0FBRyxDQUFDLFdBQVdKLFlBQVlJLEdBQUcsQ0FBQyxRQUFRO2dCQUNwREksTUFBTUMsSUFBSSxDQUFDO1lBQ2Y7WUFDQSx3RUFBd0U7WUFDeEUsb0RBQW9EO1lBQ3BELE1BQU1DLFVBQVU7Z0JBQ1pDLE9BQU9ILE1BQU1JLElBQUksR0FBR0MsSUFBSSxDQUFDO1lBQzdCO1lBQ0Esb0VBQW9FO1lBQ3BFLGtCQUFrQjtZQUNsQmpCLFFBQVFrQixPQUFPLEdBQUcsSUFBSSxJQUFJQyxTQUFTLE1BQU07b0JBQ2pDQyxRQUFRO29CQUNSTjtnQkFDSjtZQUNKLG1DQUFtQztZQUNuQ1YsWUFBWU8sR0FBRyxDQUFDO1lBQ2hCO1FBQ0o7UUFDQSxNQUFNLElBQUlVLE1BQU0sQ0FBQywwRUFBMEUsRUFBRWxCLE9BQU8sQ0FBQztJQUN6RztJQUNBLE9BQU9IO0FBQ1gsRUFFQSxrREFBa0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9oZWxwZXJzL2F1dG8taW1wbGVtZW50LW1ldGhvZHMuanM/MTI3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX01FVEhPRFMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vd2ViL2h0dHBcIjtcbmltcG9ydCB7IGhhbmRsZU1ldGhvZE5vdEFsbG93ZWRSZXNwb25zZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3Jlc3BvbnNlLWhhbmRsZXJzXCI7XG5jb25zdCBBVVRPTUFUSUNfUk9VVEVfTUVUSE9EUyA9IFtcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIlxuXTtcbmV4cG9ydCBmdW5jdGlvbiBhdXRvSW1wbGVtZW50TWV0aG9kcyhoYW5kbGVycykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIEhUVFAgbWV0aG9kcyB0byBjcmVhdGUgdGhlIGluaXRpYWwgbWV0aG9kcyBvYmplY3QuXG4gICAgLy8gRWFjaCBvZiB0aGUgbWV0aG9kcyB3aWxsIGJlIHNldCB0byB0aGUgdGhlIDQwNSByZXNwb25zZSBoYW5kbGVyLlxuICAgIGNvbnN0IG1ldGhvZHMgPSBIVFRQX01FVEhPRFMucmVkdWNlKChhY2MsIG1ldGhvZCk9Pih7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAvLyBJZiB0aGUgdXNlcmxhbmQgbW9kdWxlIGltcGxlbWVudHMgdGhlIG1ldGhvZCwgdGhlbiB1c2UgaXQuIE90aGVyd2lzZSxcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgNDA1IHJlc3BvbnNlIGhhbmRsZXIuXG4gICAgICAgICAgICBbbWV0aG9kXTogaGFuZGxlcnNbbWV0aG9kXSA/PyBoYW5kbGVNZXRob2ROb3RBbGxvd2VkUmVzcG9uc2VcbiAgICAgICAgfSksIHt9KTtcbiAgICAvLyBHZXQgYWxsIHRoZSBtZXRob2RzIHRoYXQgY291bGQgYmUgYXV0b21hdGljYWxseSBpbXBsZW1lbnRlZCB0aGF0IHdlcmUgbm90XG4gICAgLy8gaW1wbGVtZW50ZWQgYnkgdGhlIHVzZXJsYW5kIG1vZHVsZS5cbiAgICBjb25zdCBpbXBsZW1lbnRlZCA9IG5ldyBTZXQoSFRUUF9NRVRIT0RTLmZpbHRlcigobWV0aG9kKT0+aGFuZGxlcnNbbWV0aG9kXSkpO1xuICAgIGNvbnN0IG1pc3NpbmcgPSBBVVRPTUFUSUNfUk9VVEVfTUVUSE9EUy5maWx0ZXIoKG1ldGhvZCk9PiFpbXBsZW1lbnRlZC5oYXMobWV0aG9kKSk7XG4gICAgLy8gTG9vcCBvdmVyIHRoZSBtaXNzaW5nIG1ldGhvZHMgdG8gYXV0b21hdGljYWxseSBpbXBsZW1lbnQgdGhlbSBpZiB3ZSBjYW4uXG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgbWlzc2luZyl7XG4gICAgICAgIC8vIElmIHRoZSB1c2VybGFuZCBtb2R1bGUgZG9lc24ndCBpbXBsZW1lbnQgdGhlIEhFQUQgbWV0aG9kLCB0aGVuXG4gICAgICAgIC8vIHdlJ2xsIGF1dG9tYXRpY2FsbHkgaW1wbGVtZW50IGl0IGJ5IGNhbGxpbmcgdGhlIEdFVCBtZXRob2QgKGlmIGl0XG4gICAgICAgIC8vIGV4aXN0cykuXG4gICAgICAgIGlmIChtZXRob2QgPT09IFwiSEVBRFwiKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdXNlcmxhbmQgbW9kdWxlIGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBHRVQgbWV0aG9kLCB0aGVuXG4gICAgICAgICAgICAvLyB3ZSdyZSBkb25lLlxuICAgICAgICAgICAgaWYgKCFoYW5kbGVycy5HRVQpIGJyZWFrO1xuICAgICAgICAgICAgLy8gSW1wbGVtZW50IHRoZSBIRUFEIG1ldGhvZCBieSBjYWxsaW5nIHRoZSBHRVQgbWV0aG9kLlxuICAgICAgICAgICAgbWV0aG9kcy5IRUFEID0gaGFuZGxlcnMuR0VUO1xuICAgICAgICAgICAgLy8gTWFyayBpdCBhcyBpbXBsZW1lbnRlZC5cbiAgICAgICAgICAgIGltcGxlbWVudGVkLmFkZChcIkhFQURcIik7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBPUFRJT05TIGlzIG5vdCBwcm92aWRlZCB0aGVuIGltcGxlbWVudCBpdC5cbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJPUFRJT05TXCIpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IGNoZWNrIGlmIEhFQUQgaXMgaW1wbGVtZW50ZWQsIGlmIHNvLCB1c2UgaXQgdG8gYWRkIG1vcmUgaGVhZGVyc1xuICAgICAgICAgICAgLy8gR2V0IGFsbCB0aGUgbWV0aG9kcyB0aGF0IHdlcmUgaW1wbGVtZW50ZWQgYnkgdGhlIHVzZXJsYW5kIG1vZHVsZS5cbiAgICAgICAgICAgIGNvbnN0IGFsbG93ID0gW1xuICAgICAgICAgICAgICAgIFwiT1BUSU9OU1wiLFxuICAgICAgICAgICAgICAgIC4uLmltcGxlbWVudGVkXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGxpc3Qgb2YgbWV0aG9kcyBkb2Vzbid0IGluY2x1ZGUgSEVBRCwgYnV0IGl0IGluY2x1ZGVzIEdFVCwgdGhlblxuICAgICAgICAgICAgLy8gYWRkIEhFQUQgYXMgaXQncyBhdXRvbWF0aWNhbGx5IGltcGxlbWVudGVkLlxuICAgICAgICAgICAgaWYgKCFpbXBsZW1lbnRlZC5oYXMoXCJIRUFEXCIpICYmIGltcGxlbWVudGVkLmhhcyhcIkdFVFwiKSkge1xuICAgICAgICAgICAgICAgIGFsbG93LnB1c2goXCJIRUFEXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU29ydCBhbmQgam9pbiB0aGUgbGlzdCB3aXRoIGNvbW1hcyB0byBjcmVhdGUgdGhlIGBBbGxvd2AgaGVhZGVyLiBTZWU6XG4gICAgICAgICAgICAvLyBodHRwczovL2h0dHB3Zy5vcmcvc3BlY3MvcmZjOTExMC5odG1sI2ZpZWxkLmFsbG93XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgIEFsbG93OiBhbGxvdy5zb3J0KCkuam9pbihcIiwgXCIpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gSW1wbGVtZW50IHRoZSBPUFRJT05TIG1ldGhvZCBieSByZXR1cm5pbmcgYSAyMDQgcmVzcG9uc2Ugd2l0aCB0aGVcbiAgICAgICAgICAgIC8vIGBBbGxvd2AgaGVhZGVyLlxuICAgICAgICAgICAgbWV0aG9kcy5PUFRJT05TID0gKCk9Pm5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjA0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBNYXJrIHRoaXMgbWV0aG9kIGFzIGltcGxlbWVudGVkLlxuICAgICAgICAgICAgaW1wbGVtZW50ZWQuYWRkKFwiT1BUSU9OU1wiKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YXJpYW50OiBzaG91bGQgaGFuZGxlIGFsbCBhdXRvbWF0aWMgaW1wbGVtZW50YWJsZSBtZXRob2RzLCBnb3QgbWV0aG9kOiAke21ldGhvZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZHM7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWF1dG8taW1wbGVtZW50LW1ldGhvZHMuanMubWFwIl0sIm5hbWVzIjpbIkhUVFBfTUVUSE9EUyIsImhhbmRsZU1ldGhvZE5vdEFsbG93ZWRSZXNwb25zZSIsIkFVVE9NQVRJQ19ST1VURV9NRVRIT0RTIiwiYXV0b0ltcGxlbWVudE1ldGhvZHMiLCJoYW5kbGVycyIsIm1ldGhvZHMiLCJyZWR1Y2UiLCJhY2MiLCJtZXRob2QiLCJpbXBsZW1lbnRlZCIsIlNldCIsImZpbHRlciIsIm1pc3NpbmciLCJoYXMiLCJHRVQiLCJIRUFEIiwiYWRkIiwiYWxsb3ciLCJwdXNoIiwiaGVhZGVycyIsIkFsbG93Iiwic29ydCIsImpvaW4iLCJPUFRJT05TIiwiUmVzcG9uc2UiLCJzdGF0dXMiLCJFcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/auto-implement-methods.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/clean-url.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/clean-url.js ***!
\***********************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cleanURL: () => (/* binding */ cleanURL)\n/* harmony export */ });\n/**\n * Cleans a URL by stripping the protocol, host, and search params.\n *\n * @param urlString the url to clean\n * @returns the cleaned url\n */ function cleanURL(urlString) {\n const url = new URL(urlString);\n url.host = \"localhost:3000\";\n url.search = \"\";\n url.protocol = \"http\";\n return url.toString();\n} //# sourceMappingURL=clean-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvY2xlYW4tdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUFVLFNBQVNBLFNBQVNDLFNBQVM7SUFDbEMsTUFBTUMsTUFBTSxJQUFJQyxJQUFJRjtJQUNwQkMsSUFBSUUsSUFBSSxHQUFHO0lBQ1hGLElBQUlHLE1BQU0sR0FBRztJQUNiSCxJQUFJSSxRQUFRLEdBQUc7SUFDZixPQUFPSixJQUFJSyxRQUFRO0FBQ3ZCLEVBRUEscUNBQXFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvaGVscGVycy9jbGVhbi11cmwuanM/YmVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsZWFucyBhIFVSTCBieSBzdHJpcHBpbmcgdGhlIHByb3RvY29sLCBob3N0LCBhbmQgc2VhcmNoIHBhcmFtcy5cbiAqXG4gKiBAcGFyYW0gdXJsU3RyaW5nIHRoZSB1cmwgdG8gY2xlYW5cbiAqIEByZXR1cm5zIHRoZSBjbGVhbmVkIHVybFxuICovIGV4cG9ydCBmdW5jdGlvbiBjbGVhblVSTCh1cmxTdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgdXJsLmhvc3QgPSBcImxvY2FsaG9zdDozMDAwXCI7XG4gICAgdXJsLnNlYXJjaCA9IFwiXCI7XG4gICAgdXJsLnByb3RvY29sID0gXCJodHRwXCI7XG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGVhbi11cmwuanMubWFwIl0sIm5hbWVzIjpbImNsZWFuVVJMIiwidXJsU3RyaW5nIiwidXJsIiwiVVJMIiwiaG9zdCIsInNlYXJjaCIsInByb3RvY29sIiwidG9TdHJpbmciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/clean-url.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-non-static-methods.js":
/*!************************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-non-static-methods.js ***!
\************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getNonStaticMethods: () => (/* binding */ getNonStaticMethods)\n/* harmony export */ });\nconst NON_STATIC_METHODS = [\n \"OPTIONS\",\n \"POST\",\n \"PUT\",\n \"DELETE\",\n \"PATCH\"\n];\n/**\n * Gets all the method names for handlers that are not considered static.\n *\n * @param handlers the handlers from the userland module\n * @returns the method names that are not considered static or false if all\n * methods are static\n */ function getNonStaticMethods(handlers) {\n // We can currently only statically optimize if only GET/HEAD are used as\n // prerender can't be used conditionally based on the method currently.\n const methods = NON_STATIC_METHODS.filter((method)=>handlers[method]);\n if (methods.length === 0) return false;\n return methods;\n} //# sourceMappingURL=get-non-static-methods.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvZ2V0LW5vbi1zdGF0aWMtbWV0aG9kcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTUEscUJBQXFCO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSDtBQUNEOzs7Ozs7Q0FNQyxHQUFVLFNBQVNDLG9CQUFvQkMsUUFBUTtJQUM1Qyx5RUFBeUU7SUFDekUsdUVBQXVFO0lBQ3ZFLE1BQU1DLFVBQVVILG1CQUFtQkksTUFBTSxDQUFDLENBQUNDLFNBQVNILFFBQVEsQ0FBQ0csT0FBTztJQUNwRSxJQUFJRixRQUFRRyxNQUFNLEtBQUssR0FBRyxPQUFPO0lBQ2pDLE9BQU9IO0FBQ1gsRUFFQSxrREFBa0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9oZWxwZXJzL2dldC1ub24tc3RhdGljLW1ldGhvZHMuanM/MjcxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBOT05fU1RBVElDX01FVEhPRFMgPSBbXG4gICAgXCJPUFRJT05TXCIsXG4gICAgXCJQT1NUXCIsXG4gICAgXCJQVVRcIixcbiAgICBcIkRFTEVURVwiLFxuICAgIFwiUEFUQ0hcIlxuXTtcbi8qKlxuICogR2V0cyBhbGwgdGhlIG1ldGhvZCBuYW1lcyBmb3IgaGFuZGxlcnMgdGhhdCBhcmUgbm90IGNvbnNpZGVyZWQgc3RhdGljLlxuICpcbiAqIEBwYXJhbSBoYW5kbGVycyB0aGUgaGFuZGxlcnMgZnJvbSB0aGUgdXNlcmxhbmQgbW9kdWxlXG4gKiBAcmV0dXJucyB0aGUgbWV0aG9kIG5hbWVzIHRoYXQgYXJlIG5vdCBjb25zaWRlcmVkIHN0YXRpYyBvciBmYWxzZSBpZiBhbGxcbiAqICAgICAgICAgIG1ldGhvZHMgYXJlIHN0YXRpY1xuICovIGV4cG9ydCBmdW5jdGlvbiBnZXROb25TdGF0aWNNZXRob2RzKGhhbmRsZXJzKSB7XG4gICAgLy8gV2UgY2FuIGN1cnJlbnRseSBvbmx5IHN0YXRpY2FsbHkgb3B0aW1pemUgaWYgb25seSBHRVQvSEVBRCBhcmUgdXNlZCBhc1xuICAgIC8vIHByZXJlbmRlciBjYW4ndCBiZSB1c2VkIGNvbmRpdGlvbmFsbHkgYmFzZWQgb24gdGhlIG1ldGhvZCBjdXJyZW50bHkuXG4gICAgY29uc3QgbWV0aG9kcyA9IE5PTl9TVEFUSUNfTUVUSE9EUy5maWx0ZXIoKG1ldGhvZCk9PmhhbmRsZXJzW21ldGhvZF0pO1xuICAgIGlmIChtZXRob2RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBtZXRob2RzO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtbm9uLXN0YXRpYy1tZXRob2RzLmpzLm1hcCJdLCJuYW1lcyI6WyJOT05fU1RBVElDX01FVEhPRFMiLCJnZXROb25TdGF0aWNNZXRob2RzIiwiaGFuZGxlcnMiLCJtZXRob2RzIiwiZmlsdGVyIiwibWV0aG9kIiwibGVuZ3RoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-non-static-methods.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-pathname-from-absolute-path.js":
/*!*********************************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-pathname-from-absolute-path.js ***!
\*********************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPathnameFromAbsolutePath: () => (/* binding */ getPathnameFromAbsolutePath)\n/* harmony export */ });\n/**\n * Get pathname from absolute path.\n *\n * @param absolutePath the absolute path\n * @returns the pathname\n */ function getPathnameFromAbsolutePath(absolutePath) {\n // Remove prefix including app dir\n let appDir = \"/app/\";\n if (!absolutePath.includes(appDir)) {\n appDir = \"\\\\app\\\\\";\n }\n const [, ...parts] = absolutePath.split(appDir);\n const relativePath = appDir[0] + parts.join(appDir);\n // remove extension\n const pathname = relativePath.split(\".\").slice(0, -1).join(\".\");\n return pathname;\n} //# sourceMappingURL=get-pathname-from-absolute-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvZ2V0LXBhdGhuYW1lLWZyb20tYWJzb2x1dGUtcGF0aC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7O0NBS0MsR0FBVSxTQUFTQSw0QkFBNEJDLFlBQVk7SUFDeEQsa0NBQWtDO0lBQ2xDLElBQUlDLFNBQVM7SUFDYixJQUFJLENBQUNELGFBQWFFLFFBQVEsQ0FBQ0QsU0FBUztRQUNoQ0EsU0FBUztJQUNiO0lBQ0EsTUFBTSxHQUFHLEdBQUdFLE1BQU0sR0FBR0gsYUFBYUksS0FBSyxDQUFDSDtJQUN4QyxNQUFNSSxlQUFlSixNQUFNLENBQUMsRUFBRSxHQUFHRSxNQUFNRyxJQUFJLENBQUNMO0lBQzVDLG1CQUFtQjtJQUNuQixNQUFNTSxXQUFXRixhQUFhRCxLQUFLLENBQUMsS0FBS0ksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHRixJQUFJLENBQUM7SUFDM0QsT0FBT0M7QUFDWCxFQUVBLDJEQUEyRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvZ2V0LXBhdGhuYW1lLWZyb20tYWJzb2x1dGUtcGF0aC5qcz80MTdjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2V0IHBhdGhuYW1lIGZyb20gYWJzb2x1dGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYWJzb2x1dGVQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoXG4gKiBAcmV0dXJucyB0aGUgcGF0aG5hbWVcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0UGF0aG5hbWVGcm9tQWJzb2x1dGVQYXRoKGFic29sdXRlUGF0aCkge1xuICAgIC8vIFJlbW92ZSBwcmVmaXggaW5jbHVkaW5nIGFwcCBkaXJcbiAgICBsZXQgYXBwRGlyID0gXCIvYXBwL1wiO1xuICAgIGlmICghYWJzb2x1dGVQYXRoLmluY2x1ZGVzKGFwcERpcikpIHtcbiAgICAgICAgYXBwRGlyID0gXCJcXFxcYXBwXFxcXFwiO1xuICAgIH1cbiAgICBjb25zdCBbLCAuLi5wYXJ0c10gPSBhYnNvbHV0ZVBhdGguc3BsaXQoYXBwRGlyKTtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBhcHBEaXJbMF0gKyBwYXJ0cy5qb2luKGFwcERpcik7XG4gICAgLy8gcmVtb3ZlIGV4dGVuc2lvblxuICAgIGNvbnN0IHBhdGhuYW1lID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiLlwiKS5zbGljZSgwLCAtMSkuam9pbihcIi5cIik7XG4gICAgcmV0dXJuIHBhdGhuYW1lO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtcGF0aG5hbWUtZnJvbS1hYnNvbHV0ZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJnZXRQYXRobmFtZUZyb21BYnNvbHV0ZVBhdGgiLCJhYnNvbHV0ZVBhdGgiLCJhcHBEaXIiLCJpbmNsdWRlcyIsInBhcnRzIiwic3BsaXQiLCJyZWxhdGl2ZVBhdGgiLCJqb2luIiwicGF0aG5hbWUiLCJzbGljZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-pathname-from-absolute-path.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js":
/*!****************************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js ***!
\****************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parsedUrlQueryToParams: () => (/* binding */ parsedUrlQueryToParams)\n/* harmony export */ });\n/**\n * Converts the query into params.\n *\n * @param query the query to convert to params\n * @returns the params\n */ function parsedUrlQueryToParams(query) {\n const params = {};\n for (const [key, value] of Object.entries(query)){\n if (typeof value === \"undefined\") continue;\n params[key] = value;\n }\n return params;\n} //# sourceMappingURL=parsed-url-query-to-params.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvcGFyc2VkLXVybC1xdWVyeS10by1wYXJhbXMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7OztDQUtDLEdBQVUsU0FBU0EsdUJBQXVCQyxLQUFLO0lBQzVDLE1BQU1DLFNBQVMsQ0FBQztJQUNoQixLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsTUFBTSxJQUFJQyxPQUFPQyxPQUFPLENBQUNMLE9BQU87UUFDN0MsSUFBSSxPQUFPRyxVQUFVLGFBQWE7UUFDbENGLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHQztJQUNsQjtJQUNBLE9BQU9GO0FBQ1gsRUFFQSxzREFBc0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9oZWxwZXJzL3BhcnNlZC11cmwtcXVlcnktdG8tcGFyYW1zLmpzP2JiNDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZXJ0cyB0aGUgcXVlcnkgaW50byBwYXJhbXMuXG4gKlxuICogQHBhcmFtIHF1ZXJ5IHRoZSBxdWVyeSB0byBjb252ZXJ0IHRvIHBhcmFtc1xuICogQHJldHVybnMgdGhlIHBhcmFtc1xuICovIGV4cG9ydCBmdW5jdGlvbiBwYXJzZWRVcmxRdWVyeVRvUGFyYW1zKHF1ZXJ5KSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocXVlcnkpKXtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikgY29udGludWU7XG4gICAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcnNlZC11cmwtcXVlcnktdG8tcGFyYW1zLmpzLm1hcCJdLCJuYW1lcyI6WyJwYXJzZWRVcmxRdWVyeVRvUGFyYW1zIiwicXVlcnkiLCJwYXJhbXMiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/proxy-request.js":
/*!***************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/proxy-request.js ***!
\***************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ proxyRequest: () => (/* binding */ proxyRequest)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/@edge-runtime/cookies */ \"(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\");\n/* harmony import */ var next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _web_next_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../web/next-url */ \"(rsc)/./node_modules/next/dist/esm/server/web/next-url.js\");\n/* harmony import */ var _clean_url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clean-url */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/clean-url.js\");\n\n\n\nfunction proxyRequest(request, { dynamic }, hooks) {\n function handleNextUrlBailout(prop) {\n switch(prop){\n case \"search\":\n case \"searchParams\":\n case \"toString\":\n case \"href\":\n case \"origin\":\n hooks.staticGenerationBailout(`nextUrl.${prop}`);\n return;\n default:\n return;\n }\n }\n const cache = {};\n const handleForceStatic = (url, prop)=>{\n switch(prop){\n case \"search\":\n return \"\";\n case \"searchParams\":\n if (!cache.searchParams) cache.searchParams = new URLSearchParams();\n return cache.searchParams;\n case \"url\":\n case \"href\":\n if (!cache.url) cache.url = (0,_clean_url__WEBPACK_IMPORTED_MODULE_2__.cleanURL)(url);\n return cache.url;\n case \"toJSON\":\n case \"toString\":\n if (!cache.url) cache.url = (0,_clean_url__WEBPACK_IMPORTED_MODULE_2__.cleanURL)(url);\n if (!cache.toString) cache.toString = ()=>cache.url;\n return cache.toString;\n case \"headers\":\n if (!cache.headers) cache.headers = new Headers();\n return cache.headers;\n case \"cookies\":\n if (!cache.headers) cache.headers = new Headers();\n if (!cache.cookies) cache.cookies = new next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__.RequestCookies(cache.headers);\n return cache.cookies;\n case \"clone\":\n if (!cache.url) cache.url = (0,_clean_url__WEBPACK_IMPORTED_MODULE_2__.cleanURL)(url);\n return ()=>new _web_next_url__WEBPACK_IMPORTED_MODULE_1__.NextURL(cache.url);\n default:\n break;\n }\n };\n const wrappedNextUrl = new Proxy(request.nextUrl, {\n get (target, prop) {\n handleNextUrlBailout(prop);\n if (dynamic === \"force-static\" && typeof prop === \"string\") {\n const result = handleForceStatic(target.href, prop);\n if (result !== undefined) return result;\n }\n const value = target[prop];\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n return value;\n },\n set (target, prop, value) {\n handleNextUrlBailout(prop);\n target[prop] = value;\n return true;\n }\n });\n const handleReqBailout = (prop)=>{\n switch(prop){\n case \"headers\":\n hooks.headerHooks.headers();\n return;\n // if request.url is accessed directly instead of\n // request.nextUrl we bail since it includes query\n // values that can be relied on dynamically\n case \"url\":\n case \"cookies\":\n case \"body\":\n case \"blob\":\n case \"json\":\n case \"text\":\n case \"arrayBuffer\":\n case \"formData\":\n hooks.staticGenerationBailout(`request.${prop}`);\n return;\n default:\n return;\n }\n };\n return new Proxy(request, {\n get (target, prop) {\n handleReqBailout(prop);\n if (prop === \"nextUrl\") {\n return wrappedNextUrl;\n }\n if (dynamic === \"force-static\" && typeof prop === \"string\") {\n const result = handleForceStatic(target.url, prop);\n if (result !== undefined) return result;\n }\n const value = target[prop];\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n return value;\n },\n set (target, prop, value) {\n handleReqBailout(prop);\n target[prop] = value;\n return true;\n }\n });\n} //# sourceMappingURL=proxy-request.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvcHJveHktcmVxdWVzdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUEwRTtBQUN2QjtBQUNaO0FBQ2hDLFNBQVNHLGFBQWFDLE9BQU8sRUFBRSxFQUFFQyxPQUFPLEVBQUUsRUFBRUMsS0FBSztJQUNwRCxTQUFTQyxxQkFBcUJDLElBQUk7UUFDOUIsT0FBT0E7WUFDSCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztnQkFDREYsTUFBTUcsdUJBQXVCLENBQUMsQ0FBQyxRQUFRLEVBQUVELEtBQUssQ0FBQztnQkFDL0M7WUFDSjtnQkFDSTtRQUNSO0lBQ0o7SUFDQSxNQUFNRSxRQUFRLENBQUM7SUFDZixNQUFNQyxvQkFBb0IsQ0FBQ0MsS0FBS0o7UUFDNUIsT0FBT0E7WUFDSCxLQUFLO2dCQUNELE9BQU87WUFDWCxLQUFLO2dCQUNELElBQUksQ0FBQ0UsTUFBTUcsWUFBWSxFQUFFSCxNQUFNRyxZQUFZLEdBQUcsSUFBSUM7Z0JBQ2xELE9BQU9KLE1BQU1HLFlBQVk7WUFDN0IsS0FBSztZQUNMLEtBQUs7Z0JBQ0QsSUFBSSxDQUFDSCxNQUFNRSxHQUFHLEVBQUVGLE1BQU1FLEdBQUcsR0FBR1Ysb0RBQVFBLENBQUNVO2dCQUNyQyxPQUFPRixNQUFNRSxHQUFHO1lBQ3BCLEtBQUs7WUFDTCxLQUFLO2dCQUNELElBQUksQ0FBQ0YsTUFBTUUsR0FBRyxFQUFFRixNQUFNRSxHQUFHLEdBQUdWLG9EQUFRQSxDQUFDVTtnQkFDckMsSUFBSSxDQUFDRixNQUFNSyxRQUFRLEVBQUVMLE1BQU1LLFFBQVEsR0FBRyxJQUFJTCxNQUFNRSxHQUFHO2dCQUNuRCxPQUFPRixNQUFNSyxRQUFRO1lBQ3pCLEtBQUs7Z0JBQ0QsSUFBSSxDQUFDTCxNQUFNTSxPQUFPLEVBQUVOLE1BQU1NLE9BQU8sR0FBRyxJQUFJQztnQkFDeEMsT0FBT1AsTUFBTU0sT0FBTztZQUN4QixLQUFLO2dCQUNELElBQUksQ0FBQ04sTUFBTU0sT0FBTyxFQUFFTixNQUFNTSxPQUFPLEdBQUcsSUFBSUM7Z0JBQ3hDLElBQUksQ0FBQ1AsTUFBTVEsT0FBTyxFQUFFUixNQUFNUSxPQUFPLEdBQUcsSUFBSWxCLG1GQUFjQSxDQUFDVSxNQUFNTSxPQUFPO2dCQUNwRSxPQUFPTixNQUFNUSxPQUFPO1lBQ3hCLEtBQUs7Z0JBQ0QsSUFBSSxDQUFDUixNQUFNRSxHQUFHLEVBQUVGLE1BQU1FLEdBQUcsR0FBR1Ysb0RBQVFBLENBQUNVO2dCQUNyQyxPQUFPLElBQUksSUFBSVgsa0RBQU9BLENBQUNTLE1BQU1FLEdBQUc7WUFDcEM7Z0JBQ0k7UUFDUjtJQUNKO0lBQ0EsTUFBTU8saUJBQWlCLElBQUlDLE1BQU1oQixRQUFRaUIsT0FBTyxFQUFFO1FBQzlDQyxLQUFLQyxNQUFNLEVBQUVmLElBQUk7WUFDYkQscUJBQXFCQztZQUNyQixJQUFJSCxZQUFZLGtCQUFrQixPQUFPRyxTQUFTLFVBQVU7Z0JBQ3hELE1BQU1nQixTQUFTYixrQkFBa0JZLE9BQU9FLElBQUksRUFBRWpCO2dCQUM5QyxJQUFJZ0IsV0FBV0UsV0FBVyxPQUFPRjtZQUNyQztZQUNBLE1BQU1HLFFBQVFKLE1BQU0sQ0FBQ2YsS0FBSztZQUMxQixJQUFJLE9BQU9tQixVQUFVLFlBQVk7Z0JBQzdCLE9BQU9BLE1BQU1DLElBQUksQ0FBQ0w7WUFDdEI7WUFDQSxPQUFPSTtRQUNYO1FBQ0FFLEtBQUtOLE1BQU0sRUFBRWYsSUFBSSxFQUFFbUIsS0FBSztZQUNwQnBCLHFCQUFxQkM7WUFDckJlLE1BQU0sQ0FBQ2YsS0FBSyxHQUFHbUI7WUFDZixPQUFPO1FBQ1g7SUFDSjtJQUNBLE1BQU1HLG1CQUFtQixDQUFDdEI7UUFDdEIsT0FBT0E7WUFDSCxLQUFLO2dCQUNERixNQUFNeUIsV0FBVyxDQUFDZixPQUFPO2dCQUN6QjtZQUNKLGlEQUFpRDtZQUNqRCxrREFBa0Q7WUFDbEQsMkNBQTJDO1lBQzNDLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUNEVixNQUFNRyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsRUFBRUQsS0FBSyxDQUFDO2dCQUMvQztZQUNKO2dCQUNJO1FBQ1I7SUFDSjtJQUNBLE9BQU8sSUFBSVksTUFBTWhCLFNBQVM7UUFDdEJrQixLQUFLQyxNQUFNLEVBQUVmLElBQUk7WUFDYnNCLGlCQUFpQnRCO1lBQ2pCLElBQUlBLFNBQVMsV0FBVztnQkFDcEIsT0FBT1c7WUFDWDtZQUNBLElBQUlkLFlBQVksa0JBQWtCLE9BQU9HLFNBQVMsVUFBVTtnQkFDeEQsTUFBTWdCLFNBQVNiLGtCQUFrQlksT0FBT1gsR0FBRyxFQUFFSjtnQkFDN0MsSUFBSWdCLFdBQVdFLFdBQVcsT0FBT0Y7WUFDckM7WUFDQSxNQUFNRyxRQUFRSixNQUFNLENBQUNmLEtBQUs7WUFDMUIsSUFBSSxPQUFPbUIsVUFBVSxZQUFZO2dCQUM3QixPQUFPQSxNQUFNQyxJQUFJLENBQUNMO1lBQ3RCO1lBQ0EsT0FBT0k7UUFDWDtRQUNBRSxLQUFLTixNQUFNLEVBQUVmLElBQUksRUFBRW1CLEtBQUs7WUFDcEJHLGlCQUFpQnRCO1lBQ2pCZSxNQUFNLENBQUNmLEtBQUssR0FBR21CO1lBQ2YsT0FBTztRQUNYO0lBQ0o7QUFDSixFQUVBLHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvcHJveHktcmVxdWVzdC5qcz9hOTRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RDb29raWVzIH0gZnJvbSBcIm5leHQvZGlzdC9jb21waWxlZC9AZWRnZS1ydW50aW1lL2Nvb2tpZXNcIjtcbmltcG9ydCB7IE5leHRVUkwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vd2ViL25leHQtdXJsXCI7XG5pbXBvcnQgeyBjbGVhblVSTCB9IGZyb20gXCIuL2NsZWFuLXVybFwiO1xuZXhwb3J0IGZ1bmN0aW9uIHByb3h5UmVxdWVzdChyZXF1ZXN0LCB7IGR5bmFtaWMgfSwgaG9va3MpIHtcbiAgICBmdW5jdGlvbiBoYW5kbGVOZXh0VXJsQmFpbG91dChwcm9wKSB7XG4gICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgIGNhc2UgXCJzZWFyY2hcIjpcbiAgICAgICAgICAgIGNhc2UgXCJzZWFyY2hQYXJhbXNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJ0b1N0cmluZ1wiOlxuICAgICAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICAgIGNhc2UgXCJvcmlnaW5cIjpcbiAgICAgICAgICAgICAgICBob29rcy5zdGF0aWNHZW5lcmF0aW9uQmFpbG91dChgbmV4dFVybC4ke3Byb3B9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2FjaGUgPSB7fTtcbiAgICBjb25zdCBoYW5kbGVGb3JjZVN0YXRpYyA9ICh1cmwsIHByb3ApPT57XG4gICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgIGNhc2UgXCJzZWFyY2hcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJzZWFyY2hQYXJhbXNcIjpcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLnNlYXJjaFBhcmFtcykgY2FjaGUuc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5zZWFyY2hQYXJhbXM7XG4gICAgICAgICAgICBjYXNlIFwidXJsXCI6XG4gICAgICAgICAgICBjYXNlIFwiaHJlZlwiOlxuICAgICAgICAgICAgICAgIGlmICghY2FjaGUudXJsKSBjYWNoZS51cmwgPSBjbGVhblVSTCh1cmwpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS51cmw7XG4gICAgICAgICAgICBjYXNlIFwidG9KU09OXCI6XG4gICAgICAgICAgICBjYXNlIFwidG9TdHJpbmdcIjpcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLnVybCkgY2FjaGUudXJsID0gY2xlYW5VUkwodXJsKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLnRvU3RyaW5nKSBjYWNoZS50b1N0cmluZyA9ICgpPT5jYWNoZS51cmw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlLnRvU3RyaW5nO1xuICAgICAgICAgICAgY2FzZSBcImhlYWRlcnNcIjpcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLmhlYWRlcnMpIGNhY2hlLmhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5oZWFkZXJzO1xuICAgICAgICAgICAgY2FzZSBcImNvb2tpZXNcIjpcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlLmhlYWRlcnMpIGNhY2hlLmhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGUuY29va2llcykgY2FjaGUuY29va2llcyA9IG5ldyBSZXF1ZXN0Q29va2llcyhjYWNoZS5oZWFkZXJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGUuY29va2llcztcbiAgICAgICAgICAgIGNhc2UgXCJjbG9uZVwiOlxuICAgICAgICAgICAgICAgIGlmICghY2FjaGUudXJsKSBjYWNoZS51cmwgPSBjbGVhblVSTCh1cmwpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKT0+bmV3IE5leHRVUkwoY2FjaGUudXJsKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHdyYXBwZWROZXh0VXJsID0gbmV3IFByb3h5KHJlcXVlc3QubmV4dFVybCwge1xuICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaGFuZGxlTmV4dFVybEJhaWxvdXQocHJvcCk7XG4gICAgICAgICAgICBpZiAoZHluYW1pYyA9PT0gXCJmb3JjZS1zdGF0aWNcIiAmJiB0eXBlb2YgcHJvcCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGhhbmRsZUZvcmNlU3RhdGljKHRhcmdldC5ocmVmLCBwcm9wKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICAgICAgaGFuZGxlTmV4dFVybEJhaWxvdXQocHJvcCk7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVxQmFpbG91dCA9IChwcm9wKT0+e1xuICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICBjYXNlIFwiaGVhZGVyc1wiOlxuICAgICAgICAgICAgICAgIGhvb2tzLmhlYWRlckhvb2tzLmhlYWRlcnMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAvLyBpZiByZXF1ZXN0LnVybCBpcyBhY2Nlc3NlZCBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgICAgICAgICAvLyByZXF1ZXN0Lm5leHRVcmwgd2UgYmFpbCBzaW5jZSBpdCBpbmNsdWRlcyBxdWVyeVxuICAgICAgICAgICAgLy8gdmFsdWVzIHRoYXQgY2FuIGJlIHJlbGllZCBvbiBkeW5hbWljYWxseVxuICAgICAgICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICAgICAgY2FzZSBcImNvb2tpZXNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJib2R5XCI6XG4gICAgICAgICAgICBjYXNlIFwiYmxvYlwiOlxuICAgICAgICAgICAgY2FzZSBcImpzb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlCdWZmZXJcIjpcbiAgICAgICAgICAgIGNhc2UgXCJmb3JtRGF0YVwiOlxuICAgICAgICAgICAgICAgIGhvb2tzLnN0YXRpY0dlbmVyYXRpb25CYWlsb3V0KGByZXF1ZXN0LiR7cHJvcH1gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm94eShyZXF1ZXN0LCB7XG4gICAgICAgIGdldCAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICBoYW5kbGVSZXFCYWlsb3V0KHByb3ApO1xuICAgICAgICAgICAgaWYgKHByb3AgPT09IFwibmV4dFVybFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWROZXh0VXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGR5bmFtaWMgPT09IFwiZm9yY2Utc3RhdGljXCIgJiYgdHlwZW9mIHByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVGb3JjZVN0YXRpYyh0YXJnZXQudXJsLCBwcm9wKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICAgICAgaGFuZGxlUmVxQmFpbG91dChwcm9wKTtcbiAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJveHktcmVxdWVzdC5qcy5tYXAiXSwibmFtZXMiOlsiUmVxdWVzdENvb2tpZXMiLCJOZXh0VVJMIiwiY2xlYW5VUkwiLCJwcm94eVJlcXVlc3QiLCJyZXF1ZXN0IiwiZHluYW1pYyIsImhvb2tzIiwiaGFuZGxlTmV4dFVybEJhaWxvdXQiLCJwcm9wIiwic3RhdGljR2VuZXJhdGlvbkJhaWxvdXQiLCJjYWNoZSIsImhhbmRsZUZvcmNlU3RhdGljIiwidXJsIiwic2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJoZWFkZXJzIiwiSGVhZGVycyIsImNvb2tpZXMiLCJ3cmFwcGVkTmV4dFVybCIsIlByb3h5IiwibmV4dFVybCIsImdldCIsInRhcmdldCIsInJlc3VsdCIsImhyZWYiLCJ1bmRlZmluZWQiLCJ2YWx1ZSIsImJpbmQiLCJzZXQiLCJoYW5kbGVSZXFCYWlsb3V0IiwiaGVhZGVySG9va3MiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/proxy-request.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/resolve-handler-error.js":
/*!***********************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/resolve-handler-error.js ***!
\***********************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ resolveHandlerError: () => (/* binding */ resolveHandlerError)\n/* harmony export */ });\n/* harmony import */ var _client_components_not_found__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../client/components/not-found */ \"(rsc)/./node_modules/next/dist/esm/client/components/not-found.js\");\n/* harmony import */ var _client_components_redirect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../client/components/redirect */ \"(rsc)/./node_modules/next/dist/esm/client/components/redirect.js\");\n/* harmony import */ var _helpers_response_handlers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../helpers/response-handlers */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js\");\n\n\n\nfunction resolveHandlerError(err) {\n if ((0,_client_components_redirect__WEBPACK_IMPORTED_MODULE_1__.isRedirectError)(err)) {\n const redirect = (0,_client_components_redirect__WEBPACK_IMPORTED_MODULE_1__.getURLFromRedirectError)(err);\n if (!redirect) {\n throw new Error(\"Invariant: Unexpected redirect url format\");\n }\n const status = (0,_client_components_redirect__WEBPACK_IMPORTED_MODULE_1__.getRedirectStatusCodeFromError)(err);\n // This is a redirect error! Send the redirect response.\n return (0,_helpers_response_handlers__WEBPACK_IMPORTED_MODULE_2__.handleRedirectResponse)(redirect, err.mutableCookies, status);\n }\n if ((0,_client_components_not_found__WEBPACK_IMPORTED_MODULE_0__.isNotFoundError)(err)) {\n // This is a not found error! Send the not found response.\n return (0,_helpers_response_handlers__WEBPACK_IMPORTED_MODULE_2__.handleNotFoundResponse)();\n }\n // Return false to indicate that this is not a handled error.\n return false;\n} //# sourceMappingURL=resolve-handler-error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL2hlbHBlcnMvcmVzb2x2ZS1oYW5kbGVyLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNkU7QUFDd0Q7QUFDcEM7QUFDMUYsU0FBU00sb0JBQW9CQyxHQUFHO0lBQ25DLElBQUlMLDRFQUFlQSxDQUFDSyxNQUFNO1FBQ3RCLE1BQU1DLFdBQVdQLG9GQUF1QkEsQ0FBQ007UUFDekMsSUFBSSxDQUFDQyxVQUFVO1lBQ1gsTUFBTSxJQUFJQyxNQUFNO1FBQ3BCO1FBQ0EsTUFBTUMsU0FBU1AsMkZBQThCQSxDQUFDSTtRQUM5Qyx3REFBd0Q7UUFDeEQsT0FBT0Ysa0ZBQXNCQSxDQUFDRyxVQUFVRCxJQUFJSSxjQUFjLEVBQUVEO0lBQ2hFO0lBQ0EsSUFBSVYsNkVBQWVBLENBQUNPLE1BQU07UUFDdEIsMERBQTBEO1FBQzFELE9BQU9ILGtGQUFzQkE7SUFDakM7SUFDQSw2REFBNkQ7SUFDN0QsT0FBTztBQUNYLEVBRUEsaURBQWlEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvaGVscGVycy9yZXNvbHZlLWhhbmRsZXItZXJyb3IuanM/YjBkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kXCI7XG5pbXBvcnQgeyBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciwgaXNSZWRpcmVjdEVycm9yLCBnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3RcIjtcbmltcG9ydCB7IGhhbmRsZU5vdEZvdW5kUmVzcG9uc2UsIGhhbmRsZVJlZGlyZWN0UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9yZXNwb25zZS1oYW5kbGVyc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIYW5kbGVyRXJyb3IoZXJyKSB7XG4gICAgaWYgKGlzUmVkaXJlY3RFcnJvcihlcnIpKSB7XG4gICAgICAgIGNvbnN0IHJlZGlyZWN0ID0gZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IoZXJyKTtcbiAgICAgICAgaWYgKCFyZWRpcmVjdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YXJpYW50OiBVbmV4cGVjdGVkIHJlZGlyZWN0IHVybCBmb3JtYXRcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0UmVkaXJlY3RTdGF0dXNDb2RlRnJvbUVycm9yKGVycik7XG4gICAgICAgIC8vIFRoaXMgaXMgYSByZWRpcmVjdCBlcnJvciEgU2VuZCB0aGUgcmVkaXJlY3QgcmVzcG9uc2UuXG4gICAgICAgIHJldHVybiBoYW5kbGVSZWRpcmVjdFJlc3BvbnNlKHJlZGlyZWN0LCBlcnIubXV0YWJsZUNvb2tpZXMsIHN0YXR1cyk7XG4gICAgfVxuICAgIGlmIChpc05vdEZvdW5kRXJyb3IoZXJyKSkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgbm90IGZvdW5kIGVycm9yISBTZW5kIHRoZSBub3QgZm91bmQgcmVzcG9uc2UuXG4gICAgICAgIHJldHVybiBoYW5kbGVOb3RGb3VuZFJlc3BvbnNlKCk7XG4gICAgfVxuICAgIC8vIFJldHVybiBmYWxzZSB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgbm90IGEgaGFuZGxlZCBlcnJvci5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlc29sdmUtaGFuZGxlci1lcnJvci5qcy5tYXAiXSwibmFtZXMiOlsiaXNOb3RGb3VuZEVycm9yIiwiZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IiLCJpc1JlZGlyZWN0RXJyb3IiLCJnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IiLCJoYW5kbGVOb3RGb3VuZFJlc3BvbnNlIiwiaGFuZGxlUmVkaXJlY3RSZXNwb25zZSIsInJlc29sdmVIYW5kbGVyRXJyb3IiLCJlcnIiLCJyZWRpcmVjdCIsIkVycm9yIiwic3RhdHVzIiwibXV0YWJsZUNvb2tpZXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/resolve-handler-error.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js ***!
\*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval("\nif (true) {\n module.exports = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.js */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.js\");\n} else {} //# sourceMappingURL=module.compiled.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL21vZHVsZS5jb21waWxlZC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsSUFBbUMsRUFBRTtJQUNyQ0csMkxBQXFGO0FBQ3pGLE9BQU8sRUFRTixDQUVELDJDQUEyQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL21vZHVsZS5jb21waWxlZC5qcz82Y2ExIl0sInNvdXJjZXNDb250ZW50IjpbImlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09IFwiZWRnZVwiKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmpzXCIpO1xufSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLnJ1bnRpbWUuZGV2LmpzXCIpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcm91dGUtdHVyYm8ucnVudGltZS5wcm9kLmpzXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcm91dGUucnVudGltZS5wcm9kLmpzXCIpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiZW52IiwiTkVYVF9SVU5USU1FIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcXVpcmUiLCJUVVJCT1BBQ0siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.compiled.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.js":
/*!************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/module.js ***!
\************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AppRouteRouteModule: () => (/* binding */ AppRouteRouteModule),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _route_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../route-module */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/route-module.js\");\n/* harmony import */ var _async_storage_request_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../async-storage/request-async-storage-wrapper */ \"(rsc)/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js\");\n/* harmony import */ var _async_storage_static_generation_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../async-storage/static-generation-async-storage-wrapper */ \"(rsc)/./node_modules/next/dist/esm/server/async-storage/static-generation-async-storage-wrapper.js\");\n/* harmony import */ var _helpers_response_handlers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/response-handlers */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js\");\n/* harmony import */ var _web_http__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../web/http */ \"(rsc)/./node_modules/next/dist/esm/server/web/http.js\");\n/* harmony import */ var _lib_patch_fetch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/esm/server/lib/patch-fetch.js\");\n/* harmony import */ var _lib_trace_tracer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/tracer.js\");\n/* harmony import */ var _lib_trace_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../lib/trace/constants */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/constants.js\");\n/* harmony import */ var _helpers_get_pathname_from_absolute_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./helpers/get-pathname-from-absolute-path */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-pathname-from-absolute-path.js\");\n/* harmony import */ var _helpers_proxy_request__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./helpers/proxy-request */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/proxy-request.js\");\n/* harmony import */ var _helpers_resolve_handler_error__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./helpers/resolve-handler-error */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/resolve-handler-error.js\");\n/* harmony import */ var _build_output_log__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../build/output/log */ \"(rsc)/./node_modules/next/dist/esm/build/output/log.js\");\n/* harmony import */ var _helpers_auto_implement_methods__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/auto-implement-methods */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/auto-implement-methods.js\");\n/* harmony import */ var _helpers_get_non_static_methods__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./helpers/get-non-static-methods */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/get-non-static-methods.js\");\n/* harmony import */ var _web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../web/spec-extension/adapters/request-cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js\");\n/* harmony import */ var _helpers_parsed_url_query_to_params__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./helpers/parsed-url-query-to-params */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js\");\n/* harmony import */ var _client_components_hooks_server_context__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../client/components/hooks-server-context */ \"(rsc)/./node_modules/next/dist/esm/client/components/hooks-server-context.js\");\n/* harmony import */ var _client_components_headers__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../client/components/headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/headers.js\");\n/* harmony import */ var _client_components_static_generation_bailout__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/esm/client/components/static-generation-bailout.js\");\n/* harmony import */ var _client_components_request_async_storage_external__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../../client/components/request-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js\");\n/* harmony import */ var _client_components_static_generation_async_storage_external__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../../client/components/static-generation-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js\");\n/* harmony import */ var _client_components_action_async_storage_external__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../../client/components/action-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js\");\n/* harmony import */ var _shared_modules__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./shared-modules */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/shared-modules.js\");\n/* harmony import */ var _lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../lib/server-action-request-meta */ \"(rsc)/./node_modules/next/dist/esm/server/lib/server-action-request-meta.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * AppRouteRouteHandler is the handler for app routes.\n */ class AppRouteRouteModule extends _route_module__WEBPACK_IMPORTED_MODULE_0__.RouteModule {\n static #_ = this.sharedModules = _shared_modules__WEBPACK_IMPORTED_MODULE_22__;\n constructor({ userland, definition, resolvedPagePath, nextConfigOutput }){\n super({\n userland,\n definition\n });\n /**\n * A reference to the request async storage.\n */ this.requestAsyncStorage = _client_components_request_async_storage_external__WEBPACK_IMPORTED_MODULE_19__.requestAsyncStorage;\n /**\n * A reference to the static generation async storage.\n */ this.staticGenerationAsyncStorage = _client_components_static_generation_async_storage_external__WEBPACK_IMPORTED_MODULE_20__.staticGenerationAsyncStorage;\n /**\n * An interface to call server hooks which interact with the underlying\n * storage.\n */ this.serverHooks = _client_components_hooks_server_context__WEBPACK_IMPORTED_MODULE_16__;\n /**\n * An interface to call header hooks which interact with the underlying\n * request storage.\n */ this.headerHooks = _client_components_headers__WEBPACK_IMPORTED_MODULE_17__;\n /**\n * An interface to call static generation bailout hooks which interact with\n * the underlying static generation storage.\n */ this.staticGenerationBailout = _client_components_static_generation_bailout__WEBPACK_IMPORTED_MODULE_18__.staticGenerationBailout;\n /**\n * A reference to the mutation related async storage, such as mutations of\n * cookies.\n */ this.actionAsyncStorage = _client_components_action_async_storage_external__WEBPACK_IMPORTED_MODULE_21__.actionAsyncStorage;\n this.resolvedPagePath = resolvedPagePath;\n this.nextConfigOutput = nextConfigOutput;\n // Automatically implement some methods if they aren't implemented by the\n // userland module.\n this.methods = (0,_helpers_auto_implement_methods__WEBPACK_IMPORTED_MODULE_12__.autoImplementMethods)(userland);\n // Get the non-static methods for this route.\n this.nonStaticMethods = (0,_helpers_get_non_static_methods__WEBPACK_IMPORTED_MODULE_13__.getNonStaticMethods)(userland);\n // Get the dynamic property from the userland module.\n this.dynamic = this.userland.dynamic;\n if (this.nextConfigOutput === \"export\") {\n if (!this.dynamic || this.dynamic === \"auto\") {\n this.dynamic = \"error\";\n } else if (this.dynamic === \"force-dynamic\") {\n throw new Error(`export const dynamic = \"force-dynamic\" on page \"${definition.pathname}\" cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/advanced-features/static-html-export`);\n }\n }\n // We only warn in development after here, so return if we're not in\n // development.\n if (true) {\n // Print error in development if the exported handlers are in lowercase, only\n // uppercase handlers are supported.\n const lowercased = _web_http__WEBPACK_IMPORTED_MODULE_4__.HTTP_METHODS.map((method)=>method.toLowerCase());\n for (const method of lowercased){\n if (method in this.userland) {\n _build_output_log__WEBPACK_IMPORTED_MODULE_11__.error(`Detected lowercase method '${method}' in '${this.resolvedPagePath}'. Export the uppercase '${method.toUpperCase()}' method name to fix this error.`);\n }\n }\n // Print error if the module exports a default handler, they must use named\n // exports for each HTTP method.\n if (\"default\" in this.userland) {\n _build_output_log__WEBPACK_IMPORTED_MODULE_11__.error(`Detected default export in '${this.resolvedPagePath}'. Export a named export for each HTTP method instead.`);\n }\n // If there is no methods exported by this module, then return a not found\n // response.\n if (!_web_http__WEBPACK_IMPORTED_MODULE_4__.HTTP_METHODS.some((method)=>method in this.userland)) {\n _build_output_log__WEBPACK_IMPORTED_MODULE_11__.error(`No HTTP methods exported in '${this.resolvedPagePath}'. Export a named export for each HTTP method.`);\n }\n }\n }\n /**\n * Resolves the handler function for the given method.\n *\n * @param method the requested method\n * @returns the handler function for the given method\n */ resolve(method) {\n // Ensure that the requested method is a valid method (to prevent RCE's).\n if (!(0,_web_http__WEBPACK_IMPORTED_MODULE_4__.isHTTPMethod)(method)) return _helpers_response_handlers__WEBPACK_IMPORTED_MODULE_3__.handleBadRequestResponse;\n // Return the handler.\n return this.methods[method];\n }\n /**\n * Executes the route handler.\n */ async execute(request, context) {\n // Get the handler function for the given method.\n const handler = this.resolve(request.method);\n // Get the context for the request.\n const requestContext = {\n req: request\n };\n requestContext.renderOpts = {\n previewProps: context.prerenderManifest.preview\n };\n // Get the context for the static generation.\n const staticGenerationContext = {\n urlPathname: request.nextUrl.pathname,\n renderOpts: context.renderOpts\n };\n // Add the fetchCache option to the renderOpts.\n staticGenerationContext.renderOpts.fetchCache = this.userland.fetchCache;\n // Run the handler with the request AsyncLocalStorage to inject the helper\n // support. We set this to `unknown` because the type is not known until\n // runtime when we do a instanceof check below.\n const response = await this.actionAsyncStorage.run({\n isAppRoute: true,\n isAction: (0,_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_23__.getIsServerAction)(request)\n }, ()=>_async_storage_request_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_1__.RequestAsyncStorageWrapper.wrap(this.requestAsyncStorage, requestContext, ()=>_async_storage_static_generation_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_2__.StaticGenerationAsyncStorageWrapper.wrap(this.staticGenerationAsyncStorage, staticGenerationContext, (staticGenerationStore)=>{\n var _getTracer_getRootSpanAttributes;\n // Check to see if we should bail out of static generation based on\n // having non-static methods.\n if (this.nonStaticMethods) {\n this.staticGenerationBailout(`non-static methods used ${this.nonStaticMethods.join(\", \")}`);\n }\n // Update the static generation store based on the dynamic property.\n switch(this.dynamic){\n case \"force-dynamic\":\n // The dynamic property is set to force-dynamic, so we should\n // force the page to be dynamic.\n staticGenerationStore.forceDynamic = true;\n this.staticGenerationBailout(`force-dynamic`, {\n dynamic: this.dynamic\n });\n break;\n case \"force-static\":\n // The dynamic property is set to force-static, so we should\n // force the page to be static.\n staticGenerationStore.forceStatic = true;\n break;\n case \"error\":\n // The dynamic property is set to error, so we should throw an\n // error if the page is being statically generated.\n staticGenerationStore.dynamicShouldError = true;\n break;\n default:\n break;\n }\n // If the static generation store does not have a revalidate value\n // set, then we should set it the revalidate value from the userland\n // module or default to false.\n staticGenerationStore.revalidate ??= this.userland.revalidate ?? false;\n // Wrap the request so we can add additional functionality to cases\n // that might change it's output or affect the rendering.\n const wrappedRequest = (0,_helpers_proxy_request__WEBPACK_IMPORTED_MODULE_9__.proxyRequest)(request, {\n dynamic: this.dynamic\n }, {\n headerHooks: this.headerHooks,\n serverHooks: this.serverHooks,\n staticGenerationBailout: this.staticGenerationBailout\n });\n // TODO: propagate this pathname from route matcher\n const route = (0,_helpers_get_pathname_from_absolute_path__WEBPACK_IMPORTED_MODULE_8__.getPathnameFromAbsolutePath)(this.resolvedPagePath);\n (_getTracer_getRootSpanAttributes = (0,_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_6__.getTracer)().getRootSpanAttributes()) == null ? void 0 : _getTracer_getRootSpanAttributes.set(\"next.route\", route);\n return (0,_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_6__.getTracer)().trace(_lib_trace_constants__WEBPACK_IMPORTED_MODULE_7__.AppRouteRouteHandlersSpan.runHandler, {\n spanName: `executing api route (app) ${route}`,\n attributes: {\n \"next.route\": route\n }\n }, async ()=>{\n var _staticGenerationStore_tags;\n // Patch the global fetch.\n (0,_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_5__.patchFetch)({\n serverHooks: this.serverHooks,\n staticGenerationAsyncStorage: this.staticGenerationAsyncStorage\n });\n const res = await handler(wrappedRequest, {\n params: context.params ? (0,_helpers_parsed_url_query_to_params__WEBPACK_IMPORTED_MODULE_15__.parsedUrlQueryToParams)(context.params) : undefined\n });\n if (!(res instanceof Response)) {\n throw new Error(`No response is returned from route handler '${this.resolvedPagePath}'. Ensure you return a \\`Response\\` or a \\`NextResponse\\` in all branches of your handler.`);\n }\n context.renderOpts.fetchMetrics = staticGenerationStore.fetchMetrics;\n context.renderOpts.waitUntil = Promise.all(Object.values(staticGenerationStore.pendingRevalidates || []));\n (0,_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_5__.addImplicitTags)(staticGenerationStore);\n context.renderOpts.fetchTags = (_staticGenerationStore_tags = staticGenerationStore.tags) == null ? void 0 : _staticGenerationStore_tags.join(\",\");\n // It's possible cookies were set in the handler, so we need\n // to merge the modified cookies and the returned response\n // here.\n const requestStore = this.requestAsyncStorage.getStore();\n if (requestStore && requestStore.mutableCookies) {\n const headers = new Headers(res.headers);\n if ((0,_web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_14__.appendMutableCookies)(headers, requestStore.mutableCookies)) {\n return new Response(res.body, {\n status: res.status,\n statusText: res.statusText,\n headers\n });\n }\n }\n return res;\n });\n })));\n // If the handler did't return a valid response, then return the internal\n // error response.\n if (!(response instanceof Response)) {\n // TODO: validate the correct handling behavior, maybe log something?\n return (0,_helpers_response_handlers__WEBPACK_IMPORTED_MODULE_3__.handleInternalServerErrorResponse)();\n }\n if (response.headers.has(\"x-middleware-rewrite\")) {\n // TODO: move this error into the `NextResponse.rewrite()` function.\n // TODO-APP: re-enable support below when we can proxy these type of requests\n throw new Error(\"NextResponse.rewrite() was used in a app route handler, this is not currently supported. Please remove the invocation to continue.\");\n // // This is a rewrite created via `NextResponse.rewrite()`. We need to send\n // // the response up so it can be handled by the backing server.\n // // If the server is running in minimal mode, we just want to forward the\n // // response (including the rewrite headers) upstream so it can perform the\n // // redirect for us, otherwise return with the special condition so this\n // // server can perform a rewrite.\n // if (!minimalMode) {\n // return { response, condition: 'rewrite' }\n // }\n // // Relativize the url so it's relative to the base url. This is so the\n // // outgoing headers upstream can be relative.\n // const rewritePath = response.headers.get('x-middleware-rewrite')!\n // const initUrl = getRequestMeta(req, 'initURL')!\n // const { pathname } = parseUrl(relativizeURL(rewritePath, initUrl))\n // response.headers.set('x-middleware-rewrite', pathname)\n }\n if (response.headers.get(\"x-middleware-next\") === \"1\") {\n // TODO: move this error into the `NextResponse.next()` function.\n throw new Error(\"NextResponse.next() was used in a app route handler, this is not supported. See here for more info: https://nextjs.org/docs/messages/next-response-next-in-app-route-handler\");\n }\n return response;\n }\n async handle(request, context) {\n try {\n // Execute the route to get the response.\n const response = await this.execute(request, context);\n // The response was handled, return it.\n return response;\n } catch (err) {\n // Try to resolve the error to a response, else throw it again.\n const response = (0,_helpers_resolve_handler_error__WEBPACK_IMPORTED_MODULE_10__.resolveHandlerError)(err);\n if (!response) throw err;\n // The response was resolved, return it.\n return response;\n }\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AppRouteRouteModule); //# sourceMappingURL=module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL21vZHVsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE4QztBQUNvRDtBQUNtQjtBQUNWO0FBQzVDO0FBQ1E7QUFDakI7QUFDbUI7QUFDZTtBQUNqQztBQUNlO0FBQ2xCO0FBQ29CO0FBQ0Q7QUFDcUI7QUFDZDtBQUNJO0FBQ2I7QUFDNkI7QUFDQztBQUNtQjtBQUNyQjtBQUMvQztBQUMwQjtBQUM1RTs7Q0FFQyxHQUFVLE1BQU0yQiw0QkFBNEIzQixzREFBV0E7SUFDcEQsT0FBTyxDQUFDNEIsQ0FBQyxHQUFHLElBQUksQ0FBQ0gsYUFBYSxHQUFHQSw2Q0FBYUEsQ0FBQztJQUMvQ0ksWUFBWSxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsZ0JBQWdCLEVBQUVDLGdCQUFnQixFQUFFLENBQUM7UUFDckUsS0FBSyxDQUFDO1lBQ0ZIO1lBQ0FDO1FBQ0o7UUFDQTs7R0FFTCxHQUFHLElBQUksQ0FBQ1QsbUJBQW1CLEdBQUdBLG1HQUFtQkE7UUFDNUM7O0dBRUwsR0FBRyxJQUFJLENBQUNDLDRCQUE0QixHQUFHQSxzSEFBNEJBO1FBQzlEOzs7R0FHTCxHQUFHLElBQUksQ0FBQ0osV0FBVyxHQUFHQSxxRUFBV0E7UUFDNUI7OztHQUdMLEdBQUcsSUFBSSxDQUFDQyxXQUFXLEdBQUdBLHdEQUFXQTtRQUM1Qjs7O0dBR0wsR0FBRyxJQUFJLENBQUNDLHVCQUF1QixHQUFHQSxrR0FBdUJBO1FBQ3BEOzs7R0FHTCxHQUFHLElBQUksQ0FBQ0csa0JBQWtCLEdBQUdBLGlHQUFrQkE7UUFDMUMsSUFBSSxDQUFDUSxnQkFBZ0IsR0FBR0E7UUFDeEIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0E7UUFDeEIseUVBQXlFO1FBQ3pFLG1CQUFtQjtRQUNuQixJQUFJLENBQUNDLE9BQU8sR0FBR25CLHNGQUFvQkEs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QUNuRCxpRUFBaUU7WUFDakUsTUFBTSxJQUFJcEUsTUFBTTtRQUNwQjtRQUNBLE9BQU95QjtJQUNYO0lBQ0EsTUFBTTRDLE9BQU96RCxPQUFPLEVBQUVDLE9BQU8sRUFBRTtRQUMzQixJQUFJO1lBQ0EseUNBQXlDO1lBQ3pDLE1BQU1ZLFdBQVcsTUFBTSxJQUFJLENBQUNkLE9BQU8sQ0FBQ0MsU0FBU0M7WUFDN0MsdUNBQXVDO1lBQ3ZDLE9BQU9ZO1FBQ1gsRUFBRSxPQUFPNkMsS0FBSztZQUNWLCtEQUErRDtZQUMvRCxNQUFNN0MsV0FBV2pELG9GQUFtQkEsQ0FBQzhGO1lBQ3JDLElBQUksQ0FBQzdDLFVBQVUsTUFBTTZDO1lBQ3JCLHdDQUF3QztZQUN4QyxPQUFPN0M7UUFDWDtJQUNKO0FBQ0o7QUFDQSxpRUFBZW5DLG1CQUFtQkEsRUFBQyxDQUVuQyxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuanM/OWViMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZU1vZHVsZSB9IGZyb20gXCIuLi9yb3V0ZS1tb2R1bGVcIjtcbmltcG9ydCB7IFJlcXVlc3RBc3luY1N0b3JhZ2VXcmFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uL2FzeW5jLXN0b3JhZ2UvcmVxdWVzdC1hc3luYy1zdG9yYWdlLXdyYXBwZXJcIjtcbmltcG9ydCB7IFN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VXcmFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uL2FzeW5jLXN0b3JhZ2Uvc3RhdGljLWdlbmVyYXRpb24tYXN5bmMtc3RvcmFnZS13cmFwcGVyXCI7XG5pbXBvcnQgeyBoYW5kbGVCYWRSZXF1ZXN0UmVzcG9uc2UsIGhhbmRsZUludGVybmFsU2VydmVyRXJyb3JSZXNwb25zZSB9IGZyb20gXCIuLi9oZWxwZXJzL3Jlc3BvbnNlLWhhbmRsZXJzXCI7XG5pbXBvcnQgeyBIVFRQX01FVEhPRFMsIGlzSFRUUE1ldGhvZCB9IGZyb20gXCIuLi8uLi8uLi93ZWIvaHR0cFwiO1xuaW1wb3J0IHsgYWRkSW1wbGljaXRUYWdzLCBwYXRjaEZldGNoIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9wYXRjaC1mZXRjaFwiO1xuaW1wb3J0IHsgZ2V0VHJhY2VyIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi90cmFjZS90cmFjZXJcIjtcbmltcG9ydCB7IEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4gfSBmcm9tIFwiLi4vLi4vLi4vbGliL3RyYWNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0UGF0aG5hbWVGcm9tQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4vaGVscGVycy9nZXQtcGF0aG5hbWUtZnJvbS1hYnNvbHV0ZS1wYXRoXCI7XG5pbXBvcnQgeyBwcm94eVJlcXVlc3QgfSBmcm9tIFwiLi9oZWxwZXJzL3Byb3h5LXJlcXVlc3RcIjtcbmltcG9ydCB7IHJlc29sdmVIYW5kbGVyRXJyb3IgfSBmcm9tIFwiLi9oZWxwZXJzL3Jlc29sdmUtaGFuZGxlci1lcnJvclwiO1xuaW1wb3J0ICogYXMgTG9nIGZyb20gXCIuLi8uLi8uLi8uLi9idWlsZC9vdXRwdXQvbG9nXCI7XG5pbXBvcnQgeyBhdXRvSW1wbGVtZW50TWV0aG9kcyB9IGZyb20gXCIuL2hlbHBlcnMvYXV0by1pbXBsZW1lbnQtbWV0aG9kc1wiO1xuaW1wb3J0IHsgZ2V0Tm9uU3RhdGljTWV0aG9kcyB9IGZyb20gXCIuL2hlbHBlcnMvZ2V0LW5vbi1zdGF0aWMtbWV0aG9kc1wiO1xuaW1wb3J0IHsgYXBwZW5kTXV0YWJsZUNvb2tpZXMgfSBmcm9tIFwiLi4vLi4vLi4vd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlcXVlc3QtY29va2llc1wiO1xuaW1wb3J0IHsgcGFyc2VkVXJsUXVlcnlUb1BhcmFtcyB9IGZyb20gXCIuL2hlbHBlcnMvcGFyc2VkLXVybC1xdWVyeS10by1wYXJhbXNcIjtcbmltcG9ydCAqIGFzIHNlcnZlckhvb2tzIGZyb20gXCIuLi8uLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dFwiO1xuaW1wb3J0ICogYXMgaGVhZGVySG9va3MgZnJvbSBcIi4uLy4uLy4uLy4uL2NsaWVudC9jb21wb25lbnRzL2hlYWRlcnNcIjtcbmltcG9ydCB7IHN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXRcIjtcbmltcG9ydCB7IHJlcXVlc3RBc3luY1N0b3JhZ2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvcmVxdWVzdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCI7XG5pbXBvcnQgeyBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWxcIjtcbmltcG9ydCB7IGFjdGlvbkFzeW5jU3RvcmFnZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiO1xuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlcyBmcm9tIFwiLi9zaGFyZWQtbW9kdWxlc1wiO1xuaW1wb3J0IHsgZ2V0SXNTZXJ2ZXJBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vbGliL3NlcnZlci1hY3Rpb24tcmVxdWVzdC1tZXRhXCI7XG4vKipcbiAqIEFwcFJvdXRlUm91dGVIYW5kbGVyIGlzIHRoZSBoYW5kbGVyIGZvciBhcHAgcm91dGVzLlxuICovIGV4cG9ydCBjbGFzcyBBcHBSb3V0ZVJvdXRlTW9kdWxlIGV4dGVuZHMgUm91dGVNb2R1bGUge1xuICAgIHN0YXRpYyAjXyA9IHRoaXMuc2hhcmVkTW9kdWxlcyA9IHNoYXJlZE1vZHVsZXM7XG4gICAgY29uc3RydWN0b3IoeyB1c2VybGFuZCwgZGVmaW5pdGlvbiwgcmVzb2x2ZWRQYWdlUGF0aCwgbmV4dENvbmZpZ091dHB1dCB9KXtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdXNlcmxhbmQsXG4gICAgICAgICAgICBkZWZpbml0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIHJlcXVlc3QgYXN5bmMgc3RvcmFnZS5cbiAgICovIHRoaXMucmVxdWVzdEFzeW5jU3RvcmFnZSA9IHJlcXVlc3RBc3luY1N0b3JhZ2U7XG4gICAgICAgIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGdlbmVyYXRpb24gYXN5bmMgc3RvcmFnZS5cbiAgICovIHRoaXMuc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSA9IHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2U7XG4gICAgICAgIC8qKlxuICAgKiBBbiBpbnRlcmZhY2UgdG8gY2FsbCBzZXJ2ZXIgaG9va3Mgd2hpY2ggaW50ZXJhY3Qgd2l0aCB0aGUgdW5kZXJseWluZ1xuICAgKiBzdG9yYWdlLlxuICAgKi8gdGhpcy5zZXJ2ZXJIb29rcyA9IHNlcnZlckhvb2tzO1xuICAgICAgICAvKipcbiAgICogQW4gaW50ZXJmYWNlIHRvIGNhbGwgaGVhZGVyIGhvb2tzIHdoaWNoIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmdcbiAgICogcmVxdWVzdCBzdG9yYWdlLlxuICAgKi8gdGhpcy5oZWFkZXJIb29rcyA9IGhlYWRlckhvb2tzO1xuICAgICAgICAvKipcbiAgICogQW4gaW50ZXJmYWNlIHRvIGNhbGwgc3RhdGljIGdlbmVyYXRpb24gYmFpbG91dCBob29rcyB3aGljaCBpbnRlcmFjdCB3aXRoXG4gICAqIHRoZSB1bmRlcmx5aW5nIHN0YXRpYyBnZW5lcmF0aW9uIHN0b3JhZ2UuXG4gICAqLyB0aGlzLnN0YXRpY0dlbmVyYXRpb25CYWlsb3V0ID0gc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQ7XG4gICAgICAgIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgbXV0YXRpb24gcmVsYXRlZCBhc3luYyBzdG9yYWdlLCBzdWNoIGFzIG11dGF0aW9ucyBvZlxuICAgKiBjb29raWVzLlxuICAgKi8gdGhpcy5hY3Rpb25Bc3luY1N0b3JhZ2UgPSBhY3Rpb25Bc3luY1N0b3JhZ2U7XG4gICAgICAgIHRoaXMucmVzb2x2ZWRQYWdlUGF0aCA9IHJlc29sdmVkUGFnZVBhdGg7XG4gICAgICAgIHRoaXMubmV4dENvbmZpZ091dHB1dCA9IG5leHRDb25maWdPdXRwdXQ7XG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgaW1wbGVtZW50IHNvbWUgbWV0aG9kcyBpZiB0aGV5IGFyZW4ndCBpbXBsZW1lbnRlZCBieSB0aGVcbiAgICAgICAgLy8gdXNlcmxhbmQgbW9kdWxlLlxuICAgICAgICB0aGlzLm1ldGhvZHMgPSBhdXRvSW1wbGVtZW50TWV0aG9kcyh1c2VybGFuZCk7XG4gICAgICAgIC8vIEdldCB0aGUgbm9uLXN0YXRpYyBtZXRob2RzIGZvciB0aGlzIHJvdXRlLlxuICAgICAgICB0aGlzLm5vblN0YXRpY01ldGhvZHMgPSBnZXROb25TdGF0aWNNZXRob2RzKHVzZXJsYW5kKTtcbiAgICAgICAgLy8gR2V0IHRoZSBkeW5hbWljIHByb3BlcnR5IGZyb20gdGhlIHVzZXJsYW5kIG1vZHVsZS5cbiAgICAgICAgdGhpcy5keW5hbWljID0gdGhpcy51c2VybGFuZC5keW5hbWljO1xuICAgICAgICBpZiAodGhpcy5uZXh0Q29uZmlnT3V0cHV0ID09PSBcImV4cG9ydFwiKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZHluYW1pYyB8fCB0aGlzLmR5bmFtaWMgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5keW5hbWljID0gXCJlcnJvclwiO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmR5bmFtaWMgPT09IFwiZm9yY2UtZHluYW1pY1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBvcnQgY29uc3QgZHluYW1pYyA9IFwiZm9yY2UtZHluYW1pY1wiIG9uIHBhZ2UgXCIke2RlZmluaXRpb24ucGF0aG5hbWV9XCIgY2Fubm90IGJlIHVzZWQgd2l0aCBcIm91dHB1dDogZXhwb3J0XCIuIFNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYWR2YW5jZWQtZmVhdHVyZXMvc3RhdGljLWh0bWwtZXhwb3J0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugb25seSB3YXJuIGluIGRldmVsb3BtZW50IGFmdGVyIGhlcmUsIHNvIHJldHVybiBpZiB3ZSdyZSBub3QgaW5cbiAgICAgICAgLy8gZGV2ZWxvcG1lbnQuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAvLyBQcmludCBlcnJvciBpbiBkZXZlbG9wbWVudCBpZiB0aGUgZXhwb3J0ZWQgaGFuZGxlcnMgYXJlIGluIGxvd2VyY2FzZSwgb25seVxuICAgICAgICAgICAgLy8gdXBwZXJjYXNlIGhhbmRsZXJzIGFyZSBzdXBwb3J0ZWQuXG4gICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VkID0gSFRUUF9NRVRIT0RTLm1hcCgobWV0aG9kKT0+bWV0aG9kLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtZXRob2Qgb2YgbG93ZXJjYXNlZCl7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZCBpbiB0aGlzLnVzZXJsYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIExvZy5lcnJvcihgRGV0ZWN0ZWQgbG93ZXJjYXNlIG1ldGhvZCAnJHttZXRob2R9JyBpbiAnJHt0aGlzLnJlc29sdmVkUGFnZVBhdGh9Jy4gRXhwb3J0IHRoZSB1cHBlcmNhc2UgJyR7bWV0aG9kLnRvVXBwZXJDYXNlKCl9JyBtZXRob2QgbmFtZSB0byBmaXggdGhpcyBlcnJvci5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQcmludCBlcnJvciBpZiB0aGUgbW9kdWxlIGV4cG9ydHMgYSBkZWZhdWx0IGhhbmRsZXIsIHRoZXkgbXVzdCB1c2UgbmFtZWRcbiAgICAgICAgICAgIC8vIGV4cG9ydHMgZm9yIGVhY2ggSFRUUCBtZXRob2QuXG4gICAgICAgICAgICBpZiAoXCJkZWZhdWx0XCIgaW4gdGhpcy51c2VybGFuZCkge1xuICAgICAgICAgICAgICAgIExvZy5lcnJvcihgRGV0ZWN0ZWQgZGVmYXVsdCBleHBvcnQgaW4gJyR7dGhpcy5yZXNvbHZlZFBhZ2VQYXRofScuIEV4cG9ydCBhIG5hbWVkIGV4cG9ydCBmb3IgZWFjaCBIVFRQIG1ldGhvZCBpbnN0ZWFkLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbWV0aG9kcyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSwgdGhlbiByZXR1cm4gYSBub3QgZm91bmRcbiAgICAgICAgICAgIC8vIHJlc3BvbnNlLlxuICAgICAgICAgICAgaWYgKCFIVFRQX01FVEhPRFMuc29tZSgobWV0aG9kKT0+bWV0aG9kIGluIHRoaXMudXNlcmxhbmQpKSB7XG4gICAgICAgICAgICAgICAgTG9nLmVycm9yKGBObyBIVFRQIG1ldGhvZHMgZXhwb3J0ZWQgaW4gJyR7dGhpcy5yZXNvbHZlZFBhZ2VQYXRofScuIEV4cG9ydCBhIG5hbWVkIGV4cG9ydCBmb3IgZWFjaCBIVFRQIG1ldGhvZC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGhhbmRsZXIgZnVuY3Rpb24gZm9yIHRoZSBnaXZlbiBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgdGhlIHJlcXVlc3RlZCBtZXRob2RcbiAgICogQHJldHVybnMgdGhlIGhhbmRsZXIgZnVuY3Rpb24gZm9yIHRoZSBnaXZlbiBtZXRob2RcbiAgICovIHJlc29sdmUobWV0aG9kKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgbWV0aG9kIGlzIGEgdmFsaWQgbWV0aG9kICh0byBwcmV2ZW50IFJDRSdzKS5cbiAgICAgICAgaWYgKCFpc0hUVFBNZXRob2QobWV0aG9kKSkgcmV0dXJuIGhhbmRsZUJhZFJlcXVlc3RSZXNwb25zZTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSBoYW5kbGVyLlxuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2RzW21ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgcm91dGUgaGFuZGxlci5cbiAgICovIGFzeW5jIGV4ZWN1dGUocmVxdWVzdCwgY29udGV4dCkge1xuICAgICAgICAvLyBHZXQgdGhlIGhhbmRsZXIgZnVuY3Rpb24gZm9yIHRoZSBnaXZlbiBtZXRob2QuXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLnJlc29sdmUocmVxdWVzdC5tZXRob2QpO1xuICAgICAgICAvLyBHZXQgdGhlIGNvbnRleHQgZm9yIHRoZSByZXF1ZXN0LlxuICAgICAgICBjb25zdCByZXF1ZXN0Q29udGV4dCA9IHtcbiAgICAgICAgICAgIHJlcTogcmVxdWVzdFxuICAgICAgICB9O1xuICAgICAgICByZXF1ZXN0Q29udGV4dC5yZW5kZXJPcHRzID0ge1xuICAgICAgICAgICAgcHJldmlld1Byb3BzOiBjb250ZXh0LnByZXJlbmRlck1hbmlmZXN0LnByZXZpZXdcbiAgICAgICAgfTtcbiAgICAgICAgLy8gR2V0IHRoZSBjb250ZXh0IGZvciB0aGUgc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgIGNvbnN0IHN0YXRpY0dlbmVyYXRpb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgdXJsUGF0aG5hbWU6IHJlcXVlc3QubmV4dFVybC5wYXRobmFtZSxcbiAgICAgICAgICAgIHJlbmRlck9wdHM6IGNvbnRleHQucmVuZGVyT3B0c1xuICAgICAgICB9O1xuICAgICAgICAvLyBBZGQgdGhlIGZldGNoQ2FjaGUgb3B0aW9uIHRvIHRoZSByZW5kZXJPcHRzLlxuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uQ29udGV4dC5yZW5kZXJPcHRzLmZldGNoQ2FjaGUgPSB0aGlzLnVzZXJsYW5kLmZldGNoQ2FjaGU7XG4gICAgICAgIC8vIFJ1biB0aGUgaGFuZGxlciB3aXRoIHRoZSByZXF1ZXN0IEFzeW5jTG9jYWxTdG9yYWdlIHRvIGluamVjdCB0aGUgaGVscGVyXG4gICAgICAgIC8vIHN1cHBvcnQuIFdlIHNldCB0aGlzIHRvIGB1bmtub3duYCBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCBrbm93biB1bnRpbFxuICAgICAgICAvLyBydW50aW1lIHdoZW4gd2UgZG8gYSBpbnN0YW5jZW9mIGNoZWNrIGJlbG93LlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYWN0aW9uQXN5bmNTdG9yYWdlLnJ1bih7XG4gICAgICAgICAgICBpc0FwcFJvdXRlOiB0cnVlLFxuICAgICAgICAgICAgaXNBY3Rpb246IGdldElzU2VydmVyQWN0aW9uKHJlcXVlc3QpXG4gICAgICAgIH0sICgpPT5SZXF1ZXN0QXN5bmNTdG9yYWdlV3JhcHBlci53cmFwKHRoaXMucmVxdWVzdEFzeW5jU3RvcmFnZSwgcmVxdWVzdENvbnRleHQsICgpPT5TdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlV3JhcHBlci53cmFwKHRoaXMuc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSwgc3RhdGljR2VuZXJhdGlvbkNvbnRleHQsIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUpPT57XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZ2V0VHJhY2VyX2dldFJvb3RTcGFuQXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIHNob3VsZCBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbiBiYXNlZCBvblxuICAgICAgICAgICAgICAgICAgICAvLyBoYXZpbmcgbm9uLXN0YXRpYyBtZXRob2RzLlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub25TdGF0aWNNZXRob2RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRpY0dlbmVyYXRpb25CYWlsb3V0KGBub24tc3RhdGljIG1ldGhvZHMgdXNlZCAke3RoaXMubm9uU3RhdGljTWV0aG9kcy5qb2luKFwiLCBcIil9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0aWMgZ2VuZXJhdGlvbiBzdG9yZSBiYXNlZCBvbiB0aGUgZHluYW1pYyBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRoaXMuZHluYW1pYyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZm9yY2UtZHluYW1pY1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkeW5hbWljIHByb3BlcnR5IGlzIHNldCB0byBmb3JjZS1keW5hbWljLCBzbyB3ZSBzaG91bGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSB0aGUgcGFnZSB0byBiZSBkeW5hbWljLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mb3JjZUR5bmFtaWMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQoYGZvcmNlLWR5bmFtaWNgLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWM6IHRoaXMuZHluYW1pY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcmNlLXN0YXRpY1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkeW5hbWljIHByb3BlcnR5IGlzIHNldCB0byBmb3JjZS1zdGF0aWMsIHNvIHdlIHNob3VsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcmNlIHRoZSBwYWdlIHRvIGJlIHN0YXRpYy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZm9yY2VTdGF0aWMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGR5bmFtaWMgcHJvcGVydHkgaXMgc2V0IHRvIGVycm9yLCBzbyB3ZSBzaG91bGQgdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcnJvciBpZiB0aGUgcGFnZSBpcyBiZWluZyBzdGF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZHluYW1pY1Nob3VsZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0YXRpYyBnZW5lcmF0aW9uIHN0b3JlIGRvZXMgbm90IGhhdmUgYSByZXZhbGlkYXRlIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCwgdGhlbiB3ZSBzaG91bGQgc2V0IGl0IHRoZSByZXZhbGlkYXRlIHZhbHVlIGZyb20gdGhlIHVzZXJsYW5kXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZSBvciBkZWZhdWx0IHRvIGZhbHNlLlxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA/Pz0gdGhpcy51c2VybGFuZC5yZXZhbGlkYXRlID8/IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBXcmFwIHRoZSByZXF1ZXN0IHNvIHdlIGNhbiBhZGQgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHRvIGNhc2VzXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgbWlnaHQgY2hhbmdlIGl0J3Mgb3V0cHV0IG9yIGFmZmVjdCB0aGUgcmVuZGVyaW5nLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVkUmVxdWVzdCA9IHByb3h5UmVxdWVzdChyZXF1ZXN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljOiB0aGlzLmR5bmFtaWNcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySG9va3M6IHRoaXMuaGVhZGVySG9va3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJIb29rczogdGhpcy5zZXJ2ZXJIb29rcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25CYWlsb3V0OiB0aGlzLnN0YXRpY0dlbmVyYXRpb25CYWlsb3V0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBwcm9wYWdhdGUgdGhpcyBwYXRobmFtZSBmcm9tIHJvdXRlIG1hdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGUgPSBnZXRQYXRobmFtZUZyb21BYnNvbHV0ZVBhdGgodGhpcy5yZXNvbHZlZFBhZ2VQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgKF9nZXRUcmFjZXJfZ2V0Um9vdFNwYW5BdHRyaWJ1dGVzID0gZ2V0VHJhY2VyKCkuZ2V0Um9vdFNwYW5BdHRyaWJ1dGVzKCkpID09IG51bGwgPyB2b2lkIDAgOiBfZ2V0VHJhY2VyX2dldFJvb3RTcGFuQXR0cmlidXRlcy5zZXQoXCJuZXh0LnJvdXRlXCIsIHJvdXRlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFRyYWNlcigpLnRyYWNlKEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4ucnVuSGFuZGxlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbk5hbWU6IGBleGVjdXRpbmcgYXBpIHJvdXRlIChhcHApICR7cm91dGV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQucm91dGVcIjogcm91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgYXN5bmMgKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXRjaCB0aGUgZ2xvYmFsIGZldGNoLlxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hGZXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVySG9va3M6IHRoaXMuc2VydmVySG9va3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZTogdGhpcy5zdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGhhbmRsZXIod3JhcHBlZFJlcXVlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGNvbnRleHQucGFyYW1zID8gcGFyc2VkVXJsUXVlcnlUb1BhcmFtcyhjb250ZXh0LnBhcmFtcykgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyByZXNwb25zZSBpcyByZXR1cm5lZCBmcm9tIHJvdXRlIGhhbmRsZXIgJyR7dGhpcy5yZXNvbHZlZFBhZ2VQYXRofScuIEVuc3VyZSB5b3UgcmV0dXJuIGEgXFxgUmVzcG9uc2VcXGAgb3IgYSBcXGBOZXh0UmVzcG9uc2VcXGAgaW4gYWxsIGJyYW5jaGVzIG9mIHlvdXIgaGFuZGxlci5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVuZGVyT3B0cy5mZXRjaE1ldHJpY3MgPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZmV0Y2hNZXRyaWNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW5kZXJPcHRzLndhaXRVbnRpbCA9IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMoc3RhdGljR2VuZXJhdGlvblN0b3JlLnBlbmRpbmdSZXZhbGlkYXRlcyB8fCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSW1wbGljaXRUYWdzKHN0YXRpY0dlbmVyYXRpb25TdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbmRlck9wdHMuZmV0Y2hUYWdzID0gKF9zdGF0aWNHZW5lcmF0aW9uU3RvcmVfdGFncyA9IHN0YXRpY0dlbmVyYXRpb25TdG9yZS50YWdzKSA9PSBudWxsID8gdm9pZCAwIDogX3N0YXRpY0dlbmVyYXRpb25TdG9yZV90YWdzLmpvaW4oXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSBjb29raWVzIHdlcmUgc2V0IGluIHRoZSBoYW5kbGVyLCBzbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBtZXJnZSB0aGUgbW9kaWZpZWQgY29va2llcyBhbmQgdGhlIHJldHVybmVkIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdFN0b3JlID0gdGhpcy5yZXF1ZXN0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdFN0b3JlICYmIHJlcXVlc3RTdG9yZS5tdXRhYmxlQ29va2llcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXMuaGVhZGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGVuZE11dGFibGVDb29raWVzKGhlYWRlcnMsIHJlcXVlc3RTdG9yZS5tdXRhYmxlQ29va2llcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShyZXMuYm9keSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzLnN0YXR1c1RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIGRpZCd0IHJldHVybiBhIHZhbGlkIHJlc3BvbnNlLCB0aGVuIHJldHVybiB0aGUgaW50ZXJuYWxcbiAgICAgICAgLy8gZXJyb3IgcmVzcG9uc2UuXG4gICAgICAgIGlmICghKHJlc3BvbnNlIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiB2YWxpZGF0ZSB0aGUgY29ycmVjdCBoYW5kbGluZyBiZWhhdmlvciwgbWF5YmUgbG9nIHNvbWV0aGluZz9cbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVJbnRlcm5hbFNlcnZlckVycm9yUmVzcG9uc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycy5oYXMoXCJ4LW1pZGRsZXdhcmUtcmV3cml0ZVwiKSkge1xuICAgICAgICAgICAgLy8gVE9ETzogbW92ZSB0aGlzIGVycm9yIGludG8gdGhlIGBOZXh0UmVzcG9uc2UucmV3cml0ZSgpYCBmdW5jdGlvbi5cbiAgICAgICAgICAgIC8vIFRPRE8tQVBQOiByZS1lbmFibGUgc3VwcG9ydCBiZWxvdyB3aGVuIHdlIGNhbiBwcm94eSB0aGVzZSB0eXBlIG9mIHJlcXVlc3RzXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOZXh0UmVzcG9uc2UucmV3cml0ZSgpIHdhcyB1c2VkIGluIGEgYXBwIHJvdXRlIGhhbmRsZXIsIHRoaXMgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIFBsZWFzZSByZW1vdmUgdGhlIGludm9jYXRpb24gdG8gY29udGludWUuXCIpO1xuICAgICAgICAvLyAvLyBUaGlzIGlzIGEgcmV3cml0ZSBjcmVhdGVkIHZpYSBgTmV4dFJlc3BvbnNlLnJld3JpdGUoKWAuIFdlIG5lZWQgdG8gc2VuZFxuICAgICAgICAvLyAvLyB0aGUgcmVzcG9uc2UgdXAgc28gaXQgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGJhY2tpbmcgc2VydmVyLlxuICAgICAgICAvLyAvLyBJZiB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgaW4gbWluaW1hbCBtb2RlLCB3ZSBqdXN0IHdhbnQgdG8gZm9yd2FyZCB0aGVcbiAgICAgICAgLy8gLy8gcmVzcG9uc2UgKGluY2x1ZGluZyB0aGUgcmV3cml0ZSBoZWFkZXJzKSB1cHN0cmVhbSBzbyBpdCBjYW4gcGVyZm9ybSB0aGVcbiAgICAgICAgLy8gLy8gcmVkaXJlY3QgZm9yIHVzLCBvdGhlcndpc2UgcmV0dXJuIHdpdGggdGhlIHNwZWNpYWwgY29uZGl0aW9uIHNvIHRoaXNcbiAgICAgICAgLy8gLy8gc2VydmVyIGNhbiBwZXJmb3JtIGEgcmV3cml0ZS5cbiAgICAgICAgLy8gaWYgKCFtaW5pbWFsTW9kZSkge1xuICAgICAgICAvLyAgIHJldHVybiB7IHJlc3BvbnNlLCBjb25kaXRpb246ICdyZXdyaXRlJyB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gLy8gUmVsYXRpdml6ZSB0aGUgdXJsIHNvIGl0J3MgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsLiBUaGlzIGlzIHNvIHRoZVxuICAgICAgICAvLyAvLyBvdXRnb2luZyBoZWFkZXJzIHVwc3RyZWFtIGNhbiBiZSByZWxhdGl2ZS5cbiAgICAgICAgLy8gY29uc3QgcmV3cml0ZVBhdGggPSByZXNwb25zZS5oZWFkZXJzLmdldCgneC1taWRkbGV3YXJlLXJld3JpdGUnKSFcbiAgICAgICAgLy8gY29uc3QgaW5pdFVybCA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2luaXRVUkwnKSFcbiAgICAgICAgLy8gY29uc3QgeyBwYXRobmFtZSB9ID0gcGFyc2VVcmwocmVsYXRpdml6ZVVSTChyZXdyaXRlUGF0aCwgaW5pdFVybCkpXG4gICAgICAgIC8vIHJlc3BvbnNlLmhlYWRlcnMuc2V0KCd4LW1pZGRsZXdhcmUtcmV3cml0ZScsIHBhdGhuYW1lKVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzLmdldChcIngtbWlkZGxld2FyZS1uZXh0XCIpID09PSBcIjFcIikge1xuICAgICAgICAgICAgLy8gVE9ETzogbW92ZSB0aGlzIGVycm9yIGludG8gdGhlIGBOZXh0UmVzcG9uc2UubmV4dCgpYCBmdW5jdGlvbi5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5leHRSZXNwb25zZS5uZXh0KCkgd2FzIHVzZWQgaW4gYSBhcHAgcm91dGUgaGFuZGxlciwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLiBTZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXJlc3BvbnNlLW5leHQtaW4tYXBwLXJvdXRlLWhhbmRsZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGUocmVxdWVzdCwgY29udGV4dCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcm91dGUgdG8gZ2V0IHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlKHJlcXVlc3QsIGNvbnRleHQpO1xuICAgICAgICAgICAgLy8gVGhlIHJlc3BvbnNlIHdhcyBoYW5kbGVkLCByZXR1cm4gaXQuXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gVHJ5IHRvIHJlc29sdmUgdGhlIGVycm9yIHRvIGEgcmVzcG9uc2UsIGVsc2UgdGhyb3cgaXQgYWdhaW4uXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc29sdmVIYW5kbGVyRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHRocm93IGVycjtcbiAgICAgICAgICAgIC8vIFRoZSByZXNwb25zZSB3YXMgcmVzb2x2ZWQsIHJldHVybiBpdC5cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEFwcFJvdXRlUm91dGVNb2R1bGU7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZHVsZS5qcy5tYXAiXSwibmFtZXMiOlsiUm91dGVNb2R1bGUiLCJSZXF1ZXN0QXN5bmNTdG9yYWdlV3JhcHBlciIsIlN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VXcmFwcGVyIiwiaGFuZGxlQmFkUmVxdWVzdFJlc3BvbnNlIiwiaGFuZGxlSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlIiwiSFRUUF9NRVRIT0RTIiwiaXNIVFRQTWV0aG9kIiwiYWRkSW1wbGljaXRUYWdzIiwicGF0Y2hGZXRjaCIsImdldFRyYWNlciIsIkFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW4iLCJnZXRQYXRobmFtZUZyb21BYnNvbHV0ZVBhdGgiLCJwcm94eVJlcXVlc3QiLCJyZXNvbHZlSGFuZGxlckVycm9yIiwiTG9nIiwiYXV0b0ltcGxlbWVudE1ldGhvZHMiLCJnZXROb25TdGF0aWNNZXRob2RzIiwiYXBwZW5kTXV0YWJsZUNvb2tpZXMiLCJwYXJzZWRVcmxRdWVyeVRvUGFyYW1zIiwic2VydmVySG9va3MiLCJoZWFkZXJIb29rcyIsInN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IiwicmVxdWVzdEFzeW5jU3RvcmFnZSIsInN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UiLCJhY3Rpb25Bc3luY1N0b3JhZ2UiLCJzaGFyZWRNb2R1bGVzIiwiZ2V0SXNTZXJ2ZXJBY3Rpb24iLCJBcHBSb3V0ZVJvdXRlTW9kdWxlIiwiXyIsImNvbnN0cnVjdG9yIiwidXNlcmxhbmQiLCJkZWZpbml0aW9uIiwicmVzb2x2ZWRQYWdlUGF0aCIsIm5leHRDb25maWdPdXRwdXQiLCJtZXRob2RzIiwibm9uU3RhdGljTWV0aG9kcyIsImR5bmFtaWMiLCJFcnJvciIsInBhdGhuYW1lIiwicHJvY2VzcyIsImxvd2VyY2FzZWQiLCJtYXAiLCJtZXRob2QiLCJ0b0xvd2VyQ2FzZSIsImVycm9yIiwidG9VcHBlckNhc2UiLCJzb21lIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJyZXF1ZXN0IiwiY29udGV4dCIsImhhbmRsZXIiLCJyZXF1ZXN0Q29udGV4dCIsInJlcSIsInJlbmRlck9wdHMiLCJwcmV2aWV3UHJvcHMiLCJwcmVyZW5kZXJNYW5pZmVzdCIsInByZXZpZXciLCJzdGF0aWNHZW5lcmF0aW9uQ29udGV4dCIsInVybFBhdGhuYW1lIiwibmV4dFVybCIsImZldGNoQ2FjaGUiLCJyZXNwb25zZSIsInJ1biIsImlzQXBwUm91dGUiLCJpc0FjdGlvbiIsIndyYXAiLCJzdGF0aWNHZW5lcmF0aW9uU3RvcmUiLCJfZ2V0VHJhY2VyX2dldFJvb3RTcGFuQXR0cmlidXRlcyIsImpvaW4iLCJmb3JjZUR5bmFtaWMiLCJmb3JjZVN0YXRpYyIsImR5bmFtaWNTaG91bGRFcnJvciIsInJldmFsaWRhdGUiLCJ3cmFwcGVkUmVxdWVzdCIsInJvdXRlIiwiZ2V0Um9vdFNwYW5BdHRyaWJ1dGVzIiwic2V0IiwidHJhY2UiLCJydW5IYW5kbGVyIiwic3Bhbk5hbWUiLCJhdHRyaWJ1dGVzIiwiX3N0YXRpY0dlbmVyYXRpb25TdG9yZV90YWdzIiwicmVzIiwicGFyYW1zIiwidW5kZWZpbmVkIiwiUmVzcG9uc2UiLCJmZXRjaE1ldHJpY3MiLCJ3YWl0VW50aWwiLCJQcm9taXNlIiwiYWxsIiwiT2JqZWN0IiwidmFsdWVzIiwicGVuZGluZ1JldmFsaWRhdGVzIiwiZmV0Y2hUYWdzIiwidGFncyIsInJlcXVlc3RTdG9yZSIsImdldFN0b3JlIiwibXV0YWJsZUNvb2tpZXMiLCJoZWFkZXJzIiwiSGVhZGVycyIsImJvZHkiLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwiaGFzIiwiZ2V0IiwiaGFuZGxlIiwiZXJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/module.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/shared-modules.js":
/*!********************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/app-route/shared-modules.js ***!
\********************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ appRouterContext: () => (/* reexport module object */ _shared_lib_app_router_context_shared_runtime__WEBPACK_IMPORTED_MODULE_0__)\n/* harmony export */ });\n/* harmony import */ var _shared_lib_app_router_context_shared_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../shared/lib/app-router-context.shared-runtime */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/app-router-context.shared-runtime.js\");\n// the name of the export has to be the camelCase version of the file name (without the extension)\n// TODO: remove this. We need it because using notFound from next/navigation imports this file :(\n //# sourceMappingURL=shared-modules.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL3NoYXJlZC1tb2R1bGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0dBQWtHO0FBQ2xHLGlHQUFpRztBQUNKLENBRTdGLDBDQUEwQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL3NoYXJlZC1tb2R1bGVzLmpzP2U1NzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhlIG5hbWUgb2YgdGhlIGV4cG9ydCBoYXMgdG8gYmUgdGhlIGNhbWVsQ2FzZSB2ZXJzaW9uIG9mIHRoZSBmaWxlIG5hbWUgKHdpdGhvdXQgdGhlIGV4dGVuc2lvbilcbi8vIFRPRE86IHJlbW92ZSB0aGlzLiBXZSBuZWVkIGl0IGJlY2F1c2UgdXNpbmcgbm90Rm91bmQgZnJvbSBuZXh0L25hdmlnYXRpb24gaW1wb3J0cyB0aGlzIGZpbGUgOihcbmV4cG9ydCAqIGFzIGFwcFJvdXRlckNvbnRleHQgZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXJlZC1tb2R1bGVzLmpzLm1hcCJdLCJuYW1lcyI6WyJhcHBSb3V0ZXJDb250ZXh0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/app-route/shared-modules.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js ***!
\*********************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ handleBadRequestResponse: () => (/* binding */ handleBadRequestResponse),\n/* harmony export */ handleInternalServerErrorResponse: () => (/* binding */ handleInternalServerErrorResponse),\n/* harmony export */ handleMethodNotAllowedResponse: () => (/* binding */ handleMethodNotAllowedResponse),\n/* harmony export */ handleNotFoundResponse: () => (/* binding */ handleNotFoundResponse),\n/* harmony export */ handleRedirectResponse: () => (/* binding */ handleRedirectResponse)\n/* harmony export */ });\n/* harmony import */ var _web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../web/spec-extension/adapters/request-cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js\");\n\nfunction handleRedirectResponse(url, mutableCookies, status) {\n const headers = new Headers({\n location: url\n });\n (0,_web_spec_extension_adapters_request_cookies__WEBPACK_IMPORTED_MODULE_0__.appendMutableCookies)(headers, mutableCookies);\n return new Response(null, {\n status,\n headers\n });\n}\nfunction handleBadRequestResponse() {\n return new Response(null, {\n status: 400\n });\n}\nfunction handleNotFoundResponse() {\n return new Response(null, {\n status: 404\n });\n}\nfunction handleMethodNotAllowedResponse() {\n return new Response(null, {\n status: 405\n });\n}\nfunction handleInternalServerErrorResponse() {\n return new Response(null, {\n status: 500\n });\n} //# sourceMappingURL=response-handlers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvaGVscGVycy9yZXNwb25zZS1oYW5kbGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNEY7QUFDckYsU0FBU0MsdUJBQXVCQyxHQUFHLEVBQUVDLGNBQWMsRUFBRUMsTUFBTTtJQUM5RCxNQUFNQyxVQUFVLElBQUlDLFFBQVE7UUFDeEJDLFVBQVVMO0lBQ2Q7SUFDQUYsa0dBQW9CQSxDQUFDSyxTQUFTRjtJQUM5QixPQUFPLElBQUlLLFNBQVMsTUFBTTtRQUN0Qko7UUFDQUM7SUFDSjtBQUNKO0FBQ08sU0FBU0k7SUFDWixPQUFPLElBQUlELFNBQVMsTUFBTTtRQUN0QkosUUFBUTtJQUNaO0FBQ0o7QUFDTyxTQUFTTTtJQUNaLE9BQU8sSUFBSUYsU0FBUyxNQUFNO1FBQ3RCSixRQUFRO0lBQ1o7QUFDSjtBQUNPLFNBQVNPO0lBQ1osT0FBTyxJQUFJSCxTQUFTLE1BQU07UUFDdEJKLFFBQVE7SUFDWjtBQUNKO0FBQ08sU0FBU1E7SUFDWixPQUFPLElBQUlKLFNBQVMsTUFBTTtRQUN0QkosUUFBUTtJQUNaO0FBQ0osRUFFQSw2Q0FBNkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2hlbHBlcnMvcmVzcG9uc2UtaGFuZGxlcnMuanM/YzAwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcHBlbmRNdXRhYmxlQ29va2llcyB9IGZyb20gXCIuLi8uLi8uLi93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVxdWVzdC1jb29raWVzXCI7XG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVkaXJlY3RSZXNwb25zZSh1cmwsIG11dGFibGVDb29raWVzLCBzdGF0dXMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoe1xuICAgICAgICBsb2NhdGlvbjogdXJsXG4gICAgfSk7XG4gICAgYXBwZW5kTXV0YWJsZUNvb2tpZXMoaGVhZGVycywgbXV0YWJsZUNvb2tpZXMpO1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGhlYWRlcnNcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVCYWRSZXF1ZXN0UmVzcG9uc2UoKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgICAgIHN0YXR1czogNDAwXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTm90Rm91bmRSZXNwb25zZSgpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgc3RhdHVzOiA0MDRcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVNZXRob2ROb3RBbGxvd2VkUmVzcG9uc2UoKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgICAgIHN0YXR1czogNDA1XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlKCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXM6IDUwMFxuICAgIH0pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNwb25zZS1oYW5kbGVycy5qcy5tYXAiXSwibmFtZXMiOlsiYXBwZW5kTXV0YWJsZUNvb2tpZXMiLCJoYW5kbGVSZWRpcmVjdFJlc3BvbnNlIiwidXJsIiwibXV0YWJsZUNvb2tpZXMiLCJzdGF0dXMiLCJoZWFkZXJzIiwiSGVhZGVycyIsImxvY2F0aW9uIiwiUmVzcG9uc2UiLCJoYW5kbGVCYWRSZXF1ZXN0UmVzcG9uc2UiLCJoYW5kbGVOb3RGb3VuZFJlc3BvbnNlIiwiaGFuZGxlTWV0aG9kTm90QWxsb3dlZFJlc3BvbnNlIiwiaGFuZGxlSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/helpers/response-handlers.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/future/route-modules/route-module.js":
/*!********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/future/route-modules/route-module.js ***!
\********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RouteModule: () => (/* binding */ RouteModule)\n/* harmony export */ });\n/**\n * RouteModule is the base class for all route modules. This class should be\n * extended by all route modules.\n */ class RouteModule {\n constructor({ userland, definition }){\n this.userland = userland;\n this.definition = definition;\n }\n} //# sourceMappingURL=route-module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvcm91dGUtbW9kdWxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7O0NBR0MsR0FBVSxNQUFNQTtJQUNiQyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDRCxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUN0QjtBQUNKLEVBRUEsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9yb3V0ZS1tb2R1bGUuanM/MThlMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJvdXRlTW9kdWxlIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgcm91dGUgbW9kdWxlcy4gVGhpcyBjbGFzcyBzaG91bGQgYmVcbiAqIGV4dGVuZGVkIGJ5IGFsbCByb3V0ZSBtb2R1bGVzLlxuICovIGV4cG9ydCBjbGFzcyBSb3V0ZU1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoeyB1c2VybGFuZCwgZGVmaW5pdGlvbiB9KXtcbiAgICAgICAgdGhpcy51c2VybGFuZCA9IHVzZXJsYW5kO1xuICAgICAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUtbW9kdWxlLmpzLm1hcCJdLCJuYW1lcyI6WyJSb3V0ZU1vZHVsZSIsImNvbnN0cnVjdG9yIiwidXNlcmxhbmQiLCJkZWZpbml0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/future/route-modules/route-module.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/internal-utils.js":
/*!*************************************************************!*\
!*** ./node_modules/next/dist/esm/server/internal-utils.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ stripInternalHeaders: () => (/* binding */ stripInternalHeaders),\n/* harmony export */ stripInternalQueries: () => (/* binding */ stripInternalQueries),\n/* harmony export */ stripInternalSearchParams: () => (/* binding */ stripInternalSearchParams)\n/* harmony export */ });\n/* harmony import */ var _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\");\n/* harmony import */ var _shared_lib_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/lib/constants */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/constants.js\");\n\n\nconst INTERNAL_QUERY_NAMES = [\n \"__nextFallback\",\n \"__nextLocale\",\n \"__nextInferredLocaleFromDefault\",\n \"__nextDefaultLocale\",\n \"__nextIsNotFound\",\n _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__.NEXT_RSC_UNION_QUERY\n];\nconst EDGE_EXTENDED_INTERNAL_QUERY_NAMES = [\n \"__nextDataReq\"\n];\nfunction stripInternalQueries(query) {\n for (const name of INTERNAL_QUERY_NAMES){\n delete query[name];\n }\n}\nfunction stripInternalSearchParams(url, isEdge) {\n const isStringUrl = typeof url === \"string\";\n const instance = isStringUrl ? new URL(url) : url;\n for (const name of INTERNAL_QUERY_NAMES){\n instance.searchParams.delete(name);\n }\n if (isEdge) {\n for (const name of EDGE_EXTENDED_INTERNAL_QUERY_NAMES){\n instance.searchParams.delete(name);\n }\n }\n return isStringUrl ? instance.toString() : instance;\n}\n/**\n * Strip internal headers from the request headers.\n *\n * @param headers the headers to strip of internal headers\n */ function stripInternalHeaders(headers) {\n for (const key of _shared_lib_constants__WEBPACK_IMPORTED_MODULE_1__.INTERNAL_HEADERS){\n delete headers[key];\n }\n} //# sourceMappingURL=internal-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvaW50ZXJuYWwtdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0U7QUFDcEI7QUFDM0QsTUFBTUUsdUJBQXVCO0lBQ3pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQUYsdUZBQW9CQTtDQUN2QjtBQUNELE1BQU1HLHFDQUFxQztJQUN2QztDQUNIO0FBQ00sU0FBU0MscUJBQXFCQyxLQUFLO0lBQ3RDLEtBQUssTUFBTUMsUUFBUUoscUJBQXFCO1FBQ3BDLE9BQU9HLEtBQUssQ0FBQ0MsS0FBSztJQUN0QjtBQUNKO0FBQ08sU0FBU0MsMEJBQTBCQyxHQUFHLEVBQUVDLE1BQU07SUFDakQsTUFBTUMsY0FBYyxPQUFPRixRQUFRO0lBQ25DLE1BQU1HLFdBQVdELGNBQWMsSUFBSUUsSUFBSUosT0FBT0E7SUFDOUMsS0FBSyxNQUFNRixRQUFRSixxQkFBcUI7UUFDcENTLFNBQVNFLFlBQVksQ0FBQ0MsTUFBTSxDQUFDUjtJQUNqQztJQUNBLElBQUlHLFFBQVE7UUFDUixLQUFLLE1BQU1ILFFBQVFILG1DQUFtQztZQUNsRFEsU0FBU0UsWUFBWSxDQUFDQyxNQUFNLENBQUNSO1FBQ2pDO0lBQ0o7SUFDQSxPQUFPSSxjQUFjQyxTQUFTSSxRQUFRLEtBQUtKO0FBQy9DO0FBQ0E7Ozs7Q0FJQyxHQUFVLFNBQVNLLHFCQUFxQkMsT0FBTztJQUM1QyxLQUFLLE1BQU1DLE9BQU9qQixtRUFBZ0JBLENBQUM7UUFDL0IsT0FBT2dCLE9BQU8sQ0FBQ0MsSUFBSTtJQUN2QjtBQUNKLEVBRUEsMENBQTBDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9pbnRlcm5hbC11dGlscy5qcz9iMzJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5FWFRfUlNDX1VOSU9OX1FVRVJZIH0gZnJvbSBcIi4uL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVyc1wiO1xuaW1wb3J0IHsgSU5URVJOQUxfSEVBREVSUyB9IGZyb20gXCIuLi9zaGFyZWQvbGliL2NvbnN0YW50c1wiO1xuY29uc3QgSU5URVJOQUxfUVVFUllfTkFNRVMgPSBbXG4gICAgXCJfX25leHRGYWxsYmFja1wiLFxuICAgIFwiX19uZXh0TG9jYWxlXCIsXG4gICAgXCJfX25leHRJbmZlcnJlZExvY2FsZUZyb21EZWZhdWx0XCIsXG4gICAgXCJfX25leHREZWZhdWx0TG9jYWxlXCIsXG4gICAgXCJfX25leHRJc05vdEZvdW5kXCIsXG4gICAgTkVYVF9SU0NfVU5JT05fUVVFUllcbl07XG5jb25zdCBFREdFX0VYVEVOREVEX0lOVEVSTkFMX1FVRVJZX05BTUVTID0gW1xuICAgIFwiX19uZXh0RGF0YVJlcVwiXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwSW50ZXJuYWxRdWVyaWVzKHF1ZXJ5KSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIElOVEVSTkFMX1FVRVJZX05BTUVTKXtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5W25hbWVdO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEludGVybmFsU2VhcmNoUGFyYW1zKHVybCwgaXNFZGdlKSB7XG4gICAgY29uc3QgaXNTdHJpbmdVcmwgPSB0eXBlb2YgdXJsID09PSBcInN0cmluZ1wiO1xuICAgIGNvbnN0IGluc3RhbmNlID0gaXNTdHJpbmdVcmwgPyBuZXcgVVJMKHVybCkgOiB1cmw7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIElOVEVSTkFMX1FVRVJZX05BTUVTKXtcbiAgICAgICAgaW5zdGFuY2Uuc2VhcmNoUGFyYW1zLmRlbGV0ZShuYW1lKTtcbiAgICB9XG4gICAgaWYgKGlzRWRnZSkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgRURHRV9FWFRFTkRFRF9JTlRFUk5BTF9RVUVSWV9OQU1FUyl7XG4gICAgICAgICAgICBpbnN0YW5jZS5zZWFyY2hQYXJhbXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc1N0cmluZ1VybCA/IGluc3RhbmNlLnRvU3RyaW5nKCkgOiBpbnN0YW5jZTtcbn1cbi8qKlxuICogU3RyaXAgaW50ZXJuYWwgaGVhZGVycyBmcm9tIHRoZSByZXF1ZXN0IGhlYWRlcnMuXG4gKlxuICogQHBhcmFtIGhlYWRlcnMgdGhlIGhlYWRlcnMgdG8gc3RyaXAgb2YgaW50ZXJuYWwgaGVhZGVyc1xuICovIGV4cG9ydCBmdW5jdGlvbiBzdHJpcEludGVybmFsSGVhZGVycyhoZWFkZXJzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgSU5URVJOQUxfSEVBREVSUyl7XG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzW2tleV07XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcm5hbC11dGlscy5qcy5tYXAiXSwibmFtZXMiOlsiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJJTlRFUk5BTF9IRUFERVJTIiwiSU5URVJOQUxfUVVFUllfTkFNRVMiLCJFREdFX0VYVEVOREVEX0lOVEVSTkFMX1FVRVJZX05BTUVTIiwic3RyaXBJbnRlcm5hbFF1ZXJpZXMiLCJxdWVyeSIsIm5hbWUiLCJzdHJpcEludGVybmFsU2VhcmNoUGFyYW1zIiwidXJsIiwiaXNFZGdlIiwiaXNTdHJpbmdVcmwiLCJpbnN0YW5jZSIsIlVSTCIsInNlYXJjaFBhcmFtcyIsImRlbGV0ZSIsInRvU3RyaW5nIiwic3RyaXBJbnRlcm5hbEhlYWRlcnMiLCJoZWFkZXJzIiwia2V5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/internal-utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/fetch-cache.js":
/*!********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/incremental-cache/fetch-cache.js ***!
\********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FetchCache)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/lru-cache */ \"(rsc)/./node_modules/next/dist/compiled/lru-cache/index.js\");\n/* harmony import */ var next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n\n\nlet rateLimitedUntil = 0;\nlet memoryCache;\nconst CACHE_TAGS_HEADER = \"x-vercel-cache-tags\";\nconst CACHE_HEADERS_HEADER = \"x-vercel-sc-headers\";\nconst CACHE_STATE_HEADER = \"x-vercel-cache-state\";\nconst CACHE_REVALIDATE_HEADER = \"x-vercel-revalidate\";\nconst CACHE_FETCH_URL_HEADER = \"x-vercel-cache-item-name\";\nconst CACHE_CONTROL_VALUE_HEADER = \"x-vercel-cache-control\";\nclass FetchCache {\n static isAvailable(ctx) {\n return !!(ctx._requestHeaders[\"x-vercel-sc-host\"] || process.env.SUSPENSE_CACHE_URL);\n }\n constructor(ctx){\n this.debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE;\n this.headers = {};\n this.headers[\"Content-Type\"] = \"application/json\";\n if (CACHE_HEADERS_HEADER in ctx._requestHeaders) {\n const newHeaders = JSON.parse(ctx._requestHeaders[CACHE_HEADERS_HEADER]);\n for(const k in newHeaders){\n this.headers[k] = newHeaders[k];\n }\n delete ctx._requestHeaders[CACHE_HEADERS_HEADER];\n }\n const scHost = ctx._requestHeaders[\"x-vercel-sc-host\"] || process.env.SUSPENSE_CACHE_URL;\n const scBasePath = ctx._requestHeaders[\"x-vercel-sc-basepath\"] || process.env.SUSPENSE_CACHE_BASEPATH;\n if (process.env.SUSPENSE_CACHE_AUTH_TOKEN) {\n this.headers[\"Authorization\"] = `Bearer ${process.env.SUSPENSE_CACHE_AUTH_TOKEN}`;\n }\n if (scHost) {\n this.cacheEndpoint = `https://${scHost}${scBasePath || \"\"}`;\n if (this.debug) {\n console.log(\"using cache endpoint\", this.cacheEndpoint);\n }\n } else if (this.debug) {\n console.log(\"no cache endpoint available\");\n }\n if (ctx.maxMemoryCacheSize) {\n if (!memoryCache) {\n if (this.debug) {\n console.log(\"using memory store for fetch cache\");\n }\n memoryCache = new (next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0___default())({\n max: ctx.maxMemoryCacheSize,\n length ({ value }) {\n var _JSON_stringify;\n if (!value) {\n return 25;\n } else if (value.kind === \"REDIRECT\") {\n return JSON.stringify(value.props).length;\n } else if (value.kind === \"IMAGE\") {\n throw new Error(\"invariant image should not be incremental-cache\");\n } else if (value.kind === \"FETCH\") {\n return JSON.stringify(value.data || \"\").length;\n } else if (value.kind === \"ROUTE\") {\n return value.body.length;\n }\n // rough estimate of size of cache value\n return value.html.length + (((_JSON_stringify = JSON.stringify(value.pageData)) == null ? void 0 : _JSON_stringify.length) || 0);\n }\n });\n }\n } else {\n if (this.debug) {\n console.log(\"not using memory store for fetch cache\");\n }\n }\n }\n resetRequestCache() {\n memoryCache == null ? void 0 : memoryCache.reset();\n }\n async revalidateTag(tag) {\n if (this.debug) {\n console.log(\"revalidateTag\", tag);\n }\n if (Date.now() < rateLimitedUntil) {\n if (this.debug) {\n console.log(\"rate limited \", rateLimitedUntil);\n }\n return;\n }\n try {\n const res = await fetch(`${this.cacheEndpoint}/v1/suspense-cache/revalidate?tags=${tag}`, {\n method: \"POST\",\n headers: this.headers,\n // @ts-expect-error not on public type\n next: {\n internal: true\n }\n });\n if (res.status === 429) {\n const retryAfter = res.headers.get(\"retry-after\") || \"60000\";\n rateLimitedUntil = Date.now() + parseInt(retryAfter);\n }\n if (!res.ok) {\n throw new Error(`Request failed with status ${res.status}.`);\n }\n } catch (err) {\n console.warn(`Failed to revalidate tag ${tag}`, err);\n }\n }\n async get(...args) {\n const [key, ctx = {}] = args;\n const { tags, softTags, kindHint, fetchIdx, fetchUrl } = ctx;\n if (kindHint !== \"fetch\") {\n return null;\n }\n if (Date.now() < rateLimitedUntil) {\n if (this.debug) {\n console.log(\"rate limited\");\n }\n return null;\n }\n // memory cache is cleared at the end of each request\n // so that revalidate events are pulled from upstream\n // on successive requests\n let data = memoryCache == null ? void 0 : memoryCache.get(key);\n // get data from fetch cache\n if (!data && this.cacheEndpoint) {\n try {\n const start = Date.now();\n const fetchParams = {\n internal: true,\n fetchType: \"cache-get\",\n fetchUrl: fetchUrl,\n fetchIdx\n };\n const res = await fetch(`${this.cacheEndpoint}/v1/suspense-cache/${key}`, {\n method: \"GET\",\n headers: {\n ...this.headers,\n [CACHE_FETCH_URL_HEADER]: fetchUrl,\n [CACHE_TAGS_HEADER]: (tags == null ? void 0 : tags.join(\",\")) || \"\",\n [_lib_constants__WEBPACK_IMPORTED_MODULE_1__.NEXT_CACHE_SOFT_TAGS_HEADER]: (softTags == null ? void 0 : softTags.join(\",\")) || \"\"\n },\n next: fetchParams\n });\n if (res.status === 429) {\n const retryAfter = res.headers.get(\"retry-after\") || \"60000\";\n rateLimitedUntil = Date.now() + parseInt(retryAfter);\n }\n if (res.status === 404) {\n if (this.debug) {\n console.log(`no fetch cache entry for ${key}, duration: ${Date.now() - start}ms`);\n }\n return null;\n }\n if (!res.ok) {\n console.error(await res.text());\n throw new Error(`invalid response from cache ${res.status}`);\n }\n const cached = await res.json();\n if (!cached || cached.kind !== \"FETCH\") {\n this.debug && console.log({\n cached\n });\n throw new Error(`invalid cache value`);\n }\n const cacheState = res.headers.get(CACHE_STATE_HEADER);\n const age = res.headers.get(\"age\");\n data = {\n value: cached,\n // if it's already stale set it to a time in the past\n // if not derive last modified from age\n lastModified: cacheState !== \"fresh\" ? Date.now() - _lib_constants__WEBPACK_IMPORTED_MODULE_1__.CACHE_ONE_YEAR : Date.now() - parseInt(age || \"0\", 10) * 1000\n };\n if (this.debug) {\n console.log(`got fetch cache entry for ${key}, duration: ${Date.now() - start}ms, size: ${Object.keys(cached).length}, cache-state: ${cacheState} tags: ${tags == null ? void 0 : tags.join(\",\")} softTags: ${softTags == null ? void 0 : softTags.join(\",\")}`);\n }\n if (data) {\n memoryCache == null ? void 0 : memoryCache.set(key, data);\n }\n } catch (err) {\n // unable to get data from fetch-cache\n if (this.debug) {\n console.error(`Failed to get from fetch-cache`, err);\n }\n }\n }\n return data || null;\n }\n async set(...args) {\n const [key, data, ctx] = args;\n const { fetchCache, fetchIdx, fetchUrl, tags } = ctx;\n if (!fetchCache) return;\n if (Date.now() < rateLimitedUntil) {\n if (this.debug) {\n console.log(\"rate limited\");\n }\n return;\n }\n memoryCache == null ? void 0 : memoryCache.set(key, {\n value: data,\n lastModified: Date.now()\n });\n if (this.cacheEndpoint) {\n try {\n const start = Date.now();\n if (data !== null && \"revalidate\" in data) {\n this.headers[CACHE_REVALIDATE_HEADER] = data.revalidate.toString();\n }\n if (!this.headers[CACHE_REVALIDATE_HEADER] && data !== null && \"data\" in data) {\n this.headers[CACHE_CONTROL_VALUE_HEADER] = data.data.headers[\"cache-control\"];\n }\n const body = JSON.stringify({\n ...data,\n // we send the tags in the header instead\n // of in the body here\n tags: undefined\n });\n if (this.debug) {\n console.log(\"set cache\", key);\n }\n const fetchParams = {\n internal: true,\n fetchType: \"cache-set\",\n fetchUrl,\n fetchIdx\n };\n const res = await fetch(`${this.cacheEndpoint}/v1/suspense-cache/${key}`, {\n method: \"POST\",\n headers: {\n ...this.headers,\n [CACHE_FETCH_URL_HEADER]: fetchUrl || \"\",\n [CACHE_TAGS_HEADER]: (tags == null ? void 0 : tags.join(\",\")) || \"\"\n },\n body: body,\n next: fetchParams\n });\n if (res.status === 429) {\n const retryAfter = res.headers.get(\"retry-after\") || \"60000\";\n rateLimitedUntil = Date.now() + parseInt(retryAfter);\n }\n if (!res.ok) {\n this.debug && console.log(await res.text());\n throw new Error(`invalid response ${res.status}`);\n }\n if (this.debug) {\n console.log(`successfully set to fetch-cache for ${key}, duration: ${Date.now() - start}ms, size: ${body.length}`);\n }\n } catch (err) {\n // unable to set to fetch-cache\n if (this.debug) {\n console.error(`Failed to update fetch cache`, err);\n }\n }\n }\n return;\n }\n} //# sourceMappingURL=fetch-cache.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlL2ZldGNoLWNhY2hlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBb0Q7QUFDaUM7QUFDckYsSUFBSUcsbUJBQW1CO0FBQ3ZCLElBQUlDO0FBQ0osTUFBTUMsb0JBQW9CO0FBQzFCLE1BQU1DLHVCQUF1QjtBQUM3QixNQUFNQyxxQkFBcUI7QUFDM0IsTUFBTUMsMEJBQTBCO0FBQ2hDLE1BQU1DLHlCQUF5QjtBQUMvQixNQUFNQyw2QkFBNkI7QUFDcEIsTUFBTUM7SUFDakIsT0FBT0MsWUFBWUMsR0FBRyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxDQUFFQSxDQUFBQSxJQUFJQyxlQUFlLENBQUMsbUJBQW1CLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0Msa0JBQWtCO0lBQ3ZGO0lBQ0FDLFlBQVlMLEdBQUcsQ0FBQztRQUNaLElBQUksQ0FBQ00sS0FBSyxHQUFHLENBQUMsQ0FBQ0osUUFBUUMsR0FBRyxDQUFDSSx3QkFBd0I7UUFDbkQsSUFBSSxDQUFDQyxPQUFPLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUNBLE9BQU8sQ0FBQyxlQUFlLEdBQUc7UUFDL0IsSUFBSWYsd0JBQXdCTyxJQUFJQyxlQUFlLEVBQUU7WUFDN0MsTUFBTVEsYUFBYUMsS0FBS0MsS0FBSyxDQUFDWCxJQUFJQyxlQUFlLENBQUNSLHFCQUFxQjtZQUN2RSxJQUFJLE1BQU1tQixLQUFLSCxXQUFXO2dCQUN0QixJQUFJLENBQUNELE9BQU8sQ0FBQ0ksRUFBRSxHQUFHSCxVQUFVLENBQUNHLEVBQUU7WUFDbkM7WUFDQSxPQUFPWixJQUFJQyxlQUFlLENBQUNSLHFCQUFxQjtRQUNwRDtRQUNBLE1BQU1vQixTQUFTYixJQUFJQyxlQUFlLENBQUMsbUJBQW1CLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0Msa0JBQWtCO1FBQ3hGLE1BQU1VLGFBQWFkLElBQUlDLGVBQWUsQ0FBQyx1QkFBdUIsSUFBSUMs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bm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZS9mZXRjaC1jYWNoZS5qcz8zZDQzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMUlVDYWNoZSBmcm9tIFwibmV4dC9kaXN0L2NvbXBpbGVkL2xydS1jYWNoZVwiO1xuaW1wb3J0IHsgQ0FDSEVfT05FX1lFQVIsIE5FWFRfQ0FDSEVfU09GVF9UQUdTX0hFQURFUiB9IGZyb20gXCIuLi8uLi8uLi9saWIvY29uc3RhbnRzXCI7XG5sZXQgcmF0ZUxpbWl0ZWRVbnRpbCA9IDA7XG5sZXQgbWVtb3J5Q2FjaGU7XG5jb25zdCBDQUNIRV9UQUdTX0hFQURFUiA9IFwieC12ZXJjZWwtY2FjaGUtdGFnc1wiO1xuY29uc3QgQ0FDSEVfSEVBREVSU19IRUFERVIgPSBcIngtdmVyY2VsLXNjLWhlYWRlcnNcIjtcbmNvbnN0IENBQ0hFX1NUQVRFX0hFQURFUiA9IFwieC12ZXJjZWwtY2FjaGUtc3RhdGVcIjtcbmNvbnN0IENBQ0hFX1JFVkFMSURBVEVfSEVBREVSID0gXCJ4LXZlcmNlbC1yZXZhbGlkYXRlXCI7XG5jb25zdCBDQUNIRV9GRVRDSF9VUkxfSEVBREVSID0gXCJ4LXZlcmNlbC1jYWNoZS1pdGVtLW5hbWVcIjtcbmNvbnN0IENBQ0hFX0NPTlRST0xfVkFMVUVfSEVBREVSID0gXCJ4LXZlcmNlbC1jYWNoZS1jb250cm9sXCI7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZXRjaENhY2hlIHtcbiAgICBzdGF0aWMgaXNBdmFpbGFibGUoY3R4KSB7XG4gICAgICAgIHJldHVybiAhIShjdHguX3JlcXVlc3RIZWFkZXJzW1wieC12ZXJjZWwtc2MtaG9zdFwiXSB8fCBwcm9jZXNzLmVudi5TVVNQRU5TRV9DQUNIRV9VUkwpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihjdHgpe1xuICAgICAgICB0aGlzLmRlYnVnID0gISFwcm9jZXNzLmVudi5ORVhUX1BSSVZBVEVfREVCVUdfQ0FDSEU7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IHt9O1xuICAgICAgICB0aGlzLmhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgICAgaWYgKENBQ0hFX0hFQURFUlNfSEVBREVSIGluIGN0eC5fcmVxdWVzdEhlYWRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0hlYWRlcnMgPSBKU09OLnBhcnNlKGN0eC5fcmVxdWVzdEhlYWRlcnNbQ0FDSEVfSEVBREVSU19IRUFERVJdKTtcbiAgICAgICAgICAgIGZvcihjb25zdCBrIGluIG5ld0hlYWRlcnMpe1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1trXSA9IG5ld0hlYWRlcnNba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgY3R4Ll9yZXF1ZXN0SGVhZGVyc1tDQUNIRV9IRUFERVJTX0hFQURFUl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NIb3N0ID0gY3R4Ll9yZXF1ZXN0SGVhZGVyc1tcIngtdmVyY2VsLXNjLWhvc3RcIl0gfHwgcHJvY2Vzcy5lbnYuU1VTUEVOU0VfQ0FDSEVfVVJMO1xuICAgICAgICBjb25zdCBzY0Jhc2VQYXRoID0gY3R4Ll9yZXF1ZXN0SGVhZGVyc1tcIngtdmVyY2VsLXNjLWJhc2VwYXRoXCJdIHx8IHByb2Nlc3MuZW52LlNVU1BFTlNFX0NBQ0hFX0JBU0VQQVRIO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuU1VTUEVOU0VfQ0FDSEVfQVVUSF9UT0tFTikge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHtwcm9jZXNzLmVudi5TVVNQRU5TRV9DQUNIRV9BVVRIX1RPS0VOfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjSG9zdCkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZUVuZHBvaW50ID0gYGh0dHBzOi8vJHtzY0hvc3R9JHtzY0Jhc2VQYXRoIHx8IFwiXCJ9YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ1c2luZyBjYWNoZSBlbmRwb2ludFwiLCB0aGlzLmNhY2hlRW5kcG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm8gY2FjaGUgZW5kcG9pbnQgYXZhaWxhYmxlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdHgubWF4TWVtb3J5Q2FjaGVTaXplKSB7XG4gICAgICAgICAgICBpZiAoIW1lbW9yeUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ1c2luZyBtZW1vcnkgc3RvcmUgZm9yIGZldGNoIGNhY2hlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZSA9IG5ldyBMUlVDYWNoZSh7XG4gICAgICAgICAgICAgICAgICAgIG1heDogY3R4Lm1heE1lbW9yeUNhY2hlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICh7IHZhbHVlIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfSlNPTl9zdHJpbmdpZnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI1O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5raW5kID09PSBcIlJFRElSRUNUXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUucHJvcHMpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUua2luZCA9PT0gXCJJTUFHRVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YXJpYW50IGltYWdlIHNob3VsZCBub3QgYmUgaW5jcmVtZW50YWwtY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmtpbmQgPT09IFwiRkVUQ0hcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZS5kYXRhIHx8IFwiXCIpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUua2luZCA9PT0gXCJST1VURVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmJvZHkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91Z2ggZXN0aW1hdGUgb2Ygc2l6ZSBvZiBjYWNoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmh0bWwubGVuZ3RoICsgKCgoX0pTT05fc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUucGFnZURhdGEpKSA9PSBudWxsID8gdm9pZCAwIDogX0pTT05fc3RyaW5naWZ5Lmxlbmd0aCkgfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJub3QgdXNpbmcgbWVtb3J5IHN0b3JlIGZvciBmZXRjaCBjYWNoZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXNldFJlcXVlc3RDYWNoZSgpIHtcbiAgICAgICAgbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLnJlc2V0KCk7XG4gICAgfVxuICAgIGFzeW5jIHJldmFsaWRhdGVUYWcodGFnKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInJldmFsaWRhdGVUYWdcIiwgdGFnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRGF0ZS5ub3coKSA8IHJhdGVMaW1pdGVkVW50aWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJyYXRlIGxpbWl0ZWQgXCIsIHJhdGVMaW1pdGVkVW50aWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHt0aGlzLmNhY2hlRW5kcG9pbnR9L3YxL3N1c3BlbnNlLWNhY2hlL3JldmFsaWRhdGU/dGFncz0ke3RhZ31gLCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBub3Qgb24gcHVibGljIHR5cGVcbiAgICAgICAgICAgICAgICBuZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDI5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IHJlcy5oZWFkZXJzLmdldChcInJldHJ5LWFmdGVyXCIpIHx8IFwiNjAwMDBcIjtcbiAgICAgICAgICAgICAgICByYXRlTGltaXRlZFVudGlsID0gRGF0ZS5ub3coKSArIHBhcnNlSW50KHJldHJ5QWZ0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzICR7cmVzLnN0YXR1c30uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gcmV2YWxpZGF0ZSB0YWcgJHt0YWd9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXQoLi4uYXJncykge1xuICAgICAgICBjb25zdCBba2V5LCBjdHggPSB7fV0gPSBhcmdzO1xuICAgICAgICBjb25zdCB7IHRhZ3MsIHNvZnRUYWdzLCBraW5kSGludCwgZmV0Y2hJZHgsIGZldGNoVXJsIH0gPSBjdHg7XG4gICAgICAgIGlmIChraW5kSGludCAhPT0gXCJmZXRjaFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRGF0ZS5ub3coKSA8IHJhdGVMaW1pdGVkVW50aWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJyYXRlIGxpbWl0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBtZW1vcnkgY2FjaGUgaXMgY2xlYXJlZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVxdWVzdFxuICAgICAgICAvLyBzbyB0aGF0IHJldmFsaWRhdGUgZXZlbnRzIGFyZSBwdWxsZWQgZnJvbSB1cHN0cmVhbVxuICAgICAgICAvLyBvbiBzdWNjZXNzaXZlIHJlcXVlc3RzXG4gICAgICAgIGxldCBkYXRhID0gbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLmdldChrZXkpO1xuICAgICAgICAvLyBnZXQgZGF0YSBmcm9tIGZldGNoIGNhY2hlXG4gICAgICAgIGlmICghZGF0YSAmJiB0aGlzLmNhY2hlRW5kcG9pbnQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hUeXBlOiBcImNhY2hlLWdldFwiLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFVybDogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoSWR4XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHt0aGlzLmNhY2hlRW5kcG9pbnR9L3YxL3N1c3BlbnNlLWNhY2hlLyR7a2V5fWAsIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBbQ0FDSEVfRkVUQ0hfVVJMX0hFQURFUl06IGZldGNoVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgW0NBQ0hFX1RBR1NfSEVBREVSXTogKHRhZ3MgPT0gbnVsbCA/IHZvaWQgMCA6IHRhZ3Muam9pbihcIixcIikpIHx8IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBbTkVYVF9DQUNIRV9TT0ZUX1RBR1NfSEVBREVSXTogKHNvZnRUYWdzID09IG51bGwgPyB2b2lkIDAgOiBzb2Z0VGFncy5qb2luKFwiLFwiKSkgfHwgXCJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuZXh0OiBmZXRjaFBhcmFtc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MjkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IHJlcy5oZWFkZXJzLmdldChcInJldHJ5LWFmdGVyXCIpIHx8IFwiNjAwMDBcIjtcbiAgICAgICAgICAgICAgICAgICAgcmF0ZUxpbWl0ZWRVbnRpbCA9IERhdGUubm93KCkgKyBwYXJzZUludChyZXRyeUFmdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYG5vIGZldGNoIGNhY2hlIGVudHJ5IGZvciAke2tleX0sIGR1cmF0aW9uOiAke0RhdGUubm93KCkgLSBzdGFydH1tc2ApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGF3YWl0IHJlcy50ZXh0KCkpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgcmVzcG9uc2UgZnJvbSBjYWNoZSAke3Jlcy5zdGF0dXN9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZWQgfHwgY2FjaGVkLmtpbmQgIT09IFwiRkVUQ0hcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlYnVnICYmIGNvbnNvbGUubG9nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNhY2hlIHZhbHVlYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlU3RhdGUgPSByZXMuaGVhZGVycy5nZXQoQ0FDSEVfU1RBVEVfSEVBREVSKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhZ2UgPSByZXMuaGVhZGVycy5nZXQoXCJhZ2VcIik7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNhY2hlZCxcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgaXQncyBhbHJlYWR5IHN0YWxlIHNldCBpdCB0byBhIHRpbWUgaW4gdGhlIHBhc3RcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IGRlcml2ZSBsYXN0IG1vZGlmaWVkIGZyb20gYWdlXG4gICAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZDogY2FjaGVTdGF0ZSAhPT0gXCJmcmVzaFwiID8gRGF0ZS5ub3coKSAtIENBQ0hFX09ORV9ZRUFSIDogRGF0ZS5ub3coKSAtIHBhcnNlSW50KGFnZSB8fCBcIjBcIiwgMTApICogMTAwMFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGdvdCBmZXRjaCBjYWNoZSBlbnRyeSBmb3IgJHtrZXl9LCBkdXJhdGlvbjogJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMsIHNpemU6ICR7T2JqZWN0LmtleXMoY2FjaGVkKS5sZW5ndGh9LCBjYWNoZS1zdGF0ZTogJHtjYWNoZVN0YXRlfSB0YWdzOiAke3RhZ3MgPT0gbnVsbCA/IHZvaWQgMCA6IHRhZ3Muam9pbihcIixcIil9IHNvZnRUYWdzOiAke3NvZnRUYWdzID09IG51bGwgPyB2b2lkIDAgOiBzb2Z0VGFncy5qb2luKFwiLFwiKX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLnNldChrZXksIGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIHVuYWJsZSB0byBnZXQgZGF0YSBmcm9tIGZldGNoLWNhY2hlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGdldCBmcm9tIGZldGNoLWNhY2hlYCwgZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEgfHwgbnVsbDtcbiAgICB9XG4gICAgYXN5bmMgc2V0KC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgW2tleSwgZGF0YSwgY3R4XSA9IGFyZ3M7XG4gICAgICAgIGNvbnN0IHsgZmV0Y2hDYWNoZSwgZmV0Y2hJZHgsIGZldGNoVXJsLCB0YWdzIH0gPSBjdHg7XG4gICAgICAgIGlmICghZmV0Y2hDYWNoZSkgcmV0dXJuO1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSA8IHJhdGVMaW1pdGVkVW50aWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJyYXRlIGxpbWl0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLnNldChrZXksIHtcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5jYWNoZUVuZHBvaW50KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSAhPT0gbnVsbCAmJiBcInJldmFsaWRhdGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyc1tDQUNIRV9SRVZBTElEQVRFX0hFQURFUl0gPSBkYXRhLnJldmFsaWRhdGUudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhlYWRlcnNbQ0FDSEVfUkVWQUxJREFURV9IRUFERVJdICYmIGRhdGEgIT09IG51bGwgJiYgXCJkYXRhXCIgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlcnNbQ0FDSEVfQ09OVFJPTF9WQUxVRV9IRUFERVJdID0gZGF0YS5kYXRhLmhlYWRlcnNbXCJjYWNoZS1jb250cm9sXCJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzZW5kIHRoZSB0YWdzIGluIHRoZSBoZWFkZXIgaW5zdGVhZFxuICAgICAgICAgICAgICAgICAgICAvLyBvZiBpbiB0aGUgYm9keSBoZXJlXG4gICAgICAgICAgICAgICAgICAgIHRhZ3M6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic2V0IGNhY2hlXCIsIGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hUeXBlOiBcImNhY2hlLXNldFwiLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFVybCxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hJZHhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuY2FjaGVFbmRwb2ludH0vdjEvc3VzcGVuc2UtY2FjaGUvJHtrZXl9YCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBbQ0FDSEVfRkVUQ0hfVVJMX0hFQURFUl06IGZldGNoVXJsIHx8IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBbQ0FDSEVfVEFHU19IRUFERVJdOiAodGFncyA9PSBudWxsID8gdm9pZCAwIDogdGFncy5qb2luKFwiLFwiKSkgfHwgXCJcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgICAgICAgICAgICBuZXh0OiBmZXRjaFBhcmFtc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MjkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IHJlcy5oZWFkZXJzLmdldChcInJldHJ5LWFmdGVyXCIpIHx8IFwiNjAwMDBcIjtcbiAgICAgICAgICAgICAgICAgICAgcmF0ZUxpbWl0ZWRVbnRpbCA9IERhdGUubm93KCkgKyBwYXJzZUludChyZXRyeUFmdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWJ1ZyAmJiBjb25zb2xlLmxvZyhhd2FpdCByZXMudGV4dCgpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHJlc3BvbnNlICR7cmVzLnN0YXR1c31gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHN1Y2Nlc3NmdWxseSBzZXQgdG8gZmV0Y2gtY2FjaGUgZm9yICR7a2V5fSwgZHVyYXRpb246ICR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zLCBzaXplOiAke2JvZHkubGVuZ3RofWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIHVuYWJsZSB0byBzZXQgdG8gZmV0Y2gtY2FjaGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gdXBkYXRlIGZldGNoIGNhY2hlYCwgZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmV0Y2gtY2FjaGUuanMubWFwIl0sIm5hbWVzIjpbIkxSVUNhY2hlIiwiQ0FDSEVfT05FX1lFQVIiLCJORVhUX0NBQ0hFX1NPRlRfVEFHU19IRUFERVIiLCJyYXRlTGltaXRlZFVudGlsIiwibWVtb3J5Q2FjaGUiLCJDQUNIRV9UQUdTX0hFQURFUiIsIkNBQ0hFX0hFQURFUlNfSEVBREVSIiwiQ0FDSEVfU1RBVEVfSEVBREVSIiwiQ0FDSEVfUkVWQUxJREFURV9IRUFERVIiLCJDQUNIRV9GRVRDSF9VUkxfSEVBREVSIiwiQ0FDSEVfQ09OVFJPTF9WQUxVRV9IRUFERVIiLCJGZXRjaENhY2hlIiwiaXNBdmFpbGFibGUiLCJjdHgiLCJfcmVxdWVzdEhlYWRlcnMiLCJwcm9jZXNzIiwiZW52IiwiU1VTUEVOU0VfQ0FDSEVfVVJMIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsIk5FWFRfUFJJVkFURV9ERUJVR19DQUNIRSIsImhlYWRlcnMiLCJuZXdIZWFkZXJzIiwiSlNPTiIsInBhcnNlIiwiayIsInNjSG9zdCIsInNjQmFzZVBhdGgiLCJTVVNQRU5TRV9DQUNIRV9CQVNFUEFUSCIsIlNVU1BFTlNFX0NBQ0hFX0FVVEhfVE9LRU4iLCJjYWNoZUVuZHBvaW50IiwiY29uc29sZSIsImxvZyIsIm1heE1lbW9yeUNhY2hlU2l6ZSIsIm1heCIsImxlbmd0aCIsInZhbHVlIiwiX0pTT05fc3RyaW5naWZ5Iiwia2luZCIsInN0cmluZ2lmeSIsInByb3BzIiwiRXJyb3IiLCJkYXRhIiwiYm9keSIsImh0bWwiLCJwYWdlRGF0YSIsInJlc2V0UmVxdWVzdENhY2hlIiwicmVzZXQiLCJyZXZhbGlkYXRlVGFnIiwidGFnIiwiRGF0ZSIsIm5vdyIsInJlcyIsImZldGNoIiwibWV0aG9kIiwibmV4dCIsImludGVybmFsIiwic3RhdHVzIiwicmV0cnlBZnRlciIsImdldCIsInBhcnNlSW50Iiwib2siLCJlcnIiLCJ3YXJuIiwiYXJncyIsImtleSIsInRhZ3MiLCJzb2Z0VGFncyIsImtpbmRIaW50IiwiZmV0Y2hJZHgiLCJmZXRjaFVybCIsInN0YXJ0IiwiZmV0Y2hQYXJhbXMiLCJmZXRjaFR5cGUiLCJqb2luIiwiZXJyb3IiLCJ0ZXh0IiwiY2FjaGVkIiwianNvbiIsImNhY2hlU3RhdGUiLCJhZ2UiLCJsYXN0TW9kaWZpZWQiLCJPYmplY3QiLCJrZXlzIiwic2V0IiwiZmV0Y2hDYWNoZSIsInJldmFsaWRhdGUiLCJ0b1N0cmluZyIsInVuZGVmaW5lZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/fetch-cache.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/file-system-cache.js":
/*!**************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/incremental-cache/file-system-cache.js ***!
\**************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FileSystemCache)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/lru-cache */ \"(rsc)/./node_modules/next/dist/compiled/lru-cache/index.js\");\n/* harmony import */ var next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../shared/lib/isomorphic/path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/isomorphic/path.js\");\n/* harmony import */ var _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n\n\n\nlet memoryCache;\nlet tagsManifest;\nclass FileSystemCache {\n constructor(ctx){\n this.fs = ctx.fs;\n this.flushToDisk = ctx.flushToDisk;\n this.serverDistDir = ctx.serverDistDir;\n this.appDir = !!ctx._appDir;\n this.pagesDir = !!ctx._pagesDir;\n this.revalidatedTags = ctx.revalidatedTags;\n this.experimental = ctx.experimental;\n this.debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE;\n if (ctx.maxMemoryCacheSize && !memoryCache) {\n if (this.debug) {\n console.log(\"using memory store for fetch cache\");\n }\n memoryCache = new (next_dist_compiled_lru_cache__WEBPACK_IMPORTED_MODULE_0___default())({\n max: ctx.maxMemoryCacheSize,\n length ({ value }) {\n var _JSON_stringify;\n if (!value) {\n return 25;\n } else if (value.kind === \"REDIRECT\") {\n return JSON.stringify(value.props).length;\n } else if (value.kind === \"IMAGE\") {\n throw new Error(\"invariant image should not be incremental-cache\");\n } else if (value.kind === \"FETCH\") {\n return JSON.stringify(value.data || \"\").length;\n } else if (value.kind === \"ROUTE\") {\n return value.body.length;\n }\n // rough estimate of size of cache value\n return value.html.length + (((_JSON_stringify = JSON.stringify(value.pageData)) == null ? void 0 : _JSON_stringify.length) || 0);\n }\n });\n } else if (this.debug) {\n console.log(\"not using memory store for fetch cache\");\n }\n if (this.serverDistDir && this.fs) {\n this.tagsManifestPath = _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().join(this.serverDistDir, \"..\", \"cache\", \"fetch-cache\", \"tags-manifest.json\");\n this.loadTagsManifest();\n }\n }\n resetRequestCache() {}\n loadTagsManifest() {\n if (!this.tagsManifestPath || !this.fs || tagsManifest) return;\n try {\n tagsManifest = JSON.parse(this.fs.readFileSync(this.tagsManifestPath, \"utf8\"));\n } catch (err) {\n tagsManifest = {\n version: 1,\n items: {}\n };\n }\n if (this.debug) console.log(\"loadTagsManifest\", tagsManifest);\n }\n async revalidateTag(tag) {\n if (this.debug) {\n console.log(\"revalidateTag\", tag);\n }\n // we need to ensure the tagsManifest is refreshed\n // since separate workers can be updating it at the same\n // time and we can't flush out of sync data\n this.loadTagsManifest();\n if (!tagsManifest || !this.tagsManifestPath) {\n return;\n }\n const data = tagsManifest.items[tag] || {};\n data.revalidatedAt = Date.now();\n tagsManifest.items[tag] = data;\n try {\n await this.fs.mkdir(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(this.tagsManifestPath));\n await this.fs.writeFile(this.tagsManifestPath, JSON.stringify(tagsManifest || {}));\n if (this.debug) {\n console.log(\"Updated tags manifest\", tagsManifest);\n }\n } catch (err) {\n console.warn(\"Failed to update tags manifest.\", err);\n }\n }\n async get(...args) {\n var _data_value, _data_value1;\n const [key, ctx = {}] = args;\n const { tags, softTags, kindHint } = ctx;\n let data = memoryCache == null ? void 0 : memoryCache.get(key);\n if (this.debug) {\n console.log(\"get\", key, tags, kindHint, !!data);\n }\n // let's check the disk for seed data\n if (!data && \"edge\" !== \"edge\") { var _data_value3, _data_value2; }\n if ((data == null ? void 0 : (_data_value = data.value) == null ? void 0 : _data_value.kind) === \"PAGE\") {\n var _data_value_headers;\n let cacheTags;\n const tagsHeader = (_data_value_headers = data.value.headers) == null ? void 0 : _data_value_headers[_lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_CACHE_TAGS_HEADER];\n if (typeof tagsHeader === \"string\") {\n cacheTags = tagsHeader.split(\",\");\n }\n if (cacheTags == null ? void 0 : cacheTags.length) {\n this.loadTagsManifest();\n const isStale = cacheTags.some((tag)=>{\n var _tagsManifest_items_tag;\n return (tagsManifest == null ? void 0 : (_tagsManifest_items_tag = tagsManifest.items[tag]) == null ? void 0 : _tagsManifest_items_tag.revalidatedAt) && (tagsManifest == null ? void 0 : tagsManifest.items[tag].revalidatedAt) >= ((data == null ? void 0 : data.lastModified) || Date.now());\n });\n // we trigger a blocking validation if an ISR page\n // had a tag revalidated, if we want to be a background\n // revalidation instead we return data.lastModified = -1\n if (isStale) {\n data = undefined;\n }\n }\n }\n if (data && (data == null ? void 0 : (_data_value1 = data.value) == null ? void 0 : _data_value1.kind) === \"FETCH\") {\n this.loadTagsManifest();\n const combinedTags = [\n ...tags || [],\n ...softTags || []\n ];\n const wasRevalidated = combinedTags.some((tag)=>{\n var _tagsManifest_items_tag;\n if (this.revalidatedTags.includes(tag)) {\n return true;\n }\n return (tagsManifest == null ? void 0 : (_tagsManifest_items_tag = tagsManifest.items[tag]) == null ? void 0 : _tagsManifest_items_tag.revalidatedAt) && (tagsManifest == null ? void 0 : tagsManifest.items[tag].revalidatedAt) >= ((data == null ? void 0 : data.lastModified) || Date.now());\n });\n // When revalidate tag is called we don't return\n // stale data so it's updated right away\n if (wasRevalidated) {\n data = undefined;\n }\n }\n return data ?? null;\n }\n async set(...args) {\n const [key, data, ctx] = args;\n memoryCache == null ? void 0 : memoryCache.set(key, {\n value: data,\n lastModified: Date.now()\n });\n if (this.debug) {\n console.log(\"set\", key);\n }\n if (!this.flushToDisk) return;\n if ((data == null ? void 0 : data.kind) === \"ROUTE\") {\n const filePath = this.getFilePath(`${key}.body`, \"app\");\n await this.fs.mkdir(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(filePath));\n await this.fs.writeFile(filePath, data.body);\n const meta = {\n headers: data.headers,\n status: data.status,\n postponed: undefined\n };\n await this.fs.writeFile(filePath.replace(/\\.body$/, _lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_META_SUFFIX), JSON.stringify(meta, null, 2));\n return;\n }\n if ((data == null ? void 0 : data.kind) === \"PAGE\") {\n const isAppPath = typeof data.pageData === \"string\";\n const htmlPath = this.getFilePath(`${key}.html`, isAppPath ? \"app\" : \"pages\");\n await this.fs.mkdir(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(htmlPath));\n await this.fs.writeFile(htmlPath, data.html);\n await this.fs.writeFile(this.getFilePath(`${key}${isAppPath ? this.experimental.ppr ? _lib_constants__WEBPACK_IMPORTED_MODULE_2__.RSC_PREFETCH_SUFFIX : _lib_constants__WEBPACK_IMPORTED_MODULE_2__.RSC_SUFFIX : _lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_DATA_SUFFIX}`, isAppPath ? \"app\" : \"pages\"), isAppPath ? data.pageData : JSON.stringify(data.pageData));\n if (data.headers || data.status) {\n const meta = {\n headers: data.headers,\n status: data.status,\n postponed: data.postponed\n };\n await this.fs.writeFile(htmlPath.replace(/\\.html$/, _lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_META_SUFFIX), JSON.stringify(meta));\n }\n } else if ((data == null ? void 0 : data.kind) === \"FETCH\") {\n const filePath = this.getFilePath(key, \"fetch\");\n await this.fs.mkdir(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(filePath));\n await this.fs.writeFile(filePath, JSON.stringify({\n ...data,\n tags: ctx.tags\n }));\n }\n }\n detectFileKind(pathname) {\n if (!this.appDir && !this.pagesDir) {\n throw new Error(\"Invariant: Can't determine file path kind, no page directory enabled\");\n }\n // If app directory isn't enabled, then assume it's pages and avoid the fs\n // hit.\n if (!this.appDir && this.pagesDir) {\n return \"pages\";\n } else if (this.appDir && !this.pagesDir) {\n return \"app\";\n }\n // If both are enabled, we need to test each in order, starting with\n // `pages`.\n let filePath = this.getFilePath(pathname, \"pages\");\n if (this.fs.existsSync(filePath)) {\n return \"pages\";\n }\n filePath = this.getFilePath(pathname, \"app\");\n if (this.fs.existsSync(filePath)) {\n return \"app\";\n }\n throw new Error(`Invariant: Unable to determine file path kind for ${pathname}`);\n }\n getFilePath(pathname, kind) {\n switch(kind){\n case \"fetch\":\n // we store in .next/cache/fetch-cache so it can be persisted\n // across deploys\n return _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().join(this.serverDistDir, \"..\", \"cache\", \"fetch-cache\", pathname);\n case \"pages\":\n return _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().join(this.serverDistDir, \"pages\", pathname);\n case \"app\":\n return _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_1___default().join(this.serverDistDir, \"app\", pathname);\n default:\n throw new Error(\"Invariant: Can't determine file path kind\");\n }\n }\n} //# sourceMappingURL=file-system-cache.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlL2ZpbGUtc3lzdGVtLWNhY2hlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFvRDtBQUNHO0FBQzhFO0FBQ3JJLElBQUlPO0FBQ0osSUFBSUM7QUFDVyxNQUFNQztJQUNqQkMsWUFBWUMsR0FBRyxDQUFDO1FBQ1osSUFBSSxDQUFDQyxFQUFFLEdBQUdELElBQUlDLEVBQUU7UUFDaEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdGLElBQUlFLFdBQVc7UUFDbEMsSUFBSSxDQUFDQyxhQUFhLEdBQUdILElBQUlHLGFBQWE7UUFDdEMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDSixJQUFJSyxPQUFPO1FBQzNCLElBQUksQ0FBQ0MsUUFBUSxHQUFHLENBQUMsQ0FBQ04sSUFBSU8sU0FBUztRQUMvQixJQUFJLENBQUNDLGVBQWUsR0FBR1IsSUFBSVEsZUFBZTtRQUMxQyxJQUFJLENBQUNDLFlBQVksR0FBR1QsSUFBSVMsWUFBWTtRQUNwQyxJQUFJLENBQUNDLEtBQUssR0FBRyxDQUFDLENBQUNDLFFBQVFDLEdBQUcsQ0FBQ0Msd0JBQXdCO1FBQ25ELElBQUliLElBQUljLGtCQUFrQixJQUFJLENBQUNsQixhQUFhO1lBQ3hDLElBQUksSUFBSSxDQUFDYyxLQUFLLEVBQUU7Z0JBQ1pLLFFBQVFDLEdBQUcsQ0FBQztZQUNoQjtZQUNBcEIsY0FBYyxJQUFJUCxxRUFBUUEsQ0FBQztnQkFDdkI0QixLQUFLakIsSUFBSWMsa0JBQWtCO2dCQUMzQkksUUFBUSxFQUFFQyxLQUFLLEVBQUU7b0JBQ2IsSUFBSUM7b0JBQ0osSUFBSSxDQUFDRCxPQUFPO3dCQUNSLE9BQU87b0JBQ1gsT0FBTyxJQUFJQSxNQUFNRSxJQUFJLEtBQUssWUFBWTt3QkFDbEMsT0FBT0MsS0FBS0MsU0FBUyxDQUFDSixNQUFNSyxLQUFLLEVBQUVOLE1BQU07b0JBQzdDLE9BQU8sSUFBSUMs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LE1BQU07UUFDcEI7UUFDQSwwRUFBMEU7UUFDMUUsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUNyQixNQUFNLElBQUksSUFBSSxDQUFDRSxRQUFRLEVBQUU7WUFDL0IsT0FBTztRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUNGLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQ0UsUUFBUSxFQUFFO1lBQ3RDLE9BQU87UUFDWDtRQUNBLG9FQUFvRTtRQUNwRSxXQUFXO1FBQ1gsSUFBSW1ELFdBQVcsSUFBSSxDQUFDQyxXQUFXLENBQUNtQyxVQUFVO1FBQzFDLElBQUksSUFBSSxDQUFDNUYsRUFBRSxDQUFDNkYsVUFBVSxDQUFDckMsV0FBVztZQUM5QixPQUFPO1FBQ1g7UUFDQUEsV0FBVyxJQUFJLENBQUNDLFdBQVcsQ0FBQ21DLFVBQVU7UUFDdEMsSUFBSSxJQUFJLENBQUM1RixFQUFFLENBQUM2RixVQUFVLENBQUNyQyxXQUFXO1lBQzlCLE9BQU87UUFDWDtRQUNBLE1BQU0sSUFBSWhDLE1BQU0sQ0FBQyxrREFBa0QsRUFBRW9FLFNBQVMsQ0FBQztJQUNuRjtJQUNBbkMsWUFBWW1DLFFBQVEsRUFBRXhFLElBQUksRUFBRTtRQUN4QixPQUFPQTtZQUNILEtBQUs7Z0JBQ0QsNkRBQTZEO2dCQUM3RCxpQkFBaUI7Z0JBQ2pCLE9BQU8vQix1RUFBUyxDQUFDLElBQUksQ0FBQ2EsYUFBYSxFQUFFLE1BQU0sU0FBUyxlQUFlMEY7WUFDdkUsS0FBSztnQkFDRCxPQUFPdkcsdUVBQVMsQ0FBQyxJQUFJLENBQUNhLGFBQWEsRUFBRSxTQUFTMEY7WUFDbEQsS0FBSztnQkFDRCxPQUFPdkcsdUVBQVMsQ0FBQyxJQUFJLENBQUNhLGFBQWEsRUFBRSxPQUFPMEY7WUFDaEQ7Z0JBQ0ksTUFBTSxJQUFJcEUsTUFBTTtRQUN4QjtJQUNKO0FBQ0osRUFFQSw2Q0FBNkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZS9maWxlLXN5c3RlbS1jYWNoZS5qcz9jYjIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMUlVDYWNoZSBmcm9tIFwibmV4dC9kaXN0L2NvbXBpbGVkL2xydS1jYWNoZVwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9saWIvaXNvbW9ycGhpYy9wYXRoXCI7XG5pbXBvcnQgeyBORVhUX0NBQ0hFX1RBR1NfSEVBREVSLCBORVhUX0RBVEFfU1VGRklYLCBORVhUX01FVEFfU1VGRklYLCBSU0NfUFJFRkVUQ0hfU1VGRklYLCBSU0NfU1VGRklYIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9jb25zdGFudHNcIjtcbmxldCBtZW1vcnlDYWNoZTtcbmxldCB0YWdzTWFuaWZlc3Q7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlU3lzdGVtQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yKGN0eCl7XG4gICAgICAgIHRoaXMuZnMgPSBjdHguZnM7XG4gICAgICAgIHRoaXMuZmx1c2hUb0Rpc2sgPSBjdHguZmx1c2hUb0Rpc2s7XG4gICAgICAgIHRoaXMuc2VydmVyRGlzdERpciA9IGN0eC5zZXJ2ZXJEaXN0RGlyO1xuICAgICAgICB0aGlzLmFwcERpciA9ICEhY3R4Ll9hcHBEaXI7XG4gICAgICAgIHRoaXMucGFnZXNEaXIgPSAhIWN0eC5fcGFnZXNEaXI7XG4gICAgICAgIHRoaXMucmV2YWxpZGF0ZWRUYWdzID0gY3R4LnJldmFsaWRhdGVkVGFncztcbiAgICAgICAgdGhpcy5leHBlcmltZW50YWwgPSBjdHguZXhwZXJpbWVudGFsO1xuICAgICAgICB0aGlzLmRlYnVnID0gISFwcm9jZXNzLmVudi5ORVhUX1BSSVZBVEVfREVCVUdfQ0FDSEU7XG4gICAgICAgIGlmIChjdHgubWF4TWVtb3J5Q2FjaGVTaXplICYmICFtZW1vcnlDYWNoZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInVzaW5nIG1lbW9yeSBzdG9yZSBmb3IgZmV0Y2ggY2FjaGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZW1vcnlDYWNoZSA9IG5ldyBMUlVDYWNoZSh7XG4gICAgICAgICAgICAgICAgbWF4OiBjdHgubWF4TWVtb3J5Q2FjaGVTaXplLFxuICAgICAgICAgICAgICAgIGxlbmd0aCAoeyB2YWx1ZSB9KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfSlNPTl9zdHJpbmdpZnk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5raW5kID09PSBcIlJFRElSRUNUXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZS5wcm9wcykubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmtpbmQgPT09IFwiSU1BR0VcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YXJpYW50IGltYWdlIHNob3VsZCBub3QgYmUgaW5jcmVtZW50YWwtY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUua2luZCA9PT0gXCJGRVRDSFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUuZGF0YSB8fCBcIlwiKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUua2luZCA9PT0gXCJST1VURVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuYm9keS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gcm91Z2ggZXN0aW1hdGUgb2Ygc2l6ZSBvZiBjYWNoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaHRtbC5sZW5ndGggKyAoKChfSlNPTl9zdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZS5wYWdlRGF0YSkpID09IG51bGwgPyB2b2lkIDAgOiBfSlNPTl9zdHJpbmdpZnkubGVuZ3RoKSB8fCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vdCB1c2luZyBtZW1vcnkgc3RvcmUgZm9yIGZldGNoIGNhY2hlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlcnZlckRpc3REaXIgJiYgdGhpcy5mcykge1xuICAgICAgICAgICAgdGhpcy50YWdzTWFuaWZlc3RQYXRoID0gcGF0aC5qb2luKHRoaXMuc2VydmVyRGlzdERpciwgXCIuLlwiLCBcImNhY2hlXCIsIFwiZmV0Y2gtY2FjaGVcIiwgXCJ0YWdzLW1hbmlmZXN0Lmpzb25cIik7XG4gICAgICAgICAgICB0aGlzLmxvYWRUYWdzTWFuaWZlc3QoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXNldFJlcXVlc3RDYWNoZSgpIHt9XG4gICAgbG9hZFRhZ3NNYW5pZmVzdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhZ3NNYW5pZmVzdFBhdGggfHwgIXRoaXMuZnMgfHwgdGFnc01hbmlmZXN0KSByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0YWdzTWFuaWZlc3QgPSBKU09OLnBhcnNlKHRoaXMuZnMucmVhZEZpbGVTeW5jKHRoaXMudGFnc01hbmlmZXN0UGF0aCwgXCJ1dGY4XCIpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0YWdzTWFuaWZlc3QgPSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgICAgICAgICBpdGVtczoge31cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUubG9nKFwibG9hZFRhZ3NNYW5pZmVzdFwiLCB0YWdzTWFuaWZlc3QpO1xuICAgIH1cbiAgICBhc3luYyByZXZhbGlkYXRlVGFnKHRhZykge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJyZXZhbGlkYXRlVGFnXCIsIHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UgbmVlZCB0byBlbnN1cmUgdGhlIHRhZ3NNYW5pZmVzdCBpcyByZWZyZXNoZWRcbiAgICAgICAgLy8gc2luY2Ugc2VwYXJhdGUgd29ya2VycyBjYW4gYmUgdXBkYXRpbmcgaXQgYXQgdGhlIHNhbWVcbiAgICAgICAgLy8gdGltZSBhbmQgd2UgY2FuJ3QgZmx1c2ggb3V0IG9mIHN5bmMgZGF0YVxuICAgICAgICB0aGlzLmxvYWRUYWdzTWFuaWZlc3QoKTtcbiAgICAgICAgaWYgKCF0YWdzTWFuaWZlc3QgfHwgIXRoaXMudGFnc01hbmlmZXN0UGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0YWdzTWFuaWZlc3QuaXRlbXNbdGFnXSB8fCB7fTtcbiAgICAgICAgZGF0YS5yZXZhbGlkYXRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGFnc01hbmlmZXN0Lml0ZW1zW3RhZ10gPSBkYXRhO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5mcy5ta2RpcihwYXRoLmRpcm5hbWUodGhpcy50YWdzTWFuaWZlc3RQYXRoKSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZzLndyaXRlRmlsZSh0aGlzLnRhZ3NNYW5pZmVzdFBhdGgsIEpTT04uc3RyaW5naWZ5KHRhZ3NNYW5pZmVzdCB8fCB7fSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVwZGF0ZWQgdGFncyBtYW5pZmVzdFwiLCB0YWdzTWFuaWZlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byB1cGRhdGUgdGFncyBtYW5pZmVzdC5cIiwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXQoLi4uYXJncykge1xuICAgICAgICB2YXIgX2RhdGFfdmFsdWUsIF9kYXRhX3ZhbHVlMTtcbiAgICAgICAgY29uc3QgW2tleSwgY3R4ID0ge31dID0gYXJncztcbiAgICAgICAgY29uc3QgeyB0YWdzLCBzb2Z0VGFncywga2luZEhpbnQgfSA9IGN0eDtcbiAgICAgICAgbGV0IGRhdGEgPSBtZW1vcnlDYWNoZSA9PSBudWxsID8gdm9pZCAwIDogbWVtb3J5Q2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImdldFwiLCBrZXksIHRhZ3MsIGtpbmRIaW50LCAhIWRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGxldCdzIGNoZWNrIHRoZSBkaXNrIGZvciBzZWVkIGRhdGFcbiAgICAgICAgaWYgKCFkYXRhICYmIHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gXCJlZGdlXCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKGAke2tleX0uYm9keWAsIFwiYXBwXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhID0gYXdhaXQgdGhpcy5mcy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBtdGltZSB9ID0gYXdhaXQgdGhpcy5mcy5zdGF0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gSlNPTi5wYXJzZShhd2FpdCB0aGlzLmZzLnJlYWRGaWxlKGZpbGVQYXRoLnJlcGxhY2UoL1xcLmJvZHkkLywgTkVYVF9NRVRBX1NVRkZJWCksIFwidXRmOFwiKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBtdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBcIlJPVVRFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBmaWxlRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG1ldGEuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogbWV0YS5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlRW50cnk7XG4gICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAvLyBubyAubWV0YSBkYXRhIGZvciB0aGUgcmVsYXRlZCBrZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBmaWxlIGtpbmQgaWYgd2UgZGlkbid0IGtub3cgaXQgYWxyZWFkeS5cbiAgICAgICAgICAgICAgICBsZXQga2luZCA9IGtpbmRIaW50O1xuICAgICAgICAgICAgICAgIGlmICgha2luZCkge1xuICAgICAgICAgICAgICAgICAgICBraW5kID0gdGhpcy5kZXRlY3RGaWxlS2luZChgJHtrZXl9Lmh0bWxgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaXNBcHBQYXRoID0ga2luZCA9PT0gXCJhcHBcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoa2luZCA9PT0gXCJmZXRjaFwiID8ga2V5IDogYCR7a2V5fS5odG1sYCwga2luZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZURhdGEgPSBhd2FpdCB0aGlzLmZzLnJlYWRGaWxlKGZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBtdGltZSB9ID0gYXdhaXQgdGhpcy5mcy5zdGF0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmZXRjaFwiICYmIHRoaXMuZmx1c2hUb0Rpc2spIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kYXRhX3ZhbHVlMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdE1vZGlmaWVkID0gbXRpbWUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShmaWxlRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VkRGF0YVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoKChfZGF0YV92YWx1ZTIgPSBkYXRhLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2RhdGFfdmFsdWUyLmtpbmQpID09PSBcIkZFVENIXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZGF0YV92YWx1ZTM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZWRUYWdzID0gKF9kYXRhX3ZhbHVlMyA9IGRhdGEudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YV92YWx1ZTMudGFncztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBzdG9yZWQgdGFncyBpZiBhIG5ldyBvbmUgaXMgYmVpbmcgYWRkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHdoZW4gd2UgY2FuIHNlbmQgdGhlIHRhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpYSBoZWFkZXIgb24gR0VUIHNhbWUgYXMgU0VUXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISh0YWdzID09IG51bGwgPyB2b2lkIDAgOiB0YWdzLmV2ZXJ5KCh0YWcpPT5zdG9yZWRUYWdzID09IG51bGwgPyB2b2lkIDAgOiBzdG9yZWRUYWdzLmluY2x1ZGVzKHRhZykpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGFncyB2cyBzdG9yZWRUYWdzIG1pc21hdGNoXCIsIHRhZ3MsIHN0b3JlZFRhZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNldChrZXksIGRhdGEudmFsdWUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZURhdGEgPSBpc0FwcFBhdGggPyBhd2FpdCB0aGlzLmZzLnJlYWRGaWxlKHRoaXMuZ2V0RmlsZVBhdGgoYCR7a2V5fSR7dGhpcy5leHBlcmltZW50YWwucHByID8gUlNDX1BSRUZFVENIX1NVRkZJWCA6IFJTQ19TVUZGSVh9YCwgXCJhcHBcIiksIFwidXRmOFwiKSA6IEpTT04ucGFyc2UoYXdhaXQgdGhpcy5mcy5yZWFkRmlsZSh0aGlzLmdldEZpbGVQYXRoKGAke2tleX0ke05FWFRfREFUQV9TVUZGSVh9YCwgXCJwYWdlc1wiKSwgXCJ1dGY4XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcFBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YSA9IEpTT04ucGFyc2UoYXdhaXQgdGhpcy5mcy5yZWFkRmlsZShmaWxlUGF0aC5yZXBsYWNlKC9cXC5odG1sJC8sIE5FWFRfTUVUQV9TVUZGSVgpLCBcInV0ZjhcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAge31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBtdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IFwiUEFHRVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IGZpbGVEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogbWV0YSA9PSBudWxsID8gdm9pZCAwIDogbWV0YS5wb3N0cG9uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbWV0YSA9PSBudWxsID8gdm9pZCAwIDogbWV0YS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogbWV0YSA9PSBudWxsID8gdm9pZCAwIDogbWV0YS5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLnNldChrZXksIGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIC8vIHVuYWJsZSB0byBnZXQgZGF0YSBmcm9tIGRpc2tcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChfZGF0YV92YWx1ZSA9IGRhdGEudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfZGF0YV92YWx1ZS5raW5kKSA9PT0gXCJQQUdFXCIpIHtcbiAgICAgICAgICAgIHZhciBfZGF0YV92YWx1ZV9oZWFkZXJzO1xuICAgICAgICAgICAgbGV0IGNhY2hlVGFncztcbiAgICAgICAgICAgIGNvbnN0IHRhZ3NIZWFkZXIgPSAoX2RhdGFfdmFsdWVfaGVhZGVycyA9IGRhdGEudmFsdWUuaGVhZGVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhX3ZhbHVlX2hlYWRlcnNbTkVYVF9DQUNIRV9UQUdTX0hFQURFUl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRhZ3NIZWFkZXIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjYWNoZVRhZ3MgPSB0YWdzSGVhZGVyLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjYWNoZVRhZ3MgPT0gbnVsbCA/IHZvaWQgMCA6IGNhY2hlVGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRUYWdzTWFuaWZlc3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0YWxlID0gY2FjaGVUYWdzLnNvbWUoKHRhZyk9PntcbiAgICAgICAgICAgICAgICAgICAgdmFyIF90YWdzTWFuaWZlc3RfaXRlbXNfdGFnO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRhZ3NNYW5pZmVzdCA9PSBudWxsID8gdm9pZCAwIDogKF90YWdzTWFuaWZlc3RfaXRlbXNfdGFnID0gdGFnc01hbmlmZXN0Lml0ZW1zW3RhZ10pID09IG51bGwgPyB2b2lkIDAgOiBfdGFnc01hbmlmZXN0X2l0ZW1zX3RhZy5yZXZhbGlkYXRlZEF0KSAmJiAodGFnc01hbmlmZXN0ID09IG51bGwgPyB2b2lkIDAgOiB0YWdzTWFuaWZlc3QuaXRlbXNbdGFnXS5yZXZhbGlkYXRlZEF0KSA+PSAoKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IGRhdGEubGFzdE1vZGlmaWVkKSB8fCBEYXRlLm5vdygpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB3ZSB0cmlnZ2VyIGEgYmxvY2tpbmcgdmFsaWRhdGlvbiBpZiBhbiBJU1IgcGFnZVxuICAgICAgICAgICAgICAgIC8vIGhhZCBhIHRhZyByZXZhbGlkYXRlZCwgaWYgd2Ugd2FudCB0byBiZSBhIGJhY2tncm91bmRcbiAgICAgICAgICAgICAgICAvLyByZXZhbGlkYXRpb24gaW5zdGVhZCB3ZSByZXR1cm4gZGF0YS5sYXN0TW9kaWZpZWQgPSAtMVxuICAgICAgICAgICAgICAgIGlmIChpc1N0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhICYmIChkYXRhID09IG51bGwgPyB2b2lkIDAgOiAoX2RhdGFfdmFsdWUxID0gZGF0YS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kYXRhX3ZhbHVlMS5raW5kKSA9PT0gXCJGRVRDSFwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRUYWdzTWFuaWZlc3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbWJpbmVkVGFncyA9IFtcbiAgICAgICAgICAgICAgICAuLi50YWdzIHx8IFtdLFxuICAgICAgICAgICAgICAgIC4uLnNvZnRUYWdzIHx8IFtdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3Qgd2FzUmV2YWxpZGF0ZWQgPSBjb21iaW5lZFRhZ3Muc29tZSgodGFnKT0+e1xuICAgICAgICAgICAgICAgIHZhciBfdGFnc01hbmlmZXN0X2l0ZW1zX3RhZztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXZhbGlkYXRlZFRhZ3MuaW5jbHVkZXModGFnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0YWdzTWFuaWZlc3QgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGFnc01hbmlmZXN0X2l0ZW1zX3RhZyA9IHRhZ3NNYW5pZmVzdC5pdGVtc1t0YWddKSA9PSBudWxsID8gdm9pZCAwIDogX3RhZ3NNYW5pZmVzdF9pdGVtc190YWcucmV2YWxpZGF0ZWRBdCkgJiYgKHRhZ3NNYW5pZmVzdCA9PSBudWxsID8gdm9pZCAwIDogdGFnc01hbmlmZXN0Lml0ZW1zW3RhZ10ucmV2YWxpZGF0ZWRBdCkgPj0gKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmxhc3RNb2RpZmllZCkgfHwgRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFdoZW4gcmV2YWxpZGF0ZSB0YWcgaXMgY2FsbGVkIHdlIGRvbid0IHJldHVyblxuICAgICAgICAgICAgLy8gc3RhbGUgZGF0YSBzbyBpdCdzIHVwZGF0ZWQgcmlnaHQgYXdheVxuICAgICAgICAgICAgaWYgKHdhc1JldmFsaWRhdGVkKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YSA/PyBudWxsO1xuICAgIH1cbiAgICBhc3luYyBzZXQoLi4uYXJncykge1xuICAgICAgICBjb25zdCBba2V5LCBkYXRhLCBjdHhdID0gYXJncztcbiAgICAgICAgbWVtb3J5Q2FjaGUgPT0gbnVsbCA/IHZvaWQgMCA6IG1lbW9yeUNhY2hlLnNldChrZXksIHtcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzZXRcIiwga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZmx1c2hUb0Rpc2spIHJldHVybjtcbiAgICAgICAgaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmtpbmQpID09PSBcIlJPVVRFXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aChgJHtrZXl9LmJvZHlgLCBcImFwcFwiKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZnMubWtkaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZzLndyaXRlRmlsZShmaWxlUGF0aCwgZGF0YS5ib2R5KTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogZGF0YS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgcG9zdHBvbmVkOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZzLndyaXRlRmlsZShmaWxlUGF0aC5yZXBsYWNlKC9cXC5ib2R5JC8sIE5FWFRfTUVUQV9TVUZGSVgpLCBKU09OLnN0cmluZ2lmeShtZXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLmtpbmQpID09PSBcIlBBR0VcIikge1xuICAgICAgICAgICAgY29uc3QgaXNBcHBQYXRoID0gdHlwZW9mIGRhdGEucGFnZURhdGEgPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgICBjb25zdCBodG1sUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoYCR7a2V5fS5odG1sYCwgaXNBcHBQYXRoID8gXCJhcHBcIiA6IFwicGFnZXNcIik7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZzLm1rZGlyKHBhdGguZGlybmFtZShodG1sUGF0aCkpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5mcy53cml0ZUZpbGUoaHRtbFBhdGgsIGRhdGEuaHRtbCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZzLndyaXRlRmlsZSh0aGlzLmdldEZpbGVQYXRoKGAke2tleX0ke2lzQXBwUGF0aCA/IHRoaXMuZXhwZXJpbWVudGFsLnBwciA/IFJTQ19QUkVGRVRDSF9TVUZGSVggOiBSU0NfU1VGRklYIDogTkVYVF9EQVRBX1NVRkZJWH1gLCBpc0FwcFBhdGggPyBcImFwcFwiIDogXCJwYWdlc1wiKSwgaXNBcHBQYXRoID8gZGF0YS5wYWdlRGF0YSA6IEpTT04uc3RyaW5naWZ5KGRhdGEucGFnZURhdGEpKTtcbiAgICAgICAgICAgIGlmIChkYXRhLmhlYWRlcnMgfHwgZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBkYXRhLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogZGF0YS5wb3N0cG9uZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZnMud3JpdGVGaWxlKGh0bWxQYXRoLnJlcGxhY2UoL1xcLmh0bWwkLywgTkVYVF9NRVRBX1NVRkZJWCksIEpTT04uc3RyaW5naWZ5KG1ldGEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5raW5kKSA9PT0gXCJGRVRDSFwiKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoa2V5LCBcImZldGNoXCIpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5mcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZnMud3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICB0YWdzOiBjdHgudGFnc1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRldGVjdEZpbGVLaW5kKHBhdGhuYW1lKSB7XG4gICAgICAgIGlmICghdGhpcy5hcHBEaXIgJiYgIXRoaXMucGFnZXNEaXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFyaWFudDogQ2FuJ3QgZGV0ZXJtaW5lIGZpbGUgcGF0aCBraW5kLCBubyBwYWdlIGRpcmVjdG9yeSBlbmFibGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFwcCBkaXJlY3RvcnkgaXNuJ3QgZW5hYmxlZCwgdGhlbiBhc3N1bWUgaXQncyBwYWdlcyBhbmQgYXZvaWQgdGhlIGZzXG4gICAgICAgIC8vIGhpdC5cbiAgICAgICAgaWYgKCF0aGlzLmFwcERpciAmJiB0aGlzLnBhZ2VzRGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJwYWdlc1wiO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwRGlyICYmICF0aGlzLnBhZ2VzRGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJhcHBcIjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBib3RoIGFyZSBlbmFibGVkLCB3ZSBuZWVkIHRvIHRlc3QgZWFjaCBpbiBvcmRlciwgc3RhcnRpbmcgd2l0aFxuICAgICAgICAvLyBgcGFnZXNgLlxuICAgICAgICBsZXQgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKHBhdGhuYW1lLCBcInBhZ2VzXCIpO1xuICAgICAgICBpZiAodGhpcy5mcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwicGFnZXNcIjtcbiAgICAgICAgfVxuICAgICAgICBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgocGF0aG5hbWUsIFwiYXBwXCIpO1xuICAgICAgICBpZiAodGhpcy5mcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYXBwXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhcmlhbnQ6IFVuYWJsZSB0byBkZXRlcm1pbmUgZmlsZSBwYXRoIGtpbmQgZm9yICR7cGF0aG5hbWV9YCk7XG4gICAgfVxuICAgIGdldEZpbGVQYXRoKHBhdGhuYW1lLCBraW5kKSB7XG4gICAgICAgIHN3aXRjaChraW5kKXtcbiAgICAgICAgICAgIGNhc2UgXCJmZXRjaFwiOlxuICAgICAgICAgICAgICAgIC8vIHdlIHN0b3JlIGluIC5uZXh0L2NhY2hlL2ZldGNoLWNhY2hlIHNvIGl0IGNhbiBiZSBwZXJzaXN0ZWRcbiAgICAgICAgICAgICAgICAvLyBhY3Jvc3MgZGVwbG95c1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5zZXJ2ZXJEaXN0RGlyLCBcIi4uXCIsIFwiY2FjaGVcIiwgXCJmZXRjaC1jYWNoZVwiLCBwYXRobmFtZSk7XG4gICAgICAgICAgICBjYXNlIFwicGFnZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuc2VydmVyRGlzdERpciwgXCJwYWdlc1wiLCBwYXRobmFtZSk7XG4gICAgICAgICAgICBjYXNlIFwiYXBwXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbih0aGlzLnNlcnZlckRpc3REaXIsIFwiYXBwXCIsIHBhdGhuYW1lKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YXJpYW50OiBDYW4ndCBkZXRlcm1pbmUgZmlsZSBwYXRoIGtpbmRcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbGUtc3lzdGVtLWNhY2hlLmpzLm1hcCJdLCJuYW1lcyI6WyJMUlVDYWNoZSIsInBhdGgiLCJORVhUX0NBQ0hFX1RBR1NfSEVBREVSIiwiTkVYVF9EQVRBX1NVRkZJWCIsIk5FWFRfTUVUQV9TVUZGSVgiLCJSU0NfUFJFRkVUQ0hfU1VGRklYIiwiUlNDX1NVRkZJWCIsIm1lbW9yeUNhY2hlIiwidGFnc01hbmlmZXN0IiwiRmlsZVN5c3RlbUNhY2hlIiwiY29uc3RydWN0b3IiLCJjdHgiLCJmcyIsImZsdXNoVG9EaXNrIiwic2VydmVyRGlzdERpciIsImFwcERpciIsIl9hcHBEaXIiLCJwYWdlc0RpciIsIl9wYWdlc0RpciIsInJldmFsaWRhdGVkVGFncyIsImV4cGVyaW1lbnRhbCIsImRlYnVnIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUFJJVkFURV9ERUJVR19DQUNIRSIsIm1heE1lbW9yeUNhY2hlU2l6ZSIsImNvbnNvbGUiLCJsb2ciLCJtYXgiLCJsZW5ndGgiLCJ2YWx1ZSIsIl9KU09OX3N0cmluZ2lmeSIsImtpbmQiLCJKU09OIiwic3RyaW5naWZ5IiwicHJvcHMiLCJFcnJvciIsImRhdGEiLCJib2R5IiwiaHRtbCIsInBhZ2VEYXRhIiwidGFnc01hbmlmZXN0UGF0aCIsImpvaW4iLCJsb2FkVGFnc01hbmlmZXN0IiwicmVzZXRSZXF1ZXN0Q2FjaGUiLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImVyciIsInZlcnNpb24iLCJpdGVtcyIsInJldmFsaWRhdGVUYWciLCJ0YWciLCJyZXZhbGlkYXRlZEF0IiwiRGF0ZSIsIm5vdyIsIm1rZGlyIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsIndhcm4iLCJnZXQiLCJhcmdzIiwiX2RhdGFfdmFsdWUiLCJfZGF0YV92YWx1ZTEiLCJrZXkiLCJ0YWdzIiwic29mdFRhZ3MiLCJraW5kSGludCIsIk5FWFRfUlVOVElNRSIsImZpbGVQYXRoIiwiZ2V0RmlsZVBhdGgiLCJmaWxlRGF0YSIsInJlYWRGaWxlIiwibXRpbWUiLCJzdGF0IiwibWV0YSIsInJlcGxhY2UiLCJjYWNoZUVudHJ5IiwibGFzdE1vZGlmaWVkIiwiZ2V0VGltZSIsImhlYWRlcnMiLCJzdGF0dXMiLCJfIiwiZGV0ZWN0RmlsZUtpbmQiLCJpc0FwcFBhdGgiLCJfZGF0YV92YWx1ZTIiLCJwYXJzZWREYXRhIiwiX2RhdGFfdmFsdWUzIiwic3RvcmVkVGFncyIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJzZXQiLCJwcHIiLCJwb3N0cG9uZWQiLCJfZGF0YV92YWx1ZV9oZWFkZXJzIiwiY2FjaGVUYWdzIiwidGFnc0hlYWRlciIsInNwbGl0IiwiaXNTdGFsZSIsInNvbWUiLCJfdGFnc01hbmlmZXN0X2l0ZW1zX3RhZyIsInVuZGVmaW5lZCIsImNvbWJpbmVkVGFncyIsIndhc1JldmFsaWRhdGVkIiwiaHRtbFBhdGgiLCJwYXRobmFtZSIsImV4aXN0c1N5bmMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/file-system-cache.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/incremental-cache/index.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CacheHandler: () => (/* binding */ CacheHandler),\n/* harmony export */ IncrementalCache: () => (/* binding */ IncrementalCache)\n/* harmony export */ });\n/* harmony import */ var _fetch_cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fetch-cache */ \"(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/fetch-cache.js\");\n/* harmony import */ var _file_system_cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./file-system-cache */ \"(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/file-system-cache.js\");\n/* harmony import */ var _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../shared/lib/isomorphic/path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/isomorphic/path.js\");\n/* harmony import */ var _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _shared_lib_page_path_normalize_page_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../shared/lib/page-path/normalize-page-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/normalize-page-path.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n\n\n\n\n\nfunction toRoute(pathname) {\n return pathname.replace(/\\/$/, \"\").replace(/\\/index$/, \"\") || \"/\";\n}\nclass CacheHandler {\n // eslint-disable-next-line\n constructor(_ctx){}\n async get(..._args) {\n return {};\n }\n async set(..._args) {}\n async revalidateTag(_tag) {}\n resetRequestCache() {}\n}\nclass IncrementalCache {\n constructor({ fs, dev, appDir, pagesDir, flushToDisk, fetchCache, minimalMode, serverDistDir, requestHeaders, requestProtocol, maxMemoryCacheSize, getPrerenderManifest, fetchCacheKeyPrefix, CurCacheHandler, allowedRevalidateHeaderKeys, experimental }){\n var _this_prerenderManifest_preview, _this_prerenderManifest, _this_prerenderManifest_preview1, _this_prerenderManifest1;\n this.locks = new Map();\n this.unlocks = new Map();\n const debug = !!process.env.NEXT_PRIVATE_DEBUG_CACHE;\n this.hasCustomCacheHandler = Boolean(CurCacheHandler);\n if (!CurCacheHandler) {\n if (fs && serverDistDir) {\n if (debug) {\n console.log(\"using filesystem cache handler\");\n }\n CurCacheHandler = _file_system_cache__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n }\n if (_fetch_cache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isAvailable({\n _requestHeaders: requestHeaders\n }) && minimalMode && fetchCache) {\n if (debug) {\n console.log(\"using fetch cache handler\");\n }\n CurCacheHandler = _fetch_cache__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n } else if (debug) {\n console.log(\"using custom cache handler\", CurCacheHandler.name);\n }\n if (process.env.__NEXT_TEST_MAX_ISR_CACHE) {\n // Allow cache size to be overridden for testing purposes\n maxMemoryCacheSize = parseInt(process.env.__NEXT_TEST_MAX_ISR_CACHE, 10);\n }\n this.dev = dev;\n // this is a hack to avoid Webpack knowing this is equal to this.minimalMode\n // because we replace this.minimalMode to true in production bundles.\n const minimalModeKey = \"minimalMode\";\n this[minimalModeKey] = minimalMode;\n this.requestHeaders = requestHeaders;\n this.requestProtocol = requestProtocol;\n this.allowedRevalidateHeaderKeys = allowedRevalidateHeaderKeys;\n this.prerenderManifest = getPrerenderManifest();\n this.fetchCacheKeyPrefix = fetchCacheKeyPrefix;\n let revalidatedTags = [];\n if (requestHeaders[_lib_constants__WEBPACK_IMPORTED_MODULE_4__.PRERENDER_REVALIDATE_HEADER] === ((_this_prerenderManifest = this.prerenderManifest) == null ? void 0 : (_this_prerenderManifest_preview = _this_prerenderManifest.preview) == null ? void 0 : _this_prerenderManifest_preview.previewModeId)) {\n this.isOnDemandRevalidate = true;\n }\n if (minimalMode && typeof requestHeaders[_lib_constants__WEBPACK_IMPORTED_MODULE_4__.NEXT_CACHE_REVALIDATED_TAGS_HEADER] === \"string\" && requestHeaders[_lib_constants__WEBPACK_IMPORTED_MODULE_4__.NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER] === ((_this_prerenderManifest1 = this.prerenderManifest) == null ? void 0 : (_this_prerenderManifest_preview1 = _this_prerenderManifest1.preview) == null ? void 0 : _this_prerenderManifest_preview1.previewModeId)) {\n revalidatedTags = requestHeaders[_lib_constants__WEBPACK_IMPORTED_MODULE_4__.NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(\",\");\n }\n if (CurCacheHandler) {\n this.cacheHandler = new CurCacheHandler({\n dev,\n fs,\n flushToDisk,\n serverDistDir,\n revalidatedTags,\n maxMemoryCacheSize,\n _pagesDir: !!pagesDir,\n _appDir: !!appDir,\n _requestHeaders: requestHeaders,\n fetchCacheKeyPrefix,\n experimental\n });\n }\n }\n calculateRevalidate(pathname, fromTime, dev) {\n // in development we don't have a prerender-manifest\n // and default to always revalidating to allow easier debugging\n if (dev) return new Date().getTime() - 1000;\n // if an entry isn't present in routes we fallback to a default\n // of revalidating after 1 second\n const { initialRevalidateSeconds } = this.prerenderManifest.routes[toRoute(pathname)] || {\n initialRevalidateSeconds: 1\n };\n const revalidateAfter = typeof initialRevalidateSeconds === \"number\" ? initialRevalidateSeconds * 1000 + fromTime : initialRevalidateSeconds;\n return revalidateAfter;\n }\n _getPathname(pathname, fetchCache) {\n return fetchCache ? pathname : (0,_shared_lib_page_path_normalize_page_path__WEBPACK_IMPORTED_MODULE_3__.normalizePagePath)(pathname);\n }\n resetRequestCache() {\n var _this_cacheHandler_resetRequestCache, _this_cacheHandler;\n (_this_cacheHandler = this.cacheHandler) == null ? void 0 : (_this_cacheHandler_resetRequestCache = _this_cacheHandler.resetRequestCache) == null ? void 0 : _this_cacheHandler_resetRequestCache.call(_this_cacheHandler);\n }\n async unlock(cacheKey) {\n const unlock = this.unlocks.get(cacheKey);\n if (unlock) {\n unlock();\n this.locks.delete(cacheKey);\n this.unlocks.delete(cacheKey);\n }\n }\n async lock(cacheKey) {\n if (process.env.__NEXT_INCREMENTAL_CACHE_IPC_PORT && process.env.__NEXT_INCREMENTAL_CACHE_IPC_KEY && \"edge\" !== \"edge\") {}\n let unlockNext = ()=>Promise.resolve();\n const existingLock = this.locks.get(cacheKey);\n if (existingLock) {\n await existingLock;\n } else {\n const newLock = new Promise((resolve)=>{\n unlockNext = async ()=>{\n resolve();\n };\n });\n this.locks.set(cacheKey, newLock);\n this.unlocks.set(cacheKey, unlockNext);\n }\n return unlockNext;\n }\n async revalidateTag(tag) {\n var _this_cacheHandler_revalidateTag, _this_cacheHandler;\n if (process.env.__NEXT_INCREMENTAL_CACHE_IPC_PORT && process.env.__NEXT_INCREMENTAL_CACHE_IPC_KEY && \"edge\" !== \"edge\") {}\n return (_this_cacheHandler = this.cacheHandler) == null ? void 0 : (_this_cacheHandler_revalidateTag = _this_cacheHandler.revalidateTag) == null ? void 0 : _this_cacheHandler_revalidateTag.call(_this_cacheHandler, tag);\n }\n // x-ref: https://github.com/facebook/react/blob/2655c9354d8e1c54ba888444220f63e836925caa/packages/react/src/ReactFetch.js#L23\n async fetchCacheKey(url, init = {}) {\n // this should be bumped anytime a fix is made to cache entries\n // that should bust the cache\n const MAIN_KEY_PREFIX = \"v3\";\n const bodyChunks = [];\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n if (init.body) {\n // handle ReadableStream body\n if (typeof init.body.getReader === \"function\") {\n const readableBody = init.body;\n const chunks = [];\n try {\n await readableBody.pipeTo(new WritableStream({\n write (chunk) {\n if (typeof chunk === \"string\") {\n chunks.push(encoder.encode(chunk));\n bodyChunks.push(chunk);\n } else {\n chunks.push(chunk);\n bodyChunks.push(decoder.decode(chunk, {\n stream: true\n }));\n }\n }\n }));\n // Flush the decoder.\n bodyChunks.push(decoder.decode());\n // Create a new buffer with all the chunks.\n const length = chunks.reduce((total, arr)=>total + arr.length, 0);\n const arrayBuffer = new Uint8Array(length);\n // Push each of the chunks into the new array buffer.\n let offset = 0;\n for (const chunk of chunks){\n arrayBuffer.set(chunk, offset);\n offset += chunk.length;\n }\n init._ogBody = arrayBuffer;\n } catch (err) {\n console.error(\"Problem reading body\", err);\n }\n } else if (typeof init.body.keys === \"function\") {\n const formData = init.body;\n init._ogBody = init.body;\n for (const key of new Set([\n ...formData.keys()\n ])){\n const values = formData.getAll(key);\n bodyChunks.push(`${key}=${(await Promise.all(values.map(async (val)=>{\n if (typeof val === \"string\") {\n return val;\n } else {\n return await val.text();\n }\n }))).join(\",\")}`);\n }\n // handle blob body\n } else if (typeof init.body.arrayBuffer === \"function\") {\n const blob = init.body;\n const arrayBuffer = await blob.arrayBuffer();\n bodyChunks.push(await blob.text());\n init._ogBody = new Blob([\n arrayBuffer\n ], {\n type: blob.type\n });\n } else if (typeof init.body === \"string\") {\n bodyChunks.push(init.body);\n init._ogBody = init.body;\n }\n }\n const cacheString = JSON.stringify([\n MAIN_KEY_PREFIX,\n this.fetchCacheKeyPrefix || \"\",\n url,\n init.method,\n typeof (init.headers || {}).keys === \"function\" ? Object.fromEntries(init.headers) : init.headers,\n init.mode,\n init.redirect,\n init.credentials,\n init.referrer,\n init.referrerPolicy,\n init.integrity,\n init.cache,\n bodyChunks\n ]);\n if (true) {\n function bufferToHex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), (b)=>b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n const buffer = encoder.encode(cacheString);\n return bufferToHex(await crypto.subtle.digest(\"SHA-256\", buffer));\n } else {}\n }\n // get data from cache if available\n async get(cacheKey, ctx = {}) {\n var _this_cacheHandler, _cacheData_value, _this_prerenderManifest_routes_toRoute;\n if (process.env.__NEXT_INCREMENTAL_CACHE_IPC_PORT && process.env.__NEXT_INCREMENTAL_CACHE_IPC_KEY && \"edge\" !== \"edge\") {}\n // we don't leverage the prerender cache in dev mode\n // so that getStaticProps is always called for easier debugging\n if (this.dev && (ctx.kindHint !== \"fetch\" || this.requestHeaders[\"cache-control\"] === \"no-cache\")) {\n return null;\n }\n cacheKey = this._getPathname(cacheKey, ctx.kindHint === \"fetch\");\n let entry = null;\n let revalidate = ctx.revalidate;\n const cacheData = await ((_this_cacheHandler = this.cacheHandler) == null ? void 0 : _this_cacheHandler.get(cacheKey, ctx));\n if ((cacheData == null ? void 0 : (_cacheData_value = cacheData.value) == null ? void 0 : _cacheData_value.kind) === \"FETCH\") {\n const combinedTags = [\n ...ctx.tags || [],\n ...ctx.softTags || []\n ];\n // if a tag was revalidated we don't return stale data\n if (combinedTags.some((tag)=>{\n var _this_revalidatedTags;\n return (_this_revalidatedTags = this.revalidatedTags) == null ? void 0 : _this_revalidatedTags.includes(tag);\n })) {\n return null;\n }\n revalidate = revalidate || cacheData.value.revalidate;\n const age = (Date.now() - (cacheData.lastModified || 0)) / 1000;\n const isStale = age > revalidate;\n const data = cacheData.value.data;\n return {\n isStale: isStale,\n value: {\n kind: \"FETCH\",\n data,\n revalidate: revalidate\n },\n revalidateAfter: Date.now() + revalidate * 1000\n };\n }\n const curRevalidate = (_this_prerenderManifest_routes_toRoute = this.prerenderManifest.routes[toRoute(cacheKey)]) == null ? void 0 : _this_prerenderManifest_routes_toRoute.initialRevalidateSeconds;\n let isStale;\n let revalidateAfter;\n if ((cacheData == null ? void 0 : cacheData.lastModified) === -1) {\n isStale = -1;\n revalidateAfter = -1 * _lib_constants__WEBPACK_IMPORTED_MODULE_4__.CACHE_ONE_YEAR;\n } else {\n revalidateAfter = this.calculateRevalidate(cacheKey, (cacheData == null ? void 0 : cacheData.lastModified) || Date.now(), this.dev && ctx.kindHint !== \"fetch\");\n isStale = revalidateAfter !== false && revalidateAfter < Date.now() ? true : undefined;\n }\n if (cacheData) {\n entry = {\n isStale,\n curRevalidate,\n revalidateAfter,\n value: cacheData.value\n };\n }\n if (!cacheData && this.prerenderManifest.notFoundRoutes.includes(cacheKey)) {\n // for the first hit after starting the server the cache\n // may not have a way to save notFound: true so if\n // the prerender-manifest marks this as notFound then we\n // return that entry and trigger a cache set to give it a\n // chance to update in-memory entries\n entry = {\n isStale,\n value: null,\n curRevalidate,\n revalidateAfter\n };\n this.set(cacheKey, entry.value, ctx);\n }\n return entry;\n }\n // populate the incremental cache with new data\n async set(pathname, data, ctx) {\n if (process.env.__NEXT_INCREMENTAL_CACHE_IPC_PORT && process.env.__NEXT_INCREMENTAL_CACHE_IPC_KEY && \"edge\" !== \"edge\") {}\n if (this.dev && !ctx.fetchCache) return;\n // FetchCache has upper limit of 2MB per-entry currently\n if (ctx.fetchCache && // we don't show this error/warning when a custom cache handler is being used\n // as it might not have this limit\n !this.hasCustomCacheHandler && JSON.stringify(data).length > 2 * 1024 * 1024) {\n if (this.dev) {\n throw new Error(`fetch for over 2MB of data can not be cached`);\n }\n return;\n }\n pathname = this._getPathname(pathname, ctx.fetchCache);\n try {\n var _this_cacheHandler;\n // we use the prerender manifest memory instance\n // to store revalidate timings for calculating\n // revalidateAfter values so we update this on set\n if (typeof ctx.revalidate !== \"undefined\" && !ctx.fetchCache) {\n this.prerenderManifest.routes[pathname] = {\n experimentalPPR: undefined,\n dataRoute: _shared_lib_isomorphic_path__WEBPACK_IMPORTED_MODULE_2___default().posix.join(\"/_next/data\", `${(0,_shared_lib_page_path_normalize_page_path__WEBPACK_IMPORTED_MODULE_3__.normalizePagePath)(pathname)}.json`),\n srcRoute: null,\n initialRevalidateSeconds: ctx.revalidate,\n // Pages routes do not have a prefetch data route.\n prefetchDataRoute: undefined\n };\n }\n await ((_this_cacheHandler = this.cacheHandler) == null ? void 0 : _this_cacheHandler.set(pathname, data, ctx));\n } catch (error) {\n console.warn(\"Failed to update prerender cache for\", pathname, error);\n }\n }\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ1c7QUFDSztBQUMrQjtBQUMyRTtBQUNqSyxTQUFTUSxRQUFRQyxRQUFRO0lBQ3JCLE9BQU9BLFNBQVNDLE9BQU8sQ0FBQyxPQUFPLElBQUlBLE9BQU8sQ0FBQyxZQUFZLE9BQU87QUFDbEU7QUFDTyxNQUFNQztJQUNULDJCQUEyQjtJQUMzQkMsWUFBWUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsTUFBTUMsSUFBSSxHQUFHQyxLQUFLLEVBQUU7UUFDaEIsT0FBTyxDQUFDO0lBQ1o7SUFDQSxNQUFNQyxJQUFJLEdBQUdELEtBQUssRUFBRSxDQUFDO0lBQ3JCLE1BQU1FLGNBQWNDLElBQUksRUFBRSxDQUFDO0lBQzNCQyxvQkFBb0IsQ0FBQztBQUN6QjtBQUNPLE1BQU1DO0lBQ1RSLFlBQVksRUFBRVMsRUFBRSxFQUFFQyxHQUFHLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMsZUFBZSxFQUFFQyxrQkFBa0IsRUFBRUMsb0JBQW9CLEVBQUVDLG1CQUFtQixFQUFFQyxlQUFlLEVBQUVDLDJCQUEyQixFQUFFQyxZQUFZLEVBQUUsQ0FBQztRQUN2UCxJQUFJQyxpQ0FBaUNDLHlCQUF5QkMsa0NBQWtDQztRQUNoRyxJQUFJLENBQUNDLEtBQUssR0FBRyxJQUFJQztRQUNqQixJQUFJLENBQUNDLE9BQU8sR0FBRyxJQUFJRDtRQUNuQixNQUFNRSxRQUFRLENBQUMsQ0FBQ0MsUUFBUUMsR0FBRyxDQUFDQyx3QkFBd0I7UUFDcEQsSUFBSSxDQUFDQyxxQkFBcUIsR0FBR0MsUUFBUWY7UUFDckMsSUFBSSxDQUFDQSxpQkFBaUI7WUFDbEIsSUFBSWIsTUFBTU8sZUFBZTtnQkFDckIsSUFBSWdC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QUFpQkg7b0JBQ2pCSSxXQUFXak0sd0VBQVUsQ0FBQzBJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRXpJLDRGQUFpQkEsQ0FBQ00sVUFBVSxLQUFLLENBQUM7b0JBQy9FNEwsVUFBVTtvQkFDVjlILDBCQUEwQm1HLElBQUlLLFVBQVU7b0JBQ3hDLGtEQUFrRDtvQkFDbER1QixtQkFBbUJQO2dCQUN2QjtZQUNKO1lBQ0EsTUFBTyxFQUFDbkgscUJBQXFCLElBQUksQ0FBQ1osWUFBWSxLQUFLLE9BQU8sS0FBSyxJQUFJWSxtQkFBbUI1RCxHQUFHLENBQUNQLFVBQVVvTCxNQUFNbkIsSUFBRztRQUNqSCxFQUFFLE9BQU96QyxPQUFPO1lBQ1ovRSxRQUFRcUosSUFBSSxDQUFDLHdDQUF3QzlMLFVBQVV3SDtRQUNuRTtJQUNKO0FBQ0osRUFFQSxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZS9pbmRleC5qcz9jNmQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGZXRjaENhY2hlIGZyb20gXCIuL2ZldGNoLWNhY2hlXCI7XG5pbXBvcnQgRmlsZVN5c3RlbUNhY2hlIGZyb20gXCIuL2ZpbGUtc3lzdGVtLWNhY2hlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL2xpYi9pc29tb3JwaGljL3BhdGhcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVBhZ2VQYXRoIH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9saWIvcGFnZS1wYXRoL25vcm1hbGl6ZS1wYWdlLXBhdGhcIjtcbmltcG9ydCB7IENBQ0hFX09ORV9ZRUFSLCBORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSLCBORVhUX0NBQ0hFX1JFVkFMSURBVEVfVEFHX1RPS0VOX0hFQURFUiwgUFJFUkVOREVSX1JFVkFMSURBVEVfSEVBREVSIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9jb25zdGFudHNcIjtcbmZ1bmN0aW9uIHRvUm91dGUocGF0aG5hbWUpIHtcbiAgICByZXR1cm4gcGF0aG5hbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpLnJlcGxhY2UoL1xcL2luZGV4JC8sIFwiXCIpIHx8IFwiL1wiO1xufVxuZXhwb3J0IGNsYXNzIENhY2hlSGFuZGxlciB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc3RydWN0b3IoX2N0eCl7fVxuICAgIGFzeW5jIGdldCguLi5fYXJncykge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGFzeW5jIHNldCguLi5fYXJncykge31cbiAgICBhc3luYyByZXZhbGlkYXRlVGFnKF90YWcpIHt9XG4gICAgcmVzZXRSZXF1ZXN0Q2FjaGUoKSB7fVxufVxuZXhwb3J0IGNsYXNzIEluY3JlbWVudGFsQ2FjaGUge1xuICAgIGNvbnN0cnVjdG9yKHsgZnMsIGRldiwgYXBwRGlyLCBwYWdlc0RpciwgZmx1c2hUb0Rpc2ssIGZldGNoQ2FjaGUsIG1pbmltYWxNb2RlLCBzZXJ2ZXJEaXN0RGlyLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdFByb3RvY29sLCBtYXhNZW1vcnlDYWNoZVNpemUsIGdldFByZXJlbmRlck1hbmlmZXN0LCBmZXRjaENhY2hlS2V5UHJlZml4LCBDdXJDYWNoZUhhbmRsZXIsIGFsbG93ZWRSZXZhbGlkYXRlSGVhZGVyS2V5cywgZXhwZXJpbWVudGFsIH0pe1xuICAgICAgICB2YXIgX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3RfcHJldmlldywgX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3QsIF90aGlzX3ByZXJlbmRlck1hbmlmZXN0X3ByZXZpZXcxLCBfdGhpc19wcmVyZW5kZXJNYW5pZmVzdDE7XG4gICAgICAgIHRoaXMubG9ja3MgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMudW5sb2NrcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZGVidWcgPSAhIXByb2Nlc3MuZW52Lk5FWFRfUFJJVkFURV9ERUJVR19DQUNIRTtcbiAgICAgICAgdGhpcy5oYXNDdXN0b21DYWNoZUhhbmRsZXIgPSBCb29sZWFuKEN1ckNhY2hlSGFuZGxlcik7XG4gICAgICAgIGlmICghQ3VyQ2FjaGVIYW5kbGVyKSB7XG4gICAgICAgICAgICBpZiAoZnMgJiYgc2VydmVyRGlzdERpcikge1xuICAgICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInVzaW5nIGZpbGVzeXN0ZW0gY2FjaGUgaGFuZGxlclwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQ3VyQ2FjaGVIYW5kbGVyID0gRmlsZVN5c3RlbUNhY2hlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEZldGNoQ2FjaGUuaXNBdmFpbGFibGUoe1xuICAgICAgICAgICAgICAgIF9yZXF1ZXN0SGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pICYmIG1pbmltYWxNb2RlICYmIGZldGNoQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ1c2luZyBmZXRjaCBjYWNoZSBoYW5kbGVyXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBDdXJDYWNoZUhhbmRsZXIgPSBGZXRjaENhY2hlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInVzaW5nIGN1c3RvbSBjYWNoZSBoYW5kbGVyXCIsIEN1ckNhY2hlSGFuZGxlci5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTUFYX0lTUl9DQUNIRSkge1xuICAgICAgICAgICAgLy8gQWxsb3cgY2FjaGUgc2l6ZSB0byBiZSBvdmVycmlkZGVuIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAgICAgICAgICBtYXhNZW1vcnlDYWNoZVNpemUgPSBwYXJzZUludChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NQVhfSVNSX0NBQ0hFLCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXYgPSBkZXY7XG4gICAgICAgIC8vIHRoaXMgaXMgYSBoYWNrIHRvIGF2b2lkIFdlYnBhY2sga25vd2luZyB0aGlzIGlzIGVxdWFsIHRvIHRoaXMubWluaW1hbE1vZGVcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSByZXBsYWNlIHRoaXMubWluaW1hbE1vZGUgdG8gdHJ1ZSBpbiBwcm9kdWN0aW9uIGJ1bmRsZXMuXG4gICAgICAgIGNvbnN0IG1pbmltYWxNb2RlS2V5ID0gXCJtaW5pbWFsTW9kZVwiO1xuICAgICAgICB0aGlzW21pbmltYWxNb2RlS2V5XSA9IG1pbmltYWxNb2RlO1xuICAgICAgICB0aGlzLnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnM7XG4gICAgICAgIHRoaXMucmVxdWVzdFByb3RvY29sID0gcmVxdWVzdFByb3RvY29sO1xuICAgICAgICB0aGlzLmFsbG93ZWRSZXZhbGlkYXRlSGVhZGVyS2V5cyA9IGFsbG93ZWRSZXZhbGlkYXRlSGVhZGVyS2V5cztcbiAgICAgICAgdGhpcy5wcmVyZW5kZXJNYW5pZmVzdCA9IGdldFByZXJlbmRlck1hbmlmZXN0KCk7XG4gICAgICAgIHRoaXMuZmV0Y2hDYWNoZUtleVByZWZpeCA9IGZldGNoQ2FjaGVLZXlQcmVmaXg7XG4gICAgICAgIGxldCByZXZhbGlkYXRlZFRhZ3MgPSBbXTtcbiAgICAgICAgaWYgKHJlcXVlc3RIZWFkZXJzW1BSRVJFTkRFUl9SRVZBTElEQVRFX0hFQURFUl0gPT09ICgoX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3QgPSB0aGlzLnByZXJlbmRlck1hbmlmZXN0KSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX3ByZXJlbmRlck1hbmlmZXN0X3ByZXZpZXcgPSBfdGhpc19wcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3KSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3RfcHJldmlldy5wcmV2aWV3TW9kZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5pc09uRGVtYW5kUmV2YWxpZGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbmltYWxNb2RlICYmIHR5cGVvZiByZXF1ZXN0SGVhZGVyc1tORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSXSA9PT0gXCJzdHJpbmdcIiAmJiByZXF1ZXN0SGVhZGVyc1tORVhUX0NBQ0hFX1JFVkFMSURBVEVfVEFHX1RPS0VOX0hFQURFUl0gPT09ICgoX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3QxID0gdGhpcy5wcmVyZW5kZXJNYW5pZmVzdCkgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpc19wcmVyZW5kZXJNYW5pZmVzdF9wcmV2aWV3MSA9IF90aGlzX3ByZXJlbmRlck1hbmlmZXN0MS5wcmV2aWV3KSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3RfcHJldmlldzEucHJldmlld01vZGVJZCkpIHtcbiAgICAgICAgICAgIHJldmFsaWRhdGVkVGFncyA9IHJlcXVlc3RIZWFkZXJzW05FWFRfQ0FDSEVfUkVWQUxJREFURURfVEFHU19IRUFERVJdLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQ3VyQ2FjaGVIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlSGFuZGxlciA9IG5ldyBDdXJDYWNoZUhhbmRsZXIoe1xuICAgICAgICAgICAgICAgIGRldixcbiAgICAgICAgICAgICAgICBmcyxcbiAgICAgICAgICAgICAgICBmbHVzaFRvRGlzayxcbiAgICAgICAgICAgICAgICBzZXJ2ZXJEaXN0RGlyLFxuICAgICAgICAgICAgICAgIHJldmFsaWRhdGVkVGFncyxcbiAgICAgICAgICAgICAgICBtYXhNZW1vcnlDYWNoZVNpemUsXG4gICAgICAgICAgICAgICAgX3BhZ2VzRGlyOiAhIXBhZ2VzRGlyLFxuICAgICAgICAgICAgICAgIF9hcHBEaXI6ICEhYXBwRGlyLFxuICAgICAgICAgICAgICAgIF9yZXF1ZXN0SGVhZGVyczogcmVxdWVzdEhlYWRlcnMsXG4gICAgICAgICAgICAgICAgZmV0Y2hDYWNoZUtleVByZWZpeCxcbiAgICAgICAgICAgICAgICBleHBlcmltZW50YWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhbGN1bGF0ZVJldmFsaWRhdGUocGF0aG5hbWUsIGZyb21UaW1lLCBkZXYpIHtcbiAgICAgICAgLy8gaW4gZGV2ZWxvcG1lbnQgd2UgZG9uJ3QgaGF2ZSBhIHByZXJlbmRlci1tYW5pZmVzdFxuICAgICAgICAvLyBhbmQgZGVmYXVsdCB0byBhbHdheXMgcmV2YWxpZGF0aW5nIHRvIGFsbG93IGVhc2llciBkZWJ1Z2dpbmdcbiAgICAgICAgaWYgKGRldikgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gMTAwMDtcbiAgICAgICAgLy8gaWYgYW4gZW50cnkgaXNuJ3QgcHJlc2VudCBpbiByb3V0ZXMgd2UgZmFsbGJhY2sgdG8gYSBkZWZhdWx0XG4gICAgICAgIC8vIG9mIHJldmFsaWRhdGluZyBhZnRlciAxIHNlY29uZFxuICAgICAgICBjb25zdCB7IGluaXRpYWxSZXZhbGlkYXRlU2Vjb25kcyB9ID0gdGhpcy5wcmVyZW5kZXJNYW5pZmVzdC5yb3V0ZXNbdG9Sb3V0ZShwYXRobmFtZSldIHx8IHtcbiAgICAgICAgICAgIGluaXRpYWxSZXZhbGlkYXRlU2Vjb25kczogMVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXZhbGlkYXRlQWZ0ZXIgPSB0eXBlb2YgaW5pdGlhbFJldmFsaWRhdGVTZWNvbmRzID09PSBcIm51bWJlclwiID8gaW5pdGlhbFJldmFsaWRhdGVTZWNvbmRzICogMTAwMCArIGZyb21UaW1lIDogaW5pdGlhbFJldmFsaWRhdGVTZWNvbmRzO1xuICAgICAgICByZXR1cm4gcmV2YWxpZGF0ZUFmdGVyO1xuICAgIH1cbiAgICBfZ2V0UGF0aG5hbWUocGF0aG5hbWUsIGZldGNoQ2FjaGUpIHtcbiAgICAgICAgcmV0dXJuIGZldGNoQ2FjaGUgPyBwYXRobmFtZSA6IG5vcm1hbGl6ZVBhZ2VQYXRoKHBhdGhuYW1lKTtcbiAgICB9XG4gICAgcmVzZXRSZXF1ZXN0Q2FjaGUoKSB7XG4gICAgICAgIHZhciBfdGhpc19jYWNoZUhhbmRsZXJfcmVzZXRSZXF1ZXN0Q2FjaGUsIF90aGlzX2NhY2hlSGFuZGxlcjtcbiAgICAgICAgKF90aGlzX2NhY2hlSGFuZGxlciA9IHRoaXMuY2FjaGVIYW5kbGVyKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX2NhY2hlSGFuZGxlcl9yZXNldFJlcXVlc3RDYWNoZSA9IF90aGlzX2NhY2hlSGFuZGxlci5yZXNldFJlcXVlc3RDYWNoZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX2NhY2hlSGFuZGxlcl9yZXNldFJlcXVlc3RDYWNoZS5jYWxsKF90aGlzX2NhY2hlSGFuZGxlcik7XG4gICAgfVxuICAgIGFzeW5jIHVubG9jayhjYWNoZUtleSkge1xuICAgICAgICBjb25zdCB1bmxvY2sgPSB0aGlzLnVubG9ja3MuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgaWYgKHVubG9jaykge1xuICAgICAgICAgICAgdW5sb2NrKCk7XG4gICAgICAgICAgICB0aGlzLmxvY2tzLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgICB0aGlzLnVubG9ja3MuZGVsZXRlKGNhY2hlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBsb2NrKGNhY2hlS2V5KSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSU5DUkVNRU5UQUxfQ0FDSEVfSVBDX1BPUlQgJiYgcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19LRVkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FICE9PSBcImVkZ2VcIikge1xuICAgICAgICAgICAgY29uc3QgaW52b2tlSXBjTWV0aG9kID0gcmVxdWlyZShcIi4uL3NlcnZlci1pcGMvcmVxdWVzdC11dGlsc1wiKS5pbnZva2VJcGNNZXRob2Q7XG4gICAgICAgICAgICBhd2FpdCBpbnZva2VJcGNNZXRob2Qoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJsb2NrXCIsXG4gICAgICAgICAgICAgICAgaXBjUG9ydDogcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19QT1JULFxuICAgICAgICAgICAgICAgIGlwY0tleTogcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19LRVksXG4gICAgICAgICAgICAgICAgYXJnczogW1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUtleVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jICgpPT57XG4gICAgICAgICAgICAgICAgYXdhaXQgaW52b2tlSXBjTWV0aG9kKHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcInVubG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICBpcGNQb3J0OiBwcm9jZXNzLmVudi5fX05FWFRfSU5DUkVNRU5UQUxfQ0FDSEVfSVBDX1BPUlQsXG4gICAgICAgICAgICAgICAgICAgIGlwY0tleTogcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19LRVksXG4gICAgICAgICAgICAgICAgICAgIGFyZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHVubG9ja05leHQgPSAoKT0+UHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTG9jayA9IHRoaXMubG9ja3MuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nTG9jaykge1xuICAgICAgICAgICAgYXdhaXQgZXhpc3RpbmdMb2NrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3TG9jayA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAgICAgICAgIHVubG9ja05leHQgPSBhc3luYyAoKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5sb2Nrcy5zZXQoY2FjaGVLZXksIG5ld0xvY2spO1xuICAgICAgICAgICAgdGhpcy51bmxvY2tzLnNldChjYWNoZUtleSwgdW5sb2NrTmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVubG9ja05leHQ7XG4gICAgfVxuICAgIGFzeW5jIHJldmFsaWRhdGVUYWcodGFnKSB7XG4gICAgICAgIHZhciBfdGhpc19jYWNoZUhhbmRsZXJfcmV2YWxpZGF0ZVRhZywgX3RoaXNfY2FjaGVIYW5kbGVyO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19QT1JUICYmIHByb2Nlc3MuZW52Ll9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfS0VZICYmIHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gXCJlZGdlXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGludm9rZUlwY01ldGhvZCA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXItaXBjL3JlcXVlc3QtdXRpbHNcIikuaW52b2tlSXBjTWV0aG9kO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUlwY01ldGhvZCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcInJldmFsaWRhdGVUYWdcIixcbiAgICAgICAgICAgICAgICBpcGNQb3J0OiBwcm9jZXNzLmVudi5fX05FWFRfSU5DUkVNRU5UQUxfQ0FDSEVfSVBDX1BPUlQsXG4gICAgICAgICAgICAgICAgaXBjS2V5OiBwcm9jZXNzLmVudi5fX05FWFRfSU5DUkVNRU5UQUxfQ0FDSEVfSVBDX0tFWSxcbiAgICAgICAgICAgICAgICBhcmdzOiBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmFyZ3VtZW50c1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX3RoaXNfY2FjaGVIYW5kbGVyID0gdGhpcy5jYWNoZUhhbmRsZXIpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXNfY2FjaGVIYW5kbGVyX3JldmFsaWRhdGVUYWcgPSBfdGhpc19jYWNoZUhhbmRsZXIucmV2YWxpZGF0ZVRhZykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX2NhY2hlSGFuZGxlcl9yZXZhbGlkYXRlVGFnLmNhbGwoX3RoaXNfY2FjaGVIYW5kbGVyLCB0YWcpO1xuICAgIH1cbiAgICAvLyB4LXJlZjogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvMjY1NWM5MzU0ZDhlMWM1NGJhODg4NDQ0MjIwZjYzZTgzNjkyNWNhYS9wYWNrYWdlcy9yZWFjdC9zcmMvUmVhY3RGZXRjaC5qcyNMMjNcbiAgICBhc3luYyBmZXRjaENhY2hlS2V5KHVybCwgaW5pdCA9IHt9KSB7XG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIGJ1bXBlZCBhbnl0aW1lIGEgZml4IGlzIG1hZGUgdG8gY2FjaGUgZW50cmllc1xuICAgICAgICAvLyB0aGF0IHNob3VsZCBidXN0IHRoZSBjYWNoZVxuICAgICAgICBjb25zdCBNQUlOX0tFWV9QUkVGSVggPSBcInYzXCI7XG4gICAgICAgIGNvbnN0IGJvZHlDaHVua3MgPSBbXTtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG4gICAgICAgIGlmIChpbml0LmJvZHkpIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBSZWFkYWJsZVN0cmVhbSBib2R5XG4gICAgICAgICAgICBpZiAodHlwZW9mIGluaXQuYm9keS5nZXRSZWFkZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRhYmxlQm9keSA9IGluaXQuYm9keTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCByZWFkYWJsZUJvZHkucGlwZVRvKG5ldyBXcml0YWJsZVN0cmVhbSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSAoY2h1bmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcy5wdXNoKGVuY29kZXIuZW5jb2RlKGNodW5rKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlDaHVua3MucHVzaChjaHVuayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5Q2h1bmtzLnB1c2goZGVjb2Rlci5kZWNvZGUoY2h1bmssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZsdXNoIHRoZSBkZWNvZGVyLlxuICAgICAgICAgICAgICAgICAgICBib2R5Q2h1bmtzLnB1c2goZGVjb2Rlci5kZWNvZGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgd2l0aCBhbGwgdGhlIGNodW5rcy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gY2h1bmtzLnJlZHVjZSgodG90YWwsIGFycik9PnRvdGFsICsgYXJyLmxlbmd0aCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHVzaCBlYWNoIG9mIHRoZSBjaHVua3MgaW50byB0aGUgbmV3IGFycmF5IGJ1ZmZlci5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5QnVmZmVyLnNldChjaHVuaywgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBjaHVuay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdC5fb2dCb2R5ID0gYXJyYXlCdWZmZXI7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQcm9ibGVtIHJlYWRpbmcgYm9keVwiLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGluaXQuYm9keS5rZXlzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGluaXQuYm9keTtcbiAgICAgICAgICAgICAgICBpbml0Ll9vZ0JvZHkgPSBpbml0LmJvZHk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgbmV3IFNldChbXG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1EYXRhLmtleXMoKVxuICAgICAgICAgICAgICAgIF0pKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybURhdGEuZ2V0QWxsKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGJvZHlDaHVua3MucHVzaChgJHtrZXl9PSR7KGF3YWl0IFByb21pc2UuYWxsKHZhbHVlcy5tYXAoYXN5bmMgKHZhbCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHZhbC50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pKSkuam9pbihcIixcIil9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIGJsb2IgYm9keVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5pdC5ib2R5LmFycmF5QnVmZmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gaW5pdC5ib2R5O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpO1xuICAgICAgICAgICAgICAgIGJvZHlDaHVua3MucHVzaChhd2FpdCBibG9iLnRleHQoKSk7XG4gICAgICAgICAgICAgICAgaW5pdC5fb2dCb2R5ID0gbmV3IEJsb2IoW1xuICAgICAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgIF0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbml0LmJvZHkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBib2R5Q2h1bmtzLnB1c2goaW5pdC5ib2R5KTtcbiAgICAgICAgICAgICAgICBpbml0Ll9vZ0JvZHkgPSBpbml0LmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgICBNQUlOX0tFWV9QUkVGSVgsXG4gICAgICAgICAgICB0aGlzLmZldGNoQ2FjaGVLZXlQcmVmaXggfHwgXCJcIixcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGluaXQubWV0aG9kLFxuICAgICAgICAgICAgdHlwZW9mIChpbml0LmhlYWRlcnMgfHwge30pLmtleXMgPT09IFwiZnVuY3Rpb25cIiA/IE9iamVjdC5mcm9tRW50cmllcyhpbml0LmhlYWRlcnMpIDogaW5pdC5oZWFkZXJzLFxuICAgICAgICAgICAgaW5pdC5tb2RlLFxuICAgICAgICAgICAgaW5pdC5yZWRpcmVjdCxcbiAgICAgICAgICAgIGluaXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBpbml0LnJlZmVycmVyLFxuICAgICAgICAgICAgaW5pdC5yZWZlcnJlclBvbGljeSxcbiAgICAgICAgICAgIGluaXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgaW5pdC5jYWNoZSxcbiAgICAgICAgICAgIGJvZHlDaHVua3NcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09IFwiZWRnZVwiKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBidWZmZXJUb0hleChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIChiKT0+Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKS5qb2luKFwiXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZW5jb2Rlci5lbmNvZGUoY2FjaGVTdHJpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlclRvSGV4KGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KFwiU0hBLTI1NlwiLCBidWZmZXIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNyeXB0bzEgPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGNyeXB0bzEuY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoY2FjaGVTdHJpbmcpLmRpZ2VzdChcImhleFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXQgZGF0YSBmcm9tIGNhY2hlIGlmIGF2YWlsYWJsZVxuICAgIGFzeW5jIGdldChjYWNoZUtleSwgY3R4ID0ge30pIHtcbiAgICAgICAgdmFyIF90aGlzX2NhY2hlSGFuZGxlciwgX2NhY2hlRGF0YV92YWx1ZSwgX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3Rfcm91dGVzX3RvUm91dGU7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSU5DUkVNRU5UQUxfQ0FDSEVfSVBDX1BPUlQgJiYgcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19LRVkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FICE9PSBcImVkZ2VcIikge1xuICAgICAgICAgICAgY29uc3QgaW52b2tlSXBjTWV0aG9kID0gcmVxdWlyZShcIi4uL3NlcnZlci1pcGMvcmVxdWVzdC11dGlsc1wiKS5pbnZva2VJcGNNZXRob2Q7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlSXBjTWV0aG9kKHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiZ2V0XCIsXG4gICAgICAgICAgICAgICAgaXBjUG9ydDogcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19QT1JULFxuICAgICAgICAgICAgICAgIGlwY0tleTogcHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19LRVksXG4gICAgICAgICAgICAgICAgYXJnczogW1xuICAgICAgICAgICAgICAgICAgICAuLi5hcmd1bWVudHNcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3ZSBkb24ndCBsZXZlcmFnZSB0aGUgcHJlcmVuZGVyIGNhY2hlIGluIGRldiBtb2RlXG4gICAgICAgIC8vIHNvIHRoYXQgZ2V0U3RhdGljUHJvcHMgaXMgYWx3YXlzIGNhbGxlZCBmb3IgZWFzaWVyIGRlYnVnZ2luZ1xuICAgICAgICBpZiAodGhpcy5kZXYgJiYgKGN0eC5raW5kSGludCAhPT0gXCJmZXRjaFwiIHx8IHRoaXMucmVxdWVzdEhlYWRlcnNbXCJjYWNoZS1jb250cm9sXCJdID09PSBcIm5vLWNhY2hlXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjYWNoZUtleSA9IHRoaXMuX2dldFBhdGhuYW1lKGNhY2hlS2V5LCBjdHgua2luZEhpbnQgPT09IFwiZmV0Y2hcIik7XG4gICAgICAgIGxldCBlbnRyeSA9IG51bGw7XG4gICAgICAgIGxldCByZXZhbGlkYXRlID0gY3R4LnJldmFsaWRhdGU7XG4gICAgICAgIGNvbnN0IGNhY2hlRGF0YSA9IGF3YWl0ICgoX3RoaXNfY2FjaGVIYW5kbGVyID0gdGhpcy5jYWNoZUhhbmRsZXIpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19jYWNoZUhhbmRsZXIuZ2V0KGNhY2hlS2V5LCBjdHgpKTtcbiAgICAgICAgaWYgKChjYWNoZURhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IChfY2FjaGVEYXRhX3ZhbHVlID0gY2FjaGVEYXRhLnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRGF0YV92YWx1ZS5raW5kKSA9PT0gXCJGRVRDSFwiKSB7XG4gICAgICAgICAgICBjb25zdCBjb21iaW5lZFRhZ3MgPSBbXG4gICAgICAgICAgICAgICAgLi4uY3R4LnRhZ3MgfHwgW10sXG4gICAgICAgICAgICAgICAgLi4uY3R4LnNvZnRUYWdzIHx8IFtdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgLy8gaWYgYSB0YWcgd2FzIHJldmFsaWRhdGVkIHdlIGRvbid0IHJldHVybiBzdGFsZSBkYXRhXG4gICAgICAgICAgICBpZiAoY29tYmluZWRUYWdzLnNvbWUoKHRhZyk9PntcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXNfcmV2YWxpZGF0ZWRUYWdzO1xuICAgICAgICAgICAgICAgIHJldHVybiAoX3RoaXNfcmV2YWxpZGF0ZWRUYWdzID0gdGhpcy5yZXZhbGlkYXRlZFRhZ3MpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19yZXZhbGlkYXRlZFRhZ3MuaW5jbHVkZXModGFnKTtcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXZhbGlkYXRlID0gcmV2YWxpZGF0ZSB8fCBjYWNoZURhdGEudmFsdWUucmV2YWxpZGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGFnZSA9IChEYXRlLm5vdygpIC0gKGNhY2hlRGF0YS5sYXN0TW9kaWZpZWQgfHwgMCkpIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGlzU3RhbGUgPSBhZ2UgPiByZXZhbGlkYXRlO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGNhY2hlRGF0YS52YWx1ZS5kYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpc1N0YWxlOiBpc1N0YWxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IFwiRkVUQ0hcIixcbiAgICAgICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogcmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmV2YWxpZGF0ZUFmdGVyOiBEYXRlLm5vdygpICsgcmV2YWxpZGF0ZSAqIDEwMDBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyUmV2YWxpZGF0ZSA9IChfdGhpc19wcmVyZW5kZXJNYW5pZmVzdF9yb3V0ZXNfdG9Sb3V0ZSA9IHRoaXMucHJlcmVuZGVyTWFuaWZlc3Qucm91dGVzW3RvUm91dGUoY2FjaGVLZXkpXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX3ByZXJlbmRlck1hbmlmZXN0X3JvdXRlc190b1JvdXRlLmluaXRpYWxSZXZhbGlkYXRlU2Vjb25kcztcbiAgICAgICAgbGV0IGlzU3RhbGU7XG4gICAgICAgIGxldCByZXZhbGlkYXRlQWZ0ZXI7XG4gICAgICAgIGlmICgoY2FjaGVEYXRhID09IG51bGwgPyB2b2lkIDAgOiBjYWNoZURhdGEubGFzdE1vZGlmaWVkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlzU3RhbGUgPSAtMTtcbiAgICAgICAgICAgIHJldmFsaWRhdGVBZnRlciA9IC0xICogQ0FDSEVfT05FX1lFQVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXZhbGlkYXRlQWZ0ZXIgPSB0aGlzLmNhbGN1bGF0ZVJldmFsaWRhdGUoY2FjaGVLZXksIChjYWNoZURhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IGNhY2hlRGF0YS5sYXN0TW9kaWZpZWQpIHx8IERhdGUubm93KCksIHRoaXMuZGV2ICYmIGN0eC5raW5kSGludCAhPT0gXCJmZXRjaFwiKTtcbiAgICAgICAgICAgIGlzU3RhbGUgPSByZXZhbGlkYXRlQWZ0ZXIgIT09IGZhbHNlICYmIHJldmFsaWRhdGVBZnRlciA8IERhdGUubm93KCkgPyB0cnVlIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWNoZURhdGEpIHtcbiAgICAgICAgICAgIGVudHJ5ID0ge1xuICAgICAgICAgICAgICAgIGlzU3RhbGUsXG4gICAgICAgICAgICAgICAgY3VyUmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICByZXZhbGlkYXRlQWZ0ZXIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNhY2hlRGF0YS52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhY2hlRGF0YSAmJiB0aGlzLnByZXJlbmRlck1hbmlmZXN0Lm5vdEZvdW5kUm91dGVzLmluY2x1ZGVzKGNhY2hlS2V5KSkge1xuICAgICAgICAgICAgLy8gZm9yIHRoZSBmaXJzdCBoaXQgYWZ0ZXIgc3RhcnRpbmcgdGhlIHNlcnZlciB0aGUgY2FjaGVcbiAgICAgICAgICAgIC8vIG1heSBub3QgaGF2ZSBhIHdheSB0byBzYXZlIG5vdEZvdW5kOiB0cnVlIHNvIGlmXG4gICAgICAgICAgICAvLyB0aGUgcHJlcmVuZGVyLW1hbmlmZXN0IG1hcmtzIHRoaXMgYXMgbm90Rm91bmQgdGhlbiB3ZVxuICAgICAgICAgICAgLy8gcmV0dXJuIHRoYXQgZW50cnkgYW5kIHRyaWdnZXIgYSBjYWNoZSBzZXQgdG8gZ2l2ZSBpdCBhXG4gICAgICAgICAgICAvLyBjaGFuY2UgdG8gdXBkYXRlIGluLW1lbW9yeSBlbnRyaWVzXG4gICAgICAgICAgICBlbnRyeSA9IHtcbiAgICAgICAgICAgICAgICBpc1N0YWxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIGN1clJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgcmV2YWxpZGF0ZUFmdGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXQoY2FjaGVLZXksIGVudHJ5LnZhbHVlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9XG4gICAgLy8gcG9wdWxhdGUgdGhlIGluY3JlbWVudGFsIGNhY2hlIHdpdGggbmV3IGRhdGFcbiAgICBhc3luYyBzZXQocGF0aG5hbWUsIGRhdGEsIGN0eCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0lOQ1JFTUVOVEFMX0NBQ0hFX0lQQ19QT1JUICYmIHByb2Nlc3MuZW52Ll9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfS0VZICYmIHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gXCJlZGdlXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGludm9rZUlwY01ldGhvZCA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXItaXBjL3JlcXVlc3QtdXRpbHNcIikuaW52b2tlSXBjTWV0aG9kO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUlwY01ldGhvZCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcInNldFwiLFxuICAgICAgICAgICAgICAgIGlwY1BvcnQ6IHByb2Nlc3MuZW52Ll9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfUE9SVCxcbiAgICAgICAgICAgICAgICBpcGNLZXk6IHByb2Nlc3MuZW52Ll9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfS0VZLFxuICAgICAgICAgICAgICAgIGFyZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGV2ICYmICFjdHguZmV0Y2hDYWNoZSkgcmV0dXJuO1xuICAgICAgICAvLyBGZXRjaENhY2hlIGhhcyB1cHBlciBsaW1pdCBvZiAyTUIgcGVyLWVudHJ5IGN1cnJlbnRseVxuICAgICAgICBpZiAoY3R4LmZldGNoQ2FjaGUgJiYgLy8gd2UgZG9uJ3Qgc2hvdyB0aGlzIGVycm9yL3dhcm5pbmcgd2hlbiBhIGN1c3RvbSBjYWNoZSBoYW5kbGVyIGlzIGJlaW5nIHVzZWRcbiAgICAgICAgLy8gYXMgaXQgbWlnaHQgbm90IGhhdmUgdGhpcyBsaW1pdFxuICAgICAgICAhdGhpcy5oYXNDdXN0b21DYWNoZUhhbmRsZXIgJiYgSlNPTi5zdHJpbmdpZnkoZGF0YSkubGVuZ3RoID4gMiAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXYpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZldGNoIGZvciBvdmVyIDJNQiBvZiBkYXRhIGNhbiBub3QgYmUgY2FjaGVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGF0aG5hbWUgPSB0aGlzLl9nZXRQYXRobmFtZShwYXRobmFtZSwgY3R4LmZldGNoQ2FjaGUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIF90aGlzX2NhY2hlSGFuZGxlcjtcbiAgICAgICAgICAgIC8vIHdlIHVzZSB0aGUgcHJlcmVuZGVyIG1hbmlmZXN0IG1lbW9yeSBpbnN0YW5jZVxuICAgICAgICAgICAgLy8gdG8gc3RvcmUgcmV2YWxpZGF0ZSB0aW1pbmdzIGZvciBjYWxjdWxhdGluZ1xuICAgICAgICAgICAgLy8gcmV2YWxpZGF0ZUFmdGVyIHZhbHVlcyBzbyB3ZSB1cGRhdGUgdGhpcyBvbiBzZXRcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3R4LnJldmFsaWRhdGUgIT09IFwidW5kZWZpbmVkXCIgJiYgIWN0eC5mZXRjaENhY2hlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVyZW5kZXJNYW5pZmVzdC5yb3V0ZXNbcGF0aG5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxQUFI6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVJvdXRlOiBwYXRoLnBvc2l4LmpvaW4oXCIvX25leHQvZGF0YVwiLCBgJHtub3JtYWxpemVQYWdlUGF0aChwYXRobmFtZSl9Lmpzb25gKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjUm91dGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxSZXZhbGlkYXRlU2Vjb25kczogY3R4LnJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgIC8vIFBhZ2VzIHJvdXRlcyBkbyBub3QgaGF2ZSBhIHByZWZldGNoIGRhdGEgcm91dGUuXG4gICAgICAgICAgICAgICAgICAgIHByZWZldGNoRGF0YVJvdXRlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgKChfdGhpc19jYWNoZUhhbmRsZXIgPSB0aGlzLmNhY2hlSGFuZGxlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX2NhY2hlSGFuZGxlci5zZXQocGF0aG5hbWUsIGRhdGEsIGN0eCkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHVwZGF0ZSBwcmVyZW5kZXIgY2FjaGUgZm9yXCIsIHBhdGhuYW1lLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJGZXRjaENhY2hlIiwiRmlsZVN5c3RlbUNhY2hlIiwicGF0aCIsIm5vcm1hbGl6ZVBhZ2VQYXRoIiwiQ0FDSEVfT05FX1lFQVIiLCJORVhUX0NBQ0hFX1JFVkFMSURBVEVEX1RBR1NfSEVBREVSIiwiTkVYVF9DQUNIRV9SRVZBTElEQVRFX1RBR19UT0tFTl9IRUFERVIiLCJQUkVSRU5ERVJfUkVWQUxJREFURV9IRUFERVIiLCJ0b1JvdXRlIiwicGF0aG5hbWUiLCJyZXBsYWNlIiwiQ2FjaGVIYW5kbGVyIiwiY29uc3RydWN0b3IiLCJfY3R4IiwiZ2V0IiwiX2FyZ3MiLCJzZXQiLCJyZXZhbGlkYXRlVGFnIiwiX3RhZyIsInJlc2V0UmVxdWVzdENhY2hlIiwiSW5jcmVtZW50YWxDYWNoZSIsImZzIiwiZGV2IiwiYXBwRGlyIiwicGFnZXNEaXIiLCJmbHVzaFRvRGlzayIsImZldGNoQ2FjaGUiLCJtaW5pbWFsTW9kZSIsInNlcnZlckRpc3REaXIiLCJyZXF1ZXN0SGVhZGVycyIsInJlcXVlc3RQcm90b2NvbCIsIm1heE1lbW9yeUNhY2hlU2l6ZSIsImdldFByZXJlbmRlck1hbmlmZXN0IiwiZmV0Y2hDYWNoZUtleVByZWZpeCIsIkN1ckNhY2hlSGFuZGxlciIsImFsbG93ZWRSZXZhbGlkYXRlSGVhZGVyS2V5cyIsImV4cGVyaW1lbnRhbCIsIl90aGlzX3ByZXJlbmRlck1hbmlmZXN0X3ByZXZpZXciLCJfdGhpc19wcmVyZW5kZXJNYW5pZmVzdCIsIl90aGlzX3ByZXJlbmRlck1hbmlmZXN0X3ByZXZpZXcxIiwiX3RoaXNfcHJlcmVuZGVyTWFuaWZlc3QxIiwibG9ja3MiLCJNYXAiLCJ1bmxvY2tzIiwiZGVidWciLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9QUklWQVRFX0RFQlVHX0NBQ0hFIiwiaGFzQ3VzdG9tQ2FjaGVIYW5kbGVyIiwiQm9vbGVhbiIsImNvbnNvbGUiLCJsb2ciLCJpc0F2YWlsYWJsZSIsIl9yZXF1ZXN0SGVhZGVycyIsIm5hbWUiLCJfX05FWFRfVEVTVF9NQVhfSVNSX0NBQ0hFIiwicGFyc2VJbnQiLCJtaW5pbWFsTW9kZUtleSIsInByZXJlbmRlck1hbmlmZXN0IiwicmV2YWxpZGF0ZWRUYWdzIiwicHJldmlldyIsInByZXZpZXdNb2RlSWQiLCJpc09uRGVtYW5kUmV2YWxpZGF0ZSIsInNwbGl0IiwiY2FjaGVIYW5kbGVyIiwiX3BhZ2VzRGlyIiwiX2FwcERpciIsImNhbGN1bGF0ZVJldmFsaWRhdGUiLCJmcm9tVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiaW5pdGlhbFJldmFsaWRhdGVTZWNvbmRzIiwicm91dGVzIiwicmV2YWxpZGF0ZUFmdGVyIiwiX2dldFBhdGhuYW1lIiwiX3RoaXNfY2FjaGVIYW5kbGVyX3Jlc2V0UmVxdWVzdENhY2hlIiwiX3RoaXNfY2FjaGVIYW5kbGVyIiwiY2FsbCIsInVubG9jayIsImNhY2hlS2V5IiwiZGVsZXRlIiwibG9jayIsIl9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfUE9SVCIsIl9fTkVYVF9JTkNSRU1FTlRBTF9DQUNIRV9JUENfS0VZIiwiTkVYVF9SVU5USU1FIiwiaW52b2tlSXBjTWV0aG9kIiwicmVxdWlyZSIsIm1ldGhvZCIsImlwY1BvcnQiLCJpcGNLZXkiLCJhcmdzIiwidW5sb2NrTmV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXhpc3RpbmdMb2NrIiwibmV3TG9jayIsInRhZyIsIl90aGlzX2NhY2hlSGFuZGxlcl9yZXZhbGlkYXRlVGFnIiwiYXJndW1lbnRzIiwiZmV0Y2hDYWNoZUtleSIsInVybCIsImluaXQiLCJNQUlOX0tFWV9QUkVGSVgiLCJib2R5Q2h1bmtzIiwiZW5jb2RlciIsIlRleHRFbmNvZGVyIiwiZGVjb2RlciIsIlRleHREZWNvZGVyIiwiYm9keSIsImdldFJlYWRlciIsInJlYWRhYmxlQm9keSIsImNodW5rcyIsInBpcGVUbyIsIldyaXRhYmxlU3RyZWFtIiwid3JpdGUiLCJjaHVuayIsInB1c2giLCJlbmNvZGUiLCJkZWNvZGUiLCJzdHJlYW0iLCJsZW5ndGgiLCJyZWR1Y2UiLCJ0b3RhbCIsImFyciIsImFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIm9mZnNldCIsIl9vZ0JvZHkiLCJlcnIiLCJlcnJvciIsImtleXMiLCJmb3JtRGF0YSIsImtleSIsIlNldCIsInZhbHVlcyIsImdldEFsbCIsImFsbCIsIm1hcCIsInZhbCIsInRleHQiLCJqb2luIiwiYmxvYiIsIkJsb2IiLCJ0eXBlIiwiY2FjaGVTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiaGVhZGVycyIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwibW9kZSIsInJlZGlyZWN0IiwiY3JlZGVudGlhbHMiLCJyZWZlcnJlciIsInJlZmVycmVyUG9saWN5IiwiaW50ZWdyaXR5IiwiY2FjaGUiLCJidWZmZXJUb0hleCIsImJ1ZmZlciIsIkFycmF5IiwicHJvdG90eXBlIiwiYiIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJjcnlwdG8iLCJzdWJ0bGUiLCJkaWdlc3QiLCJjcnlwdG8xIiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsImN0eCIsIl9jYWNoZURhdGFfdmFsdWUiLCJfdGhpc19wcmVyZW5kZXJNYW5pZmVzdF9yb3V0ZXNfdG9Sb3V0ZSIsImtpbmRIaW50IiwiZW50cnkiLCJyZXZhbGlkYXRlIiwiY2FjaGVEYXRhIiwidmFsdWUiLCJraW5kIiwiY29tYmluZWRUYWdzIiwidGFncyIsInNvZnRUYWdzIiwic29tZSIsIl90aGlzX3JldmFsaWRhdGVkVGFncyIsImluY2x1ZGVzIiwiYWdlIiwibm93IiwibGFzdE1vZGlmaWVkIiwiaXNTdGFsZSIsImRhdGEiLCJjdXJSZXZhbGlkYXRlIiwidW5kZWZpbmVkIiwibm90Rm91bmRSb3V0ZXMiLCJFcnJvciIsImV4cGVyaW1lbnRhbFBQUiIsImRhdGFSb3V0ZSIsInBvc2l4Iiwic3JjUm91dGUiLCJwcmVmZXRjaERhdGFSb3V0ZSIsIndhcm4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/patch-fetch.js":
/*!**************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/patch-fetch.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addImplicitTags: () => (/* binding */ addImplicitTags),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ validateRevalidate: () => (/* binding */ validateRevalidate),\n/* harmony export */ validateTags: () => (/* binding */ validateTags)\n/* harmony export */ });\n/* harmony import */ var _trace_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trace/constants */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/constants.js\");\n/* harmony import */ var _trace_tracer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./trace/tracer */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/tracer.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n/* harmony import */ var _build_output_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../build/output/log */ \"(rsc)/./node_modules/next/dist/esm/build/output/log.js\");\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"buffer\")[\"Buffer\"];\n\n\n\n\nconst isEdgeRuntime = \"edge\" === \"edge\";\nfunction validateRevalidate(revalidateVal, pathname) {\n try {\n let normalizedRevalidate = undefined;\n if (revalidateVal === false) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal === \"number\" && !isNaN(revalidateVal) && revalidateVal > -1) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal !== \"undefined\") {\n throw new Error(`Invalid revalidate value \"${revalidateVal}\" on \"${pathname}\", must be a non-negative number or \"false\"`);\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 (const tag of tags){\n if (typeof tag !== \"string\") {\n invalidTags.push({\n tag,\n reason: \"invalid type, must be a string\"\n });\n } else if (tag.length > _lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${_lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_CACHE_TAG_MAX_LENGTH}`\n });\n } else {\n validTags.push(tag);\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}\nconst getDerivedTags = (pathname)=>{\n const derivedTags = [\n `/layout`\n ];\n // we automatically add the current path segments as tags\n // for revalidatePath handling\n if (pathname.startsWith(\"/\")) {\n const pathnameParts = pathname.split(\"/\");\n for(let i = 1; i < pathnameParts.length + 1; i++){\n let curPathname = pathnameParts.slice(0, i).join(\"/\");\n if (curPathname) {\n // all derived tags other than the page are layout tags\n if (!curPathname.endsWith(\"/page\") && !curPathname.endsWith(\"/route\")) {\n curPathname = `${curPathname}${!curPathname.endsWith(\"/\") ? \"/\" : \"\"}layout`;\n }\n derivedTags.push(curPathname);\n }\n }\n }\n return derivedTags;\n};\nfunction addImplicitTags(staticGenerationStore) {\n const newTags = [];\n const { pagePath, urlPathname } = staticGenerationStore;\n if (!Array.isArray(staticGenerationStore.tags)) {\n staticGenerationStore.tags = [];\n }\n if (pagePath) {\n const derivedTags = getDerivedTags(pagePath);\n for (let tag of derivedTags){\n var _staticGenerationStore_tags;\n tag = `${_lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_CACHE_IMPLICIT_TAG_ID}${tag}`;\n if (!((_staticGenerationStore_tags = staticGenerationStore.tags) == null ? void 0 : _staticGenerationStore_tags.includes(tag))) {\n staticGenerationStore.tags.push(tag);\n }\n newTags.push(tag);\n }\n }\n if (urlPathname) {\n var _staticGenerationStore_tags1;\n const parsedPathname = new URL(urlPathname, \"http://n\").pathname;\n const tag = `${_lib_constants__WEBPACK_IMPORTED_MODULE_2__.NEXT_CACHE_IMPLICIT_TAG_ID}${parsedPathname}`;\n if (!((_staticGenerationStore_tags1 = staticGenerationStore.tags) == null ? void 0 : _staticGenerationStore_tags1.includes(tag))) {\n staticGenerationStore.tags.push(tag);\n }\n newTags.push(tag);\n }\n return newTags;\n}\nfunction trackFetchMetric(staticGenerationStore, ctx) {\n if (!staticGenerationStore) return;\n if (!staticGenerationStore.fetchMetrics) {\n staticGenerationStore.fetchMetrics = [];\n }\n const dedupeFields = [\n \"url\",\n \"status\",\n \"method\"\n ];\n // don't add metric if one already exists for the fetch\n if (staticGenerationStore.fetchMetrics.some((metric)=>{\n return dedupeFields.every((field)=>metric[field] === ctx[field]);\n })) {\n return;\n }\n staticGenerationStore.fetchMetrics.push({\n url: ctx.url,\n cacheStatus: ctx.cacheStatus,\n cacheReason: ctx.cacheReason,\n status: ctx.status,\n method: ctx.method,\n start: ctx.start,\n end: Date.now(),\n idx: staticGenerationStore.nextFetchId || 0\n });\n}\n// we patch fetch to collect cache information used for\n// determining if a page is static or not\nfunction patchFetch({ serverHooks, staticGenerationAsyncStorage }) {\n if (!globalThis._nextOriginalFetch) {\n globalThis._nextOriginalFetch = globalThis.fetch;\n }\n if (globalThis.fetch.__nextPatched) return;\n const { DynamicServerError } = serverHooks;\n const originFetch = globalThis._nextOriginalFetch;\n globalThis.fetch = async (input, init)=>{\n var _init_method, _this;\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 fetchStart = Date.now();\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 = ((_this = init == null ? void 0 : init.next) == null ? void 0 : _this.internal) === true;\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === \"1\";\n return await (0,_trace_tracer__WEBPACK_IMPORTED_MODULE_1__.getTracer)().trace(isInternal ? _trace_constants__WEBPACK_IMPORTED_MODULE_0__.NextNodeServerSpan.internalFetch : _trace_constants__WEBPACK_IMPORTED_MODULE_0__.AppRenderSpan.fetch, {\n hideSpan,\n kind: _trace_tracer__WEBPACK_IMPORTED_MODULE_1__.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 const staticGenerationStore = staticGenerationAsyncStorage.getStore() || (fetch.__nextGetStaticStore == null ? void 0 : fetch.__nextGetStaticStore.call(fetch));\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 // If the staticGenerationStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!staticGenerationStore || isInternal || staticGenerationStore.isDraftMode) {\n return originFetch(input, init);\n }\n let revalidate = 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 let curRevalidate = getNextField(\"revalidate\");\n const tags = validateTags(getNextField(\"tags\") || [], `fetch ${input.toString()}`);\n if (Array.isArray(tags)) {\n if (!staticGenerationStore.tags) {\n staticGenerationStore.tags = [];\n }\n for (const tag of tags){\n if (!staticGenerationStore.tags.includes(tag)) {\n staticGenerationStore.tags.push(tag);\n }\n }\n }\n const implicitTags = addImplicitTags(staticGenerationStore);\n const isOnlyCache = staticGenerationStore.fetchCache === \"only-cache\";\n const isForceCache = staticGenerationStore.fetchCache === \"force-cache\";\n const isDefaultCache = staticGenerationStore.fetchCache === \"default-cache\";\n const isDefaultNoStore = staticGenerationStore.fetchCache === \"default-no-store\";\n const isOnlyNoStore = staticGenerationStore.fetchCache === \"only-no-store\";\n const isForceNoStore = staticGenerationStore.fetchCache === \"force-no-store\";\n const isUsingNoStore = !!staticGenerationStore.isUnstableNoStore;\n let _cache = getRequestMeta(\"cache\");\n let cacheReason = \"\";\n if (typeof _cache === \"string\" && typeof curRevalidate !== \"undefined\") {\n // when providing fetch with a Request input, it'll automatically set a cache value of 'default'\n // we only want to warn if the user is explicitly setting a cache value\n if (!(isRequestInput && _cache === \"default\")) {\n _build_output_log__WEBPACK_IMPORTED_MODULE_3__.warn(`fetch for ${fetchUrl} on ${staticGenerationStore.urlPathname} specified \"cache: ${_cache}\" and \"revalidate: ${curRevalidate}\", only one should be specified.`);\n }\n _cache = undefined;\n }\n if (_cache === \"force-cache\") {\n curRevalidate = false;\n } else if (_cache === \"no-cache\" || _cache === \"no-store\" || isForceNoStore || isOnlyNoStore) {\n curRevalidate = 0;\n }\n if (_cache === \"no-cache\" || _cache === \"no-store\") {\n cacheReason = `cache: ${_cache}`;\n }\n revalidate = validateRevalidate(curRevalidate, staticGenerationStore.urlPathname);\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 // if there are authorized headers or a POST method and\n // dynamic data usage was present above the tree we bail\n // e.g. if cookies() is used before an authed/POST fetch\n const autoNoCache = (hasUnCacheableHeader || isUnCacheableMethod) && staticGenerationStore.revalidate === 0;\n if (isForceNoStore) {\n cacheReason = \"fetchCache = force-no-store\";\n }\n if (isOnlyNoStore) {\n if (_cache === \"force-cache\" || typeof revalidate !== \"undefined\" && (revalidate === false || revalidate > 0)) {\n throw new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`);\n }\n cacheReason = \"fetchCache = only-no-store\";\n }\n if (isOnlyCache && _cache === \"no-store\") {\n throw new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`);\n }\n if (isForceCache && (typeof curRevalidate === \"undefined\" || curRevalidate === 0)) {\n cacheReason = \"fetchCache = force-cache\";\n revalidate = false;\n }\n if (typeof revalidate === \"undefined\") {\n if (isDefaultCache) {\n revalidate = false;\n cacheReason = \"fetchCache = default-cache\";\n } else if (autoNoCache) {\n revalidate = 0;\n cacheReason = \"auto no cache\";\n } else if (isDefaultNoStore) {\n revalidate = 0;\n cacheReason = \"fetchCache = default-no-store\";\n } else if (isUsingNoStore) {\n revalidate = 0;\n cacheReason = \"noStore call\";\n } else {\n cacheReason = \"auto cache\";\n revalidate = typeof staticGenerationStore.revalidate === \"boolean\" || typeof staticGenerationStore.revalidate === \"undefined\" ? false : staticGenerationStore.revalidate;\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${revalidate}`;\n }\n if (// `revalidate: 0` values\n !(staticGenerationStore.forceStatic && revalidate === 0) && // we don't consider autoNoCache to switch to dynamic during\n // revalidate although if it occurs during build we do\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 (typeof staticGenerationStore.revalidate === \"undefined\" || typeof revalidate === \"number\" && (staticGenerationStore.revalidate === false || typeof staticGenerationStore.revalidate === \"number\" && revalidate < staticGenerationStore.revalidate))) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (revalidate === 0) {\n staticGenerationStore.postpone == null ? void 0 : staticGenerationStore.postpone.call(staticGenerationStore, \"revalidate: 0\");\n }\n staticGenerationStore.revalidate = revalidate;\n }\n const isCacheableRevalidate = typeof revalidate === \"number\" && revalidate > 0 || revalidate === false;\n let cacheKey;\n if (staticGenerationStore.incrementalCache && isCacheableRevalidate) {\n try {\n cacheKey = await staticGenerationStore.incrementalCache.fetchCacheKey(fetchUrl, isRequestInput ? input : init);\n } catch (err) {\n console.error(`Failed to generate cache key for`, input);\n }\n }\n const fetchIdx = staticGenerationStore.nextFetchId ?? 1;\n staticGenerationStore.nextFetchId = fetchIdx + 1;\n const normalizedRevalidate = typeof revalidate !== \"number\" ? _lib_constants__WEBPACK_IMPORTED_MODULE_2__.CACHE_ONE_YEAR : revalidate;\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 initialInit = init;\n init = {\n body: init._ogBody || init.body\n };\n for (const field of requestInputFields){\n // @ts-expect-error custom fields\n init[field] = initialInit[field];\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) {\n trackFetchMetric(staticGenerationStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus: revalidate === 0 || cacheReasonOverride ? \"skip\" : \"miss\",\n status: res.status,\n method: clonedInit.method || \"GET\"\n });\n }\n if (res.status === 200 && staticGenerationStore.incrementalCache && cacheKey && isCacheableRevalidate) {\n const bodyBuffer = Buffer.from(await res.arrayBuffer());\n try {\n await staticGenerationStore.incrementalCache.set(cacheKey, {\n kind: \"FETCH\",\n data: {\n headers: Object.fromEntries(res.headers.entries()),\n body: bodyBuffer.toString(\"base64\"),\n status: res.status,\n url: res.url\n },\n revalidate: normalizedRevalidate\n }, {\n fetchCache: true,\n revalidate,\n fetchUrl,\n fetchIdx,\n tags\n });\n } catch (err) {\n console.warn(`Failed to set fetch cache`, input, err);\n }\n const response = new Response(bodyBuffer, {\n headers: new Headers(res.headers),\n status: res.status\n });\n Object.defineProperty(response, \"url\", {\n value: res.url\n });\n return response;\n }\n return res;\n });\n };\n let handleUnlock = ()=>Promise.resolve();\n let cacheReasonOverride;\n if (cacheKey && staticGenerationStore.incrementalCache) {\n handleUnlock = await staticGenerationStore.incrementalCache.lock(cacheKey);\n const entry = staticGenerationStore.isOnDemandRevalidate ? null : await staticGenerationStore.incrementalCache.get(cacheKey, {\n kindHint: \"fetch\",\n revalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags\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 === \"FETCH\") {\n // when stale and is revalidating we wait for fresh data\n // so the revalidated entry has the updated data\n if (!(staticGenerationStore.isRevalidate && entry.isStale)) {\n if (entry.isStale) {\n staticGenerationStore.pendingRevalidates ??= {};\n if (!staticGenerationStore.pendingRevalidates[cacheKey]) {\n staticGenerationStore.pendingRevalidates[cacheKey] = doOriginalFetch(true).catch(console.error);\n }\n }\n const resData = entry.value.data;\n trackFetchMetric(staticGenerationStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: \"hit\",\n status: resData.status || 200,\n method: (init == null ? void 0 : init.method) || \"GET\"\n });\n const response = new Response(Buffer.from(resData.body, \"base64\"), {\n headers: resData.headers,\n status: resData.status\n });\n Object.defineProperty(response, \"url\", {\n value: entry.value.data.url\n });\n return response;\n }\n }\n }\n if (staticGenerationStore.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 (!staticGenerationStore.forceStatic && cache === \"no-store\") {\n const dynamicUsageReason = `no-store fetch ${input}${staticGenerationStore.urlPathname ? ` ${staticGenerationStore.urlPathname}` : \"\"}`;\n // If enabled, we should bail out of static generation.\n staticGenerationStore.postpone == null ? void 0 : staticGenerationStore.postpone.call(staticGenerationStore, dynamicUsageReason);\n // PPR is not enabled, or React postpone is not available, we\n // should set the revalidate to 0.\n staticGenerationStore.revalidate = 0;\n const err = new DynamicServerError(dynamicUsageReason);\n staticGenerationStore.dynamicUsageErr = err;\n staticGenerationStore.dynamicUsageDescription = dynamicUsageReason;\n }\n const hasNextConfig = \"next\" in init;\n const { next = {} } = init;\n if (typeof next.revalidate === \"number\" && (typeof staticGenerationStore.revalidate === \"undefined\" || typeof staticGenerationStore.revalidate === \"number\" && next.revalidate < staticGenerationStore.revalidate)) {\n if (!staticGenerationStore.forceDynamic && !staticGenerationStore.forceStatic && next.revalidate === 0) {\n const dynamicUsageReason = `revalidate: 0 fetch ${input}${staticGenerationStore.urlPathname ? ` ${staticGenerationStore.urlPathname}` : \"\"}`;\n // If enabled, we should bail out of static generation.\n staticGenerationStore.postpone == null ? void 0 : staticGenerationStore.postpone.call(staticGenerationStore, dynamicUsageReason);\n const err = new DynamicServerError(dynamicUsageReason);\n staticGenerationStore.dynamicUsageErr = err;\n staticGenerationStore.dynamicUsageDescription = dynamicUsageReason;\n }\n if (!staticGenerationStore.forceStatic || next.revalidate !== 0) {\n staticGenerationStore.revalidate = next.revalidate;\n }\n }\n if (hasNextConfig) delete init.next;\n }\n return doOriginalFetch(false, cacheReasonOverride).finally(handleUnlock);\n });\n };\n globalThis.fetch.__nextGetStaticStore = ()=>{\n return staticGenerationAsyncStorage;\n };\n globalThis.fetch.__nextPatched = true;\n} //# sourceMappingURL=patch-fetch.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFzRTtBQUNqQjtBQUN1RDtBQUM5RDtBQUM5QyxNQUFNUSxnQkFBZ0JDLE1BQXdCLEtBQUs7QUFDNUMsU0FBU0csbUJBQW1CQyxhQUFhLEVBQUVDLFFBQVE7SUFDdEQsSUFBSTtRQUNBLElBQUlDLHVCQUF1QkM7UUFDM0IsSUFBSUgsa0JBQWtCLE9BQU87WUFDekJFLHVCQUF1QkY7UUFDM0IsT0FBTyxJQUFJLE9BQU9BLGtCQUFrQixZQUFZLENBQUNJLE1BQU1KLGtCQUFrQkEsZ0JBQWdCLENBQUMsR0FBRztZQUN6RkUsdUJBQXVCRjtRQUMzQixPQUFPLElBQUksT0FBT0Esa0JBQWtCLGFBQWE7WUFDN0MsTUFBTSxJQUFJSyxNQUFNLENBQUMsMEJBQTBCLEVBQUVMLGNBQWMsTUFBTSxFQUFFQyxTQUFTLDJDQUEyQyxDQUFDO1FBQzVIO1FBQ0EsT0FBT0M7SUFDWCxFQUFFLE9BQU9JLEtBQUs7UUFDViwwRUFBMEU7UUFDMUUsSUFBSUEsZUFBZUQsU0FBU0MsSUFBSUMsT0FBTyxDQUFDQyxRQUFRLENBQUMsdUJBQXVCO1lBQ3BFLE1BQU1GO1FBQ1Y7UUFDQSxPQUFPSDtJQUNYO0FBQ0o7QUFDTyxTQUFTTSxhQUFhQyxJQUFJLEVBQUVDLFdBQVc7SUFDMUMsTUFBTUMsWUFBWSxFQUFFO0lBQ3BCLE1BQU1DLGNBQWMsRUFBRTtJQUN0QixLQUFLLE1BQU1DLE9BQU9KLEtBQUs7UUFDbkIsSUFBSSxPQUFPSSxRQUFRLFVBQVU7WUFDekJELFlBQVlFLElBQUksQ0FBQztnQkFDYkQ7Z0JBQ0FFLFFBQVE7WUFDWjtRQUNKLE9BQU8sSUFBSUYsSUFBSUcsTUFBTSxHQUFHeEIscUVBQXlCQSxFQUFFO1lBQy9Db0IsWUFBWUUsSUFBSSxDQUFDO2dCQUNiRDtnQkFDQUUsUUFBUSxDQUFDLHVCQUF1QixFQUFFdkIscUVBQXlC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QUM1SSx1REFBdUQ7d0JBQ3ZESCxzQkFBc0JtRyxRQUFRLElBQUksT0FBTyxLQUFLLElBQUluRyxzQkFBc0JtRyxRQUFRLENBQUNoQyxJQUFJLENBQUNuRSx1QkFBdUJrSjt3QkFDN0csTUFBTTVLLE1BQU0sSUFBSThELG1CQUFtQjhHO3dCQUNuQ2xKLHNCQUFzQm1KLGVBQWUsR0FBRzdLO3dCQUN4QzBCLHNCQUFzQm9KLHVCQUF1QixHQUFHRjtvQkFDcEQ7b0JBQ0EsSUFBSSxDQUFDbEosc0JBQXNCa0csV0FBVyxJQUFJaEQsS0FBS3NCLFVBQVUsS0FBSyxHQUFHO3dCQUM3RHhFLHNCQUFzQndFLFVBQVUsR0FBR3RCLEtBQUtzQixVQUFVO29CQUN0RDtnQkFDSjtnQkFDQSxJQUFJNkUsZUFBZSxPQUFPOUcsS0FBS1csSUFBSTtZQUN2QztZQUNBLE9BQU93RCxnQkFBZ0IsT0FBT0UscUJBQXFCMkMsT0FBTyxDQUFDbkI7UUFDL0Q7SUFDSjtJQUNBcEcsV0FBV0UsS0FBSyxDQUFDZ0Msb0JBQW9CLEdBQUc7UUFDcEMsT0FBT25DO0lBQ1g7SUFDQUMsV0FBV0UsS0FBSyxDQUFDQyxhQUFhLEdBQUc7QUFDckMsRUFFQSx1Q0FBdUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2xpYi9wYXRjaC1mZXRjaC5qcz9lOWJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFJlbmRlclNwYW4sIE5leHROb2RlU2VydmVyU3BhbiB9IGZyb20gXCIuL3RyYWNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0VHJhY2VyLCBTcGFuS2luZCB9IGZyb20gXCIuL3RyYWNlL3RyYWNlclwiO1xuaW1wb3J0IHsgQ0FDSEVfT05FX1lFQVIsIE5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lELCBORVhUX0NBQ0hFX1RBR19NQVhfTEVOR1RIIH0gZnJvbSBcIi4uLy4uL2xpYi9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIExvZyBmcm9tIFwiLi4vLi4vYnVpbGQvb3V0cHV0L2xvZ1wiO1xuY29uc3QgaXNFZGdlUnVudGltZSA9IHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gXCJlZGdlXCI7XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSZXZhbGlkYXRlKHJldmFsaWRhdGVWYWwsIHBhdGhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmV2YWxpZGF0ZVZhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gcmV2YWxpZGF0ZVZhbDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmV2YWxpZGF0ZVZhbCA9PT0gXCJudW1iZXJcIiAmJiAhaXNOYU4ocmV2YWxpZGF0ZVZhbCkgJiYgcmV2YWxpZGF0ZVZhbCA+IC0xKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkUmV2YWxpZGF0ZSA9IHJldmFsaWRhdGVWYWw7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJldmFsaWRhdGVWYWwgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXZhbGlkYXRlIHZhbHVlIFwiJHtyZXZhbGlkYXRlVmFsfVwiIG9uIFwiJHtwYXRobmFtZX1cIiwgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgb3IgXCJmYWxzZVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRSZXZhbGlkYXRlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBoYW5kbGUgY2xpZW50IGNvbXBvbmVudCBlcnJvciBmcm9tIGF0dGVtcHRpbmcgdG8gY2hlY2sgcmV2YWxpZGF0ZSB2YWx1ZVxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoXCJJbnZhbGlkIHJldmFsaWRhdGVcIikpIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZ3ModGFncywgZGVzY3JpcHRpb24pIHtcbiAgICBjb25zdCB2YWxpZFRhZ3MgPSBbXTtcbiAgICBjb25zdCBpbnZhbGlkVGFncyA9IFtdO1xuICAgIGZvciAoY29uc3QgdGFnIG9mIHRhZ3Mpe1xuICAgICAgICBpZiAodHlwZW9mIHRhZyAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaW52YWxpZFRhZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogXCJpbnZhbGlkIHR5cGUsIG11c3QgYmUgYSBzdHJpbmdcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLmxlbmd0aCA+IE5FWFRfQ0FDSEVfVEFHX01BWF9MRU5HVEgpIHtcbiAgICAgICAgICAgIGludmFsaWRUYWdzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRhZyxcbiAgICAgICAgICAgICAgICByZWFzb246IGBleGNlZWRlZCBtYXggbGVuZ3RoIG9mICR7TkVYVF9DQUNIRV9UQUdfTUFYX0xFTkdUSH1gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlkVGFncy5wdXNoKHRhZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGludmFsaWRUYWdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBpbnZhbGlkIHRhZ3MgcGFzc2VkIHRvICR7ZGVzY3JpcHRpb259OiBgKTtcbiAgICAgICAgZm9yIChjb25zdCB7IHRhZywgcmVhc29uIH0gb2YgaW52YWxpZFRhZ3Mpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHRhZzogXCIke3RhZ31cIiAke3JlYXNvbn1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWRUYWdzO1xufVxuY29uc3QgZ2V0RGVyaXZlZFRhZ3MgPSAocGF0aG5hbWUpPT57XG4gICAgY29uc3QgZGVyaXZlZFRhZ3MgPSBbXG4gICAgICAgIGAvbGF5b3V0YFxuICAgIF07XG4gICAgLy8gd2UgYXV0b21hdGljYWxseSBhZGQgdGhlIGN1cnJlbnQgcGF0aCBzZWdtZW50cyBhcyB0YWdzXG4gICAgLy8gZm9yIHJldmFsaWRhdGVQYXRoIGhhbmRsaW5nXG4gICAgaWYgKHBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIGNvbnN0IHBhdGhuYW1lUGFydHMgPSBwYXRobmFtZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGZvcihsZXQgaSA9IDE7IGkgPCBwYXRobmFtZVBhcnRzLmxlbmd0aCArIDE7IGkrKyl7XG4gICAgICAgICAgICBsZXQgY3VyUGF0aG5hbWUgPSBwYXRobmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oXCIvXCIpO1xuICAgICAgICAgICAgaWYgKGN1clBhdGhuYW1lKSB7XG4gICAgICAgICAgICAgICAgLy8gYWxsIGRlcml2ZWQgdGFncyBvdGhlciB0aGFuIHRoZSBwYWdlIGFyZSBsYXlvdXQgdGFnc1xuICAgICAgICAgICAgICAgIGlmICghY3VyUGF0aG5hbWUuZW5kc1dpdGgoXCIvcGFnZVwiKSAmJiAhY3VyUGF0aG5hbWUuZW5kc1dpdGgoXCIvcm91dGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VyUGF0aG5hbWUgPSBgJHtjdXJQYXRobmFtZX0keyFjdXJQYXRobmFtZS5lbmRzV2l0aChcIi9cIikgPyBcIi9cIiA6IFwiXCJ9bGF5b3V0YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVyaXZlZFRhZ3MucHVzaChjdXJQYXRobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlcml2ZWRUYWdzO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBhZGRJbXBsaWNpdFRhZ3Moc3RhdGljR2VuZXJhdGlvblN0b3JlKSB7XG4gICAgY29uc3QgbmV3VGFncyA9IFtdO1xuICAgIGNvbnN0IHsgcGFnZVBhdGgsIHVybFBhdGhuYW1lIH0gPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmU7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHN0YXRpY0dlbmVyYXRpb25TdG9yZS50YWdzKSkge1xuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUudGFncyA9IFtdO1xuICAgIH1cbiAgICBpZiAocGFnZVBhdGgpIHtcbiAgICAgICAgY29uc3QgZGVyaXZlZFRhZ3MgPSBnZXREZXJpdmVkVGFncyhwYWdlUGF0aCk7XG4gICAgICAgIGZvciAobGV0IHRhZyBvZiBkZXJpdmVkVGFncyl7XG4gICAgICAgICAgICB2YXIgX3N0YXRpY0dlbmVyYXRpb25TdG9yZV90YWdzO1xuICAgICAgICAgICAgdGFnID0gYCR7TkVYVF9DQUNIRV9JTVBMSUNJVF9UQUdfSUR9JHt0YWd9YDtcbiAgICAgICAgICAgIGlmICghKChfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3MgPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmUudGFncykgPT0gbnVsbCA/IHZvaWQgMCA6IF9zdGF0aWNHZW5lcmF0aW9uU3RvcmVfdGFncy5pbmNsdWRlcyh0YWcpKSkge1xuICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS50YWdzLnB1c2godGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1RhZ3MucHVzaCh0YWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh1cmxQYXRobmFtZSkge1xuICAgICAgICB2YXIgX3N0YXRpY0dlbmVyYXRpb25TdG9yZV90YWdzMTtcbiAgICAgICAgY29uc3QgcGFyc2VkUGF0aG5hbWUgPSBuZXcgVVJMKHVybFBhdGhuYW1lLCBcImh0dHA6Ly9uXCIpLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCB0YWcgPSBgJHtORVhUX0NBQ0hFX0lNUExJQ0lUX1RBR19JRH0ke3BhcnNlZFBhdGhuYW1lfWA7XG4gICAgICAgIGlmICghKChfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3MxID0gc3RhdGljR2VuZXJhdGlvblN0b3JlLnRhZ3MpID09IG51bGwgPyB2b2lkIDAgOiBfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3MxLmluY2x1ZGVzKHRhZykpKSB7XG4gICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUudGFncy5wdXNoKHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3VGFncy5wdXNoKHRhZyk7XG4gICAgfVxuICAgIHJldHVybiBuZXdUYWdzO1xufVxuZnVuY3Rpb24gdHJhY2tGZXRjaE1ldHJpYyhzdGF0aWNHZW5lcmF0aW9uU3RvcmUsIGN0eCkge1xuICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlKSByZXR1cm47XG4gICAgaWYgKCFzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZmV0Y2hNZXRyaWNzKSB7XG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mZXRjaE1ldHJpY3MgPSBbXTtcbiAgICB9XG4gICAgY29uc3QgZGVkdXBlRmllbGRzID0gW1xuICAgICAgICBcInVybFwiLFxuICAgICAgICBcInN0YXR1c1wiLFxuICAgICAgICBcIm1ldGhvZFwiXG4gICAgXTtcbiAgICAvLyBkb24ndCBhZGQgbWV0cmljIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGZldGNoXG4gICAgaWYgKHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mZXRjaE1ldHJpY3Muc29tZSgobWV0cmljKT0+e1xuICAgICAgICByZXR1cm4gZGVkdXBlRmllbGRzLmV2ZXJ5KChmaWVsZCk9Pm1ldHJpY1tmaWVsZF0gPT09IGN0eFtmaWVsZF0pO1xuICAgIH0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLmZldGNoTWV0cmljcy5wdXNoKHtcbiAgICAgICAgdXJsOiBjdHgudXJsLFxuICAgICAgICBjYWNoZVN0YXR1czogY3R4LmNhY2hlU3RhdHVzLFxuICAgICAgICBjYWNoZVJlYXNvbjogY3R4LmNhY2hlUmVhc29uLFxuICAgICAgICBzdGF0dXM6IGN0eC5zdGF0dXMsXG4gICAgICAgIG1ldGhvZDogY3R4Lm1ldGhvZCxcbiAgICAgICAgc3RhcnQ6IGN0eC5zdGFydCxcbiAgICAgICAgZW5kOiBEYXRlLm5vdygpLFxuICAgICAgICBpZHg6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5uZXh0RmV0Y2hJZCB8fCAwXG4gICAgfSk7XG59XG4vLyB3ZSBwYXRjaCBmZXRjaCB0byBjb2xsZWN0IGNhY2hlIGluZm9ybWF0aW9uIHVzZWQgZm9yXG4vLyBkZXRlcm1pbmluZyBpZiBhIHBhZ2UgaXMgc3RhdGljIG9yIG5vdFxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoRmV0Y2goeyBzZXJ2ZXJIb29rcywgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSB9KSB7XG4gICAgaWYgKCFnbG9iYWxUaGlzLl9uZXh0T3JpZ2luYWxGZXRjaCkge1xuICAgICAgICBnbG9iYWxUaGlzLl9uZXh0T3JpZ2luYWxGZXRjaCA9IGdsb2JhbFRoaXMuZmV0Y2g7XG4gICAgfVxuICAgIGlmIChnbG9iYWxUaGlzLmZldGNoLl9fbmV4dFBhdGNoZWQpIHJldHVybjtcbiAgICBjb25zdCB7IER5bmFtaWNTZXJ2ZXJFcnJvciB9ID0gc2VydmVySG9va3M7XG4gICAgY29uc3Qgb3JpZ2luRmV0Y2ggPSBnbG9iYWxUaGlzLl9uZXh0T3JpZ2luYWxGZXRjaDtcbiAgICBnbG9iYWxUaGlzLmZldGNoID0gYXN5bmMgKGlucHV0LCBpbml0KT0+e1xuICAgICAgICB2YXIgX2luaXRfbWV0aG9kLCBfdGhpcztcbiAgICAgICAgbGV0IHVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaW5wdXQudXJsIDogaW5wdXQpO1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gXCJcIjtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IFwiXCI7XG4gICAgICAgIH0gY2F0Y2ggIHtcbiAgICAgICAgICAgIC8vIEVycm9yIGNhdXNlZCBieSBtYWxmb3JtZWQgVVJMIHNob3VsZCBiZSBoYW5kbGVkIGJ5IG5hdGl2ZSBmZXRjaFxuICAgICAgICAgICAgdXJsID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZldGNoVXJsID0gKHVybCA9PSBudWxsID8gdm9pZCAwIDogdXJsLmhyZWYpID8/IFwiXCI7XG4gICAgICAgIGNvbnN0IGZldGNoU3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBtZXRob2QgPSAoaW5pdCA9PSBudWxsID8gdm9pZCAwIDogKF9pbml0X21ldGhvZCA9IGluaXQubWV0aG9kKSA9PSBudWxsID8gdm9pZCAwIDogX2luaXRfbWV0aG9kLnRvVXBwZXJDYXNlKCkpIHx8IFwiR0VUXCI7XG4gICAgICAgIC8vIERvIGNyZWF0ZSBhIG5ldyBzcGFuIHRyYWNlIGZvciBpbnRlcm5hbCBmZXRjaGVzIGluIHRoZVxuICAgICAgICAvLyBub24tdmVyYm9zZSBtb2RlLlxuICAgICAgICBjb25zdCBpc0ludGVybmFsID0gKChfdGhpcyA9IGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IGluaXQubmV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzLmludGVybmFsKSA9PT0gdHJ1ZTtcbiAgICAgICAgY29uc3QgaGlkZVNwYW4gPSBwcm9jZXNzLmVudi5ORVhUX09URUxfRkVUQ0hfRElTQUJMRUQgPT09IFwiMVwiO1xuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0VHJhY2VyKCkudHJhY2UoaXNJbnRlcm5hbCA/IE5leHROb2RlU2VydmVyU3Bhbi5pbnRlcm5hbEZldGNoIDogQXBwUmVuZGVyU3Bhbi5mZXRjaCwge1xuICAgICAgICAgICAgaGlkZVNwYW4sXG4gICAgICAgICAgICBraW5kOiBTcGFuS2luZC5DTElFTlQsXG4gICAgICAgICAgICBzcGFuTmFtZTogW1xuICAgICAgICAgICAgICAgIFwiZmV0Y2hcIixcbiAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgZmV0Y2hVcmxcbiAgICAgICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIFwiaHR0cC51cmxcIjogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgXCJodHRwLm1ldGhvZFwiOiBtZXRob2QsXG4gICAgICAgICAgICAgICAgXCJuZXQucGVlci5uYW1lXCI6IHVybCA9PSBudWxsID8gdm9pZCAwIDogdXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgICAgIFwibmV0LnBlZXIucG9ydFwiOiAodXJsID09IG51bGwgPyB2b2lkIDAgOiB1cmwucG9ydCkgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGFzeW5jICgpPT57XG4gICAgICAgICAgICB2YXIgX2dldFJlcXVlc3RNZXRhO1xuICAgICAgICAgICAgY29uc3Qgc3RhdGljR2VuZXJhdGlvblN0b3JlID0gc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpIHx8IChmZXRjaC5fX25leHRHZXRTdGF0aWNTdG9yZSA9PSBudWxsID8gdm9pZCAwIDogZmV0Y2guX19uZXh0R2V0U3RhdGljU3RvcmUuY2FsbChmZXRjaCkpO1xuICAgICAgICAgICAgY29uc3QgaXNSZXF1ZXN0SW5wdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGlucHV0Lm1ldGhvZCA9PT0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgIGNvbnN0IGdldFJlcXVlc3RNZXRhID0gKGZpZWxkKT0+e1xuICAgICAgICAgICAgICAgIC8vIElmIHJlcXVlc3QgaW5wdXQgaXMgcHJlc2VudCBidXQgaW5pdCBpcyBub3QsIHJldHJpZXZlIGZyb20gaW5wdXQgZmlyc3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0W2ZpZWxkXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgfHwgKGlzUmVxdWVzdElucHV0ID8gaW5wdXRbZmllbGRdIDogbnVsbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gSWYgdGhlIHN0YXRpY0dlbmVyYXRpb25TdG9yZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSBjYW4ndCBkbyBhbnlcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgdHJlYXRtZW50IG9mIGZldGNoLCB0aGVyZWZvcmUgZmFsbGJhY2sgdG8gdGhlIG9yaWdpbmFsXG4gICAgICAgICAgICAvLyBmZXRjaCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlIHx8IGlzSW50ZXJuYWwgfHwgc3RhdGljR2VuZXJhdGlvblN0b3JlLmlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkZldGNoKGlucHV0LCBpbml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZXZhbGlkYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZ2V0TmV4dEZpZWxkID0gKGZpZWxkKT0+e1xuICAgICAgICAgICAgICAgIHZhciBfaW5pdF9uZXh0LCBfaW5pdF9uZXh0MSwgX2lucHV0X25leHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiAoaW5pdCA9PSBudWxsID8gdm9pZCAwIDogKF9pbml0X25leHQgPSBpbml0Lm5leHQpID09IG51bGwgPyB2b2lkIDAgOiBfaW5pdF9uZXh0W2ZpZWxkXSkgIT09IFwidW5kZWZpbmVkXCIgPyBpbml0ID09IG51bGwgPyB2b2lkIDAgOiAoX2luaXRfbmV4dDEgPSBpbml0Lm5leHQpID09IG51bGwgPyB2b2lkIDAgOiBfaW5pdF9uZXh0MVtmaWVsZF0gOiBpc1JlcXVlc3RJbnB1dCA/IChfaW5wdXRfbmV4dCA9IGlucHV0Lm5leHQpID09IG51bGwgPyB2b2lkIDAgOiBfaW5wdXRfbmV4dFtmaWVsZF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gUmVxdWVzdEluaXQgZG9lc24ndCBrZWVwIGV4dHJhIGZpZWxkcyBlLmcuIG5leHQgc28gaXQnc1xuICAgICAgICAgICAgLy8gb25seSBhdmFpbGFibGUgaWYgaW5pdCBpcyB1c2VkIHNlcGFyYXRlXG4gICAgICAgICAgICBsZXQgY3VyUmV2YWxpZGF0ZSA9IGdldE5leHRGaWVsZChcInJldmFsaWRhdGVcIik7XG4gICAgICAgICAgICBjb25zdCB0YWdzID0gdmFsaWRhdGVUYWdzKGdldE5leHRGaWVsZChcInRhZ3NcIikgfHwgW10sIGBmZXRjaCAke2lucHV0LnRvU3RyaW5nKCl9YCk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWdzKSkge1xuICAgICAgICAgICAgICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlLnRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLnRhZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgdGFncyl7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlLnRhZ3MuaW5jbHVkZXModGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLnRhZ3MucHVzaCh0YWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW1wbGljaXRUYWdzID0gYWRkSW1wbGljaXRUYWdzKHN0YXRpY0dlbmVyYXRpb25TdG9yZSk7XG4gICAgICAgICAgICBjb25zdCBpc09ubHlDYWNoZSA9IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mZXRjaENhY2hlID09PSBcIm9ubHktY2FjaGVcIjtcbiAgICAgICAgICAgIGNvbnN0IGlzRm9yY2VDYWNoZSA9IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mZXRjaENhY2hlID09PSBcImZvcmNlLWNhY2hlXCI7XG4gICAgICAgICAgICBjb25zdCBpc0RlZmF1bHRDYWNoZSA9IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mZXRjaENhY2hlID09PSBcImRlZmF1bHQtY2FjaGVcIjtcbiAgICAgICAgICAgIGNvbnN0IGlzRGVmYXVsdE5vU3RvcmUgPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZmV0Y2hDYWNoZSA9PT0gXCJkZWZhdWx0LW5vLXN0b3JlXCI7XG4gICAgICAgICAgICBjb25zdCBpc09ubHlOb1N0b3JlID0gc3RhdGljR2VuZXJhdGlvblN0b3JlLmZldGNoQ2FjaGUgPT09IFwib25seS1uby1zdG9yZVwiO1xuICAgICAgICAgICAgY29uc3QgaXNGb3JjZU5vU3RvcmUgPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZmV0Y2hDYWNoZSA9PT0gXCJmb3JjZS1uby1zdG9yZVwiO1xuICAgICAgICAgICAgY29uc3QgaXNVc2luZ05vU3RvcmUgPSAhIXN0YXRpY0dlbmVyYXRpb25TdG9yZS5pc1Vuc3RhYmxlTm9TdG9yZTtcbiAgICAgICAgICAgIGxldCBfY2FjaGUgPSBnZXRSZXF1ZXN0TWV0YShcImNhY2hlXCIpO1xuICAgICAgICAgICAgbGV0IGNhY2hlUmVhc29uID0gXCJcIjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgX2NhY2hlID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBjdXJSZXZhbGlkYXRlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBwcm92aWRpbmcgZmV0Y2ggd2l0aCBhIFJlcXVlc3QgaW5wdXQsIGl0J2xsIGF1dG9tYXRpY2FsbHkgc2V0IGEgY2FjaGUgdmFsdWUgb2YgJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgLy8gd2Ugb25seSB3YW50IHRvIHdhcm4gaWYgdGhlIHVzZXIgaXMgZXhwbGljaXRseSBzZXR0aW5nIGEgY2FjaGUgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAoIShpc1JlcXVlc3RJbnB1dCAmJiBfY2FjaGUgPT09IFwiZGVmYXVsdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBMb2cud2FybihgZmV0Y2ggZm9yICR7ZmV0Y2hVcmx9IG9uICR7c3RhdGljR2VuZXJhdGlvblN0b3JlLnVybFBhdGhuYW1lfSBzcGVjaWZpZWQgXCJjYWNoZTogJHtfY2FjaGV9XCIgYW5kIFwicmV2YWxpZGF0ZTogJHtjdXJSZXZhbGlkYXRlfVwiLCBvbmx5IG9uZSBzaG91bGQgYmUgc3BlY2lmaWVkLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfY2FjaGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX2NhY2hlID09PSBcImZvcmNlLWNhY2hlXCIpIHtcbiAgICAgICAgICAgICAgICBjdXJSZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9jYWNoZSA9PT0gXCJuby1jYWNoZVwiIHx8IF9jYWNoZSA9PT0gXCJuby1zdG9yZVwiIHx8IGlzRm9yY2VOb1N0b3JlIHx8IGlzT25seU5vU3RvcmUpIHtcbiAgICAgICAgICAgICAgICBjdXJSZXZhbGlkYXRlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfY2FjaGUgPT09IFwibm8tY2FjaGVcIiB8fCBfY2FjaGUgPT09IFwibm8tc3RvcmVcIikge1xuICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gYGNhY2hlOiAke19jYWNoZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV2YWxpZGF0ZSA9IHZhbGlkYXRlUmV2YWxpZGF0ZShjdXJSZXZhbGlkYXRlLCBzdGF0aWNHZW5lcmF0aW9uU3RvcmUudXJsUGF0aG5hbWUpO1xuICAgICAgICAgICAgY29uc3QgX2hlYWRlcnMgPSBnZXRSZXF1ZXN0TWV0YShcImhlYWRlcnNcIik7XG4gICAgICAgICAgICBjb25zdCBpbml0SGVhZGVycyA9IHR5cGVvZiAoX2hlYWRlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IF9oZWFkZXJzLmdldCkgPT09IFwiZnVuY3Rpb25cIiA/IF9oZWFkZXJzIDogbmV3IEhlYWRlcnMoX2hlYWRlcnMgfHwge30pO1xuICAgICAgICAgICAgY29uc3QgaGFzVW5DYWNoZWFibGVIZWFkZXIgPSBpbml0SGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpIHx8IGluaXRIZWFkZXJzLmdldChcImNvb2tpZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlzVW5DYWNoZWFibGVNZXRob2QgPSAhW1xuICAgICAgICAgICAgICAgIFwiZ2V0XCIsXG4gICAgICAgICAgICAgICAgXCJoZWFkXCJcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoKChfZ2V0UmVxdWVzdE1ldGEgPSBnZXRSZXF1ZXN0TWV0YShcIm1ldGhvZFwiKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9nZXRSZXF1ZXN0TWV0YS50b0xvd2VyQ2FzZSgpKSB8fCBcImdldFwiKTtcbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBhdXRob3JpemVkIGhlYWRlcnMgb3IgYSBQT1NUIG1ldGhvZCBhbmRcbiAgICAgICAgICAgIC8vIGR5bmFtaWMgZGF0YSB1c2FnZSB3YXMgcHJlc2VudCBhYm92ZSB0aGUgdHJlZSB3ZSBiYWlsXG4gICAgICAgICAgICAvLyBlLmcuIGlmIGNvb2tpZXMoKSBpcyB1c2VkIGJlZm9yZSBhbiBhdXRoZWQvUE9TVCBmZXRjaFxuICAgICAgICAgICAgY29uc3QgYXV0b05vQ2FjaGUgPSAoaGFzVW5DYWNoZWFibGVIZWFkZXIgfHwgaXNVbkNhY2hlYWJsZU1ldGhvZCkgJiYgc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUgPT09IDA7XG4gICAgICAgICAgICBpZiAoaXNGb3JjZU5vU3RvcmUpIHtcbiAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9IFwiZmV0Y2hDYWNoZSA9IGZvcmNlLW5vLXN0b3JlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPbmx5Tm9TdG9yZSkge1xuICAgICAgICAgICAgICAgIGlmIChfY2FjaGUgPT09IFwiZm9yY2UtY2FjaGVcIiB8fCB0eXBlb2YgcmV2YWxpZGF0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiAocmV2YWxpZGF0ZSA9PT0gZmFsc2UgfHwgcmV2YWxpZGF0ZSA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2FjaGU6ICdmb3JjZS1jYWNoZScgdXNlZCBvbiBmZXRjaCBmb3IgJHtmZXRjaFVybH0gd2l0aCAnZXhwb3J0IGNvbnN0IGZldGNoQ2FjaGUgPSAnb25seS1uby1zdG9yZSdgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FjaGVSZWFzb24gPSBcImZldGNoQ2FjaGUgPSBvbmx5LW5vLXN0b3JlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPbmx5Q2FjaGUgJiYgX2NhY2hlID09PSBcIm5vLXN0b3JlXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhY2hlOiAnbm8tc3RvcmUnIHVzZWQgb24gZmV0Y2ggZm9yICR7ZmV0Y2hVcmx9IHdpdGggJ2V4cG9ydCBjb25zdCBmZXRjaENhY2hlID0gJ29ubHktY2FjaGUnYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNGb3JjZUNhY2hlICYmICh0eXBlb2YgY3VyUmV2YWxpZGF0ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCBjdXJSZXZhbGlkYXRlID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gXCJmZXRjaENhY2hlID0gZm9yY2UtY2FjaGVcIjtcbiAgICAgICAgICAgICAgICByZXZhbGlkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJldmFsaWRhdGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0Q2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9IFwiZmV0Y2hDYWNoZSA9IGRlZmF1bHQtY2FjaGVcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG9Ob0NhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9IFwiYXV0byBubyBjYWNoZVwiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNEZWZhdWx0Tm9TdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24gPSBcImZldGNoQ2FjaGUgPSBkZWZhdWx0LW5vLXN0b3JlXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1VzaW5nTm9TdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24gPSBcIm5vU3RvcmUgY2FsbFwiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlUmVhc29uID0gXCJhdXRvIGNhY2hlXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGUgPSB0eXBlb2Ygc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUgPT09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9PT0gXCJ1bmRlZmluZWRcIiA/IGZhbHNlIDogc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FjaGVSZWFzb24pIHtcbiAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbiA9IGByZXZhbGlkYXRlOiAke3JldmFsaWRhdGV9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgvLyB3aGVuIGZvcmNlIHN0YXRpYyBpcyBjb25maWd1cmVkIHdlIGRvbid0IGJhaWwgZnJvbVxuICAgICAgICAgICAgLy8gYHJldmFsaWRhdGU6IDBgIHZhbHVlc1xuICAgICAgICAgICAgIShzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZm9yY2VTdGF0aWMgJiYgcmV2YWxpZGF0ZSA9PT0gMCkgJiYgLy8gd2UgZG9uJ3QgY29uc2lkZXIgYXV0b05vQ2FjaGUgdG8gc3dpdGNoIHRvIGR5bmFtaWMgZHVyaW5nXG4gICAgICAgICAgICAvLyByZXZhbGlkYXRlIGFsdGhvdWdoIGlmIGl0IG9jY3VycyBkdXJpbmcgYnVpbGQgd2UgZG9cbiAgICAgICAgICAgICFhdXRvTm9DYWNoZSAmJiAvLyBJZiB0aGUgcmV2YWxpZGF0ZSB2YWx1ZSBpc24ndCBjdXJyZW50bHkgc2V0IG9yIHRoZSB2YWx1ZSBpcyBsZXNzXG4gICAgICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IHJldmFsaWRhdGUgdmFsdWUsIHdlIHNob3VsZCB1cGRhdGUgdGhlIHJldmFsaWRhdGVcbiAgICAgICAgICAgIC8vIHZhbHVlLlxuICAgICAgICAgICAgKHR5cGVvZiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2YgcmV2YWxpZGF0ZSA9PT0gXCJudW1iZXJcIiAmJiAoc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUgPT09IGZhbHNlIHx8IHR5cGVvZiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9PT0gXCJudW1iZXJcIiAmJiByZXZhbGlkYXRlIDwgc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgc2V0dGluZyB0aGUgcmV2YWxpZGF0ZSB2YWx1ZSB0byAwLCB3ZSBzaG91bGQgdHJ5IHRvXG4gICAgICAgICAgICAgICAgLy8gcG9zdHBvbmUgaW5zdGVhZCBmaXJzdC5cbiAgICAgICAgICAgICAgICBpZiAocmV2YWxpZGF0ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucG9zdHBvbmUgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5wb3N0cG9uZS5jYWxsKHN0YXRpY0dlbmVyYXRpb25TdG9yZSwgXCJyZXZhbGlkYXRlOiAwXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9IHJldmFsaWRhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0NhY2hlYWJsZVJldmFsaWRhdGUgPSB0eXBlb2YgcmV2YWxpZGF0ZSA9PT0gXCJudW1iZXJcIiAmJiByZXZhbGlkYXRlID4gMCB8fCByZXZhbGlkYXRlID09PSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBjYWNoZUtleTtcbiAgICAgICAgICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUuaW5jcmVtZW50YWxDYWNoZSAmJiBpc0NhY2hlYWJsZVJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUtleSA9IGF3YWl0IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5pbmNyZW1lbnRhbENhY2hlLmZldGNoQ2FjaGVLZXkoZmV0Y2hVcmwsIGlzUmVxdWVzdElucHV0ID8gaW5wdXQgOiBpbml0KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGNhY2hlIGtleSBmb3JgLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmV0Y2hJZHggPSBzdGF0aWNHZW5lcmF0aW9uU3RvcmUubmV4dEZldGNoSWQgPz8gMTtcbiAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5uZXh0RmV0Y2hJZCA9IGZldGNoSWR4ICsgMTtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXZhbGlkYXRlID0gdHlwZW9mIHJldmFsaWRhdGUgIT09IFwibnVtYmVyXCIgPyBDQUNIRV9PTkVfWUVBUiA6IHJldmFsaWRhdGU7XG4gICAgICAgICAgICBjb25zdCBkb09yaWdpbmFsRmV0Y2ggPSBhc3luYyAoaXNTdGFsZSwgY2FjaGVSZWFzb25PdmVycmlkZSk9PntcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SW5wdXRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIFwiY2FjaGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjcmVkZW50aWFsc1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhlYWRlcnNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpbnRlZ3JpdHlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJrZWVwYWxpdmVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJtZXRob2RcIixcbiAgICAgICAgICAgICAgICAgICAgXCJtb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwicmVkaXJlY3RcIixcbiAgICAgICAgICAgICAgICAgICAgXCJyZWZlcnJlclwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlZmVycmVyUG9saWN5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwid2luZG93XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZHVwbGV4XCIsXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHBhc3MgdGhyb3VnaCBzaWduYWwgd2hlbiByZXZhbGlkYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgLi4uaXNTdGFsZSA/IFtdIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJzaWduYWxcIlxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZXF1ZXN0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxSW5wdXQgPSBpbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHJlcUlucHV0Ll9vZ0JvZHkgfHwgcmVxSW5wdXQuYm9keVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHJlcXVlc3RJbnB1dEZpZWxkcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGN1c3RvbSBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcU9wdGlvbnNbZmllbGRdID0gcmVxSW5wdXRbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gbmV3IFJlcXVlc3QocmVxSW5wdXQudXJsLCByZXFPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5pdGlhbEluaXQgPSBpbml0O1xuICAgICAgICAgICAgICAgICAgICBpbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogaW5pdC5fb2dCb2R5IHx8IGluaXQuYm9keVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHJlcXVlc3RJbnB1dEZpZWxkcyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGN1c3RvbSBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRbZmllbGRdID0gaW5pdGlhbEluaXRbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkZCBtZXRhZGF0YSB0byBpbml0IHdpdGhvdXQgZWRpdGluZyB0aGUgb3JpZ2luYWxcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9uZWRJbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pbml0LFxuICAgICAgICAgICAgICAgICAgICBuZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0Lm5leHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmZXRjaFR5cGU6IFwib3JpZ2luXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmZXRjaElkeFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luRmV0Y2goaW5wdXQsIGNsb25lZEluaXQpLnRoZW4oYXN5bmMgKHJlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1N0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja0ZldGNoTWV0cmljKHN0YXRpY0dlbmVyYXRpb25TdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmZXRjaFN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb246IGNhY2hlUmVhc29uT3ZlcnJpZGUgfHwgY2FjaGVSZWFzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXM6IHJldmFsaWRhdGUgPT09IDAgfHwgY2FjaGVSZWFzb25PdmVycmlkZSA/IFwic2tpcFwiIDogXCJtaXNzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogY2xvbmVkSW5pdC5tZXRob2QgfHwgXCJHRVRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCAmJiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuaW5jcmVtZW50YWxDYWNoZSAmJiBjYWNoZUtleSAmJiBpc0NhY2hlYWJsZVJldmFsaWRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlCdWZmZXIgPSBCdWZmZXIuZnJvbShhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5pbmNyZW1lbnRhbENhY2hlLnNldChjYWNoZUtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBcIkZFVENIXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhyZXMuaGVhZGVycy5lbnRyaWVzKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYm9keUJ1ZmZlci50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcmVzLnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiBub3JtYWxpemVkUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hDYWNoZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoSWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBzZXQgZmV0Y2ggY2FjaGVgLCBpbnB1dCwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGJvZHlCdWZmZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyhyZXMuaGVhZGVycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNwb25zZSwgXCJ1cmxcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBoYW5kbGVVbmxvY2sgPSAoKT0+UHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICBsZXQgY2FjaGVSZWFzb25PdmVycmlkZTtcbiAgICAgICAgICAgIGlmIChjYWNoZUtleSAmJiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuaW5jcmVtZW50YWxDYWNoZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVubG9jayA9IGF3YWl0IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5pbmNyZW1lbnRhbENhY2hlLmxvY2soY2FjaGVLZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhdGljR2VuZXJhdGlvblN0b3JlLmlzT25EZW1hbmRSZXZhbGlkYXRlID8gbnVsbCA6IGF3YWl0IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5pbmNyZW1lbnRhbENhY2hlLmdldChjYWNoZUtleSwge1xuICAgICAgICAgICAgICAgICAgICBraW5kSGludDogXCJmZXRjaFwiLFxuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFVybCxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hJZHgsXG4gICAgICAgICAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNvZnRUYWdzOiBpbXBsaWNpdFRhZ3NcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlVW5sb2NrKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gZGV2LCBpbmNyZW1lbnRhbCBjYWNoZSByZXNwb25zZSB3aWxsIGJlIG51bGwgaW4gY2FzZSB0aGUgYnJvd3NlciBhZGRzIGBjYWNoZS1jb250cm9sOiBuby1jYWNoZWAgaW4gdGhlIHJlcXVlc3QgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVJlYXNvbk92ZXJyaWRlID0gXCJjYWNoZS1jb250cm9sOiBuby1jYWNoZSAoaGFyZCByZWZyZXNoKVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGVudHJ5ID09IG51bGwgPyB2b2lkIDAgOiBlbnRyeS52YWx1ZSkgJiYgZW50cnkudmFsdWUua2luZCA9PT0gXCJGRVRDSFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gc3RhbGUgYW5kIGlzIHJldmFsaWRhdGluZyB3ZSB3YWl0IGZvciBmcmVzaCBkYXRhXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHRoZSByZXZhbGlkYXRlZCBlbnRyeSBoYXMgdGhlIHVwZGF0ZWQgZGF0YVxuICAgICAgICAgICAgICAgICAgICBpZiAoIShzdGF0aWNHZW5lcmF0aW9uU3RvcmUuaXNSZXZhbGlkYXRlICYmIGVudHJ5LmlzU3RhbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuaXNTdGFsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5wZW5kaW5nUmV2YWxpZGF0ZXMgPz89IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1tjYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLnBlbmRpbmdSZXZhbGlkYXRlc1tjYWNoZUtleV0gPSBkb09yaWdpbmFsRmV0Y2godHJ1ZSkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzRGF0YSA9IGVudHJ5LnZhbHVlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja0ZldGNoTWV0cmljKHN0YXRpY0dlbmVyYXRpb25TdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBmZXRjaFN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZmV0Y2hVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVSZWFzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXM6IFwiaGl0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNEYXRhLnN0YXR1cyB8fCAyMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAoaW5pdCA9PSBudWxsID8gdm9pZCAwIDogaW5pdC5tZXRob2QpIHx8IFwiR0VUXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoQnVmZmVyLmZyb20ocmVzRGF0YS5ib2R5LCBcImJhc2U2NFwiKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc0RhdGEuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc0RhdGEuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXNwb25zZSwgXCJ1cmxcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnRyeS52YWx1ZS5kYXRhLnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGljR2VuZXJhdGlvblN0b3JlLmlzU3RhdGljR2VuZXJhdGlvbiAmJiBpbml0ICYmIHR5cGVvZiBpbml0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjYWNoZSB9ID0gaW5pdDtcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgYGNhY2hlYCBwcm9wZXJ0eSBhcyBDbG91ZGZsYXJlIFdvcmtlcnMgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIGlmIChpc0VkZ2VSdW50aW1lKSBkZWxldGUgaW5pdC5jYWNoZTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY0dlbmVyYXRpb25TdG9yZS5mb3JjZVN0YXRpYyAmJiBjYWNoZSA9PT0gXCJuby1zdG9yZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNVc2FnZVJlYXNvbiA9IGBuby1zdG9yZSBmZXRjaCAke2lucHV0fSR7c3RhdGljR2VuZXJhdGlvblN0b3JlLnVybFBhdGhuYW1lID8gYCAke3N0YXRpY0dlbmVyYXRpb25TdG9yZS51cmxQYXRobmFtZX1gIDogXCJcIn1gO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBlbmFibGVkLCB3ZSBzaG91bGQgYmFpbCBvdXQgb2Ygc3RhdGljIGdlbmVyYXRpb24uXG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5wb3N0cG9uZSA9PSBudWxsID8gdm9pZCAwIDogc3RhdGljR2VuZXJhdGlvblN0b3JlLnBvc3Rwb25lLmNhbGwoc3RhdGljR2VuZXJhdGlvblN0b3JlLCBkeW5hbWljVXNhZ2VSZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAvLyBQUFIgaXMgbm90IGVuYWJsZWQsIG9yIFJlYWN0IHBvc3Rwb25lIGlzIG5vdCBhdmFpbGFibGUsIHdlXG4gICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBzZXQgdGhlIHJldmFsaWRhdGUgdG8gMC5cbiAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRHluYW1pY1NlcnZlckVycm9yKGR5bmFtaWNVc2FnZVJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljVXNhZ2VFcnIgPSBlcnI7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljVXNhZ2VEZXNjcmlwdGlvbiA9IGR5bmFtaWNVc2FnZVJlYXNvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzTmV4dENvbmZpZyA9IFwibmV4dFwiIGluIGluaXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBuZXh0ID0ge30gfSA9IGluaXQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXh0LnJldmFsaWRhdGUgPT09IFwibnVtYmVyXCIgJiYgKHR5cGVvZiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2Ygc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUgPT09IFwibnVtYmVyXCIgJiYgbmV4dC5yZXZhbGlkYXRlIDwgc3RhdGljR2VuZXJhdGlvblN0b3JlLnJldmFsaWRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGljR2VuZXJhdGlvblN0b3JlLmZvcmNlRHluYW1pYyAmJiAhc3RhdGljR2VuZXJhdGlvblN0b3JlLmZvcmNlU3RhdGljICYmIG5leHQucmV2YWxpZGF0ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHluYW1pY1VzYWdlUmVhc29uID0gYHJldmFsaWRhdGU6IDAgZmV0Y2ggJHtpbnB1dH0ke3N0YXRpY0dlbmVyYXRpb25TdG9yZS51cmxQYXRobmFtZSA/IGAgJHtzdGF0aWNHZW5lcmF0aW9uU3RvcmUudXJsUGF0aG5hbWV9YCA6IFwiXCJ9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGVuYWJsZWQsIHdlIHNob3VsZCBiYWlsIG91dCBvZiBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5wb3N0cG9uZSA9PSBudWxsID8gdm9pZCAwIDogc3RhdGljR2VuZXJhdGlvblN0b3JlLnBvc3Rwb25lLmNhbGwoc3RhdGljR2VuZXJhdGlvblN0b3JlLCBkeW5hbWljVXNhZ2VSZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IER5bmFtaWNTZXJ2ZXJFcnJvcihkeW5hbWljVXNhZ2VSZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLmR5bmFtaWNVc2FnZUVyciA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljVXNhZ2VEZXNjcmlwdGlvbiA9IGR5bmFtaWNVc2FnZVJlYXNvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY0dlbmVyYXRpb25TdG9yZS5mb3JjZVN0YXRpYyB8fCBuZXh0LnJldmFsaWRhdGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5yZXZhbGlkYXRlID0gbmV4dC5yZXZhbGlkYXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoYXNOZXh0Q29uZmlnKSBkZWxldGUgaW5pdC5uZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRvT3JpZ2luYWxGZXRjaChmYWxzZSwgY2FjaGVSZWFzb25PdmVycmlkZSkuZmluYWxseShoYW5kbGVVbmxvY2spO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGdsb2JhbFRoaXMuZmV0Y2guX19uZXh0R2V0U3RhdGljU3RvcmUgPSAoKT0+e1xuICAgICAgICByZXR1cm4gc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZTtcbiAgICB9O1xuICAgIGdsb2JhbFRoaXMuZmV0Y2guX19uZXh0UGF0Y2hlZCA9IHRydWU7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGNoLWZldGNoLmpzLm1hcCJdLCJuYW1lcyI6WyJBcHBSZW5kZXJTcGFuIiwiTmV4dE5vZGVTZXJ2ZXJTcGFuIiwiZ2V0VHJhY2VyIiwiU3BhbktpbmQiLCJDQUNIRV9PTkVfWUVBUiIsIk5FWFRfQ0FDSEVfSU1QTElDSVRfVEFHX0lEIiwiTkVYVF9DQUNIRV9UQUdfTUFYX0xFTkdUSCIsIkxvZyIsImlzRWRnZVJ1bnRpbWUiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9SVU5USU1FIiwidmFsaWRhdGVSZXZhbGlkYXRlIiwicmV2YWxpZGF0ZVZhbCIsInBhdGhuYW1lIiwibm9ybWFsaXplZFJldmFsaWRhdGUiLCJ1bmRlZmluZWQiLCJpc05hTiIsIkVycm9yIiwiZXJyIiwibWVzc2FnZSIsImluY2x1ZGVzIiwidmFsaWRhdGVUYWdzIiwidGFncyIsImRlc2NyaXB0aW9uIiwidmFsaWRUYWdzIiwiaW52YWxpZFRhZ3MiLCJ0YWciLCJwdXNoIiwicmVhc29uIiwibGVuZ3RoIiwiY29uc29sZSIsIndhcm4iLCJsb2ciLCJnZXREZXJpdmVkVGFncyIsImRlcml2ZWRUYWdzIiwic3RhcnRzV2l0aCIsInBhdGhuYW1lUGFydHMiLCJzcGxpdCIsImkiLCJjdXJQYXRobmFtZSIsInNsaWNlIiwiam9pbiIsImVuZHNXaXRoIiwiYWRkSW1wbGljaXRUYWdzIiwic3RhdGljR2VuZXJhdGlvblN0b3JlIiwibmV3VGFncyIsInBhZ2VQYXRoIiwidXJsUGF0aG5hbWUiLCJBcnJheSIsImlzQXJyYXkiLCJfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3MiLCJfc3RhdGljR2VuZXJhdGlvblN0b3JlX3RhZ3MxIiwicGFyc2VkUGF0aG5hbWUiLCJVUkwiLCJ0cmFja0ZldGNoTWV0cmljIiwiY3R4IiwiZmV0Y2hNZXRyaWNzIiwiZGVkdXBlRmllbGRzIiwic29tZSIsIm1ldHJpYyIsImV2ZXJ5IiwiZmllbGQiLCJ1cmwiLCJjYWNoZVN0YXR1cyIsImNhY2hlUmVhc29uIiwic3RhdHVzIiwibWV0aG9kIiwic3RhcnQiLCJlbmQiLCJEYXRlIiwibm93IiwiaWR4IiwibmV4dEZldGNoSWQiLCJwYXRjaEZldGNoIiwic2VydmVySG9va3MiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiZ2xvYmFsVGhpcyIsIl9uZXh0T3JpZ2luYWxGZXRjaCIsImZldGNoIiwiX19uZXh0UGF0Y2hlZCIsIkR5bmFtaWNTZXJ2ZXJFcnJvciIsIm9yaWdpbkZldGNoIiwiaW5wdXQiLCJpbml0IiwiX2luaXRfbWV0aG9kIiwiX3RoaXMiLCJSZXF1ZXN0IiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImZldGNoVXJsIiwiaHJlZiIsImZldGNoU3RhcnQiLCJ0b1VwcGVyQ2FzZSIsImlzSW50ZXJuYWwiLCJuZXh0IiwiaW50ZXJuYWwiLCJoaWRlU3BhbiIsIk5FWFRfT1RFTF9GRVRDSF9ESVNBQkxFRCIsInRyYWNlIiwiaW50ZXJuYWxGZXRjaCIsImtpbmQiLCJDTElFTlQiLCJzcGFuTmFtZSIsImZpbHRlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGVzIiwiaG9zdG5hbWUiLCJwb3J0IiwiX2dldFJlcXVlc3RNZXRhIiwiZ2V0U3RvcmUiLCJfX25leHRHZXRTdGF0aWNTdG9yZSIsImNhbGwiLCJpc1JlcXVlc3RJbnB1dCIsImdldFJlcXVlc3RNZXRhIiwidmFsdWUiLCJpc0RyYWZ0TW9kZSIsInJldmFsaWRhdGUiLCJnZXROZXh0RmllbGQiLCJfaW5pdF9uZXh0IiwiX2luaXRfbmV4dDEiLCJfaW5wdXRfbmV4dCIsImN1clJldmFsaWRhdGUiLCJ0b1N0cmluZyIsImltcGxpY2l0VGFncyIsImlzT25seUNhY2hlIiwiZmV0Y2hDYWNoZSIsImlzRm9yY2VDYWNoZSIsImlzRGVmYXVsdENhY2hlIiwiaXNEZWZhdWx0Tm9TdG9yZSIsImlzT25seU5vU3RvcmUiLCJpc0ZvcmNlTm9TdG9yZSIsImlzVXNpbmdOb1N0b3JlIiwiaXNVbnN0YWJsZU5vU3RvcmUiLCJfY2FjaGUiLCJfaGVhZGVycyIsImluaXRIZWFkZXJzIiwiZ2V0IiwiSGVhZGVycyIsImhhc1VuQ2FjaGVhYmxlSGVhZGVyIiwiaXNVbkNhY2hlYWJsZU1ldGhvZCIsInRvTG93ZXJDYXNlIiwiYXV0b05vQ2FjaGUiLCJmb3JjZVN0YXRpYyIsInBvc3Rwb25lIiwiaXNDYWNoZWFibGVSZXZhbGlkYXRlIiwiY2FjaGVLZXkiLCJpbmNyZW1lbnRhbENhY2hlIiwiZmV0Y2hDYWNoZUtleSIsImVycm9yIiwiZmV0Y2hJZHgiLCJkb09yaWdpbmFsRmV0Y2giLCJpc1N0YWxlIiwiY2FjaGVSZWFzb25PdmVycmlkZSIsInJlcXVlc3RJbnB1dEZpZWxkcyIsInJlcUlucHV0IiwicmVxT3B0aW9ucyIsImJvZHkiLCJfb2dCb2R5IiwiaW5pdGlhbEluaXQiLCJjbG9uZWRJbml0IiwiZmV0Y2hUeXBlIiwidGhlbiIsInJlcyIsImJvZHlCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiYXJyYXlCdWZmZXIiLCJzZXQiLCJkYXRhIiwiaGVhZGVycyIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsInJlc3BvbnNlIiwiUmVzcG9uc2UiLCJkZWZpbmVQcm9wZXJ0eSIsImhhbmRsZVVubG9jayIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9jayIsImVudHJ5IiwiaXNPbkRlbWFuZFJldmFsaWRhdGUiLCJraW5kSGludCIsInNvZnRUYWdzIiwiaXNSZXZhbGlkYXRlIiwicGVuZGluZ1JldmFsaWRhdGVzIiwiY2F0Y2giLCJyZXNEYXRhIiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwiY2FjaGUiLCJkeW5hbWljVXNhZ2VSZWFzb24iLCJkeW5hbWljVXNhZ2VFcnIiLCJkeW5hbWljVXNhZ2VEZXNjcmlwdGlvbiIsImhhc05leHRDb25maWciLCJmb3JjZUR5bmFtaWMiLCJmaW5hbGx5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/patch-fetch.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/server-action-request-meta.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/server-action-request-meta.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getIsServerAction: () => (/* binding */ getIsServerAction),\n/* harmony export */ getServerActionRequestMetadata: () => (/* binding */ getServerActionRequestMetadata)\n/* harmony export */ });\n/* harmony import */ var _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\");\n\nfunction getServerActionRequestMetadata(req) {\n let actionId;\n let contentType;\n if (req.headers instanceof Headers) {\n actionId = req.headers.get(_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__.ACTION.toLowerCase()) ?? null;\n contentType = req.headers.get(\"content-type\");\n } else {\n actionId = req.headers[_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_0__.ACTION.toLowerCase()] ?? null;\n contentType = req.headers[\"content-type\"] ?? null;\n }\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 return {\n actionId,\n isURLEncodedAction,\n isMultipartAction,\n isFetchAction\n };\n}\nfunction getIsServerAction(req) {\n const { isFetchAction, isURLEncodedAction, isMultipartAction } = getServerActionRequestMetadata(req);\n return Boolean(isFetchAction || isURLEncodedAction || isMultipartAction);\n} //# sourceMappingURL=server-action-request-meta.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3NlcnZlci1hY3Rpb24tcmVxdWVzdC1tZXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFvRTtBQUM3RCxTQUFTQywrQkFBK0JDLEdBQUc7SUFDOUMsSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlGLElBQUlHLE9BQU8sWUFBWUMsU0FBUztRQUNoQ0gsV0FBV0QsSUFBSUcsT0FBTyxDQUFDRSxHQUFHLENBQUNQLHlFQUFNQSxDQUFDUSxXQUFXLE9BQU87UUFDcERKLGNBQWNGLElBQUlHLE9BQU8sQ0FBQ0UsR0FBRyxDQUFDO0lBQ2xDLE9BQU87UUFDSEosV0FBV0QsSUFBSUcsT0FBTyxDQUFDTCx5RUFBTUEsQ0FBQ1EsV0FBVyxHQUFHLElBQUk7UUFDaERKLGNBQWNGLElBQUlHLE9BQU8sQ0FBQyxlQUFlLElBQUk7SUFDakQ7SUFDQSxNQUFNSSxxQkFBcUJDLFFBQVFSLElBQUlTLE1BQU0sS0FBSyxVQUFVUCxnQkFBZ0I7SUFDNUUsTUFBTVEsb0JBQW9CRixRQUFRUixJQUFJUyxNQUFNLEtBQUssVUFBV1AsQ0FBQUEsZUFBZSxPQUFPLEtBQUssSUFBSUEsWUFBWVMsVUFBVSxDQUFDLHNCQUFxQjtJQUN2SSxNQUFNQyxnQkFBZ0JKLFFBQVFQLGFBQWFZLGFBQWEsT0FBT1osYUFBYSxZQUFZRCxJQUFJUyxNQUFNLEtBQUs7SUFDdkcsT0FBTztRQUNIUjtRQUNBTTtRQUNBRztRQUNBRTtJQUNKO0FBQ0o7QUFDTyxTQUFTRSxrQkFBa0JkLEdBQUc7SUFDakMsTUFBTSxFQUFFWSxhQUFhLEVBQUVMLGtCQUFrQixFQUFFRyxpQkFBaUIsRUFBRSxHQUFHWCwrQkFBK0JDO0lBQ2hHLE9BQU9RLFFBQVFJLGlCQUFpQkwsc0JBQXNCRztBQUMxRCxFQUVBLHNEQUFzRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3NlcnZlci1hY3Rpb24tcmVxdWVzdC1tZXRhLmpzPzkxMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUNUSU9OIH0gZnJvbSBcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVyc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZlckFjdGlvblJlcXVlc3RNZXRhZGF0YShyZXEpIHtcbiAgICBsZXQgYWN0aW9uSWQ7XG4gICAgbGV0IGNvbnRlbnRUeXBlO1xuICAgIGlmIChyZXEuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICAgICAgYWN0aW9uSWQgPSByZXEuaGVhZGVycy5nZXQoQUNUSU9OLnRvTG93ZXJDYXNlKCkpID8/IG51bGw7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVxLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbklkID0gcmVxLmhlYWRlcnNbQUNUSU9OLnRvTG93ZXJDYXNlKCldID8/IG51bGw7XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gPz8gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaXNVUkxFbmNvZGVkQWN0aW9uID0gQm9vbGVhbihyZXEubWV0aG9kID09PSBcIlBPU1RcIiAmJiBjb250ZW50VHlwZSA9PT0gXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIik7XG4gICAgY29uc3QgaXNNdWx0aXBhcnRBY3Rpb24gPSBCb29sZWFuKHJlcS5tZXRob2QgPT09IFwiUE9TVFwiICYmIChjb250ZW50VHlwZSA9PSBudWxsID8gdm9pZCAwIDogY29udGVudFR5cGUuc3RhcnRzV2l0aChcIm11bHRpcGFydC9mb3JtLWRhdGFcIikpKTtcbiAgICBjb25zdCBpc0ZldGNoQWN0aW9uID0gQm9vbGVhbihhY3Rpb25JZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBhY3Rpb25JZCA9PT0gXCJzdHJpbmdcIiAmJiByZXEubWV0aG9kID09PSBcIlBPU1RcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uSWQsXG4gICAgICAgIGlzVVJMRW5jb2RlZEFjdGlvbixcbiAgICAgICAgaXNNdWx0aXBhcnRBY3Rpb24sXG4gICAgICAgIGlzRmV0Y2hBY3Rpb25cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldElzU2VydmVyQWN0aW9uKHJlcSkge1xuICAgIGNvbnN0IHsgaXNGZXRjaEFjdGlvbiwgaXNVUkxFbmNvZGVkQWN0aW9uLCBpc011bHRpcGFydEFjdGlvbiB9ID0gZ2V0U2VydmVyQWN0aW9uUmVxdWVzdE1ldGFkYXRhKHJlcSk7XG4gICAgcmV0dXJuIEJvb2xlYW4oaXNGZXRjaEFjdGlvbiB8fCBpc1VSTEVuY29kZWRBY3Rpb24gfHwgaXNNdWx0aXBhcnRBY3Rpb24pO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXJ2ZXItYWN0aW9uLXJlcXVlc3QtbWV0YS5qcy5tYXAiXSwibmFtZXMiOlsiQUNUSU9OIiwiZ2V0U2VydmVyQWN0aW9uUmVxdWVzdE1ldGFkYXRhIiwicmVxIiwiYWN0aW9uSWQiLCJjb250ZW50VHlwZSIsImhlYWRlcnMiLCJIZWFkZXJzIiwiZ2V0IiwidG9Mb3dlckNhc2UiLCJpc1VSTEVuY29kZWRBY3Rpb24iLCJCb29sZWFuIiwibWV0aG9kIiwiaXNNdWx0aXBhcnRBY3Rpb24iLCJzdGFydHNXaXRoIiwiaXNGZXRjaEFjdGlvbiIsInVuZGVmaW5lZCIsImdldElzU2VydmVyQWN0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/server-action-request-meta.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/trace/constants.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/trace/constants.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AppRenderSpan: () => (/* binding */ AppRenderSpan),\n/* harmony export */ AppRouteRouteHandlersSpan: () => (/* binding */ AppRouteRouteHandlersSpan),\n/* harmony export */ BaseServerSpan: () => (/* binding */ BaseServerSpan),\n/* harmony export */ LoadComponentsSpan: () => (/* binding */ LoadComponentsSpan),\n/* harmony export */ NextNodeServerSpan: () => (/* binding */ NextNodeServerSpan),\n/* harmony export */ NextServerSpan: () => (/* binding */ NextServerSpan),\n/* harmony export */ NextVanillaSpanAllowlist: () => (/* binding */ NextVanillaSpanAllowlist),\n/* harmony export */ NodeSpan: () => (/* binding */ NodeSpan),\n/* harmony export */ RenderSpan: () => (/* binding */ RenderSpan),\n/* harmony export */ ResolveMetadataSpan: () => (/* binding */ ResolveMetadataSpan),\n/* harmony export */ RouterSpan: () => (/* binding */ RouterSpan),\n/* harmony export */ StartServerSpan: () => (/* binding */ StartServerSpan)\n/* harmony export */ });\n/**\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 */ var BaseServerSpan;\n(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})(BaseServerSpan || (BaseServerSpan = {}));\nvar LoadComponentsSpan;\n(function(LoadComponentsSpan) {\n LoadComponentsSpan[\"loadDefaultErrorComponents\"] = \"LoadComponents.loadDefaultErrorComponents\";\n LoadComponentsSpan[\"loadComponents\"] = \"LoadComponents.loadComponents\";\n})(LoadComponentsSpan || (LoadComponentsSpan = {}));\nvar NextServerSpan;\n(function(NextServerSpan) {\n NextServerSpan[\"getRequestHandler\"] = \"NextServer.getRequestHandler\";\n NextServerSpan[\"getServer\"] = \"NextServer.getServer\";\n NextServerSpan[\"getServerRequestHandler\"] = \"NextServer.getServerRequestHandler\";\n NextServerSpan[\"createServer\"] = \"createServer.createServer\";\n})(NextServerSpan || (NextServerSpan = {}));\nvar NextNodeServerSpan;\n(function(NextNodeServerSpan) {\n NextNodeServerSpan[\"compression\"] = \"NextNodeServer.compression\";\n NextNodeServerSpan[\"getBuildId\"] = \"NextNodeServer.getBuildId\";\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[\"route\"] = \"route\";\n NextNodeServerSpan[\"onProxyReq\"] = \"onProxyReq\";\n NextNodeServerSpan[\"apiResolver\"] = \"apiResolver\";\n NextNodeServerSpan[\"internalFetch\"] = \"internalFetch\";\n})(NextNodeServerSpan || (NextNodeServerSpan = {}));\nvar StartServerSpan;\n(function(StartServerSpan) {\n StartServerSpan[\"startServer\"] = \"startServer.startServer\";\n})(StartServerSpan || (StartServerSpan = {}));\nvar RenderSpan;\n(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})(RenderSpan || (RenderSpan = {}));\nvar AppRenderSpan;\n(function(AppRenderSpan) {\n AppRenderSpan[\"renderToString\"] = \"AppRender.renderToString\";\n AppRenderSpan[\"renderToReadableStream\"] = \"AppRender.renderToReadableStream\";\n AppRenderSpan[\"getBodyResult\"] = \"AppRender.getBodyResult\";\n AppRenderSpan[\"fetch\"] = \"AppRender.fetch\";\n})(AppRenderSpan || (AppRenderSpan = {}));\nvar RouterSpan;\n(function(RouterSpan) {\n RouterSpan[\"executeRoute\"] = \"Router.executeRoute\";\n})(RouterSpan || (RouterSpan = {}));\nvar NodeSpan;\n(function(NodeSpan) {\n NodeSpan[\"runHandler\"] = \"Node.runHandler\";\n})(NodeSpan || (NodeSpan = {}));\nvar AppRouteRouteHandlersSpan;\n(function(AppRouteRouteHandlersSpan) {\n AppRouteRouteHandlersSpan[\"runHandler\"] = \"AppRouteRouteHandlers.runHandler\";\n})(AppRouteRouteHandlersSpan || (AppRouteRouteHandlersSpan = {}));\nvar ResolveMetadataSpan;\n(function(ResolveMetadataSpan) {\n ResolveMetadataSpan[\"generateMetadata\"] = \"ResolveMetadata.generateMetadata\";\n ResolveMetadataSpan[\"generateViewport\"] = \"ResolveMetadata.generateViewport\";\n})(ResolveMetadataSpan || (ResolveMetadataSpan = {}));\n// This list is used to filter out spans that are not relevant to the user\nconst NextVanillaSpanAllowlist = [\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.findPageComponents\",\n \"NextNodeServer.getLayoutOrPageModule\"\n];\n //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3RyYWNlL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7RUFLRSxHQUFHLDRDQUE0QztBQUNqRCw0QkFBNEIsR0FBRyxJQUFJQTtBQUNsQyxVQUFTQSxjQUFjO0lBQ3BCQSxjQUFjLENBQUMsZ0JBQWdCLEdBQUc7SUFDbENBLGNBQWMsQ0FBQyxNQUFNLEdBQUc7SUFDeEJBLGNBQWMsQ0FBQyxPQUFPLEdBQUc7SUFDekJBLGNBQWMsQ0FBQyxnQkFBZ0IsR0FBRztJQUNsQ0EsY0FBYyxDQUFDLFNBQVMsR0FBRztJQUMzQkEsY0FBYyxDQUFDLGlDQUFpQyxHQUFHO0lBQ25EQSxjQUFjLENBQUMsbUJBQW1CLEdBQUc7SUFDckNBLGNBQWMsQ0FBQyxlQUFlLEdBQUc7SUFDakNBLGNBQWMsQ0FBQyxjQUFjLEdBQUc7SUFDaENBLGNBQWMsQ0FBQyx3QkFBd0IsR0FBRztJQUMxQ0EsY0FBYyxDQUFDLG9CQUFvQixHQUFHO0lBQ3RDQSxjQUFjLENBQUMsWUFBWSxHQUFHO0FBQ2xDLEdBQUdBLGtCQUFtQkEsQ0FBQUEsaUJBQWlCLENBQUM7QUFDeEMsSUFBSUM7QUFDSCxVQUFTQSxrQkFBa0I7SUFDeEJBLGtCQUFrQixDQUFDLDZCQUE2QixHQUFHO0lBQ25EQSxrQkFBa0IsQ0FBQyxpQkFBaUIsR0FBRztBQUMzQyxHQUFHQSxzQkFBdUJBLENBQUFBLHFCQUFxQixDQUFDO0FBQ2hELElBQUlDO0FBQ0gsVUFBU0EsY0FBYztJQUNwQkEsY0FBYyxDQUFDLG9CQUFvQixHQUFHO0lBQ3RDQSxjQUFjLENBQUMsWUFBWSxHQUFHO0lBQzlCQSxjQUFjLENBQUMsMEJBQTBCLEdBQUc7SUFDNUNBLGNBQWMsQ0FBQyxlQUFlLEdBQUc7QUFDckMsR0FBR0Esa0JBQW1CQSxDQUFBQSxpQkFBaUIsQ0FBQztBQUN4QyxJQUFJQztBQUNILFVBQVNBLGtCQUFrQjtJQUN4QkEs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QUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0gsQ0FBQztBQUNvTSxDQUV0TSxxQ0FBcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL2xpYi90cmFjZS9jb25zdGFudHMuanM/NGQwYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIHByZWRlZmluZWQgY29uc3RhbnRzIGZvciB0aGUgdHJhY2Ugc3BhbiBuYW1lIGluIG5leHQvc2VydmVyLlxuICpcbiAqIEN1cnJlbnRseSwgbmV4dC9zZXJ2ZXIvdHJhY2VyIGlzIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9ubHkgZm9yIHRyYWNraW5nXG4gKiBuZXh0LmpzJ3MgaW1wbGVtZW50YXRpb24gb25seSB3aXRoIGtub3duIHNwYW4gbmFtZXMgZGVmaW5lZCBoZXJlLlxuICoqLyAvLyBlc2xpbnQgdHlwZXNjcmlwdCBoYXMgYSBidWcgd2l0aCBUUyBlbnVtc1xuLyogZXNsaW50LWRpc2FibGUgbm8tc2hhZG93ICovIHZhciBCYXNlU2VydmVyU3BhbjtcbihmdW5jdGlvbihCYXNlU2VydmVyU3Bhbikge1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wiaGFuZGxlUmVxdWVzdFwiXSA9IFwiQmFzZVNlcnZlci5oYW5kbGVSZXF1ZXN0XCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJydW5cIl0gPSBcIkJhc2VTZXJ2ZXIucnVuXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJwaXBlXCJdID0gXCJCYXNlU2VydmVyLnBpcGVcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcImdldFN0YXRpY0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIuZ2V0U3RhdGljSFRNTFwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlclwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyVG9SZXNwb25zZVdpdGhDb21wb25lbnRzXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlclRvUmVzcG9uc2VXaXRoQ29tcG9uZW50c1wiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyVG9SZXNwb25zZVwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJUb1Jlc3BvbnNlXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJyZW5kZXJUb0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyVG9IVE1MXCI7XG4gICAgQmFzZVNlcnZlclNwYW5bXCJyZW5kZXJFcnJvclwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXJFcnJvclwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyRXJyb3JUb1Jlc3BvbnNlXCJdID0gXCJCYXNlU2VydmVyLnJlbmRlckVycm9yVG9SZXNwb25zZVwiO1xuICAgIEJhc2VTZXJ2ZXJTcGFuW1wicmVuZGVyRXJyb3JUb0hUTUxcIl0gPSBcIkJhc2VTZXJ2ZXIucmVuZGVyRXJyb3JUb0hUTUxcIjtcbiAgICBCYXNlU2VydmVyU3BhbltcInJlbmRlcjQwNFwiXSA9IFwiQmFzZVNlcnZlci5yZW5kZXI0MDRcIjtcbn0pKEJhc2VTZXJ2ZXJTcGFuIHx8IChCYXNlU2VydmVyU3BhbiA9IHt9KSk7XG52YXIgTG9hZENvbXBvbmVudHNTcGFuO1xuKGZ1bmN0aW9uKExvYWRDb21wb25lbnRzU3Bhbikge1xuICAgIExvYWRDb21wb25lbnRzU3BhbltcImxvYWREZWZhdWx0RXJyb3JDb21wb25lbnRzXCJdID0gXCJMb2FkQ29tcG9uZW50cy5sb2FkRGVmYXVsdEVycm9yQ29tcG9uZW50c1wiO1xuICAgIExvYWRDb21wb25lbnRzU3BhbltcImxvYWRDb21wb25lbnRzXCJdID0gXCJMb2FkQ29tcG9uZW50cy5sb2FkQ29tcG9uZW50c1wiO1xufSkoTG9hZENvbXBvbmVudHNTcGFuIHx8IChMb2FkQ29tcG9uZW50c1NwYW4gPSB7fSkpO1xudmFyIE5leHRTZXJ2ZXJTcGFuO1xuKGZ1bmN0aW9uKE5leHRTZXJ2ZXJTcGFuKSB7XG4gICAgTmV4dFNlcnZlclNwYW5bXCJnZXRSZXF1ZXN0SGFuZGxlclwiXSA9IFwiTmV4dFNlcnZlci5nZXRSZXF1ZXN0SGFuZGxlclwiO1xuICAgIE5leHRTZXJ2ZXJTcGFuW1wiZ2V0U2VydmVyXCJdID0gXCJOZXh0U2VydmVyLmdldFNlcnZlclwiO1xuICAgIE5leHRTZXJ2ZXJTcGFuW1wiZ2V0U2VydmVyUmVxdWVzdEhhbmRsZXJcIl0gPSBcIk5leHRTZXJ2ZXIuZ2V0U2VydmVyUmVxdWVzdEhhbmRsZXJcIjtcbiAgICBOZXh0U2VydmVyU3BhbltcImNyZWF0ZVNlcnZlclwiXSA9IFwiY3JlYXRlU2VydmVyLmNyZWF0ZVNlcnZlclwiO1xufSkoTmV4dFNlcnZlclNwYW4gfHwgKE5leHRTZXJ2ZXJTcGFuID0ge30pKTtcbnZhciBOZXh0Tm9kZVNlcnZlclNwYW47XG4oZnVuY3Rpb24oTmV4dE5vZGVTZXJ2ZXJTcGFuKSB7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiY29tcHJlc3Npb25cIl0gPSBcIk5leHROb2RlU2VydmVyLmNvbXByZXNzaW9uXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2V0QnVpbGRJZFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0QnVpbGRJZFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldExheW91dE9yUGFnZU1vZHVsZVwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0TGF5b3V0T3JQYWdlTW9kdWxlXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVTdGF0aWNSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlU3RhdGljUm91dGVzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2VuZXJhdGVGc1N0YXRpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlUHVibGljUm91dGVzXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZW5lcmF0ZVB1YmxpY1JvdXRlc1wiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdlbmVyYXRlSW1hZ2VSb3V0ZXNcIl0gPSBcIk5leHROb2RlU2VydmVyLmdlbmVyYXRlSW1hZ2VSb3V0ZXMucm91dGVcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJzZW5kUmVuZGVyUmVzdWx0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5zZW5kUmVuZGVyUmVzdWx0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicHJveHlSZXF1ZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5wcm94eVJlcXVlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJydW5BcGlcIl0gPSBcIk5leHROb2RlU2VydmVyLnJ1bkFwaVwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wicmVuZGVySFRNTFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVySFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImltYWdlT3B0aW1pemVyXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5pbWFnZU9wdGltaXplclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFBhZ2VQYXRoXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRQYWdlUGF0aFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImdldFJvdXRlc01hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRSb3V0ZXNNYW5pZmVzdFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcImZpbmRQYWdlQ29tcG9uZW50c1wiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZmluZFBhZ2VDb21wb25lbnRzXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiZ2V0Rm9udE1hbmlmZXN0XCJdID0gXCJOZXh0Tm9kZVNlcnZlci5nZXRGb250TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRTZXJ2ZXJDb21wb25lbnRNYW5pZmVzdFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0U2VydmVyQ29tcG9uZW50TWFuaWZlc3RcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJnZXRSZXF1ZXN0SGFuZGxlclwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIuZ2V0UmVxdWVzdEhhbmRsZXJcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJyZW5kZXJUb0hUTUxcIl0gPSBcIk5leHROb2RlU2VydmVyLnJlbmRlclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlckVycm9yVG9IVE1MXCJdID0gXCJOZXh0Tm9kZVNlcnZlci5yZW5kZXJFcnJvclRvSFRNTFwiO1xuICAgIE5leHROb2RlU2VydmVyU3BhbltcInJlbmRlcjQwNFwiXSA9IFwiTmV4dE5vZGVTZXJ2ZXIucmVuZGVyNDA0XCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuWy8vIG5lc3RlZCBpbm5lciBzcGFuLCBkb2VzIG5vdCByZXF1aXJlIHBhcmVudCBzY29wZSBuYW1lXG4gICAgXCJyb3V0ZVwiXSA9IFwicm91dGVcIjtcbiAgICBOZXh0Tm9kZVNlcnZlclNwYW5bXCJvblByb3h5UmVxXCJdID0gXCJvblByb3h5UmVxXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiYXBpUmVzb2x2ZXJcIl0gPSBcImFwaVJlc29sdmVyXCI7XG4gICAgTmV4dE5vZGVTZXJ2ZXJTcGFuW1wiaW50ZXJuYWxGZXRjaFwiXSA9IFwiaW50ZXJuYWxGZXRjaFwiO1xufSkoTmV4dE5vZGVTZXJ2ZXJTcGFuIHx8IChOZXh0Tm9kZVNlcnZlclNwYW4gPSB7fSkpO1xudmFyIFN0YXJ0U2VydmVyU3BhbjtcbihmdW5jdGlvbihTdGFydFNlcnZlclNwYW4pIHtcbiAgICBTdGFydFNlcnZlclNwYW5bXCJzdGFydFNlcnZlclwiXSA9IFwic3RhcnRTZXJ2ZXIuc3RhcnRTZXJ2ZXJcIjtcbn0pKFN0YXJ0U2VydmVyU3BhbiB8fCAoU3RhcnRTZXJ2ZXJTcGFuID0ge30pKTtcbnZhciBSZW5kZXJTcGFuO1xuKGZ1bmN0aW9uKFJlbmRlclNwYW4pIHtcbiAgICBSZW5kZXJTcGFuW1wiZ2V0U2VydmVyU2lkZVByb3BzXCJdID0gXCJSZW5kZXIuZ2V0U2VydmVyU2lkZVByb3BzXCI7XG4gICAgUmVuZGVyU3BhbltcImdldFN0YXRpY1Byb3BzXCJdID0gXCJSZW5kZXIuZ2V0U3RhdGljUHJvcHNcIjtcbiAgICBSZW5kZXJTcGFuW1wicmVuZGVyVG9TdHJpbmdcIl0gPSBcIlJlbmRlci5yZW5kZXJUb1N0cmluZ1wiO1xuICAgIFJlbmRlclNwYW5bXCJyZW5kZXJEb2N1bWVudFwiXSA9IFwiUmVuZGVyLnJlbmRlckRvY3VtZW50XCI7XG4gICAgUmVuZGVyU3BhbltcImNyZWF0ZUJvZHlSZXN1bHRcIl0gPSBcIlJlbmRlci5jcmVhdGVCb2R5UmVzdWx0XCI7XG59KShSZW5kZXJTcGFuIHx8IChSZW5kZXJTcGFuID0ge30pKTtcbnZhciBBcHBSZW5kZXJTcGFuO1xuKGZ1bmN0aW9uKEFwcFJlbmRlclNwYW4pIHtcbiAgICBBcHBSZW5kZXJTcGFuW1wicmVuZGVyVG9TdHJpbmdcIl0gPSBcIkFwcFJlbmRlci5yZW5kZXJUb1N0cmluZ1wiO1xuICAgIEFwcFJlbmRlclNwYW5bXCJyZW5kZXJUb1JlYWRhYmxlU3RyZWFtXCJdID0gXCJBcHBSZW5kZXIucmVuZGVyVG9SZWFkYWJsZVN0cmVhbVwiO1xuICAgIEFwcFJlbmRlclNwYW5bXCJnZXRCb2R5UmVzdWx0XCJdID0gXCJBcHBSZW5kZXIuZ2V0Qm9keVJlc3VsdFwiO1xuICAgIEFwcFJlbmRlclNwYW5bXCJmZXRjaFwiXSA9IFwiQXBwUmVuZGVyLmZldGNoXCI7XG59KShBcHBSZW5kZXJTcGFuIHx8IChBcHBSZW5kZXJTcGFuID0ge30pKTtcbnZhciBSb3V0ZXJTcGFuO1xuKGZ1bmN0aW9uKFJvdXRlclNwYW4pIHtcbiAgICBSb3V0ZXJTcGFuW1wiZXhlY3V0ZVJvdXRlXCJdID0gXCJSb3V0ZXIuZXhlY3V0ZVJvdXRlXCI7XG59KShSb3V0ZXJTcGFuIHx8IChSb3V0ZXJTcGFuID0ge30pKTtcbnZhciBOb2RlU3BhbjtcbihmdW5jdGlvbihOb2RlU3Bhbikge1xuICAgIE5vZGVTcGFuW1wicnVuSGFuZGxlclwiXSA9IFwiTm9kZS5ydW5IYW5kbGVyXCI7XG59KShOb2RlU3BhbiB8fCAoTm9kZVNwYW4gPSB7fSkpO1xudmFyIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW47XG4oZnVuY3Rpb24oQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3Bhbikge1xuICAgIEFwcFJvdXRlUm91dGVIYW5kbGVyc1NwYW5bXCJydW5IYW5kbGVyXCJdID0gXCJBcHBSb3V0ZVJvdXRlSGFuZGxlcnMucnVuSGFuZGxlclwiO1xufSkoQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiB8fCAoQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiA9IHt9KSk7XG52YXIgUmVzb2x2ZU1ldGFkYXRhU3BhbjtcbihmdW5jdGlvbihSZXNvbHZlTWV0YWRhdGFTcGFuKSB7XG4gICAgUmVzb2x2ZU1ldGFkYXRhU3BhbltcImdlbmVyYXRlTWV0YWRhdGFcIl0gPSBcIlJlc29sdmVNZXRhZGF0YS5nZW5lcmF0ZU1ldGFkYXRhXCI7XG4gICAgUmVzb2x2ZU1ldGFkYXRhU3BhbltcImdlbmVyYXRlVmlld3BvcnRcIl0gPSBcIlJlc29sdmVNZXRhZGF0YS5nZW5lcmF0ZVZpZXdwb3J0XCI7XG59KShSZXNvbHZlTWV0YWRhdGFTcGFuIHx8IChSZXNvbHZlTWV0YWRhdGFTcGFuID0ge30pKTtcbi8vIFRoaXMgbGlzdCBpcyB1c2VkIHRvIGZpbHRlciBvdXQgc3BhbnMgdGhhdCBhcmUgbm90IHJlbGV2YW50IHRvIHRoZSB1c2VyXG5leHBvcnQgY29uc3QgTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0ID0gW1xuICAgIFwiQmFzZVNlcnZlci5oYW5kbGVSZXF1ZXN0XCIsXG4gICAgXCJSZW5kZXIuZ2V0U2VydmVyU2lkZVByb3BzXCIsXG4gICAgXCJSZW5kZXIuZ2V0U3RhdGljUHJvcHNcIixcbiAgICBcIkFwcFJlbmRlci5mZXRjaFwiLFxuICAgIFwiQXBwUmVuZGVyLmdldEJvZHlSZXN1bHRcIixcbiAgICBcIlJlbmRlci5yZW5kZXJEb2N1bWVudFwiLFxuICAgIFwiTm9kZS5ydW5IYW5kbGVyXCIsXG4gICAgXCJBcHBSb3V0ZVJvdXRlSGFuZGxlcnMucnVuSGFuZGxlclwiLFxuICAgIFwiUmVzb2x2ZU1ldGFkYXRhLmdlbmVyYXRlTWV0YWRhdGFcIixcbiAgICBcIlJlc29sdmVNZXRhZGF0YS5nZW5lcmF0ZVZpZXdwb3J0XCIsXG4gICAgXCJOZXh0Tm9kZVNlcnZlci5maW5kUGFnZUNvbXBvbmVudHNcIixcbiAgICBcIk5leHROb2RlU2VydmVyLmdldExheW91dE9yUGFnZU1vZHVsZVwiXG5dO1xuZXhwb3J0IHsgQmFzZVNlcnZlclNwYW4sIExvYWRDb21wb25lbnRzU3BhbiwgTmV4dFNlcnZlclNwYW4sIE5leHROb2RlU2VydmVyU3BhbiwgU3RhcnRTZXJ2ZXJTcGFuLCBSZW5kZXJTcGFuLCBSb3V0ZXJTcGFuLCBBcHBSZW5kZXJTcGFuLCBOb2RlU3BhbiwgQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiwgUmVzb2x2ZU1ldGFkYXRhU3BhbiwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwibmFtZXMiOlsiQmFzZVNlcnZlclNwYW4iLCJMb2FkQ29tcG9uZW50c1NwYW4iLCJOZXh0U2VydmVyU3BhbiIsIk5leHROb2RlU2VydmVyU3BhbiIsIlN0YXJ0U2VydmVyU3BhbiIsIlJlbmRlclNwYW4iLCJBcHBSZW5kZXJTcGFuIiwiUm91dGVyU3BhbiIsIk5vZGVTcGFuIiwiQXBwUm91dGVSb3V0ZUhhbmRsZXJzU3BhbiIsIlJlc29sdmVNZXRhZGF0YVNwYW4iLCJOZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/trace/constants.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/lib/trace/tracer.js":
/*!***************************************************************!*\
!*** ./node_modules/next/dist/esm/server/lib/trace/tracer.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SpanKind: () => (/* binding */ SpanKind),\n/* harmony export */ SpanStatusCode: () => (/* binding */ SpanStatusCode),\n/* harmony export */ getTracer: () => (/* binding */ getTracer)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/constants.js\");\n\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 (true) {\n api = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js\");\n} else {}\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api;\nconst isPromise = (p)=>{\n return p !== null && typeof p === \"object\" && typeof p.then === \"function\";\n};\nconst closeSpanWithError = (span, error)=>{\n if ((error == null ? void 0 : error.bubble) === true) {\n span.setAttribute(\"next.bubble\", true);\n } else {\n if (error) {\n span.recordException(error);\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++;\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 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 if (!_constants__WEBPACK_IMPORTED_MODULE_0__.NextVanillaSpanAllowlist.includes(type) && process.env.NEXT_OTEL_VERBOSE !== \"1\" || options.hideSpan) {\n return fn();\n }\n const spanName = options.spanName ?? type;\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 = 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 const onCleanup = ()=>{\n rootSpanAttributesStore.delete(spanId);\n };\n if (isRootSpan) {\n rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));\n }\n try {\n if (fn.length > 1) {\n return fn(span, (err)=>closeSpanWithError(span, err));\n }\n const result = fn(span);\n if (isPromise(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__WEBPACK_IMPORTED_MODULE_0__.NextVanillaSpanAllowlist.includes(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}\nconst getTracer = (()=>{\n const tracer = new NextTracerImpl();\n return ()=>tracer;\n})();\n //# sourceMappingURL=tracer.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXVEO0FBQ3ZELElBQUlDO0FBQ0osZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSx1Q0FBdUM7QUFDdkMsMEVBQTBFO0FBQzFFLCtFQUErRTtBQUMvRSw0Q0FBNEM7QUFDNUMsNkNBQTZDO0FBQzdDLElBQUlDLElBQW1DLEVBQUU7SUFDckNELE1BQU1JLG1CQUFPQSxDQUFDLCtGQUFvQjtBQUN0QyxPQUFPLEVBTU47QUFDRCxNQUFNLEVBQUVFLE9BQU8sRUFBRUMsV0FBVyxFQUFFQyxLQUFLLEVBQUVDLGNBQWMsRUFBRUMsUUFBUSxFQUFFQyxZQUFZLEVBQUUsR0FBR1g7QUFDaEYsTUFBTVksWUFBWSxDQUFDQztJQUNmLE9BQU9BLE1BQU0sUUFBUSxPQUFPQSxNQUFNLFlBQVksT0FBT0EsRUFBRUMsSUFBSSxLQUFLO0FBQ3BFO0FBQ0EsTUFBTUMscUJBQXFCLENBQUNDLE1BQU1DO0lBQzlCLElBQUksQ0FBQ0EsU0FBUyxPQUFPLEtBQUssSUFBSUEsTUFBTUMsTUFBTSxNQUFNLE1BQU07UUFDbERGLEtBQUtHLFlBQVksQ0FBQyxlQUFlO0lBQ3JDLE9BQU87UUFDSCxJQUFJRixPQUFPO1lBQ1BELEtBQUtJLGVBQWUsQ0FBQ0g7UUFDekI7UUFDQUQsS0FBS0ssU0FBUyxDQUFDO1lBQ1hDLE1BQU1iLGVBQWVjLEtBQUs7WUFDMUJDLFNBQVNQLFNBQVMsT0FBTyxLQUFLLElBQUlBLE1BQU1PLE9BQU87UUFDbkQ7SUFDSjtJQUNBUixLQUFLUyxHQUFHO0FBQ1o7QUFDQSw4RUFBOEUsR0FBRyxNQUFNQywwQkFBMEIsSUFBSUM7QUFDckgsTUFBTUMsZ0JBQWdCNUIsSUFBSTZCLGdCQUFnQixDQUFDO0FBQzNDLElBQUlDLGFBQWE7QUFDakIsTUFBTUMsWUFBWSxJQUFJRDtBQUN0QixNQUFNRTtJQUNGOzs7O0dBSUQsR0FBR0Ms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RUM7b0JBQ3BDO29CQUNBLE9BQU94QyxHQUFHdUMsS0FBSyxDQUFDLElBQUksRUFBRUM7Z0JBQzFCO1lBQ0osT0FBTztnQkFDSCxPQUFPSixPQUFPckUsS0FBSyxDQUFDc0UsTUFBTUMsWUFBWSxJQUFJdEMsR0FBR3VDLEtBQUssQ0FBQyxJQUFJLEVBQUVDO1lBQzdEO1FBQ0o7SUFDSjtJQUNBTyxVQUFVLEdBQUd4QyxJQUFJLEVBQUU7UUFDZixNQUFNLENBQUNFLE1BQU1HLFFBQVEsR0FBR0w7UUFDeEIsTUFBTVUsY0FBYyxJQUFJLENBQUNkLGNBQWMsQ0FBQyxDQUFDUyxXQUFXLE9BQU8sS0FBSyxJQUFJQSxRQUFRTSxVQUFVLEtBQUssSUFBSSxDQUFDdkIsa0JBQWtCO1FBQ2xILE9BQU8sSUFBSSxDQUFDSCxpQkFBaUIsR0FBR3VELFNBQVMsQ0FBQ3RDLE1BQU1HLFNBQVNLO0lBQzdEO0lBQ0FkLGVBQWVlLFVBQVUsRUFBRTtRQUN2QixNQUFNRCxjQUFjQyxhQUFhbkQsTUFBTWlGLE9BQU8sQ0FBQ25GLFFBQVFnQyxNQUFNLElBQUlxQixjQUFjK0I7UUFDL0UsT0FBT2hDO0lBQ1g7SUFDQWlDLHdCQUF3QjtRQUNwQixNQUFNN0IsU0FBU3hELFFBQVFnQyxNQUFNLEdBQUdzRCxRQUFRLENBQUNoRTtRQUN6QyxPQUFPRix3QkFBd0JtRSxHQUFHLENBQUMvQjtJQUN2QztBQUNKO0FBQ0EsTUFBTTVCLFlBQVksQ0FBQztJQUNmLE1BQU0yQyxTQUFTLElBQUk3QztJQUNuQixPQUFPLElBQUk2QztBQUNmO0FBQytDLENBRS9DLGtDQUFrQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlci5qcz80ODkwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5leHRWYW5pbGxhU3BhbkFsbG93bGlzdCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xubGV0IGFwaTtcbi8vIHdlIHdhbnQgdG8gYWxsb3cgdXNlcnMgdG8gdXNlIHRoZWlyIG93biB2ZXJzaW9uIG9mIEBvcGVudGVsZW1ldHJ5L2FwaSBpZiB0aGV5XG4vLyB3YW50IHRvLCBzbyB3ZSB0cnkgdG8gcmVxdWlyZSBpdCBmaXJzdCwgYW5kIGlmIGl0IGZhaWxzIHdlIGZhbGwgYmFjayB0byB0aGVcbi8vIHZlcnNpb24gdGhhdCBpcyBidW5kbGVkIHdpdGggTmV4dC5qc1xuLy8gdGhpcyBpcyBiZWNhdXNlIEBvcGVudGVsZW1ldHJ5L2FwaSBoYXMgdG8gYmUgc3luY2VkIHdpdGggdGhlIHZlcnNpb24gb2Zcbi8vIEBvcGVudGVsZW1ldHJ5L3RyYWNpbmcgdGhhdCBpcyB1c2VkLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBmb3JjZSB1c2VycyB0byB1c2Vcbi8vIHRoZSB2ZXJzaW9uIHRoYXQgaXMgYnVuZGxlZCB3aXRoIE5leHQuanMuXG4vLyB0aGUgQVBJIGlzIH5zdGFibGUsIHNvIHRoaXMgc2hvdWxkIGJlIGZpbmVcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09IFwiZWRnZVwiKSB7XG4gICAgYXBpID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbn0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXBpID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgYXBpID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9Ab3BlbnRlbGVtZXRyeS9hcGlcIik7XG4gICAgfVxufVxuY29uc3QgeyBjb250ZXh0LCBwcm9wYWdhdGlvbiwgdHJhY2UsIFNwYW5TdGF0dXNDb2RlLCBTcGFuS2luZCwgUk9PVF9DT05URVhUIH0gPSBhcGk7XG5jb25zdCBpc1Byb21pc2UgPSAocCk9PntcbiAgICByZXR1cm4gcCAhPT0gbnVsbCAmJiB0eXBlb2YgcCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcC50aGVuID09PSBcImZ1bmN0aW9uXCI7XG59O1xuY29uc3QgY2xvc2VTcGFuV2l0aEVycm9yID0gKHNwYW4sIGVycm9yKT0+e1xuICAgIGlmICgoZXJyb3IgPT0gbnVsbCA/IHZvaWQgMCA6IGVycm9yLmJ1YmJsZSkgPT09IHRydWUpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoXCJuZXh0LmJ1YmJsZVwiLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgICBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yID09IG51bGwgPyB2b2lkIDAgOiBlcnJvci5tZXNzYWdlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzcGFuLmVuZCgpO1xufTtcbi8qKiB3ZSB1c2UgdGhpcyBtYXAgdG8gcHJvcGFnYXRlIGF0dHJpYnV0ZXMgZnJvbSBuZXN0ZWQgc3BhbnMgdG8gdGhlIHRvcCBzcGFuICovIGNvbnN0IHJvb3RTcGFuQXR0cmlidXRlc1N0b3JlID0gbmV3IE1hcCgpO1xuY29uc3Qgcm9vdFNwYW5JZEtleSA9IGFwaS5jcmVhdGVDb250ZXh0S2V5KFwibmV4dC5yb290U3BhbklkXCIpO1xubGV0IGxhc3RTcGFuSWQgPSAwO1xuY29uc3QgZ2V0U3BhbklkID0gKCk9Pmxhc3RTcGFuSWQrKztcbmNsYXNzIE5leHRUcmFjZXJJbXBsIHtcbiAgICAvKipcbiAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB0byB0aGUgdHJhY2Ugd2l0aCBjb25maWd1cmVkIG5hbWUuXG4gICAqIFNpbmNlIHdyYXAgLyB0cmFjZSBjYW4gYmUgZGVmaW5lZCBpbiBhbnkgcGxhY2UgcHJpb3IgdG8gYWN0dWFsIHRyYWNlIHN1YnNjcmliZXIgaW5pdGlhbGl6YXRpb24sXG4gICAqIFRoaXMgc2hvdWxkIGJlIGxhemlseSBldmFsdWF0ZWQuXG4gICAqLyBnZXRUcmFjZXJJbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNlLmdldFRyYWNlcihcIm5leHQuanNcIiwgXCIwLjAuMVwiKTtcbiAgICB9XG4gICAgZ2V0Q29udGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfVxuICAgIGdldEFjdGl2ZVNjb3BlU3BhbigpIHtcbiAgICAgICAgcmV0dXJuIHRyYWNlLmdldFNwYW4oY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5hY3RpdmUoKSk7XG4gICAgfVxuICAgIHdpdGhQcm9wYWdhdGVkQ29udGV4dChjYXJyaWVyLCBmbiwgZ2V0dGVyKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSBjb250ZXh0LmFjdGl2ZSgpO1xuICAgICAgICBpZiAodHJhY2UuZ2V0U3BhbkNvbnRleHQoYWN0aXZlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIC8vIEFjdGl2ZSBzcGFuIGlzIGFscmVhZHkgc2V0LCB0b28gbGF0ZSB0byBwcm9wYWdhdGUuXG4gICAgICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZW1vdGVDb250ZXh0ID0gcHJvcGFnYXRpb24uZXh0cmFjdChhY3RpdmVDb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICByZXR1cm4gY29udGV4dC53aXRoKHJlbW90ZUNvbnRleHQsIGZuKTtcbiAgICB9XG4gICAgdHJhY2UoLi4uYXJncykge1xuICAgICAgICB2YXIgX3RyYWNlX2dldFNwYW5Db250ZXh0O1xuICAgICAgICBjb25zdCBbdHlwZSwgZm5Pck9wdGlvbnMsIGZuT3JFbXB0eV0gPSBhcmdzO1xuICAgICAgICAvLyBjb2VyY2Ugb3B0aW9ucyBmb3JtIG92ZXJsb2FkXG4gICAgICAgIGNvbnN0IHsgZm4sIG9wdGlvbnMgfSA9IHR5cGVvZiBmbk9yT3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiID8ge1xuICAgICAgICAgICAgZm46IGZuT3JPcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9uczoge31cbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIGZuOiBmbk9yRW1wdHksXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgLi4uZm5Pck9wdGlvbnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFOZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3QuaW5jbHVkZXModHlwZSkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1ZFUkJPU0UgIT09IFwiMVwiIHx8IG9wdGlvbnMuaGlkZVNwYW4pIHtcbiAgICAgICAgICAgIHJldHVybiBmbigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwYW5OYW1lID0gb3B0aW9ucy5zcGFuTmFtZSA/PyB0eXBlO1xuICAgICAgICAvLyBUcnlpbmcgdG8gZ2V0IGFjdGl2ZSBzY29wZWQgc3BhbiB0byBhc3NpZ24gcGFyZW50LiBJZiBvcHRpb24gc3BlY2lmaWVzIHBhcmVudCBzcGFuIG1hbnVhbGx5LCB3aWxsIHRyeSB0byB1c2UgaXQuXG4gICAgICAgIGxldCBzcGFuQ29udGV4dCA9IHRoaXMuZ2V0U3BhbkNvbnRleHQoKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucGFyZW50U3BhbikgPz8gdGhpcy5nZXRBY3RpdmVTY29wZVNwYW4oKSk7XG4gICAgICAgIGxldCBpc1Jvb3RTcGFuID0gZmFsc2U7XG4gICAgICAgIGlmICghc3BhbkNvbnRleHQpIHtcbiAgICAgICAgICAgIHNwYW5Db250ZXh0ID0gUk9PVF9DT05URVhUO1xuICAgICAgICAgICAgaXNSb290U3BhbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoKF90cmFjZV9nZXRTcGFuQ29udGV4dCA9IHRyYWNlLmdldFNwYW5Db250ZXh0KHNwYW5Db250ZXh0KSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90cmFjZV9nZXRTcGFuQ29udGV4dC5pc1JlbW90ZSkge1xuICAgICAgICAgICAgaXNSb290U3BhbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3BhbklkID0gZ2V0U3BhbklkKCk7XG4gICAgICAgIG9wdGlvbnMuYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIFwibmV4dC5zcGFuX25hbWVcIjogc3Bhbk5hbWUsXG4gICAgICAgICAgICBcIm5leHQuc3Bhbl90eXBlXCI6IHR5cGUsXG4gICAgICAgICAgICAuLi5vcHRpb25zLmF0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQud2l0aChzcGFuQ29udGV4dC5zZXRWYWx1ZShyb290U3BhbklkS2V5LCBzcGFuSWQpLCAoKT0+dGhpcy5nZXRUcmFjZXJJbnN0YW5jZSgpLnN0YXJ0QWN0aXZlU3BhbihzcGFuTmFtZSwgb3B0aW9ucywgKHNwYW4pPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb25DbGVhbnVwID0gKCk9PntcbiAgICAgICAgICAgICAgICAgICAgcm9vdFNwYW5BdHRyaWJ1dGVzU3RvcmUuZGVsZXRlKHNwYW5JZCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoaXNSb290U3Bhbikge1xuICAgICAgICAgICAgICAgICAgICByb290U3BhbkF0dHJpYnV0ZXNTdG9yZS5zZXQoc3BhbklkLCBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuYXR0cmlidXRlcyA/PyB7fSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbihzcGFuLCAoZXJyKT0+Y2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHNwYW4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgZXJyb3IgbWFrZSBzdXJlIGl0IHRocm93c1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIHBhc3MgZG93biB0aGUgcHJvbWlzZSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgY291bGQgYmUgcmVhY3Qgc3RyZWFtIHJlc3BvbnNlIHdpdGggZXJyb3IgeyBlcnJvciwgc3RyZWFtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNwYW5XaXRoRXJyb3Ioc3BhbiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KG9uQ2xlYW51cCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGFuV2l0aEVycm9yKHNwYW4sIGVycik7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cbiAgICB3cmFwKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgdHJhY2VyID0gdGhpcztcbiAgICAgICAgY29uc3QgW25hbWUsIG9wdGlvbnMsIGZuXSA9IGFyZ3MubGVuZ3RoID09PSAzID8gYXJncyA6IFtcbiAgICAgICAgICAgIGFyZ3NbMF0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGFyZ3NbMV1cbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCFOZXh0VmFuaWxsYVNwYW5BbGxvd2xpc3QuaW5jbHVkZXMobmFtZSkgJiYgcHJvY2Vzcy5lbnYuTkVYVF9PVEVMX1ZFUkJPU0UgIT09IFwiMVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbGV0IG9wdGlvbnNPYmogPSBvcHRpb25zO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zT2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zT2JqID0gb3B0aW9uc09iai5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdEFyZ0lkID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBjYiA9IGFyZ3VtZW50c1tsYXN0QXJnSWRdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVCb3VuZENiID0gdHJhY2VyLmdldENvbnRleHQoKS5iaW5kKGNvbnRleHQuYWN0aXZlKCksIGNiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2VyLnRyYWNlKG5hbWUsIG9wdGlvbnNPYmosIChfc3BhbiwgZG9uZSk9PntcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2xhc3RBcmdJZF0gPSBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPT0gbnVsbCA/IHZvaWQgMCA6IGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY29wZUJvdW5kQ2IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZXIudHJhY2UobmFtZSwgb3B0aW9uc09iaiwgKCk9PmZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBzdGFydFNwYW4oLi4uYXJncykge1xuICAgICAgICBjb25zdCBbdHlwZSwgb3B0aW9uc10gPSBhcmdzO1xuICAgICAgICBjb25zdCBzcGFuQ29udGV4dCA9IHRoaXMuZ2V0U3BhbkNvbnRleHQoKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucGFyZW50U3BhbikgPz8gdGhpcy5nZXRBY3RpdmVTY29wZVNwYW4oKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYWNlckluc3RhbmNlKCkuc3RhcnRTcGFuKHR5cGUsIG9wdGlvbnMsIHNwYW5Db250ZXh0KTtcbiAgICB9XG4gICAgZ2V0U3BhbkNvbnRleHQocGFyZW50U3Bhbikge1xuICAgICAgICBjb25zdCBzcGFuQ29udGV4dCA9IHBhcmVudFNwYW4gPyB0cmFjZS5zZXRTcGFuKGNvbnRleHQuYWN0aXZlKCksIHBhcmVudFNwYW4pIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gc3BhbkNvbnRleHQ7XG4gICAgfVxuICAgIGdldFJvb3RTcGFuQXR0cmlidXRlcygpIHtcbiAgICAgICAgY29uc3Qgc3BhbklkID0gY29udGV4dC5hY3RpdmUoKS5nZXRWYWx1ZShyb290U3BhbklkS2V5KTtcbiAgICAgICAgcmV0dXJuIHJvb3RTcGFuQXR0cmlidXRlc1N0b3JlLmdldChzcGFuSWQpO1xuICAgIH1cbn1cbmNvbnN0IGdldFRyYWNlciA9ICgoKT0+e1xuICAgIGNvbnN0IHRyYWNlciA9IG5ldyBOZXh0VHJhY2VySW1wbCgpO1xuICAgIHJldHVybiAoKT0+dHJhY2VyO1xufSkoKTtcbmV4cG9ydCB7IGdldFRyYWNlciwgU3BhblN0YXR1c0NvZGUsIFNwYW5LaW5kIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYWNlci5qcy5tYXAiXSwibmFtZXMiOlsiTmV4dFZhbmlsbGFTcGFuQWxsb3dsaXN0IiwiYXBpIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlVOVElNRSIsInJlcXVpcmUiLCJlcnIiLCJjb250ZXh0IiwicHJvcGFnYXRpb24iLCJ0cmFjZSIsIlNwYW5TdGF0dXNDb2RlIiwiU3BhbktpbmQiLCJST09UX0NPTlRFWFQiLCJpc1Byb21pc2UiLCJwIiwidGhlbiIsImNsb3NlU3BhbldpdGhFcnJvciIsInNwYW4iLCJlcnJvciIsImJ1YmJsZSIsInNldEF0dHJpYnV0ZSIsInJlY29yZEV4Y2VwdGlvbiIsInNldFN0YXR1cyIsImNvZGUiLCJFUlJPUiIsIm1lc3NhZ2UiLCJlbmQiLCJyb290U3BhbkF0dHJpYnV0ZXNTdG9yZSIsIk1hcCIsInJvb3RTcGFuSWRLZXkiLCJjcmVhdGVDb250ZXh0S2V5IiwibGFzdFNwYW5JZCIsImdldFNwYW5JZCIsIk5leHRUcmFjZXJJbXBsIiwiZ2V0VHJhY2VySW5zdGFuY2UiLCJnZXRUcmFjZXIiLCJnZXRDb250ZXh0IiwiZ2V0QWN0aXZlU2NvcGVTcGFuIiwiZ2V0U3BhbiIsImFjdGl2ZSIsIndpdGhQcm9wYWdhdGVkQ29udGV4dCIsImNhcnJpZXIiLCJmbiIsImdldHRlciIsImFjdGl2ZUNvbnRleHQiLCJnZXRTcGFuQ29udGV4dCIsInJlbW90ZUNvbnRleHQiLCJleHRyYWN0Iiwid2l0aCIsImFyZ3MiLCJfdHJhY2VfZ2V0U3BhbkNvbnRleHQiLCJ0eXBlIiwiZm5Pck9wdGlvbnMiLCJmbk9yRW1wdHkiLCJvcHRpb25zIiwiaW5jbHVkZXMiLCJORVhUX09URUxfVkVSQk9TRSIsImhpZGVTcGFuIiwic3Bhbk5hbWUiLCJzcGFuQ29udGV4dCIsInBhcmVudFNwYW4iLCJpc1Jvb3RTcGFuIiwiaXNSZW1vdGUiLCJzcGFuSWQiLCJhdHRyaWJ1dGVzIiwic2V0VmFsdWUiLCJzdGFydEFjdGl2ZVNwYW4iLCJvbkNsZWFudXAiLCJkZWxldGUiLCJzZXQiLCJPYmplY3QiLCJlbnRyaWVzIiwibGVuZ3RoIiwicmVzdWx0IiwicmVzIiwiY2F0Y2giLCJmaW5hbGx5Iiwid3JhcCIsInRyYWNlciIsIm5hbWUiLCJvcHRpb25zT2JqIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJsYXN0QXJnSWQiLCJjYiIsInNjb3BlQm91bmRDYiIsImJpbmQiLCJfc3BhbiIsImRvbmUiLCJzdGFydFNwYW4iLCJzZXRTcGFuIiwidW5kZWZpbmVkIiwiZ2V0Um9vdFNwYW5BdHRyaWJ1dGVzIiwiZ2V0VmFsdWUiLCJnZXQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/lib/trace/tracer.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/server-utils.js":
/*!***********************************************************!*\
!*** ./node_modules/next/dist/esm/server/server-utils.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUtils: () => (/* binding */ getUtils),\n/* harmony export */ interpolateDynamicPath: () => (/* binding */ interpolateDynamicPath),\n/* harmony export */ normalizeDynamicRouteParams: () => (/* binding */ normalizeDynamicRouteParams),\n/* harmony export */ normalizeVercelUrl: () => (/* binding */ normalizeVercelUrl)\n/* harmony export */ });\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url */ \"(rsc)/./node_modules/next/dist/compiled/native-url/index.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _shared_lib_i18n_normalize_locale_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/lib/i18n/normalize-locale-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js\");\n/* harmony import */ var _shared_lib_router_utils_path_match__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/lib/router/utils/path-match */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-match.js\");\n/* harmony import */ var _shared_lib_router_utils_route_regex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/lib/router/utils/route-regex */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-regex.js\");\n/* harmony import */ var _shared_lib_router_utils_route_matcher__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/lib/router/utils/route-matcher */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-matcher.js\");\n/* harmony import */ var _shared_lib_router_utils_prepare_destination__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/lib/router/utils/prepare-destination */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/prepare-destination.js\");\n/* harmony import */ var _shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js\");\n/* harmony import */ var _shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n\n\n\n\n\n\n\n\n\nfunction normalizeVercelUrl(req, trustQuery, paramKeys, pageIsDynamic, defaultRouteRegex) {\n // make sure to normalize req.url on Vercel to strip dynamic params\n // from the query which are added during routing\n if (pageIsDynamic && trustQuery && defaultRouteRegex) {\n const _parsedUrl = (0,url__WEBPACK_IMPORTED_MODULE_0__.parse)(req.url, true);\n delete _parsedUrl.search;\n for (const key of Object.keys(_parsedUrl.query)){\n if (key !== _lib_constants__WEBPACK_IMPORTED_MODULE_8__.NEXT_QUERY_PARAM_PREFIX && key.startsWith(_lib_constants__WEBPACK_IMPORTED_MODULE_8__.NEXT_QUERY_PARAM_PREFIX) || (paramKeys || Object.keys(defaultRouteRegex.groups)).includes(key)) {\n delete _parsedUrl.query[key];\n }\n }\n req.url = (0,url__WEBPACK_IMPORTED_MODULE_0__.format)(_parsedUrl);\n }\n}\nfunction interpolateDynamicPath(pathname, params, defaultRouteRegex) {\n if (!defaultRouteRegex) return pathname;\n for (const param of Object.keys(defaultRouteRegex.groups)){\n const { optional, repeat } = defaultRouteRegex.groups[param];\n let builtParam = `[${repeat ? \"...\" : \"\"}${param}]`;\n if (optional) {\n builtParam = `[${builtParam}]`;\n }\n const paramIdx = pathname.indexOf(builtParam);\n if (paramIdx > -1) {\n let paramValue;\n const value = params[param];\n if (Array.isArray(value)) {\n paramValue = value.map((v)=>v && encodeURIComponent(v)).join(\"/\");\n } else if (value) {\n paramValue = encodeURIComponent(value);\n } else {\n paramValue = \"\";\n }\n pathname = pathname.slice(0, paramIdx) + paramValue + pathname.slice(paramIdx + builtParam.length);\n }\n }\n return pathname;\n}\nfunction normalizeDynamicRouteParams(params, ignoreOptional, defaultRouteRegex, defaultRouteMatches) {\n let hasValidParams = true;\n if (!defaultRouteRegex) return {\n params,\n hasValidParams: false\n };\n params = Object.keys(defaultRouteRegex.groups).reduce((prev, key)=>{\n let value = params[key];\n if (typeof value === \"string\") {\n value = (0,_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_7__.normalizeRscURL)(value);\n }\n if (Array.isArray(value)) {\n value = value.map((val)=>{\n if (typeof val === \"string\") {\n val = (0,_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_7__.normalizeRscURL)(val);\n }\n return val;\n });\n }\n // if the value matches the default value we can't rely\n // on the parsed params, this is used to signal if we need\n // to parse x-now-route-matches or not\n const defaultValue = defaultRouteMatches[key];\n const isOptional = defaultRouteRegex.groups[key].optional;\n const isDefaultValue = Array.isArray(defaultValue) ? defaultValue.some((defaultVal)=>{\n return Array.isArray(value) ? value.some((val)=>val.includes(defaultVal)) : value == null ? void 0 : value.includes(defaultVal);\n }) : value == null ? void 0 : value.includes(defaultValue);\n if (isDefaultValue || typeof value === \"undefined\" && !(isOptional && ignoreOptional)) {\n hasValidParams = false;\n }\n // non-provided optional values should be undefined so normalize\n // them to undefined\n if (isOptional && (!value || Array.isArray(value) && value.length === 1 && // fallback optional catch-all SSG pages have\n // [[...paramName]] for the root path on Vercel\n (value[0] === \"index\" || value[0] === `[[...${key}]]`))) {\n value = undefined;\n delete params[key];\n }\n // query values from the proxy aren't already split into arrays\n // so make sure to normalize catch-all values\n if (value && typeof value === \"string\" && defaultRouteRegex.groups[key].repeat) {\n value = value.split(\"/\");\n }\n if (value) {\n prev[key] = value;\n }\n return prev;\n }, {});\n return {\n params,\n hasValidParams\n };\n}\nfunction getUtils({ page, i18n, basePath, rewrites, pageIsDynamic, trailingSlash, caseSensitive }) {\n let defaultRouteRegex;\n let dynamicRouteMatcher;\n let defaultRouteMatches;\n if (pageIsDynamic) {\n defaultRouteRegex = (0,_shared_lib_router_utils_route_regex__WEBPACK_IMPORTED_MODULE_3__.getNamedRouteRegex)(page, false);\n dynamicRouteMatcher = (0,_shared_lib_router_utils_route_matcher__WEBPACK_IMPORTED_MODULE_4__.getRouteMatcher)(defaultRouteRegex);\n defaultRouteMatches = dynamicRouteMatcher(page);\n }\n function handleRewrites(req, parsedUrl) {\n const rewriteParams = {};\n let fsPathname = parsedUrl.pathname;\n const matchesPage = ()=>{\n const fsPathnameNoSlash = (0,_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_6__.removeTrailingSlash)(fsPathname || \"\");\n return fsPathnameNoSlash === (0,_shared_lib_router_utils_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_6__.removeTrailingSlash)(page) || (dynamicRouteMatcher == null ? void 0 : dynamicRouteMatcher(fsPathnameNoSlash));\n };\n const checkRewrite = (rewrite)=>{\n const matcher = (0,_shared_lib_router_utils_path_match__WEBPACK_IMPORTED_MODULE_2__.getPathMatch)(rewrite.source + (trailingSlash ? \"(/)?\" : \"\"), {\n removeUnnamedParams: true,\n strict: true,\n sensitive: !!caseSensitive\n });\n let params = matcher(parsedUrl.pathname);\n if ((rewrite.has || rewrite.missing) && params) {\n const hasParams = (0,_shared_lib_router_utils_prepare_destination__WEBPACK_IMPORTED_MODULE_5__.matchHas)(req, parsedUrl.query, rewrite.has, rewrite.missing);\n if (hasParams) {\n Object.assign(params, hasParams);\n } else {\n params = false;\n }\n }\n if (params) {\n const { parsedDestination, destQuery } = (0,_shared_lib_router_utils_prepare_destination__WEBPACK_IMPORTED_MODULE_5__.prepareDestination)({\n appendParamsToQuery: true,\n destination: rewrite.destination,\n params: params,\n query: parsedUrl.query\n });\n // if the rewrite destination is external break rewrite chain\n if (parsedDestination.protocol) {\n return true;\n }\n Object.assign(rewriteParams, destQuery, params);\n Object.assign(parsedUrl.query, parsedDestination.query);\n delete parsedDestination.query;\n Object.assign(parsedUrl, parsedDestination);\n fsPathname = parsedUrl.pathname;\n if (basePath) {\n fsPathname = fsPathname.replace(new RegExp(`^${basePath}`), \"\") || \"/\";\n }\n if (i18n) {\n const destLocalePathResult = (0,_shared_lib_i18n_normalize_locale_path__WEBPACK_IMPORTED_MODULE_1__.normalizeLocalePath)(fsPathname, i18n.locales);\n fsPathname = destLocalePathResult.pathname;\n parsedUrl.query.nextInternalLocale = destLocalePathResult.detectedLocale || params.nextInternalLocale;\n }\n if (fsPathname === page) {\n return true;\n }\n if (pageIsDynamic && dynamicRouteMatcher) {\n const dynamicParams = dynamicRouteMatcher(fsPathname);\n if (dynamicParams) {\n parsedUrl.query = {\n ...parsedUrl.query,\n ...dynamicParams\n };\n return true;\n }\n }\n }\n return false;\n };\n for (const rewrite of rewrites.beforeFiles || []){\n checkRewrite(rewrite);\n }\n if (fsPathname !== page) {\n let finished = false;\n for (const rewrite of rewrites.afterFiles || []){\n finished = checkRewrite(rewrite);\n if (finished) break;\n }\n if (!finished && !matchesPage()) {\n for (const rewrite of rewrites.fallback || []){\n finished = checkRewrite(rewrite);\n if (finished) break;\n }\n }\n }\n return rewriteParams;\n }\n function getParamsFromRouteMatches(req, renderOpts, detectedLocale) {\n return (0,_shared_lib_router_utils_route_matcher__WEBPACK_IMPORTED_MODULE_4__.getRouteMatcher)(function() {\n const { groups, routeKeys } = defaultRouteRegex;\n return {\n re: {\n // Simulate a RegExp match from the \\`req.url\\` input\n exec: (str)=>{\n const obj = Object.fromEntries(new URLSearchParams(str));\n const matchesHasLocale = i18n && detectedLocale && obj[\"1\"] === detectedLocale;\n for (const key of Object.keys(obj)){\n const value = obj[key];\n if (key !== _lib_constants__WEBPACK_IMPORTED_MODULE_8__.NEXT_QUERY_PARAM_PREFIX && key.startsWith(_lib_constants__WEBPACK_IMPORTED_MODULE_8__.NEXT_QUERY_PARAM_PREFIX)) {\n const normalizedKey = key.substring(_lib_constants__WEBPACK_IMPORTED_MODULE_8__.NEXT_QUERY_PARAM_PREFIX.length);\n obj[normalizedKey] = value;\n delete obj[key];\n }\n }\n // favor named matches if available\n const routeKeyNames = Object.keys(routeKeys || {});\n const filterLocaleItem = (val)=>{\n if (i18n) {\n // locale items can be included in route-matches\n // for fallback SSG pages so ensure they are\n // filtered\n const isCatchAll = Array.isArray(val);\n const _val = isCatchAll ? val[0] : val;\n if (typeof _val === \"string\" && i18n.locales.some((item)=>{\n if (item.toLowerCase() === _val.toLowerCase()) {\n detectedLocale = item;\n renderOpts.locale = detectedLocale;\n return true;\n }\n return false;\n })) {\n // remove the locale item from the match\n if (isCatchAll) {\n val.splice(0, 1);\n }\n // the value is only a locale item and\n // shouldn't be added\n return isCatchAll ? val.length === 0 : true;\n }\n }\n return false;\n };\n if (routeKeyNames.every((name)=>obj[name])) {\n return routeKeyNames.reduce((prev, keyName)=>{\n const paramName = routeKeys == null ? void 0 : routeKeys[keyName];\n if (paramName && !filterLocaleItem(obj[keyName])) {\n prev[groups[paramName].pos] = obj[keyName];\n }\n return prev;\n }, {});\n }\n return Object.keys(obj).reduce((prev, key)=>{\n if (!filterLocaleItem(obj[key])) {\n let normalizedKey = key;\n if (matchesHasLocale) {\n normalizedKey = parseInt(key, 10) - 1 + \"\";\n }\n return Object.assign(prev, {\n [normalizedKey]: obj[key]\n });\n }\n return prev;\n }, {});\n }\n },\n groups\n };\n }())(req.headers[\"x-now-route-matches\"]);\n }\n return {\n handleRewrites,\n defaultRouteRegex,\n dynamicRouteMatcher,\n defaultRouteMatches,\n getParamsFromRouteMatches,\n normalizeDynamicRouteParams: (params, ignoreOptional)=>normalizeDynamicRouteParams(params, ignoreOptional, defaultRouteRegex, defaultRouteMatches),\n normalizeVercelUrl: (req, trustQuery, paramKeys)=>normalizeVercelUrl(req, trustQuery, paramKeys, pageIsDynamic, defaultRouteRegex),\n interpolateDynamicPath: (pathname, params)=>interpolateDynamicPath(pathname, params, defaultRouteRegex)\n };\n} //# sourceMappingURL=server-utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvc2VydmVyLXV0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTZEO0FBQ2tCO0FBQ1Y7QUFDTztBQUNEO0FBQ21CO0FBQ1A7QUFDaEI7QUFDWjtBQUNwRCxTQUFTYSxtQkFBbUJDLEdBQUcsRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsaUJBQWlCO0lBQzNGLG1FQUFtRTtJQUNuRSxnREFBZ0Q7SUFDaEQsSUFBSUQsaUJBQWlCRixjQUFjRyxtQkFBbUI7UUFDbEQsTUFBTUMsYUFBYWhCLDBDQUFRQSxDQUFDVyxJQUFJTSxHQUFHLEVBQUU7UUFDckMsT0FBT0QsV0FBV0UsTUFBTTtRQUN4QixLQUFLLE1BQU1DLE9BQU9DLE9BQU9DLElBQUksQ0FBQ0wsV0FBV00sS0FBSyxFQUFFO1lBQzVDLElBQUlILFFBQVFWLG1FQUF1QkEsSUFBSVUsSUFBSUksVUFBVSxDQUFDZCxtRUFBdUJBLEtBQUssQ0FBQ0ksYUFBYU8sT0FBT0MsSUFBSSxDQUFDTixrQkFBa0JTLE1BQU0sR0FBR0MsUUFBUSxDQUFDTixNQUFNO2dCQUNsSixPQUFPSCxXQUFXTSxLQUFLLENBQUNILElBQUk7WUFDaEM7UUFDSjtRQUNBUixJQUFJTSxHQUFHLEdBQUduQiwyQ0FBU0EsQ0FBQ2tCO0lBQ3hCO0FBQ0o7QUFDTyxTQUFTVSx1QkFBdUJDLFFBQVEsRUFBRUMsTUFBTSxFQUFFYixpQkFBaUI7SUFDdEUsSUFBSSxDQUFDQSxtQkFBbUIsT0FBT1k7SUFDL0IsS0FBSyxNQUFNRSxTQUFTVCxPQUFPQyxJQUFJLENBQUNOLGtCQUFrQlMsTUFBTSxFQUFFO1FBQ3RELE1BQU0sRUFBRU0sUUFBUSxFQUFFQyxNQUFNLEVBQUUsR0FBR2hCLGtCQUFrQlMsTUFBTSxDQUFDSyxNQUFNO1FBQzVELElBQUlHLGFBQWEsQ0FBQyxDQUFDLEVBQUVELFNBQVMsUUFBUSxHQUFHLEVBQUVGLE1BQU0s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WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci9zZXJ2ZXItdXRpbHMuanM/ODMxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgYXMgZm9ybWF0VXJsLCBwYXJzZSBhcyBwYXJzZVVybCB9IGZyb20gXCJ1cmxcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUxvY2FsZVBhdGggfSBmcm9tIFwiLi4vc2hhcmVkL2xpYi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aFwiO1xuaW1wb3J0IHsgZ2V0UGF0aE1hdGNoIH0gZnJvbSBcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtbWF0Y2hcIjtcbmltcG9ydCB7IGdldE5hbWVkUm91dGVSZWdleCB9IGZyb20gXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleFwiO1xuaW1wb3J0IHsgZ2V0Um91dGVNYXRjaGVyIH0gZnJvbSBcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLW1hdGNoZXJcIjtcbmltcG9ydCB7IG1hdGNoSGFzLCBwcmVwYXJlRGVzdGluYXRpb24gfSBmcm9tIFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcHJlcGFyZS1kZXN0aW5hdGlvblwiO1xuaW1wb3J0IHsgcmVtb3ZlVHJhaWxpbmdTbGFzaCB9IGZyb20gXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVJzY1VSTCB9IGZyb20gXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHNcIjtcbmltcG9ydCB7IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYIH0gZnJvbSBcIi4uL2xpYi9jb25zdGFudHNcIjtcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWZXJjZWxVcmwocmVxLCB0cnVzdFF1ZXJ5LCBwYXJhbUtleXMsIHBhZ2VJc0R5bmFtaWMsIGRlZmF1bHRSb3V0ZVJlZ2V4KSB7XG4gICAgLy8gbWFrZSBzdXJlIHRvIG5vcm1hbGl6ZSByZXEudXJsIG9uIFZlcmNlbCB0byBzdHJpcCBkeW5hbWljIHBhcmFtc1xuICAgIC8vIGZyb20gdGhlIHF1ZXJ5IHdoaWNoIGFyZSBhZGRlZCBkdXJpbmcgcm91dGluZ1xuICAgIGlmIChwYWdlSXNEeW5hbWljICYmIHRydXN0UXVlcnkgJiYgZGVmYXVsdFJvdXRlUmVnZXgpIHtcbiAgICAgICAgY29uc3QgX3BhcnNlZFVybCA9IHBhcnNlVXJsKHJlcS51cmwsIHRydWUpO1xuICAgICAgICBkZWxldGUgX3BhcnNlZFVybC5zZWFyY2g7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9wYXJzZWRVcmwucXVlcnkpKXtcbiAgICAgICAgICAgIGlmIChrZXkgIT09IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYICYmIGtleS5zdGFydHNXaXRoKE5FWFRfUVVFUllfUEFSQU1fUFJFRklYKSB8fCAocGFyYW1LZXlzIHx8IE9iamVjdC5rZXlzKGRlZmF1bHRSb3V0ZVJlZ2V4Lmdyb3VwcykpLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgX3BhcnNlZFVybC5xdWVyeVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcS51cmwgPSBmb3JtYXRVcmwoX3BhcnNlZFVybCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGludGVycG9sYXRlRHluYW1pY1BhdGgocGF0aG5hbWUsIHBhcmFtcywgZGVmYXVsdFJvdXRlUmVnZXgpIHtcbiAgICBpZiAoIWRlZmF1bHRSb3V0ZVJlZ2V4KSByZXR1cm4gcGF0aG5hbWU7XG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiBPYmplY3Qua2V5cyhkZWZhdWx0Um91dGVSZWdleC5ncm91cHMpKXtcbiAgICAgICAgY29uc3QgeyBvcHRpb25hbCwgcmVwZWF0IH0gPSBkZWZhdWx0Um91dGVSZWdleC5ncm91cHNbcGFyYW1dO1xuICAgICAgICBsZXQgYnVpbHRQYXJhbSA9IGBbJHtyZXBlYXQgPyBcIi4uLlwiIDogXCJcIn0ke3BhcmFtfV1gO1xuICAgICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGJ1aWx0UGFyYW0gPSBgWyR7YnVpbHRQYXJhbX1dYDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbUlkeCA9IHBhdGhuYW1lLmluZGV4T2YoYnVpbHRQYXJhbSk7XG4gICAgICAgIGlmIChwYXJhbUlkeCA+IC0xKSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1WYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zW3BhcmFtXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSB2YWx1ZS5tYXAoKHYpPT52ICYmIGVuY29kZVVSSUNvbXBvbmVudCh2KSkuam9pbihcIi9cIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1WYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF0aG5hbWUgPSBwYXRobmFtZS5zbGljZSgwLCBwYXJhbUlkeCkgKyBwYXJhbVZhbHVlICsgcGF0aG5hbWUuc2xpY2UocGFyYW1JZHggKyBidWlsdFBhcmFtLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhdGhuYW1lO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUR5bmFtaWNSb3V0ZVBhcmFtcyhwYXJhbXMsIGlnbm9yZU9wdGlvbmFsLCBkZWZhdWx0Um91dGVSZWdleCwgZGVmYXVsdFJvdXRlTWF0Y2hlcykge1xuICAgIGxldCBoYXNWYWxpZFBhcmFtcyA9IHRydWU7XG4gICAgaWYgKCFkZWZhdWx0Um91dGVSZWdleCkgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoYXNWYWxpZFBhcmFtczogZmFsc2VcbiAgICB9O1xuICAgIHBhcmFtcyA9IE9iamVjdC5rZXlzKGRlZmF1bHRSb3V0ZVJlZ2V4Lmdyb3VwcykucmVkdWNlKChwcmV2LCBrZXkpPT57XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcmFtc1trZXldO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZVJzY1VSTCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgodmFsKT0+e1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZVJzY1VSTCh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIHZhbHVlIG1hdGNoZXMgdGhlIGRlZmF1bHQgdmFsdWUgd2UgY2FuJ3QgcmVseVxuICAgICAgICAvLyBvbiB0aGUgcGFyc2VkIHBhcmFtcywgdGhpcyBpcyB1c2VkIHRvIHNpZ25hbCBpZiB3ZSBuZWVkXG4gICAgICAgIC8vIHRvIHBhcnNlIHgtbm93LXJvdXRlLW1hdGNoZXMgb3Igbm90XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRSb3V0ZU1hdGNoZXNba2V5XTtcbiAgICAgICAgY29uc3QgaXNPcHRpb25hbCA9IGRlZmF1bHRSb3V0ZVJlZ2V4Lmdyb3Vwc1trZXldLm9wdGlvbmFsO1xuICAgICAgICBjb25zdCBpc0RlZmF1bHRWYWx1ZSA9IEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKSA/IGRlZmF1bHRWYWx1ZS5zb21lKChkZWZhdWx0VmFsKT0+e1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZSgodmFsKT0+dmFsLmluY2x1ZGVzKGRlZmF1bHRWYWwpKSA6IHZhbHVlID09IG51bGwgPyB2b2lkIDAgOiB2YWx1ZS5pbmNsdWRlcyhkZWZhdWx0VmFsKTtcbiAgICAgICAgfSkgOiB2YWx1ZSA9PSBudWxsID8gdm9pZCAwIDogdmFsdWUuaW5jbHVkZXMoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgaWYgKGlzRGVmYXVsdFZhbHVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIiAmJiAhKGlzT3B0aW9uYWwgJiYgaWdub3JlT3B0aW9uYWwpKSB7XG4gICAgICAgICAgICBoYXNWYWxpZFBhcmFtcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vbi1wcm92aWRlZCBvcHRpb25hbCB2YWx1ZXMgc2hvdWxkIGJlIHVuZGVmaW5lZCBzbyBub3JtYWxpemVcbiAgICAgICAgLy8gdGhlbSB0byB1bmRlZmluZWRcbiAgICAgICAgaWYgKGlzT3B0aW9uYWwgJiYgKCF2YWx1ZSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDEgJiYgLy8gZmFsbGJhY2sgb3B0aW9uYWwgY2F0Y2gtYWxsIFNTRyBwYWdlcyBoYXZlXG4gICAgICAgIC8vIFtbLi4ucGFyYW1OYW1lXV0gZm9yIHRoZSByb290IHBhdGggb24gVmVyY2VsXG4gICAgICAgICh2YWx1ZVswXSA9PT0gXCJpbmRleFwiIHx8IHZhbHVlWzBdID09PSBgW1suLi4ke2tleX1dXWApKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgcGFyYW1zW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gcXVlcnkgdmFsdWVzIGZyb20gdGhlIHByb3h5IGFyZW4ndCBhbHJlYWR5IHNwbGl0IGludG8gYXJyYXlzXG4gICAgICAgIC8vIHNvIG1ha2Ugc3VyZSB0byBub3JtYWxpemUgY2F0Y2gtYWxsIHZhbHVlc1xuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIGRlZmF1bHRSb3V0ZVJlZ2V4Lmdyb3Vwc1trZXldLnJlcGVhdCkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdChcIi9cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBwcmV2W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoYXNWYWxpZFBhcmFtc1xuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXRpbHMoeyBwYWdlLCBpMThuLCBiYXNlUGF0aCwgcmV3cml0ZXMsIHBhZ2VJc0R5bmFtaWMsIHRyYWlsaW5nU2xhc2gsIGNhc2VTZW5zaXRpdmUgfSkge1xuICAgIGxldCBkZWZhdWx0Um91dGVSZWdleDtcbiAgICBsZXQgZHluYW1pY1JvdXRlTWF0Y2hlcjtcbiAgICBsZXQgZGVmYXVsdFJvdXRlTWF0Y2hlcztcbiAgICBpZiAocGFnZUlzRHluYW1pYykge1xuICAgICAgICBkZWZhdWx0Um91dGVSZWdleCA9IGdldE5hbWVkUm91dGVSZWdleChwYWdlLCBmYWxzZSk7XG4gICAgICAgIGR5bmFtaWNSb3V0ZU1hdGNoZXIgPSBnZXRSb3V0ZU1hdGNoZXIoZGVmYXVsdFJvdXRlUmVnZXgpO1xuICAgICAgICBkZWZhdWx0Um91dGVNYXRjaGVzID0gZHluYW1pY1JvdXRlTWF0Y2hlcihwYWdlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlUmV3cml0ZXMocmVxLCBwYXJzZWRVcmwpIHtcbiAgICAgICAgY29uc3QgcmV3cml0ZVBhcmFtcyA9IHt9O1xuICAgICAgICBsZXQgZnNQYXRobmFtZSA9IHBhcnNlZFVybC5wYXRobmFtZTtcbiAgICAgICAgY29uc3QgbWF0Y2hlc1BhZ2UgPSAoKT0+e1xuICAgICAgICAgICAgY29uc3QgZnNQYXRobmFtZU5vU2xhc2ggPSByZW1vdmVUcmFpbGluZ1NsYXNoKGZzUGF0aG5hbWUgfHwgXCJcIik7XG4gICAgICAgICAgICByZXR1cm4gZnNQYXRobmFtZU5vU2xhc2ggPT09IHJlbW92ZVRyYWlsaW5nU2xhc2gocGFnZSkgfHwgKGR5bmFtaWNSb3V0ZU1hdGNoZXIgPT0gbnVsbCA/IHZvaWQgMCA6IGR5bmFtaWNSb3V0ZU1hdGNoZXIoZnNQYXRobmFtZU5vU2xhc2gpKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2hlY2tSZXdyaXRlID0gKHJld3JpdGUpPT57XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVyID0gZ2V0UGF0aE1hdGNoKHJld3JpdGUuc291cmNlICsgKHRyYWlsaW5nU2xhc2ggPyBcIigvKT9cIiA6IFwiXCIpLCB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlVW5uYW1lZFBhcmFtczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc2Vuc2l0aXZlOiAhIWNhc2VTZW5zaXRpdmVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IG1hdGNoZXIocGFyc2VkVXJsLnBhdGhuYW1lKTtcbiAgICAgICAgICAgIGlmICgocmV3cml0ZS5oYXMgfHwgcmV3cml0ZS5taXNzaW5nKSAmJiBwYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNQYXJhbXMgPSBtYXRjaEhhcyhyZXEsIHBhcnNlZFVybC5xdWVyeSwgcmV3cml0ZS5oYXMsIHJld3JpdGUubWlzc2luZyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1BhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgaGFzUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXJzZWREZXN0aW5hdGlvbiwgZGVzdFF1ZXJ5IH0gPSBwcmVwYXJlRGVzdGluYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJhbXNUb1F1ZXJ5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogcmV3cml0ZS5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBwYXJzZWRVcmwucXVlcnlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmV3cml0ZSBkZXN0aW5hdGlvbiBpcyBleHRlcm5hbCBicmVhayByZXdyaXRlIGNoYWluXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZERlc3RpbmF0aW9uLnByb3RvY29sKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJld3JpdGVQYXJhbXMsIGRlc3RRdWVyeSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFVybC5xdWVyeSwgcGFyc2VkRGVzdGluYXRpb24ucXVlcnkpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREZXN0aW5hdGlvbi5xdWVyeTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcnNlZFVybCwgcGFyc2VkRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgIGZzUGF0aG5hbWUgPSBwYXJzZWRVcmwucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGJhc2VQYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZzUGF0aG5hbWUgPSBmc1BhdGhuYW1lLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7YmFzZVBhdGh9YCksIFwiXCIpIHx8IFwiL1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaTE4bikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXN0TG9jYWxlUGF0aFJlc3VsdCA9IG5vcm1hbGl6ZUxvY2FsZVBhdGgoZnNQYXRobmFtZSwgaTE4bi5sb2NhbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgZnNQYXRobmFtZSA9IGRlc3RMb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRVcmwucXVlcnkubmV4dEludGVybmFsTG9jYWxlID0gZGVzdExvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgfHwgcGFyYW1zLm5leHRJbnRlcm5hbExvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZzUGF0aG5hbWUgPT09IHBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYWdlSXNEeW5hbWljICYmIGR5bmFtaWNSb3V0ZU1hdGNoZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHluYW1pY1BhcmFtcyA9IGR5bmFtaWNSb3V0ZU1hdGNoZXIoZnNQYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkeW5hbWljUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRVcmwucXVlcnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyc2VkVXJsLnF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmR5bmFtaWNQYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCByZXdyaXRlIG9mIHJld3JpdGVzLmJlZm9yZUZpbGVzIHx8IFtdKXtcbiAgICAgICAgICAgIGNoZWNrUmV3cml0ZShyZXdyaXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnNQYXRobmFtZSAhPT0gcGFnZSkge1xuICAgICAgICAgICAgbGV0IGZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJld3JpdGUgb2YgcmV3cml0ZXMuYWZ0ZXJGaWxlcyB8fCBbXSl7XG4gICAgICAgICAgICAgICAgZmluaXNoZWQgPSBjaGVja1Jld3JpdGUocmV3cml0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZmluaXNoZWQgJiYgIW1hdGNoZXNQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJld3JpdGUgb2YgcmV3cml0ZXMuZmFsbGJhY2sgfHwgW10pe1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZCA9IGNoZWNrUmV3cml0ZShyZXdyaXRlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJld3JpdGVQYXJhbXM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFBhcmFtc0Zyb21Sb3V0ZU1hdGNoZXMocmVxLCByZW5kZXJPcHRzLCBkZXRlY3RlZExvY2FsZSkge1xuICAgICAgICByZXR1cm4gZ2V0Um91dGVNYXRjaGVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgeyBncm91cHMsIHJvdXRlS2V5cyB9ID0gZGVmYXVsdFJvdXRlUmVnZXg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbXVsYXRlIGEgUmVnRXhwIG1hdGNoIGZyb20gdGhlIFxcYHJlcS51cmxcXGAgaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZXhlYzogKHN0cik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHN0cikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlc0hhc0xvY2FsZSA9IGkxOG4gJiYgZGV0ZWN0ZWRMb2NhbGUgJiYgb2JqW1wiMVwiXSA9PT0gZGV0ZWN0ZWRMb2NhbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmopKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYICYmIGtleS5zdGFydHNXaXRoKE5FWFRfUVVFUllfUEFSQU1fUFJFRklYKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0ga2V5LnN1YnN0cmluZyhORVhUX1FVRVJZX1BBUkFNX1BSRUZJWC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbbm9ybWFsaXplZEtleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhdm9yIG5hbWVkIG1hdGNoZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZUtleU5hbWVzID0gT2JqZWN0LmtleXMocm91dGVLZXlzIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckxvY2FsZUl0ZW0gPSAodmFsKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpMThuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZSBpdGVtcyBjYW4gYmUgaW5jbHVkZWQgaW4gcm91dGUtbWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZmFsbGJhY2sgU1NHIHBhZ2VzIHNvIGVuc3VyZSB0aGV5IGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWx0ZXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NhdGNoQWxsID0gQXJyYXkuaXNBcnJheSh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfdmFsID0gaXNDYXRjaEFsbCA/IHZhbFswXSA6IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBfdmFsID09PSBcInN0cmluZ1wiICYmIGkxOG4ubG9jYWxlcy5zb21lKChpdGVtKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udG9Mb3dlckNhc2UoKSA9PT0gX3ZhbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWRMb2NhbGUgPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlck9wdHMubG9jYWxlID0gZGV0ZWN0ZWRMb2NhbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGxvY2FsZSBpdGVtIGZyb20gdGhlIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDYXRjaEFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgaXMgb25seSBhIGxvY2FsZSBpdGVtIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkbid0IGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNDYXRjaEFsbCA/IHZhbC5sZW5ndGggPT09IDAgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVLZXlOYW1lcy5ldmVyeSgobmFtZSk9Pm9ialtuYW1lXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVLZXlOYW1lcy5yZWR1Y2UoKHByZXYsIGtleU5hbWUpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHJvdXRlS2V5cyA9PSBudWxsID8gdm9pZCAwIDogcm91dGVLZXlzW2tleU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1OYW1lICYmICFmaWx0ZXJMb2NhbGVJdGVtKG9ialtrZXlOYW1lXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZbZ3JvdXBzW3BhcmFtTmFtZV0ucG9zXSA9IG9ialtrZXlOYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHByZXYsIGtleSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlckxvY2FsZUl0ZW0ob2JqW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkS2V5ID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlc0hhc0xvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZEtleSA9IHBhcnNlSW50KGtleSwgMTApIC0gMSArIFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocHJldiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vcm1hbGl6ZWRLZXldOiBvYmpba2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdyb3Vwc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSgpKShyZXEuaGVhZGVyc1tcIngtbm93LXJvdXRlLW1hdGNoZXNcIl0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBoYW5kbGVSZXdyaXRlcyxcbiAgICAgICAgZGVmYXVsdFJvdXRlUmVnZXgsXG4gICAgICAgIGR5bmFtaWNSb3V0ZU1hdGNoZXIsXG4gICAgICAgIGRlZmF1bHRSb3V0ZU1hdGNoZXMsXG4gICAgICAgIGdldFBhcmFtc0Zyb21Sb3V0ZU1hdGNoZXMsXG4gICAgICAgIG5vcm1hbGl6ZUR5bmFtaWNSb3V0ZVBhcmFtczogKHBhcmFtcywgaWdub3JlT3B0aW9uYWwpPT5ub3JtYWxpemVEeW5hbWljUm91dGVQYXJhbXMocGFyYW1zLCBpZ25vcmVPcHRpb25hbCwgZGVmYXVsdFJvdXRlUmVnZXgsIGRlZmF1bHRSb3V0ZU1hdGNoZXMpLFxuICAgICAgICBub3JtYWxpemVWZXJjZWxVcmw6IChyZXEsIHRydXN0UXVlcnksIHBhcmFtS2V5cyk9Pm5vcm1hbGl6ZVZlcmNlbFVybChyZXEsIHRydXN0UXVlcnksIHBhcmFtS2V5cywgcGFnZUlzRHluYW1pYywgZGVmYXVsdFJvdXRlUmVnZXgpLFxuICAgICAgICBpbnRlcnBvbGF0ZUR5bmFtaWNQYXRoOiAocGF0aG5hbWUsIHBhcmFtcyk9PmludGVycG9sYXRlRHluYW1pY1BhdGgocGF0aG5hbWUsIHBhcmFtcywgZGVmYXVsdFJvdXRlUmVnZXgpXG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VydmVyLXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6WyJmb3JtYXQiLCJmb3JtYXRVcmwiLCJwYXJzZSIsInBhcnNlVXJsIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImdldFBhdGhNYXRjaCIsImdldE5hbWVkUm91dGVSZWdleCIsImdldFJvdXRlTWF0Y2hlciIsIm1hdGNoSGFzIiwicHJlcGFyZURlc3RpbmF0aW9uIiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsIm5vcm1hbGl6ZVJzY1VSTCIsIk5FWFRfUVVFUllfUEFSQU1fUFJFRklYIiwibm9ybWFsaXplVmVyY2VsVXJsIiwicmVxIiwidHJ1c3RRdWVyeSIsInBhcmFtS2V5cyIsInBhZ2VJc0R5bmFtaWMiLCJkZWZhdWx0Um91dGVSZWdleCIsIl9wYXJzZWRVcmwiLCJ1cmwiLCJzZWFyY2giLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwicXVlcnkiLCJzdGFydHNXaXRoIiwiZ3JvdXBzIiwiaW5jbHVkZXMiLCJpbnRlcnBvbGF0ZUR5bmFtaWNQYXRoIiwicGF0aG5hbWUiLCJwYXJhbXMiLCJwYXJhbSIsIm9wdGlvbmFsIiwicmVwZWF0IiwiYnVpbHRQYXJhbSIsInBhcmFtSWR4IiwiaW5kZXhPZiIsInBhcmFtVmFsdWUiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInYiLCJlbmNvZGVVUklDb21wb25lbnQiLCJqb2luIiwic2xpY2UiLCJsZW5ndGgiLCJub3JtYWxpemVEeW5hbWljUm91dGVQYXJhbXMiLCJpZ25vcmVPcHRpb25hbCIsImRlZmF1bHRSb3V0ZU1hdGNoZXMiLCJoYXNWYWxpZFBhcmFtcyIsInJlZHVjZSIsInByZXYiLCJ2YWwiLCJkZWZhdWx0VmFsdWUiLCJpc09wdGlvbmFsIiwiaXNEZWZhdWx0VmFsdWUiLCJzb21lIiwiZGVmYXVsdFZhbCIsInVuZGVmaW5lZCIsInNwbGl0IiwiZ2V0VXRpbHMiLCJwYWdlIiwiaTE4biIsImJhc2VQYXRoIiwicmV3cml0ZXMiLCJ0cmFpbGluZ1NsYXNoIiwiY2FzZVNlbnNpdGl2ZSIsImR5bmFtaWNSb3V0ZU1hdGNoZXIiLCJoYW5kbGVSZXdyaXRlcyIsInBhcnNlZFVybCIsInJld3JpdGVQYXJhbXMiLCJmc1BhdGhuYW1lIiwibWF0Y2hlc1BhZ2UiLCJmc1BhdGhuYW1lTm9TbGFzaCIsImNoZWNrUmV3cml0ZSIsInJld3JpdGUiLCJtYXRjaGVyIiwic291cmNlIiwicmVtb3ZlVW5uYW1lZFBhcmFtcyIsInN0cmljdCIsInNlbnNpdGl2ZSIsImhhcyIsIm1pc3NpbmciLCJoYXNQYXJhbXMiLCJhc3NpZ24iLCJwYXJzZWREZXN0aW5hdGlvbiIsImRlc3RRdWVyeSIsImFwcGVuZFBhcmFtc1RvUXVlcnkiLCJkZXN0aW5hdGlvbiIsInByb3RvY29sIiwicmVwbGFjZSIsIlJlZ0V4cCIsImRlc3RMb2NhbGVQYXRoUmVzdWx0IiwibG9jYWxlcyIsIm5leHRJbnRlcm5hbExvY2FsZSIsImRldGVjdGVkTG9jYWxlIiwiZHluYW1pY1BhcmFtcyIsImJlZm9yZUZpbGVzIiwiZmluaXNoZWQiLCJhZnRlckZpbGVzIiwiZmFsbGJhY2siLCJnZXRQYXJhbXNGcm9tUm91dGVNYXRjaGVzIiwicmVuZGVyT3B0cyIsInJvdXRlS2V5cyIsInJlIiwiZXhlYyIsInN0ciIsIm9iaiIsImZyb21FbnRyaWVzIiwiVVJMU2VhcmNoUGFyYW1zIiwibWF0Y2hlc0hhc0xvY2FsZSIsIm5vcm1hbGl6ZWRLZXkiLCJzdWJzdHJpbmciLCJyb3V0ZUtleU5hbWVzIiwiZmlsdGVyTG9jYWxlSXRlbSIsImlzQ2F0Y2hBbGwiLCJfdmFsIiwiaXRlbSIsInRvTG93ZXJDYXNlIiwibG9jYWxlIiwic3BsaWNlIiwiZXZlcnkiLCJuYW1lIiwia2V5TmFtZSIsInBhcmFtTmFtZSIsInBvcyIsInBhcnNlSW50IiwiaGVhZGVycyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/server-utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/adapter.js":
/*!**********************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/adapter.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ adapter: () => (/* binding */ adapter)\n/* harmony export */ });\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error */ \"(rsc)/./node_modules/next/dist/esm/server/web/error.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/esm/server/web/utils.js\");\n/* harmony import */ var _spec_extension_fetch_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spec-extension/fetch-event */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js\");\n/* harmony import */ var _spec_extension_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spec-extension/request */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/request.js\");\n/* harmony import */ var _spec_extension_response__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./spec-extension/response */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/response.js\");\n/* harmony import */ var _shared_lib_router_utils_relativize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../shared/lib/router/utils/relativize-url */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js\");\n/* harmony import */ var _next_url__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./next-url */ \"(rsc)/./node_modules/next/dist/esm/server/web/next-url.js\");\n/* harmony import */ var _internal_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internal-utils */ \"(rsc)/./node_modules/next/dist/esm/server/internal-utils.js\");\n/* harmony import */ var _shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../shared/lib/router/utils/app-paths */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js\");\n/* harmony import */ var _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\");\n/* harmony import */ var _lib_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../lib/constants */ \"(rsc)/./node_modules/next/dist/esm/lib/constants.js\");\n/* harmony import */ var _globals__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./globals */ \"(rsc)/./node_modules/next/dist/esm/server/web/globals.js\");\n/* harmony import */ var _async_storage_request_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../async-storage/request-async-storage-wrapper */ \"(rsc)/./node_modules/next/dist/esm/server/async-storage/request-async-storage-wrapper.js\");\n/* harmony import */ var _client_components_request_async_storage_external__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../client/components/request-async-storage.external */ \"(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js\");\n/* harmony import */ var _lib_trace_tracer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/esm/server/lib/trace/tracer.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass NextRequestHint extends _spec_extension_request__WEBPACK_IMPORTED_MODULE_3__.NextRequest {\n constructor(params){\n super(params.input, params.init);\n this.sourcePage = params.page;\n }\n get request() {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__.PageSignatureError({\n page: this.sourcePage\n });\n }\n respondWith() {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__.PageSignatureError({\n page: this.sourcePage\n });\n }\n waitUntil() {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__.PageSignatureError({\n page: this.sourcePage\n });\n }\n}\nconst headersGetter = {\n keys: (headers)=>Array.from(headers.keys()),\n get: (headers, key)=>headers.get(key) ?? undefined\n};\nlet propagator = (request, fn)=>{\n const tracer = (0,_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_14__.getTracer)();\n return tracer.withPropagatedContext(request.headers, fn, headersGetter);\n};\nlet testApisIntercepted = false;\nfunction ensureTestApisIntercepted() {\n if (!testApisIntercepted) {\n testApisIntercepted = true;\n if (process.env.NEXT_PRIVATE_TEST_PROXY === \"true\") {\n const { interceptTestApis, wrapRequestHandler } = __webpack_require__(/*! next/dist/experimental/testmode/server-edge */ \"(rsc)/./node_modules/next/dist/experimental/testmode/server-edge.js\");\n interceptTestApis();\n propagator = wrapRequestHandler(propagator);\n }\n }\n}\nasync function adapter(params) {\n ensureTestApisIntercepted();\n await (0,_globals__WEBPACK_IMPORTED_MODULE_11__.ensureInstrumentationRegistered)();\n // TODO-APP: use explicit marker for this\n const isEdgeRendering = typeof self.__BUILD_MANIFEST !== \"undefined\";\n const prerenderManifest = typeof self.__PRERENDER_MANIFEST === \"string\" ? JSON.parse(self.__PRERENDER_MANIFEST) : undefined;\n params.request.url = (0,_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_8__.normalizeRscURL)(params.request.url);\n const requestUrl = new _next_url__WEBPACK_IMPORTED_MODULE_6__.NextURL(params.request.url, {\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n // Iterator uses an index to keep track of the current iteration. Because of deleting and appending below we can't just use the iterator.\n // Instead we use the keys before iteration.\n const keys = [\n ...requestUrl.searchParams.keys()\n ];\n for (const key of keys){\n const value = requestUrl.searchParams.getAll(key);\n if (key !== _lib_constants__WEBPACK_IMPORTED_MODULE_10__.NEXT_QUERY_PARAM_PREFIX && key.startsWith(_lib_constants__WEBPACK_IMPORTED_MODULE_10__.NEXT_QUERY_PARAM_PREFIX)) {\n const normalizedKey = key.substring(_lib_constants__WEBPACK_IMPORTED_MODULE_10__.NEXT_QUERY_PARAM_PREFIX.length);\n requestUrl.searchParams.delete(normalizedKey);\n for (const val of value){\n requestUrl.searchParams.append(normalizedKey, val);\n }\n requestUrl.searchParams.delete(key);\n }\n }\n // Ensure users only see page requests, never data requests.\n const buildId = requestUrl.buildId;\n requestUrl.buildId = \"\";\n const isDataReq = params.request.headers[\"x-nextjs-data\"];\n if (isDataReq && requestUrl.pathname === \"/index\") {\n requestUrl.pathname = \"/\";\n }\n const requestHeaders = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.fromNodeOutgoingHttpHeaders)(params.request.headers);\n const flightHeaders = new Map();\n // Parameters should only be stripped for middleware\n if (!isEdgeRendering) {\n for (const param of _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_9__.FLIGHT_PARAMETERS){\n const key = param.toString().toLowerCase();\n const value = requestHeaders.get(key);\n if (value) {\n flightHeaders.set(key, requestHeaders.get(key));\n requestHeaders.delete(key);\n }\n }\n }\n const normalizeUrl = false ? 0 : requestUrl;\n const request = new NextRequestHint({\n page: params.page,\n // Strip internal query parameters off the request.\n input: (0,_internal_utils__WEBPACK_IMPORTED_MODULE_7__.stripInternalSearchParams)(normalizeUrl, true).toString(),\n init: {\n body: params.request.body,\n geo: params.request.geo,\n headers: requestHeaders,\n ip: params.request.ip,\n method: params.request.method,\n nextConfig: params.request.nextConfig,\n signal: params.request.signal\n }\n });\n /**\n * This allows to identify the request as a data request. The user doesn't\n * need to know about this property neither use it. We add it for testing\n * purposes.\n */ if (isDataReq) {\n Object.defineProperty(request, \"__isData\", {\n enumerable: false,\n value: true\n });\n }\n if (!globalThis.__incrementalCache && params.IncrementalCache) {\n globalThis.__incrementalCache = new params.IncrementalCache({\n appDir: true,\n fetchCache: true,\n minimalMode: \"development\" !== \"development\",\n fetchCacheKeyPrefix: undefined,\n dev: \"development\" === \"development\",\n requestHeaders: params.request.headers,\n requestProtocol: \"https\",\n getPrerenderManifest: ()=>{\n return {\n version: -1,\n routes: {},\n dynamicRoutes: {},\n notFoundRoutes: [],\n preview: {\n previewModeId: \"development-id\"\n }\n };\n }\n });\n }\n const event = new _spec_extension_fetch_event__WEBPACK_IMPORTED_MODULE_2__.NextFetchEvent({\n request,\n page: params.page\n });\n let response;\n let cookiesFromResponse;\n response = await propagator(request, ()=>{\n // we only care to make async storage available for middleware\n const isMiddleware = params.page === \"/middleware\" || params.page === \"/src/middleware\";\n if (isMiddleware) {\n return _async_storage_request_async_storage_wrapper__WEBPACK_IMPORTED_MODULE_12__.RequestAsyncStorageWrapper.wrap(_client_components_request_async_storage_external__WEBPACK_IMPORTED_MODULE_13__.requestAsyncStorage, {\n req: request,\n renderOpts: {\n onUpdateCookies: (cookies)=>{\n cookiesFromResponse = cookies;\n },\n // @ts-expect-error: TODO: investigate why previewProps isn't on RenderOpts\n previewProps: (prerenderManifest == null ? void 0 : prerenderManifest.preview) || {\n previewModeId: \"development-id\",\n previewModeEncryptionKey: \"\",\n previewModeSigningKey: \"\"\n }\n }\n }, ()=>params.handler(request, event));\n }\n return params.handler(request, event);\n });\n // check if response is a Response object\n if (response && !(response instanceof Response)) {\n throw new TypeError(\"Expected an instance of Response to be returned\");\n }\n if (response && cookiesFromResponse) {\n response.headers.set(\"set-cookie\", cookiesFromResponse);\n }\n /**\n * For rewrites we must always include the locale in the final pathname\n * so we re-create the NextURL forcing it to include it when the it is\n * an internal rewrite. Also we make sure the outgoing rewrite URL is\n * a data URL if the request was a data request.\n */ const rewrite = response == null ? void 0 : response.headers.get(\"x-middleware-rewrite\");\n if (response && rewrite) {\n const rewriteUrl = new _next_url__WEBPACK_IMPORTED_MODULE_6__.NextURL(rewrite, {\n forceLocale: true,\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n if (true) {\n if (rewriteUrl.host === request.nextUrl.host) {\n rewriteUrl.buildId = buildId || rewriteUrl.buildId;\n response.headers.set(\"x-middleware-rewrite\", String(rewriteUrl));\n }\n }\n /**\n * When the request is a data request we must show if there was a rewrite\n * with an internal header so the client knows which component to load\n * from the data request.\n */ const relativizedRewrite = (0,_shared_lib_router_utils_relativize_url__WEBPACK_IMPORTED_MODULE_5__.relativizeURL)(String(rewriteUrl), String(requestUrl));\n if (isDataReq && // if the rewrite is external and external rewrite\n // resolving config is enabled don't add this header\n // so the upstream app can set it instead\n !(undefined && 0)) {\n response.headers.set(\"x-nextjs-rewrite\", relativizedRewrite);\n }\n }\n /**\n * For redirects we will not include the locale in case when it is the\n * default and we must also make sure the outgoing URL is a data one if\n * the incoming request was a data request.\n */ const redirect = response == null ? void 0 : response.headers.get(\"Location\");\n if (response && redirect && !isEdgeRendering) {\n const redirectURL = new _next_url__WEBPACK_IMPORTED_MODULE_6__.NextURL(redirect, {\n forceLocale: false,\n headers: params.request.headers,\n nextConfig: params.request.nextConfig\n });\n /**\n * Responses created from redirects have immutable headers so we have\n * to clone the response to be able to modify it.\n */ response = new Response(response.body, response);\n if (true) {\n if (redirectURL.host === request.nextUrl.host) {\n redirectURL.buildId = buildId || redirectURL.buildId;\n response.headers.set(\"Location\", String(redirectURL));\n }\n }\n /**\n * When the request is a data request we can't use the location header as\n * it may end up with CORS error. Instead we map to an internal header so\n * the client knows the destination.\n */ if (isDataReq) {\n response.headers.delete(\"Location\");\n response.headers.set(\"x-nextjs-redirect\", (0,_shared_lib_router_utils_relativize_url__WEBPACK_IMPORTED_MODULE_5__.relativizeURL)(String(redirectURL), String(requestUrl)));\n }\n }\n const finalResponse = response ? response : _spec_extension_response__WEBPACK_IMPORTED_MODULE_4__.NextResponse.next();\n // Flight headers are not overridable / removable so they are applied at the end.\n const middlewareOverrideHeaders = finalResponse.headers.get(\"x-middleware-override-headers\");\n const overwrittenHeaders = [];\n if (middlewareOverrideHeaders) {\n for (const [key, value] of flightHeaders){\n finalResponse.headers.set(`x-middleware-request-${key}`, value);\n overwrittenHeaders.push(key);\n }\n if (overwrittenHeaders.length > 0) {\n finalResponse.headers.set(\"x-middleware-override-headers\", middlewareOverrideHeaders + \",\" + overwrittenHeaders.join(\",\"));\n }\n }\n return {\n response: finalResponse,\n waitUntil: Promise.all(event[_spec_extension_fetch_event__WEBPACK_IMPORTED_MODULE_2__.waitUntilSymbol]),\n fetchMetrics: request.fetchMetrics\n };\n} //# sourceMappingURL=adapter.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2FkYXB0ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE2QztBQUNTO0FBQ1E7QUFDUDtBQUNFO0FBQ29CO0FBQ2Q7QUFDMUI7QUFDeUI7QUFDWTtBQUNLO0FBQ2pCO0FBQ0Y7QUFDZ0M7QUFDQztBQUM3QztBQUNoRCxNQUFNZ0Isd0JBQXdCYixnRUFBV0E7SUFDckNjLFlBQVlDLE1BQU0sQ0FBQztRQUNmLEtBQUssQ0FBQ0EsT0FBT0MsS0FBSyxFQUFFRCxPQUFPRSxJQUFJO1FBQy9CLElBQUksQ0FBQ0MsVUFBVSxHQUFHSCxPQUFPSSxJQUFJO0lBQ2pDO0lBQ0EsSUFBSUMsVUFBVTtRQUNWLE1BQU0sSUFBSXZCLHNEQUFrQkEsQ0FBQztZQUN6QnNCLE1BQU0sSUFBSSxDQUFDRCxVQUFVO1FBQ3pCO0lBQ0o7SUFDQUcsY0FBYztRQUNWLE1BQU0sSUFBSXhCLHNEQUFrQkEsQ0FBQztZQUN6QnNCLE1BQU0sSUFBSSxDQUFDRCxVQUFVO1FBQ3pCO0lBQ0o7SUFDQUksWUFBWTtRQUNSLE1BQU0sSUFBSXpCLHNEQUFrQkEsQ0FBQztZQUN6QnNCLE1BQU0sSUFBSSxDQUFDRCxVQUFVO1FBQ3pCO0lBQ0o7QUFDSjtBQUNBLE1BQU1LLGdCQUFnQjtJQUNsQkMsTUFBTSxDQUFDQyxVQUFVQyxNQUFNQyxJQUFJLENBQUNGLFFBQVFELElBQUk7SUFDeENJLEtBQUssQ0FBQ0gsU0FBU0ksTUFBTUosUUFBUUcsR0FBRyxDQUFDQyxRQUFRQztBQUM3QztBQUNBLElBQUlDLGFBQWEsQ0FBQ1gsU0FBU1k7SUFDdkIsTUFBTUMsU0FBU3JCLDZEQUFTQTtJQUN4QixPQUFPcUIsT0FBT0MscUJBQXFCLENBQUNkLFFBQVFLLE9BQU8sRUFBRU8sSUFBSVQ7QUFDN0Q7QUFDQSxJQUFJWSxzQkFBc0I7QUFDMUIsU0FBU0M7SUFDTCxJQUFJLENBQUNELHFCQUFxQjtRQUN0QkEsc0JBQXNC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QSxXQUFXdEcsa0VBQVlBLENBQUNnSSxJQUFJO0lBQzdELGlGQUFpRjtJQUNqRixNQUFNQyw0QkFBNEJGLGNBQWN2RyxPQUFPLENBQUNHLEdBQUcsQ0FBQztJQUM1RCxNQUFNdUcscUJBQXFCLEVBQUU7SUFDN0IsSUFBSUQsMkJBQTJCO1FBQzNCLEtBQUssTUFBTSxDQUFDckcsS0FBSzBCLE1BQU0sSUFBSWEsY0FBYztZQUNyQzRELGNBQWN2RyxPQUFPLENBQUNnRCxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRTVDLElBQUksQ0FBQyxFQUFFMEI7WUFDekQ0RSxtQkFBbUJDLElBQUksQ0FBQ3ZHO1FBQzVCO1FBQ0EsSUFBSXNHLG1CQUFtQnZFLE1BQU0sR0FBRyxHQUFHO1lBQy9Cb0UsY0FBY3ZHLE9BQU8sQ0FBQ2dELEdBQUcsQ0FBQyxpQ0FBaUN5RCw0QkFBNEIsTUFBTUMsbUJBQW1CRSxJQUFJLENBQUM7UUFDekg7SUFDSjtJQUNBLE9BQU87UUFDSDlCLFVBQVV5QjtRQUNWMUcsV0FBV2dILFFBQVFDLEdBQUcsQ0FBQ2pDLEtBQUssQ0FBQ25HLHdFQUFlQSxDQUFDO1FBQzdDcUksY0FBY3BILFFBQVFvSCxZQUFZO0lBQ3RDO0FBQ0osRUFFQSxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9hZGFwdGVyLmpzPzdkNDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZVNpZ25hdHVyZUVycm9yIH0gZnJvbSBcIi4vZXJyb3JcIjtcbmltcG9ydCB7IGZyb21Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBOZXh0RmV0Y2hFdmVudCB9IGZyb20gXCIuL3NwZWMtZXh0ZW5zaW9uL2ZldGNoLWV2ZW50XCI7XG5pbXBvcnQgeyBOZXh0UmVxdWVzdCB9IGZyb20gXCIuL3NwZWMtZXh0ZW5zaW9uL3JlcXVlc3RcIjtcbmltcG9ydCB7IE5leHRSZXNwb25zZSB9IGZyb20gXCIuL3NwZWMtZXh0ZW5zaW9uL3Jlc3BvbnNlXCI7XG5pbXBvcnQgeyByZWxhdGl2aXplVVJMIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbGF0aXZpemUtdXJsXCI7XG5pbXBvcnQgeyB3YWl0VW50aWxTeW1ib2wgfSBmcm9tIFwiLi9zcGVjLWV4dGVuc2lvbi9mZXRjaC1ldmVudFwiO1xuaW1wb3J0IHsgTmV4dFVSTCB9IGZyb20gXCIuL25leHQtdXJsXCI7XG5pbXBvcnQgeyBzdHJpcEludGVybmFsU2VhcmNoUGFyYW1zIH0gZnJvbSBcIi4uL2ludGVybmFsLXV0aWxzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVSc2NVUkwgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYXBwLXBhdGhzXCI7XG5pbXBvcnQgeyBGTElHSFRfUEFSQU1FVEVSUyB9IGZyb20gXCIuLi8uLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIjtcbmltcG9ydCB7IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYIH0gZnJvbSBcIi4uLy4uL2xpYi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGVuc3VyZUluc3RydW1lbnRhdGlvblJlZ2lzdGVyZWQgfSBmcm9tIFwiLi9nbG9iYWxzXCI7XG5pbXBvcnQgeyBSZXF1ZXN0QXN5bmNTdG9yYWdlV3JhcHBlciB9IGZyb20gXCIuLi9hc3luYy1zdG9yYWdlL3JlcXVlc3QtYXN5bmMtc3RvcmFnZS13cmFwcGVyXCI7XG5pbXBvcnQgeyByZXF1ZXN0QXN5bmNTdG9yYWdlIH0gZnJvbSBcIi4uLy4uL2NsaWVudC9jb21wb25lbnRzL3JlcXVlc3QtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiO1xuaW1wb3J0IHsgZ2V0VHJhY2VyIH0gZnJvbSBcIi4uL2xpYi90cmFjZS90cmFjZXJcIjtcbmNsYXNzIE5leHRSZXF1ZXN0SGludCBleHRlbmRzIE5leHRSZXF1ZXN0IHtcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpe1xuICAgICAgICBzdXBlcihwYXJhbXMuaW5wdXQsIHBhcmFtcy5pbml0KTtcbiAgICAgICAgdGhpcy5zb3VyY2VQYWdlID0gcGFyYW1zLnBhZ2U7XG4gICAgfVxuICAgIGdldCByZXF1ZXN0KCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFnZVNpZ25hdHVyZUVycm9yKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuc291cmNlUGFnZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVzcG9uZFdpdGgoKSB7XG4gICAgICAgIHRocm93IG5ldyBQYWdlU2lnbmF0dXJlRXJyb3Ioe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5zb3VyY2VQYWdlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3YWl0VW50aWwoKSB7XG4gICAgICAgIHRocm93IG5ldyBQYWdlU2lnbmF0dXJlRXJyb3Ioe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5zb3VyY2VQYWdlXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNvbnN0IGhlYWRlcnNHZXR0ZXIgPSB7XG4gICAga2V5czogKGhlYWRlcnMpPT5BcnJheS5mcm9tKGhlYWRlcnMua2V5cygpKSxcbiAgICBnZXQ6IChoZWFkZXJzLCBrZXkpPT5oZWFkZXJzLmdldChrZXkpID8/IHVuZGVmaW5lZFxufTtcbmxldCBwcm9wYWdhdG9yID0gKHJlcXVlc3QsIGZuKT0+e1xuICAgIGNvbnN0IHRyYWNlciA9IGdldFRyYWNlcigpO1xuICAgIHJldHVybiB0cmFjZXIud2l0aFByb3BhZ2F0ZWRDb250ZXh0KHJlcXVlc3QuaGVhZGVycywgZm4sIGhlYWRlcnNHZXR0ZXIpO1xufTtcbmxldCB0ZXN0QXBpc0ludGVyY2VwdGVkID0gZmFsc2U7XG5mdW5jdGlvbiBlbnN1cmVUZXN0QXBpc0ludGVyY2VwdGVkKCkge1xuICAgIGlmICghdGVzdEFwaXNJbnRlcmNlcHRlZCkge1xuICAgICAgICB0ZXN0QXBpc0ludGVyY2VwdGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUFJJVkFURV9URVNUX1BST1hZID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgY29uc3QgeyBpbnRlcmNlcHRUZXN0QXBpcywgd3JhcFJlcXVlc3RIYW5kbGVyIH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9zZXJ2ZXItZWRnZVwiKTtcbiAgICAgICAgICAgIGludGVyY2VwdFRlc3RBcGlzKCk7XG4gICAgICAgICAgICBwcm9wYWdhdG9yID0gd3JhcFJlcXVlc3RIYW5kbGVyKHByb3BhZ2F0b3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkYXB0ZXIocGFyYW1zKSB7XG4gICAgZW5zdXJlVGVzdEFwaXNJbnRlcmNlcHRlZCgpO1xuICAgIGF3YWl0IGVuc3VyZUluc3RydW1lbnRhdGlvblJlZ2lzdGVyZWQoKTtcbiAgICAvLyBUT0RPLUFQUDogdXNlIGV4cGxpY2l0IG1hcmtlciBmb3IgdGhpc1xuICAgIGNvbnN0IGlzRWRnZVJlbmRlcmluZyA9IHR5cGVvZiBzZWxmLl9fQlVJTERfTUFOSUZFU1QgIT09IFwidW5kZWZpbmVkXCI7XG4gICAgY29uc3QgcHJlcmVuZGVyTWFuaWZlc3QgPSB0eXBlb2Ygc2VsZi5fX1BSRVJFTkRFUl9NQU5JRkVTVCA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2Uoc2VsZi5fX1BSRVJFTkRFUl9NQU5JRkVTVCkgOiB1bmRlZmluZWQ7XG4gICAgcGFyYW1zLnJlcXVlc3QudXJsID0gbm9ybWFsaXplUnNjVVJMKHBhcmFtcy5yZXF1ZXN0LnVybCk7XG4gICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBOZXh0VVJMKHBhcmFtcy5yZXF1ZXN0LnVybCwge1xuICAgICAgICBoZWFkZXJzOiBwYXJhbXMucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICBuZXh0Q29uZmlnOiBwYXJhbXMucmVxdWVzdC5uZXh0Q29uZmlnXG4gICAgfSk7XG4gICAgLy8gSXRlcmF0b3IgdXNlcyBhbiBpbmRleCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGl0ZXJhdGlvbi4gQmVjYXVzZSBvZiBkZWxldGluZyBhbmQgYXBwZW5kaW5nIGJlbG93IHdlIGNhbid0IGp1c3QgdXNlIHRoZSBpdGVyYXRvci5cbiAgICAvLyBJbnN0ZWFkIHdlIHVzZSB0aGUga2V5cyBiZWZvcmUgaXRlcmF0aW9uLlxuICAgIGNvbnN0IGtleXMgPSBbXG4gICAgICAgIC4uLnJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmtleXMoKVxuICAgIF07XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cyl7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICAgIGlmIChrZXkgIT09IE5FWFRfUVVFUllfUEFSQU1fUFJFRklYICYmIGtleS5zdGFydHNXaXRoKE5FWFRfUVVFUllfUEFSQU1fUFJFRklYKSkge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGtleS5zdWJzdHJpbmcoTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVgubGVuZ3RoKTtcbiAgICAgICAgICAgIHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShub3JtYWxpemVkS2V5KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsIG9mIHZhbHVlKXtcbiAgICAgICAgICAgICAgICByZXF1ZXN0VXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQobm9ybWFsaXplZEtleSwgdmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEVuc3VyZSB1c2VycyBvbmx5IHNlZSBwYWdlIHJlcXVlc3RzLCBuZXZlciBkYXRhIHJlcXVlc3RzLlxuICAgIGNvbnN0IGJ1aWxkSWQgPSByZXF1ZXN0VXJsLmJ1aWxkSWQ7XG4gICAgcmVxdWVzdFVybC5idWlsZElkID0gXCJcIjtcbiAgICBjb25zdCBpc0RhdGFSZXEgPSBwYXJhbXMucmVxdWVzdC5oZWFkZXJzW1wieC1uZXh0anMtZGF0YVwiXTtcbiAgICBpZiAoaXNEYXRhUmVxICYmIHJlcXVlc3RVcmwucGF0aG5hbWUgPT09IFwiL2luZGV4XCIpIHtcbiAgICAgICAgcmVxdWVzdFVybC5wYXRobmFtZSA9IFwiL1wiO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IGZyb21Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycyhwYXJhbXMucmVxdWVzdC5oZWFkZXJzKTtcbiAgICBjb25zdCBmbGlnaHRIZWFkZXJzID0gbmV3IE1hcCgpO1xuICAgIC8vIFBhcmFtZXRlcnMgc2hvdWxkIG9ubHkgYmUgc3RyaXBwZWQgZm9yIG1pZGRsZXdhcmVcbiAgICBpZiAoIWlzRWRnZVJlbmRlcmluZykge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIEZMSUdIVF9QQVJBTUVURVJTKXtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHBhcmFtLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVxdWVzdEhlYWRlcnMuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmbGlnaHRIZWFkZXJzLnNldChrZXksIHJlcXVlc3RIZWFkZXJzLmdldChrZXkpKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycy5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVVcmwgPSBwcm9jZXNzLmVudi5fX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFID8gbmV3IFVSTChwYXJhbXMucmVxdWVzdC51cmwpIDogcmVxdWVzdFVybDtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IE5leHRSZXF1ZXN0SGludCh7XG4gICAgICAgIHBhZ2U6IHBhcmFtcy5wYWdlLFxuICAgICAgICAvLyBTdHJpcCBpbnRlcm5hbCBxdWVyeSBwYXJhbWV0ZXJzIG9mZiB0aGUgcmVxdWVzdC5cbiAgICAgICAgaW5wdXQ6IHN0cmlwSW50ZXJuYWxTZWFyY2hQYXJhbXMobm9ybWFsaXplVXJsLCB0cnVlKS50b1N0cmluZygpLFxuICAgICAgICBpbml0OiB7XG4gICAgICAgICAgICBib2R5OiBwYXJhbXMucmVxdWVzdC5ib2R5LFxuICAgICAgICAgICAgZ2VvOiBwYXJhbXMucmVxdWVzdC5nZW8sXG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICAgICAgICAgIGlwOiBwYXJhbXMucmVxdWVzdC5pcCxcbiAgICAgICAgICAgIG1ldGhvZDogcGFyYW1zLnJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgbmV4dENvbmZpZzogcGFyYW1zLnJlcXVlc3QubmV4dENvbmZpZyxcbiAgICAgICAgICAgIHNpZ25hbDogcGFyYW1zLnJlcXVlc3Quc2lnbmFsXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvKipcbiAgICogVGhpcyBhbGxvd3MgdG8gaWRlbnRpZnkgdGhlIHJlcXVlc3QgYXMgYSBkYXRhIHJlcXVlc3QuIFRoZSB1c2VyIGRvZXNuJ3RcbiAgICogbmVlZCB0byBrbm93IGFib3V0IHRoaXMgcHJvcGVydHkgbmVpdGhlciB1c2UgaXQuIFdlIGFkZCBpdCBmb3IgdGVzdGluZ1xuICAgKiBwdXJwb3Nlcy5cbiAgICovIGlmIChpc0RhdGFSZXEpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVlc3QsIFwiX19pc0RhdGFcIiwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFnbG9iYWxUaGlzLl9faW5jcmVtZW50YWxDYWNoZSAmJiBwYXJhbXMuSW5jcmVtZW50YWxDYWNoZSkge1xuICAgICAgICBnbG9iYWxUaGlzLl9faW5jcmVtZW50YWxDYWNoZSA9IG5ldyBwYXJhbXMuSW5jcmVtZW50YWxDYWNoZSh7XG4gICAgICAgICAgICBhcHBEaXI6IHRydWUsXG4gICAgICAgICAgICBmZXRjaENhY2hlOiB0cnVlLFxuICAgICAgICAgICAgbWluaW1hbE1vZGU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIsXG4gICAgICAgICAgICBmZXRjaENhY2hlS2V5UHJlZml4OiBwcm9jZXNzLmVudi5fX05FWFRfRkVUQ0hfQ0FDSEVfS0VZX1BSRUZJWCxcbiAgICAgICAgICAgIGRldjogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIixcbiAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzOiBwYXJhbXMucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgcmVxdWVzdFByb3RvY29sOiBcImh0dHBzXCIsXG4gICAgICAgICAgICBnZXRQcmVyZW5kZXJNYW5pZmVzdDogKCk9PntcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAtMSxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY1JvdXRlczoge30sXG4gICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlldzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld01vZGVJZDogXCJkZXZlbG9wbWVudC1pZFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTmV4dEZldGNoRXZlbnQoe1xuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBwYWdlOiBwYXJhbXMucGFnZVxuICAgIH0pO1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgY29va2llc0Zyb21SZXNwb25zZTtcbiAgICByZXNwb25zZSA9IGF3YWl0IHByb3BhZ2F0b3IocmVxdWVzdCwgKCk9PntcbiAgICAgICAgLy8gd2Ugb25seSBjYXJlIHRvIG1ha2UgYXN5bmMgc3RvcmFnZSBhdmFpbGFibGUgZm9yIG1pZGRsZXdhcmVcbiAgICAgICAgY29uc3QgaXNNaWRkbGV3YXJlID0gcGFyYW1zLnBhZ2UgPT09IFwiL21pZGRsZXdhcmVcIiB8fCBwYXJhbXMucGFnZSA9PT0gXCIvc3JjL21pZGRsZXdhcmVcIjtcbiAgICAgICAgaWYgKGlzTWlkZGxld2FyZSkge1xuICAgICAgICAgICAgcmV0dXJuIFJlcXVlc3RBc3luY1N0b3JhZ2VXcmFwcGVyLndyYXAocmVxdWVzdEFzeW5jU3RvcmFnZSwge1xuICAgICAgICAgICAgICAgIHJlcTogcmVxdWVzdCxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlQ29va2llczogKGNvb2tpZXMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBjb29raWVzRnJvbVJlc3BvbnNlID0gY29va2llcztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVE9ETzogaW52ZXN0aWdhdGUgd2h5IHByZXZpZXdQcm9wcyBpc24ndCBvbiBSZW5kZXJPcHRzXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdQcm9wczogKHByZXJlbmRlck1hbmlmZXN0ID09IG51bGwgPyB2b2lkIDAgOiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3KSB8fCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3TW9kZUlkOiBcImRldmVsb3BtZW50LWlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3TW9kZUVuY3J5cHRpb25LZXk6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3TW9kZVNpZ25pbmdLZXk6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sICgpPT5wYXJhbXMuaGFuZGxlcihyZXF1ZXN0LCBldmVudCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJhbXMuaGFuZGxlcihyZXF1ZXN0LCBldmVudCk7XG4gICAgfSk7XG4gICAgLy8gY2hlY2sgaWYgcmVzcG9uc2UgaXMgYSBSZXNwb25zZSBvYmplY3RcbiAgICBpZiAocmVzcG9uc2UgJiYgIShyZXNwb25zZSBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgUmVzcG9uc2UgdG8gYmUgcmV0dXJuZWRcIik7XG4gICAgfVxuICAgIGlmIChyZXNwb25zZSAmJiBjb29raWVzRnJvbVJlc3BvbnNlKSB7XG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwic2V0LWNvb2tpZVwiLCBjb29raWVzRnJvbVJlc3BvbnNlKTtcbiAgICB9XG4gICAgLyoqXG4gICAqIEZvciByZXdyaXRlcyB3ZSBtdXN0IGFsd2F5cyBpbmNsdWRlIHRoZSBsb2NhbGUgaW4gdGhlIGZpbmFsIHBhdGhuYW1lXG4gICAqIHNvIHdlIHJlLWNyZWF0ZSB0aGUgTmV4dFVSTCBmb3JjaW5nIGl0IHRvIGluY2x1ZGUgaXQgd2hlbiB0aGUgaXQgaXNcbiAgICogYW4gaW50ZXJuYWwgcmV3cml0ZS4gQWxzbyB3ZSBtYWtlIHN1cmUgdGhlIG91dGdvaW5nIHJld3JpdGUgVVJMIGlzXG4gICAqIGEgZGF0YSBVUkwgaWYgdGhlIHJlcXVlc3Qgd2FzIGEgZGF0YSByZXF1ZXN0LlxuICAgKi8gY29uc3QgcmV3cml0ZSA9IHJlc3BvbnNlID09IG51bGwgPyB2b2lkIDAgOiByZXNwb25zZS5oZWFkZXJzLmdldChcIngtbWlkZGxld2FyZS1yZXdyaXRlXCIpO1xuICAgIGlmIChyZXNwb25zZSAmJiByZXdyaXRlKSB7XG4gICAgICAgIGNvbnN0IHJld3JpdGVVcmwgPSBuZXcgTmV4dFVSTChyZXdyaXRlLCB7XG4gICAgICAgICAgICBmb3JjZUxvY2FsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHBhcmFtcy5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICBuZXh0Q29uZmlnOiBwYXJhbXMucmVxdWVzdC5uZXh0Q29uZmlnXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9OT19NSURETEVXQVJFX1VSTF9OT1JNQUxJWkUpIHtcbiAgICAgICAgICAgIGlmIChyZXdyaXRlVXJsLmhvc3QgPT09IHJlcXVlc3QubmV4dFVybC5ob3N0KSB7XG4gICAgICAgICAgICAgICAgcmV3cml0ZVVybC5idWlsZElkID0gYnVpbGRJZCB8fCByZXdyaXRlVXJsLmJ1aWxkSWQ7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoXCJ4LW1pZGRsZXdhcmUtcmV3cml0ZVwiLCBTdHJpbmcocmV3cml0ZVVybCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIHJlcXVlc3QgaXMgYSBkYXRhIHJlcXVlc3Qgd2UgbXVzdCBzaG93IGlmIHRoZXJlIHdhcyBhIHJld3JpdGVcbiAgICAgKiB3aXRoIGFuIGludGVybmFsIGhlYWRlciBzbyB0aGUgY2xpZW50IGtub3dzIHdoaWNoIGNvbXBvbmVudCB0byBsb2FkXG4gICAgICogZnJvbSB0aGUgZGF0YSByZXF1ZXN0LlxuICAgICAqLyBjb25zdCByZWxhdGl2aXplZFJld3JpdGUgPSByZWxhdGl2aXplVVJMKFN0cmluZyhyZXdyaXRlVXJsKSwgU3RyaW5nKHJlcXVlc3RVcmwpKTtcbiAgICAgICAgaWYgKGlzRGF0YVJlcSAmJiAvLyBpZiB0aGUgcmV3cml0ZSBpcyBleHRlcm5hbCBhbmQgZXh0ZXJuYWwgcmV3cml0ZVxuICAgICAgICAvLyByZXNvbHZpbmcgY29uZmlnIGlzIGVuYWJsZWQgZG9uJ3QgYWRkIHRoaXMgaGVhZGVyXG4gICAgICAgIC8vIHNvIHRoZSB1cHN0cmVhbSBhcHAgY2FuIHNldCBpdCBpbnN0ZWFkXG4gICAgICAgICEocHJvY2Vzcy5lbnYuX19ORVhUX0VYVEVSTkFMX01JRERMRVdBUkVfUkVXUklURV9SRVNPTFZFICYmIHJlbGF0aXZpemVkUmV3cml0ZS5tYXRjaCgvaHR0cChzKT86XFwvXFwvLykpKSB7XG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChcIngtbmV4dGpzLXJld3JpdGVcIiwgcmVsYXRpdml6ZWRSZXdyaXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogRm9yIHJlZGlyZWN0cyB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZSBsb2NhbGUgaW4gY2FzZSB3aGVuIGl0IGlzIHRoZVxuICAgKiBkZWZhdWx0IGFuZCB3ZSBtdXN0IGFsc28gbWFrZSBzdXJlIHRoZSBvdXRnb2luZyBVUkwgaXMgYSBkYXRhIG9uZSBpZlxuICAgKiB0aGUgaW5jb21pbmcgcmVxdWVzdCB3YXMgYSBkYXRhIHJlcXVlc3QuXG4gICAqLyBjb25zdCByZWRpcmVjdCA9IHJlc3BvbnNlID09IG51bGwgPyB2b2lkIDAgOiByZXNwb25zZS5oZWFkZXJzLmdldChcIkxvY2F0aW9uXCIpO1xuICAgIGlmIChyZXNwb25zZSAmJiByZWRpcmVjdCAmJiAhaXNFZGdlUmVuZGVyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJlZGlyZWN0VVJMID0gbmV3IE5leHRVUkwocmVkaXJlY3QsIHtcbiAgICAgICAgICAgIGZvcmNlTG9jYWxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHBhcmFtcy5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICBuZXh0Q29uZmlnOiBwYXJhbXMucmVxdWVzdC5uZXh0Q29uZmlnXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgKiBSZXNwb25zZXMgY3JlYXRlZCBmcm9tIHJlZGlyZWN0cyBoYXZlIGltbXV0YWJsZSBoZWFkZXJzIHNvIHdlIGhhdmVcbiAgICAgKiB0byBjbG9uZSB0aGUgcmVzcG9uc2UgdG8gYmUgYWJsZSB0byBtb2RpZnkgaXQuXG4gICAgICovIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKHJlc3BvbnNlLmJvZHksIHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFKSB7XG4gICAgICAgICAgICBpZiAocmVkaXJlY3RVUkwuaG9zdCA9PT0gcmVxdWVzdC5uZXh0VXJsLmhvc3QpIHtcbiAgICAgICAgICAgICAgICByZWRpcmVjdFVSTC5idWlsZElkID0gYnVpbGRJZCB8fCByZWRpcmVjdFVSTC5idWlsZElkO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiTG9jYXRpb25cIiwgU3RyaW5nKHJlZGlyZWN0VVJMKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICogV2hlbiB0aGUgcmVxdWVzdCBpcyBhIGRhdGEgcmVxdWVzdCB3ZSBjYW4ndCB1c2UgdGhlIGxvY2F0aW9uIGhlYWRlciBhc1xuICAgICAqIGl0IG1heSBlbmQgdXAgd2l0aCBDT1JTIGVycm9yLiBJbnN0ZWFkIHdlIG1hcCB0byBhbiBpbnRlcm5hbCBoZWFkZXIgc29cbiAgICAgKiB0aGUgY2xpZW50IGtub3dzIHRoZSBkZXN0aW5hdGlvbi5cbiAgICAgKi8gaWYgKGlzRGF0YVJlcSkge1xuICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5kZWxldGUoXCJMb2NhdGlvblwiKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwieC1uZXh0anMtcmVkaXJlY3RcIiwgcmVsYXRpdml6ZVVSTChTdHJpbmcocmVkaXJlY3RVUkwpLCBTdHJpbmcocmVxdWVzdFVybCkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmaW5hbFJlc3BvbnNlID0gcmVzcG9uc2UgPyByZXNwb25zZSA6IE5leHRSZXNwb25zZS5uZXh0KCk7XG4gICAgLy8gRmxpZ2h0IGhlYWRlcnMgYXJlIG5vdCBvdmVycmlkYWJsZSAvIHJlbW92YWJsZSBzbyB0aGV5IGFyZSBhcHBsaWVkIGF0IHRoZSBlbmQuXG4gICAgY29uc3QgbWlkZGxld2FyZU92ZXJyaWRlSGVhZGVycyA9IGZpbmFsUmVzcG9uc2UuaGVhZGVycy5nZXQoXCJ4LW1pZGRsZXdhcmUtb3ZlcnJpZGUtaGVhZGVyc1wiKTtcbiAgICBjb25zdCBvdmVyd3JpdHRlbkhlYWRlcnMgPSBbXTtcbiAgICBpZiAobWlkZGxld2FyZU92ZXJyaWRlSGVhZGVycykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBmbGlnaHRIZWFkZXJzKXtcbiAgICAgICAgICAgIGZpbmFsUmVzcG9uc2UuaGVhZGVycy5zZXQoYHgtbWlkZGxld2FyZS1yZXF1ZXN0LSR7a2V5fWAsIHZhbHVlKTtcbiAgICAgICAgICAgIG92ZXJ3cml0dGVuSGVhZGVycy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG92ZXJ3cml0dGVuSGVhZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaW5hbFJlc3BvbnNlLmhlYWRlcnMuc2V0KFwieC1taWRkbGV3YXJlLW92ZXJyaWRlLWhlYWRlcnNcIiwgbWlkZGxld2FyZU92ZXJyaWRlSGVhZGVycyArIFwiLFwiICsgb3ZlcndyaXR0ZW5IZWFkZXJzLmpvaW4oXCIsXCIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByZXNwb25zZTogZmluYWxSZXNwb25zZSxcbiAgICAgICAgd2FpdFVudGlsOiBQcm9taXNlLmFsbChldmVudFt3YWl0VW50aWxTeW1ib2xdKSxcbiAgICAgICAgZmV0Y2hNZXRyaWNzOiByZXF1ZXN0LmZldGNoTWV0cmljc1xuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkYXB0ZXIuanMubWFwIl0sIm5hbWVzIjpbIlBhZ2VTaWduYXR1cmVFcnJvciIsImZyb21Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycyIsIk5leHRGZXRjaEV2ZW50IiwiTmV4dFJlcXVlc3QiLCJOZXh0UmVzcG9uc2UiLCJyZWxhdGl2aXplVVJMIiwid2FpdFVudGlsU3ltYm9sIiwiTmV4dFVSTCIsInN0cmlwSW50ZXJuYWxTZWFyY2hQYXJhbXMiLCJub3JtYWxpemVSc2NVUkwiLCJGTElHSFRfUEFSQU1FVEVSUyIsIk5FWFRfUVVFUllfUEFSQU1fUFJFRklYIiwiZW5zdXJlSW5zdHJ1bWVudGF0aW9uUmVnaXN0ZXJlZCIsIlJlcXVlc3RBc3luY1N0b3JhZ2VXcmFwcGVyIiwicmVxdWVzdEFzeW5jU3RvcmFnZSIsImdldFRyYWNlciIsIk5leHRSZXF1ZXN0SGludCIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiaW5wdXQiLCJpbml0Iiwic291cmNlUGFnZSIsInBhZ2UiLCJyZXF1ZXN0IiwicmVzcG9uZFdpdGgiLCJ3YWl0VW50aWwiLCJoZWFkZXJzR2V0dGVyIiwia2V5cyIsImhlYWRlcnMiLCJBcnJheSIsImZyb20iLCJnZXQiLCJrZXkiLCJ1bmRlZmluZWQiLCJwcm9wYWdhdG9yIiwiZm4iLCJ0cmFjZXIiLCJ3aXRoUHJvcGFnYXRlZENvbnRleHQiLCJ0ZXN0QXBpc0ludGVyY2VwdGVkIiwiZW5zdXJlVGVzdEFwaXNJbnRlcmNlcHRlZCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BSSVZBVEVfVEVTVF9QUk9YWSIsImludGVyY2VwdFRlc3RBcGlzIiwid3JhcFJlcXVlc3RIYW5kbGVyIiwicmVxdWlyZSIsImFkYXB0ZXIiLCJpc0VkZ2VSZW5kZXJpbmciLCJzZWxmIiwiX19CVUlMRF9NQU5JRkVTVCIsInByZXJlbmRlck1hbmlmZXN0IiwiX19QUkVSRU5ERVJfTUFOSUZFU1QiLCJKU09OIiwicGFyc2UiLCJ1cmwiLCJyZXF1ZXN0VXJsIiwibmV4dENvbmZpZyIsInNlYXJjaFBhcmFtcyIsInZhbHVlIiwiZ2V0QWxsIiwic3RhcnRzV2l0aCIsIm5vcm1hbGl6ZWRLZXkiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJkZWxldGUiLCJ2YWwiLCJhcHBlbmQiLCJidWlsZElkIiwiaXNEYXRhUmVxIiwicGF0aG5hbWUiLCJyZXF1ZXN0SGVhZGVycyIsImZsaWdodEhlYWRlcnMiLCJNYXAiLCJwYXJhbSIsInRvU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJzZXQiLCJub3JtYWxpemVVcmwiLCJfX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFIiwiVVJMIiwiYm9keSIsImdlbyIsImlwIiwibWV0aG9kIiwic2lnbmFsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2xvYmFsVGhpcyIsIl9faW5jcmVtZW50YWxDYWNoZSIsIkluY3JlbWVudGFsQ2FjaGUiLCJhcHBEaXIiLCJmZXRjaENhY2hlIiwibWluaW1hbE1vZGUiLCJmZXRjaENhY2hlS2V5UHJlZml4IiwiX19ORVhUX0ZFVENIX0NBQ0hFX0tFWV9QUkVGSVgiLCJkZXYiLCJyZXF1ZXN0UHJvdG9jb2wiLCJnZXRQcmVyZW5kZXJNYW5pZmVzdCIsInZlcnNpb24iLCJyb3V0ZXMiLCJkeW5hbWljUm91dGVzIiwibm90Rm91bmRSb3V0ZXMiLCJwcmV2aWV3IiwicHJldmlld01vZGVJZCIsImV2ZW50IiwicmVzcG9uc2UiLCJjb29raWVzRnJvbVJlc3BvbnNlIiwiaXNNaWRkbGV3YXJlIiwid3JhcCIsInJlcSIsInJlbmRlck9wdHMiLCJvblVwZGF0ZUNvb2tpZXMiLCJjb29raWVzIiwicHJldmlld1Byb3BzIiwicHJldmlld01vZGVFbmNyeXB0aW9uS2V5IiwicHJldmlld01vZGVTaWduaW5nS2V5IiwiaGFuZGxlciIsIlJlc3BvbnNlIiwiVHlwZUVycm9yIiwicmV3cml0ZSIsInJld3JpdGVVcmwiLCJmb3JjZUxvY2FsZSIsImhvc3QiLCJuZXh0VXJsIiwiU3RyaW5nIiwicmVsYXRpdml6ZWRSZXdyaXRlIiwiX19ORVhUX0VYVEVSTkFMX01JRERMRVdBUkVfUkVXUklURV9SRVNPTFZFIiwibWF0Y2giLCJyZWRpcmVjdCIsInJlZGlyZWN0VVJMIiwiZmluYWxSZXNwb25zZSIsIm5leHQiLCJtaWRkbGV3YXJlT3ZlcnJpZGVIZWFkZXJzIiwib3ZlcndyaXR0ZW5IZWFkZXJzIiwicHVzaCIsImpvaW4iLCJQcm9taXNlIiwiYWxsIiwiZmV0Y2hNZXRyaWNzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/adapter.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/edge-route-module-wrapper.js":
/*!****************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/edge-route-module-wrapper.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EdgeRouteModuleWrapper: () => (/* binding */ EdgeRouteModuleWrapper)\n/* harmony export */ });\n/* harmony import */ var _globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./globals */ \"(rsc)/./node_modules/next/dist/esm/server/web/globals.js\");\n/* harmony import */ var _adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adapter */ \"(rsc)/./node_modules/next/dist/esm/server/web/adapter.js\");\n/* harmony import */ var _lib_incremental_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/incremental-cache */ \"(rsc)/./node_modules/next/dist/esm/server/lib/incremental-cache/index.js\");\n/* harmony import */ var _future_route_matchers_route_matcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../future/route-matchers/route-matcher */ \"(rsc)/./node_modules/next/dist/esm/server/future/route-matchers/route-matcher.js\");\n/* harmony import */ var _internal_edge_wait_until__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal-edge-wait-until */ \"(rsc)/./node_modules/next/dist/esm/server/web/internal-edge-wait-until.js\");\n/* harmony import */ var _server_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../server-utils */ \"(rsc)/./node_modules/next/dist/esm/server/server-utils.js\");\n/* harmony import */ var _shared_lib_router_utils_querystring__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shared/lib/router/utils/querystring */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js\");\n\n\n\n\n\n\n\n/**\n * EdgeRouteModuleWrapper is a wrapper around a route module.\n *\n * Note that this class should only be used in the edge runtime.\n */ class EdgeRouteModuleWrapper {\n /**\n * The constructor is wrapped with private to ensure that it can only be\n * constructed by the static wrap method.\n *\n * @param routeModule the route module to wrap\n */ constructor(routeModule){\n this.routeModule = routeModule;\n // TODO: (wyattjoh) possibly allow the module to define it's own matcher\n this.matcher = new _future_route_matchers_route_matcher__WEBPACK_IMPORTED_MODULE_3__.RouteMatcher(routeModule.definition);\n }\n /**\n * This will wrap a module with the EdgeModuleWrapper and return a function\n * that can be used as a handler for the edge runtime.\n *\n * @param module the module to wrap\n * @param options any options that should be passed to the adapter and\n * override the ones passed from the runtime\n * @returns a function that can be used as a handler for the edge runtime\n */ static wrap(routeModule, options = {}) {\n // Create the module wrapper.\n const wrapper = new EdgeRouteModuleWrapper(routeModule);\n // Return the wrapping function.\n return (opts)=>{\n return (0,_adapter__WEBPACK_IMPORTED_MODULE_1__.adapter)({\n ...opts,\n ...options,\n IncrementalCache: _lib_incremental_cache__WEBPACK_IMPORTED_MODULE_2__.IncrementalCache,\n // Bind the handler method to the wrapper so it still has context.\n handler: wrapper.handler.bind(wrapper)\n });\n };\n }\n async handler(request, evt) {\n const utils = (0,_server_utils__WEBPACK_IMPORTED_MODULE_5__.getUtils)({\n pageIsDynamic: this.matcher.isDynamic,\n page: this.matcher.definition.pathname,\n basePath: request.nextUrl.basePath,\n // We don't need the `handleRewrite` util, so can just pass an empty object\n rewrites: {},\n // only used for rewrites, so setting an arbitrary default value here\n caseSensitive: false\n });\n const { params } = utils.normalizeDynamicRouteParams((0,_shared_lib_router_utils_querystring__WEBPACK_IMPORTED_MODULE_6__.searchParamsToUrlQuery)(request.nextUrl.searchParams));\n const prerenderManifest = typeof self.__PRERENDER_MANIFEST === \"string\" ? JSON.parse(self.__PRERENDER_MANIFEST) : undefined;\n // Create the context for the handler. This contains the params from the\n // match (if any).\n const context = {\n params,\n prerenderManifest: {\n version: 4,\n routes: {},\n dynamicRoutes: {},\n preview: (prerenderManifest == null ? void 0 : prerenderManifest.preview) || {\n previewModeEncryptionKey: \"\",\n previewModeId: \"development-id\",\n previewModeSigningKey: \"\"\n },\n notFoundRoutes: []\n },\n renderOpts: {\n supportsDynamicHTML: true,\n // App Route's cannot be postponed.\n experimental: {\n ppr: false\n }\n }\n };\n // Get the response from the handler.\n const res = await this.routeModule.handle(request, context);\n const waitUntilPromises = [\n (0,_internal_edge_wait_until__WEBPACK_IMPORTED_MODULE_4__.internal_getCurrentFunctionWaitUntil)()\n ];\n if (context.renderOpts.waitUntil) {\n waitUntilPromises.push(context.renderOpts.waitUntil);\n }\n evt.waitUntil(Promise.all(waitUntilPromises));\n return res;\n }\n} //# sourceMappingURL=edge-route-module-wrapper.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2VkZ2Utcm91dGUtbW9kdWxlLXdyYXBwZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBbUI7QUFDaUI7QUFDd0I7QUFDVTtBQUNZO0FBQ3ZDO0FBQ3dDO0FBQ25GOzs7O0NBSUMsR0FBVSxNQUFNTTtJQUNiOzs7OztHQUtELEdBQUdDLFlBQVlDLFdBQVcsQ0FBQztRQUN0QixJQUFJLENBQUNBLFdBQVcsR0FBR0E7UUFDbkIsd0VBQXdFO1FBQ3hFLElBQUksQ0FBQ0MsT0FBTyxHQUFHLElBQUlQLDhFQUFZQSxDQUFDTSxZQUFZRSxVQUFVO0lBQzFEO0lBQ0E7Ozs7Ozs7O0dBUUQsR0FBRyxPQUFPQyxLQUFLSCxXQUFXLEVBQUVJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7UUFDckMsNkJBQTZCO1FBQzdCLE1BQU1DLFVBQVUsSUFBSVAsdUJBQXVCRTtRQUMzQyxnQ0FBZ0M7UUFDaEMsT0FBTyxDQUFDTTtZQUNKLE9BQU9kLGlEQUFPQSxDQUFDO2dCQUNYLEdBQUdjLElBQUk7Z0JBQ1AsR0FBR0YsT0FBTztnQkFDVlgsZ0JBQWdCQSxzRUFBQUE7Z0JBQ2hCLGtFQUFrRTtnQkFDbEVjLFNBQVNGLFFBQVFFLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDSDtZQUNsQztRQUNKO0lBQ0o7SUFDQSxNQUFNRSxRQUFRRSxPQUFPLEVBQUVDLEdBQUcsRUFBRTtRQUN4QixNQUFNQyxRQUFRZix1REFBUUEsQ0FBQztZQUNuQmdCLGVBQWUsSUFBSSxDQUFDWCxPQUFPLENBQUNZLFNBQVM7WUFDckNDLE1BQU0sSUFBSSxDQUFDYixPQUFPLENBQUNDLFVBQVUsQ0FBQ2EsUUFBUTtZQUN0Q0MsVUFBVVAsUUFBUVEsT0FBTyxDQUFDRCxRQUFRO1lBQ2xDLDJFQUEyRTtZQUMzRUUsVUFBVSxDQUFDO1lBQ1gscUVBQXFFO1lBQ3JFQyxlQUFlO1FBQ25CO1FBQ0EsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR1QsTUFBTVUsMkJBQTJCLENBQUN4Qiw0RkFBc0JBLENBQUNZLFFBQVFRLE9BQU8sQ0FBQ0ssWUFBWTtRQUN4RyxNQUFNQyxvQkFBb0IsT0FBT0MsS0FBS0Msb0JBQW9CLEtBQUssV0FBV0MsS0FBS0MsS0FBSyxDQUFDSCxLQUFLQyxvQkFBb0IsSUFBSUc7UUFDbEgsd0VBQXdFO1FBQ3hFLGtCQUFrQjtRQUNsQixNQUFNQyxVQUFVO1lBQ1pUO1lBQ0FHLG1CQUFtQjtnQkFDZk8sU0FBUztnQkFDVEMsUUFBUSxDQUFDO2dCQUNUQyxlQUFlLENBQUM7Z0JBQ2hCQyxTQUFTLENBQUNWLHFCQUFxQixPQUFPLEtBQUssSUFBSUEsa0JBQWtCVSxPQUFPLEtBQUs7b0JBQ3pFQywwQkFBMEI7b0JBQzFCQyxlQUFlO29CQUNmQyx1QkFBdUI7Z0JBQzNCO2dCQUNBQyxnQkFBZ0IsRUFBRTtZQUN0QjtZQUNBQyxZQUFZO2dCQUNSQyxxQkFBcUI7Z0JBQ3JCLG1DQUFtQztnQkFDbkNDLGNBQWM7b0JBQ1ZDLEtBQUs7Z0JBQ1Q7WUFDSjtRQUNKO1FBQ0EscUNBQXFDO1FBQ3JDLE1BQU1DLE1BQU0sTUFBTSxJQUFJLENBQUMxQyxXQUFXLENBQUMyQyxNQUFNLENBQUNsQyxTQUFTb0I7UUFDbkQsTUFBTWUsb0JBQW9CO1lBQ3RCakQsK0ZBQW9DQTtTQUN2QztRQUNELElBQUlrQyxRQUFRUyxVQUFVLENBQUNPLFNBQVMsRUFBRTtZQUM5QkQsa0JBQWtCRSxJQUFJLENBQUNqQixRQUFRUyxVQUFVLENBQUNPLFNBQVM7UUFDdkQ7UUFDQW5DLElBQUltQyxTQUFTLENBQUNFLFFBQVFDLEdBQUcsQ0FBQ0o7UUFDMUIsT0FBT0Y7SUFDWDtBQUNKLEVBRUEscURBQXFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvZWRnZS1yb3V0ZS1tb2R1bGUtd3JhcHBlci5qcz83ZGJjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vZ2xvYmFsc1wiO1xuaW1wb3J0IHsgYWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEluY3JlbWVudGFsQ2FjaGUgfSBmcm9tIFwiLi4vbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG5pbXBvcnQgeyBSb3V0ZU1hdGNoZXIgfSBmcm9tIFwiLi4vZnV0dXJlL3JvdXRlLW1hdGNoZXJzL3JvdXRlLW1hdGNoZXJcIjtcbmltcG9ydCB7IGludGVybmFsX2dldEN1cnJlbnRGdW5jdGlvbldhaXRVbnRpbCB9IGZyb20gXCIuL2ludGVybmFsLWVkZ2Utd2FpdC11bnRpbFwiO1xuaW1wb3J0IHsgZ2V0VXRpbHMgfSBmcm9tIFwiLi4vc2VydmVyLXV0aWxzXCI7XG5pbXBvcnQgeyBzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nXCI7XG4vKipcbiAqIEVkZ2VSb3V0ZU1vZHVsZVdyYXBwZXIgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIHJvdXRlIG1vZHVsZS5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBjbGFzcyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSBlZGdlIHJ1bnRpbWUuXG4gKi8gZXhwb3J0IGNsYXNzIEVkZ2VSb3V0ZU1vZHVsZVdyYXBwZXIge1xuICAgIC8qKlxuICAgKiBUaGUgY29uc3RydWN0b3IgaXMgd3JhcHBlZCB3aXRoIHByaXZhdGUgdG8gZW5zdXJlIHRoYXQgaXQgY2FuIG9ubHkgYmVcbiAgICogY29uc3RydWN0ZWQgYnkgdGhlIHN0YXRpYyB3cmFwIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHJvdXRlTW9kdWxlIHRoZSByb3V0ZSBtb2R1bGUgdG8gd3JhcFxuICAgKi8gY29uc3RydWN0b3Iocm91dGVNb2R1bGUpe1xuICAgICAgICB0aGlzLnJvdXRlTW9kdWxlID0gcm91dGVNb2R1bGU7XG4gICAgICAgIC8vIFRPRE86ICh3eWF0dGpvaCkgcG9zc2libHkgYWxsb3cgdGhlIG1vZHVsZSB0byBkZWZpbmUgaXQncyBvd24gbWF0Y2hlclxuICAgICAgICB0aGlzLm1hdGNoZXIgPSBuZXcgUm91dGVNYXRjaGVyKHJvdXRlTW9kdWxlLmRlZmluaXRpb24pO1xuICAgIH1cbiAgICAvKipcbiAgICogVGhpcyB3aWxsIHdyYXAgYSBtb2R1bGUgd2l0aCB0aGUgRWRnZU1vZHVsZVdyYXBwZXIgYW5kIHJldHVybiBhIGZ1bmN0aW9uXG4gICAqIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBoYW5kbGVyIGZvciB0aGUgZWRnZSBydW50aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gbW9kdWxlIHRoZSBtb2R1bGUgdG8gd3JhcFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhbnkgb3B0aW9ucyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGFkYXB0ZXIgYW5kXG4gICAqICAgICAgICAgICAgICAgIG92ZXJyaWRlIHRoZSBvbmVzIHBhc3NlZCBmcm9tIHRoZSBydW50aW1lXG4gICAqIEByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGhhbmRsZXIgZm9yIHRoZSBlZGdlIHJ1bnRpbWVcbiAgICovIHN0YXRpYyB3cmFwKHJvdXRlTW9kdWxlLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBtb2R1bGUgd3JhcHBlci5cbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IG5ldyBFZGdlUm91dGVNb2R1bGVXcmFwcGVyKHJvdXRlTW9kdWxlKTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSB3cmFwcGluZyBmdW5jdGlvbi5cbiAgICAgICAgcmV0dXJuIChvcHRzKT0+e1xuICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZXIoe1xuICAgICAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbENhY2hlLFxuICAgICAgICAgICAgICAgIC8vIEJpbmQgdGhlIGhhbmRsZXIgbWV0aG9kIHRvIHRoZSB3cmFwcGVyIHNvIGl0IHN0aWxsIGhhcyBjb250ZXh0LlxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IHdyYXBwZXIuaGFuZGxlci5iaW5kKHdyYXBwZXIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlcihyZXF1ZXN0LCBldnQpIHtcbiAgICAgICAgY29uc3QgdXRpbHMgPSBnZXRVdGlscyh7XG4gICAgICAgICAgICBwYWdlSXNEeW5hbWljOiB0aGlzLm1hdGNoZXIuaXNEeW5hbWljLFxuICAgICAgICAgICAgcGFnZTogdGhpcy5tYXRjaGVyLmRlZmluaXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgICBiYXNlUGF0aDogcmVxdWVzdC5uZXh0VXJsLmJhc2VQYXRoLFxuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgYGhhbmRsZVJld3JpdGVgIHV0aWwsIHNvIGNhbiBqdXN0IHBhc3MgYW4gZW1wdHkgb2JqZWN0XG4gICAgICAgICAgICByZXdyaXRlczoge30sXG4gICAgICAgICAgICAvLyBvbmx5IHVzZWQgZm9yIHJld3JpdGVzLCBzbyBzZXR0aW5nIGFuIGFyYml0cmFyeSBkZWZhdWx0IHZhbHVlIGhlcmVcbiAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB7IHBhcmFtcyB9ID0gdXRpbHMubm9ybWFsaXplRHluYW1pY1JvdXRlUGFyYW1zKHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkocmVxdWVzdC5uZXh0VXJsLnNlYXJjaFBhcmFtcykpO1xuICAgICAgICBjb25zdCBwcmVyZW5kZXJNYW5pZmVzdCA9IHR5cGVvZiBzZWxmLl9fUFJFUkVOREVSX01BTklGRVNUID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShzZWxmLl9fUFJFUkVOREVSX01BTklGRVNUKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBjb250ZXh0IGZvciB0aGUgaGFuZGxlci4gVGhpcyBjb250YWlucyB0aGUgcGFyYW1zIGZyb20gdGhlXG4gICAgICAgIC8vIG1hdGNoIChpZiBhbnkpLlxuICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgcHJlcmVuZGVyTWFuaWZlc3Q6IHtcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiA0LFxuICAgICAgICAgICAgICAgIHJvdXRlczoge30sXG4gICAgICAgICAgICAgICAgZHluYW1pY1JvdXRlczoge30sXG4gICAgICAgICAgICAgICAgcHJldmlldzogKHByZXJlbmRlck1hbmlmZXN0ID09IG51bGwgPyB2b2lkIDAgOiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3KSB8fCB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdNb2RlRW5jcnlwdGlvbktleTogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld01vZGVJZDogXCJkZXZlbG9wbWVudC1pZFwiLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3TW9kZVNpZ25pbmdLZXk6IFwiXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vdEZvdW5kUm91dGVzOiBbXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbmRlck9wdHM6IHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNIVE1MOiB0cnVlLFxuICAgICAgICAgICAgICAgIC8vIEFwcCBSb3V0ZSdzIGNhbm5vdCBiZSBwb3N0cG9uZWQuXG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsOiB7XG4gICAgICAgICAgICAgICAgICAgIHBwcjogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIEdldCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaGFuZGxlci5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yb3V0ZU1vZHVsZS5oYW5kbGUocmVxdWVzdCwgY29udGV4dCk7XG4gICAgICAgIGNvbnN0IHdhaXRVbnRpbFByb21pc2VzID0gW1xuICAgICAgICAgICAgaW50ZXJuYWxfZ2V0Q3VycmVudEZ1bmN0aW9uV2FpdFVudGlsKClcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKGNvbnRleHQucmVuZGVyT3B0cy53YWl0VW50aWwpIHtcbiAgICAgICAgICAgIHdhaXRVbnRpbFByb21pc2VzLnB1c2goY29udGV4dC5yZW5kZXJPcHRzLndhaXRVbnRpbCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZ0LndhaXRVbnRpbChQcm9taXNlLmFsbCh3YWl0VW50aWxQcm9taXNlcykpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWRnZS1yb3V0ZS1tb2R1bGUtd3JhcHBlci5qcy5tYXAiXSwibmFtZXMiOlsiYWRhcHRlciIsIkluY3JlbWVudGFsQ2FjaGUiLCJSb3V0ZU1hdGNoZXIiLCJpbnRlcm5hbF9nZXRDdXJyZW50RnVuY3Rpb25XYWl0VW50aWwiLCJnZXRVdGlscyIsInNlYXJjaFBhcmFtc1RvVXJsUXVlcnkiLCJFZGdlUm91dGVNb2R1bGVXcmFwcGVyIiwiY29uc3RydWN0b3IiLCJyb3V0ZU1vZHVsZSIsIm1hdGNoZXIiLCJkZWZpbml0aW9uIiwid3JhcCIsIm9wdGlvbnMiLCJ3cmFwcGVyIiwib3B0cyIsImhhbmRsZXIiLCJiaW5kIiwicmVxdWVzdCIsImV2dCIsInV0aWxzIiwicGFnZUlzRHluYW1pYyIsImlzRHluYW1pYyIsInBhZ2UiLCJwYXRobmFtZSIsImJhc2VQYXRoIiwibmV4dFVybCIsInJld3JpdGVzIiwiY2FzZVNlbnNpdGl2ZSIsInBhcmFtcyIsIm5vcm1hbGl6ZUR5bmFtaWNSb3V0ZVBhcmFtcyIsInNlYXJjaFBhcmFtcyIsInByZXJlbmRlck1hbmlmZXN0Iiwic2VsZiIsIl9fUFJFUkVOREVSX01BTklGRVNUIiwiSlNPTiIsInBhcnNlIiwidW5kZWZpbmVkIiwiY29udGV4dCIsInZlcnNpb24iLCJyb3V0ZXMiLCJkeW5hbWljUm91dGVzIiwicHJldmlldyIsInByZXZpZXdNb2RlRW5jcnlwdGlvbktleSIsInByZXZpZXdNb2RlSWQiLCJwcmV2aWV3TW9kZVNpZ25pbmdLZXkiLCJub3RGb3VuZFJvdXRlcyIsInJlbmRlck9wdHMiLCJzdXBwb3J0c0R5bmFtaWNIVE1MIiwiZXhwZXJpbWVudGFsIiwicHByIiwicmVzIiwiaGFuZGxlIiwid2FpdFVudGlsUHJvbWlzZXMiLCJ3YWl0VW50aWwiLCJwdXNoIiwiUHJvbWlzZSIsImFsbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/edge-route-module-wrapper.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/error.js":
/*!********************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/error.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PageSignatureError: () => (/* binding */ PageSignatureError),\n/* harmony export */ RemovedPageError: () => (/* binding */ RemovedPageError),\n/* harmony export */ RemovedUAError: () => (/* binding */ RemovedUAError)\n/* harmony export */ });\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} //# sourceMappingURL=error.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2Vycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLE1BQU1BLDJCQUEyQkM7SUFDcENDLFlBQVksRUFBRUMsSUFBSSxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVBLEtBQUs7Ozs7Ozs7RUFPcEMsQ0FBQztJQUNDO0FBQ0o7QUFDTyxNQUFNQyx5QkFBeUJIO0lBQ2xDQyxhQUFhO1FBQ1QsS0FBSyxDQUFDLENBQUM7O0VBRWIsQ0FBQztJQUNDO0FBQ0o7QUFDTyxNQUFNRyx1QkFBdUJKO0lBQ2hDQyxhQUFhO1FBQ1QsS0FBSyxDQUFDLENBQUM7O0VBRWIsQ0FBQztJQUNDO0FBQ0osRUFFQSxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9lcnJvci5qcz9lYWQzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBQYWdlU2lnbmF0dXJlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoeyBwYWdlIH0pe1xuICAgICAgICBzdXBlcihgVGhlIG1pZGRsZXdhcmUgXCIke3BhZ2V9XCIgYWNjZXB0cyBhbiBhc3luYyBBUEkgZGlyZWN0bHkgd2l0aCB0aGUgZm9ybTpcbiAgXG4gIGV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlKHJlcXVlc3QsIGV2ZW50KSB7XG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5yZWRpcmVjdCgnL25ldy1sb2NhdGlvbicpXG4gIH1cbiAgXG4gIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1uZXctc2lnbmF0dXJlXG4gIGApO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBSZW1vdmVkUGFnZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKGBUaGUgcmVxdWVzdC5wYWdlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIFxcYFVSTFBhdHRlcm5cXGAuXG4gIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1yZXF1ZXN0LXBhZ2VcbiAgYCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFJlbW92ZWRVQUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKGBUaGUgcmVxdWVzdC51YSBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBcXGB1c2VyQWdlbnRcXGAgZnVuY3Rpb24uXG4gIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbWlkZGxld2FyZS1wYXJzZS11c2VyLWFnZW50XG4gIGApO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3IuanMubWFwIl0sIm5hbWVzIjpbIlBhZ2VTaWduYXR1cmVFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiUmVtb3ZlZFBhZ2VFcnJvciIsIlJlbW92ZWRVQUVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/error.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/exports/index.js":
/*!****************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/exports/index.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageResponse: () => (/* reexport safe */ _spec_extension_image_response__WEBPACK_IMPORTED_MODULE_0__.ImageResponse),\n/* harmony export */ NextRequest: () => (/* reexport safe */ _spec_extension_request__WEBPACK_IMPORTED_MODULE_1__.NextRequest),\n/* harmony export */ NextResponse: () => (/* reexport safe */ _spec_extension_response__WEBPACK_IMPORTED_MODULE_2__.NextResponse),\n/* harmony export */ URLPattern: () => (/* reexport safe */ _spec_extension_url_pattern__WEBPACK_IMPORTED_MODULE_4__.URLPattern),\n/* harmony export */ userAgent: () => (/* reexport safe */ _spec_extension_user_agent__WEBPACK_IMPORTED_MODULE_3__.userAgent),\n/* harmony export */ userAgentFromString: () => (/* reexport safe */ _spec_extension_user_agent__WEBPACK_IMPORTED_MODULE_3__.userAgentFromString)\n/* harmony export */ });\n/* harmony import */ var _spec_extension_image_response__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../spec-extension/image-response */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/image-response.js\");\n/* harmony import */ var _spec_extension_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../spec-extension/request */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/request.js\");\n/* harmony import */ var _spec_extension_response__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../spec-extension/response */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/response.js\");\n/* harmony import */ var _spec_extension_user_agent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../spec-extension/user-agent */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js\");\n/* harmony import */ var _spec_extension_url_pattern__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../spec-extension/url-pattern */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js\");\n// Alias index file of next/server for edge runtime for tree-shaking purpose\n\n\n\n\n //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2V4cG9ydHMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0RUFBNEU7QUFDWDtBQUNUO0FBQ0U7QUFDb0I7QUFDbkIsQ0FFM0QsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvZXhwb3J0cy9pbmRleC5qcz81NWZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEFsaWFzIGluZGV4IGZpbGUgb2YgbmV4dC9zZXJ2ZXIgZm9yIGVkZ2UgcnVudGltZSBmb3IgdHJlZS1zaGFraW5nIHB1cnBvc2VcbmV4cG9ydCB7IEltYWdlUmVzcG9uc2UgfSBmcm9tIFwiLi4vc3BlYy1leHRlbnNpb24vaW1hZ2UtcmVzcG9uc2VcIjtcbmV4cG9ydCB7IE5leHRSZXF1ZXN0IH0gZnJvbSBcIi4uL3NwZWMtZXh0ZW5zaW9uL3JlcXVlc3RcIjtcbmV4cG9ydCB7IE5leHRSZXNwb25zZSB9IGZyb20gXCIuLi9zcGVjLWV4dGVuc2lvbi9yZXNwb25zZVwiO1xuZXhwb3J0IHsgdXNlckFnZW50LCB1c2VyQWdlbnRGcm9tU3RyaW5nIH0gZnJvbSBcIi4uL3NwZWMtZXh0ZW5zaW9uL3VzZXItYWdlbnRcIjtcbmV4cG9ydCB7IFVSTFBhdHRlcm4gfSBmcm9tIFwiLi4vc3BlYy1leHRlbnNpb24vdXJsLXBhdHRlcm5cIjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIkltYWdlUmVzcG9uc2UiLCJOZXh0UmVxdWVzdCIsIk5leHRSZXNwb25zZSIsInVzZXJBZ2VudCIsInVzZXJBZ2VudEZyb21TdHJpbmciLCJVUkxQYXR0ZXJuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/exports/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/globals.js":
/*!**********************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/globals.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ensureInstrumentationRegistered: () => (/* binding */ ensureInstrumentationRegistered)\n/* harmony export */ });\nasync function registerInstrumentation() {\n if (\"_ENTRIES\" in globalThis && _ENTRIES.middleware_instrumentation && _ENTRIES.middleware_instrumentation.register) {\n try {\n await _ENTRIES.middleware_instrumentation.register();\n } catch (err) {\n err.message = `An error occurred while loading instrumentation hook: ${err.message}`;\n throw err;\n }\n }\n}\nlet registerInstrumentationPromise = null;\nfunction ensureInstrumentationRegistered() {\n if (!registerInstrumentationPromise) {\n registerInstrumentationPromise = registerInstrumentation();\n }\n return registerInstrumentationPromise;\n}\nfunction getUnsupportedModuleErrorMessage(module) {\n // warning: if you change these messages, you must adjust how react-dev-overlay's middleware detects modules not found\n return `The edge runtime does not support Node.js '${module}' module.\nLearn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`;\n}\nfunction __import_unsupported(moduleName) {\n const proxy = new Proxy(function() {}, {\n get (_obj, prop) {\n if (prop === \"then\") {\n return {};\n }\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n },\n construct () {\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n },\n apply (_target, _this, args) {\n if (typeof args[0] === \"function\") {\n return args[0](proxy);\n }\n throw new Error(getUnsupportedModuleErrorMessage(moduleName));\n }\n });\n return new Proxy({}, {\n get: ()=>proxy\n });\n}\nfunction enhanceGlobals() {\n // The condition is true when the \"process\" module is provided\n if (process !== __webpack_require__.g.process) {\n // prefer local process but global.process has correct \"env\"\n process.env = __webpack_require__.g.process.env;\n __webpack_require__.g.process = process;\n }\n // to allow building code that import but does not use node.js modules,\n // webpack will expect this function to exist in global scope\n Object.defineProperty(globalThis, \"__import_unsupported\", {\n value: __import_unsupported,\n enumerable: false,\n configurable: false\n });\n // Eagerly fire instrumentation hook to make the startup faster.\n void ensureInstrumentationRegistered();\n}\nenhanceGlobals(); //# sourceMappingURL=globals.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2dsb2JhbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWVBO0lBQ1gsSUFBSSxjQUFjQyxjQUFjQyxTQUFTQywwQkFBMEIsSUFBSUQsU0FBU0MsMEJBQTBCLENBQUNDLFFBQVEsRUFBRTtRQUNqSCxJQUFJO1lBQ0EsTUFBTUYsU0FBU0MsMEJBQTBCLENBQUNDLFFBQVE7UUFDdEQsRUFBRSxPQUFPQyxLQUFLO1lBQ1ZBLElBQUlDLE9BQU8sR0FBRyxDQUFDLHNEQUFzRCxFQUFFRCxJQUFJQyxPQUFPLENBQUMsQ0FBQztZQUNwRixNQUFNRDtRQUNWO0lBQ0o7QUFDSjtBQUNBLElBQUlFLGlDQUFpQztBQUM5QixTQUFTQztJQUNaLElBQUksQ0FBQ0QsZ0NBQWdDO1FBQ2pDQSxpQ0FBaUNQO0lBQ3JDO0lBQ0EsT0FBT087QUFDWDtBQUNBLFNBQVNFLGlDQUFpQ0MsTUFBTTtJQUM1QyxzSEFBc0g7SUFDdEgsT0FBTyxDQUFDLDJDQUEyQyxFQUFFQSxPQUFPO3dFQUNRLENBQUM7QUFDekU7QUFDQSxTQUFTQyxxQkFBcUJDLFVBQVU7SUFDcEMsTUFBTUMsUUFBUSxJQUFJQyxNQUFNLFlBQVksR0FBRztRQUNuQ0MsS0FBS0MsSUFBSSxFQUFFQyxJQUFJO1lBQ1gsSUFBSUEsU0FBUyxRQUFRO2dCQUNqQixPQUFPLENBQUM7WUFDWjtZQUNBLE1BQU0sSUFBSUMsTUFBTVQsaUNBQWlDRztRQUNyRDtRQUNBTztZQUNJLE1BQU0sSUFBSUQsTUFBTVQsaUNBQWlDRztRQUNyRDtRQUNBUSxPQUFPQyxPQUFPLEVBQUVDLEtBQUssRUFBRUMsSUFBSTtZQUN2QixJQUFJLE9BQU9BLElBQUksQ0FBQyxFQUFFLEtBQUssWUFBWTtnQkFDL0IsT0FBT0EsSUFBSSxDQUFDLEVBQUUsQ0FBQ1Y7WUFDbkI7WUFDQSxNQUFNLElBQUlLLE1BQU1ULGlDQUFpQ0c7UUFDckQ7SUFDSjtJQUNBLE9BQU8sSUFBSUUsTUFBTSxDQUFDLEdBQUc7UUFDakJDLEtBQUssSUFBSUY7SUFDYjtBQUNKO0FBQ0EsU0FBU1c7SUFDTCw4REFBOEQ7SUFDOUQsSUFBSUMsWUFBWUMscUJBQU1BLENBQUNELE9BQU8sRUFBRTtRQUM1Qiw0REFBNEQ7UUFDNURBLFFBQVFFLEdBQUcsR0FBR0QscUJBQU1BLENBQUNELE9BQU8sQ0FBQ0UsR0FBRztRQUNoQ0QscUJBQU1BLENBQUNELE9BQU8sR0FBR0E7SUFDckI7SUFDQSx1RUFBdUU7SUFDdkUsNkRBQTZEO0lBQzdERyxPQUFPQyxjQUFjLENBQUM1QixZQUFZLHdCQUF3QjtRQUN0RDZCLE9BQU9uQjtRQUNQb0IsWUFBWTtRQUNaQyxjQUFjO0lBQ2xCO0lBQ0EsZ0VBQWdFO0lBQ2hFLEtBQUt4QjtBQUNUO0FBQ0FnQixrQkFFQSxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9nbG9iYWxzLmpzPzVjNmEiXSwic291cmNlc0NvbnRlbnQiOlsiYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJJbnN0cnVtZW50YXRpb24oKSB7XG4gICAgaWYgKFwiX0VOVFJJRVNcIiBpbiBnbG9iYWxUaGlzICYmIF9FTlRSSUVTLm1pZGRsZXdhcmVfaW5zdHJ1bWVudGF0aW9uICYmIF9FTlRSSUVTLm1pZGRsZXdhcmVfaW5zdHJ1bWVudGF0aW9uLnJlZ2lzdGVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBfRU5UUklFUy5taWRkbGV3YXJlX2luc3RydW1lbnRhdGlvbi5yZWdpc3RlcigpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID0gYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGxvYWRpbmcgaW5zdHJ1bWVudGF0aW9uIGhvb2s6ICR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmxldCByZWdpc3Rlckluc3RydW1lbnRhdGlvblByb21pc2UgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUluc3RydW1lbnRhdGlvblJlZ2lzdGVyZWQoKSB7XG4gICAgaWYgKCFyZWdpc3Rlckluc3RydW1lbnRhdGlvblByb21pc2UpIHtcbiAgICAgICAgcmVnaXN0ZXJJbnN0cnVtZW50YXRpb25Qcm9taXNlID0gcmVnaXN0ZXJJbnN0cnVtZW50YXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9uUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGdldFVuc3VwcG9ydGVkTW9kdWxlRXJyb3JNZXNzYWdlKG1vZHVsZSkge1xuICAgIC8vIHdhcm5pbmc6IGlmIHlvdSBjaGFuZ2UgdGhlc2UgbWVzc2FnZXMsIHlvdSBtdXN0IGFkanVzdCBob3cgcmVhY3QtZGV2LW92ZXJsYXkncyBtaWRkbGV3YXJlIGRldGVjdHMgbW9kdWxlcyBub3QgZm91bmRcbiAgICByZXR1cm4gYFRoZSBlZGdlIHJ1bnRpbWUgZG9lcyBub3Qgc3VwcG9ydCBOb2RlLmpzICcke21vZHVsZX0nIG1vZHVsZS5cbkxlYXJuIE1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25vZGUtbW9kdWxlLWluLWVkZ2UtcnVudGltZWA7XG59XG5mdW5jdGlvbiBfX2ltcG9ydF91bnN1cHBvcnRlZChtb2R1bGVOYW1lKSB7XG4gICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoZnVuY3Rpb24oKSB7fSwge1xuICAgICAgICBnZXQgKF9vYmosIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihnZXRVbnN1cHBvcnRlZE1vZHVsZUVycm9yTWVzc2FnZShtb2R1bGVOYW1lKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnN0cnVjdCAoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0VW5zdXBwb3J0ZWRNb2R1bGVFcnJvck1lc3NhZ2UobW9kdWxlTmFtZSkpO1xuICAgICAgICB9LFxuICAgICAgICBhcHBseSAoX3RhcmdldCwgX3RoaXMsIGFyZ3MpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMF0ocHJveHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGdldFVuc3VwcG9ydGVkTW9kdWxlRXJyb3JNZXNzYWdlKG1vZHVsZU5hbWUpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgZ2V0OiAoKT0+cHJveHlcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGVuaGFuY2VHbG9iYWxzKCkge1xuICAgIC8vIFRoZSBjb25kaXRpb24gaXMgdHJ1ZSB3aGVuIHRoZSBcInByb2Nlc3NcIiBtb2R1bGUgaXMgcHJvdmlkZWRcbiAgICBpZiAocHJvY2VzcyAhPT0gZ2xvYmFsLnByb2Nlc3MpIHtcbiAgICAgICAgLy8gcHJlZmVyIGxvY2FsIHByb2Nlc3MgYnV0IGdsb2JhbC5wcm9jZXNzIGhhcyBjb3JyZWN0IFwiZW52XCJcbiAgICAgICAgcHJvY2Vzcy5lbnYgPSBnbG9iYWwucHJvY2Vzcy5lbnY7XG4gICAgICAgIGdsb2JhbC5wcm9jZXNzID0gcHJvY2VzcztcbiAgICB9XG4gICAgLy8gdG8gYWxsb3cgYnVpbGRpbmcgY29kZSB0aGF0IGltcG9ydCBidXQgZG9lcyBub3QgdXNlIG5vZGUuanMgbW9kdWxlcyxcbiAgICAvLyB3ZWJwYWNrIHdpbGwgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gZXhpc3QgaW4gZ2xvYmFsIHNjb3BlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIFwiX19pbXBvcnRfdW5zdXBwb3J0ZWRcIiwge1xuICAgICAgICB2YWx1ZTogX19pbXBvcnRfdW5zdXBwb3J0ZWQsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgLy8gRWFnZXJseSBmaXJlIGluc3RydW1lbnRhdGlvbiBob29rIHRvIG1ha2UgdGhlIHN0YXJ0dXAgZmFzdGVyLlxuICAgIHZvaWQgZW5zdXJlSW5zdHJ1bWVudGF0aW9uUmVnaXN0ZXJlZCgpO1xufVxuZW5oYW5jZUdsb2JhbHMoKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2xvYmFscy5qcy5tYXAiXSwibmFtZXMiOlsicmVnaXN0ZXJJbnN0cnVtZW50YXRpb24iLCJnbG9iYWxUaGlzIiwiX0VOVFJJRVMiLCJtaWRkbGV3YXJlX2luc3RydW1lbnRhdGlvbiIsInJlZ2lzdGVyIiwiZXJyIiwibWVzc2FnZSIsInJlZ2lzdGVySW5zdHJ1bWVudGF0aW9uUHJvbWlzZSIsImVuc3VyZUluc3RydW1lbnRhdGlvblJlZ2lzdGVyZWQiLCJnZXRVbnN1cHBvcnRlZE1vZHVsZUVycm9yTWVzc2FnZSIsIm1vZHVsZSIsIl9faW1wb3J0X3Vuc3VwcG9ydGVkIiwibW9kdWxlTmFtZSIsInByb3h5IiwiUHJveHkiLCJnZXQiLCJfb2JqIiwicHJvcCIsIkVycm9yIiwiY29uc3RydWN0IiwiYXBwbHkiLCJfdGFyZ2V0IiwiX3RoaXMiLCJhcmdzIiwiZW5oYW5jZUdsb2JhbHMiLCJwcm9jZXNzIiwiZ2xvYmFsIiwiZW52IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/globals.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/http.js":
/*!*******************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/http.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HTTP_METHODS: () => (/* binding */ HTTP_METHODS),\n/* harmony export */ isHTTPMethod: () => (/* binding */ isHTTPMethod)\n/* harmony export */ });\n/**\n * List of valid HTTP methods that can be implemented by Next.js's Custom App\n * Routes.\n */ const HTTP_METHODS = [\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"POST\",\n \"PUT\",\n \"DELETE\",\n \"PATCH\"\n];\n/**\n * Checks to see if the passed string is an HTTP method. Note that this is case\n * sensitive.\n *\n * @param maybeMethod the string that may be an HTTP method\n * @returns true if the string is an HTTP method\n */ function isHTTPMethod(maybeMethod) {\n return HTTP_METHODS.includes(maybeMethod);\n} //# sourceMappingURL=http.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2h0dHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0NBR0MsR0FBVSxNQUFNQSxlQUFlO0lBQzVCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0gsQ0FBQztBQUNGOzs7Ozs7Q0FNQyxHQUFVLFNBQVNDLGFBQWFDLFdBQVc7SUFDeEMsT0FBT0YsYUFBYUcsUUFBUSxDQUFDRDtBQUNqQyxFQUVBLGdDQUFnQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2h0dHAuanM/ZGJkNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpc3Qgb2YgdmFsaWQgSFRUUCBtZXRob2RzIHRoYXQgY2FuIGJlIGltcGxlbWVudGVkIGJ5IE5leHQuanMncyBDdXN0b20gQXBwXG4gKiBSb3V0ZXMuXG4gKi8gZXhwb3J0IGNvbnN0IEhUVFBfTUVUSE9EUyA9IFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICAgIFwiUE9TVFwiLFxuICAgIFwiUFVUXCIsXG4gICAgXCJERUxFVEVcIixcbiAgICBcIlBBVENIXCJcbl07XG4vKipcbiAqIENoZWNrcyB0byBzZWUgaWYgdGhlIHBhc3NlZCBzdHJpbmcgaXMgYW4gSFRUUCBtZXRob2QuIE5vdGUgdGhhdCB0aGlzIGlzIGNhc2VcbiAqIHNlbnNpdGl2ZS5cbiAqXG4gKiBAcGFyYW0gbWF5YmVNZXRob2QgdGhlIHN0cmluZyB0aGF0IG1heSBiZSBhbiBIVFRQIG1ldGhvZFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGFuIEhUVFAgbWV0aG9kXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGlzSFRUUE1ldGhvZChtYXliZU1ldGhvZCkge1xuICAgIHJldHVybiBIVFRQX01FVEhPRFMuaW5jbHVkZXMobWF5YmVNZXRob2QpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1odHRwLmpzLm1hcCJdLCJuYW1lcyI6WyJIVFRQX01FVEhPRFMiLCJpc0hUVFBNZXRob2QiLCJtYXliZU1ldGhvZCIsImluY2x1ZGVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/http.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/internal-edge-wait-until.js":
/*!***************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/internal-edge-wait-until.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ internal_getCurrentFunctionWaitUntil: () => (/* binding */ internal_getCurrentFunctionWaitUntil),\n/* harmony export */ internal_runWithWaitUntil: () => (/* binding */ internal_runWithWaitUntil)\n/* harmony export */ });\n// An internal module to expose the \"waitUntil\" API to Edge SSR and Edge Route Handler functions.\n// This is highly experimental and subject to change.\n// We still need a global key to bypass Webpack's layering of modules.\nconst GLOBAL_KEY = Symbol.for(\"__next_internal_waitUntil__\");\nconst state = globalThis[GLOBAL_KEY] || // @ts-ignore\n(globalThis[GLOBAL_KEY] = {\n waitUntilCounter: 0,\n waitUntilResolve: undefined,\n waitUntilPromise: null\n});\n// No matter how many concurrent requests are being handled, we want to make sure\n// that the final promise is only resolved once all of the waitUntil promises have\n// settled.\nfunction resolveOnePromise() {\n state.waitUntilCounter--;\n if (state.waitUntilCounter === 0) {\n state.waitUntilResolve();\n state.waitUntilPromise = null;\n }\n}\nfunction internal_getCurrentFunctionWaitUntil() {\n return state.waitUntilPromise;\n}\nfunction internal_runWithWaitUntil(fn) {\n const result = fn();\n if (result && typeof result === \"object\" && \"then\" in result && \"finally\" in result && typeof result.then === \"function\" && typeof result.finally === \"function\") {\n if (!state.waitUntilCounter) {\n // Create the promise for the next batch of waitUntil calls.\n state.waitUntilPromise = new Promise((resolve)=>{\n state.waitUntilResolve = resolve;\n });\n }\n state.waitUntilCounter++;\n return result.finally(()=>{\n resolveOnePromise();\n });\n }\n return result;\n} //# sourceMappingURL=internal-edge-wait-until.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL2ludGVybmFsLWVkZ2Utd2FpdC11bnRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlHQUFpRztBQUNqRyxxREFBcUQ7QUFDckQsc0VBQXNFO0FBQ3RFLE1BQU1BLGFBQWFDLE9BQU9DLEdBQUcsQ0FBQztBQUM5QixNQUFNQyxRQUNOQyxVQUFVLENBQUNKLFdBQVcsSUFBSSxhQUFhO0FBQ3RDSSxDQUFBQSxVQUFVLENBQUNKLFdBQVcsR0FBRztJQUN0Qkssa0JBQWtCO0lBQ2xCQyxrQkFBa0JDO0lBQ2xCQyxrQkFBa0I7QUFDdEI7QUFDQSxpRkFBaUY7QUFDakYsa0ZBQWtGO0FBQ2xGLFdBQVc7QUFDWCxTQUFTQztJQUNMTixNQUFNRSxnQkFBZ0I7SUFDdEIsSUFBSUYsTUFBTUUsZ0JBQWdCLEtBQUssR0FBRztRQUM5QkYsTUFBTUcsZ0JBQWdCO1FBQ3RCSCxNQUFNSyxnQkFBZ0IsR0FBRztJQUM3QjtBQUNKO0FBQ08sU0FBU0U7SUFDWixPQUFPUCxNQUFNSyxnQkFBZ0I7QUFDakM7QUFDTyxTQUFTRywwQkFBMEJDLEVBQUU7SUFDeEMsTUFBTUMsU0FBU0Q7SUFDZixJQUFJQyxVQUFVLE9BQU9BLFdBQVcsWUFBWSxVQUFVQSxVQUFVLGFBQWFBLFVBQVUsT0FBT0EsT0FBT0MsSUFBSSxLQUFLLGNBQWMsT0FBT0QsT0FBT0UsT0FBTyxLQUFLLFlBQVk7UUFDOUosSUFBSSxDQUFDWixNQUFNRSxnQkFBZ0IsRUFBRTtZQUN6Qiw0REFBNEQ7WUFDNURGLE1BQU1LLGdCQUFnQixHQUFHLElBQUlRLFFBQVEsQ0FBQ0M7Z0JBQ2xDZCxNQUFNRyxnQkFBZ0IsR0FBR1c7WUFDN0I7UUFDSjtRQUNBZCxNQUFNRSxnQkFBZ0I7UUFDdEIsT0FBT1EsT0FBT0UsT0FBTyxDQUFDO1lBQ2xCTjtRQUNKO0lBQ0o7SUFDQSxPQUFPSTtBQUNYLEVBRUEsb0RBQW9EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvaW50ZXJuYWwtZWRnZS13YWl0LXVudGlsLmpzPzIxOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQW4gaW50ZXJuYWwgbW9kdWxlIHRvIGV4cG9zZSB0aGUgXCJ3YWl0VW50aWxcIiBBUEkgdG8gRWRnZSBTU1IgYW5kIEVkZ2UgUm91dGUgSGFuZGxlciBmdW5jdGlvbnMuXG4vLyBUaGlzIGlzIGhpZ2hseSBleHBlcmltZW50YWwgYW5kIHN1YmplY3QgdG8gY2hhbmdlLlxuLy8gV2Ugc3RpbGwgbmVlZCBhIGdsb2JhbCBrZXkgdG8gYnlwYXNzIFdlYnBhY2sncyBsYXllcmluZyBvZiBtb2R1bGVzLlxuY29uc3QgR0xPQkFMX0tFWSA9IFN5bWJvbC5mb3IoXCJfX25leHRfaW50ZXJuYWxfd2FpdFVudGlsX19cIik7XG5jb25zdCBzdGF0ZSA9IC8vIEB0cy1pZ25vcmVcbmdsb2JhbFRoaXNbR0xPQkFMX0tFWV0gfHwgLy8gQHRzLWlnbm9yZVxuKGdsb2JhbFRoaXNbR0xPQkFMX0tFWV0gPSB7XG4gICAgd2FpdFVudGlsQ291bnRlcjogMCxcbiAgICB3YWl0VW50aWxSZXNvbHZlOiB1bmRlZmluZWQsXG4gICAgd2FpdFVudGlsUHJvbWlzZTogbnVsbFxufSk7XG4vLyBObyBtYXR0ZXIgaG93IG1hbnkgY29uY3VycmVudCByZXF1ZXN0cyBhcmUgYmVpbmcgaGFuZGxlZCwgd2Ugd2FudCB0byBtYWtlIHN1cmVcbi8vIHRoYXQgdGhlIGZpbmFsIHByb21pc2UgaXMgb25seSByZXNvbHZlZCBvbmNlIGFsbCBvZiB0aGUgd2FpdFVudGlsIHByb21pc2VzIGhhdmVcbi8vIHNldHRsZWQuXG5mdW5jdGlvbiByZXNvbHZlT25lUHJvbWlzZSgpIHtcbiAgICBzdGF0ZS53YWl0VW50aWxDb3VudGVyLS07XG4gICAgaWYgKHN0YXRlLndhaXRVbnRpbENvdW50ZXIgPT09IDApIHtcbiAgICAgICAgc3RhdGUud2FpdFVudGlsUmVzb2x2ZSgpO1xuICAgICAgICBzdGF0ZS53YWl0VW50aWxQcm9taXNlID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxfZ2V0Q3VycmVudEZ1bmN0aW9uV2FpdFVudGlsKCkge1xuICAgIHJldHVybiBzdGF0ZS53YWl0VW50aWxQcm9taXNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsX3J1bldpdGhXYWl0VW50aWwoZm4pIHtcbiAgICBjb25zdCByZXN1bHQgPSBmbigpO1xuICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdCA9PT0gXCJvYmplY3RcIiAmJiBcInRoZW5cIiBpbiByZXN1bHQgJiYgXCJmaW5hbGx5XCIgaW4gcmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByZXN1bHQuZmluYWxseSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmICghc3RhdGUud2FpdFVudGlsQ291bnRlcikge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBwcm9taXNlIGZvciB0aGUgbmV4dCBiYXRjaCBvZiB3YWl0VW50aWwgY2FsbHMuXG4gICAgICAgICAgICBzdGF0ZS53YWl0VW50aWxQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICAgICAgc3RhdGUud2FpdFVudGlsUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS53YWl0VW50aWxDb3VudGVyKys7XG4gICAgICAgIHJldHVybiByZXN1bHQuZmluYWxseSgoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZU9uZVByb21pc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVybmFsLWVkZ2Utd2FpdC11bnRpbC5qcy5tYXAiXSwibmFtZXMiOlsiR0xPQkFMX0tFWSIsIlN5bWJvbCIsImZvciIsInN0YXRlIiwiZ2xvYmFsVGhpcyIsIndhaXRVbnRpbENvdW50ZXIiLCJ3YWl0VW50aWxSZXNvbHZlIiwidW5kZWZpbmVkIiwid2FpdFVudGlsUHJvbWlzZSIsInJlc29sdmVPbmVQcm9taXNlIiwiaW50ZXJuYWxfZ2V0Q3VycmVudEZ1bmN0aW9uV2FpdFVudGlsIiwiaW50ZXJuYWxfcnVuV2l0aFdhaXRVbnRpbCIsImZuIiwicmVzdWx0IiwidGhlbiIsImZpbmFsbHkiLCJQcm9taXNlIiwicmVzb2x2ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/internal-edge-wait-until.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/next-url.js":
/*!***********************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/next-url.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NextURL: () => (/* binding */ NextURL)\n/* harmony export */ });\n/* harmony import */ var _shared_lib_i18n_detect_domain_locale__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/lib/i18n/detect-domain-locale */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js\");\n/* harmony import */ var _shared_lib_router_utils_format_next_pathname_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/lib/router/utils/format-next-pathname-info */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js\");\n/* harmony import */ var _shared_lib_get_hostname__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/lib/get-hostname */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/get-hostname.js\");\n/* harmony import */ var _shared_lib_router_utils_get_next_pathname_info__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/lib/router/utils/get-next-pathname-info */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js\");\n\n\n\n\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,_shared_lib_router_utils_get_next_pathname_info__WEBPACK_IMPORTED_MODULE_3__.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,_shared_lib_get_hostname__WEBPACK_IMPORTED_MODULE_2__.getHostname)(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : (0,_shared_lib_i18n_detect_domain_locale__WEBPACK_IMPORTED_MODULE_0__.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,_shared_lib_router_utils_format_next_pathname_info__WEBPACK_IMPORTED_MODULE_1__.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 new TypeError(`The NextURL configuration includes no locale \"${locale}\"`);\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} //# sourceMappingURL=next-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL25leHQtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWdGO0FBQ2lCO0FBQ3JDO0FBQytCO0FBQzNGLE1BQU1JLDJCQUEyQjtBQUNqQyxTQUFTQyxTQUFTQyxHQUFHLEVBQUVDLElBQUk7SUFDdkIsT0FBTyxJQUFJQyxJQUFJQyxPQUFPSCxLQUFLSSxPQUFPLENBQUNOLDBCQUEwQixjQUFjRyxRQUFRRSxPQUFPRixNQUFNRyxPQUFPLENBQUNOLDBCQUEwQjtBQUN0STtBQUNBLE1BQU1PLFdBQVdDLE9BQU87QUFDakIsTUFBTUM7SUFDVEMsWUFBWUMsS0FBSyxFQUFFQyxVQUFVLEVBQUVDLElBQUksQ0FBQztRQUNoQyxJQUFJVjtRQUNKLElBQUlXO1FBQ0osSUFBSSxPQUFPRixlQUFlLFlBQVksY0FBY0EsY0FBYyxPQUFPQSxlQUFlLFVBQVU7WUFDOUZULE9BQU9TO1lBQ1BFLFVBQVVELFFBQVEsQ0FBQztRQUN2QixPQUFPO1lBQ0hDLFVBQVVELFFBQVFELGNBQWMsQ0FBQztRQUNyQztRQUNBLElBQUksQ0FBQ0wsU0FBUyxHQUFHO1lBQ2JMLEtBQUtELFNBQVNVLE9BQU9SLFFBQVFXLFFBQVFYLElBQUk7WUFDekNXLFNBQVNBO1lBQ1RDLFVBQVU7UUFDZDtRQUNBLElBQUksQ0FBQ0MsT0FBTztJQUNoQjtJQUNBQSxVQUFVO1FBQ04sSUFBSUMsd0NBQXdDQyxtQ0FBbUNDLDZCQUE2QkMseUNBQXlDQztRQUNySixNQUFNQyxPQUFPdkIsb0dBQW1CQSxDQUFDLElBQUksQ0FBQ1EsU0FBUyxDQUFDTCxHQUFHLENBQUNxQixRQUFRLEVBQUU7WUFDMURDLFlBQVksSUFBSSxDQUFDakIsU0FBUyxDQUFDTyxPQUFPLENBQUNVLFVBQVU7WUFDN0NDLFdBQVcsQ0FBQ0MsU0FBOEM7WUFDMURHLGNBQWMsSUFBSSxDQUFDdEIsU0FBUyxDQUFDTyxPQUFPLENBQUNlLFlBQVk7UUFDckQ7UUFD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TUFBTSxJQUFJLENBQUNBLElBQUk7WUFDZjNCLFVBQVUsSUFBSSxDQUFDQSxRQUFRO1lBQ3ZCb0IsUUFBUSxJQUFJLENBQUNBLE1BQU07WUFDbkJJLGNBQWMsSUFBSSxDQUFDQSxZQUFZO1lBQy9CTSxNQUFNLElBQUksQ0FBQ0EsSUFBSTtRQUNuQjtJQUNKO0lBQ0FRLFFBQVE7UUFDSixPQUFPLElBQUlwRCxRQUFRSixPQUFPLElBQUksR0FBRyxJQUFJLENBQUNFLFNBQVMsQ0FBQ08sT0FBTztJQUMzRDtBQUNKLEVBRUEsb0NBQW9DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvbmV4dC11cmwuanM/NmE1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXRlY3REb21haW5Mb2NhbGUgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCI7XG5pbXBvcnQgeyBmb3JtYXROZXh0UGF0aG5hbWVJbmZvIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC1uZXh0LXBhdGhuYW1lLWluZm9cIjtcbmltcG9ydCB7IGdldEhvc3RuYW1lIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saWIvZ2V0LWhvc3RuYW1lXCI7XG5pbXBvcnQgeyBnZXROZXh0UGF0aG5hbWVJbmZvIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1uZXh0LXBhdGhuYW1lLWluZm9cIjtcbmNvbnN0IFJFR0VYX0xPQ0FMSE9TVF9IT1NUTkFNRSA9IC8oPyFeaHR0cHM/OlxcL1xcLykoMTI3KD86XFwuKD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSl7M318XFxbOjoxXFxdfGxvY2FsaG9zdCkvO1xuZnVuY3Rpb24gcGFyc2VVUkwodXJsLCBiYXNlKSB7XG4gICAgcmV0dXJuIG5ldyBVUkwoU3RyaW5nKHVybCkucmVwbGFjZShSRUdFWF9MT0NBTEhPU1RfSE9TVE5BTUUsIFwibG9jYWxob3N0XCIpLCBiYXNlICYmIFN0cmluZyhiYXNlKS5yZXBsYWNlKFJFR0VYX0xPQ0FMSE9TVF9IT1NUTkFNRSwgXCJsb2NhbGhvc3RcIikpO1xufVxuY29uc3QgSW50ZXJuYWwgPSBTeW1ib2woXCJOZXh0VVJMSW50ZXJuYWxcIik7XG5leHBvcnQgY2xhc3MgTmV4dFVSTCB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGJhc2VPck9wdHMsIG9wdHMpe1xuICAgICAgICBsZXQgYmFzZTtcbiAgICAgICAgbGV0IG9wdGlvbnM7XG4gICAgICAgIGlmICh0eXBlb2YgYmFzZU9yT3B0cyA9PT0gXCJvYmplY3RcIiAmJiBcInBhdGhuYW1lXCIgaW4gYmFzZU9yT3B0cyB8fCB0eXBlb2YgYmFzZU9yT3B0cyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgYmFzZSA9IGJhc2VPck9wdHM7XG4gICAgICAgICAgICBvcHRpb25zID0gb3B0cyB8fCB7fTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRzIHx8IGJhc2VPck9wdHMgfHwge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tJbnRlcm5hbF0gPSB7XG4gICAgICAgICAgICB1cmw6IHBhcnNlVVJMKGlucHV0LCBiYXNlID8/IG9wdGlvbnMuYmFzZSksXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgYmFzZVBhdGg6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hbmFseXplKCk7XG4gICAgfVxuICAgIGFuYWx5emUoKSB7XG4gICAgICAgIHZhciBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biwgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnLCBfdGhpc19JbnRlcm5hbF9kb21haW5Mb2NhbGUsIF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuMSwgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnMTtcbiAgICAgICAgY29uc3QgaW5mbyA9IGdldE5leHRQYXRobmFtZUluZm8odGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lLCB7XG4gICAgICAgICAgICBuZXh0Q29uZmlnOiB0aGlzW0ludGVybmFsXS5vcHRpb25zLm5leHRDb25maWcsXG4gICAgICAgICAgICBwYXJzZURhdGE6ICFwcm9jZXNzLmVudi5fX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFLFxuICAgICAgICAgICAgaTE4blByb3ZpZGVyOiB0aGlzW0ludGVybmFsXS5vcHRpb25zLmkxOG5Qcm92aWRlclxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBnZXRIb3N0bmFtZSh0aGlzW0ludGVybmFsXS51cmwsIHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuaGVhZGVycyk7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZSA9IHRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuaTE4blByb3ZpZGVyID8gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5pMThuUHJvdmlkZXIuZGV0ZWN0RG9tYWluTG9jYWxlKGhvc3RuYW1lKSA6IGRldGVjdERvbWFpbkxvY2FsZSgoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnID0gdGhpc1tJbnRlcm5hbF0ub3B0aW9ucy5uZXh0Q29uZmlnKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuID0gX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnLmkxOG4pID09IG51bGwgPyB2b2lkIDAgOiBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4bi5kb21haW5zLCBob3N0bmFtZSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSAoKF90aGlzX0ludGVybmFsX2RvbWFpbkxvY2FsZSA9IHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX0ludGVybmFsX2RvbWFpbkxvY2FsZS5kZWZhdWx0TG9jYWxlKSB8fCAoKF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZzEgPSB0aGlzW0ludGVybmFsXS5vcHRpb25zLm5leHRDb25maWcpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4xID0gX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnMS5pMThuKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4xLmRlZmF1bHRMb2NhbGUpO1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucGF0aG5hbWUgPSBpbmZvLnBhdGhuYW1lO1xuICAgICAgICB0aGlzW0ludGVybmFsXS5kZWZhdWx0TG9jYWxlID0gZGVmYXVsdExvY2FsZTtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0uYmFzZVBhdGggPSBpbmZvLmJhc2VQYXRoID8/IFwiXCI7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJ1aWxkSWQgPSBpbmZvLmJ1aWxkSWQ7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmxvY2FsZSA9IGluZm8ubG9jYWxlID8/IGRlZmF1bHRMb2NhbGU7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnRyYWlsaW5nU2xhc2ggPSBpbmZvLnRyYWlsaW5nU2xhc2g7XG4gICAgfVxuICAgIGZvcm1hdFBhdGhuYW1lKCkge1xuICAgICAgICByZXR1cm4gZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyh7XG4gICAgICAgICAgICBiYXNlUGF0aDogdGhpc1tJbnRlcm5hbF0uYmFzZVBhdGgsXG4gICAgICAgICAgICBidWlsZElkOiB0aGlzW0ludGVybmFsXS5idWlsZElkLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZTogIXRoaXNbSW50ZXJuYWxdLm9wdGlvbnMuZm9yY2VMb2NhbGUgPyB0aGlzW0ludGVybmFsXS5kZWZhdWx0TG9jYWxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzW0ludGVybmFsXS5sb2NhbGUsXG4gICAgICAgICAgICBwYXRobmFtZTogdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgdHJhaWxpbmdTbGFzaDogdGhpc1tJbnRlcm5hbF0udHJhaWxpbmdTbGFzaFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9ybWF0U2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnNlYXJjaDtcbiAgICB9XG4gICAgZ2V0IGJ1aWxkSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS5idWlsZElkO1xuICAgIH1cbiAgICBzZXQgYnVpbGRJZChidWlsZElkKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJ1aWxkSWQgPSBidWlsZElkO1xuICAgIH1cbiAgICBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0ubG9jYWxlID8/IFwiXCI7XG4gICAgfVxuICAgIHNldCBsb2NhbGUobG9jYWxlKSB7XG4gICAgICAgIHZhciBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biwgX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnO1xuICAgICAgICBpZiAoIXRoaXNbSW50ZXJuYWxdLmxvY2FsZSB8fCAhKChfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWcgPSB0aGlzW0ludGVybmFsXS5vcHRpb25zLm5leHRDb25maWcpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXNfSW50ZXJuYWxfb3B0aW9uc19uZXh0Q29uZmlnX2kxOG4gPSBfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWcuaTE4bikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuLmxvY2FsZXMuaW5jbHVkZXMobG9jYWxlKSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFRoZSBOZXh0VVJMIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgbm8gbG9jYWxlIFwiJHtsb2NhbGV9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW0ludGVybmFsXS5sb2NhbGUgPSBsb2NhbGU7XG4gICAgfVxuICAgIGdldCBkZWZhdWx0TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0uZGVmYXVsdExvY2FsZTtcbiAgICB9XG4gICAgZ2V0IGRvbWFpbkxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLmRvbWFpbkxvY2FsZTtcbiAgICB9XG4gICAgZ2V0IHNlYXJjaFBhcmFtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5zZWFyY2hQYXJhbXM7XG4gICAgfVxuICAgIGdldCBob3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLmhvc3Q7XG4gICAgfVxuICAgIHNldCBob3N0KHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBob3N0bmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0bmFtZTtcbiAgICB9XG4gICAgc2V0IGhvc3RuYW1lKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5ob3N0bmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC5wb3J0O1xuICAgIH1cbiAgICBzZXQgcG9ydCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucG9ydCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcHJvdG9jb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwucHJvdG9jb2w7XG4gICAgfVxuICAgIHNldCBwcm90b2NvbCh2YWx1ZSkge1xuICAgICAgICB0aGlzW0ludGVybmFsXS51cmwucHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGhyZWYoKSB7XG4gICAgICAgIGNvbnN0IHBhdGhuYW1lID0gdGhpcy5mb3JtYXRQYXRobmFtZSgpO1xuICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmZvcm1hdFNlYXJjaCgpO1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5wcm90b2NvbH0vLyR7dGhpcy5ob3N0fSR7cGF0aG5hbWV9JHtzZWFyY2h9JHt0aGlzLmhhc2h9YDtcbiAgICB9XG4gICAgc2V0IGhyZWYodXJsKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybCA9IHBhcnNlVVJMKHVybCk7XG4gICAgICAgIHRoaXMuYW5hbHl6ZSgpO1xuICAgIH1cbiAgICBnZXQgb3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLm9yaWdpbjtcbiAgICB9XG4gICAgZ2V0IHBhdGhuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lO1xuICAgIH1cbiAgICBzZXQgcGF0aG5hbWUodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBhdGhuYW1lID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBoYXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLmhhc2g7XG4gICAgfVxuICAgIHNldCBoYXNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5oYXNoID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBzZWFyY2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS51cmwuc2VhcmNoO1xuICAgIH1cbiAgICBzZXQgc2VhcmNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC5zZWFyY2ggPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHBhc3N3b3JkKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJbnRlcm5hbF0udXJsLnBhc3N3b3JkO1xuICAgIH1cbiAgICBzZXQgcGFzc3dvcmQodmFsdWUpIHtcbiAgICAgICAgdGhpc1tJbnRlcm5hbF0udXJsLnBhc3N3b3JkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB1c2VybmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSW50ZXJuYWxdLnVybC51c2VybmFtZTtcbiAgICB9XG4gICAgc2V0IHVzZXJuYW1lKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLnVybC51c2VybmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgYmFzZVBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0ludGVybmFsXS5iYXNlUGF0aDtcbiAgICB9XG4gICAgc2V0IGJhc2VQYXRoKHZhbHVlKSB7XG4gICAgICAgIHRoaXNbSW50ZXJuYWxdLmJhc2VQYXRoID0gdmFsdWUuc3RhcnRzV2l0aChcIi9cIikgPyB2YWx1ZSA6IGAvJHt2YWx1ZX1gO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHJlZjtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ocmVmO1xuICAgIH1cbiAgICBbU3ltYm9sLmZvcihcImVkZ2UtcnVudGltZS5pbnNwZWN0LmN1c3RvbVwiKV0oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBocmVmOiB0aGlzLmhyZWYsXG4gICAgICAgICAgICBvcmlnaW46IHRoaXMub3JpZ2luLFxuICAgICAgICAgICAgcHJvdG9jb2w6IHRoaXMucHJvdG9jb2wsXG4gICAgICAgICAgICB1c2VybmFtZTogdGhpcy51c2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxuICAgICAgICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgICAgICAgaG9zdG5hbWU6IHRoaXMuaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICAgICAgICBwYXRobmFtZTogdGhpcy5wYXRobmFtZSxcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VhcmNoUGFyYW1zLFxuICAgICAgICAgICAgaGFzaDogdGhpcy5oYXNoXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICByZXR1cm4gbmV3IE5leHRVUkwoU3RyaW5nKHRoaXMpLCB0aGlzW0ludGVybmFsXS5vcHRpb25zKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5leHQtdXJsLmpzLm1hcCJdLCJuYW1lcyI6WyJkZXRlY3REb21haW5Mb2NhbGUiLCJmb3JtYXROZXh0UGF0aG5hbWVJbmZvIiwiZ2V0SG9zdG5hbWUiLCJnZXROZXh0UGF0aG5hbWVJbmZvIiwiUkVHRVhfTE9DQUxIT1NUX0hPU1ROQU1FIiwicGFyc2VVUkwiLCJ1cmwiLCJiYXNlIiwiVVJMIiwiU3RyaW5nIiwicmVwbGFjZSIsIkludGVybmFsIiwiU3ltYm9sIiwiTmV4dFVSTCIsImNvbnN0cnVjdG9yIiwiaW5wdXQiLCJiYXNlT3JPcHRzIiwib3B0cyIsIm9wdGlvbnMiLCJiYXNlUGF0aCIsImFuYWx5emUiLCJfdGhpc19JbnRlcm5hbF9vcHRpb25zX25leHRDb25maWdfaTE4biIsIl90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZyIsIl90aGlzX0ludGVybmFsX2RvbWFpbkxvY2FsZSIsIl90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZ19pMThuMSIsIl90aGlzX0ludGVybmFsX29wdGlvbnNfbmV4dENvbmZpZzEiLCJpbmZvIiwicGF0aG5hbWUiLCJuZXh0Q29uZmlnIiwicGFyc2VEYXRhIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9OT19NSURETEVXQVJFX1VSTF9OT1JNQUxJWkUiLCJpMThuUHJvdmlkZXIiLCJob3N0bmFtZSIsImhlYWRlcnMiLCJkb21haW5Mb2NhbGUiLCJpMThuIiwiZG9tYWlucyIsImRlZmF1bHRMb2NhbGUiLCJidWlsZElkIiwibG9jYWxlIiwidHJhaWxpbmdTbGFzaCIsImZvcm1hdFBhdGhuYW1lIiwiZm9yY2VMb2NhbGUiLCJ1bmRlZmluZWQiLCJmb3JtYXRTZWFyY2giLCJzZWFyY2giLCJsb2NhbGVzIiwiaW5jbHVkZXMiLCJUeXBlRXJyb3IiLCJzZWFyY2hQYXJhbXMiLCJob3N0IiwidmFsdWUiLCJwb3J0IiwicHJvdG9jb2wiLCJocmVmIiwiaGFzaCIsIm9yaWdpbiIsInBhc3N3b3JkIiwidXNlcm5hbWUiLCJzdGFydHNXaXRoIiwidG9TdHJpbmciLCJ0b0pTT04iLCJmb3IiLCJjbG9uZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/next-url.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js":
/*!**********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js ***!
\**********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HeadersAdapter: () => (/* binding */ HeadersAdapter),\n/* harmony export */ ReadonlyHeadersError: () => (/* binding */ ReadonlyHeadersError)\n/* harmony export */ });\n/* harmony import */ var _reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reflect */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js\");\n\n/**\n * @internal\n */ class 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__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_0__.ReflectAdapter.get(target, original, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === \"symbol\") {\n return _reflect__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_0__.ReflectAdapter.set(target, original ?? prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === \"symbol\") return _reflect__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_0__.ReflectAdapter.has(target, original);\n },\n deleteProperty (target, prop) {\n if (typeof prop === \"symbol\") return _reflect__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_0__.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} //# sourceMappingURL=headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL2hlYWRlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTJDO0FBQzNDOztDQUVDLEdBQVUsTUFBTUMsNkJBQTZCQztJQUMxQ0MsYUFBYTtRQUNULEtBQUssQ0FBQztJQUNWO0lBQ0EsT0FBT0MsV0FBVztRQUNkLE1BQU0sSUFBSUg7SUFDZDtBQUNKO0FBQ08sTUFBTUksdUJBQXVCQztJQUNoQ0gsWUFBWUksT0FBTyxDQUFDO1FBQ2hCLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UsS0FBSztRQUNMLElBQUksQ0FBQ0EsT0FBTyxHQUFHLElBQUlDLE1BQU1ELFNBQVM7WUFDOUJFLEtBQUtDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRO2dCQUN2QixzRUFBc0U7Z0JBQ3RFLHNFQUFzRTtnQkFDdEUsY0FBYztnQkFDZCxJQUFJLE9BQU9ELFNBQVMsVUFBVTtvQkFDMUIsT0FBT1gsb0RBQWNBLENBQUNTLEdBQUcsQ0FBQ0MsUUFBUUMsTUFBTUM7Z0JBQzVDO2dCQUNBLE1BQU1DLGFBQWFGLEtBQUtHLFdBQVc7Z0JBQ25DLHdFQUF3RTtnQkFDeEUscUVBQXFFO2dCQUNyRSxrQkFBa0I7Z0JBQ2xCLE1BQU1DLFdBQVdDLE9BQU9DLElBQUksQ0FBQ1YsU0FBU1csSUFBSSxDQUFDLENBQUNDLElBQUlBLEVBQUVMLFdBQVcsT0FBT0Q7Z0JBQ3BFLDBEQUEwRDtnQkFDMUQsSUFBSSxPQUFPRSxhQUFhLGFBQWE7Z0JBQ3JDLG1EQUFtRDtnQkFDbkQsT0FBT2Ysb0RBQWNBLENBQUNTLEdBQUcsQ0FBQ0MsUUFBUUssVUFBVUg7WUFDaEQ7WUFDQVEsS0FBS1YsTUFBTSxFQUFFQyxJQUFJLEVBQUVVLEtBQUssRUFBRVQsUUFBUTtnQkFDOUIsSUFBSSxPQUFPRCxTQUFTLFVBQVU7b0JBQzFCLE9BQU9YLG9EQUFjQSxDQUFDb0IsR0FBRyxDQUFDVixRQUFR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TUFBTWMsUUFBUSxJQUFJLENBQUNaLEdBQUcsQ0FBQytCO1lBQ3ZCLE1BQU1uQjtRQUNWO0lBQ0o7SUFDQSxDQUFDcUIsT0FBT0MsUUFBUSxDQUFDLEdBQUc7UUFDaEIsT0FBTyxJQUFJLENBQUNMLE9BQU87SUFDdkI7QUFDSixFQUVBLG1DQUFtQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL2hlYWRlcnMuanM/MWRhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZsZWN0QWRhcHRlciB9IGZyb20gXCIuL3JlZmxlY3RcIjtcbi8qKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGNsYXNzIFJlYWRvbmx5SGVhZGVyc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKFwiSGVhZGVycyBjYW5ub3QgYmUgbW9kaWZpZWQuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2hlYWRlcnNcIik7XG4gICAgfVxuICAgIHN0YXRpYyBjYWxsYWJsZSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlYWRvbmx5SGVhZGVyc0Vycm9yKCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEhlYWRlcnNBZGFwdGVyIGV4dGVuZHMgSGVhZGVycyB7XG4gICAgY29uc3RydWN0b3IoaGVhZGVycyl7XG4gICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgb3ZlcnJpZGRlbiB0aGUgbWV0aG9kcyB0aGF0IHdvdWxkIGJlIGNhbGxlZCwgc28gd2UncmUganVzdFxuICAgICAgICAvLyBjYWxsaW5nIHRoZSBzdXBlciBjb25zdHJ1Y3RvciB0byBlbnN1cmUgdGhhdCB0aGUgaW5zdGFuY2VvZiBjaGVjayB3b3Jrcy5cbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IFByb3h5KGhlYWRlcnMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBqdXN0IGFuIG9iamVjdCwgd2UgZXhwZWN0IHRoYXQgYWxsIFwiZ2V0XCIgb3BlcmF0aW9uc1xuICAgICAgICAgICAgICAgIC8vIGFyZSBmb3IgcHJvcGVydGllcy4gSWYgaXQncyBhIFwiZ2V0XCIgZm9yIGEgc3ltYm9sLCB3ZSdsbCBqdXN0IHJldHVyblxuICAgICAgICAgICAgICAgIC8vIHRoZSBzeW1ib2wuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSBcInN5bWJvbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZWQgPSBwcm9wLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgLy8gTGV0J3MgZmluZCB0aGUgb3JpZ2luYWwgY2FzaW5nIG9mIHRoZSBrZXkuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgLy8gbm8gbWl4ZWQgY2FzZSBrZXlzIChlLmcuIFwiQ29udGVudC1UeXBlXCIgYW5kIFwiY29udGVudC10eXBlXCIpIGluIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMgb2JqZWN0LlxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gT2JqZWN0LmtleXMoaGVhZGVycykuZmluZCgobyk9Pm8udG9Mb3dlckNhc2UoKSA9PT0gbG93ZXJjYXNlZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gdW5kZWZpbmVkLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRoZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdEFkYXB0ZXIuZ2V0KHRhcmdldCwgb3JpZ2luYWwsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgKHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSBcInN5bWJvbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlci5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VkID0gcHJvcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIC8vIExldCdzIGZpbmQgdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUga2V5LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpc1xuICAgICAgICAgICAgICAgIC8vIG5vIG1peGVkIGNhc2Uga2V5cyAoZS5nLiBcIkNvbnRlbnQtVHlwZVwiIGFuZCBcImNvbnRlbnQtdHlwZVwiKSBpbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIG9iamVjdC5cbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IE9iamVjdC5rZXlzKGhlYWRlcnMpLmZpbmQoKG8pPT5vLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZWQpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBjYXNpbmcgZG9lc24ndCBleGlzdCwgdXNlIHRoZSBwcm9wIGFzIHRoZSBrZXkuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyLnNldCh0YXJnZXQsIG9yaWdpbmFsID8/IHByb3AsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzICh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09IFwic3ltYm9sXCIpIHJldHVybiBSZWZsZWN0QWRhcHRlci5oYXModGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VkID0gcHJvcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIC8vIExldCdzIGZpbmQgdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUga2V5LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpc1xuICAgICAgICAgICAgICAgIC8vIG5vIG1peGVkIGNhc2Uga2V5cyAoZS5nLiBcIkNvbnRlbnQtVHlwZVwiIGFuZCBcImNvbnRlbnQtdHlwZVwiKSBpbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIG9iamVjdC5cbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IE9iamVjdC5rZXlzKGhlYWRlcnMpLmZpbmQoKG8pPT5vLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZWQpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBjYXNpbmcgZG9lc24ndCBleGlzdCwgcmV0dXJuIGZhbHNlLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgY2FzaW5nIGV4aXN0cywgcmV0dXJuIHRydWUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyLmhhcyh0YXJnZXQsIG9yaWdpbmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVQcm9wZXJ0eSAodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSBcInN5bWJvbFwiKSByZXR1cm4gUmVmbGVjdEFkYXB0ZXIuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VkID0gcHJvcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIC8vIExldCdzIGZpbmQgdGhlIG9yaWdpbmFsIGNhc2luZyBvZiB0aGUga2V5LiBUaGlzIGFzc3VtZXMgdGhhdCB0aGVyZSBpc1xuICAgICAgICAgICAgICAgIC8vIG5vIG1peGVkIGNhc2Uga2V5cyAoZS5nLiBcIkNvbnRlbnQtVHlwZVwiIGFuZCBcImNvbnRlbnQtdHlwZVwiKSBpbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBoZWFkZXJzIG9iamVjdC5cbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IE9iamVjdC5rZXlzKGhlYWRlcnMpLmZpbmQoKG8pPT5vLnRvTG93ZXJDYXNlKCkgPT09IGxvd2VyY2FzZWQpO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBjYXNpbmcgZG9lc24ndCBleGlzdCwgcmV0dXJuIHRydWUuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbmFsIGNhc2luZyBleGlzdHMsIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyLmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgb3JpZ2luYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAqIFNlYWxzIGEgSGVhZGVycyBpbnN0YW5jZSB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBieSB0aHJvd2luZyBhbiBlcnJvciB3aGVuXG4gICAqIGFueSBtdXRhdGluZyBtZXRob2QgaXMgY2FsbGVkLlxuICAgKi8gc3RhdGljIHNlYWwoaGVhZGVycykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGhlYWRlcnMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImFwcGVuZFwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFkb25seUhlYWRlcnNFcnJvci5jYWxsYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAqIE1lcmdlcyBhIGhlYWRlciB2YWx1ZSBpbnRvIGEgc3RyaW5nLiBUaGlzIHN0b3JlcyBtdWx0aXBsZSB2YWx1ZXMgYXMgYW5cbiAgICogYXJyYXksIHNvIHdlIG5lZWQgdG8gbWVyZ2UgdGhlbSBpbnRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgYSBoZWFkZXIgdmFsdWVcbiAgICogQHJldHVybnMgYSBtZXJnZWQgaGVhZGVyIHZhbHVlIChhIHN0cmluZylcbiAgICovIG1lcmdlKHZhbHVlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICAvKipcbiAgICogQ3JlYXRlcyBhIEhlYWRlcnMgaW5zdGFuY2UgZnJvbSBhIHBsYWluIG9iamVjdCBvciBhIEhlYWRlcnMgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBoZWFkZXJzIGEgcGxhaW4gb2JqZWN0IG9yIGEgSGVhZGVycyBpbnN0YW5jZVxuICAgKiBAcmV0dXJucyBhIGhlYWRlcnMgaW5zdGFuY2VcbiAgICovIHN0YXRpYyBmcm9tKGhlYWRlcnMpIHtcbiAgICAgICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSByZXR1cm4gaGVhZGVycztcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFkZXJzQWRhcHRlcihoZWFkZXJzKTtcbiAgICB9XG4gICAgYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5oZWFkZXJzW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmhlYWRlcnNbbmFtZV0gPSBbXG4gICAgICAgICAgICAgICAgZXhpc3RpbmcsXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgIGV4aXN0aW5nLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlKG5hbWUpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuaGVhZGVyc1tuYW1lXTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmhlYWRlcnNbbmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB0aGlzLm1lcmdlKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5oZWFkZXJzW25hbWVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgIH1cbiAgICBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gICAgfVxuICAgIGZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZykge1xuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgdGhpcy5lbnRyaWVzKCkpe1xuICAgICAgICAgICAgY2FsbGJhY2tmbi5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqZW50cmllcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBXZSBhc3NlcnQgaGVyZSB0aGF0IHRoaXMgaXMgYSBzdHJpbmcgYmVjYXVzZSB3ZSBnb3QgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIE9iamVjdC5rZXlzKCkgY2FsbCBhYm92ZS5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICAgICAgICB5aWVsZCBbXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqa2V5cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXJzKSl7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB5aWVsZCBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgICp2YWx1ZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVycykpe1xuICAgICAgICAgICAgLy8gV2UgYXNzZXJ0IGhlcmUgdGhhdCB0aGlzIGlzIGEgc3RyaW5nIGJlY2F1c2Ugd2UgZ290IGl0IGZyb20gdGhlXG4gICAgICAgICAgICAvLyBPYmplY3Qua2V5cygpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhZGVycy5qcy5tYXAiXSwibmFtZXMiOlsiUmVmbGVjdEFkYXB0ZXIiLCJSZWFkb25seUhlYWRlcnNFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJjYWxsYWJsZSIsIkhlYWRlcnNBZGFwdGVyIiwiSGVhZGVycyIsImhlYWRlcnMiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3AiLCJyZWNlaXZlciIsImxvd2VyY2FzZWQiLCJ0b0xvd2VyQ2FzZSIsIm9yaWdpbmFsIiwiT2JqZWN0Iiwia2V5cyIsImZpbmQiLCJvIiwic2V0IiwidmFsdWUiLCJoYXMiLCJkZWxldGVQcm9wZXJ0eSIsInNlYWwiLCJtZXJnZSIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJmcm9tIiwiYXBwZW5kIiwibmFtZSIsImV4aXN0aW5nIiwicHVzaCIsImRlbGV0ZSIsImZvckVhY2giLCJjYWxsYmFja2ZuIiwidGhpc0FyZyIsImVudHJpZXMiLCJjYWxsIiwia2V5IiwidmFsdWVzIiwiU3ltYm9sIiwiaXRlcmF0b3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/headers.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js":
/*!**********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js ***!
\**********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReflectAdapter: () => (/* binding */ ReflectAdapter)\n/* harmony export */ });\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} //# sourceMappingURL=reflect.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlZmxlY3QuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU1BO0lBQ1QsT0FBT0MsSUFBSUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRTtRQUMvQixNQUFNQyxRQUFRQyxRQUFRTCxHQUFHLENBQUNDLFFBQVFDLE1BQU1DO1FBQ3hDLElBQUksT0FBT0MsVUFBVSxZQUFZO1lBQzdCLE9BQU9BLE1BQU1FLElBQUksQ0FBQ0w7UUFDdEI7UUFDQSxPQUFPRztJQUNYO0lBQ0EsT0FBT0csSUFBSU4sTUFBTSxFQUFFQyxJQUFJLEVBQUVFLEtBQUssRUFBRUQsUUFBUSxFQUFFO1FBQ3RDLE9BQU9FLFFBQVFFLEdBQUcsQ0FBQ04sUUFBUUMsTUFBTUUsT0FBT0Q7SUFDNUM7SUFDQSxPQUFPSyxJQUFJUCxNQUFNLEVBQUVDLElBQUksRUFBRTtRQUNyQixPQUFPRyxRQUFRRyxHQUFHLENBQUNQLFFBQVFDO0lBQy9CO0lBQ0EsT0FBT08sZUFBZVIsTUFBTSxFQUFFQyxJQUFJLEVBQUU7UUFDaEMsT0FBT0csUUFBUUksY0FBYyxDQUFDUixRQUFRQztJQUMxQztBQUNKLEVBRUEsbUNBQW1DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vYWRhcHRlcnMvcmVmbGVjdC5qcz8yMDY3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZWZsZWN0QWRhcHRlciB7XG4gICAgc3RhdGljIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmJpbmQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBzZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgc3RhdGljIGhhcyh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgfVxuICAgIHN0YXRpYyBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZmxlY3QuanMubWFwIl0sIm5hbWVzIjpbIlJlZmxlY3RBZGFwdGVyIiwiZ2V0IiwidGFyZ2V0IiwicHJvcCIsInJlY2VpdmVyIiwidmFsdWUiLCJSZWZsZWN0IiwiYmluZCIsInNldCIsImhhcyIsImRlbGV0ZVByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js":
/*!******************************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js ***!
\******************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MutableRequestCookiesAdapter: () => (/* binding */ MutableRequestCookiesAdapter),\n/* harmony export */ ReadonlyRequestCookiesError: () => (/* binding */ ReadonlyRequestCookiesError),\n/* harmony export */ RequestCookiesAdapter: () => (/* binding */ RequestCookiesAdapter),\n/* harmony export */ appendMutableCookies: () => (/* binding */ appendMutableCookies),\n/* harmony export */ getModifiedCookieValues: () => (/* binding */ getModifiedCookieValues)\n/* harmony export */ });\n/* harmony import */ var _cookies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\");\n/* harmony import */ var _reflect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reflect */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/reflect.js\");\n\n\n/**\n * @internal\n */ class ReadonlyRequestCookiesError extends Error {\n constructor(){\n super(\"Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options\");\n }\n static callable() {\n throw new ReadonlyRequestCookiesError();\n }\n}\nclass RequestCookiesAdapter {\n static seal(cookies) {\n return new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case \"clear\":\n case \"delete\":\n case \"set\":\n return ReadonlyRequestCookiesError.callable;\n default:\n return _reflect__WEBPACK_IMPORTED_MODULE_1__.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n}\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for(\"next.mutated.cookies\");\nfunction getModifiedCookieValues(cookies) {\n const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES];\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return [];\n }\n return modified;\n}\nfunction appendMutableCookies(headers, mutableCookies) {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies);\n if (modifiedCookieValues.length === 0) {\n return false;\n }\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new _cookies__WEBPACK_IMPORTED_MODULE_0__.ResponseCookies(headers);\n const returnedCookies = resCookies.getAll();\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues){\n resCookies.set(cookie);\n }\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies){\n resCookies.set(cookie);\n }\n return true;\n}\nclass MutableRequestCookiesAdapter {\n static wrap(cookies, onUpdateCookies) {\n const responseCookies = new _cookies__WEBPACK_IMPORTED_MODULE_0__.ResponseCookies(new Headers());\n for (const cookie of cookies.getAll()){\n responseCookies.set(cookie);\n }\n let modifiedValues = [];\n const modifiedCookies = new Set();\n const updateResponseCookies = ()=>{\n var _fetch___nextGetStaticStore;\n // TODO-APP: change method of getting staticGenerationAsyncStore\n const staticGenerationAsyncStore = fetch.__nextGetStaticStore == null ? void 0 : (_fetch___nextGetStaticStore = fetch.__nextGetStaticStore.call(fetch)) == null ? void 0 : _fetch___nextGetStaticStore.getStore();\n if (staticGenerationAsyncStore) {\n staticGenerationAsyncStore.pathWasRevalidated = true;\n }\n const allCookies = responseCookies.getAll();\n modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name));\n if (onUpdateCookies) {\n const serializedCookies = [];\n for (const cookie of modifiedValues){\n const tempCookies = new _cookies__WEBPACK_IMPORTED_MODULE_0__.ResponseCookies(new Headers());\n tempCookies.set(cookie);\n serializedCookies.push(tempCookies.toString());\n }\n onUpdateCookies(serializedCookies);\n }\n };\n return new Proxy(responseCookies, {\n get (target, prop, receiver) {\n switch(prop){\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues;\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case \"delete\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n target.delete(...args);\n } finally{\n updateResponseCookies();\n }\n };\n case \"set\":\n return function(...args) {\n modifiedCookies.add(typeof args[0] === \"string\" ? args[0] : args[0].name);\n try {\n return target.set(...args);\n } finally{\n updateResponseCookies();\n }\n };\n default:\n return _reflect__WEBPACK_IMPORTED_MODULE_1__.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n }\n} //# sourceMappingURL=request-cookies.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlcXVlc3QtY29va2llcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTZDO0FBQ0Y7QUFDM0M7O0NBRUMsR0FBVSxNQUFNRSxvQ0FBb0NDO0lBQ2pEQyxhQUFhO1FBQ1QsS0FBSyxDQUFDO0lBQ1Y7SUFDQSxPQUFPQyxXQUFXO1FBQ2QsTUFBTSxJQUFJSDtJQUNkO0FBQ0o7QUFDTyxNQUFNSTtJQUNULE9BQU9DLEtBQUtDLE9BQU8sRUFBRTtRQUNqQixPQUFPLElBQUlDLE1BQU1ELFNBQVM7WUFDdEJFLEtBQUtDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRO2dCQUN2QixPQUFPRDtvQkFDSCxLQUFLO29CQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDRCxPQUFPViw0QkFBNEJHLFFBQVE7b0JBQy9DO3dCQUNJLE9BQU9KLG9EQUFjQSxDQUFDUyxHQUFHLENBQUNDLFFBQVFDLE1BQU1DO2dCQUNoRDtZQUNKO1FBQ0o7SUFDSjtBQUNKO0FBQ0EsTUFBTUMsOEJBQThCQyxPQUFPQyxHQUFHLENBQUM7QUFDeEMsU0FBU0Msd0JBQXdCVCxPQUFPO0lBQzNDLE1BQU1VLFdBQVdWLE9BQU8sQ0FBQ00sNEJBQTRCO0lBQ3JELElBQUksQ0FBQ0ksWUFBWSxDQUFDQyxNQUFNQyxPQUFPLENBQUNGLGFBQWFBLFNBQVNHLE1BQU0sS0FBSyxHQUFHO1FBQ2hFLE9BQU8sRUFBRTtJQUNiO0lBQ0EsT0FBT0g7QUFDWDtBQUNPLFNBQVNJLHFCQUFxQkMsT0FBTyxFQUFFQyxjQUFjO0lBQ3hELE1BQU1DLHVCQUF1QlIsd0JBQXdCTztJQUNyRCxJQUFJQyxxQkFBcUJKLE1BQU0sS0FBSyxHQUFHO1FBQ25DLE9BQU87SUFDWDtJQUNBLHVEQUF1RDtJQUN2RCxtREFBbUQ7SUFDbkQsOEJBQThCO0lBQzlCLE1BQU1LLGFBQWEsSUFBSTFCLHFEQUFlQSxDQUFDdUI7SUFDdkMsTUFBTUksa0JBQWtCRCxXQUFXRSxNQUFNO0lBQ3pDLHlDQUF5QztJQUN6QyxLQUFLLE1BQU1DLFVBQVVKLHFCQUFxQjtRQUN0Q0MsV0FBV0ksR0FBRyxDQUFDRDtJQUNuQjtJQUNBLGdEQUFnRDtJQUNoRCxLQUFLLE1BQU1BLFVBQVVGLGdCQUFnQjtRQUNqQ0QsV0FBV0ksR0FBRyxDQUFDRDtJQUNuQjtJQUNBLE9BQU87QUFDWDtBQUNPLE1BQU1FO0lBQ1QsT0FBT0MsS0FBS3hCLE9BQU8sRUFBRXlCLGVBQWUsRUFBRTtRQUNsQyxNQUFNQyxrQkFBa0IsSUFBSWxDLHFEQUFlQSxDQUFDLElBQUltQztRQUNoRCxLQUFLLE1BQU1OLFVBQVVyQixRQUFRb0IsTUFBTSxHQUFHO1lBQ2xDTSxnQkFBZ0JKLEdBQUcsQ0FBQ0Q7UUFDeEI7UUFDQSxJQUFJTyxpQkFBaUIsRUFBRTtRQUN2QixNQUFNQyxrQkFBa0IsSUFBSUM7UUFDNUIsTUFBTUMsd0JBQXdCO1lBQzFCLElBQUlDO1lBQ0osZ0VBQWdFO1lBQ2hFLE1BQU1DLDZCQUE2QkMsTUFBTUMsb0JBQW9CLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQ0gsOEJBQThCRSxNQUFNQyxvQkFBb0IsQ0FBQ0MsSUFBSSxDQUFDRixNQUFLLEtBQU0sT0FBTyxLQUFLLElBQUlGLDRCQUE0QkssUUFBUTtZQUMvTSxJQUFJSiw0QkFBNEI7Z0JBQzVCQSwyQkFBMkJLLGtCQUFrQixHQUFHO1lBQ3BEO1lBQ0EsTUFBTUMsYUFBYWIsZ0JBQWdCTixNQUFNO1lBQ3pDUSxpQkFBaUJXLFdBQVdDLE1BQU0sQ0FBQyxDQUFDQyxJQUFJWixnQkFBZ0JhLEdBQUcsQ0FBQ0QsRUFBRUUsSUFBSTtZQUNsRSxJQUFJbEIsaUJBQWlCO2dCQUNqQixNQUFNbUIsb0JBQW9CLEVBQUU7Z0JBQzVCLEtBQUssTUFBTXZCLFVBQVVPLGVBQWU7b0JBQ2hDLE1BQU1pQixjQUFjLElBQUlyRCxxREFBZUEsQ0FBQyxJQUFJbUM7b0JBQzVDa0IsWUFBWXZCLEdBQUcsQ0FBQ0Q7b0JBQ2hCdUIsa0JBQWtCRSxJQUFJLENBQUNELFlBQVlFLFFBQVE7Z0JBQy9DO2dCQUNBdEIsZ0JBQWdCbUI7WUFDcEI7UUFDSjtRQUNBLE9BQU8sSUFBSTNDLE1BQU15QixpQkFBaUI7WUFDOUJ4QixLQUFLQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUTtnQkFDdkIsT0FBT0Q7b0JBQ0gscURBQXFEO29CQUNyRCxLQUFLRTt3QkFDRCxPQUFPc0I7b0JBQ1gsaUVBQWlFO29CQUNqRSx5QkFBeUI7b0JBQ3pCLEtBQUs7d0JBQ0QsT0FBTyxTQUFTLEdBQUdvQixJQUFJOzRCQUNuQm5CLGdCQUFnQm9CLEdBQUcsQ0FBQyxPQUFPRCxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVdBLElBQUksQ0FBQyxFQUFFLEdBQUdBLElBQUksQ0FBQyxFQUFFLENBQUNMLElBQUk7NEJBQ3hFLElBQUk7Z0NBQ0F4QyxPQUFPK0MsTUFBTSxJQUFJRjs0QkFDckIsU0FBUztnQ0FDTGpCOzRCQUNKO3dCQUNKO29CQUNKLEtBQUs7d0JBQ0QsT0FBTyxTQUFTLEdBQUdpQixJQUFJOzRCQUNuQm5CLGdCQUFnQm9CLEdBQUcsQ0FBQyxPQUFPRCxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVdBLElBQUksQ0FBQyxFQUFFLEdBQUdBLElBQUksQ0FBQyxFQUFFLENBQUNMLElBQUk7NEJBQ3hFLElBQUk7Z0NBQ0EsT0FBT3hDLE9BQU9tQixHQUFHLElBQUkwQjs0QkFDekIsU0FBUztnQ0FDTGpCOzRCQUNKO3dCQUNKO29CQUNKO3dCQUNJLE9BQU90QyxvREFBY0EsQ0FBQ1MsR0FBRyxDQUFDQyxRQUFRQyxNQUFNQztnQkFDaEQ7WUFDSjtRQUNKO0lBQ0o7QUFDSixFQUVBLDJDQUEyQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2FkYXB0ZXJzL3JlcXVlc3QtY29va2llcy5qcz8xNjJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3BvbnNlQ29va2llcyB9IGZyb20gXCIuLi9jb29raWVzXCI7XG5pbXBvcnQgeyBSZWZsZWN0QWRhcHRlciB9IGZyb20gXCIuL3JlZmxlY3RcIjtcbi8qKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGNsYXNzIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcihcIkNvb2tpZXMgY2FuIG9ubHkgYmUgbW9kaWZpZWQgaW4gYSBTZXJ2ZXIgQWN0aW9uIG9yIFJvdXRlIEhhbmRsZXIuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2Nvb2tpZXMjY29va2llc3NldG5hbWUtdmFsdWUtb3B0aW9uc1wiKTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGxhYmxlKCkge1xuICAgICAgICB0aHJvdyBuZXcgUmVhZG9ubHlSZXF1ZXN0Q29va2llc0Vycm9yKCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RDb29raWVzQWRhcHRlciB7XG4gICAgc3RhdGljIHNlYWwoY29va2llcykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvb2tpZXMsIHtcbiAgICAgICAgICAgIGdldCAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgICAgIHN3aXRjaChwcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNsZWFyXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWxldGVcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNldFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvci5jYWxsYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVMgPSBTeW1ib2wuZm9yKFwibmV4dC5tdXRhdGVkLmNvb2tpZXNcIik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kaWZpZWRDb29raWVWYWx1ZXMoY29va2llcykge1xuICAgIGNvbnN0IG1vZGlmaWVkID0gY29va2llc1tTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVNdO1xuICAgIGlmICghbW9kaWZpZWQgfHwgIUFycmF5LmlzQXJyYXkobW9kaWZpZWQpIHx8IG1vZGlmaWVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBtb2RpZmllZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRNdXRhYmxlQ29va2llcyhoZWFkZXJzLCBtdXRhYmxlQ29va2llcykge1xuICAgIGNvbnN0IG1vZGlmaWVkQ29va2llVmFsdWVzID0gZ2V0TW9kaWZpZWRDb29raWVWYWx1ZXMobXV0YWJsZUNvb2tpZXMpO1xuICAgIGlmIChtb2RpZmllZENvb2tpZVZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYSBuZXcgcmVzcG9uc2UgdGhhdCBleHRlbmRzIHRoZSByZXNwb25zZSB3aXRoXG4gICAgLy8gdGhlIG1vZGlmaWVkIGNvb2tpZXMgYXMgZmFsbGJhY2tzLiBgcmVzYCBjb29raWVzXG4gICAgLy8gd2lsbCBzdGlsbCB0YWtlIHByZWNlZGVuY2UuXG4gICAgY29uc3QgcmVzQ29va2llcyA9IG5ldyBSZXNwb25zZUNvb2tpZXMoaGVhZGVycyk7XG4gICAgY29uc3QgcmV0dXJuZWRDb29raWVzID0gcmVzQ29va2llcy5nZXRBbGwoKTtcbiAgICAvLyBTZXQgdGhlIG1vZGlmaWVkIGNvb2tpZXMgYXMgZmFsbGJhY2tzLlxuICAgIGZvciAoY29uc3QgY29va2llIG9mIG1vZGlmaWVkQ29va2llVmFsdWVzKXtcbiAgICAgICAgcmVzQ29va2llcy5zZXQoY29va2llKTtcbiAgICB9XG4gICAgLy8gU2V0IHRoZSBvcmlnaW5hbCBjb29raWVzIGFzIHRoZSBmaW5hbCB2YWx1ZXMuXG4gICAgZm9yIChjb25zdCBjb29raWUgb2YgcmV0dXJuZWRDb29raWVzKXtcbiAgICAgICAgcmVzQ29va2llcy5zZXQoY29va2llKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgY2xhc3MgTXV0YWJsZVJlcXVlc3RDb29raWVzQWRhcHRlciB7XG4gICAgc3RhdGljIHdyYXAoY29va2llcywgb25VcGRhdGVDb29raWVzKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlQ29va2llcyA9IG5ldyBSZXNwb25zZUNvb2tpZXMobmV3IEhlYWRlcnMoKSk7XG4gICAgICAgIGZvciAoY29uc3QgY29va2llIG9mIGNvb2tpZXMuZ2V0QWxsKCkpe1xuICAgICAgICAgICAgcmVzcG9uc2VDb29raWVzLnNldChjb29raWUpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtb2RpZmllZFZhbHVlcyA9IFtdO1xuICAgICAgICBjb25zdCBtb2RpZmllZENvb2tpZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVJlc3BvbnNlQ29va2llcyA9ICgpPT57XG4gICAgICAgICAgICB2YXIgX2ZldGNoX19fbmV4dEdldFN0YXRpY1N0b3JlO1xuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IGNoYW5nZSBtZXRob2Qgb2YgZ2V0dGluZyBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yZVxuICAgICAgICAgICAgY29uc3Qgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmUgPSBmZXRjaC5fX25leHRHZXRTdGF0aWNTdG9yZSA9PSBudWxsID8gdm9pZCAwIDogKF9mZXRjaF9fX25leHRHZXRTdGF0aWNTdG9yZSA9IGZldGNoLl9fbmV4dEdldFN0YXRpY1N0b3JlLmNhbGwoZmV0Y2gpKSA9PSBudWxsID8gdm9pZCAwIDogX2ZldGNoX19fbmV4dEdldFN0YXRpY1N0b3JlLmdldFN0b3JlKCk7XG4gICAgICAgICAgICBpZiAoc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmUpIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yZS5wYXRoV2FzUmV2YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsQ29va2llcyA9IHJlc3BvbnNlQ29va2llcy5nZXRBbGwoKTtcbiAgICAgICAgICAgIG1vZGlmaWVkVmFsdWVzID0gYWxsQ29va2llcy5maWx0ZXIoKGMpPT5tb2RpZmllZENvb2tpZXMuaGFzKGMubmFtZSkpO1xuICAgICAgICAgICAgaWYgKG9uVXBkYXRlQ29va2llcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRDb29raWVzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb29raWUgb2YgbW9kaWZpZWRWYWx1ZXMpe1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wQ29va2llcyA9IG5ldyBSZXNwb25zZUNvb2tpZXMobmV3IEhlYWRlcnMoKSk7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBDb29raWVzLnNldChjb29raWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkQ29va2llcy5wdXNoKHRlbXBDb29raWVzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZUNvb2tpZXMoc2VyaWFsaXplZENvb2tpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHJlc3BvbnNlQ29va2llcywge1xuICAgICAgICAgICAgZ2V0ICh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHByb3Ape1xuICAgICAgICAgICAgICAgICAgICAvLyBBIHNwZWNpYWwgc3ltYm9sIHRvIGdldCB0aGUgbW9kaWZpZWQgY29va2llIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFNZTUJPTF9NT0RJRllfQ09PS0lFX1ZBTFVFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2RpZmllZFZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogVGhyb3cgZXJyb3IgaWYgdHJ5aW5nIHRvIHNldCBhIGNvb2tpZSBhZnRlciB0aGUgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgLy8gaGVhZGVycyBoYXZlIGJlZW4gc2V0LlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQ29va2llcy5hZGQodHlwZW9mIGFyZ3NbMF0gPT09IFwic3RyaW5nXCIgPyBhcmdzWzBdIDogYXJnc1swXS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZGVsZXRlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmVzcG9uc2VDb29raWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNldFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZENvb2tpZXMuYWRkKHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiID8gYXJnc1swXSA6IGFyZ3NbMF0ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5zZXQoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXNwb25zZUNvb2tpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3RBZGFwdGVyLmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC1jb29raWVzLmpzLm1hcCJdLCJuYW1lcyI6WyJSZXNwb25zZUNvb2tpZXMiLCJSZWZsZWN0QWRhcHRlciIsIlJlYWRvbmx5UmVxdWVzdENvb2tpZXNFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJjYWxsYWJsZSIsIlJlcXVlc3RDb29raWVzQWRhcHRlciIsInNlYWwiLCJjb29raWVzIiwiUHJveHkiLCJnZXQiLCJ0YXJnZXQiLCJwcm9wIiwicmVjZWl2ZXIiLCJTWU1CT0xfTU9ESUZZX0NPT0tJRV9WQUxVRVMiLCJTeW1ib2wiLCJmb3IiLCJnZXRNb2RpZmllZENvb2tpZVZhbHVlcyIsIm1vZGlmaWVkIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiYXBwZW5kTXV0YWJsZUNvb2tpZXMiLCJoZWFkZXJzIiwibXV0YWJsZUNvb2tpZXMiLCJtb2RpZmllZENvb2tpZVZhbHVlcyIsInJlc0Nvb2tpZXMiLCJyZXR1cm5lZENvb2tpZXMiLCJnZXRBbGwiLCJjb29raWUiLCJzZXQiLCJNdXRhYmxlUmVxdWVzdENvb2tpZXNBZGFwdGVyIiwid3JhcCIsIm9uVXBkYXRlQ29va2llcyIsInJlc3BvbnNlQ29va2llcyIsIkhlYWRlcnMiLCJtb2RpZmllZFZhbHVlcyIsIm1vZGlmaWVkQ29va2llcyIsIlNldCIsInVwZGF0ZVJlc3BvbnNlQ29va2llcyIsIl9mZXRjaF9fX25leHRHZXRTdGF0aWNTdG9yZSIsInN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JlIiwiZmV0Y2giLCJfX25leHRHZXRTdGF0aWNTdG9yZSIsImNhbGwiLCJnZXRTdG9yZSIsInBhdGhXYXNSZXZhbGlkYXRlZCIsImFsbENvb2tpZXMiLCJmaWx0ZXIiLCJjIiwiaGFzIiwibmFtZSIsInNlcmlhbGl6ZWRDb29raWVzIiwidGVtcENvb2tpZXMiLCJwdXNoIiwidG9TdHJpbmciLCJhcmdzIiwiYWRkIiwiZGVsZXRlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/adapters/request-cookies.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js":
/*!*************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/cookies.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RequestCookies: () => (/* reexport safe */ next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__.RequestCookies),\n/* harmony export */ ResponseCookies: () => (/* reexport safe */ next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__.ResponseCookies)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/@edge-runtime/cookies */ \"(rsc)/./node_modules/next/dist/compiled/@edge-runtime/cookies/index.js\");\n/* harmony import */ var next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_compiled_edge_runtime_cookies__WEBPACK_IMPORTED_MODULE_0__);\n //# sourceMappingURL=cookies.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2Nvb2tpZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEyRixDQUUzRixtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9jb29raWVzLmpzPzhjOTMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUmVxdWVzdENvb2tpZXMsIFJlc3BvbnNlQ29va2llcyB9IGZyb20gXCJuZXh0L2Rpc3QvY29tcGlsZWQvQGVkZ2UtcnVudGltZS9jb29raWVzXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvb2tpZXMuanMubWFwIl0sIm5hbWVzIjpbIlJlcXVlc3RDb29raWVzIiwiUmVzcG9uc2VDb29raWVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NextFetchEvent: () => (/* binding */ NextFetchEvent),\n/* harmony export */ waitUntilSymbol: () => (/* binding */ waitUntilSymbol)\n/* harmony export */ });\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error */ \"(rsc)/./node_modules/next/dist/esm/server/web/error.js\");\n\nconst responseSymbol = Symbol(\"response\");\nconst passThroughSymbol = Symbol(\"passThrough\");\nconst waitUntilSymbol = Symbol(\"waitUntil\");\nclass FetchEvent {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(_request){\n this[waitUntilSymbol] = [];\n this[passThroughSymbol] = false;\n }\n respondWith(response) {\n if (!this[responseSymbol]) {\n this[responseSymbol] = Promise.resolve(response);\n }\n }\n passThroughOnException() {\n this[passThroughSymbol] = true;\n }\n waitUntil(promise) {\n this[waitUntilSymbol].push(promise);\n }\n}\nclass NextFetchEvent extends FetchEvent {\n constructor(params){\n super(params.request);\n this.sourcePage = params.page;\n }\n /**\n * @deprecated The `request` is now the first parameter and the API is now async.\n *\n * Read more: https://nextjs.org/docs/messages/middleware-new-signature\n */ get request() {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__.PageSignatureError({\n page: this.sourcePage\n });\n }\n /**\n * @deprecated Using `respondWith` is no longer needed.\n *\n * Read more: https://nextjs.org/docs/messages/middleware-new-signature\n */ respondWith() {\n throw new _error__WEBPACK_IMPORTED_MODULE_0__.PageSignatureError({\n page: this.sourcePage\n });\n }\n} //# sourceMappingURL=fetch-event.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2ZldGNoLWV2ZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUM5QyxNQUFNQyxpQkFBaUJDLE9BQU87QUFDOUIsTUFBTUMsb0JBQW9CRCxPQUFPO0FBQzFCLE1BQU1FLGtCQUFrQkYsT0FBTyxhQUFhO0FBQ25ELE1BQU1HO0lBQ0YscUVBQXFFO0lBQ3JFQyxZQUFZQyxRQUFRLENBQUM7UUFDakIsSUFBSSxDQUFDSCxnQkFBZ0IsR0FBRyxFQUFFO1FBQzFCLElBQUksQ0FBQ0Qsa0JBQWtCLEdBQUc7SUFDOUI7SUFDQUssWUFBWUMsUUFBUSxFQUFFO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUNSLGVBQWUsRUFBRTtZQUN2QixJQUFJLENBQUNBLGVBQWUsR0FBR1MsUUFBUUMsT0FBTyxDQUFDRjtRQUMzQztJQUNKO0lBQ0FHLHlCQUF5QjtRQUNyQixJQUFJLENBQUNULGtCQUFrQixHQUFHO0lBQzlCO0lBQ0FVLFVBQVVDLE9BQU8sRUFBRTtRQUNmLElBQUksQ0FBQ1YsZ0JBQWdCLENBQUNXLElBQUksQ0FBQ0Q7SUFDL0I7QUFDSjtBQUNPLE1BQU1FLHVCQUF1Qlg7SUFDaENDLFlBQVlXLE1BQU0sQ0FBQztRQUNmLEtBQUssQ0FBQ0EsT0FBT0MsT0FBTztRQUNwQixJQUFJLENBQUNDLFVBQVUsR0FBR0YsT0FBT0csSUFBSTtJQUNqQztJQUNBOzs7O0dBSUQsR0FBRyxJQUFJRixVQUFVO1FBQ1osTUFBTSxJQUFJbEIsc0RBQWtCQSxDQUFDO1lBQ3pCb0IsTUFBTSxJQUFJLENBQUNELFVBQVU7UUFDekI7SUFDSjtJQUNBOzs7O0dBSUQsR0FBR1gsY0FBYztRQUNaLE1BQU0sSUFBSVIsc0RBQWtCQSxDQUFDO1lBQ3pCb0IsTUFBTSxJQUFJLENBQUNELFVBQVU7UUFDekI7SUFDSjtBQUNKLEVBRUEsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vZmV0Y2gtZXZlbnQuanM/OTJiYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdlU2lnbmF0dXJlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JcIjtcbmNvbnN0IHJlc3BvbnNlU3ltYm9sID0gU3ltYm9sKFwicmVzcG9uc2VcIik7XG5jb25zdCBwYXNzVGhyb3VnaFN5bWJvbCA9IFN5bWJvbChcInBhc3NUaHJvdWdoXCIpO1xuZXhwb3J0IGNvbnN0IHdhaXRVbnRpbFN5bWJvbCA9IFN5bWJvbChcIndhaXRVbnRpbFwiKTtcbmNsYXNzIEZldGNoRXZlbnQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKF9yZXF1ZXN0KXtcbiAgICAgICAgdGhpc1t3YWl0VW50aWxTeW1ib2xdID0gW107XG4gICAgICAgIHRoaXNbcGFzc1Rocm91Z2hTeW1ib2xdID0gZmFsc2U7XG4gICAgfVxuICAgIHJlc3BvbmRXaXRoKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICghdGhpc1tyZXNwb25zZVN5bWJvbF0pIHtcbiAgICAgICAgICAgIHRoaXNbcmVzcG9uc2VTeW1ib2xdID0gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXNzVGhyb3VnaE9uRXhjZXB0aW9uKCkge1xuICAgICAgICB0aGlzW3Bhc3NUaHJvdWdoU3ltYm9sXSA9IHRydWU7XG4gICAgfVxuICAgIHdhaXRVbnRpbChwcm9taXNlKSB7XG4gICAgICAgIHRoaXNbd2FpdFVudGlsU3ltYm9sXS5wdXNoKHByb21pc2UpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOZXh0RmV0Y2hFdmVudCBleHRlbmRzIEZldGNoRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHBhcmFtcyl7XG4gICAgICAgIHN1cGVyKHBhcmFtcy5yZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5zb3VyY2VQYWdlID0gcGFyYW1zLnBhZ2U7XG4gICAgfVxuICAgIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgYHJlcXVlc3RgIGlzIG5vdyB0aGUgZmlyc3QgcGFyYW1ldGVyIGFuZCB0aGUgQVBJIGlzIG5vdyBhc3luYy5cbiAgICpcbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLW5ldy1zaWduYXR1cmVcbiAgICovIGdldCByZXF1ZXN0KCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFnZVNpZ25hdHVyZUVycm9yKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuc291cmNlUGFnZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzaW5nIGByZXNwb25kV2l0aGAgaXMgbm8gbG9uZ2VyIG5lZWRlZC5cbiAgICpcbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLW5ldy1zaWduYXR1cmVcbiAgICovIHJlc3BvbmRXaXRoKCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFnZVNpZ25hdHVyZUVycm9yKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuc291cmNlUGFnZVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZldGNoLWV2ZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJQYWdlU2lnbmF0dXJlRXJyb3IiLCJyZXNwb25zZVN5bWJvbCIsIlN5bWJvbCIsInBhc3NUaHJvdWdoU3ltYm9sIiwid2FpdFVudGlsU3ltYm9sIiwiRmV0Y2hFdmVudCIsImNvbnN0cnVjdG9yIiwiX3JlcXVlc3QiLCJyZXNwb25kV2l0aCIsInJlc3BvbnNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXNzVGhyb3VnaE9uRXhjZXB0aW9uIiwid2FpdFVudGlsIiwicHJvbWlzZSIsInB1c2giLCJOZXh0RmV0Y2hFdmVudCIsInBhcmFtcyIsInJlcXVlc3QiLCJzb3VyY2VQYWdlIiwicGFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/fetch-event.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/image-response.js":
/*!********************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/image-response.js ***!
\********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageResponse: () => (/* binding */ ImageResponse)\n/* harmony export */ });\n/**\n * @deprecated ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead.\n * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import\n */ function ImageResponse() {\n throw new Error('ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead');\n} //# sourceMappingURL=image-response.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2ltYWdlLXJlc3BvbnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7O0NBR0MsR0FBVSxTQUFTQTtJQUNoQixNQUFNLElBQUlDLE1BQU07QUFDcEIsRUFFQSwwQ0FBMEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9pbWFnZS1yZXNwb25zZS5qcz8yYzk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgSW1hZ2VSZXNwb25zZSBtb3ZlZCBmcm9tIFwibmV4dC9zZXJ2ZXJcIiB0byBcIm5leHQvb2dcIiBzaW5jZSBOZXh0LmpzIDE0LCBwbGVhc2UgaW1wb3J0IGZyb20gXCJuZXh0L29nXCIgaW5zdGVhZC5cbiAqIE1pZ3JhdGlvbiB3aXRoIGNvZGVtb2RzOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi91cGdyYWRpbmcvY29kZW1vZHMjbmV4dC1vZy1pbXBvcnRcbiAqLyBleHBvcnQgZnVuY3Rpb24gSW1hZ2VSZXNwb25zZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltYWdlUmVzcG9uc2UgbW92ZWQgZnJvbSBcIm5leHQvc2VydmVyXCIgdG8gXCJuZXh0L29nXCIgc2luY2UgTmV4dC5qcyAxNCwgcGxlYXNlIGltcG9ydCBmcm9tIFwibmV4dC9vZ1wiIGluc3RlYWQnKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2UtcmVzcG9uc2UuanMubWFwIl0sIm5hbWVzIjpbIkltYWdlUmVzcG9uc2UiLCJFcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/image-response.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/request.js":
/*!*************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/request.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INTERNALS: () => (/* binding */ INTERNALS),\n/* harmony export */ NextRequest: () => (/* binding */ NextRequest)\n/* harmony export */ });\n/* harmony import */ var _next_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../next-url */ \"(rsc)/./node_modules/next/dist/esm/server/web/next-url.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/esm/server/web/utils.js\");\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error */ \"(rsc)/./node_modules/next/dist/esm/server/web/error.js\");\n/* harmony import */ var _cookies__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\");\n\n\n\n\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__WEBPACK_IMPORTED_MODULE_1__.validateURL)(url);\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new _next_url__WEBPACK_IMPORTED_MODULE_0__.NextURL(url, {\n headers: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new _cookies__WEBPACK_IMPORTED_MODULE_3__.RequestCookies(this.headers),\n geo: init.geo || {},\n ip: init.ip,\n nextUrl,\n url: false ? 0 : nextUrl.toString()\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n geo: this.geo,\n ip: this.ip,\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 geo() {\n return this[INTERNALS].geo;\n }\n get ip() {\n return this[INTERNALS].ip;\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__WEBPACK_IMPORTED_MODULE_2__.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__WEBPACK_IMPORTED_MODULE_2__.RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n} //# sourceMappingURL=request.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3JlcXVlc3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNDO0FBQzRCO0FBQ047QUFDakI7QUFDcEMsTUFBTU0sWUFBWUMsT0FBTyxvQkFBb0I7QUFDN0MsTUFBTUMsb0JBQW9CQztJQUM3QkMsWUFBWUMsS0FBSyxFQUFFQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLE1BQU1DLE1BQU0sT0FBT0YsVUFBVSxZQUFZLFNBQVNBLFFBQVFBLE1BQU1FLEdBQUcsR0FBR0MsT0FBT0g7UUFDN0VULG1EQUFXQSxDQUFDVztRQUNaLElBQUlGLGlCQUFpQkYsU0FBUyxLQUFLLENBQUNFLE9BQU9DO2FBQ3RDLEtBQUssQ0FBQ0MsS0FBS0Q7UUFDaEIsTUFBTUcsVUFBVSxJQUFJZiw4Q0FBT0EsQ0FBQ2EsS0FBSztZQUM3QkcsU0FBU2YsaUVBQXlCQSxDQUFDLElBQUksQ0FBQ2UsT0FBTztZQUMvQ0MsWUFBWUwsS0FBS0ssVUFBVTtRQUMvQjtRQUNBLElBQUksQ0FBQ1gsVUFBVSxHQUFHO1lBQ2RZLFNBQVMsSUFBSWIsb0RBQWNBLENBQUMsSUFBSSxDQUFDVyxPQUFPO1lBQ3hDRyxLQUFLUCxLQUFLTyxHQUFHLElBQUksQ0FBQztZQUNsQkMsSUFBSVIsS0FBS1EsRUFBRTtZQUNYTDtZQUNBRixLQUFLUSxNQUE4QyxHQUFHUixDQUFHQSxHQUFHRSxRQUFRUyxRQUFRO1FBQ2hGO0lBQ0o7SUFDQSxDQUFDakIsT0FBT2tCLEdBQUcsQ0FBQywrQkFBK0IsR0FBRztRQUMxQyxPQUFPO1lBQ0hQLFNBQVMsSUFBSSxDQUFDQSxPQUFPO1lBQ3JCQyxLQUFLLElBQUksQ0FBQ0EsR0FBRztZQUNiQyxJQUFJLElBQUksQ0FBQ0EsRUFBRTtZQUNYTCxTQUFTLElBQUksQ0FBQ0EsT0FBTztZQUNyQkYsS0FBSyxJQUFJLENBQUNBLEdBQUc7WUFDYixrQ0FBa0M7WUFDbENhLFVBQVUsSUFBSSxDQUFDQSxRQUFRO1lBQ3ZCQyxPQUFPLElBQUksQ0FBQ0EsS0FBSztZQUNqQkMsYUFBYSxJQUFJLENBQUNBLFdBQVc7WUFDN0JDLGFBQWEsSUFBSSxDQUFDQSxXQUFXO1lBQzdCYixTQUFTYyxPQUFPQyxXQUFXLENBQUMsSUFBSSxDQUFDZixPQUFPO1lBQ3hDZ0IsV0FBVyxJQUFJLENBQUNBLFNBQVM7WUFDekJDLFdBQVcsSUFBSSxDQUFDQSxTQUFTO1lBQ3pCQyxRQUFRLElBQUksQ0FBQ0EsTUFBTTtZQUNuQkMsTUFBTSxJQUFJLENBQUNBLElBQUk7WUFDZkMsVUFBVSxJQUFJLENBQUNBLFFBQVE7WUFDdkJDLFVBQVUsSUFBSSxDQUFDQSxRQUFRO1lBQ3ZCQyxnQkFBZ0IsSUFBSSxDQUFDQSxjQUFjO1lBQ25DQyxRQUFRLElBQUksQ0FBQ0EsTUFBTTtRQUN2QjtJQUNKO0lBQ0EsSUFBSXJCLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQ1osVUFBVSxDQUFDWSxPQUFPO0lBQ2xDO0lBQ0EsSUFBSUMsTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDYixVQUFVLENBQUNhLEdBQUc7SUFDOUI7SUFDQSxJQUFJQyxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUNkLFVBQVUsQ0FBQ2MsRUFBRTtJQUM3QjtJQUNBLElBQUlMLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQ1QsVUFBVSxDQUFDUyxPQUFPO0lBQ2xDO0lBQ0E7Ozs7R0FJRCxHQUFHLElBQUl5QixPQUFPO1FBQ1QsTUFBTSxJQUFJcEMsb0RBQWdCQTtJQUM5QjtJQUNBOzs7O0dBSUQsR0FBRyxJQUFJcUMsS0FBSztRQUNQLE1BQU0sSUFBSXRDLGtEQUFjQTtJQUM1QjtJQUNBLElBQUlVLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQ1AsVUFBVSxDQUFDTyxHQUFHO0lBQzlCO0FBQ0osRUFFQSxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi9yZXF1ZXN0LmpzPzE1ZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV4dFVSTCB9IGZyb20gXCIuLi9uZXh0LXVybFwiO1xuaW1wb3J0IHsgdG9Ob2RlT3V0Z29pbmdIdHRwSGVhZGVycywgdmFsaWRhdGVVUkwgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFJlbW92ZWRVQUVycm9yLCBSZW1vdmVkUGFnZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yXCI7XG5pbXBvcnQgeyBSZXF1ZXN0Q29va2llcyB9IGZyb20gXCIuL2Nvb2tpZXNcIjtcbmV4cG9ydCBjb25zdCBJTlRFUk5BTFMgPSBTeW1ib2woXCJpbnRlcm5hbCByZXF1ZXN0XCIpO1xuZXhwb3J0IGNsYXNzIE5leHRSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGluaXQgPSB7fSl7XG4gICAgICAgIGNvbnN0IHVybCA9IHR5cGVvZiBpbnB1dCAhPT0gXCJzdHJpbmdcIiAmJiBcInVybFwiIGluIGlucHV0ID8gaW5wdXQudXJsIDogU3RyaW5nKGlucHV0KTtcbiAgICAgICAgdmFsaWRhdGVVUkwodXJsKTtcbiAgICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkgc3VwZXIoaW5wdXQsIGluaXQpO1xuICAgICAgICBlbHNlIHN1cGVyKHVybCwgaW5pdCk7XG4gICAgICAgIGNvbnN0IG5leHRVcmwgPSBuZXcgTmV4dFVSTCh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgIG5leHRDb25maWc6IGluaXQubmV4dENvbmZpZ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpc1tJTlRFUk5BTFNdID0ge1xuICAgICAgICAgICAgY29va2llczogbmV3IFJlcXVlc3RDb29raWVzKHRoaXMuaGVhZGVycyksXG4gICAgICAgICAgICBnZW86IGluaXQuZ2VvIHx8IHt9LFxuICAgICAgICAgICAgaXA6IGluaXQuaXAsXG4gICAgICAgICAgICBuZXh0VXJsLFxuICAgICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5fX05FWFRfTk9fTUlERExFV0FSRV9VUkxfTk9STUFMSVpFID8gdXJsIDogbmV4dFVybC50b1N0cmluZygpXG4gICAgICAgIH07XG4gICAgfVxuICAgIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuY29va2llcyxcbiAgICAgICAgICAgIGdlbzogdGhpcy5nZW8sXG4gICAgICAgICAgICBpcDogdGhpcy5pcCxcbiAgICAgICAgICAgIG5leHRVcmw6IHRoaXMubmV4dFVybCxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAvLyByZXN0IG9mIHByb3BzIGNvbWUgZnJvbSBSZXF1ZXN0XG4gICAgICAgICAgICBib2R5VXNlZDogdGhpcy5ib2R5VXNlZCxcbiAgICAgICAgICAgIGNhY2hlOiB0aGlzLmNhY2hlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHRoaXMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogdGhpcy5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmhlYWRlcnMpLFxuICAgICAgICAgICAgaW50ZWdyaXR5OiB0aGlzLmludGVncml0eSxcbiAgICAgICAgICAgIGtlZXBhbGl2ZTogdGhpcy5rZWVwYWxpdmUsXG4gICAgICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgcmVkaXJlY3Q6IHRoaXMucmVkaXJlY3QsXG4gICAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICAgIHJlZmVycmVyUG9saWN5OiB0aGlzLnJlZmVycmVyUG9saWN5LFxuICAgICAgICAgICAgc2lnbmFsOiB0aGlzLnNpZ25hbFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXQgY29va2llcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5jb29raWVzO1xuICAgIH1cbiAgICBnZXQgZ2VvKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJTlRFUk5BTFNdLmdlbztcbiAgICB9XG4gICAgZ2V0IGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tJTlRFUk5BTFNdLmlwO1xuICAgIH1cbiAgICBnZXQgbmV4dFVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5uZXh0VXJsO1xuICAgIH1cbiAgICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogYHBhZ2VgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGBVUkxQYXR0ZXJuYC5cbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlcXVlc3QtcGFnZVxuICAgKi8gZ2V0IHBhZ2UoKSB7XG4gICAgICAgIHRocm93IG5ldyBSZW1vdmVkUGFnZUVycm9yKCk7XG4gICAgfVxuICAgIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBgdWFgIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3VyIG9mIFxcYHVzZXJBZ2VudFxcYCBmdW5jdGlvbi5cbiAgICogUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXBhcnNlLXVzZXItYWdlbnRcbiAgICovIGdldCB1YSgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlbW92ZWRVQUVycm9yKCk7XG4gICAgfVxuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0lOVEVSTkFMU10udXJsO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC5qcy5tYXAiXSwibmFtZXMiOlsiTmV4dFVSTCIsInRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMiLCJ2YWxpZGF0ZVVSTCIsIlJlbW92ZWRVQUVycm9yIiwiUmVtb3ZlZFBhZ2VFcnJvciIsIlJlcXVlc3RDb29raWVzIiwiSU5URVJOQUxTIiwiU3ltYm9sIiwiTmV4dFJlcXVlc3QiLCJSZXF1ZXN0IiwiY29uc3RydWN0b3IiLCJpbnB1dCIsImluaXQiLCJ1cmwiLCJTdHJpbmciLCJuZXh0VXJsIiwiaGVhZGVycyIsIm5leHRDb25maWciLCJjb29raWVzIiwiZ2VvIiwiaXAiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX05PX01JRERMRVdBUkVfVVJMX05PUk1BTElaRSIsInRvU3RyaW5nIiwiZm9yIiwiYm9keVVzZWQiLCJjYWNoZSIsImNyZWRlbnRpYWxzIiwiZGVzdGluYXRpb24iLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImludGVncml0eSIsImtlZXBhbGl2ZSIsIm1ldGhvZCIsIm1vZGUiLCJyZWRpcmVjdCIsInJlZmVycmVyIiwicmVmZXJyZXJQb2xpY3kiLCJzaWduYWwiLCJwYWdlIiwidWEiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/request.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/response.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/response.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NextResponse: () => (/* binding */ NextResponse)\n/* harmony export */ });\n/* harmony import */ var _next_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../next-url */ \"(rsc)/./node_modules/next/dist/esm/server/web/next-url.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/esm/server/web/utils.js\");\n/* harmony import */ var _cookies__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cookies */ \"(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/cookies.js\");\n\n\n\nconst INTERNALS = Symbol(\"internal response\");\nconst REDIRECTS = new Set([\n 301,\n 302,\n 303,\n 307,\n 308\n]);\nfunction handleMiddlewareField(init, headers) {\n var _init_request;\n if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error(\"request.headers must be an instance of Headers\");\n }\n const keys = [];\n for (const [key, value] of init.request.headers){\n headers.set(\"x-middleware-request-\" + key, value);\n keys.push(key);\n }\n headers.set(\"x-middleware-override-headers\", keys.join(\",\"));\n }\n}\nclass NextResponse extends Response {\n constructor(body, init = {}){\n super(body, init);\n this[INTERNALS] = {\n cookies: new _cookies__WEBPACK_IMPORTED_MODULE_2__.ResponseCookies(this.headers),\n url: init.url ? new _next_url__WEBPACK_IMPORTED_MODULE_0__.NextURL(init.url, {\n headers: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.toNodeOutgoingHttpHeaders)(this.headers),\n nextConfig: init.nextConfig\n }) : undefined\n };\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n static json(body, init) {\n const response = Response.json(body, init);\n return new NextResponse(response.body, response);\n }\n static redirect(url, init) {\n const status = typeof init === \"number\" ? init : (init == null ? void 0 : init.status) ?? 307;\n if (!REDIRECTS.has(status)) {\n throw new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n }\n const initObj = typeof init === \"object\" ? init : {};\n const headers = new Headers(initObj == null ? void 0 : initObj.headers);\n headers.set(\"Location\", (0,_utils__WEBPACK_IMPORTED_MODULE_1__.validateURL)(url));\n return new NextResponse(null, {\n ...initObj,\n headers,\n status\n });\n }\n static rewrite(destination, init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-rewrite\", (0,_utils__WEBPACK_IMPORTED_MODULE_1__.validateURL)(destination));\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n static next(init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set(\"x-middleware-next\", \"1\");\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n} //# sourceMappingURL=response.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3Jlc3BvbnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBc0M7QUFDNEI7QUFDdEI7QUFDNUMsTUFBTUksWUFBWUMsT0FBTztBQUN6QixNQUFNQyxZQUFZLElBQUlDLElBQUk7SUFDdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNIO0FBQ0QsU0FBU0Msc0JBQXNCQyxJQUFJLEVBQUVDLE9BQU87SUFDeEMsSUFBSUM7SUFDSixJQUFJRixRQUFRLE9BQU8sS0FBSyxJQUFJLENBQUNFLGdCQUFnQkYsS0FBS0csT0FBTyxLQUFLLE9BQU8sS0FBSyxJQUFJRCxjQUFjRCxPQUFPLEVBQUU7UUFDakcsSUFBSSxDQUFFRCxDQUFBQSxLQUFLRyxPQUFPLENBQUNGLE9BQU8sWUFBWUcsT0FBTSxHQUFJO1lBQzVDLE1BQU0sSUFBSUMsTUFBTTtRQUNwQjtRQUNBLE1BQU1DLE9BQU8sRUFBRTtRQUNmLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlSLEtBQUtHLE9BQU8sQ0FBQ0YsT0FBTyxDQUFDO1lBQzVDQSxRQUFRUSxHQUFHLENBQUMsMEJBQTBCRixLQUFLQztZQUMzQ0YsS0FBS0ksSUFBSSxDQUFDSDtRQUNkO1FBQ0FOLFFBQVFRLEdBQUcsQ0FBQyxpQ0FBaUNILEtBQUtLLElBQUksQ0FBQztJQUMzRDtBQUNKO0FBQ08sTUFBTUMscUJBQXFCQztJQUM5QkMsWUFBWUMsSUFBSSxFQUFFZixPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQ2UsTUFBTWY7UUFDWixJQUFJLENBQUNMLFVBQVUsR0FBRztZQUNkcUIsU0FBUyxJQUFJdEIscURBQWVBLENBQUMsSUFBSSxDQUFDTyxPQUFPO1lBQ3pDZ0IsS0FBS2pCLEtBQUtpQixHQUFHLEdBQUcsSUFBSTFCLDhDQUFPQSxDQUFDUyxLQUFLaUIsR0FBRyxFQUFFO2dCQUNsQ2hCLFNBQVNULGlFQUF5QkEsQ0FBQyxJQUFJLENBQUNTLE9BQU87Z0JBQy9DaUIsWUFBWWxCLEtBQUtrQixVQUFVO1lBQy9CLEtBQUtDO1FBQ1Q7SUFDSjtJQUNBLENBQUN2QixPQUFPd0IsR0FBRyxDQUFDLCtCQUErQixHQUFHO1FBQzFDLE9BQU87WUFDSEosU0FBUyxJQUFJLENBQUNBLE9BQU87WUFDckJDLEtBQUssSUFBSSxDQUFDQSxHQUFHO1lBQ2IsbUNBQW1DO1lBQ25DRixNQUFNLElBQUksQ0FBQ0EsSUFBSTtZQUNmTSxVQUFVLElBQUksQ0FBQ0EsUUFBUTtZQUN2QnBCLFNBQVNxQixPQUFPQyxXQUFXLENBQUMsSUFBSSxDQUFDdEIsT0FBTztZQUN4Q3VCLElBQUksSUFBSSxDQUFDQSxFQUFFO1lBQ1hDLFlBQVksSUFBSSxDQUFDQSxVQUFVO1lBQzNCQyxRQUFRLElBQUksQ0FBQ0EsTUFBTTtZQUNuQkMsWUFBWSxJQUFJLENBQUNBLFVBQVU7WUFDM0JDLE1BQU0sSUFBSSxDQUFDQSxJQUFJO1FBQ25CO0lBQ0o7SUFDQSxJQUFJWixVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUNyQixVQUFVLENBQUNxQixPQUFPO0lBQ2xDO0lBQ0EsT0FBT2EsS0FBS2QsSUFBSSxFQUFFZixJQUFJLEVBQUU7UUFDcEIsTUFBTThCLFdBQVdqQixTQUFTZ0IsSUFBSSxDQUFDZCxNQUFNZjtRQUNyQyxPQUFPLElBQUlZLGFBQWFrQixTQUFTZixJQUFJLEVBQUVlO0lBQzNDO0lBQ0EsT0FBT0MsU0FBU2QsR0FBRyxFQUFFakIsSUFBSSxFQUFFO1FBQ3ZCLE1BQU0wQixTQUFTLE9BQU8xQixTQUFTLFdBQVdBLE9BQU8sQ0FBQ0EsUUFBUSxPQUFPLEtBQUssSUFBSUEsS0FBSzBCLE1BQU0sS0FBSztRQUMxRixJQUFJLENBQUM3QixVQUFVbUMsR0FBRyxDQUFDTixTQUFTO1lBQ3hCLE1BQU0sSUFBSU8sV0FBVztRQUN6QjtRQUNBLE1BQU1DLFVBQVUsT0FBT2xDLFNBQVMsV0FBV0EsT0FBTyxDQUFDO1FBQ25ELE1BQU1DLFVBQVUsSUFBSUcsUUFBUThCLFdBQVcsT0FBTyxLQUFLLElBQUlBLFFBQVFqQyxPQUFPO1FBQ3RFQSxRQUFRUSxHQUFHLENBQUMsWUFBWWhCLG1EQUFXQSxDQUFDd0I7UUFDcEMsT0FBTyxJQUFJTCxhQUFhLE1BQU07WUFDMUIsR0FBR3NCLE9BQU87WUFDVmpDO1lBQ0F5QjtRQUNKO0lBQ0o7SUFDQSxPQUFPUyxRQUFRQyxXQUFXLEVBQUVwQyxJQUFJLEVBQUU7UUFDOUIsTUFBTUMsVUFBVSxJQUFJRyxRQUFRSixRQUFRLE9BQU8sS0FBSyxJQUFJQSxLQUFLQyxPQUFPO1FBQ2hFQSxRQUFRUSxHQUFHLENBQUMsd0JBQXdCaEIsbURBQVdBLENBQUMyQztRQUNoRHJDLHNCQUFzQkMsTUFBTUM7UUFDNUIsT0FBTyxJQUFJVyxhQUFhLE1BQU07WUFDMUIsR0FBR1osSUFBSTtZQUNQQztRQUNKO0lBQ0o7SUFDQSxPQUFPb0MsS0FBS3JDLElBQUksRUFBRTtRQUNkLE1BQU1DLFVBQVUsSUFBSUcsUUFBUUosUUFBUSxPQUFPLEtBQUssSUFBSUEsS0FBS0MsT0FBTztRQUNoRUEsUUFBUVEsR0FBRyxDQUFDLHFCQUFxQjtRQUNqQ1Ysc0JBQXNCQyxNQUFNQztRQUM1QixPQUFPLElBQUlXLGFBQWEsTUFBTTtZQUMxQixHQUFHWixJQUFJO1lBQ1BDO1FBQ0o7SUFDSjtBQUNKLEVBRUEsb0NBQW9DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vcmVzcG9uc2UuanM/M2RiZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXh0VVJMIH0gZnJvbSBcIi4uL25leHQtdXJsXCI7XG5pbXBvcnQgeyB0b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzLCB2YWxpZGF0ZVVSTCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgUmVzcG9uc2VDb29raWVzIH0gZnJvbSBcIi4vY29va2llc1wiO1xuY29uc3QgSU5URVJOQUxTID0gU3ltYm9sKFwiaW50ZXJuYWwgcmVzcG9uc2VcIik7XG5jb25zdCBSRURJUkVDVFMgPSBuZXcgU2V0KFtcbiAgICAzMDEsXG4gICAgMzAyLFxuICAgIDMwMyxcbiAgICAzMDcsXG4gICAgMzA4XG5dKTtcbmZ1bmN0aW9uIGhhbmRsZU1pZGRsZXdhcmVGaWVsZChpbml0LCBoZWFkZXJzKSB7XG4gICAgdmFyIF9pbml0X3JlcXVlc3Q7XG4gICAgaWYgKGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IChfaW5pdF9yZXF1ZXN0ID0gaW5pdC5yZXF1ZXN0KSA9PSBudWxsID8gdm9pZCAwIDogX2luaXRfcmVxdWVzdC5oZWFkZXJzKSB7XG4gICAgICAgIGlmICghKGluaXQucmVxdWVzdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlcXVlc3QuaGVhZGVycyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhlYWRlcnNcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBpbml0LnJlcXVlc3QuaGVhZGVycyl7XG4gICAgICAgICAgICBoZWFkZXJzLnNldChcIngtbWlkZGxld2FyZS1yZXF1ZXN0LVwiICsga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXJzLnNldChcIngtbWlkZGxld2FyZS1vdmVycmlkZS1oZWFkZXJzXCIsIGtleXMuam9pbihcIixcIikpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOZXh0UmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG4gICAgY29uc3RydWN0b3IoYm9keSwgaW5pdCA9IHt9KXtcbiAgICAgICAgc3VwZXIoYm9keSwgaW5pdCk7XG4gICAgICAgIHRoaXNbSU5URVJOQUxTXSA9IHtcbiAgICAgICAgICAgIGNvb2tpZXM6IG5ldyBSZXNwb25zZUNvb2tpZXModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgIHVybDogaW5pdC51cmwgPyBuZXcgTmV4dFVSTChpbml0LnVybCwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnOiBpbml0Lm5leHRDb25maWdcbiAgICAgICAgICAgIH0pIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIFtTeW1ib2wuZm9yKFwiZWRnZS1ydW50aW1lLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuY29va2llcyxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAvLyByZXN0IG9mIHByb3BzIGNvbWUgZnJvbSBSZXNwb25zZVxuICAgICAgICAgICAgYm9keTogdGhpcy5ib2R5LFxuICAgICAgICAgICAgYm9keVVzZWQ6IHRoaXMuYm9keVVzZWQsXG4gICAgICAgICAgICBoZWFkZXJzOiBPYmplY3QuZnJvbUVudHJpZXModGhpcy5oZWFkZXJzKSxcbiAgICAgICAgICAgIG9rOiB0aGlzLm9rLFxuICAgICAgICAgICAgcmVkaXJlY3RlZDogdGhpcy5yZWRpcmVjdGVkLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXQgY29va2llcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbSU5URVJOQUxTXS5jb29raWVzO1xuICAgIH1cbiAgICBzdGF0aWMganNvbihib2R5LCBpbml0KSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gUmVzcG9uc2UuanNvbihib2R5LCBpbml0KTtcbiAgICAgICAgcmV0dXJuIG5ldyBOZXh0UmVzcG9uc2UocmVzcG9uc2UuYm9keSwgcmVzcG9uc2UpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVkaXJlY3QodXJsLCBpbml0KSB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHR5cGVvZiBpbml0ID09PSBcIm51bWJlclwiID8gaW5pdCA6IChpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0LnN0YXR1cykgPz8gMzA3O1xuICAgICAgICBpZiAoIVJFRElSRUNUUy5oYXMoc3RhdHVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIFwicmVkaXJlY3RcIiBvbiBcInJlc3BvbnNlXCI6IEludmFsaWQgc3RhdHVzIGNvZGUnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbml0T2JqID0gdHlwZW9mIGluaXQgPT09IFwib2JqZWN0XCIgPyBpbml0IDoge307XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0T2JqID09IG51bGwgPyB2b2lkIDAgOiBpbml0T2JqLmhlYWRlcnMpO1xuICAgICAgICBoZWFkZXJzLnNldChcIkxvY2F0aW9uXCIsIHZhbGlkYXRlVVJMKHVybCkpO1xuICAgICAgICByZXR1cm4gbmV3IE5leHRSZXNwb25zZShudWxsLCB7XG4gICAgICAgICAgICAuLi5pbml0T2JqLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIHJld3JpdGUoZGVzdGluYXRpb24sIGluaXQpIHtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IGluaXQuaGVhZGVycyk7XG4gICAgICAgIGhlYWRlcnMuc2V0KFwieC1taWRkbGV3YXJlLXJld3JpdGVcIiwgdmFsaWRhdGVVUkwoZGVzdGluYXRpb24pKTtcbiAgICAgICAgaGFuZGxlTWlkZGxld2FyZUZpZWxkKGluaXQsIGhlYWRlcnMpO1xuICAgICAgICByZXR1cm4gbmV3IE5leHRSZXNwb25zZShudWxsLCB7XG4gICAgICAgICAgICAuLi5pbml0LFxuICAgICAgICAgICAgaGVhZGVyc1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIG5leHQoaW5pdCkge1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5pdCA9PSBudWxsID8gdm9pZCAwIDogaW5pdC5oZWFkZXJzKTtcbiAgICAgICAgaGVhZGVycy5zZXQoXCJ4LW1pZGRsZXdhcmUtbmV4dFwiLCBcIjFcIik7XG4gICAgICAgIGhhbmRsZU1pZGRsZXdhcmVGaWVsZChpbml0LCBoZWFkZXJzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOZXh0UmVzcG9uc2UobnVsbCwge1xuICAgICAgICAgICAgLi4uaW5pdCxcbiAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNwb25zZS5qcy5tYXAiXSwibmFtZXMiOlsiTmV4dFVSTCIsInRvTm9kZU91dGdvaW5nSHR0cEhlYWRlcnMiLCJ2YWxpZGF0ZVVSTCIsIlJlc3BvbnNlQ29va2llcyIsIklOVEVSTkFMUyIsIlN5bWJvbCIsIlJFRElSRUNUUyIsIlNldCIsImhhbmRsZU1pZGRsZXdhcmVGaWVsZCIsImluaXQiLCJoZWFkZXJzIiwiX2luaXRfcmVxdWVzdCIsInJlcXVlc3QiLCJIZWFkZXJzIiwiRXJyb3IiLCJrZXlzIiwia2V5IiwidmFsdWUiLCJzZXQiLCJwdXNoIiwiam9pbiIsIk5leHRSZXNwb25zZSIsIlJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJib2R5IiwiY29va2llcyIsInVybCIsIm5leHRDb25maWciLCJ1bmRlZmluZWQiLCJmb3IiLCJib2R5VXNlZCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwib2siLCJyZWRpcmVjdGVkIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInR5cGUiLCJqc29uIiwicmVzcG9uc2UiLCJyZWRpcmVjdCIsImhhcyIsIlJhbmdlRXJyb3IiLCJpbml0T2JqIiwicmV3cml0ZSIsImRlc3RpbmF0aW9uIiwibmV4dCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/response.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ URLPattern: () => (/* binding */ GlobalURLPattern)\n/* harmony export */ });\nconst GlobalURLPattern = typeof URLPattern === \"undefined\" ? undefined : URLPattern;\n //# sourceMappingURL=url-pattern.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3VybC1wYXR0ZXJuLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSxtQkFDTixPQUFPQyxlQUFlLGNBQWNDLFlBQVlEO0FBQ04sQ0FFMUMsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vdXJsLXBhdHRlcm4uanM/NzIzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBHbG9iYWxVUkxQYXR0ZXJuID0gLy8gQHRzLWV4cGVjdC1lcnJvcjogVVJMUGF0dGVybiBpcyBub3QgYXZhaWxhYmxlIGluIE5vZGUuanNcbnR5cGVvZiBVUkxQYXR0ZXJuID09PSBcInVuZGVmaW5lZFwiID8gdW5kZWZpbmVkIDogVVJMUGF0dGVybjtcbmV4cG9ydCB7IEdsb2JhbFVSTFBhdHRlcm4gYXMgVVJMUGF0dGVybiB9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11cmwtcGF0dGVybi5qcy5tYXAiXSwibmFtZXMiOlsiR2xvYmFsVVJMUGF0dGVybiIsIlVSTFBhdHRlcm4iLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/url-pattern.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js":
/*!****************************************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isBot: () => (/* binding */ isBot),\n/* harmony export */ userAgent: () => (/* binding */ userAgent),\n/* harmony export */ userAgentFromString: () => (/* binding */ userAgentFromString)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_ua_parser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/ua-parser-js */ \"(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js\");\n/* harmony import */ var next_dist_compiled_ua_parser_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_compiled_ua_parser_js__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isBot(input) {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input);\n}\nfunction userAgentFromString(input) {\n return {\n ...next_dist_compiled_ua_parser_js__WEBPACK_IMPORTED_MODULE_0___default()(input),\n isBot: input === undefined ? false : isBot(input)\n };\n}\nfunction userAgent({ headers }) {\n return userAgentFromString(headers.get(\"user-agent\") || undefined);\n} //# sourceMappingURL=user-agent.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3VzZXItYWdlbnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0Q7QUFDL0MsU0FBU0MsTUFBTUMsS0FBSztJQUN2QixPQUFPLDBXQUEwV0MsSUFBSSxDQUFDRDtBQUMxWDtBQUNPLFNBQVNFLG9CQUFvQkYsS0FBSztJQUNyQyxPQUFPO1FBQ0gsR0FBR0Ysc0VBQU9BLENBQUNFLE1BQU07UUFDakJELE9BQU9DLFVBQVVHLFlBQVksUUFBUUosTUFBTUM7SUFDL0M7QUFDSjtBQUNPLFNBQVNJLFVBQVUsRUFBRUMsT0FBTyxFQUFFO0lBQ2pDLE9BQU9ILG9CQUFvQkcsUUFBUUMsR0FBRyxDQUFDLGlCQUFpQkg7QUFDNUQsRUFFQSxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi91c2VyLWFnZW50LmpzP2RiZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNldWEgZnJvbSBcIm5leHQvZGlzdC9jb21waWxlZC91YS1wYXJzZXItanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc0JvdChpbnB1dCkge1xuICAgIHJldHVybiAvR29vZ2xlYm90fE1lZGlhcGFydG5lcnMtR29vZ2xlfEFkc0JvdC1Hb29nbGV8Z29vZ2xld2VibGlnaHR8U3RvcmVib3QtR29vZ2xlfEdvb2dsZS1QYWdlUmVuZGVyZXJ8R29vZ2xlLUluc3BlY3Rpb25Ub29sfEJpbmdib3R8QmluZ1ByZXZpZXd8U2x1cnB8RHVja0R1Y2tCb3R8YmFpZHVzcGlkZXJ8eWFuZGV4fHNvZ291fExpbmtlZEluQm90fGJpdGx5Ym90fHR1bWJscnx2a1NoYXJlfHF1b3JhIGxpbmsgcHJldmlld3xmYWNlYm9va2V4dGVybmFsaGl0fGZhY2Vib29rY2F0YWxvZ3xUd2l0dGVyYm90fGFwcGxlYm90fHJlZGRpdGJvdHxTbGFja2JvdHxEaXNjb3JkYm90fFdoYXRzQXBwfFNreXBlVXJpUHJldmlld3xpYV9hcmNoaXZlci9pLnRlc3QoaW5wdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJBZ2VudEZyb21TdHJpbmcoaW5wdXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5wYXJzZXVhKGlucHV0KSxcbiAgICAgICAgaXNCb3Q6IGlucHV0ID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGlzQm90KGlucHV0KVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlckFnZW50KHsgaGVhZGVycyB9KSB7XG4gICAgcmV0dXJuIHVzZXJBZ2VudEZyb21TdHJpbmcoaGVhZGVycy5nZXQoXCJ1c2VyLWFnZW50XCIpIHx8IHVuZGVmaW5lZCk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZXItYWdlbnQuanMubWFwIl0sIm5hbWVzIjpbInBhcnNldWEiLCJpc0JvdCIsImlucHV0IiwidGVzdCIsInVzZXJBZ2VudEZyb21TdHJpbmciLCJ1bmRlZmluZWQiLCJ1c2VyQWdlbnQiLCJoZWFkZXJzIiwiZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/spec-extension/user-agent.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/server/web/utils.js":
/*!********************************************************!*\
!*** ./node_modules/next/dist/esm/server/web/utils.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fromNodeOutgoingHttpHeaders: () => (/* binding */ fromNodeOutgoingHttpHeaders),\n/* harmony export */ splitCookiesString: () => (/* binding */ splitCookiesString),\n/* harmony export */ toNodeOutgoingHttpHeaders: () => (/* binding */ toNodeOutgoingHttpHeaders),\n/* harmony export */ validateURL: () => (/* binding */ validateURL)\n/* harmony export */ });\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */ function 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}\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/ function 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}\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */ function 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}\n/**\n * Validate the correctness of a user-provided URL.\n */ function validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n });\n }\n} //# sourceMappingURL=utils.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Q0FRQyxHQUFVLFNBQVNBLDRCQUE0QkMsV0FBVztJQUN2RCxNQUFNQyxVQUFVLElBQUlDO0lBQ3BCLEtBQUssSUFBSSxDQUFDQyxLQUFLQyxNQUFNLElBQUlDLE9BQU9DLE9BQU8sQ0FBQ04sYUFBYTtRQUNqRCxNQUFNTyxTQUFTQyxNQUFNQyxPQUFPLENBQUNMLFNBQVNBLFFBQVE7WUFDMUNBO1NBQ0g7UUFDRCxLQUFLLElBQUlNLEtBQUtILE9BQU87WUFDakIsSUFBSSxPQUFPRyxNQUFNLGFBQWE7WUFDOUIsSUFBSSxPQUFPQSxNQUFNLFVBQVU7Z0JBQ3ZCQSxJQUFJQSxFQUFFQyxRQUFRO1lBQ2xCO1lBQ0FWLFFBQVFXLE1BQU0sQ0FBQ1QsS0FBS087UUFDeEI7SUFDSjtJQUNBLE9BQU9UO0FBQ1g7QUFDQTs7Ozs7Ozs7O0FBU0EsR0FBVSxTQUFTWSxtQkFBbUJDLGFBQWE7SUFDL0MsSUFBSUMsaUJBQWlCLEVBQUU7SUFDdkIsSUFBSUMsTUFBTTtJQUNWLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlDO0lBQ0osSUFBSUM7SUFDSixTQUFTQztRQUNMLE1BQU1OLE1BQU1GLGNBQWNTLE1BQU0sSUFBSSxLQUFLQyxJQUFJLENBQUNWLGNBQWNXLE1BQU0sQ0FBQ1QsTUFBTTtZQUNyRUEsT0FBTztRQUNYO1FBQ0EsT0FBT0EsTUFBTUYsY0FBY1MsTUFBTTtJQUNyQztJQUNBLFNBQVNHO1FBQ0xSLEtBQUtKLGNBQWNXLE1BQU0sQ0FBQ1Q7UUFDMUIsT0FBT0UsT0FBTyxPQUFPQSxPQUFPLE9BQU9BLE9BQU87SUFDOUM7SUFDQSxNQUFNRixNQUFNRixjQUFjUyxNQUFNLENBQUM7UUFDN0JOLFFBQVFEO1FBQ1JLLHdCQUF3QjtRQUN4QixNQUFNQyxpQkFBaUI7WUFDbkJKLEtBQUtKLGNBQWNXLE1BQU0sQ0FBQ1Q7WUFDMUIsSUFBSUUsT0FBTyxLQUFLO2dCQUNaLHVFQUF1RTtnQkFDdkVDLFlBQVlIO2dCQUNaQSxPQUFPO2dCQUNQTTtnQkFDQUYsWUFBWUo7Z0JBQ1osTUFBTUEsTUFBTUYsY0FBY1MsTUFBTSxJQUFJRyxpQkFBaUI7b0JBQ2pEVixPQUFPO2dCQUNYO2dCQUNBLDhCQUE4QjtnQkFDOUIsSUFBSUEsTUFBTUYsY0FBY1MsTUFBTSxJQUFJVCxjQUFjVyxNQUFNLENBQUNULFNBQVMsS0FBSztvQkFDakUsNkJBQTZCO29CQUM3Qkssd0JBQXdCO29CQUN4QiwyREFBMkQ7b0JBQzNETCxNQUFNSTtvQkFDTkwsZUFBZVksSUFBSSxDQUFDYixjQUFjYyxTQUFTLENBQUNYLE9BQU9FO29CQUNuREYsUUFBUUQ7Z0JBQ1osT0FBTztvQkFDSCx1Q0FBdUM7b0JBQ3ZDLDhCQUE4QjtvQkFDOUJBLE1BQU1HLFlBQVk7Z0JBQ3RCO1lBQ0osT0FBTztnQkFDSEgsT0FBTztZQUNYO1FBQ0o7UUFDQSxJQUFJLENBQUNLLHlCQUF5QkwsT0FBT0YsY0FBY1MsTUFBTSxFQUFFO1lBQ3ZEUixlQUFlWSxJQUFJLENBQUNiLGNBQWNjLFNBQVMsQ0FBQ1gsT0FBT0gsY0FBY1MsTUFBTTtRQUMzRTtJQUNKO0lBQ0EsT0FBT1I7QUFDWDtBQUNBOzs7Ozs7Q0FNQyxHQUFVLFNBQVNjLDBCQUEwQjVCLE9BQU87SUFDakQsTUFBTUQsY0FBYyxDQUFDO0lBQ3JCLE1BQU04QixVQUFVLEVBQUU7SUFDbEIsSUFBSTdCLFNBQVM7UUFDVCxLQUFLLE1BQU0sQ0FBQ0UsS0FBS0MsTUFBTSxJQUFJSCxRQUFRSyxPQUFPLEdBQUc7WUFDekMsSUFBSUgsSUFBSTRCLFdBQVcsT0FBTyxjQUFjO2dCQUNwQyxtRUFBbUU7Z0JBQ25FLGtFQUFrRTtnQkFDbEUsZ0NBQWdDO2dCQUNoQ0QsUUFBUUgsSUFBSSxJQUFJZCxtQkFBbUJUO2dCQUNuQ0osV0FBVyxDQUFDRyxJQUFJLEdBQUcyQixRQUFRUCxNQUFNLEtBQUssSUFBSU8sT0FBTyxDQUFDLEVBQUUsR0FBR0E7WUFDM0QsT0FBTztnQkFDSDlCLFdBQVcsQ0FBQ0csSUFBSSxHQUFHQztZQUN2QjtRQUNKO0lBQ0o7SUFDQSxPQUFPSjtBQUNYO0FBQ0E7O0NBRUMsR0FBVSxTQUFTZ0MsWUFBWUMsR0FBRztJQUMvQixJQUFJO1FBQ0EsT0FBT0MsT0FBTyxJQUFJQyxJQUFJRCxPQUFPRDtJQUNqQyxFQUFFLE9BQU9HLE9BQU87UUFDWixNQUFNLElBQUlDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRUgsT0FBT0QsS0FBSyw0RkFBNEYsQ0FBQyxFQUFFO1lBQzVJSyxPQUFPRjtRQUNYO0lBQ0o7QUFDSixFQUVBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zZXJ2ZXIvd2ViL3V0aWxzLmpzP2YyMTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZXJ0cyBhIE5vZGUuanMgSW5jb21pbmdIdHRwSGVhZGVycyBvYmplY3QgdG8gYSBIZWFkZXJzIG9iamVjdC4gQW55XG4gKiBoZWFkZXJzIHdpdGggbXVsdGlwbGUgdmFsdWVzIHdpbGwgYmUgam9pbmVkIHdpdGggYSBjb21tYSBhbmQgc3BhY2UuIEFueVxuICogaGVhZGVycyB0aGF0IGhhdmUgYW4gdW5kZWZpbmVkIHZhbHVlIHdpbGwgYmUgaWdub3JlZCBhbmQgb3RoZXJzIHdpbGwgYmVcbiAqIGNvZXJjZWQgdG8gc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gbm9kZUhlYWRlcnMgdGhlIGhlYWRlcnMgb2JqZWN0IHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaGVhZGVycyBvYmplY3RcbiAqLyBleHBvcnQgZnVuY3Rpb24gZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKG5vZGVIZWFkZXJzKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGVIZWFkZXJzKSl7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICBdO1xuICAgICAgICBmb3IgKGxldCB2IG9mIHZhbHVlcyl7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwidW5kZWZpbmVkXCIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgdiA9IHYudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG59XG4vKlxuICBTZXQtQ29va2llIGhlYWRlciBmaWVsZC12YWx1ZXMgYXJlIHNvbWV0aW1lcyBjb21tYSBqb2luZWQgaW4gb25lIHN0cmluZy4gVGhpcyBzcGxpdHMgdGhlbSB3aXRob3V0IGNob2tpbmcgb24gY29tbWFzXG4gIHRoYXQgYXJlIHdpdGhpbiBhIHNpbmdsZSBzZXQtY29va2llIGZpZWxkLXZhbHVlLCBzdWNoIGFzIGluIHRoZSBFeHBpcmVzIHBvcnRpb24uXG4gIFRoaXMgaXMgdW5jb21tb24sIGJ1dCBleHBsaWNpdGx5IGFsbG93ZWQgLSBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI2MTYjc2VjdGlvbi00LjJcbiAgTm9kZS5qcyBkb2VzIHRoaXMgZm9yIGV2ZXJ5IGhlYWRlciAqZXhjZXB0KiBzZXQtY29va2llIC0gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2Q1ZTM2M2I3N2ViYWYxY2FmNjdjZDc1MjgyMjRiNjUxYzg2ODE1YzEvbGliL19odHRwX2luY29taW5nLmpzI0wxMjhcbiAgUmVhY3QgTmF0aXZlJ3MgZmV0Y2ggZG9lcyB0aGlzIGZvciAqZXZlcnkqIGhlYWRlciwgaW5jbHVkaW5nIHNldC1jb29raWUuXG4gIFxuICBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9qMm9iamMvY29tbWl0LzE2ODIwZmRiYzhmNzZjYTBjMzM0NzI4MTBjZTBjYjAzZDIwZWZlMjVcbiAgQ3JlZGl0cyB0bzogaHR0cHM6Ly9naXRodWIuY29tL3RvbWJhbGwgZm9yIG9yaWdpbmFsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vY2hydXNhcnQgZm9yIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb25cbiovIGV4cG9ydCBmdW5jdGlvbiBzcGxpdENvb2tpZXNTdHJpbmcoY29va2llc1N0cmluZykge1xuICAgIHZhciBjb29raWVzU3RyaW5ncyA9IFtdO1xuICAgIHZhciBwb3MgPSAwO1xuICAgIHZhciBzdGFydDtcbiAgICB2YXIgY2g7XG4gICAgdmFyIGxhc3RDb21tYTtcbiAgICB2YXIgbmV4dFN0YXJ0O1xuICAgIHZhciBjb29raWVzU2VwYXJhdG9yRm91bmQ7XG4gICAgZnVuY3Rpb24gc2tpcFdoaXRlc3BhY2UoKSB7XG4gICAgICAgIHdoaWxlKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoICYmIC9cXHMvLnRlc3QoY29va2llc1N0cmluZy5jaGFyQXQocG9zKSkpe1xuICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoO1xuICAgIH1cbiAgICBmdW5jdGlvbiBub3RTcGVjaWFsQ2hhcigpIHtcbiAgICAgICAgY2ggPSBjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpO1xuICAgICAgICByZXR1cm4gY2ggIT09IFwiPVwiICYmIGNoICE9PSBcIjtcIiAmJiBjaCAhPT0gXCIsXCI7XG4gICAgfVxuICAgIHdoaWxlKHBvcyA8IGNvb2tpZXNTdHJpbmcubGVuZ3RoKXtcbiAgICAgICAgc3RhcnQgPSBwb3M7XG4gICAgICAgIGNvb2tpZXNTZXBhcmF0b3JGb3VuZCA9IGZhbHNlO1xuICAgICAgICB3aGlsZShza2lwV2hpdGVzcGFjZSgpKXtcbiAgICAgICAgICAgIGNoID0gY29va2llc1N0cmluZy5jaGFyQXQocG9zKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gXCIsXCIpIHtcbiAgICAgICAgICAgICAgICAvLyAnLCcgaXMgYSBjb29raWUgc2VwYXJhdG9yIGlmIHdlIGhhdmUgbGF0ZXIgZmlyc3QgJz0nLCBub3QgJzsnIG9yICcsJ1xuICAgICAgICAgICAgICAgIGxhc3RDb21tYSA9IHBvcztcbiAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgICAgICBza2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgICAgIG5leHRTdGFydCA9IHBvcztcbiAgICAgICAgICAgICAgICB3aGlsZShwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiBub3RTcGVjaWFsQ2hhcigpKXtcbiAgICAgICAgICAgICAgICAgICAgcG9zICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRseSBzcGVjaWFsIGNoYXJhY3RlclxuICAgICAgICAgICAgICAgIGlmIChwb3MgPCBjb29raWVzU3RyaW5nLmxlbmd0aCAmJiBjb29raWVzU3RyaW5nLmNoYXJBdChwb3MpID09PSBcIj1cIikge1xuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBmb3VuZCBjb29raWVzIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICBjb29raWVzU2VwYXJhdG9yRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBwb3MgaXMgaW5zaWRlIHRoZSBuZXh0IGNvb2tpZSwgc28gYmFjayB1cCBhbmQgcmV0dXJuIGl0LlxuICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXh0U3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGxhc3RDb21tYSkpO1xuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHBvcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiBwYXJhbSAnLCcgb3IgcGFyYW0gc2VwYXJhdG9yICc7JyxcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgY29udGludWUgZnJvbSB0aGF0IGNvbW1hXG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IGxhc3RDb21tYSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3MgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvb2tpZXNTZXBhcmF0b3JGb3VuZCB8fCBwb3MgPj0gY29va2llc1N0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvb2tpZXNTdHJpbmdzLnB1c2goY29va2llc1N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGNvb2tpZXNTdHJpbmcubGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvb2tpZXNTdHJpbmdzO1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhIEhlYWRlcnMgb2JqZWN0IHRvIGEgTm9kZS5qcyBPdXRnb2luZ0h0dHBIZWFkZXJzIG9iamVjdC4gVGhpcyBpc1xuICogcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgc2V0LWNvb2tpZSBoZWFkZXIsIHdoaWNoIG1heSBoYXZlIG11bHRpcGxlIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gaGVhZGVycyB0aGUgaGVhZGVycyBvYmplY3QgdG8gY29udmVydFxuICogQHJldHVybnMgdGhlIGNvbnZlcnRlZCBoZWFkZXJzIG9iamVjdFxuICovIGV4cG9ydCBmdW5jdGlvbiB0b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICBjb25zdCBub2RlSGVhZGVycyA9IHt9O1xuICAgIGNvbnN0IGNvb2tpZXMgPSBbXTtcbiAgICBpZiAoaGVhZGVycykge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoZWFkZXJzLmVudHJpZXMoKSl7XG4gICAgICAgICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkgPT09IFwic2V0LWNvb2tpZVwiKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgZ290dGVuIGEgY29tbWEgam9pbmVkIHN0cmluZyBvZiBjb29raWVzLCBvciBtdWx0aXBsZVxuICAgICAgICAgICAgICAgIC8vIHNldC1jb29raWUgaGVhZGVycy4gV2UgbmVlZCB0byBtZXJnZSB0aGVtIGludG8gb25lIGhlYWRlciBhcnJheVxuICAgICAgICAgICAgICAgIC8vIHRvIHJlcHJlc2VudCBhbGwgdGhlIGNvb2tpZXMuXG4gICAgICAgICAgICAgICAgY29va2llcy5wdXNoKC4uLnNwbGl0Q29va2llc1N0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIG5vZGVIZWFkZXJzW2tleV0gPSBjb29raWVzLmxlbmd0aCA9PT0gMSA/IGNvb2tpZXNbMF0gOiBjb29raWVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlSGVhZGVyc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVIZWFkZXJzO1xufVxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgY29ycmVjdG5lc3Mgb2YgYSB1c2VyLXByb3ZpZGVkIFVSTC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVVUkwodXJsKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhuZXcgVVJMKFN0cmluZyh1cmwpKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVUkwgaXMgbWFsZm9ybWVkIFwiJHtTdHJpbmcodXJsKX1cIi4gUGxlYXNlIHVzZSBvbmx5IGFic29sdXRlIFVSTHMgLSBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9taWRkbGV3YXJlLXJlbGF0aXZlLXVybHNgLCB7XG4gICAgICAgICAgICBjYXVzZTogZXJyb3JcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiXSwibmFtZXMiOlsiZnJvbU5vZGVPdXRnb2luZ0h0dHBIZWFkZXJzIiwibm9kZUhlYWRlcnMiLCJoZWFkZXJzIiwiSGVhZGVycyIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsInZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJ0b1N0cmluZyIsImFwcGVuZCIsInNwbGl0Q29va2llc1N0cmluZyIsImNvb2tpZXNTdHJpbmciLCJjb29raWVzU3RyaW5ncyIsInBvcyIsInN0YXJ0IiwiY2giLCJsYXN0Q29tbWEiLCJuZXh0U3RhcnQiLCJjb29raWVzU2VwYXJhdG9yRm91bmQiLCJza2lwV2hpdGVzcGFjZSIsImxlbmd0aCIsInRlc3QiLCJjaGFyQXQiLCJub3RTcGVjaWFsQ2hhciIsInB1c2giLCJzdWJzdHJpbmciLCJ0b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzIiwiY29va2llcyIsInRvTG93ZXJDYXNlIiwidmFsaWRhdGVVUkwiLCJ1cmwiLCJTdHJpbmciLCJVUkwiLCJlcnJvciIsIkVycm9yIiwiY2F1c2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/server/web/utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/app-router-context.shared-runtime.js":
/*!************************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/app-router-context.shared-runtime.js ***!
\************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ AppRouterContext: () => (/* binding */ e0),
/* harmony export */ GlobalLayoutRouterContext: () => (/* binding */ e2),
/* harmony export */ LayoutRouterContext: () => (/* binding */ e1),
/* harmony export */ MissingSlotContext: () => (/* binding */ e4),
/* harmony export */ TemplateContext: () => (/* binding */ e3)
/* harmony export */ });
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/esm/build/webpack/loaders/next-flight-loader/module-proxy.js");
const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js`)
// Accessing the __esModule property and exporting $$typeof are required here.
// The __esModule getter forces the proxy target to create the default export
// and the $$typeof value is for rendering logic to determine if the module
// is a client boundary.
const { __esModule, $$typeof } = proxy;
const __default__ = proxy.default;
const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js#AppRouterContext`);
const e1 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js#LayoutRouterContext`);
const e2 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js#GlobalLayoutRouterContext`);
const e3 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js#TemplateContext`);
const e4 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\NextChatCD\node_modules\next\dist\esm\shared\lib\app-router-context.shared-runtime.js#MissingSlotContext`);
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/constants.js":
/*!************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/constants.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_BUILD_MANIFEST: () => (/* binding */ APP_BUILD_MANIFEST),\n/* harmony export */ APP_CLIENT_INTERNALS: () => (/* binding */ APP_CLIENT_INTERNALS),\n/* harmony export */ APP_PATHS_MANIFEST: () => (/* binding */ APP_PATHS_MANIFEST),\n/* harmony export */ APP_PATH_ROUTES_MANIFEST: () => (/* binding */ APP_PATH_ROUTES_MANIFEST),\n/* harmony export */ BARREL_OPTIMIZATION_PREFIX: () => (/* binding */ BARREL_OPTIMIZATION_PREFIX),\n/* harmony export */ BLOCKED_PAGES: () => (/* binding */ BLOCKED_PAGES),\n/* harmony export */ BUILD_ID_FILE: () => (/* binding */ BUILD_ID_FILE),\n/* harmony export */ BUILD_MANIFEST: () => (/* binding */ BUILD_MANIFEST),\n/* harmony export */ CLIENT_PUBLIC_FILES_PATH: () => (/* binding */ CLIENT_PUBLIC_FILES_PATH),\n/* harmony export */ CLIENT_REFERENCE_MANIFEST: () => (/* binding */ CLIENT_REFERENCE_MANIFEST),\n/* harmony export */ CLIENT_STATIC_FILES_PATH: () => (/* binding */ CLIENT_STATIC_FILES_PATH),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_AMP: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_AMP),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_MAIN: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_MAIN),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_MAIN_APP: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_MAIN_APP),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_POLYFILLS: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_POLYFILLS),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH),\n/* harmony export */ CLIENT_STATIC_FILES_RUNTIME_WEBPACK: () => (/* binding */ CLIENT_STATIC_FILES_RUNTIME_WEBPACK),\n/* harmony export */ COMPILER_INDEXES: () => (/* binding */ COMPILER_INDEXES),\n/* harmony export */ COMPILER_NAMES: () => (/* binding */ COMPILER_NAMES),\n/* harmony export */ CONFIG_FILES: () => (/* binding */ CONFIG_FILES),\n/* harmony export */ DEFAULT_SANS_SERIF_FONT: () => (/* binding */ DEFAULT_SANS_SERIF_FONT),\n/* harmony export */ DEFAULT_SERIF_FONT: () => (/* binding */ DEFAULT_SERIF_FONT),\n/* harmony export */ DEV_CLIENT_PAGES_MANIFEST: () => (/* binding */ DEV_CLIENT_PAGES_MANIFEST),\n/* harmony export */ DEV_MIDDLEWARE_MANIFEST: () => (/* binding */ DEV_MIDDLEWARE_MANIFEST),\n/* harmony export */ EDGE_RUNTIME_WEBPACK: () => (/* binding */ EDGE_RUNTIME_WEBPACK),\n/* harmony export */ EDGE_UNSUPPORTED_NODE_APIS: () => (/* binding */ EDGE_UNSUPPORTED_NODE_APIS),\n/* harmony export */ EXPORT_DETAIL: () => (/* binding */ EXPORT_DETAIL),\n/* harmony export */ EXPORT_MARKER: () => (/* binding */ EXPORT_MARKER),\n/* harmony export */ FONT_MANIFEST: () => (/* binding */ FONT_MANIFEST),\n/* harmony export */ FUNCTIONS_CONFIG_MANIFEST: () => (/* binding */ FUNCTIONS_CONFIG_MANIFEST),\n/* harmony export */ GOOGLE_FONT_PROVIDER: () => (/* binding */ GOOGLE_FONT_PROVIDER),\n/* harmony export */ IMAGES_MANIFEST: () => (/* binding */ IMAGES_MANIFEST),\n/* harmony export */ INTERNAL_HEADERS: () => (/* binding */ INTERNAL_HEADERS),\n/* harmony export */ MIDDLEWARE_BUILD_MANIFEST: () => (/* binding */ MIDDLEWARE_BUILD_MANIFEST),\n/* harmony export */ MIDDLEWARE_MANIFEST: () => (/* binding */ MIDDLEWARE_MANIFEST),\n/* harmony export */ MIDDLEWARE_REACT_LOADABLE_MANIFEST: () => (/* binding */ MIDDLEWARE_REACT_LOADABLE_MANIFEST),\n/* harmony export */ MODERN_BROWSERSLIST_TARGET: () => (/* reexport default from dynamic */ _modern_browserslist_target__WEBPACK_IMPORTED_MODULE_0___default.a),\n/* harmony export */ NEXT_BUILTIN_DOCUMENT: () => (/* binding */ NEXT_BUILTIN_DOCUMENT),\n/* harmony export */ NEXT_FONT_MANIFEST: () => (/* binding */ NEXT_FONT_MANIFEST),\n/* harmony export */ OPTIMIZED_FONT_PROVIDERS: () => (/* binding */ OPTIMIZED_FONT_PROVIDERS),\n/* harmony export */ PAGES_MANIFEST: () => (/* binding */ PAGES_MANIFEST),\n/* harmony export */ PHASE_DEVELOPMENT_SERVER: () => (/* binding */ PHASE_DEVELOPMENT_SERVER),\n/* harmony export */ PHASE_EXPORT: () => (/* binding */ PHASE_EXPORT),\n/* harmony export */ PHASE_INFO: () => (/* binding */ PHASE_INFO),\n/* harmony export */ PHASE_PRODUCTION_BUILD: () => (/* binding */ PHASE_PRODUCTION_BUILD),\n/* harmony export */ PHASE_PRODUCTION_SERVER: () => (/* binding */ PHASE_PRODUCTION_SERVER),\n/* harmony export */ PHASE_TEST: () => (/* binding */ PHASE_TEST),\n/* harmony export */ PRERENDER_MANIFEST: () => (/* binding */ PRERENDER_MANIFEST),\n/* harmony export */ REACT_LOADABLE_MANIFEST: () => (/* binding */ REACT_LOADABLE_MANIFEST),\n/* harmony export */ ROUTES_MANIFEST: () => (/* binding */ ROUTES_MANIFEST),\n/* harmony export */ RSC_MODULE_TYPES: () => (/* binding */ RSC_MODULE_TYPES),\n/* harmony export */ SERVER_DIRECTORY: () => (/* binding */ SERVER_DIRECTORY),\n/* harmony export */ SERVER_FILES_MANIFEST: () => (/* binding */ SERVER_FILES_MANIFEST),\n/* harmony export */ SERVER_PROPS_ID: () => (/* binding */ SERVER_PROPS_ID),\n/* harmony export */ SERVER_REFERENCE_MANIFEST: () => (/* binding */ SERVER_REFERENCE_MANIFEST),\n/* harmony export */ STATIC_PROPS_ID: () => (/* binding */ STATIC_PROPS_ID),\n/* harmony export */ STATIC_STATUS_PAGES: () => (/* binding */ STATIC_STATUS_PAGES),\n/* harmony export */ STRING_LITERAL_DROP_BUNDLE: () => (/* binding */ STRING_LITERAL_DROP_BUNDLE),\n/* harmony export */ SUBRESOURCE_INTEGRITY_MANIFEST: () => (/* binding */ SUBRESOURCE_INTEGRITY_MANIFEST),\n/* harmony export */ SYSTEM_ENTRYPOINTS: () => (/* binding */ SYSTEM_ENTRYPOINTS),\n/* harmony export */ TRACE_OUTPUT_VERSION: () => (/* binding */ TRACE_OUTPUT_VERSION),\n/* harmony export */ TURBO_TRACE_DEFAULT_MEMORY_LIMIT: () => (/* binding */ TURBO_TRACE_DEFAULT_MEMORY_LIMIT)\n/* harmony export */ });\n/* harmony import */ var _modern_browserslist_target__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modern-browserslist-target */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js\");\n/* harmony import */ var _modern_browserslist_target__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_modern_browserslist_target__WEBPACK_IMPORTED_MODULE_0__);\n\n\nconst COMPILER_NAMES = {\n client: \"client\",\n server: \"server\",\n edgeServer: \"edge-server\"\n};\n/**\n * Headers that are set by the Next.js server and should be stripped from the\n * request headers going to the user's application.\n */ const INTERNAL_HEADERS = [\n \"x-invoke-error\",\n \"x-invoke-output\",\n \"x-invoke-path\",\n \"x-invoke-query\",\n \"x-invoke-status\",\n \"x-middleware-invoke\"\n];\nconst COMPILER_INDEXES = {\n [COMPILER_NAMES.client]: 0,\n [COMPILER_NAMES.server]: 1,\n [COMPILER_NAMES.edgeServer]: 2\n};\nconst PHASE_EXPORT = \"phase-export\";\nconst PHASE_PRODUCTION_BUILD = \"phase-production-build\";\nconst PHASE_PRODUCTION_SERVER = \"phase-production-server\";\nconst PHASE_DEVELOPMENT_SERVER = \"phase-development-server\";\nconst PHASE_TEST = \"phase-test\";\nconst PHASE_INFO = \"phase-info\";\nconst PAGES_MANIFEST = \"pages-manifest.json\";\nconst APP_PATHS_MANIFEST = \"app-paths-manifest.json\";\nconst APP_PATH_ROUTES_MANIFEST = \"app-path-routes-manifest.json\";\nconst BUILD_MANIFEST = \"build-manifest.json\";\nconst APP_BUILD_MANIFEST = \"app-build-manifest.json\";\nconst FUNCTIONS_CONFIG_MANIFEST = \"functions-config-manifest.json\";\nconst SUBRESOURCE_INTEGRITY_MANIFEST = \"subresource-integrity-manifest\";\nconst NEXT_FONT_MANIFEST = \"next-font-manifest\";\nconst EXPORT_MARKER = \"export-marker.json\";\nconst EXPORT_DETAIL = \"export-detail.json\";\nconst PRERENDER_MANIFEST = \"prerender-manifest.json\";\nconst ROUTES_MANIFEST = \"routes-manifest.json\";\nconst IMAGES_MANIFEST = \"images-manifest.json\";\nconst SERVER_FILES_MANIFEST = \"required-server-files.json\";\nconst DEV_CLIENT_PAGES_MANIFEST = \"_devPagesManifest.json\";\nconst MIDDLEWARE_MANIFEST = \"middleware-manifest.json\";\nconst DEV_MIDDLEWARE_MANIFEST = \"_devMiddlewareManifest.json\";\nconst REACT_LOADABLE_MANIFEST = \"react-loadable-manifest.json\";\nconst FONT_MANIFEST = \"font-manifest.json\";\nconst SERVER_DIRECTORY = \"server\";\nconst CONFIG_FILES = [\n \"next.config.js\",\n \"next.config.mjs\"\n];\nconst BUILD_ID_FILE = \"BUILD_ID\";\nconst BLOCKED_PAGES = [\n \"/_document\",\n \"/_app\",\n \"/_error\"\n];\nconst CLIENT_PUBLIC_FILES_PATH = \"public\";\nconst CLIENT_STATIC_FILES_PATH = \"static\";\nconst STRING_LITERAL_DROP_BUNDLE = \"__NEXT_DROP_CLIENT_FILE__\";\nconst NEXT_BUILTIN_DOCUMENT = \"__NEXT_BUILTIN_DOCUMENT__\";\nconst BARREL_OPTIMIZATION_PREFIX = \"__barrel_optimize__\";\n// server/[entry]/page_client-reference-manifest.js\nconst CLIENT_REFERENCE_MANIFEST = \"client-reference-manifest\";\n// server/server-reference-manifest\nconst SERVER_REFERENCE_MANIFEST = \"server-reference-manifest\";\n// server/middleware-build-manifest.js\nconst MIDDLEWARE_BUILD_MANIFEST = \"middleware-build-manifest\";\n// server/middleware-react-loadable-manifest.js\nconst MIDDLEWARE_REACT_LOADABLE_MANIFEST = \"middleware-react-loadable-manifest\";\n// static/runtime/main.js\nconst CLIENT_STATIC_FILES_RUNTIME_MAIN = \"main\";\nconst CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = \"\" + CLIENT_STATIC_FILES_RUNTIME_MAIN + \"-app\";\n// next internal client components chunk for layouts\nconst APP_CLIENT_INTERNALS = \"app-pages-internals\";\n// static/runtime/react-refresh.js\nconst CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = \"react-refresh\";\n// static/runtime/amp.js\nconst CLIENT_STATIC_FILES_RUNTIME_AMP = \"amp\";\n// static/runtime/webpack.js\nconst CLIENT_STATIC_FILES_RUNTIME_WEBPACK = \"webpack\";\n// static/runtime/polyfills.js\nconst CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = \"polyfills\";\nconst CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(CLIENT_STATIC_FILES_RUNTIME_POLYFILLS);\nconst EDGE_RUNTIME_WEBPACK = \"edge-runtime-webpack\";\nconst STATIC_PROPS_ID = \"__N_SSG\";\nconst SERVER_PROPS_ID = \"__N_SSP\";\nconst GOOGLE_FONT_PROVIDER = \"https://fonts.googleapis.com/\";\nconst OPTIMIZED_FONT_PROVIDERS = [\n {\n url: GOOGLE_FONT_PROVIDER,\n preconnect: \"https://fonts.gstatic.com\"\n },\n {\n url: \"https://use.typekit.net\",\n preconnect: \"https://use.typekit.net\"\n }\n];\nconst DEFAULT_SERIF_FONT = {\n name: \"Times New Roman\",\n xAvgCharWidth: 821,\n azAvgWidth: 854.3953488372093,\n unitsPerEm: 2048\n};\nconst DEFAULT_SANS_SERIF_FONT = {\n name: \"Arial\",\n xAvgCharWidth: 904,\n azAvgWidth: 934.5116279069767,\n unitsPerEm: 2048\n};\nconst STATIC_STATUS_PAGES = [\n \"/500\"\n];\nconst TRACE_OUTPUT_VERSION = 1;\n// in `MB`\nconst TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000;\nconst RSC_MODULE_TYPES = {\n client: \"client\",\n server: \"server\"\n};\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nconst EDGE_UNSUPPORTED_NODE_APIS = [\n \"clearImmediate\",\n \"setImmediate\",\n \"BroadcastChannel\",\n \"ByteLengthQueuingStrategy\",\n \"CompressionStream\",\n \"CountQueuingStrategy\",\n \"DecompressionStream\",\n \"DomException\",\n \"MessageChannel\",\n \"MessageEvent\",\n \"MessagePort\",\n \"ReadableByteStreamController\",\n \"ReadableStreamBYOBRequest\",\n \"ReadableStreamDefaultController\",\n \"TransformStreamDefaultController\",\n \"WritableStreamDefaultController\"\n];\nconst SYSTEM_ENTRYPOINTS = new Set([\n CLIENT_STATIC_FILES_RUNTIME_MAIN,\n CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n CLIENT_STATIC_FILES_RUNTIME_AMP,\n CLIENT_STATIC_FILES_RUNTIME_MAIN_APP\n]); //# sourceMappingURL=constants.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzRTtBQUNoQztBQUMvQixNQUFNQyxpQkFBaUI7SUFDMUJDLFFBQVE7SUFDUkMsUUFBUTtJQUNSQyxZQUFZO0FBQ2hCLEVBQUU7QUFDRjs7O0NBR0MsR0FBVSxNQUFNQyxtQkFBbUI7SUFDaEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0gsQ0FBQztBQUNLLE1BQU1DLG1CQUFtQjtJQUM1QixDQUFDTCxlQUFlQyxNQUFNLENBQUMsRUFBRTtJQUN6QixDQUFDRCxlQUFlRSxNQUFNLENBQUMsRUFBRTtJQUN6QixDQUFDRixlQUFlRyxVQUFVLENBQUMsRUFBRTtBQUNqQyxFQUFFO0FBQ0ssTUFBTUcsZUFBZSxlQUFlO0FBQ3BDLE1BQU1DLHlCQUF5Qix5QkFBeUI7QUFDeEQsTUFBTUMsMEJBQTBCLDBCQUEwQjtBQUMxRCxNQUFNQywyQkFBMkIsMkJBQTJCO0FBQzVELE1BQU1DLGFBQWEsYUFBYTtBQUNoQyxNQUFNQyxhQUFhLGFBQWE7QUFDaEMsTUFBTUMsaUJBQWlCLHNCQUFzQjtBQUM3QyxNQUFNQyxxQkFBcUIsMEJBQTBCO0FBQ3JELE1BQU1DLDJCQUEyQixnQ0FBZ0M7QUFDakUsTUFBTUMsaUJBQWlCLHNCQUFzQjtBQUM3QyxNQUFNQyxxQkFBcUIsMEJBQTBCO0FBQ3JELE1BQU1DLDRCQUE0QixpQ0FBaUM7QUFDbkUsTUFBTUMsaUNBQWlDLGlDQUFpQztBQUN4RSxNQUFNQyxxQkFBcUIscUJBQXFCO0FBQ2hELE1BQU1DLGdCQUFnQixxQkFBcUI7QUFDM0MsTUFBTUMsZ0JBQWdCLHFCQUFxQjtBQUMzQyxNQUFNQyxxQkFBcUIsMEJBQTBCO0FBQ3JELE1BQU1DLGtCQUFrQix1QkFBdUI7QUFDL0MsTUFBTUMsa0JBQWtCLHVCQUF1QjtBQUMvQyxNQUFNQyx3QkFBd0IsNkJBQTZCO0FBQzNELE1BQU1DLDRCQUE0Qix5QkFBeUI7QUFDM0QsTUFBTUMsc0JBQXNCLDJCQUEyQjtBQUN2RCxNQUFNQywwQkFBMEIsOEJBQThCO0FBQzlELE1BQU1DLDBCQUEwQiwrQkFBK0I7QUFDL0QsTUFBTUMsZ0JBQWdCLHFCQUFxQjtBQUMzQyxNQUFNQyxtQkFBbUIsU0FBUztBQUNsQyxNQUFNQyxlQUFlO0lBQ3hCO0lBQ0E7Q0FDSCxDQUFDO0FBQ0ssTUFBTUMsZ0JBQWdCLFdBQVc7QUFDakMsTUFBTUMsZ0JBQWdCO0lBQ3pCO0lBQ0E7SUFDQTtDQUNILENBQUM7QUFDSyxNQUFNQywyQkFBMkIsU0FBUztBQUMxQyxNQUFNQywyQkFBMkIsU0FBUztBQUMxQyxNQUFNQyw2QkFBNkIsNEJBQTRCO0FBQy9ELE1BQU1DLHdCQUF3Qiw0QkFBNEI7QUFDMUQsTUFBTUMsNkJBQTZCLHNCQUFzQjtBQUNoRSxtREFBbUQ7QUFDNUMsTUFBTUMsNEJBQTRCLDRCQUE0QjtBQUNyRSxtQ0FBbUM7QUFDNUIsTUFBTUMsNEJBQTRCLDRCQUE0QjtBQUNyRSxzQ0FBc0M7QUFDL0IsTUFBTUMsNEJBQTRCLDRCQUE0QjtBQUNyRSwrQ0FBK0M7QUFDeEMsTUFBTUMscUNBQXFDLHFDQUFxQztBQUN2Rix5QkFBeUI7QUFDbEIsTUFBTUMsbUNBQW1DLE9BQU87QUFDaEQsTUFBTUMsdUNBQXVDLEtBQUtELG1DQUFtQyxPQUFPO0FBQ25HLG9EQUFvRDtBQUM3QyxNQUFNRSx1QkFBdUIsc0JBQXNCO0FBQzFELGtDQUFrQztBQUMzQixNQUFNQyw0Q0FBNEMsZ0JBQWdCO0FBQ3pFLHdCQUF3QjtBQUNqQixNQUFNQyxrQ0FBa0MsTUFBTTtBQUNyRCw0QkFBNEI7QUFDckIsTUFBTUMsc0NBQXNDLFVBQVU7QUFDN0QsOEJBQThCO0FBQ3ZCLE1BQU1DLHdDQUF3QyxZQUFZO0FBQzFELE1BQU1DLCtDQUErQ0MsT0FBT0YsdUNBQXVDO0FBQ25HLE1BQU1HLHVCQUF1Qix1QkFBdUI7QUFDcEQsTUFBTUMsa0JBQWtCLFVBQVU7QUFDbEMsTUFBTUMsa0JBQWtCLFVBQVU7QUFDbEMsTUFBTUMsdUJBQXVCLGdDQUFnQztBQUM3RCxNQUFNQywyQkFBMkI7SUFDcEM7UUFDSUMsS0FBS0Y7UUFDTEcsWUFBWTtJQUNoQjtJQUNBO1FBQ0lELEtBQUs7UUFDTEMsWUFBWTtJQUNoQjtDQUNILENBQUM7QUFDSyxNQUFNQyxxQkFBcUI7SUFDOUJDLE1BQU07SUFDTkMsZUFBZTtJQUNmQyxZQUFZO0lBQ1pDLFlBQVk7QUFDaEIsRUFBRTtBQUNLLE1BQU1DLDBCQUEwQjtJQUNuQ0osTUFBTTtJQUNOQyxlQUFlO0lBQ2ZDLFlBQVk7SUFDWkMsWUFBWTtBQUNoQixFQUFFO0FBQ0ssTUFBTUUsc0JBQXNCO0lBQy9CO0NBQ0gsQ0FBQztBQUNLLE1BQU1DLHVCQUF1QixFQUFFO0FBQ3RDLFVBQVU7QUFDSCxNQUFNQyxtQ0FBbUMsS0FBSztBQUM5QyxNQUFNQyxtQkFBbUI7SUFDNUJwRSxRQUFRO0lBQ1JDLFFBQVE7QUFDWixFQUFFO0FBQ0YsWUFBWTtBQUNaLHFEQUFxRDtBQUNyRCxPQUFPO0FBQ1Asa0RBQWtEO0FBQzNDLE1BQU1vRSw2QkFBNkI7SUFDdEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxDQUFDO0FBQ0ssTUFBTUMscUJBQXFCLElBQUlDLElBQUk7SUFDdEM1QjtJQUNBRztJQUNBQztJQUNBSDtDQUNILEVBQUUsQ0FFSCxxQ0FBcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9jb25zdGFudHMuanM/MmUxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTU9ERVJOX0JST1dTRVJTTElTVF9UQVJHRVQgZnJvbSBcIi4vbW9kZXJuLWJyb3dzZXJzbGlzdC10YXJnZXRcIjtcbmV4cG9ydCB7IE1PREVSTl9CUk9XU0VSU0xJU1RfVEFSR0VUIH07XG5leHBvcnQgY29uc3QgQ09NUElMRVJfTkFNRVMgPSB7XG4gICAgY2xpZW50OiBcImNsaWVudFwiLFxuICAgIHNlcnZlcjogXCJzZXJ2ZXJcIixcbiAgICBlZGdlU2VydmVyOiBcImVkZ2Utc2VydmVyXCJcbn07XG4vKipcbiAqIEhlYWRlcnMgdGhhdCBhcmUgc2V0IGJ5IHRoZSBOZXh0LmpzIHNlcnZlciBhbmQgc2hvdWxkIGJlIHN0cmlwcGVkIGZyb20gdGhlXG4gKiByZXF1ZXN0IGhlYWRlcnMgZ29pbmcgdG8gdGhlIHVzZXIncyBhcHBsaWNhdGlvbi5cbiAqLyBleHBvcnQgY29uc3QgSU5URVJOQUxfSEVBREVSUyA9IFtcbiAgICBcIngtaW52b2tlLWVycm9yXCIsXG4gICAgXCJ4LWludm9rZS1vdXRwdXRcIixcbiAgICBcIngtaW52b2tlLXBhdGhcIixcbiAgICBcIngtaW52b2tlLXF1ZXJ5XCIsXG4gICAgXCJ4LWludm9rZS1zdGF0dXNcIixcbiAgICBcIngtbWlkZGxld2FyZS1pbnZva2VcIlxuXTtcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9JTkRFWEVTID0ge1xuICAgIFtDT01QSUxFUl9OQU1FUy5jbGllbnRdOiAwLFxuICAgIFtDT01QSUxFUl9OQU1FUy5zZXJ2ZXJdOiAxLFxuICAgIFtDT01QSUxFUl9OQU1FUy5lZGdlU2VydmVyXTogMlxufTtcbmV4cG9ydCBjb25zdCBQSEFTRV9FWFBPUlQgPSBcInBoYXNlLWV4cG9ydFwiO1xuZXhwb3J0IGNvbnN0IFBIQVNFX1BST0RVQ1RJT05fQlVJTEQgPSBcInBoYXNlLXByb2R1Y3Rpb24tYnVpbGRcIjtcbmV4cG9ydCBjb25zdCBQSEFTRV9QUk9EVUNUSU9OX1NFUlZFUiA9IFwicGhhc2UtcHJvZHVjdGlvbi1zZXJ2ZXJcIjtcbmV4cG9ydCBjb25zdCBQSEFTRV9ERVZFTE9QTUVOVF9TRVJWRVIgPSBcInBoYXNlLWRldmVsb3BtZW50LXNlcnZlclwiO1xuZXhwb3J0IGNvbnN0IFBIQVNFX1RFU1QgPSBcInBoYXNlLXRlc3RcIjtcbmV4cG9ydCBjb25zdCBQSEFTRV9JTkZPID0gXCJwaGFzZS1pbmZvXCI7XG5leHBvcnQgY29uc3QgUEFHRVNfTUFOSUZFU1QgPSBcInBhZ2VzLW1hbmlmZXN0Lmpzb25cIjtcbmV4cG9ydCBjb25zdCBBUFBfUEFUSFNfTUFOSUZFU1QgPSBcImFwcC1wYXRocy1tYW5pZmVzdC5qc29uXCI7XG5leHBvcnQgY29uc3QgQVBQX1BBVEhfUk9VVEVTX01BTklGRVNUID0gXCJhcHAtcGF0aC1yb3V0ZXMtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IEJVSUxEX01BTklGRVNUID0gXCJidWlsZC1tYW5pZmVzdC5qc29uXCI7XG5leHBvcnQgY29uc3QgQVBQX0JVSUxEX01BTklGRVNUID0gXCJhcHAtYnVpbGQtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IEZVTkNUSU9OU19DT05GSUdfTUFOSUZFU1QgPSBcImZ1bmN0aW9ucy1jb25maWctbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IFNVQlJFU09VUkNFX0lOVEVHUklUWV9NQU5JRkVTVCA9IFwic3VicmVzb3VyY2UtaW50ZWdyaXR5LW1hbmlmZXN0XCI7XG5leHBvcnQgY29uc3QgTkVYVF9GT05UX01BTklGRVNUID0gXCJuZXh0LWZvbnQtbWFuaWZlc3RcIjtcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFSS0VSID0gXCJleHBvcnQtbWFya2VyLmpzb25cIjtcbmV4cG9ydCBjb25zdCBFWFBPUlRfREVUQUlMID0gXCJleHBvcnQtZGV0YWlsLmpzb25cIjtcbmV4cG9ydCBjb25zdCBQUkVSRU5ERVJfTUFOSUZFU1QgPSBcInByZXJlbmRlci1tYW5pZmVzdC5qc29uXCI7XG5leHBvcnQgY29uc3QgUk9VVEVTX01BTklGRVNUID0gXCJyb3V0ZXMtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IElNQUdFU19NQU5JRkVTVCA9IFwiaW1hZ2VzLW1hbmlmZXN0Lmpzb25cIjtcbmV4cG9ydCBjb25zdCBTRVJWRVJfRklMRVNfTUFOSUZFU1QgPSBcInJlcXVpcmVkLXNlcnZlci1maWxlcy5qc29uXCI7XG5leHBvcnQgY29uc3QgREVWX0NMSUVOVF9QQUdFU19NQU5JRkVTVCA9IFwiX2RldlBhZ2VzTWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IE1JRERMRVdBUkVfTUFOSUZFU1QgPSBcIm1pZGRsZXdhcmUtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IERFVl9NSURETEVXQVJFX01BTklGRVNUID0gXCJfZGV2TWlkZGxld2FyZU1hbmlmZXN0Lmpzb25cIjtcbmV4cG9ydCBjb25zdCBSRUFDVF9MT0FEQUJMRV9NQU5JRkVTVCA9IFwicmVhY3QtbG9hZGFibGUtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IEZPTlRfTUFOSUZFU1QgPSBcImZvbnQtbWFuaWZlc3QuanNvblwiO1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9ESVJFQ1RPUlkgPSBcInNlcnZlclwiO1xuZXhwb3J0IGNvbnN0IENPTkZJR19GSUxFUyA9IFtcbiAgICBcIm5leHQuY29uZmlnLmpzXCIsXG4gICAgXCJuZXh0LmNvbmZpZy5tanNcIlxuXTtcbmV4cG9ydCBjb25zdCBCVUlMRF9JRF9GSUxFID0gXCJCVUlMRF9JRFwiO1xuZXhwb3J0IGNvbnN0IEJMT0NLRURfUEFHRVMgPSBbXG4gICAgXCIvX2RvY3VtZW50XCIsXG4gICAgXCIvX2FwcFwiLFxuICAgIFwiL19lcnJvclwiXG5dO1xuZXhwb3J0IGNvbnN0IENMSUVOVF9QVUJMSUNfRklMRVNfUEFUSCA9IFwicHVibGljXCI7XG5leHBvcnQgY29uc3QgQ0xJRU5UX1NUQVRJQ19GSUxFU19QQVRIID0gXCJzdGF0aWNcIjtcbmV4cG9ydCBjb25zdCBTVFJJTkdfTElURVJBTF9EUk9QX0JVTkRMRSA9IFwiX19ORVhUX0RST1BfQ0xJRU5UX0ZJTEVfX1wiO1xuZXhwb3J0IGNvbnN0IE5FWFRfQlVJTFRJTl9ET0NVTUVOVCA9IFwiX19ORVhUX0JVSUxUSU5fRE9DVU1FTlRfX1wiO1xuZXhwb3J0IGNvbnN0IEJBUlJFTF9PUFRJTUlaQVRJT05fUFJFRklYID0gXCJfX2JhcnJlbF9vcHRpbWl6ZV9fXCI7XG4vLyBzZXJ2ZXIvW2VudHJ5XS9wYWdlX2NsaWVudC1yZWZlcmVuY2UtbWFuaWZlc3QuanNcbmV4cG9ydCBjb25zdCBDTElFTlRfUkVGRVJFTkNFX01BTklGRVNUID0gXCJjbGllbnQtcmVmZXJlbmNlLW1hbmlmZXN0XCI7XG4vLyBzZXJ2ZXIvc2VydmVyLXJlZmVyZW5jZS1tYW5pZmVzdFxuZXhwb3J0IGNvbnN0IFNFUlZFUl9SRUZFUkVOQ0VfTUFOSUZFU1QgPSBcInNlcnZlci1yZWZlcmVuY2UtbWFuaWZlc3RcIjtcbi8vIHNlcnZlci9taWRkbGV3YXJlLWJ1aWxkLW1hbmlmZXN0LmpzXG5leHBvcnQgY29uc3QgTUlERExFV0FSRV9CVUlMRF9NQU5JRkVTVCA9IFwibWlkZGxld2FyZS1idWlsZC1tYW5pZmVzdFwiO1xuLy8gc2VydmVyL21pZGRsZXdhcmUtcmVhY3QtbG9hZGFibGUtbWFuaWZlc3QuanNcbmV4cG9ydCBjb25zdCBNSURETEVXQVJFX1JFQUNUX0xPQURBQkxFX01BTklGRVNUID0gXCJtaWRkbGV3YXJlLXJlYWN0LWxvYWRhYmxlLW1hbmlmZXN0XCI7XG4vLyBzdGF0aWMvcnVudGltZS9tYWluLmpzXG5leHBvcnQgY29uc3QgQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX01BSU4gPSBcIm1haW5cIjtcbmV4cG9ydCBjb25zdCBDTElFTlRfU1RBVElDX0ZJTEVTX1JVTlRJTUVfTUFJTl9BUFAgPSBcIlwiICsgQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX01BSU4gKyBcIi1hcHBcIjtcbi8vIG5leHQgaW50ZXJuYWwgY2xpZW50IGNvbXBvbmVudHMgY2h1bmsgZm9yIGxheW91dHNcbmV4cG9ydCBjb25zdCBBUFBfQ0xJRU5UX0lOVEVSTkFMUyA9IFwiYXBwLXBhZ2VzLWludGVybmFsc1wiO1xuLy8gc3RhdGljL3J1bnRpbWUvcmVhY3QtcmVmcmVzaC5qc1xuZXhwb3J0IGNvbnN0IENMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9SRUFDVF9SRUZSRVNIID0gXCJyZWFjdC1yZWZyZXNoXCI7XG4vLyBzdGF0aWMvcnVudGltZS9hbXAuanNcbmV4cG9ydCBjb25zdCBDTElFTlRfU1RBVElDX0ZJTEVTX1JVTlRJTUVfQU1QID0gXCJhbXBcIjtcbi8vIHN0YXRpYy9ydW50aW1lL3dlYnBhY2suanNcbmV4cG9ydCBjb25zdCBDTElFTlRfU1RBVElDX0ZJTEVTX1JVTlRJTUVfV0VCUEFDSyA9IFwid2VicGFja1wiO1xuLy8gc3RhdGljL3J1bnRpbWUvcG9seWZpbGxzLmpzXG5leHBvcnQgY29uc3QgQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX1BPTFlGSUxMUyA9IFwicG9seWZpbGxzXCI7XG5leHBvcnQgY29uc3QgQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX1BPTFlGSUxMU19TWU1CT0wgPSBTeW1ib2woQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX1BPTFlGSUxMUyk7XG5leHBvcnQgY29uc3QgRURHRV9SVU5USU1FX1dFQlBBQ0sgPSBcImVkZ2UtcnVudGltZS13ZWJwYWNrXCI7XG5leHBvcnQgY29uc3QgU1RBVElDX1BST1BTX0lEID0gXCJfX05fU1NHXCI7XG5leHBvcnQgY29uc3QgU0VSVkVSX1BST1BTX0lEID0gXCJfX05fU1NQXCI7XG5leHBvcnQgY29uc3QgR09PR0xFX0ZPTlRfUFJPVklERVIgPSBcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vXCI7XG5leHBvcnQgY29uc3QgT1BUSU1JWkVEX0ZPTlRfUFJPVklERVJTID0gW1xuICAgIHtcbiAgICAgICAgdXJsOiBHT09HTEVfRk9OVF9QUk9WSURFUixcbiAgICAgICAgcHJlY29ubmVjdDogXCJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tXCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdXJsOiBcImh0dHBzOi8vdXNlLnR5cGVraXQubmV0XCIsXG4gICAgICAgIHByZWNvbm5lY3Q6IFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXRcIlxuICAgIH1cbl07XG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVJJRl9GT05UID0ge1xuICAgIG5hbWU6IFwiVGltZXMgTmV3IFJvbWFuXCIsXG4gICAgeEF2Z0NoYXJXaWR0aDogODIxLFxuICAgIGF6QXZnV2lkdGg6IDg1NC4zOTUzNDg4MzcyMDkzLFxuICAgIHVuaXRzUGVyRW06IDIwNDhcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9TQU5TX1NFUklGX0ZPTlQgPSB7XG4gICAgbmFtZTogXCJBcmlhbFwiLFxuICAgIHhBdmdDaGFyV2lkdGg6IDkwNCxcbiAgICBhekF2Z1dpZHRoOiA5MzQuNTExNjI3OTA2OTc2NyxcbiAgICB1bml0c1BlckVtOiAyMDQ4XG59O1xuZXhwb3J0IGNvbnN0IFNUQVRJQ19TVEFUVVNfUEFHRVMgPSBbXG4gICAgXCIvNTAwXCJcbl07XG5leHBvcnQgY29uc3QgVFJBQ0VfT1VUUFVUX1ZFUlNJT04gPSAxO1xuLy8gaW4gYE1CYFxuZXhwb3J0IGNvbnN0IFRVUkJPX1RSQUNFX0RFRkFVTFRfTUVNT1JZX0xJTUlUID0gNjAwMDtcbmV4cG9ydCBjb25zdCBSU0NfTU9EVUxFX1RZUEVTID0ge1xuICAgIGNsaWVudDogXCJjbGllbnRcIixcbiAgICBzZXJ2ZXI6IFwic2VydmVyXCJcbn07XG4vLyBjb21wYXJpbmdcbi8vIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwaS1yZWZlcmVuY2UvZWRnZS1ydW50aW1lXG4vLyB3aXRoXG4vLyBodHRwczovL25vZGVqcy5vcmcvZG9jcy9sYXRlc3QvYXBpL2dsb2JhbHMuaHRtbFxuZXhwb3J0IGNvbnN0IEVER0VfVU5TVVBQT1JURURfTk9ERV9BUElTID0gW1xuICAgIFwiY2xlYXJJbW1lZGlhdGVcIixcbiAgICBcInNldEltbWVkaWF0ZVwiLFxuICAgIFwiQnJvYWRjYXN0Q2hhbm5lbFwiLFxuICAgIFwiQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneVwiLFxuICAgIFwiQ29tcHJlc3Npb25TdHJlYW1cIixcbiAgICBcIkNvdW50UXVldWluZ1N0cmF0ZWd5XCIsXG4gICAgXCJEZWNvbXByZXNzaW9uU3RyZWFtXCIsXG4gICAgXCJEb21FeGNlcHRpb25cIixcbiAgICBcIk1lc3NhZ2VDaGFubmVsXCIsXG4gICAgXCJNZXNzYWdlRXZlbnRcIixcbiAgICBcIk1lc3NhZ2VQb3J0XCIsXG4gICAgXCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyXCIsXG4gICAgXCJSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0XCIsXG4gICAgXCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyXCIsXG4gICAgXCJUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlclwiLFxuICAgIFwiV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlclwiXG5dO1xuZXhwb3J0IGNvbnN0IFNZU1RFTV9FTlRSWVBPSU5UUyA9IG5ldyBTZXQoW1xuICAgIENMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9NQUlOLFxuICAgIENMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9SRUFDVF9SRUZSRVNILFxuICAgIENMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9BTVAsXG4gICAgQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX01BSU5fQVBQXG5dKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJuYW1lcyI6WyJNT0RFUk5fQlJPV1NFUlNMSVNUX1RBUkdFVCIsIkNPTVBJTEVSX05BTUVTIiwiY2xpZW50Iiwic2VydmVyIiwiZWRnZVNlcnZlciIsIklOVEVSTkFMX0hFQURFUlMiLCJDT01QSUxFUl9JTkRFWEVTIiwiUEhBU0VfRVhQT1JUIiwiUEhBU0VfUFJPRFVDVElPTl9CVUlMRCIsIlBIQVNFX1BST0RVQ1RJT05fU0VSVkVSIiwiUEhBU0VfREVWRUxPUE1FTlRfU0VSVkVSIiwiUEhBU0VfVEVTVCIsIlBIQVNFX0lORk8iLCJQQUdFU19NQU5JRkVTVCIsIkFQUF9QQVRIU19NQU5JRkVTVCIsIkFQUF9QQVRIX1JPVVRFU19NQU5JRkVTVCIsIkJVSUxEX01BTklGRVNUIiwiQVBQX0JVSUxEX01BTklGRVNUIiwiRlVOQ1RJT05TX0NPTkZJR19NQU5JRkVTVCIsIlNVQlJFU09VUkNFX0lOVEVHUklUWV9NQU5JRkVTVCIsIk5FWFRfRk9OVF9NQU5JRkVTVCIsIkVYUE9SVF9NQVJLRVIiLCJFWFBPUlRfREVUQUlMIiwiUFJFUkVOREVSX01BTklGRVNUIiwiUk9VVEVTX01BTklGRVNUIiwiSU1BR0VTX01BTklGRVNUIiwiU0VSVkVSX0ZJTEVTX01BTklGRVNUIiwiREVWX0NMSUVOVF9QQUdFU19NQU5JRkVTVCIsIk1JRERMRVdBUkVfTUFOSUZFU1QiLCJERVZfTUlERExFV0FSRV9NQU5JRkVTVCIsIlJFQUNUX0xPQURBQkxFX01BTklGRVNUIiwiRk9OVF9NQU5JRkVTVCIsIlNFUlZFUl9ESVJFQ1RPUlkiLCJDT05GSUdfRklMRVMiLCJCVUlMRF9JRF9GSUxFIiwiQkxPQ0tFRF9QQUdFUyIsIkNMSUVOVF9QVUJMSUNfRklMRVNfUEFUSCIsIkNMSUVOVF9TVEFUSUNfRklMRVNfUEFUSCIsIlNUUklOR19MSVRFUkFMX0RST1BfQlVORExFIiwiTkVYVF9CVUlMVElOX0RPQ1VNRU5UIiwiQkFSUkVMX09QVElNSVpBVElPTl9QUkVGSVgiLCJDTElFTlRfUkVGRVJFTkNFX01BTklGRVNUIiwiU0VSVkVSX1JFRkVSRU5DRV9NQU5JRkVTVCIsIk1JRERMRVdBUkVfQlVJTERfTUFOSUZFU1QiLCJNSURETEVXQVJFX1JFQUNUX0xPQURBQkxFX01BTklGRVNUIiwiQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX01BSU4iLCJDTElFTlRfU1RBVElDX0ZJTEVTX1JVTlRJTUVfTUFJTl9BUFAiLCJBUFBfQ0xJRU5UX0lOVEVSTkFMUyIsIkNMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9SRUFDVF9SRUZSRVNIIiwiQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX0FNUCIsIkNMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9XRUJQQUNLIiwiQ0xJRU5UX1NUQVRJQ19GSUxFU19SVU5USU1FX1BPTFlGSUxMUyIsIkNMSUVOVF9TVEFUSUNfRklMRVNfUlVOVElNRV9QT0xZRklMTFNfU1lNQk9MIiwiU3ltYm9sIiwiRURHRV9SVU5USU1FX1dFQlBBQ0siLCJTVEFUSUNfUFJPUFNfSUQiLCJTRVJWRVJfUFJPUFNfSUQiLCJHT09HTEVfRk9OVF9QUk9WSURFUiIsIk9QVElNSVpFRF9GT05UX1BST1ZJREVSUyIsInVybCIsInByZWNvbm5lY3QiLCJERUZBVUxUX1NFUklGX0ZPTlQiLCJuYW1lIiwieEF2Z0NoYXJXaWR0aCIsImF6QXZnV2lkdGgiLCJ1bml0c1BlckVtIiwiREVGQVVMVF9TQU5TX1NFUklGX0ZPTlQiLCJTVEFUSUNfU1RBVFVTX1BBR0VTIiwiVFJBQ0VfT1VUUFVUX1ZFUlNJT04iLCJUVVJCT19UUkFDRV9ERUZBVUxUX01FTU9SWV9MSU1JVCIsIlJTQ19NT0RVTEVfVFlQRVMiLCJFREdFX1VOU1VQUE9SVEVEX05PREVfQVBJUyIsIlNZU1RFTV9FTlRSWVBPSU5UUyIsIlNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/constants.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/escape-regexp.js":
/*!****************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/escape-regexp.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ escapeStringRegexp: () => (/* binding */ escapeStringRegexp)\n/* harmony export */ });\n// regexp is based on https://github.com/sindresorhus/escape-string-regexp\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2VzY2FwZS1yZWdleHAuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBFQUEwRTtBQUMxRSxNQUFNQSxjQUFjO0FBQ3BCLE1BQU1DLGtCQUFrQjtBQUNqQixTQUFTQyxtQkFBbUJDLEdBQUc7SUFDbEMsK0dBQStHO0lBQy9HLElBQUlILFlBQVlJLElBQUksQ0FBQ0QsTUFBTTtRQUN2QixPQUFPQSxJQUFJRSxPQUFPLENBQUNKLGlCQUFpQjtJQUN4QztJQUNBLE9BQU9FO0FBQ1gsRUFFQSx5Q0FBeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9lc2NhcGUtcmVnZXhwLmpzPzUzMzQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVnZXhwIGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZXNjYXBlLXN0cmluZy1yZWdleHBcbmNvbnN0IHJlSGFzUmVnRXhwID0gL1t8XFxcXHt9KClbXFxdXiQrKj8uLV0vO1xuY29uc3QgcmVSZXBsYWNlUmVnRXhwID0gL1t8XFxcXHt9KClbXFxdXiQrKj8uLV0vZztcbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVTdHJpbmdSZWdleHAoc3RyKSB7XG4gICAgLy8gc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvMmRhMDI0YzNiNGY5OTQ3YTQ4NTE3NjM5ZGU3NTYwNDU3Y2Q0ZWM2Yy9lc2NhcGVSZWdFeHAuanMjTDIzXG4gICAgaWYgKHJlSGFzUmVnRXhwLnRlc3Qoc3RyKSkge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UocmVSZXBsYWNlUmVnRXhwLCBcIlxcXFwkJlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXNjYXBlLXJlZ2V4cC5qcy5tYXAiXSwibmFtZXMiOlsicmVIYXNSZWdFeHAiLCJyZVJlcGxhY2VSZWdFeHAiLCJlc2NhcGVTdHJpbmdSZWdleHAiLCJzdHIiLCJ0ZXN0IiwicmVwbGFjZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/escape-regexp.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/get-hostname.js":
/*!***************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/get-hostname.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getHostname: () => (/* binding */ getHostname)\n/* harmony export */ });\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */ function 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2dldC1ob3N0bmFtZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7O0NBS0MsR0FBVSxTQUFTQSxZQUFZQyxNQUFNLEVBQUVDLE9BQU87SUFDM0MsMkVBQTJFO0lBQzNFLFlBQVk7SUFDWixJQUFJQztJQUNKLElBQUksQ0FBQ0QsV0FBVyxPQUFPLEtBQUssSUFBSUEsUUFBUUUsSUFBSSxLQUFLLENBQUNDLE1BQU1DLE9BQU8sQ0FBQ0osUUFBUUUsSUFBSSxHQUFHO1FBQzNFRCxXQUFXRCxRQUFRRSxJQUFJLENBQUNHLFFBQVEsR0FBR0MsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDdkQsT0FBTyxJQUFJUCxPQUFPRSxRQUFRLEVBQUU7UUFDeEJBLFdBQVdGLE9BQU9FLFFBQVE7SUFDOUIsT0FBTztJQUNQLE9BQU9BLFNBQVNNLFdBQVc7QUFDL0IsRUFFQSx3Q0FBd0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9nZXQtaG9zdG5hbWUuanM/NzYzMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRha2VzIGFuIG9iamVjdCB3aXRoIGEgaG9zdG5hbWUgcHJvcGVydHkgKGxpa2UgYSBwYXJzZWQgVVJMKSBhbmQgc29tZVxuICogaGVhZGVycyB0aGF0IG1heSBjb250YWluIEhvc3QgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBob3N0bmFtZS5cbiAqIEBwYXJhbSBwYXJzZWQgQW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBob3N0bmFtZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBoZWFkZXJzIEEgZGljdGlvbmFyeSB3aXRoIGhlYWRlcnMgY29udGFpbmluZyBhIGBob3N0YC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0SG9zdG5hbWUocGFyc2VkLCBoZWFkZXJzKSB7XG4gICAgLy8gR2V0IHRoZSBob3N0bmFtZSBmcm9tIHRoZSBoZWFkZXJzIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVzZSB0aGUgcGFyc2VkXG4gICAgLy8gaG9zdG5hbWUuXG4gICAgbGV0IGhvc3RuYW1lO1xuICAgIGlmICgoaGVhZGVycyA9PSBudWxsID8gdm9pZCAwIDogaGVhZGVycy5ob3N0KSAmJiAhQXJyYXkuaXNBcnJheShoZWFkZXJzLmhvc3QpKSB7XG4gICAgICAgIGhvc3RuYW1lID0gaGVhZGVycy5ob3N0LnRvU3RyaW5nKCkuc3BsaXQoXCI6XCIsIDEpWzBdO1xuICAgIH0gZWxzZSBpZiAocGFyc2VkLmhvc3RuYW1lKSB7XG4gICAgICAgIGhvc3RuYW1lID0gcGFyc2VkLmhvc3RuYW1lO1xuICAgIH0gZWxzZSByZXR1cm47XG4gICAgcmV0dXJuIGhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1ob3N0bmFtZS5qcy5tYXAiXSwibmFtZXMiOlsiZ2V0SG9zdG5hbWUiLCJwYXJzZWQiLCJoZWFkZXJzIiwiaG9zdG5hbWUiLCJob3N0IiwiQXJyYXkiLCJpc0FycmF5IiwidG9TdHJpbmciLCJzcGxpdCIsInRvTG93ZXJDYXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/get-hostname.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js":
/*!****************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectDomainLocale: () => (/* binding */ detectDomainLocale)\n/* harmony export */ });\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2kxOG4vZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLFNBQVNBLG1CQUFtQkMsV0FBVyxFQUFFQyxRQUFRLEVBQUVDLGNBQWM7SUFDcEUsSUFBSSxDQUFDRixhQUFhO0lBQ2xCLElBQUlFLGdCQUFnQjtRQUNoQkEsaUJBQWlCQSxlQUFlQyxXQUFXO0lBQy9DO0lBQ0EsS0FBSyxNQUFNQyxRQUFRSixZQUFZO1FBQzNCLElBQUlLLGNBQWNDO1FBQ2xCLHlCQUF5QjtRQUN6QixNQUFNQyxpQkFBaUIsQ0FBQ0YsZUFBZUQsS0FBS0ksTUFBTSxLQUFLLE9BQU8sS0FBSyxJQUFJSCxhQUFhSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDTixXQUFXO1FBQ2hILElBQUlGLGFBQWFNLGtCQUFrQkwsbUJBQW1CRSxLQUFLTSxhQUFhLENBQUNQLFdBQVcsTUFBTyxFQUFDRyxnQkFBZ0JGLEtBQUtPLE9BQU8sS0FBSyxPQUFPLEtBQUssSUFBSUwsY0FBY00sSUFBSSxDQUFDLENBQUNDLFNBQVNBLE9BQU9WLFdBQVcsT0FBT0QsZUFBYyxHQUFJO1lBQ2pOLE9BQU9FO1FBQ1g7SUFDSjtBQUNKLEVBRUEsZ0RBQWdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcz9iY2E3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBkZXRlY3REb21haW5Mb2NhbGUoZG9tYWluSXRlbXMsIGhvc3RuYW1lLCBkZXRlY3RlZExvY2FsZSkge1xuICAgIGlmICghZG9tYWluSXRlbXMpIHJldHVybjtcbiAgICBpZiAoZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgZGV0ZWN0ZWRMb2NhbGUgPSBkZXRlY3RlZExvY2FsZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZG9tYWluSXRlbXMpe1xuICAgICAgICB2YXIgX2l0ZW1fZG9tYWluLCBfaXRlbV9sb2NhbGVzO1xuICAgICAgICAvLyByZW1vdmUgcG9ydCBpZiBwcmVzZW50XG4gICAgICAgIGNvbnN0IGRvbWFpbkhvc3RuYW1lID0gKF9pdGVtX2RvbWFpbiA9IGl0ZW0uZG9tYWluKSA9PSBudWxsID8gdm9pZCAwIDogX2l0ZW1fZG9tYWluLnNwbGl0KFwiOlwiLCAxKVswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoaG9zdG5hbWUgPT09IGRvbWFpbkhvc3RuYW1lIHx8IGRldGVjdGVkTG9jYWxlID09PSBpdGVtLmRlZmF1bHRMb2NhbGUudG9Mb3dlckNhc2UoKSB8fCAoKF9pdGVtX2xvY2FsZXMgPSBpdGVtLmxvY2FsZXMpID09IG51bGwgPyB2b2lkIDAgOiBfaXRlbV9sb2NhbGVzLnNvbWUoKGxvY2FsZSk9PmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSBkZXRlY3RlZExvY2FsZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbImRldGVjdERvbWFpbkxvY2FsZSIsImRvbWFpbkl0ZW1zIiwiaG9zdG5hbWUiLCJkZXRlY3RlZExvY2FsZSIsInRvTG93ZXJDYXNlIiwiaXRlbSIsIl9pdGVtX2RvbWFpbiIsIl9pdGVtX2xvY2FsZXMiLCJkb21haW5Ib3N0bmFtZSIsImRvbWFpbiIsInNwbGl0IiwiZGVmYXVsdExvY2FsZSIsImxvY2FsZXMiLCJzb21lIiwibG9jYWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ normalizeLocalePath: () => (/* binding */ normalizeLocalePath)\n/* harmony export */ });\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */ function normalizeLocalePath(pathname, locales) {\n let detectedLocale;\n // first item will be empty string from splitting at first char\n const pathnameParts = pathname.split(\"/\");\n (locales || []).some((locale)=>{\n if (pathnameParts[1] && pathnameParts[1].toLowerCase() === locale.toLowerCase()) {\n detectedLocale = locale;\n pathnameParts.splice(1, 1);\n pathname = pathnameParts.join(\"/\") || \"/\";\n return true;\n }\n return false;\n });\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Q0FRQyxHQUFVLFNBQVNBLG9CQUFvQkMsUUFBUSxFQUFFQyxPQUFPO0lBQ3JELElBQUlDO0lBQ0osK0RBQStEO0lBQy9ELE1BQU1DLGdCQUFnQkgsU0FBU0ksS0FBSyxDQUFDO0lBQ3BDSCxDQUFBQSxXQUFXLEVBQUUsRUFBRUksSUFBSSxDQUFDLENBQUNDO1FBQ2xCLElBQUlILGFBQWEsQ0FBQyxFQUFFLElBQUlBLGFBQWEsQ0FBQyxFQUFFLENBQUNJLFdBQVcsT0FBT0QsT0FBT0MsV0FBVyxJQUFJO1lBQzdFTCxpQkFBaUJJO1lBQ2pCSCxjQUFjSyxNQUFNLENBQUMsR0FBRztZQUN4QlIsV0FBV0csY0FBY00sSUFBSSxDQUFDLFFBQVE7WUFDdEMsT0FBTztRQUNYO1FBQ0EsT0FBTztJQUNYO0lBQ0EsT0FBTztRQUNIVDtRQUNBRTtJQUNKO0FBQ0osRUFFQSxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9pMThuL25vcm1hbGl6ZS1sb2NhbGUtcGF0aC5qcz82Zjg2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9yIGEgcGF0aG5hbWUgdGhhdCBtYXkgaW5jbHVkZSBhIGxvY2FsZSBmcm9tIGEgbGlzdCBvZiBsb2NhbGVzLCBpdFxuICogcmVtb3ZlcyB0aGUgbG9jYWxlIGZyb20gdGhlIHBhdGhuYW1lIHJldHVybmluZyBpdCBhbG9uZ3NpZGUgd2l0aCB0aGVcbiAqIGRldGVjdGVkIGxvY2FsZS5cbiAqXG4gKiBAcGFyYW0gcGF0aG5hbWUgQSBwYXRobmFtZSB0aGF0IG1heSBpbmNsdWRlIGEgbG9jYWxlLlxuICogQHBhcmFtIGxvY2FsZXMgQSBsaXN0IG9mIGxvY2FsZXMuXG4gKiBAcmV0dXJucyBUaGUgZGV0ZWN0ZWQgbG9jYWxlIGFuZCBwYXRobmFtZSB3aXRob3V0IGxvY2FsZVxuICovIGV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVMb2NhbGVQYXRoKHBhdGhuYW1lLCBsb2NhbGVzKSB7XG4gICAgbGV0IGRldGVjdGVkTG9jYWxlO1xuICAgIC8vIGZpcnN0IGl0ZW0gd2lsbCBiZSBlbXB0eSBzdHJpbmcgZnJvbSBzcGxpdHRpbmcgYXQgZmlyc3QgY2hhclxuICAgIGNvbnN0IHBhdGhuYW1lUGFydHMgPSBwYXRobmFtZS5zcGxpdChcIi9cIik7XG4gICAgKGxvY2FsZXMgfHwgW10pLnNvbWUoKGxvY2FsZSk9PntcbiAgICAgICAgaWYgKHBhdGhuYW1lUGFydHNbMV0gJiYgcGF0aG5hbWVQYXJ0c1sxXS50b0xvd2VyQ2FzZSgpID09PSBsb2NhbGUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgZGV0ZWN0ZWRMb2NhbGUgPSBsb2NhbGU7XG4gICAgICAgICAgICBwYXRobmFtZVBhcnRzLnNwbGljZSgxLCAxKTtcbiAgICAgICAgICAgIHBhdGhuYW1lID0gcGF0aG5hbWVQYXJ0cy5qb2luKFwiL1wiKSB8fCBcIi9cIjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgZGV0ZWN0ZWRMb2NhbGVcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub3JtYWxpemUtbG9jYWxlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJwYXRobmFtZSIsImxvY2FsZXMiLCJkZXRlY3RlZExvY2FsZSIsInBhdGhuYW1lUGFydHMiLCJzcGxpdCIsInNvbWUiLCJsb2NhbGUiLCJ0b0xvd2VyQ2FzZSIsInNwbGljZSIsImpvaW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/isomorphic/path.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/esm/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 (true) {\n path = __webpack_require__(/*! next/dist/compiled/path-browserify */ \"(rsc)/./node_modules/next/dist/compiled/path-browserify/index.js\");\n} else {}\nmodule.exports = path; //# sourceMappingURL=path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL2lzb21vcnBoaWMvcGF0aC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7OztDQUlDLEdBQUc7QUFBQSxJQUFJQTtBQUNSLElBQUlDLElBQW1DLEVBQUU7SUFDckNELE9BQU9JLG1CQUFPQSxDQUFDLDRHQUFvQztBQUN2RCxPQUFPLEVBRU47QUFDREMsT0FBT0MsT0FBTyxHQUFHTixNQUVqQixnQ0FBZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9pc29tb3JwaGljL3BhdGguanM/NDQyNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbW9kdWxlIGlzIGZvciBuZXh0LmpzIHNlcnZlciBpbnRlcm5hbCB1c2FnZSBvZiBwYXRoIG1vZHVsZS5cbiAqIEl0IHdpbGwgdXNlIG5hdGl2ZSBwYXRoIG1vZHVsZSBmb3Igbm9kZWpzIHJ1bnRpbWUuXG4gKiBJdCB3aWxsIHVzZSBwYXRoLWJyb3dzZXJpZnkgcG9seWZpbGwgZm9yIGVkZ2UgcnVudGltZS5cbiAqLyBsZXQgcGF0aDtcbmlmIChwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09IFwiZWRnZVwiKSB7XG4gICAgcGF0aCA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvcGF0aC1icm93c2VyaWZ5XCIpO1xufSBlbHNlIHtcbiAgICBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHBhdGg7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sIm5hbWVzIjpbInBhdGgiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9SVU5USU1FIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/isomorphic/path.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js ***!
\*****************************************************************************/
/***/ ((module) => {
"use strict";
eval("// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n/**\n * These are the browser versions that support all of the following:\n * static import: https://caniuse.com/es6-module\n * dynamic import: https://caniuse.com/es6-module-dynamic-import\n * import.meta: https://caniuse.com/mdn-javascript_operators_import_meta\n */ \nconst MODERN_BROWSERSLIST_TARGET = [\n \"chrome 64\",\n \"edge 79\",\n \"firefox 67\",\n \"opera 51\",\n \"safari 12\"\n];\nmodule.exports = MODERN_BROWSERSLIST_TARGET; //# sourceMappingURL=modern-browserslist-target.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL21vZGVybi1icm93c2Vyc2xpc3QtdGFyZ2V0LmpzIiwibWFwcGluZ3MiOiJBQUFBLG9GQUFvRjtBQUNwRixrRUFBa0U7QUFDbEU7Ozs7O0NBS0MsR0FBRztBQUFBLE1BQU1BLDZCQUE2QjtJQUNuQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0g7QUFDREMsT0FBT0MsT0FBTyxHQUFHRiw0QkFFakIsc0RBQXNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvbW9kZXJuLWJyb3dzZXJzbGlzdC10YXJnZXQuanM/MTEwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBUaGlzIGZpbGUgaXMgSlMgYmVjYXVzZSBpdCdzIHVzZWQgYnkgdGhlIHRhc2tmaWxlLXN3Yy5qcyBmaWxlLCB3aGljaCBpcyBKUy5cbi8vIEtlZXAgZmlsZSBjaGFuZ2VzIGluIHN5bmMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBgLmQudHNgIGZpbGVzLlxuLyoqXG4gKiBUaGVzZSBhcmUgdGhlIGJyb3dzZXIgdmVyc2lvbnMgdGhhdCBzdXBwb3J0IGFsbCBvZiB0aGUgZm9sbG93aW5nOlxuICogc3RhdGljIGltcG9ydDogaHR0cHM6Ly9jYW5pdXNlLmNvbS9lczYtbW9kdWxlXG4gKiBkeW5hbWljIGltcG9ydDogaHR0cHM6Ly9jYW5pdXNlLmNvbS9lczYtbW9kdWxlLWR5bmFtaWMtaW1wb3J0XG4gKiBpbXBvcnQubWV0YTogaHR0cHM6Ly9jYW5pdXNlLmNvbS9tZG4tamF2YXNjcmlwdF9vcGVyYXRvcnNfaW1wb3J0X21ldGFcbiAqLyBjb25zdCBNT0RFUk5fQlJPV1NFUlNMSVNUX1RBUkdFVCA9IFtcbiAgICBcImNocm9tZSA2NFwiLFxuICAgIFwiZWRnZSA3OVwiLFxuICAgIFwiZmlyZWZveCA2N1wiLFxuICAgIFwib3BlcmEgNTFcIixcbiAgICBcInNhZmFyaSAxMlwiXG5dO1xubW9kdWxlLmV4cG9ydHMgPSBNT0RFUk5fQlJPV1NFUlNMSVNUX1RBUkdFVDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kZXJuLWJyb3dzZXJzbGlzdC10YXJnZXQuanMubWFwIl0sIm5hbWVzIjpbIk1PREVSTl9CUk9XU0VSU0xJU1RfVEFSR0VUIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/modern-browserslist-target.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js":
/*!*********************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js ***!
\*********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ensureLeadingSlash: () => (/* binding */ ensureLeadingSlash)\n/* harmony export */ });\n/**\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 */ function 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3BhZ2UtcGF0aC9lbnN1cmUtbGVhZGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7OztDQUdDLEdBQVUsU0FBU0EsbUJBQW1CQyxJQUFJO0lBQ3ZDLE9BQU9BLEtBQUtDLFVBQVUsQ0FBQyxPQUFPRCxPQUFPLE1BQU1BO0FBQy9DLEVBRUEsZ0RBQWdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcGFnZS1wYXRoL2Vuc3VyZS1sZWFkaW5nLXNsYXNoLmpzPzA0NjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3IgYSBnaXZlbiBwYWdlIHBhdGgsIHRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IHRoZXJlIGlzIGEgbGVhZGluZyBzbGFzaC5cbiAqIElmIHRoZXJlIGlzIG5vdCBhIGxlYWRpbmcgc2xhc2gsIG9uZSBpcyBhZGRlZCwgb3RoZXJ3aXNlIGl0IGlzIG5vb3AuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwYXRoIDogXCIvXCIgKyBwYXRoO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnN1cmUtbGVhZGluZy1zbGFzaC5qcy5tYXAiXSwibmFtZXMiOlsiZW5zdXJlTGVhZGluZ1NsYXNoIiwicGF0aCIsInN0YXJ0c1dpdGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/normalize-page-path.js":
/*!********************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/page-path/normalize-page-path.js ***!
\********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ normalizePagePath: () => (/* binding */ normalizePagePath)\n/* harmony export */ });\n/* harmony import */ var _ensure_leading_slash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ensure-leading-slash */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js\");\n/* harmony import */ var _router_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../router/utils */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/utils.js\");\n\n\n\n/**\n * Takes a page and transforms it into its file counterpart ensuring that the\n * output is normalized. Note this function is not idempotent because a page\n * `/index` can be referencing `/index/index.js` and `/index/index` could be\n * referencing `/index/index/index.js`. Examples:\n * - `/` -> `/index`\n * - `/index/foo` -> `/index/index/foo`\n * - `/index` -> `/index/index`\n */ function normalizePagePath(page) {\n const normalized = /^\\/index(\\/|$)/.test(page) && !(0,_router_utils__WEBPACK_IMPORTED_MODULE_1__.isDynamicRoute)(page) ? \"/index\" + page : page === \"/\" ? \"/index\" : (0,_ensure_leading_slash__WEBPACK_IMPORTED_MODULE_0__.ensureLeadingSlash)(page);\n if (false) {}\n return normalized;\n} //# sourceMappingURL=normalize-page-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3BhZ2UtcGF0aC9ub3JtYWxpemUtcGFnZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEQ7QUFDWDtBQUNQO0FBQzFDOzs7Ozs7OztDQVFDLEdBQVUsU0FBU0csa0JBQWtCQyxJQUFJO0lBQ3RDLE1BQU1DLGFBQWEsaUJBQWlCQyxJQUFJLENBQUNGLFNBQVMsQ0FBQ0gsNkRBQWNBLENBQUNHLFFBQVEsV0FBV0EsT0FBT0EsU0FBUyxNQUFNLFdBQVdKLHlFQUFrQkEsQ0FBQ0k7SUFDekksSUFBSUcsS0FBbUMsRUFBRSxFQU14QztJQUNELE9BQU9GO0FBQ1gsRUFFQSwrQ0FBK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9wYWdlLXBhdGgvbm9ybWFsaXplLXBhZ2UtcGF0aC5qcz8zYjhjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuc3VyZUxlYWRpbmdTbGFzaCB9IGZyb20gXCIuL2Vuc3VyZS1sZWFkaW5nLXNsYXNoXCI7XG5pbXBvcnQgeyBpc0R5bmFtaWNSb3V0ZSB9IGZyb20gXCIuLi9yb3V0ZXIvdXRpbHNcIjtcbmltcG9ydCB7IE5vcm1hbGl6ZUVycm9yIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG4vKipcbiAqIFRha2VzIGEgcGFnZSBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIGl0cyBmaWxlIGNvdW50ZXJwYXJ0IGVuc3VyaW5nIHRoYXQgdGhlXG4gKiBvdXRwdXQgaXMgbm9ybWFsaXplZC4gTm90ZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBpZGVtcG90ZW50IGJlY2F1c2UgYSBwYWdlXG4gKiBgL2luZGV4YCBjYW4gYmUgcmVmZXJlbmNpbmcgYC9pbmRleC9pbmRleC5qc2AgYW5kIGAvaW5kZXgvaW5kZXhgIGNvdWxkIGJlXG4gKiByZWZlcmVuY2luZyBgL2luZGV4L2luZGV4L2luZGV4LmpzYC4gRXhhbXBsZXM6XG4gKiAgLSBgL2AgLT4gYC9pbmRleGBcbiAqICAtIGAvaW5kZXgvZm9vYCAtPiBgL2luZGV4L2luZGV4L2Zvb2BcbiAqICAtIGAvaW5kZXhgIC0+IGAvaW5kZXgvaW5kZXhgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhZ2VQYXRoKHBhZ2UpIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gL15cXC9pbmRleChcXC98JCkvLnRlc3QocGFnZSkgJiYgIWlzRHluYW1pY1JvdXRlKHBhZ2UpID8gXCIvaW5kZXhcIiArIHBhZ2UgOiBwYWdlID09PSBcIi9cIiA/IFwiL2luZGV4XCIgOiBlbnN1cmVMZWFkaW5nU2xhc2gocGFnZSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSAhPT0gXCJlZGdlXCIpIHtcbiAgICAgICAgY29uc3QgeyBwb3NpeCB9ID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUGFnZSA9IHBvc2l4Lm5vcm1hbGl6ZShub3JtYWxpemVkKTtcbiAgICAgICAgaWYgKHJlc29sdmVkUGFnZSAhPT0gbm9ybWFsaXplZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vcm1hbGl6ZUVycm9yKFwiUmVxdWVzdGVkIGFuZCByZXNvbHZlZCBwYWdlIG1pc21hdGNoOiBcIiArIG5vcm1hbGl6ZWQgKyBcIiBcIiArIHJlc29sdmVkUGFnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vcm1hbGl6ZS1wYWdlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbImVuc3VyZUxlYWRpbmdTbGFzaCIsImlzRHluYW1pY1JvdXRlIiwiTm9ybWFsaXplRXJyb3IiLCJub3JtYWxpemVQYWdlUGF0aCIsInBhZ2UiLCJub3JtYWxpemVkIiwidGVzdCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1JVTlRJTUUiLCJwb3NpeCIsInJlcXVpcmUiLCJyZXNvbHZlZFBhZ2UiLCJub3JtYWxpemUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/normalize-page-path.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addLocale: () => (/* binding */ addLocale)\n/* harmony export */ });\n/* harmony import */ var _add_path_prefix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js\");\n/* harmony import */ var _path_has_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js\");\n\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */ function 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,_path_has_prefix__WEBPACK_IMPORTED_MODULE_1__.pathHasPrefix)(lower, \"/api\")) return path;\n if ((0,_path_has_prefix__WEBPACK_IMPORTED_MODULE_1__.pathHasPrefix)(lower, \"/\" + locale.toLowerCase())) return path;\n }\n // Add the locale prefix to the path.\n return (0,_add_path_prefix__WEBPACK_IMPORTED_MODULE_0__.addPathPrefix)(path, \"/\" + locale);\n} //# sourceMappingURL=add-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrRDtBQUNBO0FBQ2xEOzs7O0NBSUMsR0FBVSxTQUFTRSxVQUFVQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsYUFBYSxFQUFFQyxZQUFZO0lBQ25FLDRFQUE0RTtJQUM1RSxzQkFBc0I7SUFDdEIsSUFBSSxDQUFDRixVQUFVQSxXQUFXQyxlQUFlLE9BQU9GO0lBQ2hELE1BQU1JLFFBQVFKLEtBQUtLLFdBQVc7SUFDOUIsMkVBQTJFO0lBQzNFLGlDQUFpQztJQUNqQyxJQUFJLENBQUNGLGNBQWM7UUFDZixJQUFJTCwrREFBYUEsQ0FBQ00sT0FBTyxTQUFTLE9BQU9KO1FBQ3pDLElBQUlGLCtEQUFhQSxDQUFDTSxPQUFPLE1BQU1ILE9BQU9JLFdBQVcsS0FBSyxPQUFPTDtJQUNqRTtJQUNBLHFDQUFxQztJQUNyQyxPQUFPSCwrREFBYUEsQ0FBQ0csTUFBTSxNQUFNQztBQUNyQyxFQUVBLHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtbG9jYWxlLmpzP2Y4MzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkUGF0aFByZWZpeCB9IGZyb20gXCIuL2FkZC1wYXRoLXByZWZpeFwiO1xuaW1wb3J0IHsgcGF0aEhhc1ByZWZpeCB9IGZyb20gXCIuL3BhdGgtaGFzLXByZWZpeFwiO1xuLyoqXG4gKiBGb3IgYSBnaXZlbiBwYXRoIGFuZCBhIGxvY2FsZSwgaWYgdGhlIGxvY2FsZSBpcyBnaXZlbiwgaXQgd2lsbCBwcmVmaXggdGhlXG4gKiBsb2NhbGUuIFRoZSBwYXRoIHNob3VsZG4ndCBiZSBhbiBBUEkgcGF0aC4gSWYgYSBkZWZhdWx0IGxvY2FsZSBpcyBnaXZlbiB0aGVcbiAqIHByZWZpeCB3aWxsIGJlIG9taXR0ZWQgaWYgdGhlIGxvY2FsZSBpcyBhbHJlYWR5IHRoZSBkZWZhdWx0IGxvY2FsZS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gYWRkTG9jYWxlKHBhdGgsIGxvY2FsZSwgZGVmYXVsdExvY2FsZSwgaWdub3JlUHJlZml4KSB7XG4gICAgLy8gSWYgbm8gbG9jYWxlIHdhcyBnaXZlbiBvciB0aGUgbG9jYWxlIGlzIHRoZSBkZWZhdWx0IGxvY2FsZSwgd2UgZG9uJ3QgbmVlZFxuICAgIC8vIHRvIHByZWZpeCB0aGUgcGF0aC5cbiAgICBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09IGRlZmF1bHRMb2NhbGUpIHJldHVybiBwYXRoO1xuICAgIGNvbnN0IGxvd2VyID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIC8vIElmIHRoZSBwYXRoIGlzIGFuIEFQSSBwYXRoIG9yIHRoZSBwYXRoIGFscmVhZHkgaGFzIHRoZSBsb2NhbGUgcHJlZml4LCB3ZVxuICAgIC8vIGRvbid0IG5lZWQgdG8gcHJlZml4IHRoZSBwYXRoLlxuICAgIGlmICghaWdub3JlUHJlZml4KSB7XG4gICAgICAgIGlmIChwYXRoSGFzUHJlZml4KGxvd2VyLCBcIi9hcGlcIikpIHJldHVybiBwYXRoO1xuICAgICAgICBpZiAocGF0aEhhc1ByZWZpeChsb3dlciwgXCIvXCIgKyBsb2NhbGUudG9Mb3dlckNhc2UoKSkpIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICAvLyBBZGQgdGhlIGxvY2FsZSBwcmVmaXggdG8gdGhlIHBhdGguXG4gICAgcmV0dXJuIGFkZFBhdGhQcmVmaXgocGF0aCwgXCIvXCIgKyBsb2NhbGUpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtbG9jYWxlLmpzLm1hcCJdLCJuYW1lcyI6WyJhZGRQYXRoUHJlZml4IiwicGF0aEhhc1ByZWZpeCIsImFkZExvY2FsZSIsInBhdGgiLCJsb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiaWdub3JlUHJlZml4IiwibG93ZXIiLCJ0b0xvd2VyQ2FzZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js":
/*!*******************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addPathPrefix: () => (/* binding */ addPathPrefix)\n/* harmony export */ });\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js\");\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */ function addPathPrefix(path, prefix) {\n if (!path.startsWith(\"/\") || !prefix) {\n return path;\n }\n const { pathname, query, hash } = (0,_parse_path__WEBPACK_IMPORTED_MODULE_0__.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBeUM7QUFDekM7OztDQUdDLEdBQVUsU0FBU0MsY0FBY0MsSUFBSSxFQUFFQyxNQUFNO0lBQzFDLElBQUksQ0FBQ0QsS0FBS0UsVUFBVSxDQUFDLFFBQVEsQ0FBQ0QsUUFBUTtRQUNsQyxPQUFPRDtJQUNYO0lBQ0EsTUFBTSxFQUFFRyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUdQLHNEQUFTQSxDQUFDRTtJQUM1QyxPQUFPLEtBQUtDLFNBQVNFLFdBQVdDLFFBQVFDO0FBQzVDLEVBRUEsMkNBQTJDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeC5qcz8xMDdlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gXCIuL3BhcnNlLXBhdGhcIjtcbi8qKlxuICogQWRkcyB0aGUgcHJvdmlkZWQgcHJlZml4IHRvIHRoZSBnaXZlbiBwYXRoLiBJdCBmaXJzdCBlbnN1cmVzIHRoYXQgdGhlIHBhdGhcbiAqIGlzIGluZGVlZCBzdGFydGluZyB3aXRoIGEgc2xhc2guXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGhQcmVmaXgocGF0aCwgcHJlZml4KSB7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8ICFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgcmV0dXJuIFwiXCIgKyBwcmVmaXggKyBwYXRobmFtZSArIHF1ZXJ5ICsgaGFzaDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLXBhdGgtcHJlZml4LmpzLm1hcCJdLCJuYW1lcyI6WyJwYXJzZVBhdGgiLCJhZGRQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js":
/*!*******************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addPathSuffix: () => (/* binding */ addPathSuffix)\n/* harmony export */ });\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js\");\n\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */ function addPathSuffix(path, suffix) {\n if (!path.startsWith(\"/\") || !suffix) {\n return path;\n }\n const { pathname, query, hash } = (0,_parse_path__WEBPACK_IMPORTED_MODULE_0__.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1zdWZmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBeUM7QUFDekM7Ozs7Q0FJQyxHQUFVLFNBQVNDLGNBQWNDLElBQUksRUFBRUMsTUFBTTtJQUMxQyxJQUFJLENBQUNELEtBQUtFLFVBQVUsQ0FBQyxRQUFRLENBQUNELFFBQVE7UUFDbEMsT0FBT0Q7SUFDWDtJQUNBLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxHQUFHUCxzREFBU0EsQ0FBQ0U7SUFDNUMsT0FBTyxLQUFLRyxXQUFXRixTQUFTRyxRQUFRQztBQUM1QyxFQUVBLDJDQUEyQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1zdWZmaXguanM/ZGZjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZVBhdGggfSBmcm9tIFwiLi9wYXJzZS1wYXRoXCI7XG4vKipcbiAqIFNpbWlsYXJseSB0byBgYWRkUGF0aFByZWZpeGAsIHRoaXMgZnVuY3Rpb24gYWRkcyBhIHN1ZmZpeCBhdCB0aGUgZW5kIG9uIHRoZVxuICogcHJvdmlkZWQgcGF0aC4gSXQgYWxzbyB3b3JrcyBvbmx5IGZvciBwYXRocyBlbnN1cmluZyB0aGUgYXJndW1lbnQgc3RhcnRzXG4gKiB3aXRoIGEgc2xhc2guXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGhTdWZmaXgocGF0aCwgc3VmZml4KSB7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8ICFzdWZmaXgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgcmV0dXJuIFwiXCIgKyBwYXRobmFtZSArIHN1ZmZpeCArIHF1ZXJ5ICsgaGFzaDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLXBhdGgtc3VmZml4LmpzLm1hcCJdLCJuYW1lcyI6WyJwYXJzZVBhdGgiLCJhZGRQYXRoU3VmZml4IiwicGF0aCIsInN1ZmZpeCIsInN0YXJ0c1dpdGgiLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js":
/*!*************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ normalizeAppPath: () => (/* binding */ normalizeAppPath),\n/* harmony export */ normalizeRscURL: () => (/* binding */ normalizeRscURL)\n/* harmony export */ });\n/* harmony import */ var _page_path_ensure_leading_slash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../page-path/ensure-leading-slash */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js\");\n/* harmony import */ var _segment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../segment */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/segment.js\");\n\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */ function normalizeAppPath(route) {\n return (0,_page_path_ensure_leading_slash__WEBPACK_IMPORTED_MODULE_0__.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__WEBPACK_IMPORTED_MODULE_1__.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}\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */ function 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEwRTtBQUMzQjtBQUMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQVUsU0FBU0UsaUJBQWlCQyxLQUFLO0lBQ3RDLE9BQU9ILG1GQUFrQkEsQ0FBQ0csTUFBTUMsS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQyxDQUFDQyxVQUFVQyxTQUFTQyxPQUFPQztRQUN6RSw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDRixTQUFTO1lBQ1YsT0FBT0Q7UUFDWDtRQUNBLHNCQUFzQjtRQUN0QixJQUFJTCx3REFBY0EsQ0FBQ00sVUFBVTtZQUN6QixPQUFPRDtRQUNYO1FBQ0EsaUNBQWlDO1FBQ2pDLElBQUlDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSztZQUNwQixPQUFPRDtRQUNYO1FBQ0EsdURBQXVEO1FBQ3ZELElBQUksQ0FBQ0MsWUFBWSxVQUFVQSxZQUFZLE9BQU0sS0FBTUMsVUFBVUMsU0FBU0MsTUFBTSxHQUFHLEdBQUc7WUFDOUUsT0FBT0o7UUFDWDtRQUNBLE9BQU9BLFdBQVcsTUFBTUM7SUFDNUIsR0FBRztBQUNQO0FBQ0E7OztDQUdDLEdBQVUsU0FBU0ksZ0JBQWdCQyxHQUFHO0lBQ25DLE9BQU9BLElBQUlDLE9BQU8sQ0FBQyxlQUNuQjtBQUNKLEVBRUEscUNBQXFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRocy5qcz9iNjg5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuc3VyZUxlYWRpbmdTbGFzaCB9IGZyb20gXCIuLi8uLi9wYWdlLXBhdGgvZW5zdXJlLWxlYWRpbmctc2xhc2hcIjtcbmltcG9ydCB7IGlzR3JvdXBTZWdtZW50IH0gZnJvbSBcIi4uLy4uL3NlZ21lbnRcIjtcbi8qKlxuICogTm9ybWFsaXplcyBhbiBhcHAgcm91dGUgc28gaXQgcmVwcmVzZW50cyB0aGUgYWN0dWFsIHJlcXVlc3QgcGF0aC4gRXNzZW50aWFsbHlcbiAqIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyB0cmFuc2Zvcm1hdGlvbnM6XG4gKlxuICogLSBgLyhkYXNoYm9hcmQpL3VzZXIvW2lkXS9wYWdlYCB0byBgL3VzZXIvW2lkXWBcbiAqIC0gYC8oZGFzaGJvYXJkKS9hY2NvdW50L3BhZ2VgIHRvIGAvYWNjb3VudGBcbiAqIC0gYC91c2VyL1tpZF0vcGFnZWAgdG8gYC91c2VyL1tpZF1gXG4gKiAtIGAvYWNjb3VudC9wYWdlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvcGFnZWAgdG8gYC9gXG4gKiAtIGAvKGRhc2hib2FyZCkvdXNlci9baWRdL3JvdXRlYCB0byBgL3VzZXIvW2lkXWBcbiAqIC0gYC8oZGFzaGJvYXJkKS9hY2NvdW50L3JvdXRlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvdXNlci9baWRdL3JvdXRlYCB0byBgL3VzZXIvW2lkXWBcbiAqIC0gYC9hY2NvdW50L3JvdXRlYCB0byBgL2FjY291bnRgXG4gKiAtIGAvcm91dGVgIHRvIGAvYFxuICogLSBgL2AgdG8gYC9gXG4gKlxuICogQHBhcmFtIHJvdXRlIHRoZSBhcHAgcm91dGUgdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB0aGUgbm9ybWFsaXplZCBwYXRobmFtZVxuICovIGV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBcHBQYXRoKHJvdXRlKSB7XG4gICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChyb3V0ZS5zcGxpdChcIi9cIikucmVkdWNlKChwYXRobmFtZSwgc2VnbWVudCwgaW5kZXgsIHNlZ21lbnRzKT0+e1xuICAgICAgICAvLyBFbXB0eSBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgICAgaWYgKCFzZWdtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gR3JvdXBzIGFyZSBpZ25vcmVkLlxuICAgICAgICBpZiAoaXNHcm91cFNlZ21lbnQoc2VnbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQYXJhbGxlbCBzZWdtZW50cyBhcmUgaWdub3JlZC5cbiAgICAgICAgaWYgKHNlZ21lbnRbMF0gPT09IFwiQFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGxhc3Qgc2VnbWVudCAoaWYgaXQncyBhIGxlYWYpIHNob3VsZCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAoKHNlZ21lbnQgPT09IFwicGFnZVwiIHx8IHNlZ21lbnQgPT09IFwicm91dGVcIikgJiYgaW5kZXggPT09IHNlZ21lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF0aG5hbWUgKyBcIi9cIiArIHNlZ21lbnQ7XG4gICAgfSwgXCJcIikpO1xufVxuLyoqXG4gKiBTdHJpcHMgdGhlIGAucnNjYCBleHRlbnNpb24gaWYgaXQncyBpbiB0aGUgcGF0aG5hbWUuXG4gKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb24gZnVsbCB1cmxzIGl0IGNoZWNrcyBgP2AgZm9yIHNlYXJjaFBhcmFtcyBoYW5kbGluZy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUnNjVVJMKHVybCkge1xuICAgIHJldHVybiB1cmwucmVwbGFjZSgvXFwucnNjKCR8XFw/KS8sIC8vICQxIGVuc3VyZXMgYD9gIGlzIHByZXNlcnZlZFxuICAgIFwiJDFcIik7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1wYXRocy5qcy5tYXAiXSwibmFtZXMiOlsiZW5zdXJlTGVhZGluZ1NsYXNoIiwiaXNHcm91cFNlZ21lbnQiLCJub3JtYWxpemVBcHBQYXRoIiwicm91dGUiLCJzcGxpdCIsInJlZHVjZSIsInBhdGhuYW1lIiwic2VnbWVudCIsImluZGV4Iiwic2VnbWVudHMiLCJsZW5ndGgiLCJub3JtYWxpemVSc2NVUkwiLCJ1cmwiLCJyZXBsYWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatNextPathnameInfo: () => (/* binding */ formatNextPathnameInfo)\n/* harmony export */ });\n/* harmony import */ var _remove_trailing_slash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js\");\n/* harmony import */ var _add_path_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-path-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js\");\n/* harmony import */ var _add_path_suffix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-path-suffix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js\");\n/* harmony import */ var _add_locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-locale */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js\");\n\n\n\n\nfunction formatNextPathnameInfo(info) {\n let pathname = (0,_add_locale__WEBPACK_IMPORTED_MODULE_3__.addLocale)(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix);\n if (info.buildId || !info.trailingSlash) {\n pathname = (0,_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_0__.removeTrailingSlash)(pathname);\n }\n if (info.buildId) {\n pathname = (0,_add_path_suffix__WEBPACK_IMPORTED_MODULE_2__.addPathSuffix)((0,_add_path_prefix__WEBPACK_IMPORTED_MODULE_1__.addPathPrefix)(pathname, \"/_next/data/\" + info.buildId), info.pathname === \"/\" ? \"index.json\" : \".json\");\n }\n pathname = (0,_add_path_prefix__WEBPACK_IMPORTED_MODULE_1__.addPathPrefix)(pathname, info.basePath);\n return !info.buildId && info.trailingSlash ? !pathname.endsWith(\"/\") ? (0,_add_path_suffix__WEBPACK_IMPORTED_MODULE_2__.addPathSuffix)(pathname, \"/\") : pathname : (0,_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_0__.removeTrailingSlash)(pathname);\n} //# sourceMappingURL=format-next-pathname-info.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9mb3JtYXQtbmV4dC1wYXRobmFtZS1pbmZvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQThEO0FBQ1o7QUFDQTtBQUNUO0FBQ2xDLFNBQVNJLHVCQUF1QkMsSUFBSTtJQUN2QyxJQUFJQyxXQUFXSCxzREFBU0EsQ0FBQ0UsS0FBS0MsUUFBUSxFQUFFRCxLQUFLRSxNQUFNLEVBQUVGLEtBQUtHLE9BQU8sR0FBR0MsWUFBWUosS0FBS0ssYUFBYSxFQUFFTCxLQUFLTSxZQUFZO0lBQ3JILElBQUlOLEtBQUtHLE9BQU8sSUFBSSxDQUFDSCxLQUFLTyxhQUFhLEVBQUU7UUFDckNOLFdBQVdOLDJFQUFtQkEsQ0FBQ007SUFDbkM7SUFDQSxJQUFJRCxLQUFLRyxPQUFPLEVBQUU7UUFDZEYsV0FBV0osK0RBQWFBLENBQUNELCtEQUFhQSxDQUFDSyxVQUFVLGlCQUFpQkQsS0FBS0csT0FBTyxHQUFHSCxLQUFLQyxRQUFRLEtBQUssTUFBTSxlQUFlO0lBQzVIO0lBQ0FBLFdBQVdMLCtEQUFhQSxDQUFDSyxVQUFVRCxLQUFLUSxRQUFRO0lBQ2hELE9BQU8sQ0FBQ1IsS0FBS0csT0FBTyxJQUFJSCxLQUFLTyxhQUFhLEdBQUcsQ0FBQ04sU0FBU1EsUUFBUSxDQUFDLE9BQU9aLCtEQUFhQSxDQUFDSSxVQUFVLE9BQU9BLFdBQVdOLDJFQUFtQkEsQ0FBQ007QUFDekksRUFFQSxxREFBcUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LW5leHQtcGF0aG5hbWUtaW5mby5qcz81NDdiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW92ZVRyYWlsaW5nU2xhc2ggfSBmcm9tIFwiLi9yZW1vdmUtdHJhaWxpbmctc2xhc2hcIjtcbmltcG9ydCB7IGFkZFBhdGhQcmVmaXggfSBmcm9tIFwiLi9hZGQtcGF0aC1wcmVmaXhcIjtcbmltcG9ydCB7IGFkZFBhdGhTdWZmaXggfSBmcm9tIFwiLi9hZGQtcGF0aC1zdWZmaXhcIjtcbmltcG9ydCB7IGFkZExvY2FsZSB9IGZyb20gXCIuL2FkZC1sb2NhbGVcIjtcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROZXh0UGF0aG5hbWVJbmZvKGluZm8pIHtcbiAgICBsZXQgcGF0aG5hbWUgPSBhZGRMb2NhbGUoaW5mby5wYXRobmFtZSwgaW5mby5sb2NhbGUsIGluZm8uYnVpbGRJZCA/IHVuZGVmaW5lZCA6IGluZm8uZGVmYXVsdExvY2FsZSwgaW5mby5pZ25vcmVQcmVmaXgpO1xuICAgIGlmIChpbmZvLmJ1aWxkSWQgfHwgIWluZm8udHJhaWxpbmdTbGFzaCkge1xuICAgICAgICBwYXRobmFtZSA9IHJlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpO1xuICAgIH1cbiAgICBpZiAoaW5mby5idWlsZElkKSB7XG4gICAgICAgIHBhdGhuYW1lID0gYWRkUGF0aFN1ZmZpeChhZGRQYXRoUHJlZml4KHBhdGhuYW1lLCBcIi9fbmV4dC9kYXRhL1wiICsgaW5mby5idWlsZElkKSwgaW5mby5wYXRobmFtZSA9PT0gXCIvXCIgPyBcImluZGV4Lmpzb25cIiA6IFwiLmpzb25cIik7XG4gICAgfVxuICAgIHBhdGhuYW1lID0gYWRkUGF0aFByZWZpeChwYXRobmFtZSwgaW5mby5iYXNlUGF0aCk7XG4gICAgcmV0dXJuICFpbmZvLmJ1aWxkSWQgJiYgaW5mby50cmFpbGluZ1NsYXNoID8gIXBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSA/IGFkZFBhdGhTdWZmaXgocGF0aG5hbWUsIFwiL1wiKSA6IHBhdGhuYW1lIDogcmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcm1hdC1uZXh0LXBhdGhuYW1lLWluZm8uanMubWFwIl0sIm5hbWVzIjpbInJlbW92ZVRyYWlsaW5nU2xhc2giLCJhZGRQYXRoUHJlZml4IiwiYWRkUGF0aFN1ZmZpeCIsImFkZExvY2FsZSIsImZvcm1hdE5leHRQYXRobmFtZUluZm8iLCJpbmZvIiwicGF0aG5hbWUiLCJsb2NhbGUiLCJidWlsZElkIiwidW5kZWZpbmVkIiwiZGVmYXVsdExvY2FsZSIsImlnbm9yZVByZWZpeCIsInRyYWlsaW5nU2xhc2giLCJiYXNlUGF0aCIsImVuZHNXaXRoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js":
/*!**************************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js ***!
\**************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getNextPathnameInfo: () => (/* binding */ getNextPathnameInfo)\n/* harmony export */ });\n/* harmony import */ var _i18n_normalize_locale_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../i18n/normalize-locale-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js\");\n/* harmony import */ var _remove_path_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./remove-path-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js\");\n/* harmony import */ var _path_has_prefix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js\");\n\n\n\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,_path_has_prefix__WEBPACK_IMPORTED_MODULE_2__.pathHasPrefix)(info.pathname, basePath)) {\n info.pathname = (0,_remove_path_prefix__WEBPACK_IMPORTED_MODULE_1__.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,_i18n_normalize_locale_path__WEBPACK_IMPORTED_MODULE_0__.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,_i18n_normalize_locale_path__WEBPACK_IMPORTED_MODULE_0__.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9nZXQtbmV4dC1wYXRobmFtZS1pbmZvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBdUU7QUFDZjtBQUNOO0FBQzNDLFNBQVNHLG9CQUFvQkMsUUFBUSxFQUFFQyxPQUFPO0lBQ2pELElBQUlDO0lBQ0osTUFBTSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsYUFBYSxFQUFFLEdBQUcsQ0FBQ0gsc0JBQXNCRCxRQUFRSyxVQUFVLEtBQUssT0FBT0osc0JBQXNCLENBQUM7SUFDdEgsTUFBTUssT0FBTztRQUNUUDtRQUNBSyxlQUFlTCxhQUFhLE1BQU1BLFNBQVNRLFFBQVEsQ0FBQyxPQUFPSDtJQUMvRDtJQUNBLElBQUlGLFlBQVlMLCtEQUFhQSxDQUFDUyxLQUFLUCxRQUFRLEVBQUVHLFdBQVc7UUFDcERJLEtBQUtQLFFBQVEsR0FBR0gscUVBQWdCQSxDQUFDVSxLQUFLUCxRQUFRLEVBQUVHO1FBQ2hESSxLQUFLSixRQUFRLEdBQUdBO0lBQ3BCO0lBQ0EsSUFBSU0sdUJBQXVCRixLQUFLUCxRQUFRO0lBQ3hDLElBQUlPLEtBQUtQLFFBQVEsQ0FBQ1UsVUFBVSxDQUFDLG1CQUFtQkgsS0FBS1AsUUFBUSxDQUFDUSxRQUFRLENBQUMsVUFBVTtRQUM3RSxNQUFNRyxRQUFRSixLQUFLUCxRQUFRLENBQUNZLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSUEsT0FBTyxDQUFDLFdBQVcsSUFBSUMsS0FBSyxDQUFDO1FBQ3pGLE1BQU1DLFVBQVVILEtBQUssQ0FBQyxFQUFFO1FBQ3hCSixLQUFLTyxPQUFPLEdBQUdBO1FBQ2ZMLHVCQUF1QkUsS0FBSyxDQUFDLEVBQUUsS0FBSyxVQUFVLE1BQU1BLE1BQU1JLEtBQUssQ0FBQyxHQUFHQyxJQUFJLENBQUMsT0FBTztRQUMvRSxzREFBc0Q7UUFDdEQsa0RBQWtEO1FBQ2xELElBQUlmLFFBQVFnQixTQUFTLEtBQUssTUFBTTtZQUM1QlYsS0FBS1AsUUFBUSxHQUFHUztRQUNwQjtJQUNKO0lBQ0EsNEVBQTRFO0lBQzVFLHlCQUF5QjtJQUN6QixJQUFJTCxNQUFNO1FBQ04sSUFBSWMsU0FBU2pCLFFBQVFrQixZQUFZLEdBQUdsQixRQUFRa0IsWUFBWSxDQUFDQyxPQUFPLENBQUNiLEtBQUtQLFFBQVEsSUFBSUosZ0ZBQW1CQSxDQUFDVyxLQUFLUCxRQUFRLEVBQUVJLEtBQUtpQixPQUFPO1FBQ2pJZCxLQUFLZSxNQUFNLEdBQUdKLE9BQU9LLGNBQWM7UUFDbkMsSUFBSUM7UUFDSmpCLEtBQUtQLFFBQVEsR0FBRyxDQUFDd0IsbUJBQW1CTixPQUFPbEIsUUFBUSxLQUFLLE9BQU93QixtQkFBbUJqQixLQUFLUCxRQUFRO1FBQy9GLElBQUksQ0FBQ2tCLE9BQU9LLGNBQWMsSUFBSWhCLEtBQUtPLE9BQU8sRUFBRTtZQUN4Q0ksU0FBU2pCLFFBQVFrQixZQUFZLEdBQUdsQixRQUFRa0IsWUFBWSxDQUFDQyxPQUFPLENBQUNYLHdCQUF3QmIsZ0ZBQW1CQSxDQUFDYSxzQkFBc0JMLEtBQUtpQixPQUFPO1lBQzNJLElBQUlILE9BQU9LLGNBQWMsRUFBRTtnQkFDdkJoQixLQUFLZSxNQUFNLEdBQUdKLE9BQU9LLGNBQWM7WUFDdkM7UUFDSjtJQUNKO0lBQ0EsT0FBT2hCO0FBQ1gsRUFFQSxrREFBa0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LW5leHQtcGF0aG5hbWUtaW5mby5qcz8xNDUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZUxvY2FsZVBhdGggfSBmcm9tIFwiLi4vLi4vaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGhcIjtcbmltcG9ydCB7IHJlbW92ZVBhdGhQcmVmaXggfSBmcm9tIFwiLi9yZW1vdmUtcGF0aC1wcmVmaXhcIjtcbmltcG9ydCB7IHBhdGhIYXNQcmVmaXggfSBmcm9tIFwiLi9wYXRoLWhhcy1wcmVmaXhcIjtcbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0UGF0aG5hbWVJbmZvKHBhdGhuYW1lLCBvcHRpb25zKSB7XG4gICAgdmFyIF9vcHRpb25zX25leHRDb25maWc7XG4gICAgY29uc3QgeyBiYXNlUGF0aCwgaTE4biwgdHJhaWxpbmdTbGFzaCB9ID0gKF9vcHRpb25zX25leHRDb25maWcgPSBvcHRpb25zLm5leHRDb25maWcpICE9IG51bGwgPyBfb3B0aW9uc19uZXh0Q29uZmlnIDoge307XG4gICAgY29uc3QgaW5mbyA9IHtcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIHRyYWlsaW5nU2xhc2g6IHBhdGhuYW1lICE9PSBcIi9cIiA/IHBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSA6IHRyYWlsaW5nU2xhc2hcbiAgICB9O1xuICAgIGlmIChiYXNlUGF0aCAmJiBwYXRoSGFzUHJlZml4KGluZm8ucGF0aG5hbWUsIGJhc2VQYXRoKSkge1xuICAgICAgICBpbmZvLnBhdGhuYW1lID0gcmVtb3ZlUGF0aFByZWZpeChpbmZvLnBhdGhuYW1lLCBiYXNlUGF0aCk7XG4gICAgICAgIGluZm8uYmFzZVBhdGggPSBiYXNlUGF0aDtcbiAgICB9XG4gICAgbGV0IHBhdGhuYW1lTm9EYXRhUHJlZml4ID0gaW5mby5wYXRobmFtZTtcbiAgICBpZiAoaW5mby5wYXRobmFtZS5zdGFydHNXaXRoKFwiL19uZXh0L2RhdGEvXCIpICYmIGluZm8ucGF0aG5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb25zdCBwYXRocyA9IGluZm8ucGF0aG5hbWUucmVwbGFjZSgvXlxcL19uZXh0XFwvZGF0YVxcLy8sIFwiXCIpLnJlcGxhY2UoL1xcLmpzb24kLywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICAgICAgICBjb25zdCBidWlsZElkID0gcGF0aHNbMF07XG4gICAgICAgIGluZm8uYnVpbGRJZCA9IGJ1aWxkSWQ7XG4gICAgICAgIHBhdGhuYW1lTm9EYXRhUHJlZml4ID0gcGF0aHNbMV0gIT09IFwiaW5kZXhcIiA/IFwiL1wiICsgcGF0aHMuc2xpY2UoMSkuam9pbihcIi9cIikgOiBcIi9cIjtcbiAgICAgICAgLy8gdXBkYXRlIHBhdGhuYW1lIHdpdGggbm9ybWFsaXplZCBpZiBlbmFibGVkIGFsdGhvdWdoXG4gICAgICAgIC8vIHdlIHVzZSBub3JtYWxpemVkIHRvIHBvcHVsYXRlIGxvY2FsZSBpbmZvIHN0aWxsXG4gICAgICAgIGlmIChvcHRpb25zLnBhcnNlRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaW5mby5wYXRobmFtZSA9IHBhdGhuYW1lTm9EYXRhUHJlZml4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIElmIHByb3ZpZGVkLCB1c2UgdGhlIGxvY2FsZSByb3V0ZSBub3JtYWxpemVyIHRvIGRldGVjdCB0aGUgbG9jYWxlIGluc3RlYWRcbiAgICAvLyBvZiB0aGUgZnVuY3Rpb24gYmVsb3cuXG4gICAgaWYgKGkxOG4pIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG9wdGlvbnMuaTE4blByb3ZpZGVyID8gb3B0aW9ucy5pMThuUHJvdmlkZXIuYW5hbHl6ZShpbmZvLnBhdGhuYW1lKSA6IG5vcm1hbGl6ZUxvY2FsZVBhdGgoaW5mby5wYXRobmFtZSwgaTE4bi5sb2NhbGVzKTtcbiAgICAgICAgaW5mby5sb2NhbGUgPSByZXN1bHQuZGV0ZWN0ZWRMb2NhbGU7XG4gICAgICAgIHZhciBfcmVzdWx0X3BhdGhuYW1lO1xuICAgICAgICBpbmZvLnBhdGhuYW1lID0gKF9yZXN1bHRfcGF0aG5hbWUgPSByZXN1bHQucGF0aG5hbWUpICE9IG51bGwgPyBfcmVzdWx0X3BhdGhuYW1lIDogaW5mby5wYXRobmFtZTtcbiAgICAgICAgaWYgKCFyZXN1bHQuZGV0ZWN0ZWRMb2NhbGUgJiYgaW5mby5idWlsZElkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBvcHRpb25zLmkxOG5Qcm92aWRlciA/IG9wdGlvbnMuaTE4blByb3ZpZGVyLmFuYWx5emUocGF0aG5hbWVOb0RhdGFQcmVmaXgpIDogbm9ybWFsaXplTG9jYWxlUGF0aChwYXRobmFtZU5vRGF0YVByZWZpeCwgaTE4bi5sb2NhbGVzKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBpbmZvLmxvY2FsZSA9IHJlc3VsdC5kZXRlY3RlZExvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5mbztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LW5leHQtcGF0aG5hbWUtaW5mby5qcy5tYXAiXSwibmFtZXMiOlsibm9ybWFsaXplTG9jYWxlUGF0aCIsInJlbW92ZVBhdGhQcmVmaXgiLCJwYXRoSGFzUHJlZml4IiwiZ2V0TmV4dFBhdGhuYW1lSW5mbyIsInBhdGhuYW1lIiwib3B0aW9ucyIsIl9vcHRpb25zX25leHRDb25maWciLCJiYXNlUGF0aCIsImkxOG4iLCJ0cmFpbGluZ1NsYXNoIiwibmV4dENvbmZpZyIsImluZm8iLCJlbmRzV2l0aCIsInBhdGhuYW1lTm9EYXRhUHJlZml4Iiwic3RhcnRzV2l0aCIsInBhdGhzIiwicmVwbGFjZSIsInNwbGl0IiwiYnVpbGRJZCIsInNsaWNlIiwiam9pbiIsInBhcnNlRGF0YSIsInJlc3VsdCIsImkxOG5Qcm92aWRlciIsImFuYWx5emUiLCJsb2NhbGVzIiwibG9jYWxlIiwiZGV0ZWN0ZWRMb2NhbGUiLCJfcmVzdWx0X3BhdGhuYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/index.js":
/*!*********************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/index.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getSortedRoutes: () => (/* reexport safe */ _sorted_routes__WEBPACK_IMPORTED_MODULE_0__.getSortedRoutes),\n/* harmony export */ isDynamicRoute: () => (/* reexport safe */ _is_dynamic__WEBPACK_IMPORTED_MODULE_1__.isDynamicRoute)\n/* harmony export */ });\n/* harmony import */ var _sorted_routes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sorted-routes */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/sorted-routes.js\");\n/* harmony import */ var _is_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-dynamic */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/is-dynamic.js\");\n\n //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtEO0FBQ0osQ0FFOUMsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2luZGV4LmpzP2UzOWQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZ2V0U29ydGVkUm91dGVzIH0gZnJvbSBcIi4vc29ydGVkLXJvdXRlc1wiO1xuZXhwb3J0IHsgaXNEeW5hbWljUm91dGUgfSBmcm9tIFwiLi9pcy1keW5hbWljXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJnZXRTb3J0ZWRSb3V0ZXMiLCJpc0R5bmFtaWNSb3V0ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/is-dynamic.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/is-dynamic.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isDynamicRoute: () => (/* binding */ isDynamicRoute)\n/* harmony export */ });\n/* harmony import */ var _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../server/future/helpers/interception-routes */ \"(rsc)/./node_modules/next/dist/esm/server/future/helpers/interception-routes.js\");\n\n// Identify /[param]/ in route string\nconst TEST_ROUTE = /\\/\\[[^/]+?\\](?=\\/|$)/;\nfunction isDynamicRoute(route) {\n if ((0,_server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__.isInterceptionRouteAppPath)(route)) {\n route = (0,_server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__.extractInterceptionRouteInformation)(route).interceptedRoute;\n }\n return TEST_ROUTE.test(route);\n} //# sourceMappingURL=is-dynamic.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1keW5hbWljLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXdJO0FBQ3hJLHFDQUFxQztBQUNyQyxNQUFNRSxhQUFhO0FBQ1osU0FBU0MsZUFBZUMsS0FBSztJQUNoQyxJQUFJSCxzR0FBMEJBLENBQUNHLFFBQVE7UUFDbkNBLFFBQVFKLCtHQUFtQ0EsQ0FBQ0ksT0FBT0MsZ0JBQWdCO0lBQ3ZFO0lBQ0EsT0FBT0gsV0FBV0ksSUFBSSxDQUFDRjtBQUMzQixFQUVBLHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1keW5hbWljLmpzP2Q1NjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24sIGlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZlci9mdXR1cmUvaGVscGVycy9pbnRlcmNlcHRpb24tcm91dGVzXCI7XG4vLyBJZGVudGlmeSAvW3BhcmFtXS8gaW4gcm91dGUgc3RyaW5nXG5jb25zdCBURVNUX1JPVVRFID0gL1xcL1xcW1teL10rP1xcXSg/PVxcL3wkKS87XG5leHBvcnQgZnVuY3Rpb24gaXNEeW5hbWljUm91dGUocm91dGUpIHtcbiAgICBpZiAoaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgocm91dGUpKSB7XG4gICAgICAgIHJvdXRlID0gZXh0cmFjdEludGVyY2VwdGlvblJvdXRlSW5mb3JtYXRpb24ocm91dGUpLmludGVyY2VwdGVkUm91dGU7XG4gICAgfVxuICAgIHJldHVybiBURVNUX1JPVVRFLnRlc3Qocm91dGUpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1keW5hbWljLmpzLm1hcCJdLCJuYW1lcyI6WyJleHRyYWN0SW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbiIsImlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIiwiVEVTVF9ST1VURSIsImlzRHluYW1pY1JvdXRlIiwicm91dGUiLCJpbnRlcmNlcHRlZFJvdXRlIiwidGVzdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/is-dynamic.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parsePath: () => (/* binding */ parsePath)\n/* harmony export */ });\n/**\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 */ function 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztDQUlDLEdBQVUsU0FBU0EsVUFBVUMsSUFBSTtJQUM5QixNQUFNQyxZQUFZRCxLQUFLRSxPQUFPLENBQUM7SUFDL0IsTUFBTUMsYUFBYUgsS0FBS0UsT0FBTyxDQUFDO0lBQ2hDLE1BQU1FLFdBQVdELGFBQWEsQ0FBQyxLQUFNRixDQUFBQSxZQUFZLEtBQUtFLGFBQWFGLFNBQVE7SUFDM0UsSUFBSUcsWUFBWUgsWUFBWSxDQUFDLEdBQUc7UUFDNUIsT0FBTztZQUNISSxVQUFVTCxLQUFLTSxTQUFTLENBQUMsR0FBR0YsV0FBV0QsYUFBYUY7WUFDcERNLE9BQU9ILFdBQVdKLEtBQUtNLFNBQVMsQ0FBQ0gsWUFBWUYsWUFBWSxDQUFDLElBQUlBLFlBQVlPLGFBQWE7WUFDdkZDLE1BQU1SLFlBQVksQ0FBQyxJQUFJRCxLQUFLVSxLQUFLLENBQUNULGFBQWE7UUFDbkQ7SUFDSjtJQUNBLE9BQU87UUFDSEksVUFBVUw7UUFDVk8sT0FBTztRQUNQRSxNQUFNO0lBQ1Y7QUFDSixFQUVBLHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoLmpzP2IzYzQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHaXZlbiBhIHBhdGggdGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgdGhlIHBhdGhuYW1lLCBxdWVyeSBhbmQgaGFzaCBhbmQgcmV0dXJuXG4gKiB0aGVtLiBUaGlzIGlzIHVzZWZ1bCB0byBwYXJzZSBmdWxsIHBhdGhzIG9uIHRoZSBjbGllbnQgc2lkZS5cbiAqIEBwYXJhbSBwYXRoIEEgcGF0aCB0byBwYXJzZSBlLmcuIC9mb28vYmFyP2lkPTEjaGFzaFxuICovIGV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICAgIGNvbnN0IGhhc2hJbmRleCA9IHBhdGguaW5kZXhPZihcIiNcIik7XG4gICAgY29uc3QgcXVlcnlJbmRleCA9IHBhdGguaW5kZXhPZihcIj9cIik7XG4gICAgY29uc3QgaGFzUXVlcnkgPSBxdWVyeUluZGV4ID4gLTEgJiYgKGhhc2hJbmRleCA8IDAgfHwgcXVlcnlJbmRleCA8IGhhc2hJbmRleCk7XG4gICAgaWYgKGhhc1F1ZXJ5IHx8IGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXRobmFtZTogcGF0aC5zdWJzdHJpbmcoMCwgaGFzUXVlcnkgPyBxdWVyeUluZGV4IDogaGFzaEluZGV4KSxcbiAgICAgICAgICAgIHF1ZXJ5OiBoYXNRdWVyeSA/IHBhdGguc3Vic3RyaW5nKHF1ZXJ5SW5kZXgsIGhhc2hJbmRleCA+IC0xID8gaGFzaEluZGV4IDogdW5kZWZpbmVkKSA6IFwiXCIsXG4gICAgICAgICAgICBoYXNoOiBoYXNoSW5kZXggPiAtMSA/IHBhdGguc2xpY2UoaGFzaEluZGV4KSA6IFwiXCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aG5hbWU6IHBhdGgsXG4gICAgICAgIHF1ZXJ5OiBcIlwiLFxuICAgICAgICBoYXNoOiBcIlwiXG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC5qcy5tYXAiXSwibmFtZXMiOlsicGFyc2VQYXRoIiwicGF0aCIsImhhc2hJbmRleCIsImluZGV4T2YiLCJxdWVyeUluZGV4IiwiaGFzUXVlcnkiLCJwYXRobmFtZSIsInN1YnN0cmluZyIsInF1ZXJ5IiwidW5kZWZpbmVkIiwiaGFzaCIsInNsaWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-relative-url.js":
/*!**********************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/parse-relative-url.js ***!
\**********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parseRelativeUrl: () => (/* binding */ parseRelativeUrl)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/utils.js\");\n/* harmony import */ var _querystring__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./querystring */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js\");\n\n\n/**\n * Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n * (e.g. `./hello`) then at least base must be.\n * Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n * the current origin will be parsed as relative\n */ function parseRelativeUrl(url, base) {\n const globalBase = new URL( true ? \"http://n\" : 0);\n const resolvedBase = base ? new URL(base, globalBase) : url.startsWith(\".\") ? new URL( true ? \"http://n\" : 0) : globalBase;\n const { pathname, searchParams, search, hash, href, origin } = new URL(url, resolvedBase);\n if (origin !== globalBase.origin) {\n throw new Error(\"invariant: invalid relative URL, router received \" + url);\n }\n return {\n pathname,\n query: (0,_querystring__WEBPACK_IMPORTED_MODULE_1__.searchParamsToUrlQuery)(searchParams),\n search,\n hash,\n href: href.slice(globalBase.origin.length)\n };\n} //# sourceMappingURL=parse-relative-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdEO0FBQ087QUFDdkQ7Ozs7O0NBS0MsR0FBVSxTQUFTRSxpQkFBaUJDLEdBQUcsRUFBRUMsSUFBSTtJQUMxQyxNQUFNQyxhQUFhLElBQUlDLElBQUksS0FBNkIsR0FBRyxhQUFhTixDQUFtQkE7SUFDM0YsTUFBTU8sZUFBZUgsT0FBTyxJQUFJRSxJQUFJRixNQUFNQyxjQUFjRixJQUFJSyxVQUFVLENBQUMsT0FBTyxJQUFJRixJQUFJLEtBQTZCLEdBQUcsYUFBYUcsQ0FBb0IsSUFBSUo7SUFDM0osTUFBTSxFQUFFTyxRQUFRLEVBQUVDLFlBQVksRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVKLElBQUksRUFBRUssTUFBTSxFQUFFLEdBQUcsSUFBSVYsSUFBSUgsS0FBS0k7SUFDNUUsSUFBSVMsV0FBV1gsV0FBV1csTUFBTSxFQUFFO1FBQzlCLE1BQU0sSUFBSUMsTUFBTSxzREFBc0RkO0lBQzFFO0lBQ0EsT0FBTztRQUNIUztRQUNBTSxPQUFPakIsb0VBQXNCQSxDQUFDWTtRQUM5QkM7UUFDQUM7UUFDQUosTUFBTUEsS0FBS1EsS0FBSyxDQUFDZCxXQUFXVyxNQUFNLENBQUNJLE1BQU07SUFDN0M7QUFDSixFQUVBLDhDQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmwuanM/MWM4NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhdGlvbk9yaWdpbiB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgc2VhcmNoUGFyYW1zVG9VcmxRdWVyeSB9IGZyb20gXCIuL3F1ZXJ5c3RyaW5nXCI7XG4vKipcbiAqIFBhcnNlcyBwYXRoLXJlbGF0aXZlIHVybHMgKGUuZy4gYC9oZWxsby93b3JsZD9mb289YmFyYCkuIElmIHVybCBpc24ndCBwYXRoLXJlbGF0aXZlXG4gKiAoZS5nLiBgLi9oZWxsb2ApIHRoZW4gYXQgbGVhc3QgYmFzZSBtdXN0IGJlLlxuICogQWJzb2x1dGUgdXJscyBhcmUgcmVqZWN0ZWQgd2l0aCBvbmUgZXhjZXB0aW9uLCBpbiB0aGUgYnJvd3NlciwgYWJzb2x1dGUgdXJscyB0aGF0IGFyZSBvblxuICogdGhlIGN1cnJlbnQgb3JpZ2luIHdpbGwgYmUgcGFyc2VkIGFzIHJlbGF0aXZlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVsYXRpdmVVcmwodXJsLCBiYXNlKSB7XG4gICAgY29uc3QgZ2xvYmFsQmFzZSA9IG5ldyBVUkwodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwiaHR0cDovL25cIiA6IGdldExvY2F0aW9uT3JpZ2luKCkpO1xuICAgIGNvbnN0IHJlc29sdmVkQmFzZSA9IGJhc2UgPyBuZXcgVVJMKGJhc2UsIGdsb2JhbEJhc2UpIDogdXJsLnN0YXJ0c1dpdGgoXCIuXCIpID8gbmV3IFVSTCh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJodHRwOi8vblwiIDogd2luZG93LmxvY2F0aW9uLmhyZWYpIDogZ2xvYmFsQmFzZTtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMsIHNlYXJjaCwgaGFzaCwgaHJlZiwgb3JpZ2luIH0gPSBuZXcgVVJMKHVybCwgcmVzb2x2ZWRCYXNlKTtcbiAgICBpZiAob3JpZ2luICE9PSBnbG9iYWxCYXNlLm9yaWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhcmlhbnQ6IGludmFsaWQgcmVsYXRpdmUgVVJMLCByb3V0ZXIgcmVjZWl2ZWQgXCIgKyB1cmwpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgcXVlcnk6IHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkoc2VhcmNoUGFyYW1zKSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBocmVmOiBocmVmLnNsaWNlKGdsb2JhbEJhc2Uub3JpZ2luLmxlbmd0aClcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZS1yZWxhdGl2ZS11cmwuanMubWFwIl0sIm5hbWVzIjpbImdldExvY2F0aW9uT3JpZ2luIiwic2VhcmNoUGFyYW1zVG9VcmxRdWVyeSIsInBhcnNlUmVsYXRpdmVVcmwiLCJ1cmwiLCJiYXNlIiwiZ2xvYmFsQmFzZSIsIlVSTCIsInJlc29sdmVkQmFzZSIsInN0YXJ0c1dpdGgiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJwYXRobmFtZSIsInNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImhhc2giLCJvcmlnaW4iLCJFcnJvciIsInF1ZXJ5Iiwic2xpY2UiLCJsZW5ndGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-relative-url.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-url.js":
/*!*************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/parse-url.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parseUrl: () => (/* binding */ parseUrl)\n/* harmony export */ });\n/* harmony import */ var _querystring__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./querystring */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js\");\n/* harmony import */ var _parse_relative_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse-relative-url */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-relative-url.js\");\n\n\nfunction parseUrl(url) {\n if (url.startsWith(\"/\")) {\n return (0,_parse_relative_url__WEBPACK_IMPORTED_MODULE_1__.parseRelativeUrl)(url);\n }\n const parsedURL = new URL(url);\n return {\n hash: parsedURL.hash,\n hostname: parsedURL.hostname,\n href: parsedURL.href,\n pathname: parsedURL.pathname,\n port: parsedURL.port,\n protocol: parsedURL.protocol,\n query: (0,_querystring__WEBPACK_IMPORTED_MODULE_0__.searchParamsToUrlQuery)(parsedURL.searchParams),\n search: parsedURL.search\n };\n} //# sourceMappingURL=parse-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS11cmwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVEO0FBQ0M7QUFDakQsU0FBU0UsU0FBU0MsR0FBRztJQUN4QixJQUFJQSxJQUFJQyxVQUFVLENBQUMsTUFBTTtRQUNyQixPQUFPSCxxRUFBZ0JBLENBQUNFO0lBQzVCO0lBQ0EsTUFBTUUsWUFBWSxJQUFJQyxJQUFJSDtJQUMxQixPQUFPO1FBQ0hJLE1BQU1GLFVBQVVFLElBQUk7UUFDcEJDLFVBQVVILFVBQVVHLFFBQVE7UUFDNUJDLE1BQU1KLFVBQVVJLElBQUk7UUFDcEJDLFVBQVVMLFVBQVVLLFFBQVE7UUFDNUJDLE1BQU1OLFVBQVVNLElBQUk7UUFDcEJDLFVBQVVQLFVBQVVPLFFBQVE7UUFDNUJDLE9BQU9iLG9FQUFzQkEsQ0FBQ0ssVUFBVVMsWUFBWTtRQUNwREMsUUFBUVYsVUFBVVUsTUFBTTtJQUM1QjtBQUNKLEVBRUEscUNBQXFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXVybC5qcz84MzBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlYXJjaFBhcmFtc1RvVXJsUXVlcnkgfSBmcm9tIFwiLi9xdWVyeXN0cmluZ1wiO1xuaW1wb3J0IHsgcGFyc2VSZWxhdGl2ZVVybCB9IGZyb20gXCIuL3BhcnNlLXJlbGF0aXZlLXVybFwiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVXJsKHVybCkge1xuICAgIGlmICh1cmwuc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVVcmwodXJsKTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkVVJMID0gbmV3IFVSTCh1cmwpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGhhc2g6IHBhcnNlZFVSTC5oYXNoLFxuICAgICAgICBob3N0bmFtZTogcGFyc2VkVVJMLmhvc3RuYW1lLFxuICAgICAgICBocmVmOiBwYXJzZWRVUkwuaHJlZixcbiAgICAgICAgcGF0aG5hbWU6IHBhcnNlZFVSTC5wYXRobmFtZSxcbiAgICAgICAgcG9ydDogcGFyc2VkVVJMLnBvcnQsXG4gICAgICAgIHByb3RvY29sOiBwYXJzZWRVUkwucHJvdG9jb2wsXG4gICAgICAgIHF1ZXJ5OiBzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KHBhcnNlZFVSTC5zZWFyY2hQYXJhbXMpLFxuICAgICAgICBzZWFyY2g6IHBhcnNlZFVSTC5zZWFyY2hcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZS11cmwuanMubWFwIl0sIm5hbWVzIjpbInNlYXJjaFBhcmFtc1RvVXJsUXVlcnkiLCJwYXJzZVJlbGF0aXZlVXJsIiwicGFyc2VVcmwiLCJ1cmwiLCJzdGFydHNXaXRoIiwicGFyc2VkVVJMIiwiVVJMIiwiaGFzaCIsImhvc3RuYW1lIiwiaHJlZiIsInBhdGhuYW1lIiwicG9ydCIsInByb3RvY29sIiwicXVlcnkiLCJzZWFyY2hQYXJhbXMiLCJzZWFyY2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-url.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js":
/*!*******************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ pathHasPrefix: () => (/* binding */ pathHasPrefix)\n/* harmony export */ });\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js\");\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */ function pathHasPrefix(path, prefix) {\n if (typeof path !== \"string\") {\n return false;\n }\n const { pathname } = (0,_parse_path__WEBPACK_IMPORTED_MODULE_0__.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXRoLWhhcy1wcmVmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBeUM7QUFDekM7Ozs7OztDQU1DLEdBQVUsU0FBU0MsY0FBY0MsSUFBSSxFQUFFQyxNQUFNO0lBQzFDLElBQUksT0FBT0QsU0FBUyxVQUFVO1FBQzFCLE9BQU87SUFDWDtJQUNBLE1BQU0sRUFBRUUsUUFBUSxFQUFFLEdBQUdKLHNEQUFTQSxDQUFDRTtJQUMvQixPQUFPRSxhQUFhRCxVQUFVQyxTQUFTQyxVQUFVLENBQUNGLFNBQVM7QUFDL0QsRUFFQSwyQ0FBMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4LmpzPzY0YmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VQYXRoIH0gZnJvbSBcIi4vcGFyc2UtcGF0aFwiO1xuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIHN0YXJ0cyB3aXRoIGEgZ2l2ZW4gcHJlZml4LiBJdCBlbnN1cmVzIGl0IG1hdGNoZXNcbiAqIGV4YWN0bHkgd2l0aG91dCBjb250YWluaW5nIGV4dHJhIGNoYXJzLiBlLmcuIHByZWZpeCAvZG9jcyBzaG91bGQgcmVwbGFjZVxuICogZm9yIC9kb2NzLCAvZG9jcy8sIC9kb2NzL2EgYnV0IG5vdCAvZG9jc3NzXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeCB0byBjaGVjayBhZ2FpbnN0LlxuICovIGV4cG9ydCBmdW5jdGlvbiBwYXRoSGFzUHJlZml4KHBhdGgsIHByZWZpeCkge1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHBhcnNlUGF0aChwYXRoKTtcbiAgICByZXR1cm4gcGF0aG5hbWUgPT09IHByZWZpeCB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHByZWZpeCArIFwiL1wiKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC1oYXMtcHJlZml4LmpzLm1hcCJdLCJuYW1lcyI6WyJwYXJzZVBhdGgiLCJwYXRoSGFzUHJlZml4IiwicGF0aCIsInByZWZpeCIsInBhdGhuYW1lIiwic3RhcnRzV2l0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-match.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/path-match.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPathMatch: () => (/* binding */ getPathMatch)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/path-to-regexp */ \"(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js\");\n\n\n/**\n * Generates a path matcher function for a given path and options based on\n * path-to-regexp. By default the match will be case insensitive, non strict\n * and delimited by `/`.\n */ function getPathMatch(path, options) {\n const keys = [];\n const regexp = (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.pathToRegexp)(path, keys, {\n delimiter: \"/\",\n sensitive: typeof (options == null ? void 0 : options.sensitive) === \"boolean\" ? options.sensitive : false,\n strict: options == null ? void 0 : options.strict\n });\n const matcher = (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.regexpToFunction)((options == null ? void 0 : options.regexModifier) ? new RegExp(options.regexModifier(regexp.source), regexp.flags) : regexp, keys);\n /**\n * A matcher function that will check if a given pathname matches the path\n * given in the builder function. When the path does not match it will return\n * `false` but if it does it will return an object with the matched params\n * merged with the params provided in the second argument.\n */ return (pathname, params)=>{\n // If no pathname is provided it's not a match.\n if (typeof pathname !== \"string\") return false;\n const match = matcher(pathname);\n // If the path did not match `false` will be returned.\n if (!match) return false;\n /**\n * If unnamed params are not allowed they must be removed from\n * the matched parameters. path-to-regexp uses \"string\" for named and\n * \"number\" for unnamed parameters.\n */ if (options == null ? void 0 : options.removeUnnamedParams) {\n for (const key of keys){\n if (typeof key.name === \"number\") {\n delete match.params[key.name];\n }\n }\n }\n return {\n ...params,\n ...match.params\n };\n };\n} //# sourceMappingURL=path-match.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXRoLW1hdGNoLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlFO0FBQ0k7QUFDckU7Ozs7Q0FJQyxHQUFVLFNBQVNFLGFBQWFDLElBQUksRUFBRUMsT0FBTztJQUMxQyxNQUFNQyxPQUFPLEVBQUU7SUFDZixNQUFNQyxTQUFTTiwrRUFBWUEsQ0FBQ0csTUFBTUUsTUFBTTtRQUNwQ0UsV0FBVztRQUNYQyxXQUFXLE9BQVFKLENBQUFBLFdBQVcsT0FBTyxLQUFLLElBQUlBLFFBQVFJLFNBQVMsTUFBTSxZQUFZSixRQUFRSSxTQUFTLEdBQUc7UUFDckdDLFFBQVFMLFdBQVcsT0FBTyxLQUFLLElBQUlBLFFBQVFLLE1BQU07SUFDckQ7SUFDQSxNQUFNQyxVQUFVVCxtRkFBZ0JBLENBQUMsQ0FBQ0csV0FBVyxPQUFPLEtBQUssSUFBSUEsUUFBUU8sYUFBYSxJQUFJLElBQUlDLE9BQU9SLFFBQVFPLGFBQWEsQ0FBQ0wsT0FBT08sTUFBTSxHQUFHUCxPQUFPUSxLQUFLLElBQUlSLFFBQVFEO0lBQy9KOzs7OztHQUtELEdBQUcsT0FBTyxDQUFDVSxVQUFVQztRQUNoQiwrQ0FBK0M7UUFDL0MsSUFBSSxPQUFPRCxhQUFhLFVBQVUsT0FBTztRQUN6QyxNQUFNRSxRQUFRUCxRQUFRSztRQUN0QixzREFBc0Q7UUFDdEQsSUFBSSxDQUFDRSxPQUFPLE9BQU87UUFDbkI7Ozs7S0FJSCxHQUFHLElBQUliLFdBQVcsT0FBTyxLQUFLLElBQUlBLFFBQVFjLG1CQUFtQixFQUFFO1lBQ3hELEtBQUssTUFBTUMsT0FBT2QsS0FBSztnQkFDbkIsSUFBSSxPQUFPYyxJQUFJQyxJQUFJLEtBQUssVUFBVTtvQkFDOUIsT0FBT0gsTUFBTUQsTUFBTSxDQUFDRyxJQUFJQyxJQUFJLENBQUM7Z0JBQ2pDO1lBQ0o7UUFDSjtRQUNBLE9BQU87WUFDSCxHQUFHSixNQUFNO1lBQ1QsR0FBR0MsTUFBTUQsTUFBTTtRQUNuQjtJQUNKO0FBQ0osRUFFQSxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1tYXRjaC5qcz82ZTExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhdGhUb1JlZ2V4cCB9IGZyb20gXCJuZXh0L2Rpc3QvY29tcGlsZWQvcGF0aC10by1yZWdleHBcIjtcbmltcG9ydCB7IHJlZ2V4cFRvRnVuY3Rpb24gfSBmcm9tIFwibmV4dC9kaXN0L2NvbXBpbGVkL3BhdGgtdG8tcmVnZXhwXCI7XG4vKipcbiAqIEdlbmVyYXRlcyBhIHBhdGggbWF0Y2hlciBmdW5jdGlvbiBmb3IgYSBnaXZlbiBwYXRoIGFuZCBvcHRpb25zIGJhc2VkIG9uXG4gKiBwYXRoLXRvLXJlZ2V4cC4gQnkgZGVmYXVsdCB0aGUgbWF0Y2ggd2lsbCBiZSBjYXNlIGluc2Vuc2l0aXZlLCBub24gc3RyaWN0XG4gKiBhbmQgZGVsaW1pdGVkIGJ5IGAvYC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0UGF0aE1hdGNoKHBhdGgsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBrZXlzID0gW107XG4gICAgY29uc3QgcmVnZXhwID0gcGF0aFRvUmVnZXhwKHBhdGgsIGtleXMsIHtcbiAgICAgICAgZGVsaW1pdGVyOiBcIi9cIixcbiAgICAgICAgc2Vuc2l0aXZlOiB0eXBlb2YgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2Vuc2l0aXZlKSA9PT0gXCJib29sZWFuXCIgPyBvcHRpb25zLnNlbnNpdGl2ZSA6IGZhbHNlLFxuICAgICAgICBzdHJpY3Q6IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RyaWN0XG4gICAgfSk7XG4gICAgY29uc3QgbWF0Y2hlciA9IHJlZ2V4cFRvRnVuY3Rpb24oKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucmVnZXhNb2RpZmllcikgPyBuZXcgUmVnRXhwKG9wdGlvbnMucmVnZXhNb2RpZmllcihyZWdleHAuc291cmNlKSwgcmVnZXhwLmZsYWdzKSA6IHJlZ2V4cCwga2V5cyk7XG4gICAgLyoqXG4gICAqIEEgbWF0Y2hlciBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2sgaWYgYSBnaXZlbiBwYXRobmFtZSBtYXRjaGVzIHRoZSBwYXRoXG4gICAqIGdpdmVuIGluIHRoZSBidWlsZGVyIGZ1bmN0aW9uLiBXaGVuIHRoZSBwYXRoIGRvZXMgbm90IG1hdGNoIGl0IHdpbGwgcmV0dXJuXG4gICAqIGBmYWxzZWAgYnV0IGlmIGl0IGRvZXMgaXQgd2lsbCByZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIG1hdGNoZWQgcGFyYW1zXG4gICAqIG1lcmdlZCB3aXRoIHRoZSBwYXJhbXMgcHJvdmlkZWQgaW4gdGhlIHNlY29uZCBhcmd1bWVudC5cbiAgICovIHJldHVybiAocGF0aG5hbWUsIHBhcmFtcyk9PntcbiAgICAgICAgLy8gSWYgbm8gcGF0aG5hbWUgaXMgcHJvdmlkZWQgaXQncyBub3QgYSBtYXRjaC5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRobmFtZSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXIocGF0aG5hbWUpO1xuICAgICAgICAvLyBJZiB0aGUgcGF0aCBkaWQgbm90IG1hdGNoIGBmYWxzZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAgICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgKiBJZiB1bm5hbWVkIHBhcmFtcyBhcmUgbm90IGFsbG93ZWQgdGhleSBtdXN0IGJlIHJlbW92ZWQgZnJvbVxuICAgICAqIHRoZSBtYXRjaGVkIHBhcmFtZXRlcnMuIHBhdGgtdG8tcmVnZXhwIHVzZXMgXCJzdHJpbmdcIiBmb3IgbmFtZWQgYW5kXG4gICAgICogXCJudW1iZXJcIiBmb3IgdW5uYW1lZCBwYXJhbWV0ZXJzLlxuICAgICAqLyBpZiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5yZW1vdmVVbm5hbWVkUGFyYW1zKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKXtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGtleS5uYW1lID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtYXRjaC5wYXJhbXNba2V5Lm5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgLi4ubWF0Y2gucGFyYW1zXG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC1tYXRjaC5qcy5tYXAiXSwibmFtZXMiOlsicGF0aFRvUmVnZXhwIiwicmVnZXhwVG9GdW5jdGlvbiIsImdldFBhdGhNYXRjaCIsInBhdGgiLCJvcHRpb25zIiwia2V5cyIsInJlZ2V4cCIsImRlbGltaXRlciIsInNlbnNpdGl2ZSIsInN0cmljdCIsIm1hdGNoZXIiLCJyZWdleE1vZGlmaWVyIiwiUmVnRXhwIiwic291cmNlIiwiZmxhZ3MiLCJwYXRobmFtZSIsInBhcmFtcyIsIm1hdGNoIiwicmVtb3ZlVW5uYW1lZFBhcmFtcyIsImtleSIsIm5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-match.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/prepare-destination.js":
/*!***********************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/prepare-destination.js ***!
\***********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ compileNonPath: () => (/* binding */ compileNonPath),\n/* harmony export */ matchHas: () => (/* binding */ matchHas),\n/* harmony export */ prepareDestination: () => (/* binding */ prepareDestination)\n/* harmony export */ });\n/* harmony import */ var next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/compiled/path-to-regexp */ \"(rsc)/./node_modules/next/dist/compiled/path-to-regexp/index.js\");\n/* harmony import */ var _escape_regexp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../escape-regexp */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/escape-regexp.js\");\n/* harmony import */ var _parse_url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parse-url */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/parse-url.js\");\n/* harmony import */ var _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../server/future/helpers/interception-routes */ \"(rsc)/./node_modules/next/dist/esm/server/future/helpers/interception-routes.js\");\n/* harmony import */ var _client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/esm/client/components/app-router-headers.js\");\n/* harmony import */ var _server_api_utils_get_cookie_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../../server/api-utils/get-cookie-parser */ \"(rsc)/./node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js\");\n\n\n\n\n\n\n/**\n * Ensure only a-zA-Z are used for param names for proper interpolating\n * with path-to-regexp\n */ function getSafeParamName(paramName) {\n let newParamName = \"\";\n for(let i = 0; i < paramName.length; i++){\n const charCode = paramName.charCodeAt(i);\n if (charCode > 64 && charCode < 91 || // A-Z\n charCode > 96 && charCode < 123 // a-z\n ) {\n newParamName += paramName[i];\n }\n }\n return newParamName;\n}\nfunction escapeSegment(str, segmentName) {\n return str.replace(new RegExp(\":\" + (0,_escape_regexp__WEBPACK_IMPORTED_MODULE_1__.escapeStringRegexp)(segmentName), \"g\"), \"__ESC_COLON_\" + segmentName);\n}\nfunction unescapeSegments(str) {\n return str.replace(/__ESC_COLON_/gi, \":\");\n}\nfunction matchHas(req, query, has, missing) {\n if (has === void 0) has = [];\n if (missing === void 0) missing = [];\n const params = {};\n const hasMatch = (hasItem)=>{\n let value;\n let key = hasItem.key;\n switch(hasItem.type){\n case \"header\":\n {\n key = key.toLowerCase();\n value = req.headers[key];\n break;\n }\n case \"cookie\":\n {\n if (\"cookies\" in req) {\n value = req.cookies[hasItem.key];\n } else {\n const cookies = (0,_server_api_utils_get_cookie_parser__WEBPACK_IMPORTED_MODULE_5__.getCookieParser)(req.headers)();\n value = cookies[hasItem.key];\n }\n break;\n }\n case \"query\":\n {\n value = query[key];\n break;\n }\n case \"host\":\n {\n const { host } = (req == null ? void 0 : req.headers) || {};\n // remove port from host if present\n const hostname = host == null ? void 0 : host.split(\":\", 1)[0].toLowerCase();\n value = hostname;\n break;\n }\n default:\n {\n break;\n }\n }\n if (!hasItem.value && value) {\n params[getSafeParamName(key)] = value;\n return true;\n } else if (value) {\n const matcher = new RegExp(\"^\" + hasItem.value + \"$\");\n const matches = Array.isArray(value) ? value.slice(-1)[0].match(matcher) : value.match(matcher);\n if (matches) {\n if (Array.isArray(matches)) {\n if (matches.groups) {\n Object.keys(matches.groups).forEach((groupKey)=>{\n params[groupKey] = matches.groups[groupKey];\n });\n } else if (hasItem.type === \"host\" && matches[0]) {\n params.host = matches[0];\n }\n }\n return true;\n }\n }\n return false;\n };\n const allMatch = has.every((item)=>hasMatch(item)) && !missing.some((item)=>hasMatch(item));\n if (allMatch) {\n return params;\n }\n return false;\n}\nfunction compileNonPath(value, params) {\n if (!value.includes(\":\")) {\n return value;\n }\n for (const key of Object.keys(params)){\n if (value.includes(\":\" + key)) {\n value = value.replace(new RegExp(\":\" + key + \"\\\\*\", \"g\"), \":\" + key + \"--ESCAPED_PARAM_ASTERISKS\").replace(new RegExp(\":\" + key + \"\\\\?\", \"g\"), \":\" + key + \"--ESCAPED_PARAM_QUESTION\").replace(new RegExp(\":\" + key + \"\\\\+\", \"g\"), \":\" + key + \"--ESCAPED_PARAM_PLUS\").replace(new RegExp(\":\" + key + \"(?!\\\\w)\", \"g\"), \"--ESCAPED_PARAM_COLON\" + key);\n }\n }\n value = value.replace(/(:|\\*|\\?|\\+|\\(|\\)|\\{|\\})/g, \"\\\\$1\").replace(/--ESCAPED_PARAM_PLUS/g, \"+\").replace(/--ESCAPED_PARAM_COLON/g, \":\").replace(/--ESCAPED_PARAM_QUESTION/g, \"?\").replace(/--ESCAPED_PARAM_ASTERISKS/g, \"*\");\n // the value needs to start with a forward-slash to be compiled\n // correctly\n return (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.compile)(\"/\" + value, {\n validate: false\n })(params).slice(1);\n}\nfunction prepareDestination(args) {\n const query = Object.assign({}, args.query);\n delete query.__nextLocale;\n delete query.__nextDefaultLocale;\n delete query.__nextDataReq;\n delete query.__nextInferredLocaleFromDefault;\n delete query[_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_4__.NEXT_RSC_UNION_QUERY];\n let escapedDestination = args.destination;\n for (const param of Object.keys({\n ...args.params,\n ...query\n })){\n escapedDestination = escapeSegment(escapedDestination, param);\n }\n const parsedDestination = (0,_parse_url__WEBPACK_IMPORTED_MODULE_2__.parseUrl)(escapedDestination);\n const destQuery = parsedDestination.query;\n const destPath = unescapeSegments(\"\" + parsedDestination.pathname + (parsedDestination.hash || \"\"));\n const destHostname = unescapeSegments(parsedDestination.hostname || \"\");\n const destPathParamKeys = [];\n const destHostnameParamKeys = [];\n (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.pathToRegexp)(destPath, destPathParamKeys);\n (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.pathToRegexp)(destHostname, destHostnameParamKeys);\n const destParams = [];\n destPathParamKeys.forEach((key)=>destParams.push(key.name));\n destHostnameParamKeys.forEach((key)=>destParams.push(key.name));\n const destPathCompiler = (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.compile)(destPath, // have already validated before we got to this point and validating\n // breaks compiling destinations with named pattern params from the source\n // e.g. /something:hello(.*) -> /another/:hello is broken with validation\n // since compile validation is meant for reversing and not for inserting\n // params from a separate path-regex into another\n {\n validate: false\n });\n const destHostnameCompiler = (0,next_dist_compiled_path_to_regexp__WEBPACK_IMPORTED_MODULE_0__.compile)(destHostname, {\n validate: false\n });\n // update any params in query values\n for (const [key, strOrArray] of Object.entries(destQuery)){\n // the value needs to start with a forward-slash to be compiled\n // correctly\n if (Array.isArray(strOrArray)) {\n destQuery[key] = strOrArray.map((value)=>compileNonPath(unescapeSegments(value), args.params));\n } else if (typeof strOrArray === \"string\") {\n destQuery[key] = compileNonPath(unescapeSegments(strOrArray), args.params);\n }\n }\n // add path params to query if it's not a redirect and not\n // already defined in destination query or path\n let paramKeys = Object.keys(args.params).filter((name)=>name !== \"nextInternalLocale\");\n if (args.appendParamsToQuery && !paramKeys.some((key)=>destParams.includes(key))) {\n for (const key of paramKeys){\n if (!(key in destQuery)) {\n destQuery[key] = args.params[key];\n }\n }\n }\n let newUrl;\n // The compiler also that the interception route marker is an unnamed param, hence '0',\n // so we need to add it to the params object.\n if ((0,_server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_3__.isInterceptionRouteAppPath)(destPath)) {\n for (const segment of destPath.split(\"/\")){\n const marker = _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_3__.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n args.params[\"0\"] = marker;\n break;\n }\n }\n }\n try {\n newUrl = destPathCompiler(args.params);\n const [pathname, hash] = newUrl.split(\"#\", 2);\n parsedDestination.hostname = destHostnameCompiler(args.params);\n parsedDestination.pathname = pathname;\n parsedDestination.hash = \"\" + (hash ? \"#\" : \"\") + (hash || \"\");\n delete parsedDestination.search;\n } catch (err) {\n if (err.message.match(/Expected .*? to not repeat, but got an array/)) {\n throw new Error(\"To use a multi-match in the destination you must add `*` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match\");\n }\n throw err;\n }\n // Query merge order lowest priority to highest\n // 1. initial URL query values\n // 2. path segment values\n // 3. destination specified query values\n parsedDestination.query = {\n ...query,\n ...parsedDestination.query\n };\n return {\n newUrl,\n destQuery,\n parsedDestination\n };\n} //# sourceMappingURL=prepare-destination.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wcmVwYXJlLWRlc3RpbmF0aW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUEwRTtBQUNqQjtBQUNsQjtBQUN3RjtBQUN2QztBQUNQO0FBQ2pGOzs7Q0FHQyxHQUFHLFNBQVNRLGlCQUFpQkMsU0FBUztJQUNuQyxJQUFJQyxlQUFlO0lBQ25CLElBQUksSUFBSUMsSUFBSSxHQUFHQSxJQUFJRixVQUFVRyxNQUFNLEVBQUVELElBQUk7UUFDckMsTUFBTUUsV0FBV0osVUFBVUssVUFBVSxDQUFDSDtRQUN0QyxJQUFJRSxXQUFXLE1BQU1BLFdBQVcsTUFBTSxNQUFNO1FBQzVDQSxXQUFXLE1BQU1BLFdBQVcsSUFBSSxNQUFNO1VBQ3BDO1lBQ0VILGdCQUFnQkQsU0FBUyxDQUFDRSxFQUFFO1FBQ2hDO0lBQ0o7SUFDQSxPQUFPRDtBQUNYO0FBQ0EsU0FBU0ssY0FBY0MsR0FBRyxFQUFFQyxXQUFXO0lBQ25DLE9BQU9ELElBQUlFLE9BQU8sQ0FBQyxJQUFJQyxPQUFPLE1BQU1qQixrRUFBa0JBLENBQUNlLGNBQWMsTUFBTSxpQkFBaUJBO0FBQ2hHO0FBQ0EsU0FBU0csaUJBQWlCSixHQUFHO0lBQ3pCLE9BQU9BLElBQUlFLE9BQU8sQ0FBQyxrQkFBa0I7QUFDekM7QUFDTyxTQUFTRyxTQUFTQyxHQUFHLEVBQUVDLEtBQUssRUFBRUMsR0FBRyxFQUFFQyxPQUFPO0lBQzdDLElBQUlELFFBQVEsS0FBSyxHQUFHQSxNQUFNLEVBQUU7SUFDNUIsSUFBSUMsWUFBWSxLQUFLLEdBQUdBLFVBQVUsRUFBRTtJQUNwQyxNQUFNQyxTQUFTLENBQUM7SUFDaEIsTUFBTUMsV0FBVyxDQUFDQztRQUNkLElBQUlDO1FBQ0osSUFBSUMsTUFBTUYsUUFBUUUsR0FBRztRQUNyQixPQUFPRixRQUFRRyxJQUFJO1lBQ2YsS0FBSztnQkFDRDtvQkFDSUQsTUFBTUEsSUFBSUUsV0FB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QUM5QjtJQUNBLE9BQU87UUFDSDhEO1FBQ0FsQjtRQUNBRDtJQUNKO0FBQ0osRUFFQSwrQ0FBK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcHJlcGFyZS1kZXN0aW5hdGlvbi5qcz9hYjE4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGUsIHBhdGhUb1JlZ2V4cCB9IGZyb20gXCJuZXh0L2Rpc3QvY29tcGlsZWQvcGF0aC10by1yZWdleHBcIjtcbmltcG9ydCB7IGVzY2FwZVN0cmluZ1JlZ2V4cCB9IGZyb20gXCIuLi8uLi9lc2NhcGUtcmVnZXhwXCI7XG5pbXBvcnQgeyBwYXJzZVVybCB9IGZyb20gXCIuL3BhcnNlLXVybFwiO1xuaW1wb3J0IHsgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMsIGlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZlci9mdXR1cmUvaGVscGVycy9pbnRlcmNlcHRpb24tcm91dGVzXCI7XG5pbXBvcnQgeyBORVhUX1JTQ19VTklPTl9RVUVSWSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIjtcbmltcG9ydCB7IGdldENvb2tpZVBhcnNlciB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2ZXIvYXBpLXV0aWxzL2dldC1jb29raWUtcGFyc2VyXCI7XG4vKipcbiAqIEVuc3VyZSBvbmx5IGEtekEtWiBhcmUgdXNlZCBmb3IgcGFyYW0gbmFtZXMgZm9yIHByb3BlciBpbnRlcnBvbGF0aW5nXG4gKiB3aXRoIHBhdGgtdG8tcmVnZXhwXG4gKi8gZnVuY3Rpb24gZ2V0U2FmZVBhcmFtTmFtZShwYXJhbU5hbWUpIHtcbiAgICBsZXQgbmV3UGFyYW1OYW1lID0gXCJcIjtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgcGFyYW1OYW1lLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY29uc3QgY2hhckNvZGUgPSBwYXJhbU5hbWUuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNoYXJDb2RlID4gNjQgJiYgY2hhckNvZGUgPCA5MSB8fCAvLyBBLVpcbiAgICAgICAgY2hhckNvZGUgPiA5NiAmJiBjaGFyQ29kZSA8IDEyMyAvLyBhLXpcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBuZXdQYXJhbU5hbWUgKz0gcGFyYW1OYW1lW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdQYXJhbU5hbWU7XG59XG5mdW5jdGlvbiBlc2NhcGVTZWdtZW50KHN0ciwgc2VnbWVudE5hbWUpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChcIjpcIiArIGVzY2FwZVN0cmluZ1JlZ2V4cChzZWdtZW50TmFtZSksIFwiZ1wiKSwgXCJfX0VTQ19DT0xPTl9cIiArIHNlZ21lbnROYW1lKTtcbn1cbmZ1bmN0aW9uIHVuZXNjYXBlU2VnbWVudHMoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9fX0VTQ19DT0xPTl8vZ2ksIFwiOlwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaEhhcyhyZXEsIHF1ZXJ5LCBoYXMsIG1pc3NpbmcpIHtcbiAgICBpZiAoaGFzID09PSB2b2lkIDApIGhhcyA9IFtdO1xuICAgIGlmIChtaXNzaW5nID09PSB2b2lkIDApIG1pc3NpbmcgPSBbXTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCBoYXNNYXRjaCA9IChoYXNJdGVtKT0+e1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGxldCBrZXkgPSBoYXNJdGVtLmtleTtcbiAgICAgICAgc3dpdGNoKGhhc0l0ZW0udHlwZSl7XG4gICAgICAgICAgICBjYXNlIFwiaGVhZGVyXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXEuaGVhZGVyc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiY29va2llXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJjb29raWVzXCIgaW4gcmVxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlcS5jb29raWVzW2hhc0l0ZW0ua2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb2tpZXMgPSBnZXRDb29raWVQYXJzZXIocmVxLmhlYWRlcnMpKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvb2tpZXNbaGFzSXRlbS5rZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJxdWVyeVwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBxdWVyeVtrZXldO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaG9zdFwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBob3N0IH0gPSAocmVxID09IG51bGwgPyB2b2lkIDAgOiByZXEuaGVhZGVycykgfHwge307XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBwb3J0IGZyb20gaG9zdCBpZiBwcmVzZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvc3RuYW1lID0gaG9zdCA9PSBudWxsID8gdm9pZCAwIDogaG9zdC5zcGxpdChcIjpcIiwgMSlbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBob3N0bmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0l0ZW0udmFsdWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHBhcmFtc1tnZXRTYWZlUGFyYW1OYW1lKGtleSldID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBoYXNJdGVtLnZhbHVlICsgXCIkXCIpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc2xpY2UoLTEpWzBdLm1hdGNoKG1hdGNoZXIpIDogdmFsdWUubWF0Y2gobWF0Y2hlcik7XG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hdGNoZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzLmdyb3Vwcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMobWF0Y2hlcy5ncm91cHMpLmZvckVhY2goKGdyb3VwS2V5KT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tncm91cEtleV0gPSBtYXRjaGVzLmdyb3Vwc1tncm91cEtleV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNJdGVtLnR5cGUgPT09IFwiaG9zdFwiICYmIG1hdGNoZXNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5ob3N0ID0gbWF0Y2hlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBjb25zdCBhbGxNYXRjaCA9IGhhcy5ldmVyeSgoaXRlbSk9Pmhhc01hdGNoKGl0ZW0pKSAmJiAhbWlzc2luZy5zb21lKChpdGVtKT0+aGFzTWF0Y2goaXRlbSkpO1xuICAgIGlmIChhbGxNYXRjaCkge1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZU5vblBhdGgodmFsdWUsIHBhcmFtcykge1xuICAgIGlmICghdmFsdWUuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSl7XG4gICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhcIjpcIiArIGtleSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKFwiOlwiICsga2V5ICsgXCJcXFxcKlwiLCBcImdcIiksIFwiOlwiICsga2V5ICsgXCItLUVTQ0FQRURfUEFSQU1fQVNURVJJU0tTXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIjpcIiArIGtleSArIFwiXFxcXD9cIiwgXCJnXCIpLCBcIjpcIiArIGtleSArIFwiLS1FU0NBUEVEX1BBUkFNX1FVRVNUSU9OXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIjpcIiArIGtleSArIFwiXFxcXCtcIiwgXCJnXCIpLCBcIjpcIiArIGtleSArIFwiLS1FU0NBUEVEX1BBUkFNX1BMVVNcIikucmVwbGFjZShuZXcgUmVnRXhwKFwiOlwiICsga2V5ICsgXCIoPyFcXFxcdylcIiwgXCJnXCIpLCBcIi0tRVNDQVBFRF9QQVJBTV9DT0xPTlwiICsga2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyg6fFxcKnxcXD98XFwrfFxcKHxcXCl8XFx7fFxcfSkvZywgXCJcXFxcJDFcIikucmVwbGFjZSgvLS1FU0NBUEVEX1BBUkFNX1BMVVMvZywgXCIrXCIpLnJlcGxhY2UoLy0tRVNDQVBFRF9QQVJBTV9DT0xPTi9nLCBcIjpcIikucmVwbGFjZSgvLS1FU0NBUEVEX1BBUkFNX1FVRVNUSU9OL2csIFwiP1wiKS5yZXBsYWNlKC8tLUVTQ0FQRURfUEFSQU1fQVNURVJJU0tTL2csIFwiKlwiKTtcbiAgICAvLyB0aGUgdmFsdWUgbmVlZHMgdG8gc3RhcnQgd2l0aCBhIGZvcndhcmQtc2xhc2ggdG8gYmUgY29tcGlsZWRcbiAgICAvLyBjb3JyZWN0bHlcbiAgICByZXR1cm4gY29tcGlsZShcIi9cIiArIHZhbHVlLCB7XG4gICAgICAgIHZhbGlkYXRlOiBmYWxzZVxuICAgIH0pKHBhcmFtcykuc2xpY2UoMSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZURlc3RpbmF0aW9uKGFyZ3MpIHtcbiAgICBjb25zdCBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MucXVlcnkpO1xuICAgIGRlbGV0ZSBxdWVyeS5fX25leHRMb2NhbGU7XG4gICAgZGVsZXRlIHF1ZXJ5Ll9fbmV4dERlZmF1bHRMb2NhbGU7XG4gICAgZGVsZXRlIHF1ZXJ5Ll9fbmV4dERhdGFSZXE7XG4gICAgZGVsZXRlIHF1ZXJ5Ll9fbmV4dEluZmVycmVkTG9jYWxlRnJvbURlZmF1bHQ7XG4gICAgZGVsZXRlIHF1ZXJ5W05FWFRfUlNDX1VOSU9OX1FVRVJZXTtcbiAgICBsZXQgZXNjYXBlZERlc3RpbmF0aW9uID0gYXJncy5kZXN0aW5hdGlvbjtcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIE9iamVjdC5rZXlzKHtcbiAgICAgICAgLi4uYXJncy5wYXJhbXMsXG4gICAgICAgIC4uLnF1ZXJ5XG4gICAgfSkpe1xuICAgICAgICBlc2NhcGVkRGVzdGluYXRpb24gPSBlc2NhcGVTZWdtZW50KGVzY2FwZWREZXN0aW5hdGlvbiwgcGFyYW0pO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWREZXN0aW5hdGlvbiA9IHBhcnNlVXJsKGVzY2FwZWREZXN0aW5hdGlvbik7XG4gICAgY29uc3QgZGVzdFF1ZXJ5ID0gcGFyc2VkRGVzdGluYXRpb24ucXVlcnk7XG4gICAgY29uc3QgZGVzdFBhdGggPSB1bmVzY2FwZVNlZ21lbnRzKFwiXCIgKyBwYXJzZWREZXN0aW5hdGlvbi5wYXRobmFtZSArIChwYXJzZWREZXN0aW5hdGlvbi5oYXNoIHx8IFwiXCIpKTtcbiAgICBjb25zdCBkZXN0SG9zdG5hbWUgPSB1bmVzY2FwZVNlZ21lbnRzKHBhcnNlZERlc3RpbmF0aW9uLmhvc3RuYW1lIHx8IFwiXCIpO1xuICAgIGNvbnN0IGRlc3RQYXRoUGFyYW1LZXlzID0gW107XG4gICAgY29uc3QgZGVzdEhvc3RuYW1lUGFyYW1LZXlzID0gW107XG4gICAgcGF0aFRvUmVnZXhwKGRlc3RQYXRoLCBkZXN0UGF0aFBhcmFtS2V5cyk7XG4gICAgcGF0aFRvUmVnZXhwKGRlc3RIb3N0bmFtZSwgZGVzdEhvc3RuYW1lUGFyYW1LZXlzKTtcbiAgICBjb25zdCBkZXN0UGFyYW1zID0gW107XG4gICAgZGVzdFBhdGhQYXJhbUtleXMuZm9yRWFjaCgoa2V5KT0+ZGVzdFBhcmFtcy5wdXNoKGtleS5uYW1lKSk7XG4gICAgZGVzdEhvc3RuYW1lUGFyYW1LZXlzLmZvckVhY2goKGtleSk9PmRlc3RQYXJhbXMucHVzaChrZXkubmFtZSkpO1xuICAgIGNvbnN0IGRlc3RQYXRoQ29tcGlsZXIgPSBjb21waWxlKGRlc3RQYXRoLCAvLyB3ZSBkb24ndCB2YWxpZGF0ZSB3aGlsZSBjb21waWxpbmcgdGhlIGRlc3RpbmF0aW9uIHNpbmNlIHdlIHNob3VsZFxuICAgIC8vIGhhdmUgYWxyZWFkeSB2YWxpZGF0ZWQgYmVmb3JlIHdlIGdvdCB0byB0aGlzIHBvaW50IGFuZCB2YWxpZGF0aW5nXG4gICAgLy8gYnJlYWtzIGNvbXBpbGluZyBkZXN0aW5hdGlvbnMgd2l0aCBuYW1lZCBwYXR0ZXJuIHBhcmFtcyBmcm9tIHRoZSBzb3VyY2VcbiAgICAvLyBlLmcuIC9zb21ldGhpbmc6aGVsbG8oLiopIC0+IC9hbm90aGVyLzpoZWxsbyBpcyBicm9rZW4gd2l0aCB2YWxpZGF0aW9uXG4gICAgLy8gc2luY2UgY29tcGlsZSB2YWxpZGF0aW9uIGlzIG1lYW50IGZvciByZXZlcnNpbmcgYW5kIG5vdCBmb3IgaW5zZXJ0aW5nXG4gICAgLy8gcGFyYW1zIGZyb20gYSBzZXBhcmF0ZSBwYXRoLXJlZ2V4IGludG8gYW5vdGhlclxuICAgIHtcbiAgICAgICAgdmFsaWRhdGU6IGZhbHNlXG4gICAgfSk7XG4gICAgY29uc3QgZGVzdEhvc3RuYW1lQ29tcGlsZXIgPSBjb21waWxlKGRlc3RIb3N0bmFtZSwge1xuICAgICAgICB2YWxpZGF0ZTogZmFsc2VcbiAgICB9KTtcbiAgICAvLyB1cGRhdGUgYW55IHBhcmFtcyBpbiBxdWVyeSB2YWx1ZXNcbiAgICBmb3IgKGNvbnN0IFtrZXksIHN0ck9yQXJyYXldIG9mIE9iamVjdC5lbnRyaWVzKGRlc3RRdWVyeSkpe1xuICAgICAgICAvLyB0aGUgdmFsdWUgbmVlZHMgdG8gc3RhcnQgd2l0aCBhIGZvcndhcmQtc2xhc2ggdG8gYmUgY29tcGlsZWRcbiAgICAgICAgLy8gY29ycmVjdGx5XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0ck9yQXJyYXkpKSB7XG4gICAgICAgICAgICBkZXN0UXVlcnlba2V5XSA9IHN0ck9yQXJyYXkubWFwKCh2YWx1ZSk9PmNvbXBpbGVOb25QYXRoKHVuZXNjYXBlU2VnbWVudHModmFsdWUpLCBhcmdzLnBhcmFtcykpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBkZXN0UXVlcnlba2V5XSA9IGNvbXBpbGVOb25QYXRoKHVuZXNjYXBlU2VnbWVudHMoc3RyT3JBcnJheSksIGFyZ3MucGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBhZGQgcGF0aCBwYXJhbXMgdG8gcXVlcnkgaWYgaXQncyBub3QgYSByZWRpcmVjdCBhbmQgbm90XG4gICAgLy8gYWxyZWFkeSBkZWZpbmVkIGluIGRlc3RpbmF0aW9uIHF1ZXJ5IG9yIHBhdGhcbiAgICBsZXQgcGFyYW1LZXlzID0gT2JqZWN0LmtleXMoYXJncy5wYXJhbXMpLmZpbHRlcigobmFtZSk9Pm5hbWUgIT09IFwibmV4dEludGVybmFsTG9jYWxlXCIpO1xuICAgIGlmIChhcmdzLmFwcGVuZFBhcmFtc1RvUXVlcnkgJiYgIXBhcmFtS2V5cy5zb21lKChrZXkpPT5kZXN0UGFyYW1zLmluY2x1ZGVzKGtleSkpKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHBhcmFtS2V5cyl7XG4gICAgICAgICAgICBpZiAoIShrZXkgaW4gZGVzdFF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgIGRlc3RRdWVyeVtrZXldID0gYXJncy5wYXJhbXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgbmV3VXJsO1xuICAgIC8vIFRoZSBjb21waWxlciBhbHNvIHRoYXQgdGhlIGludGVyY2VwdGlvbiByb3V0ZSBtYXJrZXIgaXMgYW4gdW5uYW1lZCBwYXJhbSwgaGVuY2UgJzAnLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBwYXJhbXMgb2JqZWN0LlxuICAgIGlmIChpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aChkZXN0UGF0aCkpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIGRlc3RQYXRoLnNwbGl0KFwiL1wiKSl7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5maW5kKChtKT0+c2VnbWVudC5zdGFydHNXaXRoKG0pKTtcbiAgICAgICAgICAgIGlmIChtYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnBhcmFtc1tcIjBcIl0gPSBtYXJrZXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbmV3VXJsID0gZGVzdFBhdGhDb21waWxlcihhcmdzLnBhcmFtcyk7XG4gICAgICAgIGNvbnN0IFtwYXRobmFtZSwgaGFzaF0gPSBuZXdVcmwuc3BsaXQoXCIjXCIsIDIpO1xuICAgICAgICBwYXJzZWREZXN0aW5hdGlvbi5ob3N0bmFtZSA9IGRlc3RIb3N0bmFtZUNvbXBpbGVyKGFyZ3MucGFyYW1zKTtcbiAgICAgICAgcGFyc2VkRGVzdGluYXRpb24ucGF0aG5hbWUgPSBwYXRobmFtZTtcbiAgICAgICAgcGFyc2VkRGVzdGluYXRpb24uaGFzaCA9IFwiXCIgKyAoaGFzaCA/IFwiI1wiIDogXCJcIikgKyAoaGFzaCB8fCBcIlwiKTtcbiAgICAgICAgZGVsZXRlIHBhcnNlZERlc3RpbmF0aW9uLnNlYXJjaDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlLm1hdGNoKC9FeHBlY3RlZCAuKj8gdG8gbm90IHJlcGVhdCwgYnV0IGdvdCBhbiBhcnJheS8pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUbyB1c2UgYSBtdWx0aS1tYXRjaCBpbiB0aGUgZGVzdGluYXRpb24geW91IG11c3QgYWRkIGAqYCBhdCB0aGUgZW5kIG9mIHRoZSBwYXJhbSBuYW1lIHRvIHNpZ25pZnkgaXQgc2hvdWxkIHJlcGVhdC4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvaW52YWxpZC1tdWx0aS1tYXRjaFwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIC8vIFF1ZXJ5IG1lcmdlIG9yZGVyIGxvd2VzdCBwcmlvcml0eSB0byBoaWdoZXN0XG4gICAgLy8gMS4gaW5pdGlhbCBVUkwgcXVlcnkgdmFsdWVzXG4gICAgLy8gMi4gcGF0aCBzZWdtZW50IHZhbHVlc1xuICAgIC8vIDMuIGRlc3RpbmF0aW9uIHNwZWNpZmllZCBxdWVyeSB2YWx1ZXNcbiAgICBwYXJzZWREZXN0aW5hdGlvbi5xdWVyeSA9IHtcbiAgICAgICAgLi4ucXVlcnksXG4gICAgICAgIC4uLnBhcnNlZERlc3RpbmF0aW9uLnF1ZXJ5XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXdVcmwsXG4gICAgICAgIGRlc3RRdWVyeSxcbiAgICAgICAgcGFyc2VkRGVzdGluYXRpb25cbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmVwYXJlLWRlc3RpbmF0aW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJjb21waWxlIiwicGF0aFRvUmVnZXhwIiwiZXNjYXBlU3RyaW5nUmVnZXhwIiwicGFyc2VVcmwiLCJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJnZXRDb29raWVQYXJzZXIiLCJnZXRTYWZlUGFyYW1OYW1lIiwicGFyYW1OYW1lIiwibmV3UGFyYW1OYW1lIiwiaSIsImxlbmd0aCIsImNoYXJDb2RlIiwiY2hhckNvZGVBdCIsImVzY2FwZVNlZ21lbnQiLCJzdHIiLCJzZWdtZW50TmFtZSIsInJlcGxhY2UiLCJSZWdFeHAiLCJ1bmVzY2FwZVNlZ21lbnRzIiwibWF0Y2hIYXMiLCJyZXEiLCJxdWVyeSIsImhhcyIsIm1pc3NpbmciLCJwYXJhbXMiLCJoYXNNYXRjaCIsImhhc0l0ZW0iLCJ2YWx1ZSIsImtleSIsInR5cGUiLCJ0b0xvd2VyQ2FzZSIsImhlYWRlcnMiLCJjb29raWVzIiwiaG9zdCIsImhvc3RuYW1lIiwic3BsaXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwibWF0Y2giLCJncm91cHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImdyb3VwS2V5IiwiYWxsTWF0Y2giLCJldmVyeSIsIml0ZW0iLCJzb21lIiwiY29tcGlsZU5vblBhdGgiLCJpbmNsdWRlcyIsInZhbGlkYXRlIiwicHJlcGFyZURlc3RpbmF0aW9uIiwiYXJncyIsImFzc2lnbiIsIl9fbmV4dExvY2FsZSIsIl9fbmV4dERlZmF1bHRMb2NhbGUiLCJfX25leHREYXRhUmVxIiwiX19uZXh0SW5mZXJyZWRMb2NhbGVGcm9tRGVmYXVsdCIsImVzY2FwZWREZXN0aW5hdGlvbiIsImRlc3RpbmF0aW9uIiwicGFyYW0iLCJwYXJzZWREZXN0aW5hdGlvbiIsImRlc3RRdWVyeSIsImRlc3RQYXRoIiwicGF0aG5hbWUiLCJoYXNoIiwiZGVzdEhvc3RuYW1lIiwiZGVzdFBhdGhQYXJhbUtleXMiLCJkZXN0SG9zdG5hbWVQYXJhbUtleXMiLCJkZXN0UGFyYW1zIiwicHVzaCIsIm5hbWUiLCJkZXN0UGF0aENvbXBpbGVyIiwiZGVzdEhvc3RuYW1lQ29tcGlsZXIiLCJzdHJPckFycmF5IiwiZW50cmllcyIsIm1hcCIsInBhcmFtS2V5cyIsImZpbHRlciIsImFwcGVuZFBhcmFtc1RvUXVlcnkiLCJuZXdVcmwiLCJzZWdtZW50IiwibWFya2VyIiwiZmluZCIsIm0iLCJzdGFydHNXaXRoIiwic2VhcmNoIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/prepare-destination.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js":
/*!***************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assign: () => (/* binding */ assign),\n/* harmony export */ searchParamsToUrlQuery: () => (/* binding */ searchParamsToUrlQuery),\n/* harmony export */ urlQueryToSearchParams: () => (/* binding */ urlQueryToSearchParams)\n/* harmony export */ });\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n searchParams.forEach((value, key)=>{\n if (typeof query[key] === \"undefined\") {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [\n query[key],\n value\n ];\n }\n });\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === \"string\" || typeof param === \"number\" && !isNaN(param) || typeof param === \"boolean\") {\n return String(param);\n } else {\n return \"\";\n }\n}\nfunction urlQueryToSearchParams(urlQuery) {\n const result = new URLSearchParams();\n Object.entries(urlQuery).forEach((param)=>{\n let [key, value] = param;\n if (Array.isArray(value)) {\n value.forEach((item)=>result.append(key, stringifyUrlQueryParam(item)));\n } else {\n result.set(key, stringifyUrlQueryParam(value));\n }\n });\n return result;\n}\nfunction assign(target) {\n for(var _len = arguments.length, searchParamsList = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n searchParamsList[_key - 1] = arguments[_key];\n }\n searchParamsList.forEach((searchParams)=>{\n Array.from(searchParams.keys()).forEach((key)=>target.delete(key));\n searchParams.forEach((value, key)=>target.append(key, value));\n });\n return target;\n} //# sourceMappingURL=querystring.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9xdWVyeXN0cmluZy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxTQUFTQSx1QkFBdUJDLFlBQVk7SUFDL0MsTUFBTUMsUUFBUSxDQUFDO0lBQ2ZELGFBQWFFLE9BQU8sQ0FBQyxDQUFDQyxPQUFPQztRQUN6QixJQUFJLE9BQU9ILEtBQUssQ0FBQ0csSUFBSSxLQUFLLGFBQWE7WUFDbkNILEtBQUssQ0FBQ0csSUFBSSxHQUFHRDtRQUNqQixPQUFPLElBQUlFLE1BQU1DLE9BQU8sQ0FBQ0wsS0FBSyxDQUFDRyxJQUFJLEdBQUc7WUFDbENILEtBQUssQ0FBQ0csSUFBSSxDQUFDRyxJQUFJLENBQUNKO1FBQ3BCLE9BQU87WUFDSEYsS0FBSyxDQUFDRyxJQUFJLEdBQUc7Z0JBQ1RILEtBQUssQ0FBQ0csSUFBSTtnQkFDVkQ7YUFDSDtRQUNMO0lBQ0o7SUFDQSxPQUFPRjtBQUNYO0FBQ0EsU0FBU08sdUJBQXVCQyxLQUFLO0lBQ2pDLElBQUksT0FBT0EsVUFBVSxZQUFZLE9BQU9BLFVBQVUsWUFBWSxDQUFDQyxNQUFNRCxVQUFVLE9BQU9BLFVBQVUsV0FBVztRQUN2RyxPQUFPRSxPQUFPRjtJQUNsQixPQUFPO1FBQ0gsT0FBTztJQUNYO0FBQ0o7QUFDTyxTQUFTRyx1QkFBdUJDLFFBQVE7SUFDM0MsTUFBTUMsU0FBUyxJQUFJQztJQUNuQkMsT0FBT0MsT0FBTyxDQUFDSixVQUFVWCxPQUFPLENBQUMsQ0FBQ087UUFDOUIsSUFBSSxDQUFDTCxLQUFLRCxNQUFNLEdBQUdNO1FBQ25CLElBQUlKLE1BQU1DLE9BQU8sQ0FBQ0gsUUFBUTtZQUN0QkEsTUFBTUQsT0FBTyxDQUFDLENBQUNnQixPQUFPSixPQUFPSyxNQUFNLENBQUNmLEtBQUtJLHVCQUF1QlU7UUFDcEUsT0FBTztZQUNISixPQUFPTSxHQUFHLENBQUNoQixLQUFLSSx1QkFBdUJMO1FBQzNDO0lBQ0o7SUFDQSxPQUFPVztBQUNYO0FBQ08sU0FBU08sT0FBT0MsTUFBTTtJQUN6QixJQUFJLElBQUlDLE9BQU9DLFVBQVVDLE1BQU0sRUFBRUMsbUJBQW1CLElBQUlyQixNQUFNa0IsT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUksT0FBTyxHQUFHQSxPQUFPSixNQUFNSSxPQUFPO1FBQ2xIRCxnQkFBZ0IsQ0FBQ0MsT0FBTyxFQUFFLEdBQUdILFNBQVMsQ0FBQ0csS0FBSztJQUNoRDtJQUNBRCxpQkFBaUJ4QixPQUFPLENBQUMsQ0FBQ0Y7UUFDdEJLLE1BQU11QixJQUFJLENBQUM1QixhQUFhNkIsSUFBSSxJQUFJM0IsT0FBTyxDQUFDLENBQUNFLE1BQU1rQixPQUFPUSxNQUFNLENBQUMxQjtRQUM3REosYUFBYUUsT0FBTyxDQUFDLENBQUNDLE9BQU9DLE1BQU1rQixPQUFPSCxNQUFNLENBQUNmLEtBQUtEO0lBQzFEO0lBQ0EsT0FBT21CO0FBQ1gsRUFFQSx1Q0FBdUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmcuanM/NmJhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2VhcmNoUGFyYW1zVG9VcmxRdWVyeShzZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBxdWVyeSA9IHt9O1xuICAgIHNlYXJjaFBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KT0+e1xuICAgICAgICBpZiAodHlwZW9mIHF1ZXJ5W2tleV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHF1ZXJ5W2tleV0pKSB7XG4gICAgICAgICAgICBxdWVyeVtrZXldLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVlcnlba2V5XSA9IFtcbiAgICAgICAgICAgICAgICBxdWVyeVtrZXldLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHF1ZXJ5O1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5VXJsUXVlcnlQYXJhbShwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHBhcmFtID09PSBcIm51bWJlclwiICYmICFpc05hTihwYXJhbSkgfHwgdHlwZW9mIHBhcmFtID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdXJsUXVlcnlUb1NlYXJjaFBhcmFtcyh1cmxRdWVyeSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBPYmplY3QuZW50cmllcyh1cmxRdWVyeSkuZm9yRWFjaCgocGFyYW0pPT57XG4gICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBwYXJhbTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtKT0+cmVzdWx0LmFwcGVuZChrZXksIHN0cmluZ2lmeVVybFF1ZXJ5UGFyYW0oaXRlbSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCBzdHJpbmdpZnlVcmxRdWVyeVBhcmFtKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQpIHtcbiAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzZWFyY2hQYXJhbXNMaXN0ID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICBzZWFyY2hQYXJhbXNMaXN0W19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgc2VhcmNoUGFyYW1zTGlzdC5mb3JFYWNoKChzZWFyY2hQYXJhbXMpPT57XG4gICAgICAgIEFycmF5LmZyb20oc2VhcmNoUGFyYW1zLmtleXMoKSkuZm9yRWFjaCgoa2V5KT0+dGFyZ2V0LmRlbGV0ZShrZXkpKTtcbiAgICAgICAgc2VhcmNoUGFyYW1zLmZvckVhY2goKHZhbHVlLCBrZXkpPT50YXJnZXQuYXBwZW5kKGtleSwgdmFsdWUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWVyeXN0cmluZy5qcy5tYXAiXSwibmFtZXMiOlsic2VhcmNoUGFyYW1zVG9VcmxRdWVyeSIsInNlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiZm9yRWFjaCIsInZhbHVlIiwia2V5IiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInN0cmluZ2lmeVVybFF1ZXJ5UGFyYW0iLCJwYXJhbSIsImlzTmFOIiwiU3RyaW5nIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInVybFF1ZXJ5IiwicmVzdWx0IiwiVVJMU2VhcmNoUGFyYW1zIiwiT2JqZWN0IiwiZW50cmllcyIsIml0ZW0iLCJhcHBlbmQiLCJzZXQiLCJhc3NpZ24iLCJ0YXJnZXQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2VhcmNoUGFyYW1zTGlzdCIsIl9rZXkiLCJmcm9tIiwia2V5cyIsImRlbGV0ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/querystring.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js":
/*!******************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ relativizeURL: () => (/* binding */ relativizeURL)\n/* harmony export */ });\n/**\n * Given a URL as a string and a base URL it will make the URL relative\n * if the parsed protocol and host is the same as the one in the base\n * URL. Otherwise it returns the same URL string.\n */ function relativizeURL(url, base) {\n const baseURL = typeof base === \"string\" ? new URL(base) : base;\n const relative = new URL(url, base);\n const origin = baseURL.protocol + \"//\" + baseURL.host;\n return relative.protocol + \"//\" + relative.host === origin ? relative.toString().replace(origin, \"\") : relative.toString();\n} //# sourceMappingURL=relativize-url.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZWxhdGl2aXplLXVybC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Q0FJQyxHQUFVLFNBQVNBLGNBQWNDLEdBQUcsRUFBRUMsSUFBSTtJQUN2QyxNQUFNQyxVQUFVLE9BQU9ELFNBQVMsV0FBVyxJQUFJRSxJQUFJRixRQUFRQTtJQUMzRCxNQUFNRyxXQUFXLElBQUlELElBQUlILEtBQUtDO0lBQzlCLE1BQU1JLFNBQVNILFFBQVFJLFFBQVEsR0FBRyxPQUFPSixRQUFRSyxJQUFJO0lBQ3JELE9BQU9ILFNBQVNFLFFBQVEsR0FBRyxPQUFPRixTQUFTRyxJQUFJLEtBQUtGLFNBQVNELFNBQVNJLFFBQVEsR0FBR0MsT0FBTyxDQUFDSixRQUFRLE1BQU1ELFNBQVNJLFFBQVE7QUFDNUgsRUFFQSwwQ0FBMEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcmVsYXRpdml6ZS11cmwuanM/NzNkMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGEgVVJMIGFzIGEgc3RyaW5nIGFuZCBhIGJhc2UgVVJMIGl0IHdpbGwgbWFrZSB0aGUgVVJMIHJlbGF0aXZlXG4gKiBpZiB0aGUgcGFyc2VkIHByb3RvY29sIGFuZCBob3N0IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gdGhlIGJhc2VcbiAqIFVSTC4gT3RoZXJ3aXNlIGl0IHJldHVybnMgdGhlIHNhbWUgVVJMIHN0cmluZy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVsYXRpdml6ZVVSTCh1cmwsIGJhc2UpIHtcbiAgICBjb25zdCBiYXNlVVJMID0gdHlwZW9mIGJhc2UgPT09IFwic3RyaW5nXCIgPyBuZXcgVVJMKGJhc2UpIDogYmFzZTtcbiAgICBjb25zdCByZWxhdGl2ZSA9IG5ldyBVUkwodXJsLCBiYXNlKTtcbiAgICBjb25zdCBvcmlnaW4gPSBiYXNlVVJMLnByb3RvY29sICsgXCIvL1wiICsgYmFzZVVSTC5ob3N0O1xuICAgIHJldHVybiByZWxhdGl2ZS5wcm90b2NvbCArIFwiLy9cIiArIHJlbGF0aXZlLmhvc3QgPT09IG9yaWdpbiA/IHJlbGF0aXZlLnRvU3RyaW5nKCkucmVwbGFjZShvcmlnaW4sIFwiXCIpIDogcmVsYXRpdmUudG9TdHJpbmcoKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVsYXRpdml6ZS11cmwuanMubWFwIl0sIm5hbWVzIjpbInJlbGF0aXZpemVVUkwiLCJ1cmwiLCJiYXNlIiwiYmFzZVVSTCIsIlVSTCIsInJlbGF0aXZlIiwib3JpZ2luIiwicHJvdG9jb2wiLCJob3N0IiwidG9TdHJpbmciLCJyZXBsYWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/relativize-url.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js":
/*!**********************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js ***!
\**********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ removePathPrefix: () => (/* binding */ removePathPrefix)\n/* harmony export */ });\n/* harmony import */ var _path_has_prefix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path-has-prefix */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js\");\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */ function 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,_path_has_prefix__WEBPACK_IMPORTED_MODULE_0__.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtcGF0aC1wcmVmaXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0Q7QUFDbEQ7Ozs7Ozs7Q0FPQyxHQUFVLFNBQVNDLGlCQUFpQkMsSUFBSSxFQUFFQyxNQUFNO0lBQzdDLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRixvQkFBb0I7SUFDcEIsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLElBQUksQ0FBQ0gsK0RBQWFBLENBQUNFLE1BQU1DLFNBQVM7UUFDOUIsT0FBT0Q7SUFDWDtJQUNBLCtDQUErQztJQUMvQyxNQUFNRSxnQkFBZ0JGLEtBQUtHLEtBQUssQ0FBQ0YsT0FBT0csTUFBTTtJQUM5QywyRUFBMkU7SUFDM0UsSUFBSUYsY0FBY0csVUFBVSxDQUFDLE1BQU07UUFDL0IsT0FBT0g7SUFDWDtJQUNBLDRFQUE0RTtJQUM1RSxtREFBbUQ7SUFDbkQsT0FBTyxNQUFNQTtBQUNqQixFQUVBLDhDQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtcGF0aC1wcmVmaXguanM/MTFhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXRoSGFzUHJlZml4IH0gZnJvbSBcIi4vcGF0aC1oYXMtcHJlZml4XCI7XG4vKipcbiAqIEdpdmVuIGEgcGF0aCBhbmQgYSBwcmVmaXggaXQgd2lsbCByZW1vdmUgdGhlIHByZWZpeCB3aGVuIGl0IGV4aXN0cyBpbiB0aGVcbiAqIGdpdmVuIHBhdGguIEl0IGVuc3VyZXMgaXQgbWF0Y2hlcyBleGFjdGx5IHdpdGhvdXQgY29udGFpbmluZyBleHRyYSBjaGFyc1xuICogYW5kIGlmIHRoZSBwcmVmaXggaXMgbm90IHRoZXJlIGl0IHdpbGwgYmUgbm9vcC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byByZW1vdmUgdGhlIHByZWZpeCBmcm9tLlxuICogQHBhcmFtIHByZWZpeCBUaGUgcHJlZml4IHRvIGJlIHJlbW92ZWQuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhdGhQcmVmaXgocGF0aCwgcHJlZml4KSB7XG4gICAgLy8gSWYgdGhlIHBhdGggZG9lc24ndCBzdGFydCB3aXRoIHRoZSBwcmVmaXggd2UgY2FuIHJldHVybiBpdCBhcyBpcy4gVGhpc1xuICAgIC8vIHByb3RlY3RzIHVzIGZyb20gc2l0dWF0aW9ucyB3aGVyZSB0aGUgcHJlZml4IGlzIGEgc3Vic3RyaW5nIG9mIHRoZSBwYXRoXG4gICAgLy8gcHJlZml4IHN1Y2ggYXM6XG4gICAgLy9cbiAgICAvLyBGb3IgcHJlZml4OiAvYmxvZ1xuICAgIC8vXG4gICAgLy8gICAvYmxvZyAtPiB0cnVlXG4gICAgLy8gICAvYmxvZy8gLT4gdHJ1ZVxuICAgIC8vICAgL2Jsb2cvMSAtPiB0cnVlXG4gICAgLy8gICAvYmxvZ2dpbmcgLT4gZmFsc2VcbiAgICAvLyAgIC9ibG9nZ2luZy8gLT4gZmFsc2VcbiAgICAvLyAgIC9ibG9nZ2luZy8xIC0+IGZhbHNlXG4gICAgaWYgKCFwYXRoSGFzUHJlZml4KHBhdGgsIHByZWZpeCkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIC8vIFJlbW92ZSB0aGUgcHJlZml4IGZyb20gdGhlIHBhdGggdmlhIHNsaWNpbmcuXG4gICAgY29uc3Qgd2l0aG91dFByZWZpeCA9IHBhdGguc2xpY2UocHJlZml4Lmxlbmd0aCk7XG4gICAgLy8gSWYgdGhlIHBhdGggd2l0aG91dCB0aGUgcHJlZml4IHN0YXJ0cyB3aXRoIGEgYC9gIHdlIGNhbiByZXR1cm4gaXQgYXMgaXMuXG4gICAgaWYgKHdpdGhvdXRQcmVmaXguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRQcmVmaXg7XG4gICAgfVxuICAgIC8vIElmIHRoZSBwYXRoIHdpdGhvdXQgdGhlIHByZWZpeCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBgL2Agd2UgbmVlZCB0byBhZGQgaXRcbiAgICAvLyBiYWNrIHRvIHRoZSBwYXRoIHRvIG1ha2Ugc3VyZSBpdCdzIGEgdmFsaWQgcGF0aC5cbiAgICByZXR1cm4gXCIvXCIgKyB3aXRob3V0UHJlZml4O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtcGF0aC1wcmVmaXguanMubWFwIl0sIm5hbWVzIjpbInBhdGhIYXNQcmVmaXgiLCJyZW1vdmVQYXRoUHJlZml4IiwicGF0aCIsInByZWZpeCIsIndpdGhvdXRQcmVmaXgiLCJzbGljZSIsImxlbmd0aCIsInN0YXJ0c1dpdGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js":
/*!*************************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js ***!
\*************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ removeTrailingSlash: () => (/* binding */ removeTrailingSlash)\n/* harmony export */ });\n/**\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 */ function 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yZW1vdmUtdHJhaWxpbmctc2xhc2guanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7Q0FNQyxHQUFVLFNBQVNBLG9CQUFvQkMsS0FBSztJQUN6QyxPQUFPQSxNQUFNQyxPQUFPLENBQUMsT0FBTyxPQUFPO0FBQ3ZDLEVBRUEsaURBQWlEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaC5qcz84MmY1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyB0aGUgdHJhaWxpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcm91dGUgb3IgcGFnZSBwYXRoLiBQcmVzZXJ2ZXMgdGhlXG4gKiByb290IHBhZ2UuIEV4YW1wbGVzOlxuICogICAtIGAvZm9vL2Jhci9gIC0+IGAvZm9vL2JhcmBcbiAqICAgLSBgL2Zvby9iYXJgIC0+IGAvZm9vL2JhcmBcbiAqICAgLSBgL2AgLT4gYC9gXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRyYWlsaW5nU2xhc2gocm91dGUpIHtcbiAgICByZXR1cm4gcm91dGUucmVwbGFjZSgvXFwvJC8sIFwiXCIpIHx8IFwiL1wiO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtdHJhaWxpbmctc2xhc2guanMubWFwIl0sIm5hbWVzIjpbInJlbW92ZVRyYWlsaW5nU2xhc2giLCJyb3V0ZSIsInJlcGxhY2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-matcher.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/route-matcher.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getRouteMatcher: () => (/* binding */ getRouteMatcher)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/utils.js\");\n\nfunction getRouteMatcher(param) {\n let { re, groups } = param;\n return (pathname)=>{\n const routeMatch = re.exec(pathname);\n if (!routeMatch) {\n return false;\n }\n const decode = (param)=>{\n try {\n return decodeURIComponent(param);\n } catch (_) {\n throw new _utils__WEBPACK_IMPORTED_MODULE_0__.DecodeError(\"failed to decode param\");\n }\n };\n const params = {};\n Object.keys(groups).forEach((slugName)=>{\n const g = groups[slugName];\n const m = routeMatch[g.pos];\n if (m !== undefined) {\n params[slugName] = ~m.indexOf(\"/\") ? m.split(\"/\").map((entry)=>decode(entry)) : g.repeat ? [\n decode(m)\n ] : decode(m);\n }\n });\n return params;\n };\n} //# sourceMappingURL=route-matcher.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1tYXRjaGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTBDO0FBQ25DLFNBQVNDLGdCQUFnQkMsS0FBSztJQUNqQyxJQUFJLEVBQUVDLEVBQUUsRUFBRUMsTUFBTSxFQUFFLEdBQUdGO0lBQ3JCLE9BQU8sQ0FBQ0c7UUFDSixNQUFNQyxhQUFhSCxHQUFHSSxJQUFJLENBQUNGO1FBQzNCLElBQUksQ0FBQ0MsWUFBWTtZQUNiLE9BQU87UUFDWDtRQUNBLE1BQU1FLFNBQVMsQ0FBQ047WUFDWixJQUFJO2dCQUNBLE9BQU9PLG1CQUFtQlA7WUFDOUIsRUFBRSxPQUFPUSxHQUFHO2dCQUNSLE1BQU0sSUFBSVYsK0NBQVdBLENBQUM7WUFDMUI7UUFDSjtRQUNBLE1BQU1XLFNBQVMsQ0FBQztRQUNoQkMsT0FBT0MsSUFBSSxDQUFDVCxRQUFRVSxPQUFPLENBQUMsQ0FBQ0M7WUFDekIsTUFBTUMsSUFBSVosTUFBTSxDQUFDVyxTQUFTO1lBQzFCLE1BQU1FLElBQUlYLFVBQVUsQ0FBQ1UsRUFBRUUsR0FBRyxDQUFDO1lBQzNCLElBQUlELE1BQU1FLFdBQVc7Z0JBQ2pCUixNQUFNLENBQUNJLFNBQVMsR0FBRyxDQUFDRSxFQUFFRyxPQUFPLENBQUMsT0FBT0gsRUFBRUksS0FBSyxDQUFDLEtBQUtDLEdBQUcsQ0FBQyxDQUFDQyxRQUFRZixPQUFPZSxVQUFVUCxFQUFFUSxNQUFNLEdBQUc7b0JBQ3ZGaEIsT0FBT1M7aUJBQ1YsR0FBR1QsT0FBT1M7WUFDZjtRQUNKO1FBQ0EsT0FBT047SUFDWDtBQUNKLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JvdXRlLW1hdGNoZXIuanM/Y2Y5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvZGVFcnJvciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlTWF0Y2hlcihwYXJhbSkge1xuICAgIGxldCB7IHJlLCBncm91cHMgfSA9IHBhcmFtO1xuICAgIHJldHVybiAocGF0aG5hbWUpPT57XG4gICAgICAgIGNvbnN0IHJvdXRlTWF0Y2ggPSByZS5leGVjKHBhdGhuYW1lKTtcbiAgICAgICAgaWYgKCFyb3V0ZU1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVjb2RlID0gKHBhcmFtKT0+e1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRGVjb2RlRXJyb3IoXCJmYWlsZWQgdG8gZGVjb2RlIHBhcmFtXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBzKS5mb3JFYWNoKChzbHVnTmFtZSk9PntcbiAgICAgICAgICAgIGNvbnN0IGcgPSBncm91cHNbc2x1Z05hbWVdO1xuICAgICAgICAgICAgY29uc3QgbSA9IHJvdXRlTWF0Y2hbZy5wb3NdO1xuICAgICAgICAgICAgaWYgKG0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1tzbHVnTmFtZV0gPSB+bS5pbmRleE9mKFwiL1wiKSA/IG0uc3BsaXQoXCIvXCIpLm1hcCgoZW50cnkpPT5kZWNvZGUoZW50cnkpKSA6IGcucmVwZWF0ID8gW1xuICAgICAgICAgICAgICAgICAgICBkZWNvZGUobSlcbiAgICAgICAgICAgICAgICBdIDogZGVjb2RlKG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1tYXRjaGVyLmpzLm1hcCJdLCJuYW1lcyI6WyJEZWNvZGVFcnJvciIsImdldFJvdXRlTWF0Y2hlciIsInBhcmFtIiwicmUiLCJncm91cHMiLCJwYXRobmFtZSIsInJvdXRlTWF0Y2giLCJleGVjIiwiZGVjb2RlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiXyIsInBhcmFtcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwic2x1Z05hbWUiLCJnIiwibSIsInBvcyIsInVuZGVmaW5lZCIsImluZGV4T2YiLCJzcGxpdCIsIm1hcCIsImVudHJ5IiwicmVwZWF0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-matcher.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-regex.js":
/*!***************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/route-regex.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getNamedMiddlewareRegex: () => (/* binding */ getNamedMiddlewareRegex),\n/* harmony export */ getNamedRouteRegex: () => (/* binding */ getNamedRouteRegex),\n/* harmony export */ getRouteRegex: () => (/* binding */ getRouteRegex)\n/* harmony export */ });\n/* harmony import */ var _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../server/future/helpers/interception-routes */ \"(rsc)/./node_modules/next/dist/esm/server/future/helpers/interception-routes.js\");\n/* harmony import */ var _escape_regexp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../escape-regexp */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/escape-regexp.js\");\n/* harmony import */ var _remove_trailing_slash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./remove-trailing-slash */ \"(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js\");\n\n\n\nconst NEXT_QUERY_PARAM_PREFIX = \"nxtP\";\nconst NEXT_INTERCEPTION_MARKER_PREFIX = \"nxtI\";\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route. Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n */ function parseParameter(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}\nfunction getParametrizedRoute(route) {\n const segments = (0,_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_2__.removeTrailingSlash)(route).slice(1).split(\"/\");\n const groups = {};\n let groupIndex = 1;\n return {\n parameterizedRoute: segments.map((segment)=>{\n const markerMatch = _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const paramMatches = segment.match(/\\[((?:\\[.*\\])|.+)\\]/) // Check for parameters\n ;\n if (markerMatch && paramMatches) {\n const { key, optional, repeat } = parseParameter(paramMatches[1]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n return \"/\" + (0,_escape_regexp__WEBPACK_IMPORTED_MODULE_1__.escapeStringRegexp)(markerMatch) + \"([^/]+?)\";\n } else if (paramMatches) {\n const { key, repeat, optional } = parseParameter(paramMatches[1]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n return repeat ? optional ? \"(?:/(.+?))?\" : \"/(.+?)\" : \"/([^/]+?)\";\n } else {\n return \"/\" + (0,_escape_regexp__WEBPACK_IMPORTED_MODULE_1__.escapeStringRegexp)(segment);\n }\n }).join(\"\"),\n groups\n };\n}\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */ function getRouteRegex(normalizedRoute) {\n const { parameterizedRoute, groups } = getParametrizedRoute(normalizedRoute);\n return {\n re: new RegExp(\"^\" + parameterizedRoute + \"(?:/)?$\"),\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 } = param;\n const { key, optional, repeat } = parseParameter(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 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,_escape_regexp__WEBPACK_IMPORTED_MODULE_1__.escapeStringRegexp)(interceptionMarker) : \"\";\n return repeat ? optional ? \"(?:/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">.+?))?\" : \"/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">.+?)\" : \"/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">[^/]+?)\";\n}\nfunction getNamedParametrizedRoute(route, prefixRouteKeys) {\n const segments = (0,_remove_trailing_slash__WEBPACK_IMPORTED_MODULE_2__.removeTrailingSlash)(route).slice(1).split(\"/\");\n const getSafeRouteKey = buildGetSafeRouteKey();\n const routeKeys = {};\n return {\n namedParameterizedRoute: segments.map((segment)=>{\n const hasInterceptionMarker = _server_future_helpers_interception_routes__WEBPACK_IMPORTED_MODULE_0__.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m));\n const paramMatches = segment.match(/\\[((?:\\[.*\\])|.+)\\]/) // Check for parameters\n ;\n if (hasInterceptionMarker && paramMatches) {\n const [usedMarker] = segment.split(paramMatches[0]);\n return getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: usedMarker,\n segment: paramMatches[1],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n });\n } else if (paramMatches) {\n return getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[1],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined\n });\n } else {\n return \"/\" + (0,_escape_regexp__WEBPACK_IMPORTED_MODULE_1__.escapeStringRegexp)(segment);\n }\n }).join(\"\"),\n routeKeys\n };\n}\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */ function getNamedRouteRegex(normalizedRoute, prefixRouteKey) {\n const result = getNamedParametrizedRoute(normalizedRoute, prefixRouteKey);\n return {\n ...getRouteRegex(normalizedRoute),\n namedRegex: \"^\" + result.namedParameterizedRoute + \"(?:/)?$\",\n routeKeys: result.routeKeys\n };\n}\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */ function getNamedMiddlewareRegex(normalizedRoute, options) {\n const { parameterizedRoute } = getParametrizedRoute(normalizedRoute);\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);\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBbUc7QUFDMUM7QUFDSztBQUM5RCxNQUFNRywwQkFBMEI7QUFDaEMsTUFBTUMsa0NBQWtDO0FBQ3hDOzs7Ozs7O0NBT0MsR0FBRyxTQUFTQyxlQUFlQyxLQUFLO0lBQzdCLE1BQU1DLFdBQVdELE1BQU1FLFVBQVUsQ0FBQyxRQUFRRixNQUFNRyxRQUFRLENBQUM7SUFDekQsSUFBSUYsVUFBVTtRQUNWRCxRQUFRQSxNQUFNSSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzVCO0lBQ0EsTUFBTUMsU0FBU0wsTUFBTUUsVUFBVSxDQUFDO0lBQ2hDLElBQUlHLFFBQVE7UUFDUkwsUUFBUUEsTUFBTUksS0FBSyxDQUFDO0lBQ3hCO0lBQ0EsT0FBTztRQUNIRSxLQUFLTjtRQUNMSztRQUNBSjtJQUNKO0FBQ0o7QUFDQSxTQUFTTSxxQkFBcUJDLEtBQUs7SUFDL0IsTUFBTUMsV0FBV2IsMkVBQW1CQSxDQUFDWSxPQUFPSixLQUFLLENBQUMsR0FBR00sS0FBSyxDQUFDO0lBQzNELE1BQU1DLFNBQVMsQ0FBQztJQUNoQixJQUFJQyxhQUFhO0lBQ2pCLE9BQU87UUFDSEMsb0JBQW9CSixTQUFTSyxHQUFHLENBQUMsQ0FBQ0M7WUFDOUIsTUFBTUMsY0FBY3RCLGtHQUEwQkEsQ0FBQ3VCLElBQUksQ0FBQyxDQUFDQyxJQUFJSCxRQUFRYixVQUFVLENBQUNnQjtZQUM1RSxNQUFNQyxlQUFlSixRQUFRSyxLQUFLLENBQUMsdUJBQXVCLHVCQUF1Qjs7WUFFakYsSUFBSUosZUFBZUcsY0FBYztnQkFDN0IsTUFBTSxFQUFFYixHQUFHLEVBQUVMLFFBQVEsRUFBRUksTUFBTSxFQUFFLEdBQUdOLGVBQWVvQixZQUFZLENBQUMsRUFBRTtnQkFDaEVSLE1BQU0sQ0FBQ0wsSUFBSSxHQUFHO29CQUNWZSxLQUFLVDtvQkFD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QkFBZ0I7UUFDdkM7SUFDSjtJQUNBLE1BQU0sRUFBRVosdUJBQXVCLEVBQUUsR0FBR0YsMEJBQTBCdkIsaUJBQWlCO0lBQy9FLElBQUlzQyx1QkFBdUJGLFdBQVcsZUFBZTtJQUNyRCxPQUFPO1FBQ0hILFlBQVksTUFBTVIsMEJBQTBCYSx1QkFBdUI7SUFDdkU7QUFDSixFQUVBLHVDQUF1QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleC5qcz9kZTZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZlci9mdXR1cmUvaGVscGVycy9pbnRlcmNlcHRpb24tcm91dGVzXCI7XG5pbXBvcnQgeyBlc2NhcGVTdHJpbmdSZWdleHAgfSBmcm9tIFwiLi4vLi4vZXNjYXBlLXJlZ2V4cFwiO1xuaW1wb3J0IHsgcmVtb3ZlVHJhaWxpbmdTbGFzaCB9IGZyb20gXCIuL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiO1xuY29uc3QgTkVYVF9RVUVSWV9QQVJBTV9QUkVGSVggPSBcIm54dFBcIjtcbmNvbnN0IE5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVggPSBcIm54dElcIjtcbi8qKlxuICogUGFyc2VzIGEgZ2l2ZW4gcGFyYW1ldGVyIGZyb20gYSByb3V0ZSB0byBhIGRhdGEgc3RydWN0dXJlIHRoYXQgY2FuIGJlIHVzZWRcbiAqIHRvIGdlbmVyYXRlIHRoZSBwYXJhbWV0cml6ZWQgcm91dGUuIEV4YW1wbGVzOlxuICogICAtIGBbLi4uc2x1Z11gIC0+IGB7IGtleTogJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH1gXG4gKiAgIC0gYC4uLnNsdWdgIC0+IGB7IGtleTogJ3NsdWcnLCByZXBlYXQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSB9YFxuICogICAtIGBbZm9vXWAgLT4gYHsga2V5OiAnZm9vJywgcmVwZWF0OiBmYWxzZSwgb3B0aW9uYWw6IHRydWUgfWBcbiAqICAgLSBgYmFyYCAtPiBgeyBrZXk6ICdiYXInLCByZXBlYXQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UgfWBcbiAqLyBmdW5jdGlvbiBwYXJzZVBhcmFtZXRlcihwYXJhbSkge1xuICAgIGNvbnN0IG9wdGlvbmFsID0gcGFyYW0uc3RhcnRzV2l0aChcIltcIikgJiYgcGFyYW0uZW5kc1dpdGgoXCJdXCIpO1xuICAgIGlmIChvcHRpb25hbCkge1xuICAgICAgICBwYXJhbSA9IHBhcmFtLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgY29uc3QgcmVwZWF0ID0gcGFyYW0uc3RhcnRzV2l0aChcIi4uLlwiKTtcbiAgICBpZiAocmVwZWF0KSB7XG4gICAgICAgIHBhcmFtID0gcGFyYW0uc2xpY2UoMyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGtleTogcGFyYW0sXG4gICAgICAgIHJlcGVhdCxcbiAgICAgICAgb3B0aW9uYWxcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFyYW1ldHJpemVkUm91dGUocm91dGUpIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHJlbW92ZVRyYWlsaW5nU2xhc2gocm91dGUpLnNsaWNlKDEpLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBncm91cHMgPSB7fTtcbiAgICBsZXQgZ3JvdXBJbmRleCA9IDE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1ldGVyaXplZFJvdXRlOiBzZWdtZW50cy5tYXAoKHNlZ21lbnQpPT57XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJNYXRjaCA9IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLmZpbmQoKG0pPT5zZWdtZW50LnN0YXJ0c1dpdGgobSkpO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1NYXRjaGVzID0gc2VnbWVudC5tYXRjaCgvXFxbKCg/OlxcWy4qXFxdKXwuKylcXF0vKSAvLyBDaGVjayBmb3IgcGFyYW1ldGVyc1xuICAgICAgICAgICAgO1xuICAgICAgICAgICAgaWYgKG1hcmtlck1hdGNoICYmIHBhcmFtTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBvcHRpb25hbCwgcmVwZWF0IH0gPSBwYXJzZVBhcmFtZXRlcihwYXJhbU1hdGNoZXNbMV0pO1xuICAgICAgICAgICAgICAgIGdyb3Vwc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICBwb3M6IGdyb3VwSW5kZXgrKyxcbiAgICAgICAgICAgICAgICAgICAgcmVwZWF0LFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiL1wiICsgZXNjYXBlU3RyaW5nUmVnZXhwKG1hcmtlck1hdGNoKSArIFwiKFteL10rPylcIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1NYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXksIHJlcGVhdCwgb3B0aW9uYWwgfSA9IHBhcnNlUGFyYW1ldGVyKHBhcmFtTWF0Y2hlc1sxXSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHBvczogZ3JvdXBJbmRleCsrLFxuICAgICAgICAgICAgICAgICAgICByZXBlYXQsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVwZWF0ID8gb3B0aW9uYWwgPyBcIig/Oi8oLis/KSk/XCIgOiBcIi8oLis/KVwiIDogXCIvKFteL10rPylcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiL1wiICsgZXNjYXBlU3RyaW5nUmVnZXhwKHNlZ21lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5qb2luKFwiXCIpLFxuICAgICAgICBncm91cHNcbiAgICB9O1xufVxuLyoqXG4gKiBGcm9tIGEgbm9ybWFsaXplZCByb3V0ZSB0aGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBhbmRcbiAqIGEgY29ycmVzcG9uZGluZyBncm91cHMgb2JqZWN0IGludGVuZGVkIHRvIGJlIHVzZWQgdG8gc3RvcmUgbWF0Y2hpbmcgZ3JvdXBzXG4gKiBmcm9tIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlUmVnZXgobm9ybWFsaXplZFJvdXRlKSB7XG4gICAgY29uc3QgeyBwYXJhbWV0ZXJpemVkUm91dGUsIGdyb3VwcyB9ID0gZ2V0UGFyYW1ldHJpemVkUm91dGUobm9ybWFsaXplZFJvdXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZTogbmV3IFJlZ0V4cChcIl5cIiArIHBhcmFtZXRlcml6ZWRSb3V0ZSArIFwiKD86Lyk/JFwiKSxcbiAgICAgICAgZ3JvdXBzOiBncm91cHNcbiAgICB9O1xufVxuLyoqXG4gKiBCdWlsZHMgYSBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIG1pbmltYWwgcm91dGVLZXkgdXNpbmcgb25seSBhLXogYW5kIG1pbmltYWxcbiAqIG51bWJlciBvZiBjaGFyYWN0ZXJzLlxuICovIGZ1bmN0aW9uIGJ1aWxkR2V0U2FmZVJvdXRlS2V5KCkge1xuICAgIGxldCBpID0gMDtcbiAgICByZXR1cm4gKCk9PntcbiAgICAgICAgbGV0IHJvdXRlS2V5ID0gXCJcIjtcbiAgICAgICAgbGV0IGogPSArK2k7XG4gICAgICAgIHdoaWxlKGogPiAwKXtcbiAgICAgICAgICAgIHJvdXRlS2V5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoOTcgKyAoaiAtIDEpICUgMjYpO1xuICAgICAgICAgICAgaiA9IE1hdGguZmxvb3IoKGogLSAxKSAvIDI2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm91dGVLZXk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldFNhZmVLZXlGcm9tU2VnbWVudChwYXJhbSkge1xuICAgIGxldCB7IGludGVyY2VwdGlvbk1hcmtlciwgZ2V0U2FmZVJvdXRlS2V5LCBzZWdtZW50LCByb3V0ZUtleXMsIGtleVByZWZpeCB9ID0gcGFyYW07XG4gICAgY29uc3QgeyBrZXksIG9wdGlvbmFsLCByZXBlYXQgfSA9IHBhcnNlUGFyYW1ldGVyKHNlZ21lbnQpO1xuICAgIC8vIHJlcGxhY2UgYW55IG5vbi13b3JkIGNoYXJhY3RlcnMgc2luY2UgdGhleSBjYW4gYnJlYWtcbiAgICAvLyB0aGUgbmFtZWQgcmVnZXhcbiAgICBsZXQgY2xlYW5lZEtleSA9IGtleS5yZXBsYWNlKC9cXFcvZywgXCJcIik7XG4gICAgaWYgKGtleVByZWZpeCkge1xuICAgICAgICBjbGVhbmVkS2V5ID0gXCJcIiArIGtleVByZWZpeCArIGNsZWFuZWRLZXk7XG4gICAgfVxuICAgIGxldCBpbnZhbGlkS2V5ID0gZmFsc2U7XG4gICAgLy8gY2hlY2sgaWYgdGhlIGtleSBpcyBzdGlsbCBpbnZhbGlkIGFuZCBmYWxsYmFjayB0byB1c2luZyBhIGtub3duXG4gICAgLy8gc2FmZSBrZXlcbiAgICBpZiAoY2xlYW5lZEtleS5sZW5ndGggPT09IDAgfHwgY2xlYW5lZEtleS5sZW5ndGggPiAzMCkge1xuICAgICAgICBpbnZhbGlkS2V5ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFpc05hTihwYXJzZUludChjbGVhbmVkS2V5LnNsaWNlKDAsIDEpKSkpIHtcbiAgICAgICAgaW52YWxpZEtleSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChpbnZhbGlkS2V5KSB7XG4gICAgICAgIGNsZWFuZWRLZXkgPSBnZXRTYWZlUm91dGVLZXkoKTtcbiAgICB9XG4gICAgaWYgKGtleVByZWZpeCkge1xuICAgICAgICByb3V0ZUtleXNbY2xlYW5lZEtleV0gPSBcIlwiICsga2V5UHJlZml4ICsga2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvdXRlS2V5c1tjbGVhbmVkS2V5XSA9IGtleTtcbiAgICB9XG4gICAgLy8gaWYgdGhlIHNlZ21lbnQgaGFzIGFuIGludGVyY2VwdGlvbiBtYXJrZXIsIG1ha2Ugc3VyZSB0aGF0J3MgcGFydCBvZiB0aGUgcmVnZXggcGF0dGVyblxuICAgIC8vIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHJvdXRlIHdpdGggdGhlIGludGVyY2VwdGlvbiBtYXJrZXIgZG9lc24ndCBpbmNvcnJlY3RseSBtYXRjaFxuICAgIC8vIHRoZSBub24taW50ZXJjZXB0ZWQgcm91dGUgKGllIC9hcHAvKC4pW3VzZXJuYW1lXSBzaG91bGQgbm90IG1hdGNoIC9hcHAvW3VzZXJuYW1lXSlcbiAgICBjb25zdCBpbnRlcmNlcHRpb25QcmVmaXggPSBpbnRlcmNlcHRpb25NYXJrZXIgPyBlc2NhcGVTdHJpbmdSZWdleHAoaW50ZXJjZXB0aW9uTWFya2VyKSA6IFwiXCI7XG4gICAgcmV0dXJuIHJlcGVhdCA/IG9wdGlvbmFsID8gXCIoPzovXCIgKyBpbnRlcmNlcHRpb25QcmVmaXggKyBcIig/PFwiICsgY2xlYW5lZEtleSArIFwiPi4rPykpP1wiIDogXCIvXCIgKyBpbnRlcmNlcHRpb25QcmVmaXggKyBcIig/PFwiICsgY2xlYW5lZEtleSArIFwiPi4rPylcIiA6IFwiL1wiICsgaW50ZXJjZXB0aW9uUHJlZml4ICsgXCIoPzxcIiArIGNsZWFuZWRLZXkgKyBcIj5bXi9dKz8pXCI7XG59XG5mdW5jdGlvbiBnZXROYW1lZFBhcmFtZXRyaXplZFJvdXRlKHJvdXRlLCBwcmVmaXhSb3V0ZUtleXMpIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHJlbW92ZVRyYWlsaW5nU2xhc2gocm91dGUpLnNsaWNlKDEpLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBnZXRTYWZlUm91dGVLZXkgPSBidWlsZEdldFNhZmVSb3V0ZUtleSgpO1xuICAgIGNvbnN0IHJvdXRlS2V5cyA9IHt9O1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWVkUGFyYW1ldGVyaXplZFJvdXRlOiBzZWdtZW50cy5tYXAoKHNlZ21lbnQpPT57XG4gICAgICAgICAgICBjb25zdCBoYXNJbnRlcmNlcHRpb25NYXJrZXIgPSBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5zb21lKChtKT0+c2VnbWVudC5zdGFydHNXaXRoKG0pKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtTWF0Y2hlcyA9IHNlZ21lbnQubWF0Y2goL1xcWygoPzpcXFsuKlxcXSl8LispXFxdLykgLy8gQ2hlY2sgZm9yIHBhcmFtZXRlcnNcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGlmIChoYXNJbnRlcmNlcHRpb25NYXJrZXIgJiYgcGFyYW1NYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3VzZWRNYXJrZXJdID0gc2VnbWVudC5zcGxpdChwYXJhbU1hdGNoZXNbMF0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRTYWZlS2V5RnJvbVNlZ21lbnQoe1xuICAgICAgICAgICAgICAgICAgICBnZXRTYWZlUm91dGVLZXksXG4gICAgICAgICAgICAgICAgICAgIGludGVyY2VwdGlvbk1hcmtlcjogdXNlZE1hcmtlcixcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudDogcGFyYW1NYXRjaGVzWzFdLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGtleVByZWZpeDogcHJlZml4Um91dGVLZXlzID8gTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U2FmZUtleUZyb21TZWdtZW50KHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0U2FmZVJvdXRlS2V5LFxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50OiBwYXJhbU1hdGNoZXNbMV0sXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlS2V5cyxcbiAgICAgICAgICAgICAgICAgICAga2V5UHJlZml4OiBwcmVmaXhSb3V0ZUtleXMgPyBORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIvXCIgKyBlc2NhcGVTdHJpbmdSZWdleHAoc2VnbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmpvaW4oXCJcIiksXG4gICAgICAgIHJvdXRlS2V5c1xuICAgIH07XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXh0ZW5kcyBgZ2V0Um91dGVSZWdleGAgZ2VuZXJhdGluZyBhbHNvIGEgbmFtZWQgcmVnZXhwIHdoZXJlXG4gKiBlYWNoIGdyb3VwIGlzIG5hbWVkIGFsb25nIHdpdGggYSByb3V0ZUtleXMgb2JqZWN0IHRoYXQgaW5kZXhlcyB0aGUgYXNzaWduZWRcbiAqIG5hbWVkIGdyb3VwIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcga2V5LiBXaGVuIHRoZSByb3V0ZUtleXMgbmVlZCB0byBiZVxuICogcHJlZml4ZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgaW50ZXJuYWxseSB0aGUgXCJwcmVmaXhSb3V0ZUtleVwiIGFyZyBzaG91bGRcbiAqIGJlIFwidHJ1ZVwiIGN1cnJlbnRseSB0aGlzIGlzIG9ubHkgdGhlIGNhc2Ugd2hlbiBjcmVhdGluZyB0aGUgcm91dGVzLW1hbmlmZXN0XG4gKiBkdXJpbmcgdGhlIGJ1aWxkXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVkUm91dGVSZWdleChub3JtYWxpemVkUm91dGUsIHByZWZpeFJvdXRlS2V5KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0TmFtZWRQYXJhbWV0cml6ZWRSb3V0ZShub3JtYWxpemVkUm91dGUsIHByZWZpeFJvdXRlS2V5KTtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRSb3V0ZVJlZ2V4KG5vcm1hbGl6ZWRSb3V0ZSksXG4gICAgICAgIG5hbWVkUmVnZXg6IFwiXlwiICsgcmVzdWx0Lm5hbWVkUGFyYW1ldGVyaXplZFJvdXRlICsgXCIoPzovKT8kXCIsXG4gICAgICAgIHJvdXRlS2V5czogcmVzdWx0LnJvdXRlS2V5c1xuICAgIH07XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIG5hbWVkIHJlZ2V4cC5cbiAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNpbmcgZm9yIGJ1aWxkIHRpbWUgb25seS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0TmFtZWRNaWRkbGV3YXJlUmVnZXgobm9ybWFsaXplZFJvdXRlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXJhbWV0ZXJpemVkUm91dGUgfSA9IGdldFBhcmFtZXRyaXplZFJvdXRlKG5vcm1hbGl6ZWRSb3V0ZSk7XG4gICAgY29uc3QgeyBjYXRjaEFsbCA9IHRydWUgfSA9IG9wdGlvbnM7XG4gICAgaWYgKHBhcmFtZXRlcml6ZWRSb3V0ZSA9PT0gXCIvXCIpIHtcbiAgICAgICAgbGV0IGNhdGNoQWxsUmVnZXggPSBjYXRjaEFsbCA/IFwiLipcIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lZFJlZ2V4OiBcIl4vXCIgKyBjYXRjaEFsbFJlZ2V4ICsgXCIkXCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBuYW1lZFBhcmFtZXRlcml6ZWRSb3V0ZSB9ID0gZ2V0TmFtZWRQYXJhbWV0cml6ZWRSb3V0ZShub3JtYWxpemVkUm91dGUsIGZhbHNlKTtcbiAgICBsZXQgY2F0Y2hBbGxHcm91cGVkUmVnZXggPSBjYXRjaEFsbCA/IFwiKD86KC8uKik/KVwiIDogXCJcIjtcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lZFJlZ2V4OiBcIl5cIiArIG5hbWVkUGFyYW1ldGVyaXplZFJvdXRlICsgY2F0Y2hBbGxHcm91cGVkUmVnZXggKyBcIiRcIlxuICAgIH07XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlLXJlZ2V4LmpzLm1hcCJdLCJuYW1lcyI6WyJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsImVzY2FwZVN0cmluZ1JlZ2V4cCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJORVhUX1FVRVJZX1BBUkFNX1BSRUZJWCIsIk5FWFRfSU5URVJDRVBUSU9OX01BUktFUl9QUkVGSVgiLCJwYXJzZVBhcmFtZXRlciIsInBhcmFtIiwib3B0aW9uYWwiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJzbGljZSIsInJlcGVhdCIsImtleSIsImdldFBhcmFtZXRyaXplZFJvdXRlIiwicm91dGUiLCJzZWdtZW50cyIsInNwbGl0IiwiZ3JvdXBzIiwiZ3JvdXBJbmRleCIsInBhcmFtZXRlcml6ZWRSb3V0ZSIsIm1hcCIsInNlZ21lbnQiLCJtYXJrZXJNYXRjaCIsImZpbmQiLCJtIiwicGFyYW1NYXRjaGVzIiwibWF0Y2giLCJwb3MiLCJqb2luIiwiZ2V0Um91dGVSZWdleCIsIm5vcm1hbGl6ZWRSb3V0ZSIsInJlIiwiUmVnRXhwIiwiYnVpbGRHZXRTYWZlUm91dGVLZXkiLCJpIiwicm91dGVLZXkiLCJqIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiTWF0aCIsImZsb29yIiwiZ2V0U2FmZUtleUZyb21TZWdtZW50IiwiaW50ZXJjZXB0aW9uTWFya2VyIiwiZ2V0U2FmZVJvdXRlS2V5Iiwicm91dGVLZXlzIiwia2V5UHJlZml4IiwiY2xlYW5lZEtleSIsInJlcGxhY2UiLCJpbnZhbGlkS2V5IiwibGVuZ3RoIiwiaXNOYU4iLCJwYXJzZUludCIsImludGVyY2VwdGlvblByZWZpeCIsImdldE5hbWVkUGFyYW1ldHJpemVkUm91dGUiLCJwcmVmaXhSb3V0ZUtleXMiLCJuYW1lZFBhcmFtZXRlcml6ZWRSb3V0ZSIsImhhc0ludGVyY2VwdGlvbk1hcmtlciIsInNvbWUiLCJ1c2VkTWFya2VyIiwidW5kZWZpbmVkIiwiZ2V0TmFtZWRSb3V0ZVJlZ2V4IiwicHJlZml4Um91dGVLZXkiLCJyZXN1bHQiLCJuYW1lZFJlZ2V4IiwiZ2V0TmFtZWRNaWRkbGV3YXJlUmVnZXgiLCJvcHRpb25zIiwiY2F0Y2hBbGwiLCJjYXRjaEFsbFJlZ2V4IiwiY2F0Y2hBbGxHcm91cGVkUmVnZXgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/route-regex.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/sorted-routes.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/router/utils/sorted-routes.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getSortedRoutes: () => (/* binding */ getSortedRoutes)\n/* harmony export */ });\nclass UrlNode {\n insert(urlPath) {\n this._insert(urlPath.split(\"/\").filter(Boolean), [], false);\n }\n smoosh() {\n return this._smoosh();\n }\n _smoosh(prefix) {\n if (prefix === void 0) prefix = \"/\";\n const childrenPaths = [\n ...this.children.keys()\n ].sort();\n if (this.slugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[]\"), 1);\n }\n if (this.restSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[...]\"), 1);\n }\n if (this.optionalRestSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[[...]]\"), 1);\n }\n const routes = childrenPaths.map((c)=>this.children.get(c)._smoosh(\"\" + prefix + c + \"/\")).reduce((prev, curr)=>[\n ...prev,\n ...curr\n ], []);\n if (this.slugName !== null) {\n routes.push(...this.children.get(\"[]\")._smoosh(prefix + \"[\" + this.slugName + \"]/\"));\n }\n if (!this.placeholder) {\n const r = prefix === \"/\" ? \"/\" : prefix.slice(0, -1);\n if (this.optionalRestSlugName != null) {\n throw new Error('You cannot define a route with the same specificity as a optional catch-all route (\"' + r + '\" and \"' + r + \"[[...\" + this.optionalRestSlugName + ']]\").');\n }\n routes.unshift(r);\n }\n if (this.restSlugName !== null) {\n routes.push(...this.children.get(\"[...]\")._smoosh(prefix + \"[...\" + this.restSlugName + \"]/\"));\n }\n if (this.optionalRestSlugName !== null) {\n routes.push(...this.children.get(\"[[...]]\")._smoosh(prefix + \"[[...\" + this.optionalRestSlugName + \"]]/\"));\n }\n return routes;\n }\n _insert(urlPaths, slugNames, isCatchAll) {\n if (urlPaths.length === 0) {\n this.placeholder = false;\n return;\n }\n if (isCatchAll) {\n throw new Error(\"Catch-all must be the last part of the URL.\");\n }\n // The next segment in the urlPaths list\n let nextSegment = urlPaths[0];\n // Check if the segment matches `[something]`\n if (nextSegment.startsWith(\"[\") && nextSegment.endsWith(\"]\")) {\n // Strip `[` and `]`, leaving only `something`\n let segmentName = nextSegment.slice(1, -1);\n let isOptional = false;\n if (segmentName.startsWith(\"[\") && segmentName.endsWith(\"]\")) {\n // Strip optional `[` and `]`, leaving only `something`\n segmentName = segmentName.slice(1, -1);\n isOptional = true;\n }\n if (segmentName.startsWith(\"...\")) {\n // Strip `...`, leaving only `something`\n segmentName = segmentName.substring(3);\n isCatchAll = true;\n }\n if (segmentName.startsWith(\"[\") || segmentName.endsWith(\"]\")) {\n throw new Error(\"Segment names may not start or end with extra brackets ('\" + segmentName + \"').\");\n }\n if (segmentName.startsWith(\".\")) {\n throw new Error(\"Segment names may not start with erroneous periods ('\" + segmentName + \"').\");\n }\n function handleSlug(previousSlug, nextSlug) {\n if (previousSlug !== null) {\n // If the specific segment already has a slug but the slug is not `something`\n // This prevents collisions like:\n // pages/[post]/index.js\n // pages/[id]/index.js\n // Because currently multiple dynamic params on the same segment level are not supported\n if (previousSlug !== nextSlug) {\n // TODO: This error seems to be confusing for users, needs an error link, the description can be based on above comment.\n throw new Error(\"You cannot use different slug names for the same dynamic path ('\" + previousSlug + \"' !== '\" + nextSlug + \"').\");\n }\n }\n slugNames.forEach((slug)=>{\n if (slug === nextSlug) {\n throw new Error('You cannot have the same slug name \"' + nextSlug + '\" repeat within a single dynamic path');\n }\n if (slug.replace(/\\W/g, \"\") === nextSegment.replace(/\\W/g, \"\")) {\n throw new Error('You cannot have the slug names \"' + slug + '\" and \"' + nextSlug + '\" differ only by non-word symbols within a single dynamic path');\n }\n });\n slugNames.push(nextSlug);\n }\n if (isCatchAll) {\n if (isOptional) {\n if (this.restSlugName != null) {\n throw new Error('You cannot use both an required and optional catch-all route at the same level (\"[...' + this.restSlugName + ']\" and \"' + urlPaths[0] + '\" ).');\n }\n handleSlug(this.optionalRestSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.optionalRestSlugName = segmentName;\n // nextSegment is overwritten to [[...]] so that it can later be sorted specifically\n nextSegment = \"[[...]]\";\n } else {\n if (this.optionalRestSlugName != null) {\n throw new Error('You cannot use both an optional and required catch-all route at the same level (\"[[...' + this.optionalRestSlugName + ']]\" and \"' + urlPaths[0] + '\").');\n }\n handleSlug(this.restSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.restSlugName = segmentName;\n // nextSegment is overwritten to [...] so that it can later be sorted specifically\n nextSegment = \"[...]\";\n }\n } else {\n if (isOptional) {\n throw new Error('Optional route parameters are not yet supported (\"' + urlPaths[0] + '\").');\n }\n handleSlug(this.slugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.slugName = segmentName;\n // nextSegment is overwritten to [] so that it can later be sorted specifically\n nextSegment = \"[]\";\n }\n }\n // If this UrlNode doesn't have the nextSegment yet we create a new child UrlNode\n if (!this.children.has(nextSegment)) {\n this.children.set(nextSegment, new UrlNode());\n }\n this.children.get(nextSegment)._insert(urlPaths.slice(1), slugNames, isCatchAll);\n }\n constructor(){\n this.placeholder = true;\n this.children = new Map();\n this.slugName = null;\n this.restSlugName = null;\n this.optionalRestSlugName = null;\n }\n}\nfunction getSortedRoutes(normalizedPages) {\n // First the UrlNode is created, and every UrlNode can have only 1 dynamic segment\n // Eg you can't have pages/[post]/abc.js and pages/[hello]/something-else.js\n // Only 1 dynamic segment per nesting level\n // So in the case that is test/integration/dynamic-routing it'll be this:\n // pages/[post]/comments.js\n // pages/blog/[post]/comment/[id].js\n // Both are fine because `pages/[post]` and `pages/blog` are on the same level\n // So in this case `UrlNode` created here has `this.slugName === 'post'`\n // And since your PR passed through `slugName` as an array basically it'd including it in too many possibilities\n // Instead what has to be passed through is the upwards path's dynamic names\n const root = new UrlNode();\n // Here the `root` gets injected multiple paths, and insert will break them up into sublevels\n normalizedPages.forEach((pagePath)=>root.insert(pagePath));\n // Smoosh will then sort those sublevels up to the point where you get the correct route definition priority\n return root.smoosh();\n} //# sourceMappingURL=sorted-routes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9zb3J0ZWQtcm91dGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQTtJQUNGQyxPQUFPQyxPQUFPLEVBQUU7UUFDWixJQUFJLENBQUNDLE9BQU8sQ0FBQ0QsUUFBUUUsS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQ0MsVUFBVSxFQUFFLEVBQUU7SUFDekQ7SUFDQUMsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDQyxPQUFPO0lBQ3ZCO0lBQ0FBLFFBQVFDLE1BQU0sRUFBRTtRQUNaLElBQUlBLFdBQVcsS0FBSyxHQUFHQSxTQUFTO1FBQ2hDLE1BQU1DLGdCQUFnQjtlQUNmLElBQUksQ0FBQ0MsUUFBUSxDQUFDQyxJQUFJO1NBQ3hCLENBQUNDLElBQUk7UUFDTixJQUFJLElBQUksQ0FBQ0MsUUFBUSxLQUFLLE1BQU07WUFDeEJKLGNBQWNLLE1BQU0sQ0FBQ0wsY0FBY00sT0FBTyxDQUFDLE9BQU87UUFDdEQ7UUFDQSxJQUFJLElBQUksQ0FBQ0MsWUFBWSxLQUFLLE1BQU07WUFDNUJQLGNBQWNLLE1BQU0sQ0FBQ0wsY0FBY00sT0FBTyxDQUFDLFVBQVU7UUFDekQ7UUFDQSxJQUFJLElBQUksQ0FBQ0Usb0JBQW9CLEtBQUssTUFBTTtZQUNwQ1IsY0FBY0ssTUFBTSxDQUFDTCxjQUFjTSxPQUFPLENBQUMsWUFBWTtRQUMzRDtRQUNBLE1BQU1HLFNBQVNULGNBQWNVLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLElBQUksQ0FBQ1YsUUFBUSxDQUFDVyxHQUFHLENBQUNELEdBQUdiLE9BQU8sQ0FBQyxLQUFLQyxTQUFTWSxJQUFJLE1BQU1FLE1BQU0sQ0FBQyxDQUFDQyxNQUFNQyxPQUFPO21CQUNyR0Q7bUJBQ0FDO2FBQ04sRUFBRSxFQUFFO1FBQ1QsSUFBSSxJQUFJLENBQUNYLFFBQVEsS0FBSyxNQUFNO1lBQ3hCSyxPQUFPTyxJQUFJLElBQUksSUFBSSxDQUFDZixR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QztRQUNBLElBQUksQ0FBQ1csUUFBUSxDQUFDVyxHQUFHLENBQUNjLGFBQWFqQyxPQUFPLENBQUM2QixTQUFTSCxLQUFLLENBQUMsSUFBSUksV0FBV0M7SUFDekU7SUFDQWdCLGFBQWE7UUFDVCxJQUFJLENBQUN2QixXQUFXLEdBQUc7UUFDbkIsSUFBSSxDQUFDaEIsUUFBUSxHQUFHLElBQUl3QztRQUNwQixJQUFJLENBQUNyQyxRQUFRLEdBQUc7UUFDaEIsSUFBSSxDQUFDRyxZQUFZLEdBQUc7UUFDcEIsSUFBSSxDQUFDQyxvQkFBb0IsR0FBRztJQUNoQztBQUNKO0FBQ08sU0FBU2tDLGdCQUFnQkMsZUFBZTtJQUMzQyxrRkFBa0Y7SUFDbEYsNEVBQTRFO0lBQzVFLDJDQUEyQztJQUMzQyx5RUFBeUU7SUFDekUsMkJBQTJCO0lBQzNCLG9DQUFvQztJQUNwQyw4RUFBOEU7SUFDOUUsd0VBQXdFO0lBQ3hFLGdIQUFnSDtJQUNoSCw0RUFBNEU7SUFDNUUsTUFBTUMsT0FBTyxJQUFJdEQ7SUFDakIsNkZBQTZGO0lBQzdGcUQsZ0JBQWdCUixPQUFPLENBQUMsQ0FBQ1UsV0FBV0QsS0FBS3JELE1BQU0sQ0FBQ3NEO0lBQ2hELDRHQUE0RztJQUM1RyxPQUFPRCxLQUFLL0MsTUFBTTtBQUN0QixFQUVBLHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3JvdXRlci91dGlscy9zb3J0ZWQtcm91dGVzLmpzPzBiNDMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgVXJsTm9kZSB7XG4gICAgaW5zZXJ0KHVybFBhdGgpIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0KHVybFBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSwgW10sIGZhbHNlKTtcbiAgICB9XG4gICAgc21vb3NoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc21vb3NoKCk7XG4gICAgfVxuICAgIF9zbW9vc2gocHJlZml4KSB7XG4gICAgICAgIGlmIChwcmVmaXggPT09IHZvaWQgMCkgcHJlZml4ID0gXCIvXCI7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuUGF0aHMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLmNoaWxkcmVuLmtleXMoKVxuICAgICAgICBdLnNvcnQoKTtcbiAgICAgICAgaWYgKHRoaXMuc2x1Z05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuUGF0aHMuc3BsaWNlKGNoaWxkcmVuUGF0aHMuaW5kZXhPZihcIltdXCIpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXN0U2x1Z05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuUGF0aHMuc3BsaWNlKGNoaWxkcmVuUGF0aHMuaW5kZXhPZihcIlsuLi5dXCIpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25hbFJlc3RTbHVnTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2hpbGRyZW5QYXRocy5zcGxpY2UoY2hpbGRyZW5QYXRocy5pbmRleE9mKFwiW1suLi5dXVwiKSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm91dGVzID0gY2hpbGRyZW5QYXRocy5tYXAoKGMpPT50aGlzLmNoaWxkcmVuLmdldChjKS5fc21vb3NoKFwiXCIgKyBwcmVmaXggKyBjICsgXCIvXCIpKS5yZWR1Y2UoKHByZXYsIGN1cnIpPT5bXG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAuLi5jdXJyXG4gICAgICAgICAgICBdLCBbXSk7XG4gICAgICAgIGlmICh0aGlzLnNsdWdOYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICByb3V0ZXMucHVzaCguLi50aGlzLmNoaWxkcmVuLmdldChcIltdXCIpLl9zbW9vc2gocHJlZml4ICsgXCJbXCIgKyB0aGlzLnNsdWdOYW1lICsgXCJdL1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICBjb25zdCByID0gcHJlZml4ID09PSBcIi9cIiA/IFwiL1wiIDogcHJlZml4LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbmFsUmVzdFNsdWdOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3QgZGVmaW5lIGEgcm91dGUgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2l0eSBhcyBhIG9wdGlvbmFsIGNhdGNoLWFsbCByb3V0ZSAoXCInICsgciArICdcIiBhbmQgXCInICsgciArIFwiW1suLi5cIiArIHRoaXMub3B0aW9uYWxSZXN0U2x1Z05hbWUgKyAnXV1cIikuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3V0ZXMudW5zaGlmdChyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXN0U2x1Z05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJvdXRlcy5wdXNoKC4uLnRoaXMuY2hpbGRyZW4uZ2V0KFwiWy4uLl1cIikuX3Ntb29zaChwcmVmaXggKyBcIlsuLi5cIiArIHRoaXMucmVzdFNsdWdOYW1lICsgXCJdL1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxSZXN0U2x1Z05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJvdXRlcy5wdXNoKC4uLnRoaXMuY2hpbGRyZW4uZ2V0KFwiW1suLi5dXVwiKS5fc21vb3NoKHByZWZpeCArIFwiW1suLi5cIiArIHRoaXMub3B0aW9uYWxSZXN0U2x1Z05hbWUgKyBcIl1dL1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdXRlcztcbiAgICB9XG4gICAgX2luc2VydCh1cmxQYXRocywgc2x1Z05hbWVzLCBpc0NhdGNoQWxsKSB7XG4gICAgICAgIGlmICh1cmxQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDYXRjaEFsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2F0Y2gtYWxsIG11c3QgYmUgdGhlIGxhc3QgcGFydCBvZiB0aGUgVVJMLlwiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgbmV4dCBzZWdtZW50IGluIHRoZSB1cmxQYXRocyBsaXN0XG4gICAgICAgIGxldCBuZXh0U2VnbWVudCA9IHVybFBhdGhzWzBdO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2VnbWVudCBtYXRjaGVzIGBbc29tZXRoaW5nXWBcbiAgICAgICAgaWYgKG5leHRTZWdtZW50LnN0YXJ0c1dpdGgoXCJbXCIpICYmIG5leHRTZWdtZW50LmVuZHNXaXRoKFwiXVwiKSkge1xuICAgICAgICAgICAgLy8gU3RyaXAgYFtgIGFuZCBgXWAsIGxlYXZpbmcgb25seSBgc29tZXRoaW5nYFxuICAgICAgICAgICAgbGV0IHNlZ21lbnROYW1lID0gbmV4dFNlZ21lbnQuc2xpY2UoMSwgLTEpO1xuICAgICAgICAgICAgbGV0IGlzT3B0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzZWdtZW50TmFtZS5zdGFydHNXaXRoKFwiW1wiKSAmJiBzZWdtZW50TmFtZS5lbmRzV2l0aChcIl1cIikpIHtcbiAgICAgICAgICAgICAgICAvLyBTdHJpcCBvcHRpb25hbCBgW2AgYW5kIGBdYCwgbGVhdmluZyBvbmx5IGBzb21ldGhpbmdgXG4gICAgICAgICAgICAgICAgc2VnbWVudE5hbWUgPSBzZWdtZW50TmFtZS5zbGljZSgxLCAtMSk7XG4gICAgICAgICAgICAgICAgaXNPcHRpb25hbCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VnbWVudE5hbWUuc3RhcnRzV2l0aChcIi4uLlwiKSkge1xuICAgICAgICAgICAgICAgIC8vIFN0cmlwIGAuLi5gLCBsZWF2aW5nIG9ubHkgYHNvbWV0aGluZ2BcbiAgICAgICAgICAgICAgICBzZWdtZW50TmFtZSA9IHNlZ21lbnROYW1lLnN1YnN0cmluZygzKTtcbiAgICAgICAgICAgICAgICBpc0NhdGNoQWxsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWdtZW50TmFtZS5zdGFydHNXaXRoKFwiW1wiKSB8fCBzZWdtZW50TmFtZS5lbmRzV2l0aChcIl1cIikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWdtZW50IG5hbWVzIG1heSBub3Qgc3RhcnQgb3IgZW5kIHdpdGggZXh0cmEgYnJhY2tldHMgKCdcIiArIHNlZ21lbnROYW1lICsgXCInKS5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VnbWVudE5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWdtZW50IG5hbWVzIG1heSBub3Qgc3RhcnQgd2l0aCBlcnJvbmVvdXMgcGVyaW9kcyAoJ1wiICsgc2VnbWVudE5hbWUgKyBcIicpLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNsdWcocHJldmlvdXNTbHVnLCBuZXh0U2x1Zykge1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1NsdWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNwZWNpZmljIHNlZ21lbnQgYWxyZWFkeSBoYXMgYSBzbHVnIGJ1dCB0aGUgc2x1ZyBpcyBub3QgYHNvbWV0aGluZ2BcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBjb2xsaXNpb25zIGxpa2U6XG4gICAgICAgICAgICAgICAgICAgIC8vIHBhZ2VzL1twb3N0XS9pbmRleC5qc1xuICAgICAgICAgICAgICAgICAgICAvLyBwYWdlcy9baWRdL2luZGV4LmpzXG4gICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgY3VycmVudGx5IG11bHRpcGxlIGR5bmFtaWMgcGFyYW1zIG9uIHRoZSBzYW1lIHNlZ21lbnQgbGV2ZWwgYXJlIG5vdCBzdXBwb3J0ZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU2x1ZyAhPT0gbmV4dFNsdWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgZXJyb3Igc2VlbXMgdG8gYmUgY29uZnVzaW5nIGZvciB1c2VycywgbmVlZHMgYW4gZXJyb3IgbGluaywgdGhlIGRlc2NyaXB0aW9uIGNhbiBiZSBiYXNlZCBvbiBhYm92ZSBjb21tZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCB1c2UgZGlmZmVyZW50IHNsdWcgbmFtZXMgZm9yIHRoZSBzYW1lIGR5bmFtaWMgcGF0aCAoJ1wiICsgcHJldmlvdXNTbHVnICsgXCInICE9PSAnXCIgKyBuZXh0U2x1ZyArIFwiJykuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNsdWdOYW1lcy5mb3JFYWNoKChzbHVnKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2x1ZyA9PT0gbmV4dFNsdWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCBoYXZlIHRoZSBzYW1lIHNsdWcgbmFtZSBcIicgKyBuZXh0U2x1ZyArICdcIiByZXBlYXQgd2l0aGluIGEgc2luZ2xlIGR5bmFtaWMgcGF0aCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbHVnLnJlcGxhY2UoL1xcVy9nLCBcIlwiKSA9PT0gbmV4dFNlZ21lbnQucmVwbGFjZSgvXFxXL2csIFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3QgaGF2ZSB0aGUgc2x1ZyBuYW1lcyBcIicgKyBzbHVnICsgJ1wiIGFuZCBcIicgKyBuZXh0U2x1ZyArICdcIiBkaWZmZXIgb25seSBieSBub24td29yZCBzeW1ib2xzIHdpdGhpbiBhIHNpbmdsZSBkeW5hbWljIHBhdGgnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNsdWdOYW1lcy5wdXNoKG5leHRTbHVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0NhdGNoQWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzdFNsdWdOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCB1c2UgYm90aCBhbiByZXF1aXJlZCBhbmQgb3B0aW9uYWwgY2F0Y2gtYWxsIHJvdXRlIGF0IHRoZSBzYW1lIGxldmVsIChcIlsuLi4nICsgdGhpcy5yZXN0U2x1Z05hbWUgKyAnXVwiIGFuZCBcIicgKyB1cmxQYXRoc1swXSArICdcIiApLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNsdWcodGhpcy5vcHRpb25hbFJlc3RTbHVnTmFtZSwgc2VnbWVudE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBzbHVnTmFtZSBpcyBrZXB0IGFzIGl0IGNhbiBvbmx5IGJlIG9uZSBwYXJ0aWN1bGFyIHNsdWdOYW1lXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uYWxSZXN0U2x1Z05hbWUgPSBzZWdtZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gbmV4dFNlZ21lbnQgaXMgb3ZlcndyaXR0ZW4gdG8gW1suLi5dXSBzbyB0aGF0IGl0IGNhbiBsYXRlciBiZSBzb3J0ZWQgc3BlY2lmaWNhbGx5XG4gICAgICAgICAgICAgICAgICAgIG5leHRTZWdtZW50ID0gXCJbWy4uLl1dXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxSZXN0U2x1Z05hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHVzZSBib3RoIGFuIG9wdGlvbmFsIGFuZCByZXF1aXJlZCBjYXRjaC1hbGwgcm91dGUgYXQgdGhlIHNhbWUgbGV2ZWwgKFwiW1suLi4nICsgdGhpcy5vcHRpb25hbFJlc3RTbHVnTmFtZSArICddXVwiIGFuZCBcIicgKyB1cmxQYXRoc1swXSArICdcIikuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2x1Zyh0aGlzLnJlc3RTbHVnTmFtZSwgc2VnbWVudE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBzbHVnTmFtZSBpcyBrZXB0IGFzIGl0IGNhbiBvbmx5IGJlIG9uZSBwYXJ0aWN1bGFyIHNsdWdOYW1lXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdFNsdWdOYW1lID0gc2VnbWVudE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5leHRTZWdtZW50IGlzIG92ZXJ3cml0dGVuIHRvIFsuLi5dIHNvIHRoYXQgaXQgY2FuIGxhdGVyIGJlIHNvcnRlZCBzcGVjaWZpY2FsbHlcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNlZ21lbnQgPSBcIlsuLi5dXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbmFsIHJvdXRlIHBhcmFtZXRlcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIChcIicgKyB1cmxQYXRoc1swXSArICdcIikuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhhbmRsZVNsdWcodGhpcy5zbHVnTmFtZSwgc2VnbWVudE5hbWUpO1xuICAgICAgICAgICAgICAgIC8vIHNsdWdOYW1lIGlzIGtlcHQgYXMgaXQgY2FuIG9ubHkgYmUgb25lIHBhcnRpY3VsYXIgc2x1Z05hbWVcbiAgICAgICAgICAgICAgICB0aGlzLnNsdWdOYW1lID0gc2VnbWVudE5hbWU7XG4gICAgICAgICAgICAgICAgLy8gbmV4dFNlZ21lbnQgaXMgb3ZlcndyaXR0ZW4gdG8gW10gc28gdGhhdCBpdCBjYW4gbGF0ZXIgYmUgc29ydGVkIHNwZWNpZmljYWxseVxuICAgICAgICAgICAgICAgIG5leHRTZWdtZW50ID0gXCJbXVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoaXMgVXJsTm9kZSBkb2Vzbid0IGhhdmUgdGhlIG5leHRTZWdtZW50IHlldCB3ZSBjcmVhdGUgYSBuZXcgY2hpbGQgVXJsTm9kZVxuICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4uaGFzKG5leHRTZWdtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zZXQobmV4dFNlZ21lbnQsIG5ldyBVcmxOb2RlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZ2V0KG5leHRTZWdtZW50KS5faW5zZXJ0KHVybFBhdGhzLnNsaWNlKDEpLCBzbHVnTmFtZXMsIGlzQ2F0Y2hBbGwpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zbHVnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVzdFNsdWdOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcHRpb25hbFJlc3RTbHVnTmFtZSA9IG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRlZFJvdXRlcyhub3JtYWxpemVkUGFnZXMpIHtcbiAgICAvLyBGaXJzdCB0aGUgVXJsTm9kZSBpcyBjcmVhdGVkLCBhbmQgZXZlcnkgVXJsTm9kZSBjYW4gaGF2ZSBvbmx5IDEgZHluYW1pYyBzZWdtZW50XG4gICAgLy8gRWcgeW91IGNhbid0IGhhdmUgcGFnZXMvW3Bvc3RdL2FiYy5qcyBhbmQgcGFnZXMvW2hlbGxvXS9zb21ldGhpbmctZWxzZS5qc1xuICAgIC8vIE9ubHkgMSBkeW5hbWljIHNlZ21lbnQgcGVyIG5lc3RpbmcgbGV2ZWxcbiAgICAvLyBTbyBpbiB0aGUgY2FzZSB0aGF0IGlzIHRlc3QvaW50ZWdyYXRpb24vZHluYW1pYy1yb3V0aW5nIGl0J2xsIGJlIHRoaXM6XG4gICAgLy8gcGFnZXMvW3Bvc3RdL2NvbW1lbnRzLmpzXG4gICAgLy8gcGFnZXMvYmxvZy9bcG9zdF0vY29tbWVudC9baWRdLmpzXG4gICAgLy8gQm90aCBhcmUgZmluZSBiZWNhdXNlIGBwYWdlcy9bcG9zdF1gIGFuZCBgcGFnZXMvYmxvZ2AgYXJlIG9uIHRoZSBzYW1lIGxldmVsXG4gICAgLy8gU28gaW4gdGhpcyBjYXNlIGBVcmxOb2RlYCBjcmVhdGVkIGhlcmUgaGFzIGB0aGlzLnNsdWdOYW1lID09PSAncG9zdCdgXG4gICAgLy8gQW5kIHNpbmNlIHlvdXIgUFIgcGFzc2VkIHRocm91Z2ggYHNsdWdOYW1lYCBhcyBhbiBhcnJheSBiYXNpY2FsbHkgaXQnZCBpbmNsdWRpbmcgaXQgaW4gdG9vIG1hbnkgcG9zc2liaWxpdGllc1xuICAgIC8vIEluc3RlYWQgd2hhdCBoYXMgdG8gYmUgcGFzc2VkIHRocm91Z2ggaXMgdGhlIHVwd2FyZHMgcGF0aCdzIGR5bmFtaWMgbmFtZXNcbiAgICBjb25zdCByb290ID0gbmV3IFVybE5vZGUoKTtcbiAgICAvLyBIZXJlIHRoZSBgcm9vdGAgZ2V0cyBpbmplY3RlZCBtdWx0aXBsZSBwYXRocywgYW5kIGluc2VydCB3aWxsIGJyZWFrIHRoZW0gdXAgaW50byBzdWJsZXZlbHNcbiAgICBub3JtYWxpemVkUGFnZXMuZm9yRWFjaCgocGFnZVBhdGgpPT5yb290Lmluc2VydChwYWdlUGF0aCkpO1xuICAgIC8vIFNtb29zaCB3aWxsIHRoZW4gc29ydCB0aG9zZSBzdWJsZXZlbHMgdXAgdG8gdGhlIHBvaW50IHdoZXJlIHlvdSBnZXQgdGhlIGNvcnJlY3Qgcm91dGUgZGVmaW5pdGlvbiBwcmlvcml0eVxuICAgIHJldHVybiByb290LnNtb29zaCgpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zb3J0ZWQtcm91dGVzLmpzLm1hcCJdLCJuYW1lcyI6WyJVcmxOb2RlIiwiaW5zZXJ0IiwidXJsUGF0aCIsIl9pbnNlcnQiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJzbW9vc2giLCJfc21vb3NoIiwicHJlZml4IiwiY2hpbGRyZW5QYXRocyIsImNoaWxkcmVuIiwia2V5cyIsInNvcnQiLCJzbHVnTmFtZSIsInNwbGljZSIsImluZGV4T2YiLCJyZXN0U2x1Z05hbWUiLCJvcHRpb25hbFJlc3RTbHVnTmFtZSIsInJvdXRlcyIsIm1hcCIsImMiLCJnZXQiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyciIsInB1c2giLCJwbGFjZWhvbGRlciIsInIiLCJzbGljZSIsIkVycm9yIiwidW5zaGlmdCIsInVybFBhdGhzIiwic2x1Z05hbWVzIiwiaXNDYXRjaEFsbCIsImxlbmd0aCIsIm5leHRTZWdtZW50Iiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwic2VnbWVudE5hbWUiLCJpc09wdGlvbmFsIiwic3Vic3RyaW5nIiwiaGFuZGxlU2x1ZyIsInByZXZpb3VzU2x1ZyIsIm5leHRTbHVnIiwiZm9yRWFjaCIsInNsdWciLCJyZXBsYWNlIiwiaGFzIiwic2V0IiwiY29uc3RydWN0b3IiLCJNYXAiLCJnZXRTb3J0ZWRSb3V0ZXMiLCJub3JtYWxpemVkUGFnZXMiLCJyb290IiwicGFnZVBhdGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/router/utils/sorted-routes.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/segment.js":
/*!**********************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/segment.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_SEGMENT_KEY: () => (/* binding */ DEFAULT_SEGMENT_KEY),\n/* harmony export */ PAGE_SEGMENT_KEY: () => (/* binding */ PAGE_SEGMENT_KEY),\n/* harmony export */ isGroupSegment: () => (/* binding */ isGroupSegment)\n/* harmony export */ });\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === \"(\" && segment.endsWith(\")\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3NlZ21lbnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sU0FBU0EsZUFBZUMsT0FBTztJQUNsQyxzQ0FBc0M7SUFDdEMsT0FBT0EsT0FBTyxDQUFDLEVBQUUsS0FBSyxPQUFPQSxRQUFRQyxRQUFRLENBQUM7QUFDbEQ7QUFDTyxNQUFNQyxtQkFBbUIsV0FBVztBQUNwQyxNQUFNQyxzQkFBc0IsY0FBYyxDQUVqRCxtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi9zZWdtZW50LmpzP2ZjZDYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzR3JvdXBTZWdtZW50KHNlZ21lbnQpIHtcbiAgICAvLyBVc2UgYXJyYXlbMF0gZm9yIHBlcmZvcm1hbnQgcHVycG9zZVxuICAgIHJldHVybiBzZWdtZW50WzBdID09PSBcIihcIiAmJiBzZWdtZW50LmVuZHNXaXRoKFwiKVwiKTtcbn1cbmV4cG9ydCBjb25zdCBQQUdFX1NFR01FTlRfS0VZID0gXCJfX1BBR0VfX1wiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VHTUVOVF9LRVkgPSBcIl9fREVGQVVMVF9fXCI7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlZ21lbnQuanMubWFwIl0sIm5hbWVzIjpbImlzR3JvdXBTZWdtZW50Iiwic2VnbWVudCIsImVuZHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/segment.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/esm/shared/lib/utils.js":
/*!********************************************************!*\
!*** ./node_modules/next/dist/esm/shared/lib/utils.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DecodeError: () => (/* binding */ DecodeError),\n/* harmony export */ MiddlewareNotFoundError: () => (/* binding */ MiddlewareNotFoundError),\n/* harmony export */ MissingStaticPage: () => (/* binding */ MissingStaticPage),\n/* harmony export */ NormalizeError: () => (/* binding */ NormalizeError),\n/* harmony export */ PageNotFoundError: () => (/* binding */ PageNotFoundError),\n/* harmony export */ SP: () => (/* binding */ SP),\n/* harmony export */ ST: () => (/* binding */ ST),\n/* harmony export */ WEB_VITALS: () => (/* binding */ WEB_VITALS),\n/* harmony export */ execOnce: () => (/* binding */ execOnce),\n/* harmony export */ getDisplayName: () => (/* binding */ getDisplayName),\n/* harmony export */ getLocationOrigin: () => (/* binding */ getLocationOrigin),\n/* harmony export */ getURL: () => (/* binding */ getURL),\n/* harmony export */ isAbsoluteUrl: () => (/* binding */ isAbsoluteUrl),\n/* harmony export */ isResSent: () => (/* binding */ isResSent),\n/* harmony export */ loadGetInitialProps: () => (/* binding */ loadGetInitialProps),\n/* harmony export */ normalizeRepeatedSlashes: () => (/* binding */ normalizeRepeatedSlashes),\n/* harmony export */ stringifyError: () => (/* binding */ stringifyError)\n/* harmony export */ });\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */ const WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\n/**\n * Utils\n */ function 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 new Error(message);\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 new Error(message);\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9zaGFyZWQvbGliL3V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztDQUdDLEdBQVUsTUFBTUEsYUFBYTtJQUMxQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxDQUFDO0FBQ0Y7O0NBRUMsR0FBVSxTQUFTQyxTQUFTQyxFQUFFO0lBQzNCLElBQUlDLE9BQU87SUFDWCxJQUFJQztJQUNKLE9BQU87UUFDSCxJQUFJLElBQUlDLE9BQU9DLFVBQVVDLE1BQU0sRUFBRUMsT0FBTyxJQUFJQyxNQUFNSixPQUFPSyxPQUFPLEdBQUdBLE9BQU9MLE1BQU1LLE9BQU87WUFDbkZGLElBQUksQ0FBQ0UsS0FBSyxHQUFHSixTQUFTLENBQUNJLEtBQUs7UUFDaEM7UUFDQSxJQUFJLENBQUNQLE1BQU07WUFDUEEsT0FBTztZQUNQQyxTQUFTRixNQUFNTTtRQUNuQjtRQUNBLE9BQU9KO0lBQ1g7QUFDSjtBQUNBLDBEQUEwRDtBQUMxRCxnRUFBZ0U7QUFDaEUsTUFBTU8scUJBQXFCO0FBQ3BCLE1BQU1DLGdCQUFnQixDQUFDQyxNQUFNRixtQkFBbUJHLElBQUksQ0FBQ0QsS0FBSztBQUMxRCxTQUFTRTtJQUNaLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRSxHQUFHQyxPQUFPQyxRQUFRO0lBQ3BELE9BQU9KLFdBQVcsT0FBT0MsV0FBWUMsQ0FBQUEsT0FBTyxNQUFNQSxPQUFPLEVBQUM7QUFDOUQ7QUFDTyxTQUFTRztJQUNaLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdILE9BQU9DLFFBQVE7SUFDaEMsTUFBTUcsU0FBU1I7SUFDZixPQUFPTyxLQUFLRSxTQUFTLENBQUNELE9BQU9oQixNQUFNO0FBQ3ZDO0FBQ08sU0FBU2tCLGVBQWVDLFNBQVM7SUFDcEMsT0FBTyxPQUFPQSxjQUFjLFdBQVdBLFlBQVlBLFVBQVVDLFdBQVcsSUFBSUQsVUFB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QUFTLENBQUM7UUFDbEJ4QixTQUFTc0IsTUFBTXRCLE9BQU87UUFDdEJ5QixPQUFPSCxNQUFNRyxLQUFLO0lBQ3RCO0FBQ0osRUFFQSxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vc2hhcmVkL2xpYi91dGlscy5qcz9mZDQzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2ViIHZpdGFscyBwcm92aWRlZCB0byBfYXBwLnJlcG9ydFdlYlZpdGFscyBieSBDb3JlIFdlYiBWaXRhbHMgcGx1Z2luIGRldmVsb3BlZCBieSBHb29nbGUgQ2hyb21lIHRlYW0uXG4gKiBodHRwczovL25leHRqcy5vcmcvYmxvZy9uZXh0LTktNCNpbnRlZ3JhdGVkLXdlYi12aXRhbHMtcmVwb3J0aW5nXG4gKi8gZXhwb3J0IGNvbnN0IFdFQl9WSVRBTFMgPSBbXG4gICAgXCJDTFNcIixcbiAgICBcIkZDUFwiLFxuICAgIFwiRklEXCIsXG4gICAgXCJJTlBcIixcbiAgICBcIkxDUFwiLFxuICAgIFwiVFRGQlwiXG5dO1xuLyoqXG4gKiBVdGlsc1xuICovIGV4cG9ydCBmdW5jdGlvbiBleGVjT25jZShmbikge1xuICAgIGxldCB1c2VkID0gZmFsc2U7XG4gICAgbGV0IHJlc3VsdDtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF1c2VkKSB7XG4gICAgICAgICAgICB1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZuKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbn1cbi8vIFNjaGVtZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjFcbi8vIEFic29sdXRlIFVSTDogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjNcbmNvbnN0IEFCU09MVVRFX1VSTF9SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aXFxkK1xcLS5dKj86LztcbmV4cG9ydCBjb25zdCBpc0Fic29sdXRlVXJsID0gKHVybCk9PkFCU09MVVRFX1VSTF9SRUdFWC50ZXN0KHVybCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYXRpb25PcmlnaW4oKSB7XG4gICAgY29uc3QgeyBwcm90b2NvbCwgaG9zdG5hbWUsIHBvcnQgfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICByZXR1cm4gcHJvdG9jb2wgKyBcIi8vXCIgKyBob3N0bmFtZSArIChwb3J0ID8gXCI6XCIgKyBwb3J0IDogXCJcIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VVJMKCkge1xuICAgIGNvbnN0IHsgaHJlZiB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IG9yaWdpbiA9IGdldExvY2F0aW9uT3JpZ2luKCk7XG4gICAgcmV0dXJuIGhyZWYuc3Vic3RyaW5nKG9yaWdpbi5sZW5ndGgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKENvbXBvbmVudCkge1xuICAgIHJldHVybiB0eXBlb2YgQ29tcG9uZW50ID09PSBcInN0cmluZ1wiID8gQ29tcG9uZW50IDogQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8IFwiVW5rbm93blwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVzU2VudChyZXMpIHtcbiAgICByZXR1cm4gcmVzLmZpbmlzaGVkIHx8IHJlcy5oZWFkZXJzU2VudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVSZXBlYXRlZFNsYXNoZXModXJsKSB7XG4gICAgY29uc3QgdXJsUGFydHMgPSB1cmwuc3BsaXQoXCI/XCIpO1xuICAgIGNvbnN0IHVybE5vUXVlcnkgPSB1cmxQYXJ0c1swXTtcbiAgICByZXR1cm4gdXJsTm9RdWVyeS8vIGZpcnN0IHdlIHJlcGxhY2UgYW55IG5vbi1lbmNvZGVkIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZFxuICAgIC8vIHRoZW4gbm9ybWFsaXplIHJlcGVhdGVkIGZvcndhcmQgc2xhc2hlc1xuICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKS5yZXBsYWNlKC9cXC9cXC8rL2csIFwiL1wiKSArICh1cmxQYXJ0c1sxXSA/IFwiP1wiICsgdXJsUGFydHMuc2xpY2UoMSkuam9pbihcIj9cIikgOiBcIlwiKTtcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2V0SW5pdGlhbFByb3BzKEFwcCwgY3R4KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICB2YXIgX0FwcF9wcm90b3R5cGU7XG4gICAgICAgIGlmICgoX0FwcF9wcm90b3R5cGUgPSBBcHAucHJvdG90eXBlKSA9PSBudWxsID8gdm9pZCAwIDogX0FwcF9wcm90b3R5cGUuZ2V0SW5pdGlhbFByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1wiJyArIGdldERpc3BsYXlOYW1lKEFwcCkgKyAnLmdldEluaXRpYWxQcm9wcygpXCIgaXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBtZXRob2QgLSB2aXNpdCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9nZXQtaW5pdGlhbC1wcm9wcy1hcy1hbi1pbnN0YW5jZS1tZXRob2QgZm9yIG1vcmUgaW5mb3JtYXRpb24uJztcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyB3aGVuIGNhbGxlZCBmcm9tIF9hcHAgYGN0eGAgaXMgbmVzdGVkIGluIGBjdHhgXG4gICAgY29uc3QgcmVzID0gY3R4LnJlcyB8fCBjdHguY3R4ICYmIGN0eC5jdHgucmVzO1xuICAgIGlmICghQXBwLmdldEluaXRpYWxQcm9wcykge1xuICAgICAgICBpZiAoY3R4LmN0eCAmJiBjdHguQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBhZ2VQcm9wcyBkZWZhdWx0XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhZ2VQcm9wczogYXdhaXQgbG9hZEdldEluaXRpYWxQcm9wcyhjdHguQ29tcG9uZW50LCBjdHguY3R4KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHByb3BzID0gYXdhaXQgQXBwLmdldEluaXRpYWxQcm9wcyhjdHgpO1xuICAgIGlmIChyZXMgJiYgaXNSZXNTZW50KHJlcykpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cbiAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnXCInICsgZ2V0RGlzcGxheU5hbWUoQXBwKSArICcuZ2V0SW5pdGlhbFByb3BzKClcIiBzaG91bGQgcmVzb2x2ZSB0byBhbiBvYmplY3QuIEJ1dCBmb3VuZCBcIicgKyBwcm9wcyArICdcIiBpbnN0ZWFkLic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocHJvcHMpLmxlbmd0aCA9PT0gMCAmJiAhY3R4LmN0eCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiXCIgKyBnZXREaXNwbGF5TmFtZShBcHApICsgXCIgcmV0dXJuZWQgYW4gZW1wdHkgb2JqZWN0IGZyb20gYGdldEluaXRpYWxQcm9wc2AuIFRoaXMgZGUtb3B0aW1pemVzIGFuZCBwcmV2ZW50cyBhdXRvbWF0aWMgc3RhdGljIG9wdGltaXphdGlvbi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZW1wdHktb2JqZWN0LWdldEluaXRpYWxQcm9wc1wiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG59XG5leHBvcnQgY29uc3QgU1AgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09IFwidW5kZWZpbmVkXCI7XG5leHBvcnQgY29uc3QgU1QgPSBTUCAmJiBbXG4gICAgXCJtYXJrXCIsXG4gICAgXCJtZWFzdXJlXCIsXG4gICAgXCJnZXRFbnRyaWVzQnlOYW1lXCJcbl0uZXZlcnkoKG1ldGhvZCk9PnR5cGVvZiBwZXJmb3JtYW5jZVttZXRob2RdID09PSBcImZ1bmN0aW9uXCIpO1xuZXhwb3J0IGNsYXNzIERlY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuZXhwb3J0IGNsYXNzIFBhZ2VOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvZGUgPSBcIkVOT0VOVFwiO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlBhZ2VOb3RGb3VuZEVycm9yXCI7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IFwiQ2Fubm90IGZpbmQgbW9kdWxlIGZvciBwYWdlOiBcIiArIHBhZ2U7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE1pc3NpbmdTdGF0aWNQYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBhZ2UsIG1lc3NhZ2Upe1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIkZhaWxlZCB0byBsb2FkIHN0YXRpYyBmaWxlIGZvciBwYWdlOiBcIiArIHBhZ2UgKyBcIiBcIiArIG1lc3NhZ2U7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE1pZGRsZXdhcmVOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29kZSA9IFwiRU5PRU5UXCI7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IFwiQ2Fubm90IGZpbmQgdGhlIG1pZGRsZXdhcmUgbW9kdWxlXCI7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUVycm9yKGVycm9yKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IGVycm9yLnN0YWNrXG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6WyJXRUJfVklUQUxTIiwiZXhlY09uY2UiLCJmbiIsInVzZWQiLCJyZXN1bHQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIkFCU09MVVRFX1VSTF9SRUdFWCIsImlzQWJzb2x1dGVVcmwiLCJ1cmwiLCJ0ZXN0IiwiZ2V0TG9jYXRpb25PcmlnaW4iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicG9ydCIsIndpbmRvdyIsImxvY2F0aW9uIiwiZ2V0VVJMIiwiaHJlZiIsIm9yaWdpbiIsInN1YnN0cmluZyIsImdldERpc3BsYXlOYW1lIiwiQ29tcG9uZW50IiwiZGlzcGxheU5hbWUiLCJuYW1lIiwiaXNSZXNTZW50IiwicmVzIiwiZmluaXNoZWQiLCJoZWFkZXJzU2VudCIsIm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyIsInVybFBhcnRzIiwic3BsaXQiLCJ1cmxOb1F1ZXJ5IiwicmVwbGFjZSIsInNsaWNlIiwiam9pbiIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJBcHAiLCJjdHgiLCJwcm9jZXNzIiwiX0FwcF9wcm90b3R5cGUiLCJwcm90b3R5cGUiLCJnZXRJbml0aWFsUHJvcHMiLCJtZXNzYWdlIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJwcm9wcyIsIk9iamVjdCIsImtleXMiLCJjb25zb2xlIiwid2FybiIsIlNQIiwicGVyZm9ybWFuY2UiLCJTVCIsImV2ZXJ5IiwibWV0aG9kIiwiRGVjb2RlRXJyb3IiLCJOb3JtYWxpemVFcnJvciIsIlBhZ2VOb3RGb3VuZEVycm9yIiwiY29uc3RydWN0b3IiLCJwYWdlIiwiY29kZSIsIk1pc3NpbmdTdGF0aWNQYWdlIiwiTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IiLCJzdHJpbmdpZnlFcnJvciIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/esm/shared/lib/utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/experimental/testmode/context.js":
/*!*****************************************************************!*\
!*** ./node_modules/next/dist/experimental/testmode/context.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 withRequest: function() {\n return withRequest;\n },\n getTestReqInfo: function() {\n return getTestReqInfo;\n }\n});\nconst _nodeasync_hooks = __webpack_require__(/*! node:async_hooks */ \"node:async_hooks\");\nconst testStorage = new _nodeasync_hooks.AsyncLocalStorage();\nfunction extractTestInfoFromRequest(req, reader) {\n const proxyPortHeader = reader.header(req, \"next-test-proxy-port\");\n if (!proxyPortHeader) {\n return undefined;\n }\n const url = reader.url(req);\n const proxyPort = Number(proxyPortHeader);\n const testData = reader.header(req, \"next-test-data\") || \"\";\n return {\n url,\n proxyPort,\n testData\n };\n}\nfunction withRequest(req, reader, fn) {\n const testReqInfo = extractTestInfoFromRequest(req, reader);\n if (!testReqInfo) {\n return fn();\n }\n return testStorage.run(testReqInfo, fn);\n}\nfunction getTestReqInfo(req, reader) {\n const testReqInfo = testStorage.getStore();\n if (testReqInfo) {\n return testReqInfo;\n }\n if (req && reader) {\n return extractTestInfoFromRequest(req, reader);\n }\n return undefined;\n} //# sourceMappingURL=context.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9jb250ZXh0LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGLEtBQU1DLENBQUFBLENBR047QUFDQSxTQUFTRyxRQUFRQyxNQUFNLEVBQUVDLEdBQUc7SUFDeEIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJVCxPQUFPQyxjQUFjLENBQUNPLFFBQVFFLE1BQU07UUFDcERDLFlBQVk7UUFDWkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUUwsU0FBUztJQUNiRyxhQUFhO1FBQ1QsT0FBT0E7SUFDWDtJQUNBQyxnQkFBZ0I7UUFDWixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNTyxtQkFBbUJDLG1CQUFPQSxDQUFDLDBDQUFrQjtBQUNuRCxNQUFNQyxjQUFjLElBQUlGLGlCQUFpQkcsaUJBQWlCO0FBQzFELFNBQVNDLDJCQUEyQkMsR0FBRyxFQUFFQyxNQUFNO0lBQzNDLE1BQU1DLGtCQUFrQkQsT0FBT0UsTUFBTSxDQUFDSCxLQUFLO0lBQzNDLElBQUksQ0FBQ0UsaUJBQWlCO1FBQ2xCLE9BQU9FO0lBQ1g7SUFDQSxNQUFNQyxNQUFNSixPQUFPSSxHQUFHLENBQUNMO0lBQ3ZCLE1BQU1NLFlBQVlDLE9BQU9MO0lBQ3pCLE1BQU1NLFdBQVdQLE9BQU9FLE1BQU0sQ0FBQ0gsS0FBSyxxQkFBcUI7SUFDekQsT0FBTztRQUNISztRQUNBQztRQUNBRTtJQUNKO0FBQ0o7QUFDQSxTQUFTckIsWUFBWWEsR0FBRyxFQUFFQyxNQUFNLEVBQUVRLEVBQUU7SUFDaEMsTUFBTUMsY0FBY1gsMkJBQTJCQyxLQUFLQztJQUNwRCxJQUFJLENBQUNTLGFBQWE7UUFDZCxPQUFPRDtJQUNYO0lBQ0EsT0FBT1osWUFBWWMsR0FBRyxDQUFDRCxhQUFhRDtBQUN4QztBQUNBLFNBQVNyQixlQUFlWSxHQUFHLEVBQUVDLE1BQU07SUFDL0IsTUFBTVMsY0FBY2IsWUFBWWUsUUFBUTtJQUN4QyxJQUFJRixhQUFhO1FBQ2IsT0FBT0E7SUFDWDtJQUNBLElBQUlWLE9BQU9DLFFBQVE7UUFDZixPQUFPRiwyQkFBMkJDLEtBQUtDO0lBQzNDO0lBQ0EsT0FBT0c7QUFDWCxFQUVBLG1DQUFtQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9jb250ZXh0LmpzPzkzNTkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB3aXRoUmVxdWVzdDogbnVsbCxcbiAgICBnZXRUZXN0UmVxSW5mbzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICB3aXRoUmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3aXRoUmVxdWVzdDtcbiAgICB9LFxuICAgIGdldFRlc3RSZXFJbmZvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldFRlc3RSZXFJbmZvO1xuICAgIH1cbn0pO1xuY29uc3QgX25vZGVhc3luY19ob29rcyA9IHJlcXVpcmUoXCJub2RlOmFzeW5jX2hvb2tzXCIpO1xuY29uc3QgdGVzdFN0b3JhZ2UgPSBuZXcgX25vZGVhc3luY19ob29rcy5Bc3luY0xvY2FsU3RvcmFnZSgpO1xuZnVuY3Rpb24gZXh0cmFjdFRlc3RJbmZvRnJvbVJlcXVlc3QocmVxLCByZWFkZXIpIHtcbiAgICBjb25zdCBwcm94eVBvcnRIZWFkZXIgPSByZWFkZXIuaGVhZGVyKHJlcSwgXCJuZXh0LXRlc3QtcHJveHktcG9ydFwiKTtcbiAgICBpZiAoIXByb3h5UG9ydEhlYWRlcikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSByZWFkZXIudXJsKHJlcSk7XG4gICAgY29uc3QgcHJveHlQb3J0ID0gTnVtYmVyKHByb3h5UG9ydEhlYWRlcik7XG4gICAgY29uc3QgdGVzdERhdGEgPSByZWFkZXIuaGVhZGVyKHJlcSwgXCJuZXh0LXRlc3QtZGF0YVwiKSB8fCBcIlwiO1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybCxcbiAgICAgICAgcHJveHlQb3J0LFxuICAgICAgICB0ZXN0RGF0YVxuICAgIH07XG59XG5mdW5jdGlvbiB3aXRoUmVxdWVzdChyZXEsIHJlYWRlciwgZm4pIHtcbiAgICBjb25zdCB0ZXN0UmVxSW5mbyA9IGV4dHJhY3RUZXN0SW5mb0Zyb21SZXF1ZXN0KHJlcSwgcmVhZGVyKTtcbiAgICBpZiAoIXRlc3RSZXFJbmZvKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGVzdFN0b3JhZ2UucnVuKHRlc3RSZXFJbmZvLCBmbik7XG59XG5mdW5jdGlvbiBnZXRUZXN0UmVxSW5mbyhyZXEsIHJlYWRlcikge1xuICAgIGNvbnN0IHRlc3RSZXFJbmZvID0gdGVzdFN0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAodGVzdFJlcUluZm8pIHtcbiAgICAgICAgcmV0dXJuIHRlc3RSZXFJbmZvO1xuICAgIH1cbiAgICBpZiAocmVxICYmIHJlYWRlcikge1xuICAgICAgICByZXR1cm4gZXh0cmFjdFRlc3RJbmZvRnJvbVJlcXVlc3QocmVxLCByZWFkZXIpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250ZXh0LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIm1vZHVsZSIsIndpdGhSZXF1ZXN0IiwiZ2V0VGVzdFJlcUluZm8iLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfbm9kZWFzeW5jX2hvb2tzIiwicmVxdWlyZSIsInRlc3RTdG9yYWdlIiwiQXN5bmNMb2NhbFN0b3JhZ2UiLCJleHRyYWN0VGVzdEluZm9Gcm9tUmVxdWVzdCIsInJlcSIsInJlYWRlciIsInByb3h5UG9ydEhlYWRlciIsImhlYWRlciIsInVuZGVmaW5lZCIsInVybCIsInByb3h5UG9ydCIsIk51bWJlciIsInRlc3REYXRhIiwiZm4iLCJ0ZXN0UmVxSW5mbyIsInJ1biIsImdldFN0b3JlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/experimental/testmode/context.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/experimental/testmode/fetch.js":
/*!***************************************************************!*\
!*** ./node_modules/next/dist/experimental/testmode/fetch.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"buffer\")[\"Buffer\"];\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 reader: function() {\n return reader;\n },\n handleFetch: function() {\n return handleFetch;\n },\n interceptFetch: function() {\n return interceptFetch;\n }\n});\nconst _context = __webpack_require__(/*! ./context */ \"(rsc)/./node_modules/next/dist/experimental/testmode/context.js\");\nconst reader = {\n url (req) {\n return req.url;\n },\n header (req, name) {\n return req.headers.get(name);\n }\n};\nfunction getTestStack() {\n let stack = (new Error().stack ?? \"\").split(\"\\n\");\n // Skip the first line and find first non-empty line.\n for(let i = 1; i < stack.length; i++){\n if (stack[i].length > 0) {\n stack = stack.slice(i);\n break;\n }\n }\n // Filter out franmework lines.\n stack = stack.filter((f)=>!f.includes(\"/next/dist/\"));\n // At most 5 lines.\n stack = stack.slice(0, 5);\n // Cleanup some internal info and trim.\n stack = stack.map((s)=>s.replace(\"webpack-internal:///(rsc)/\", \"\").trim());\n return stack.join(\" \");\n}\nasync function buildProxyRequest(testData, request) {\n const { url, method, headers, body, cache, credentials, integrity, mode, redirect, referrer, referrerPolicy } = request;\n return {\n testData,\n api: \"fetch\",\n request: {\n url,\n method,\n headers: [\n ...Array.from(headers),\n [\n \"next-test-stack\",\n getTestStack()\n ]\n ],\n body: body ? Buffer.from(await request.arrayBuffer()).toString(\"base64\") : null,\n cache,\n credentials,\n integrity,\n mode,\n redirect,\n referrer,\n referrerPolicy\n }\n };\n}\nfunction buildResponse(proxyResponse) {\n const { status, headers, body } = proxyResponse.response;\n return new Response(body ? Buffer.from(body, \"base64\") : null, {\n status,\n headers: new Headers(headers)\n });\n}\nasync function handleFetch(originalFetch, request) {\n const testInfo = (0, _context.getTestReqInfo)(request, reader);\n if (!testInfo) {\n throw new Error(`No test info for ${request.method} ${request.url}`);\n }\n const { testData, proxyPort } = testInfo;\n const proxyRequest = await buildProxyRequest(testData, request);\n const resp = await originalFetch(`http://localhost:${proxyPort}`, {\n method: \"POST\",\n body: JSON.stringify(proxyRequest),\n next: {\n // @ts-ignore\n internal: true\n }\n });\n if (!resp.ok) {\n throw new Error(`Proxy request failed: ${resp.status}`);\n }\n const proxyResponse = await resp.json();\n const { api } = proxyResponse;\n switch(api){\n case \"continue\":\n return originalFetch(request);\n case \"abort\":\n case \"unhandled\":\n throw new Error(`Proxy request aborted [${request.method} ${request.url}]`);\n default:\n break;\n }\n return buildResponse(proxyResponse);\n}\nfunction interceptFetch(originalFetch) {\n __webpack_require__.g.fetch = function testFetch(input, init) {\n var _init_next;\n // Passthrough internal requests.\n // @ts-ignore\n if (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) {\n return originalFetch(input, init);\n }\n return handleFetch(originalFetch, new Request(input, init));\n };\n return ()=>{\n __webpack_require__.g.fetch = originalFetch;\n };\n} //# sourceMappingURL=fetch.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9mZXRjaC5qcyIsIm1hcHBpbmdzIjoiO0FBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLFFBQVE7UUFDSixPQUFPQTtJQUNYO0lBQ0FDLGFBQWE7UUFDVCxPQUFPQTtJQUNYO0lBQ0FDLGdCQUFnQjtRQUNaLE9BQU9BO0lBQ1g7QUFDSjtBQUNBLE1BQU1PLFdBQVdDLG1CQUFPQSxDQUFDLGtGQUFXO0FBQ3BDLE1BQU1WLFNBQVM7SUFDWFcsS0FBS0MsR0FBRztRQUNKLE9BQU9BLElBQUlELEdBQUc7SUFDbEI7SUFDQUUsUUFBUUQsR0FBRyxFQUFFTixJQUFJO1FBQ2IsT0FBT00sSUFBSUUsT0FBTyxDQUFDTixHQUFHLENBQUNGO0lBQzNCO0FBQ0o7QUFDQSxTQUFTUztJQUNMLElBQUlDLFFBQVEsQ0FBQyxJQUFJQyxRQUFRRCxLQUFLLElBQUksRUFBQyxFQUFHRSxLQUFLLENBQUM7SUFDNUMscURBQXFEO0lBQ3JELElBQUksSUFBSUMsSUFBSSxHQUFHQSxJQUFJSCxNQUFNSSxNQUFNLEVBQUVELElBQUk7UUFDakMsSUFBSUgsS0FBSyxDQUFDRyxFQUFFLENBQUNDLE1BQU0sR0FBRyxHQUFHO1lBQ3JCSixRQUFRQSxNQUFNSyxLQUFLLENBQUNGO1lBQ3BCO1FBQ0o7SUFDSjtJQUNBLCtCQUErQjtJQUMvQkgsUUFBUUEsTUFBTU0sTUFBTSxDQUFDLENBQUNDLElBQUksQ0FBQ0EsRUFBRUMsUUFBUSxDQUFDO0lB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QUFJUyxXQUFXUixRQUFRLEVBQUU7WUFDekYsT0FBT1QsY0FBY2UsT0FBT0M7UUFDaEM7UUFDQSxPQUFPckUsWUFBWXFELGVBQWUsSUFBSWtCLFFBQVFILE9BQU9DO0lBQ3pEO0lBQ0EsT0FBTztRQUNISixxQkFBTUEsQ0FBQ0MsS0FBSyxHQUFHYjtJQUNuQjtBQUNKLEVBRUEsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXhwZXJpbWVudGFsL3Rlc3Rtb2RlL2ZldGNoLmpzPzk2ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICByZWFkZXI6IG51bGwsXG4gICAgaGFuZGxlRmV0Y2g6IG51bGwsXG4gICAgaW50ZXJjZXB0RmV0Y2g6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgcmVhZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRlcjtcbiAgICB9LFxuICAgIGhhbmRsZUZldGNoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZUZldGNoO1xuICAgIH0sXG4gICAgaW50ZXJjZXB0RmV0Y2g6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW50ZXJjZXB0RmV0Y2g7XG4gICAgfVxufSk7XG5jb25zdCBfY29udGV4dCA9IHJlcXVpcmUoXCIuL2NvbnRleHRcIik7XG5jb25zdCByZWFkZXIgPSB7XG4gICAgdXJsIChyZXEpIHtcbiAgICAgICAgcmV0dXJuIHJlcS51cmw7XG4gICAgfSxcbiAgICBoZWFkZXIgKHJlcSwgbmFtZSkge1xuICAgICAgICByZXR1cm4gcmVxLmhlYWRlcnMuZ2V0KG5hbWUpO1xuICAgIH1cbn07XG5mdW5jdGlvbiBnZXRUZXN0U3RhY2soKSB7XG4gICAgbGV0IHN0YWNrID0gKG5ldyBFcnJvcigpLnN0YWNrID8/IFwiXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgIC8vIFNraXAgdGhlIGZpcnN0IGxpbmUgYW5kIGZpbmQgZmlyc3Qgbm9uLWVtcHR5IGxpbmUuXG4gICAgZm9yKGxldCBpID0gMTsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgaWYgKHN0YWNrW2ldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBGaWx0ZXIgb3V0IGZyYW5tZXdvcmsgbGluZXMuXG4gICAgc3RhY2sgPSBzdGFjay5maWx0ZXIoKGYpPT4hZi5pbmNsdWRlcyhcIi9uZXh0L2Rpc3QvXCIpKTtcbiAgICAvLyBBdCBtb3N0IDUgbGluZXMuXG4gICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCA1KTtcbiAgICAvLyBDbGVhbnVwIHNvbWUgaW50ZXJuYWwgaW5mbyBhbmQgdHJpbS5cbiAgICBzdGFjayA9IHN0YWNrLm1hcCgocyk9PnMucmVwbGFjZShcIndlYnBhY2staW50ZXJuYWw6Ly8vKHJzYykvXCIsIFwiXCIpLnRyaW0oKSk7XG4gICAgcmV0dXJuIHN0YWNrLmpvaW4oXCIgICAgXCIpO1xufVxuYXN5bmMgZnVuY3Rpb24gYnVpbGRQcm94eVJlcXVlc3QodGVzdERhdGEsIHJlcXVlc3QpIHtcbiAgICBjb25zdCB7IHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCBjYWNoZSwgY3JlZGVudGlhbHMsIGludGVncml0eSwgbW9kZSwgcmVkaXJlY3QsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSB9ID0gcmVxdWVzdDtcbiAgICByZXR1cm4ge1xuICAgICAgICB0ZXN0RGF0YSxcbiAgICAgICAgYXBpOiBcImZldGNoXCIsXG4gICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKGhlYWRlcnMpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0LXRlc3Qtc3RhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGVzdFN0YWNrKClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYm9keTogYm9keSA/IEJ1ZmZlci5mcm9tKGF3YWl0IHJlcXVlc3QuYXJyYXlCdWZmZXIoKSkudG9TdHJpbmcoXCJiYXNlNjRcIikgOiBudWxsLFxuICAgICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgICAgIGludGVncml0eSxcbiAgICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgICByZWRpcmVjdCxcbiAgICAgICAgICAgIHJlZmVycmVyLFxuICAgICAgICAgICAgcmVmZXJyZXJQb2xpY3lcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBidWlsZFJlc3BvbnNlKHByb3h5UmVzcG9uc2UpIHtcbiAgICBjb25zdCB7IHN0YXR1cywgaGVhZGVycywgYm9keSB9ID0gcHJveHlSZXNwb25zZS5yZXNwb25zZTtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHkgPyBCdWZmZXIuZnJvbShib2R5LCBcImJhc2U2NFwiKSA6IG51bGwsIHtcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyhoZWFkZXJzKVxuICAgIH0pO1xufVxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRmV0Y2gob3JpZ2luYWxGZXRjaCwgcmVxdWVzdCkge1xuICAgIGNvbnN0IHRlc3RJbmZvID0gKDAsIF9jb250ZXh0LmdldFRlc3RSZXFJbmZvKShyZXF1ZXN0LCByZWFkZXIpO1xuICAgIGlmICghdGVzdEluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB0ZXN0IGluZm8gZm9yICR7cmVxdWVzdC5tZXRob2R9ICR7cmVxdWVzdC51cmx9YCk7XG4gICAgfVxuICAgIGNvbnN0IHsgdGVzdERhdGEsIHByb3h5UG9ydCB9ID0gdGVzdEluZm87XG4gICAgY29uc3QgcHJveHlSZXF1ZXN0ID0gYXdhaXQgYnVpbGRQcm94eVJlcXVlc3QodGVzdERhdGEsIHJlcXVlc3QpO1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBvcmlnaW5hbEZldGNoKGBodHRwOi8vbG9jYWxob3N0OiR7cHJveHlQb3J0fWAsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocHJveHlSZXF1ZXN0KSxcbiAgICAgICAgbmV4dDoge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaW50ZXJuYWw6IHRydWVcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3h5IHJlcXVlc3QgZmFpbGVkOiAke3Jlc3Auc3RhdHVzfWApO1xuICAgIH1cbiAgICBjb25zdCBwcm94eVJlc3BvbnNlID0gYXdhaXQgcmVzcC5qc29uKCk7XG4gICAgY29uc3QgeyBhcGkgfSA9IHByb3h5UmVzcG9uc2U7XG4gICAgc3dpdGNoKGFwaSl7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOlxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRmV0Y2gocmVxdWVzdCk7XG4gICAgICAgIGNhc2UgXCJhYm9ydFwiOlxuICAgICAgICBjYXNlIFwidW5oYW5kbGVkXCI6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3h5IHJlcXVlc3QgYWJvcnRlZCBbJHtyZXF1ZXN0Lm1ldGhvZH0gJHtyZXF1ZXN0LnVybH1dYCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkUmVzcG9uc2UocHJveHlSZXNwb25zZSk7XG59XG5mdW5jdGlvbiBpbnRlcmNlcHRGZXRjaChvcmlnaW5hbEZldGNoKSB7XG4gICAgZ2xvYmFsLmZldGNoID0gZnVuY3Rpb24gdGVzdEZldGNoKGlucHV0LCBpbml0KSB7XG4gICAgICAgIHZhciBfaW5pdF9uZXh0O1xuICAgICAgICAvLyBQYXNzdGhyb3VnaCBpbnRlcm5hbCByZXF1ZXN0cy5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaW5pdCA9PSBudWxsID8gdm9pZCAwIDogKF9pbml0X25leHQgPSBpbml0Lm5leHQpID09IG51bGwgPyB2b2lkIDAgOiBfaW5pdF9uZXh0LmludGVybmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGZXRjaChpbnB1dCwgaW5pdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZUZldGNoKG9yaWdpbmFsRmV0Y2gsIG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KSk7XG4gICAgfTtcbiAgICByZXR1cm4gKCk9PntcbiAgICAgICAgZ2xvYmFsLmZldGNoID0gb3JpZ2luYWxGZXRjaDtcbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mZXRjaC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJyZWFkZXIiLCJoYW5kbGVGZXRjaCIsImludGVyY2VwdEZldGNoIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2NvbnRleHQiLCJyZXF1aXJlIiwidXJsIiwicmVxIiwiaGVhZGVyIiwiaGVhZGVycyIsImdldFRlc3RTdGFjayIsInN0YWNrIiwiRXJyb3IiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzbGljZSIsImZpbHRlciIsImYiLCJpbmNsdWRlcyIsIm1hcCIsInMiLCJyZXBsYWNlIiwidHJpbSIsImpvaW4iLCJidWlsZFByb3h5UmVxdWVzdCIsInRlc3REYXRhIiwicmVxdWVzdCIsIm1ldGhvZCIsImJvZHkiLCJjYWNoZSIsImNyZWRlbnRpYWxzIiwiaW50ZWdyaXR5IiwibW9kZSIsInJlZGlyZWN0IiwicmVmZXJyZXIiLCJyZWZlcnJlclBvbGljeSIsImFwaSIsIkFycmF5IiwiZnJvbSIsIkJ1ZmZlciIsImFycmF5QnVmZmVyIiwidG9TdHJpbmciLCJidWlsZFJlc3BvbnNlIiwicHJveHlSZXNwb25zZSIsInN0YXR1cyIsInJlc3BvbnNlIiwiUmVzcG9uc2UiLCJIZWFkZXJzIiwib3JpZ2luYWxGZXRjaCIsInRlc3RJbmZvIiwiZ2V0VGVzdFJlcUluZm8iLCJwcm94eVBvcnQiLCJwcm94eVJlcXVlc3QiLCJyZXNwIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5leHQiLCJpbnRlcm5hbCIsIm9rIiwianNvbiIsImdsb2JhbCIsImZldGNoIiwidGVzdEZldGNoIiwiaW5wdXQiLCJpbml0IiwiX2luaXRfbmV4dCIsIlJlcXVlc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/experimental/testmode/fetch.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/experimental/testmode/server-edge.js":
/*!*********************************************************************!*\
!*** ./node_modules/next/dist/experimental/testmode/server-edge.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 interceptTestApis: function() {\n return interceptTestApis;\n },\n wrapRequestHandler: function() {\n return wrapRequestHandler;\n }\n});\nconst _context = __webpack_require__(/*! ./context */ \"(rsc)/./node_modules/next/dist/experimental/testmode/context.js\");\nconst _fetch = __webpack_require__(/*! ./fetch */ \"(rsc)/./node_modules/next/dist/experimental/testmode/fetch.js\");\nfunction interceptTestApis() {\n return (0, _fetch.interceptFetch)(__webpack_require__.g.fetch);\n}\nfunction wrapRequestHandler(handler) {\n return (req, fn)=>(0, _context.withRequest)(req, _fetch.reader, ()=>handler(req, fn));\n} //# sourceMappingURL=server-edge.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9zZXJ2ZXItZWRnZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUdOO0FBQ0EsU0FBU0csUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSVQsT0FBT0MsY0FBYyxDQUFDTyxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZO1FBQ1pDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFMLFNBQVM7SUFDYkcsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtJQUNBQyxvQkFBb0I7UUFDaEIsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTU8sV0FBV0MsbUJBQU9BLENBQUMsa0ZBQVc7QUFDcEMsTUFBTUMsU0FBU0QsbUJBQU9BLENBQUMsOEVBQVM7QUFDaEMsU0FBU1Q7SUFDTCxPQUFPLENBQUMsR0FBR1UsT0FBT0MsY0FBYyxFQUFFQyxxQkFBTUEsQ0FBQ0MsS0FBSztBQUNsRDtBQUNBLFNBQVNaLG1CQUFtQmEsT0FBTztJQUMvQixPQUFPLENBQUNDLEtBQUtDLEtBQUssQ0FBQyxHQUFHUixTQUFTUyxXQUFXLEVBQUVGLEtBQUtMLE9BQU9RLE1BQU0sRUFBRSxJQUFJSixRQUFRQyxLQUFLQztBQUNyRixFQUVBLHVDQUF1QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2V4cGVyaW1lbnRhbC90ZXN0bW9kZS9zZXJ2ZXItZWRnZS5qcz80NzE4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaW50ZXJjZXB0VGVzdEFwaXM6IG51bGwsXG4gICAgd3JhcFJlcXVlc3RIYW5kbGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGludGVyY2VwdFRlc3RBcGlzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGludGVyY2VwdFRlc3RBcGlzO1xuICAgIH0sXG4gICAgd3JhcFJlcXVlc3RIYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBSZXF1ZXN0SGFuZGxlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9jb250ZXh0ID0gcmVxdWlyZShcIi4vY29udGV4dFwiKTtcbmNvbnN0IF9mZXRjaCA9IHJlcXVpcmUoXCIuL2ZldGNoXCIpO1xuZnVuY3Rpb24gaW50ZXJjZXB0VGVzdEFwaXMoKSB7XG4gICAgcmV0dXJuICgwLCBfZmV0Y2guaW50ZXJjZXB0RmV0Y2gpKGdsb2JhbC5mZXRjaCk7XG59XG5mdW5jdGlvbiB3cmFwUmVxdWVzdEhhbmRsZXIoaGFuZGxlcikge1xuICAgIHJldHVybiAocmVxLCBmbik9PigwLCBfY29udGV4dC53aXRoUmVxdWVzdCkocmVxLCBfZmV0Y2gucmVhZGVyLCAoKT0+aGFuZGxlcihyZXEsIGZuKSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlcnZlci1lZGdlLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIm1vZHVsZSIsImludGVyY2VwdFRlc3RBcGlzIiwid3JhcFJlcXVlc3RIYW5kbGVyIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2NvbnRleHQiLCJyZXF1aXJlIiwiX2ZldGNoIiwiaW50ZXJjZXB0RmV0Y2giLCJnbG9iYWwiLCJmZXRjaCIsImhhbmRsZXIiLCJyZXEiLCJmbiIsIndpdGhSZXF1ZXN0IiwicmVhZGVyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/experimental/testmode/server-edge.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/spark-md5/spark-md5.js":
/*!*********************************************!*\
!*** ./node_modules/spark-md5/spark-md5.js ***!
\*********************************************/
/***/ ((module) => {
"use strict";
eval("\n(function(factory) {\n if (true) {\n // Node/CommonJS\n module.exports = factory();\n } else { var glob; }\n})(function(undefined) {\n \"use strict\";\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */ /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */ var add32 = function(a, b) {\n return a + b & 0xFFFFFFFF;\n }, hex_chr = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\"\n ];\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32(a << s | a >>> 32 - s, b);\n }\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i; /* Andy King said do it this way. */ \n for(i = 0; i < 64; i += 4){\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i; /* Andy King said do it this way. */ \n for(i = 0; i < 64; i += 4){\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ], i, length, tail, tmp, lo, hi;\n for(i = 64; i <= n; i += 64){\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n for(i = 0; i < length; i += 1){\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for(i = 0; i < 16; i += 1){\n tail[i] = 0;\n }\n }\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ], i, length, tail, tmp, lo, hi;\n for(i = 64; i <= n; i += 64){\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n for(i = 0; i < length; i += 1){\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for(i = 0; i < 16; i += 1){\n tail[i] = 0;\n }\n }\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for(j = 0; j < 4; j += 1){\n s += hex_chr[n >> j * 8 + 4 & 0x0F] + hex_chr[n >> j * 8 & 0x0F];\n }\n return s;\n }\n function hex(x) {\n var i;\n for(i = 0; i < x.length; i += 1){\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n // In some cases the fast add32 function cannot be used..\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") {\n add32 = function(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xFFFF;\n };\n }\n // ---------------------------------------------------\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */ if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n // ---------------------------------------------------\n /**\n * Helpers.\n */ function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for(i = 0; i < length; i += 1){\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for(x = 0; x < length - 1; x += 2){\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n // ---------------------------------------------------\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */ function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */ SparkMD5.prototype.append = function(str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n return this;\n };\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */ SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for(i = 64; i <= length; i += 64){\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */ SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ], ret;\n for(i = 0; i < length; i += 1){\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */ SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ];\n return this;\n };\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */ SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */ SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */ SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */ SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for(i = 0; i < 16; i += 1){\n tail[i] = 0;\n }\n }\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */ SparkMD5.hash = function(str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */ SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n // ---------------------------------------------------\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */ SparkMD5.ArrayBuffer = function() {\n // call reset to init the instance\n this.reset();\n };\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */ SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for(i = 64; i <= length; i += 64){\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */ SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ], i, ret;\n for(i = 0; i < length; i += 1){\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */ SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ];\n return this;\n };\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */ SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */ SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */ SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvc3BhcmstbWQ1L3NwYXJrLW1kNS5qcyIsIm1hcHBpbmdzIjoiO0FBQUMsVUFBVUEsT0FBTztJQUNkLElBQUksSUFBbUIsRUFBVTtRQUM3QixnQkFBZ0I7UUFDaEJFLE9BQU9ELE9BQU8sR0FBR0Q7SUFDckIsT0FBTyxhQWNOO0FBQ0wsR0FBRSxTQUFVVSxTQUFTO0lBRWpCO0lBRUE7Ozs7OztLQU1DLEdBRUQ7Ozs7a0NBSThCLEdBQzlCLElBQUlDLFFBQVEsU0FBVUMsQ0FBQyxFQUFFQyxDQUFDO1FBQ3RCLE9BQU8sSUFBS0EsSUFBSztJQUNyQixHQUNJQyxVQUFVO1FBQUM7UUFBSztRQUFLO1FBQUs7UUFBSztRQUFLO1FBQUs7UUFBSztRQUFLO1FBQUs7UUFBSztRQUFLO1FBQUs7UUFBSztRQUFLO1FBQUs7S0FBSTtJQUc5RixTQUFTQyxJQUFJQyxDQUFDLEVBQUVKLENBQUMsRUFBRUMsQ0FBQyxFQUFFSSxDQUFDLEVBQUVDLENBQUMsRUFBRUMsQ0FBQztRQUN6QlAsSUFBSUQsTUFBTUEsTUFBTUMsR0FBR0ksSUFBSUwsTUFBTU0sR0FBR0U7UUFDaEMsT0FBT1IsTUFBTSxLQUFNTyxJQUFNTixNQUFPLEtBQUtNLEdBQUtMO0lBQzlDO0lBRUEsU0FBU08sU0FBU0gsQ0FBQyxFQUFFSSxDQUFDO1FBQ2xCLElBQUlULElBQUlLLENBQUMsQ0FBQyxFQUFFLEVBQ1JKLElBQUlJLENBQUMsQ0FBQyxFQUFFLEVBQ1JLLElBQUlMLENBQUMsQ0FBQyxFQUFFLEVBQ1JNLElBQUlOLENBQUMsQ0FBQyxFQUFFO1FBRVpMLEtBQUssQ0FBQ0MsSUFBSVMsSUFBSSxDQUFDVCxJQUFJVSxDQUFBQSxJQUFLRixDQUFDLENBQUMsRUFBRSxHQUFHLFlBQVk7UUFDM0NULElBQUssQ0FBQ0EsS0FBSyxJQUFJQSxNQUFNLEVBQUMsSUFBS0MsSUFBSTtRQUMvQlUsS0FBSyxDQUFDWCxJQUFJQyxJQUFJLENBQUNELElBQUlVLENBQUFBLElBQUtELENBQUMs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RWpELDZCQUE2QjtRQUM3QjNFLE1BQU00QyxJQUFJLEdBQUdFLG9CQUFvQjlDLE1BQU00QyxJQUFJO1FBRTNDLE9BQU81QztJQUNYO0lBRUE7Ozs7OztLQU1DLEdBQ0R2QixTQUFTMEMsV0FBVyxDQUFDQyxTQUFTLENBQUNtRCxRQUFRLEdBQUcsU0FBVXZFLEtBQUs7UUFDckQsMkJBQTJCO1FBQzNCQSxNQUFNNEMsSUFBSSxHQUFHRixvQkFBb0IxQyxNQUFNNEMsSUFBSSxFQUFFO1FBRTdDLE9BQU9uRSxTQUFTMkMsU0FBUyxDQUFDbUQsUUFBUSxDQUFDSSxJQUFJLENBQUMsSUFBSSxFQUFFM0U7SUFDbEQ7SUFFQXZCLFNBQVMwQyxXQUFXLENBQUNDLFNBQVMsQ0FBQ29ELE9BQU8sR0FBRy9GLFNBQVMyQyxTQUFTLENBQUNvRCxPQUFPO0lBRW5FL0YsU0FBUzBDLFdBQVcsQ0FBQ0MsU0FBUyxDQUFDZ0QsT0FBTyxHQUFHM0YsU0FBUzJDLFNBQVMsQ0FBQ2dELE9BQU87SUFFbkU7Ozs7Ozs7S0FPQyxHQUNEM0YsU0FBUzBDLFdBQVcsQ0FBQ21ELElBQUksR0FBRyxTQUFVekIsR0FBRyxFQUFFcUIsR0FBRztRQUMxQyxJQUFJSSxPQUFPN0QsV0FBVyxJQUFJRSxXQUFXa0MsT0FDakNzQixNQUFNckQsSUFBSXdEO1FBRWQsT0FBT0osTUFBTVgsa0JBQWtCWSxPQUFPQTtJQUMxQztJQUVBLE9BQU8xRjtBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zcGFyay1tZDUvc3BhcmstbWQ1LmpzP2M1NTgiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBOb2RlL0NvbW1vbkpTXG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIC8vIEFNRFxuICAgICAgICBkZWZpbmUoZmFjdG9yeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzICh3aXRoIHN1cHBvcnQgZm9yIHdlYiB3b3JrZXJzKVxuICAgICAgICB2YXIgZ2xvYjtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZ2xvYiA9IHdpbmRvdztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZ2xvYiA9IHNlbGY7XG4gICAgICAgIH1cblxuICAgICAgICBnbG9iLlNwYXJrTUQ1ID0gZmFjdG9yeSgpO1xuICAgIH1cbn0oZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuXG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLypcbiAgICAgKiBGYXN0ZXN0IG1kNSBpbXBsZW1lbnRhdGlvbiBhcm91bmQgKEpLTSBtZDUpLlxuICAgICAqIENyZWRpdHM6IEpvc2VwaCBNeWVyc1xuICAgICAqXG4gICAgICogQHNlZSBodHRwOi8vd3d3Lm15ZXJzZGFpbHkub3JnL2pvc2VwaC9qYXZhc2NyaXB0L21kNS10ZXh0Lmh0bWxcbiAgICAgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL21kNS1zaG9vdG91dC83XG4gICAgICovXG5cbiAgICAvKiB0aGlzIGZ1bmN0aW9uIGlzIG11Y2ggZmFzdGVyLFxuICAgICAgc28gaWYgcG9zc2libGUgd2UgdXNlIGl0LiBTb21lIElFc1xuICAgICAgYXJlIHRoZSBvbmx5IG9uZXMgSSBrbm93IG9mIHRoYXRcbiAgICAgIG5lZWQgdGhlIGlkaW90aWMgc2Vjb25kIGZ1bmN0aW9uLFxuICAgICAgZ2VuZXJhdGVkIGJ5IGFuIGlmIGNsYXVzZS4gICovXG4gICAgdmFyIGFkZDMyID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhICsgYikgJiAweEZGRkZGRkZGO1xuICAgIH0sXG4gICAgICAgIGhleF9jaHIgPSBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnXTtcblxuXG4gICAgZnVuY3Rpb24gY21uKHEsIGEsIGIsIHgsIHMsIHQpIHtcbiAgICAgICAgYSA9IGFkZDMyKGFkZDMyKGEsIHEpLCBhZGQzMih4LCB0KSk7XG4gICAgICAgIHJldHVybiBhZGQzMigoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1kNWN5Y2xlKHgsIGspIHtcbiAgICAgICAgdmFyIGEgPSB4WzBdLFxuICAgICAgICAgICAgYiA9IHhbMV0sXG4gICAgICAgICAgICBjID0geFsyXSxcbiAgICAgICAgICAgIGQgPSB4WzNdO1xuXG4gICAgICAgIGEgKz0gKGIgJiBjIHwgfmIgJiBkKSArIGtbMF0gLSA2ODA4NzY5MzYgfCAwO1xuICAgICAgICBhICA9IChhIDw8IDcgfCBhID4+PiAyNSkgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSAmIGIgfCB+YSAmIGMpICsga1sxXSAtIDM4OTU2NDU4NiB8IDA7XG4gICAgICAgIGQgID0gKGQgPDwgMTIgfCBkID4+PiAyMCkgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoZCAmIGEgfCB+ZCAmIGIpICsga1syXSArIDYwNjEwNTgxOSB8IDA7XG4gICAgICAgIGMgID0gKGMgPDwgMTcgfCBjID4+PiAxNSkgKyBkIHwgMDtcbiAgICAgICAgYiArPSAoYyAmIGQgfCB+YyAmIGEpICsga1szXSAtIDEwNDQ1MjUzMzAgfCAwO1xuICAgICAgICBiICA9IChiIDw8IDIyIHwgYiA+Pj4gMTApICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGIgJiBjIHwgfmIgJiBkKSArIGtbNF0gLSAxNzY0MTg4OTcgfCAwO1xuICAgICAgICBhICA9IChhIDw8IDcgfCBhID4+PiAyNSkgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSAmIGIgfCB+YSAmIGMpICsga1s1XSArIDEyMDAwODA0MjYgfCAwO1xuICAgICAgICBkICA9IChkIDw8IDEyIHwgZCA+Pj4gMjApICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGQgJiBhIHwgfmQgJiBiKSArIGtbNl0gLSAxNDczMjMxMzQxIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNyB8IGMgPj4+IDE1KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjICYgZCB8IH5jICYgYSkgKyBrWzddIC0gNDU3MDU5ODMgfCAwO1xuICAgICAgICBiICA9IChiIDw8IDIyIHwgYiA+Pj4gMTApICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGIgJiBjIHwgfmIgJiBkKSArIGtbOF0gKyAxNzcwMDM1NDE2IHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA3IHwgYSA+Pj4gMjUpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGEgJiBiIHwgfmEgJiBjKSArIGtbOV0gLSAxOTU4NDE0NDE3IHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCAxMiB8IGQgPj4+IDIwKSArIGEgfCAwO1xuICAgICAgICBjICs9IChkICYgYSB8IH5kICYgYikgKyBrWzEwXSAtIDQyMDYzIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNyB8IGMgPj4+IDE1KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjICYgZCB8IH5jICYgYSkgKyBrWzExXSAtIDE5OTA0MDQxNjIgfCAwO1xuICAgICAgICBiICA9IChiIDw8IDIyIHwgYiA+Pj4gMTApICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGIgJiBjIHwgfmIgJiBkKSArIGtbMTJdICsgMTgwNDYwMzY4MiB8IDA7XG4gICAgICAgIGEgID0gKGEgPDwgNyB8IGEgPj4+IDI1KSArIGIgfCAwO1xuICAgICAgICBkICs9IChhICYgYiB8IH5hICYgYykgKyBrWzEzXSAtIDQwMzQxMTAxIHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCAxMiB8IGQgPj4+IDIwKSArIGEgfCAwO1xuICAgICAgICBjICs9IChkICYgYSB8IH5kICYgYikgKyBrWzE0XSAtIDE1MDIwMDIyOTAgfCAwO1xuICAgICAgICBjICA9IChjIDw8IDE3IHwgYyA+Pj4gMTUpICsgZCB8IDA7XG4gICAgICAgIGIgKz0gKGMgJiBkIHwgfmMgJiBhKSArIGtbMTVdICsgMTIzNjUzNTMyOSB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjIgfCBiID4+PiAxMCkgKyBjIHwgMDtcblxuICAgICAgICBhICs9IChiICYgZCB8IGMgJiB+ZCkgKyBrWzFdIC0gMTY1Nzk2NTEwIHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA1IHwgYSA+Pj4gMjcpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGEgJiBjIHwgYiAmIH5jKSArIGtbNl0gLSAxMDY5NTAxNjMyIHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCA5IHwgZCA+Pj4gMjMpICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGQgJiBiIHwgYSAmIH5iKSArIGtbMTFdICsgNjQzNzE3NzEzIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNCB8IGMgPj4+IDE4KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjICYgYSB8IGQgJiB+YSkgKyBrWzBdIC0gMzczODk3MzAyIHwgMDtcbiAgICAgICAgYiAgPSAoYiA8PCAyMCB8IGIgPj4+IDEyKSArIGMgfCAwO1xuICAgICAgICBhICs9IChiICYgZCB8IGMgJiB+ZCkgKyBrWzVdIC0gNzAxNTU4NjkxIHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA1IHwgYSA+Pj4gMjcpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGEgJiBjIHwgYiAmIH5jKSArIGtbMTBdICsgMzgwMTYwODMgfCAwO1xuICAgICAgICBkICA9IChkIDw8IDkgfCBkID4+PiAyMykgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoZCAmIGIgfCBhICYgfmIpICsga1sxNV0gLSA2NjA0NzgzMzUgfCAwO1xuICAgICAgICBjICA9IChjIDw8IDE0IHwgYyA+Pj4gMTgpICsgZCB8IDA7XG4gICAgICAgIGIgKz0gKGMgJiBhIHwgZCAmIH5hKSArIGtbNF0gLSA0MDU1Mzc4NDggfCAwO1xuICAgICAgICBiICA9IChiIDw8IDIwIHwgYiA+Pj4gMTIpICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGIgJiBkIHwgYyAmIH5kKSArIGtbOV0gKyA1Njg0NDY0MzggfCAwO1xuICAgICAgICBhICA9IChhIDw8IDUgfCBhID4+PiAyNykgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSAmIGMgfCBiICYgfmMpICsga1sxNF0gLSAxMDE5ODAzNjkwIHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCA5IHwgZCA+Pj4gMjMpICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGQgJiBiIHwgYSAmIH5iKSArIGtbM10gLSAxODczNjM5NjEgfCAwO1xuICAgICAgICBjICA9IChjIDw8IDE0IHwgYyA+Pj4gMTgpICsgZCB8IDA7XG4gICAgICAgIGIgKz0gKGMgJiBhIHwgZCAmIH5hKSArIGtbOF0gKyAxMTYzNTMxNTAxIHwgMDtcbiAgICAgICAgYiAgPSAoYiA8PCAyMCB8IGIgPj4+IDEyKSArIGMgfCAwO1xuICAgICAgICBhICs9IChiICYgZCB8IGMgJiB+ZCkgKyBrWzEzXSAtIDE0NDQ2ODE0NjcgfCAwO1xuICAgICAgICBhICA9IChhIDw8IDUgfCBhID4+PiAyNykgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSAmIGMgfCBiICYgfmMpICsga1syXSAtIDUxNDAzNzg0IHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCA5IHwgZCA+Pj4gMjMpICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGQgJiBiIHwgYSAmIH5iKSArIGtbN10gKyAxNzM1MzI4NDczIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNCB8IGMgPj4+IDE4KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjICYgYSB8IGQgJiB+YSkgKyBrWzEyXSAtIDE5MjY2MDc3MzQgfCAwO1xuICAgICAgICBiICA9IChiIDw8IDIwIHwgYiA+Pj4gMTIpICsgYyB8IDA7XG5cbiAgICAgICAgYSArPSAoYiBeIGMgXiBkKSArIGtbNV0gLSAzNzg1NTggfCAwO1xuICAgICAgICBhICA9IChhIDw8IDQgfCBhID4+PiAyOCkgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSBeIGIgXiBjKSArIGtbOF0gLSAyMDIyNTc0NDYzIHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCAxMSB8IGQgPj4+IDIxKSArIGEgfCAwO1xuICAgICAgICBjICs9IChkIF4gYSBeIGIpICsga1sxMV0gKyAxODM5MDMwNTYyIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNiB8IGMgPj4+IDE2KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjIF4gZCBeIGEpICsga1sxNF0gLSAzNTMwOTU1NiB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjMgfCBiID4+PiA5KSArIGMgfCAwO1xuICAgICAgICBhICs9IChiIF4gYyBeIGQpICsga1sxXSAtIDE1MzA5OTIwNjAgfCAwO1xuICAgICAgICBhICA9IChhIDw8IDQgfCBhID4+PiAyOCkgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSBeIGIgXiBjKSArIGtbNF0gKyAxMjcyODkzMzUzIHwgMDtcbiAgICAgICAgZCAgPSAoZCA8PCAxMSB8IGQgPj4+IDIxKSArIGEgfCAwO1xuICAgICAgICBjICs9IChkIF4gYSBeIGIpICsga1s3XSAtIDE1NTQ5NzYzMiB8IDA7XG4gICAgICAgIGMgID0gKGMgPDwgMTYgfCBjID4+PiAxNikgKyBkIHwgMDtcbiAgICAgICAgYiArPSAoYyBeIGQgXiBhKSArIGtbMTBdIC0gMTA5NDczMDY0MCB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjMgfCBiID4+PiA5KSArIGMgfCAwO1xuICAgICAgICBhICs9IChiIF4gYyBeIGQpICsga1sxM10gKyA2ODEyNzkxNzQgfCAwO1xuICAgICAgICBhICA9IChhIDw8IDQgfCBhID4+PiAyOCkgKyBiIHwgMDtcbiAgICAgICAgZCArPSAoYSBeIGIgXiBjKSArIGtbMF0gLSAzNTg1MzcyMjIgfCAwO1xuICAgICAgICBkICA9IChkIDw8IDExIHwgZCA+Pj4gMjEpICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGQgXiBhIF4gYikgKyBrWzNdIC0gNzIyNTIxOTc5IHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNiB8IGMgPj4+IDE2KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjIF4gZCBeIGEpICsga1s2XSArIDc2MDI5MTg5IHwgMDtcbiAgICAgICAgYiAgPSAoYiA8PCAyMyB8IGIgPj4+IDkpICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGIgXiBjIF4gZCkgKyBrWzldIC0gNjQwMzY0NDg3IHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA0IHwgYSA+Pj4gMjgpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGEgXiBiIF4gYykgKyBrWzEyXSAtIDQyMTgxNTgzNSB8IDA7XG4gICAgICAgIGQgID0gKGQgPDwgMTEgfCBkID4+PiAyMSkgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoZCBeIGEgXiBiKSArIGtbMTVdICsgNTMwNzQyNTIwIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNiB8IGMgPj4+IDE2KSArIGQgfCAwO1xuICAgICAgICBiICs9IChjIF4gZCBeIGEpICsga1syXSAtIDk5NTMzODY1MSB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjMgfCBiID4+PiA5KSArIGMgfCAwO1xuXG4gICAgICAgIGEgKz0gKGMgXiAoYiB8IH5kKSkgKyBrWzBdIC0gMTk4NjMwODQ0IHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA2IHwgYSA+Pj4gMjYpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGIgXiAoYSB8IH5jKSkgKyBrWzddICsgMTEyNjg5MTQxNSB8IDA7XG4gICAgICAgIGQgID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGtbMTRdIC0gMTQxNjM1NDkwNSB8IDA7XG4gICAgICAgIGMgID0gKGMgPDwgMTUgfCBjID4+PiAxNykgKyBkIHwgMDtcbiAgICAgICAgYiArPSAoZCBeIChjIHwgfmEpKSArIGtbNV0gLSA1NzQzNDA1NSB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjEgfGIgPj4+IDExKSArIGMgfCAwO1xuICAgICAgICBhICs9IChjIF4gKGIgfCB+ZCkpICsga1sxMl0gKyAxNzAwNDg1NTcxIHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA2IHwgYSA+Pj4gMjYpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGIgXiAoYSB8IH5jKSkgKyBrWzNdIC0gMTg5NDk4NjYwNiB8IDA7XG4gICAgICAgIGQgID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGtbMTBdIC0gMTA1MTUyMyB8IDA7XG4gICAgICAgIGMgID0gKGMgPDwgMTUgfCBjID4+PiAxNykgKyBkIHwgMDtcbiAgICAgICAgYiArPSAoZCBeIChjIHwgfmEpKSArIGtbMV0gLSAyMDU0OTIyNzk5IHwgMDtcbiAgICAgICAgYiAgPSAoYiA8PCAyMSB8YiA+Pj4gMTEpICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGMgXiAoYiB8IH5kKSkgKyBrWzhdICsgMTg3MzMxMzM1OSB8IDA7XG4gICAgICAgIGEgID0gKGEgPDwgNiB8IGEgPj4+IDI2KSArIGIgfCAwO1xuICAgICAgICBkICs9IChiIF4gKGEgfCB+YykpICsga1sxNV0gLSAzMDYxMTc0NCB8IDA7XG4gICAgICAgIGQgID0gKGQgPDwgMTAgfCBkID4+PiAyMikgKyBhIHwgMDtcbiAgICAgICAgYyArPSAoYSBeIChkIHwgfmIpKSArIGtbNl0gLSAxNTYwMTk4MzgwIHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNSB8IGMgPj4+IDE3KSArIGQgfCAwO1xuICAgICAgICBiICs9IChkIF4gKGMgfCB+YSkpICsga1sxM10gKyAxMzA5MTUxNjQ5IHwgMDtcbiAgICAgICAgYiAgPSAoYiA8PCAyMSB8YiA+Pj4gMTEpICsgYyB8IDA7XG4gICAgICAgIGEgKz0gKGMgXiAoYiB8IH5kKSkgKyBrWzRdIC0gMTQ1NTIzMDcwIHwgMDtcbiAgICAgICAgYSAgPSAoYSA8PCA2IHwgYSA+Pj4gMjYpICsgYiB8IDA7XG4gICAgICAgIGQgKz0gKGIgXiAoYSB8IH5jKSkgKyBrWzExXSAtIDExMjAyMTAzNzkgfCAwO1xuICAgICAgICBkICA9IChkIDw8IDEwIHwgZCA+Pj4gMjIpICsgYSB8IDA7XG4gICAgICAgIGMgKz0gKGEgXiAoZCB8IH5iKSkgKyBrWzJdICsgNzE4Nzg3MjU5IHwgMDtcbiAgICAgICAgYyAgPSAoYyA8PCAxNSB8IGMgPj4+IDE3KSArIGQgfCAwO1xuICAgICAgICBiICs9IChkIF4gKGMgfCB+YSkpICsga1s5XSAtIDM0MzQ4NTU1MSB8IDA7XG4gICAgICAgIGIgID0gKGIgPDwgMjEgfCBiID4+PiAxMSkgKyBjIHwgMDtcblxuICAgICAgICB4WzBdID0gYSArIHhbMF0gfCAwO1xuICAgICAgICB4WzFdID0gYiArIHhbMV0gfCAwO1xuICAgICAgICB4WzJdID0gYyArIHhbMl0gfCAwO1xuICAgICAgICB4WzNdID0gZCArIHhbM10gfCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1kNWJsayhzKSB7XG4gICAgICAgIHZhciBtZDVibGtzID0gW10sXG4gICAgICAgICAgICBpOyAvKiBBbmR5IEtpbmcgc2FpZCBkbyBpdCB0aGlzIHdheS4gKi9cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbWQ1Ymxrc1tpID4+IDJdID0gcy5jaGFyQ29kZUF0KGkpICsgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgOCkgKyAocy5jaGFyQ29kZUF0KGkgKyAyKSA8PCAxNikgKyAocy5jaGFyQ29kZUF0KGkgKyAzKSA8PCAyNCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1kNWJsa3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWQ1YmxrX2FycmF5KGEpIHtcbiAgICAgICAgdmFyIG1kNWJsa3MgPSBbXSxcbiAgICAgICAgICAgIGk7IC8qIEFuZHkgS2luZyBzYWlkIGRvIGl0IHRoaXMgd2F5LiAqL1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSArPSA0KSB7XG4gICAgICAgICAgICBtZDVibGtzW2kgPj4gMl0gPSBhW2ldICsgKGFbaSArIDFdIDw8IDgpICsgKGFbaSArIDJdIDw8IDE2KSArIChhW2kgKyAzXSA8PCAyNCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1kNWJsa3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWQ1MShzKSB7XG4gICAgICAgIHZhciBuID0gcy5sZW5ndGgsXG4gICAgICAgICAgICBzdGF0ZSA9IFsxNzMyNTg0MTkzLCAtMjcxNzMzODc5LCAtMTczMjU4NDE5NCwgMjcxNzMzODc4XSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgICB0YWlsLFxuICAgICAgICAgICAgdG1wLFxuICAgICAgICAgICAgbG8sXG4gICAgICAgICAgICBoaTtcblxuICAgICAgICBmb3IgKGkgPSA2NDsgaSA8PSBuOyBpICs9IDY0KSB7XG4gICAgICAgICAgICBtZDVjeWNsZShzdGF0ZSwgbWQ1YmxrKHMuc3Vic3RyaW5nKGkgLSA2NCwgaSkpKTtcbiAgICAgICAgfVxuICAgICAgICBzID0gcy5zdWJzdHJpbmcoaSAtIDY0KTtcbiAgICAgICAgbGVuZ3RoID0gcy5sZW5ndGg7XG4gICAgICAgIHRhaWwgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgdGFpbFtpID4+IDJdIHw9IHMuY2hhckNvZGVBdChpKSA8PCAoKGkgJSA0KSA8PCAzKTtcbiAgICAgICAgfVxuICAgICAgICB0YWlsW2kgPj4gMl0gfD0gMHg4MCA8PCAoKGkgJSA0KSA8PCAzKTtcbiAgICAgICAgaWYgKGkgPiA1NSkge1xuICAgICAgICAgICAgbWQ1Y3ljbGUoc3RhdGUsIHRhaWwpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICB0YWlsW2ldID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJld2FyZSB0aGF0IHRoZSBmaW5hbCBsZW5ndGggbWlnaHQgbm90IGZpdCBpbiAzMiBiaXRzIHNvIHdlIHRha2UgY2FyZSBvZiB0aGF0XG4gICAgICAgIHRtcCA9IG4gKiA4O1xuICAgICAgICB0bXAgPSB0bXAudG9TdHJpbmcoMTYpLm1hdGNoKC8oLio/KSguezAsOH0pJC8pO1xuICAgICAgICBsbyA9IHBhcnNlSW50KHRtcFsyXSwgMTYpO1xuICAgICAgICBoaSA9IHBhcnNlSW50KHRtcFsxXSwgMTYpIHx8IDA7XG5cbiAgICAgICAgdGFpbFsxNF0gPSBsbztcbiAgICAgICAgdGFpbFsxNV0gPSBoaTtcblxuICAgICAgICBtZDVjeWNsZShzdGF0ZSwgdGFpbCk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZDUxX2FycmF5KGEpIHtcbiAgICAgICAgdmFyIG4gPSBhLmxlbmd0aCxcbiAgICAgICAgICAgIHN0YXRlID0gWzE3MzI1ODQxOTMsIC0yNzE3MzM4NzksIC0xNzMyNTg0MTk0LCAyNzE3MzM4NzhdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgIHRhaWwsXG4gICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICBsbyxcbiAgICAgICAgICAgIGhpO1xuXG4gICAgICAgIGZvciAoaSA9IDY0OyBpIDw9IG47IGkgKz0gNjQpIHtcbiAgICAgICAgICAgIG1kNWN5Y2xlKHN0YXRlLCBtZDVibGtfYXJyYXkoYS5zdWJhcnJheShpIC0gNjQsIGkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3Qgc3VyZSBpZiBpdCBpcyBhIGJ1ZywgaG93ZXZlciBJRTEwIHdpbGwgYWx3YXlzIHByb2R1Y2UgYSBzdWIgYXJyYXkgb2YgbGVuZ3RoIDFcbiAgICAgICAgLy8gY29udGFpbmluZyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXJlbnQgYXJyYXkgaWYgdGhlIHN1YiBhcnJheSBzcGVjaWZpZWQgc3RhcnRzXG4gICAgICAgIC8vIGJleW9uZCB0aGUgbGVuZ3RoIG9mIHRoZSBwYXJlbnQgYXJyYXkgLSB3ZWlyZC5cbiAgICAgICAgLy8gaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy83NzE0NTIvdHlwZWQtYXJyYXktc3ViYXJyYXktaXNzdWVcbiAgICAgICAgYSA9IChpIC0gNjQpIDwgbiA/IGEuc3ViYXJyYXkoaSAtIDY0KSA6IG5ldyBVaW50OEFycmF5KDApO1xuXG4gICAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgICB0YWlsID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHRhaWxbaSA+PiAyXSB8PSBhW2ldIDw8ICgoaSAlIDQpIDw8IDMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFpbFtpID4+IDJdIHw9IDB4ODAgPDwgKChpICUgNCkgPDwgMyk7XG4gICAgICAgIGlmIChpID4gNTUpIHtcbiAgICAgICAgICAgIG1kNWN5Y2xlKHN0YXRlLCB0YWlsKTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgdGFpbFtpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZXdhcmUgdGhhdCB0aGUgZmluYWwgbGVuZ3RoIG1pZ2h0IG5vdCBmaXQgaW4gMzIgYml0cyBzbyB3ZSB0YWtlIGNhcmUgb2YgdGhhdFxuICAgICAgICB0bXAgPSBuICogODtcbiAgICAgICAgdG1wID0gdG1wLnRvU3RyaW5nKDE2KS5tYXRjaCgvKC4qPykoLnswLDh9KSQvKTtcbiAgICAgICAgbG8gPSBwYXJzZUludCh0bXBbMl0sIDE2KTtcbiAgICAgICAgaGkgPSBwYXJzZUludCh0bXBbMV0sIDE2KSB8fCAwO1xuXG4gICAgICAgIHRhaWxbMTRdID0gbG87XG4gICAgICAgIHRhaWxbMTVdID0gaGk7XG5cbiAgICAgICAgbWQ1Y3ljbGUoc3RhdGUsIHRhaWwpO1xuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByaGV4KG4pIHtcbiAgICAgICAgdmFyIHMgPSAnJyxcbiAgICAgICAgICAgIGo7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqICs9IDEpIHtcbiAgICAgICAgICAgIHMgKz0gaGV4X2NoclsobiA+PiAoaiAqIDggKyA0KSkgJiAweDBGXSArIGhleF9jaHJbKG4gPj4gKGogKiA4KSkgJiAweDBGXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoZXgoeCkge1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHhbaV0gPSByaGV4KHhbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4LmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8vIEluIHNvbWUgY2FzZXMgdGhlIGZhc3QgYWRkMzIgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQuLlxuICAgIGlmIChoZXgobWQ1MSgnaGVsbG8nKSkgIT09ICc1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MicpIHtcbiAgICAgICAgYWRkMzIgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgICAgdmFyIGxzdyA9ICh4ICYgMHhGRkZGKSArICh5ICYgMHhGRkZGKSxcbiAgICAgICAgICAgICAgICBtc3cgPSAoeCA+PiAxNikgKyAoeSA+PiAxNikgKyAobHN3ID4+IDE2KTtcbiAgICAgICAgICAgIHJldHVybiAobXN3IDw8IDE2KSB8IChsc3cgJiAweEZGRkYpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogQXJyYXlCdWZmZXIgc2xpY2UgcG9seWZpbGwuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90dGF1YmVydC9ub2RlLWFycmF5YnVmZmVyLXNsaWNlXG4gICAgICovXG5cbiAgICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiAhQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKSB7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBjbGFtcCh2YWwsIGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhbCA9ICh2YWwgfCAwKSB8fCAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHZhbCArIGxlbmd0aCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHZhbCwgbGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSBjbGFtcChmcm9tLCBsZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgICBlbmQgPSBsZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIG51bSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlQXJyYXk7XG5cbiAgICAgICAgICAgICAgICBpZiAodG8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBlbmQgPSBjbGFtcCh0bywgbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcigwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBudW0gPSBlbmQgLSBiZWdpbjtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBuZXcgQXJyYXlCdWZmZXIobnVtKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRBcnJheSA9IG5ldyBVaW50OEFycmF5KHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBzb3VyY2VBcnJheSA9IG5ldyBVaW50OEFycmF5KHRoaXMsIGJlZ2luLCBudW0pO1xuICAgICAgICAgICAgICAgIHRhcmdldEFycmF5LnNldChzb3VyY2VBcnJheSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlcnMuXG4gICAgICovXG5cbiAgICBmdW5jdGlvbiB0b1V0Zjgoc3RyKSB7XG4gICAgICAgIGlmICgvW1xcdTAwODAtXFx1RkZGRl0vLnRlc3Qoc3RyKSkge1xuICAgICAgICAgICAgc3RyID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1dGY4U3RyMkFycmF5QnVmZmVyKHN0ciwgcmV0dXJuVUludDhBcnJheSkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aCxcbiAgICAgICAgICAgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihsZW5ndGgpLFxuICAgICAgICAgICBhcnIgPSBuZXcgVWludDhBcnJheShidWZmKSxcbiAgICAgICAgICAgaTtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGFycltpXSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldHVyblVJbnQ4QXJyYXkgPyBhcnIgOiBidWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFycmF5QnVmZmVyMlV0ZjhTdHIoYnVmZikge1xuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDhBcnJheShidWZmKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29uY2F0ZW5hdGVBcnJheUJ1ZmZlcnMoZmlyc3QsIHNlY29uZCwgcmV0dXJuVUludDhBcnJheSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoZmlyc3QuYnl0ZUxlbmd0aCArIHNlY29uZC5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXN1bHQuc2V0KG5ldyBVaW50OEFycmF5KGZpcnN0KSk7XG4gICAgICAgIHJlc3VsdC5zZXQobmV3IFVpbnQ4QXJyYXkoc2Vjb25kKSwgZmlyc3QuYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIHJldHVyblVJbnQ4QXJyYXkgPyByZXN1bHQgOiByZXN1bHQuYnVmZmVyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhleFRvQmluYXJ5U3RyaW5nKGhleCkge1xuICAgICAgICB2YXIgYnl0ZXMgPSBbXSxcbiAgICAgICAgICAgIGxlbmd0aCA9IGhleC5sZW5ndGgsXG4gICAgICAgICAgICB4O1xuXG4gICAgICAgIGZvciAoeCA9IDA7IHggPCBsZW5ndGggLSAxOyB4ICs9IDIpIHtcbiAgICAgICAgICAgIGJ5dGVzLnB1c2gocGFyc2VJbnQoaGV4LnN1YnN0cih4LCAyKSwgMTYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgYnl0ZXMpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogU3BhcmtNRDUgT09QIGltcGxlbWVudGF0aW9uLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgY2xhc3MgdG8gcGVyZm9ybSBhbiBpbmNyZW1lbnRhbCBtZDUsIG90aGVyd2lzZSB1c2UgdGhlXG4gICAgICogc3RhdGljIG1ldGhvZHMgaW5zdGVhZC5cbiAgICAgKi9cblxuICAgIGZ1bmN0aW9uIFNwYXJrTUQ1KCkge1xuICAgICAgICAvLyBjYWxsIHJlc2V0IHRvIGluaXQgdGhlIGluc3RhbmNlXG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBlbmRzIGEgc3RyaW5nLlxuICAgICAqIEEgY29udmVyc2lvbiB3aWxsIGJlIGFwcGxpZWQgaWYgYW4gdXRmOCBzdHJpbmcgaXMgZGV0ZWN0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBzdHJpbmcgdG8gYmUgYXBwZW5kZWRcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1NwYXJrTUQ1fSBUaGUgaW5zdGFuY2UgaXRzZWxmXG4gICAgICovXG4gICAgU3BhcmtNRDUucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgLy8gQ29udmVydHMgdGhlIHN0cmluZyB0byB1dGY4IGJ5dGVzIGlmIG5lY2Vzc2FyeVxuICAgICAgICAvLyBUaGVuIGFwcGVuZCBhcyBiaW5hcnlcbiAgICAgICAgdGhpcy5hcHBlbmRCaW5hcnkodG9VdGY4KHN0cikpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBcHBlbmRzIGEgYmluYXJ5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb250ZW50cyBUaGUgYmluYXJ5IHN0cmluZyB0byBiZSBhcHBlbmRlZFxuICAgICAqXG4gICAgICogQHJldHVybiB7U3BhcmtNRDV9IFRoZSBpbnN0YW5jZSBpdHNlbGZcbiAgICAgKi9cbiAgICBTcGFya01ENS5wcm90b3R5cGUuYXBwZW5kQmluYXJ5ID0gZnVuY3Rpb24gKGNvbnRlbnRzKSB7XG4gICAgICAgIHRoaXMuX2J1ZmYgKz0gY29udGVudHM7XG4gICAgICAgIHRoaXMuX2xlbmd0aCArPSBjb250ZW50cy5sZW5ndGg7XG5cbiAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuX2J1ZmYubGVuZ3RoLFxuICAgICAgICAgICAgaTtcblxuICAgICAgICBmb3IgKGkgPSA2NDsgaSA8PSBsZW5ndGg7IGkgKz0gNjQpIHtcbiAgICAgICAgICAgIG1kNWN5Y2xlKHRoaXMuX2hhc2gsIG1kNWJsayh0aGlzLl9idWZmLnN1YnN0cmluZyhpIC0gNjQsIGkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9idWZmID0gdGhpcy5fYnVmZi5zdWJzdHJpbmcoaSAtIDY0KTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRmluaXNoZXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCByZXNldGluZyB0aGUgaW50ZXJuYWwgc3RhdGUgYW5kXG4gICAgICogcmV0dXJuaW5nIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHJhdyBUcnVlIHRvIGdldCB0aGUgcmF3IHN0cmluZywgZmFsc2UgdG8gZ2V0IHRoZSBoZXggc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFRoZSByZXN1bHRcbiAgICAgKi9cbiAgICBTcGFya01ENS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKHJhdykge1xuICAgICAgICB2YXIgYnVmZiA9IHRoaXMuX2J1ZmYsXG4gICAgICAgICAgICBsZW5ndGggPSBidWZmLmxlbmd0aCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICB0YWlsID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgcmV0O1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgdGFpbFtpID4+IDJdIHw9IGJ1ZmYuY2hhckNvZGVBdChpKSA8PCAoKGkgJSA0KSA8PCAzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpbmlzaCh0YWlsLCBsZW5ndGgpO1xuICAgICAgICByZXQgPSBoZXgodGhpcy5faGFzaCk7XG5cbiAgICAgICAgaWYgKHJhdykge1xuICAgICAgICAgICAgcmV0ID0gaGV4VG9CaW5hcnlTdHJpbmcocmV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzZXQoKTtcblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1NwYXJrTUQ1fSBUaGUgaW5zdGFuY2UgaXRzZWxmXG4gICAgICovXG4gICAgU3BhcmtNRDUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9idWZmID0gJyc7XG4gICAgICAgIHRoaXMuX2xlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX2hhc2ggPSBbMTczMjU4NDE5MywgLTI3MTczMzg3OSwgLTE3MzI1ODQxOTQsIDI3MTczMzg3OF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHN0YXRlXG4gICAgICovXG4gICAgU3BhcmtNRDUucHJvdG90eXBlLmdldFN0YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVmZjogdGhpcy5fYnVmZixcbiAgICAgICAgICAgIGxlbmd0aDogdGhpcy5fbGVuZ3RoLFxuICAgICAgICAgICAgaGFzaDogdGhpcy5faGFzaC5zbGljZSgpXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0ZSBUaGUgc3RhdGVcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1NwYXJrTUQ1fSBUaGUgaW5zdGFuY2UgaXRzZWxmXG4gICAgICovXG4gICAgU3BhcmtNRDUucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuX2J1ZmYgPSBzdGF0ZS5idWZmO1xuICAgICAgICB0aGlzLl9sZW5ndGggPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMuX2hhc2ggPSBzdGF0ZS5oYXNoO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZWxlYXNlcyBtZW1vcnkgdXNlZCBieSB0aGUgaW5jcmVtZW50YWwgYnVmZmVyIGFuZCBvdGhlciBhZGRpdGlvbmFsXG4gICAgICogcmVzb3VyY2VzLiBJZiB5b3UgcGxhbiB0byB1c2UgdGhlIGluc3RhbmNlIGFnYWluLCB1c2UgcmVzZXQgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBTcGFya01ENS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2hhc2g7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9idWZmO1xuICAgICAgICBkZWxldGUgdGhpcy5fbGVuZ3RoO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGaW5pc2ggdGhlIGZpbmFsIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHRoZSB0YWlsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gIHRhaWwgICBUaGUgdGFpbCAod2lsbCBiZSBtb2RpZmllZClcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHJlbWFpbmluZyBidWZmZXJcbiAgICAgKi9cbiAgICBTcGFya01ENS5wcm90b3R5cGUuX2ZpbmlzaCA9IGZ1bmN0aW9uICh0YWlsLCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGkgPSBsZW5ndGgsXG4gICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICBsbyxcbiAgICAgICAgICAgIGhpO1xuXG4gICAgICAgIHRhaWxbaSA+PiAyXSB8PSAweDgwIDw8ICgoaSAlIDQpIDw8IDMpO1xuICAgICAgICBpZiAoaSA+IDU1KSB7XG4gICAgICAgICAgICBtZDVjeWNsZSh0aGlzLl9oYXNoLCB0YWlsKTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgdGFpbFtpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEbyB0aGUgZmluYWwgY29tcHV0YXRpb24gYmFzZWQgb24gdGhlIHRhaWwgYW5kIGxlbmd0aFxuICAgICAgICAvLyBCZXdhcmUgdGhhdCB0aGUgZmluYWwgbGVuZ3RoIG1heSBub3QgZml0IGluIDMyIGJpdHMgc28gd2UgdGFrZSBjYXJlIG9mIHRoYXRcbiAgICAgICAgdG1wID0gdGhpcy5fbGVuZ3RoICogODtcbiAgICAgICAgdG1wID0gdG1wLnRvU3RyaW5nKDE2KS5tYXRjaCgvKC4qPykoLnswLDh9KSQvKTtcbiAgICAgICAgbG8gPSBwYXJzZUludCh0bXBbMl0sIDE2KTtcbiAgICAgICAgaGkgPSBwYXJzZUludCh0bXBbMV0sIDE2KSB8fCAwO1xuXG4gICAgICAgIHRhaWxbMTRdID0gbG87XG4gICAgICAgIHRhaWxbMTVdID0gaGk7XG4gICAgICAgIG1kNWN5Y2xlKHRoaXMuX2hhc2gsIHRhaWwpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgbWQ1IGhhc2ggb24gYSBzdHJpbmcuXG4gICAgICogQSBjb252ZXJzaW9uIHdpbGwgYmUgYXBwbGllZCBpZiB1dGY4IHN0cmluZyBpcyBkZXRlY3RlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSAgc3RyIFRoZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtyYXddIFRydWUgdG8gZ2V0IHRoZSByYXcgc3RyaW5nLCBmYWxzZSB0byBnZXQgdGhlIGhleCBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gVGhlIHJlc3VsdFxuICAgICAqL1xuICAgIFNwYXJrTUQ1Lmhhc2ggPSBmdW5jdGlvbiAoc3RyLCByYXcpIHtcbiAgICAgICAgLy8gQ29udmVydHMgdGhlIHN0cmluZyB0byB1dGY4IGJ5dGVzIGlmIG5lY2Vzc2FyeVxuICAgICAgICAvLyBUaGVuIGNvbXB1dGUgaXQgdXNpbmcgdGhlIGJpbmFyeSBmdW5jdGlvblxuICAgICAgICByZXR1cm4gU3BhcmtNRDUuaGFzaEJpbmFyeSh0b1V0Zjgoc3RyKSwgcmF3KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIG1kNSBoYXNoIG9uIGEgYmluYXJ5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSAgY29udGVudCBUaGUgYmluYXJ5IHN0cmluZ1xuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW3Jhd10gICAgIFRydWUgdG8gZ2V0IHRoZSByYXcgc3RyaW5nLCBmYWxzZSB0byBnZXQgdGhlIGhleCBzdHJpbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gVGhlIHJlc3VsdFxuICAgICAqL1xuICAgIFNwYXJrTUQ1Lmhhc2hCaW5hcnkgPSBmdW5jdGlvbiAoY29udGVudCwgcmF3KSB7XG4gICAgICAgIHZhciBoYXNoID0gbWQ1MShjb250ZW50KSxcbiAgICAgICAgICAgIHJldCA9IGhleChoYXNoKTtcblxuICAgICAgICByZXR1cm4gcmF3ID8gaGV4VG9CaW5hcnlTdHJpbmcocmV0KSA6IHJldDtcbiAgICB9O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBTcGFya01ENSBPT1AgaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IGJ1ZmZlcnMuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBjbGFzcyB0byBwZXJmb3JtIGFuIGluY3JlbWVudGFsIG1kNSBPTkxZIGZvciBhcnJheSBidWZmZXJzLlxuICAgICAqL1xuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBjYWxsIHJlc2V0IHRvIGluaXQgdGhlIGluc3RhbmNlXG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBhbiBhcnJheSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnIgVGhlIGFycmF5IHRvIGJlIGFwcGVuZGVkXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTcGFya01ENS5BcnJheUJ1ZmZlcn0gVGhlIGluc3RhbmNlIGl0c2VsZlxuICAgICAqL1xuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgICAgIHZhciBidWZmID0gY29uY2F0ZW5hdGVBcnJheUJ1ZmZlcnModGhpcy5fYnVmZi5idWZmZXIsIGFyciwgdHJ1ZSksXG4gICAgICAgICAgICBsZW5ndGggPSBidWZmLmxlbmd0aCxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgdGhpcy5fbGVuZ3RoICs9IGFyci5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIGZvciAoaSA9IDY0OyBpIDw9IGxlbmd0aDsgaSArPSA2NCkge1xuICAgICAgICAgICAgbWQ1Y3ljbGUodGhpcy5faGFzaCwgbWQ1YmxrX2FycmF5KGJ1ZmYuc3ViYXJyYXkoaSAtIDY0LCBpKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYnVmZiA9IChpIC0gNjQpIDwgbGVuZ3RoID8gbmV3IFVpbnQ4QXJyYXkoYnVmZi5idWZmZXIuc2xpY2UoaSAtIDY0KSkgOiBuZXcgVWludDhBcnJheSgwKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRmluaXNoZXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCByZXNldGluZyB0aGUgaW50ZXJuYWwgc3RhdGUgYW5kXG4gICAgICogcmV0dXJuaW5nIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHJhdyBUcnVlIHRvIGdldCB0aGUgcmF3IHN0cmluZywgZmFsc2UgdG8gZ2V0IHRoZSBoZXggc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFRoZSByZXN1bHRcbiAgICAgKi9cbiAgICBTcGFya01ENS5BcnJheUJ1ZmZlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKHJhdykge1xuICAgICAgICB2YXIgYnVmZiA9IHRoaXMuX2J1ZmYsXG4gICAgICAgICAgICBsZW5ndGggPSBidWZmLmxlbmd0aCxcbiAgICAgICAgICAgIHRhaWwgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcmV0O1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgdGFpbFtpID4+IDJdIHw9IGJ1ZmZbaV0gPDwgKChpICUgNCkgPDwgMyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9maW5pc2godGFpbCwgbGVuZ3RoKTtcbiAgICAgICAgcmV0ID0gaGV4KHRoaXMuX2hhc2gpO1xuXG4gICAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgICAgIHJldCA9IGhleFRvQmluYXJ5U3RyaW5nKHJldCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY29tcHV0YXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTcGFya01ENS5BcnJheUJ1ZmZlcn0gVGhlIGluc3RhbmNlIGl0c2VsZlxuICAgICAqL1xuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYnVmZiA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgICB0aGlzLl9sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLl9oYXNoID0gWzE3MzI1ODQxOTMsIC0yNzE3MzM4NzksIC0xNzMyNTg0MTk0LCAyNzE3MzM4NzhdO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY29tcHV0YXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBzdGF0ZVxuICAgICAqL1xuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyLnByb3RvdHlwZS5nZXRTdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gU3BhcmtNRDUucHJvdG90eXBlLmdldFN0YXRlLmNhbGwodGhpcyk7XG5cbiAgICAgICAgLy8gQ29udmVydCBidWZmZXIgdG8gYSBzdHJpbmdcbiAgICAgICAgc3RhdGUuYnVmZiA9IGFycmF5QnVmZmVyMlV0ZjhTdHIoc3RhdGUuYnVmZik7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY29tcHV0YXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgVGhlIHN0YXRlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTcGFya01ENS5BcnJheUJ1ZmZlcn0gVGhlIGluc3RhbmNlIGl0c2VsZlxuICAgICAqL1xuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBidWZmZXJcbiAgICAgICAgc3RhdGUuYnVmZiA9IHV0ZjhTdHIyQXJyYXlCdWZmZXIoc3RhdGUuYnVmZiwgdHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIFNwYXJrTUQ1LnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsIHN0YXRlKTtcbiAgICB9O1xuXG4gICAgU3BhcmtNRDUuQXJyYXlCdWZmZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBTcGFya01ENS5wcm90b3R5cGUuZGVzdHJveTtcblxuICAgIFNwYXJrTUQ1LkFycmF5QnVmZmVyLnByb3RvdHlwZS5fZmluaXNoID0gU3BhcmtNRDUucHJvdG90eXBlLl9maW5pc2g7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgbWQ1IGhhc2ggb24gYW4gYXJyYXkgYnVmZmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyIFRoZSBhcnJheSBidWZmZXJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59ICAgICBbcmF3XSBUcnVlIHRvIGdldCB0aGUgcmF3IHN0cmluZywgZmFsc2UgdG8gZ2V0IHRoZSBoZXggb25lXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFRoZSByZXN1bHRcbiAgICAgKi9cbiAgICBTcGFya01ENS5BcnJheUJ1ZmZlci5oYXNoID0gZnVuY3Rpb24gKGFyciwgcmF3KSB7XG4gICAgICAgIHZhciBoYXNoID0gbWQ1MV9hcnJheShuZXcgVWludDhBcnJheShhcnIpKSxcbiAgICAgICAgICAgIHJldCA9IGhleChoYXNoKTtcblxuICAgICAgICByZXR1cm4gcmF3ID8gaGV4VG9CaW5hcnlTdHJpbmcocmV0KSA6IHJldDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFNwYXJrTUQ1O1xufSkpO1xuIl0sIm5hbWVzIjpbImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiZ2xvYiIsIndpbmRvdyIsImUiLCJzZWxmIiwiU3BhcmtNRDUiLCJ1bmRlZmluZWQiLCJhZGQzMiIsImEiLCJiIiwiaGV4X2NociIsImNtbiIsInEiLCJ4IiwicyIsInQiLCJtZDVjeWNsZSIsImsiLCJjIiwiZCIsIm1kNWJsayIsIm1kNWJsa3MiLCJpIiwiY2hhckNvZGVBdCIsIm1kNWJsa19hcnJheSIsIm1kNTEiLCJuIiwibGVuZ3RoIiwic3RhdGUiLCJ0YWlsIiwidG1wIiwibG8iLCJoaSIsInN1YnN0cmluZyIsInRvU3RyaW5nIiwibWF0Y2giLCJwYXJzZUludCIsIm1kNTFfYXJyYXkiLCJzdWJhcnJheSIsIlVpbnQ4QXJyYXkiLCJyaGV4IiwiaiIsImhleCIsImpvaW4iLCJ5IiwibHN3IiwibXN3IiwiQXJyYXlCdWZmZXIiLCJwcm90b3R5cGUiLCJzbGljZSIsImNsYW1wIiwidmFsIiwiTWF0aCIsIm1heCIsIm1pbiIsImZyb20iLCJ0byIsImJ5dGVMZW5ndGgiLCJiZWdpbiIsImVuZCIsIm51bSIsInRhcmdldCIsInRhcmdldEFycmF5Iiwic291cmNlQXJyYXkiLCJzZXQiLCJ0b1V0ZjgiLCJzdHIiLCJ0ZXN0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1dGY4U3RyMkFycmF5QnVmZmVyIiwicmV0dXJuVUludDhBcnJheSIsImJ1ZmYiLCJhcnIiLCJhcnJheUJ1ZmZlcjJVdGY4U3RyIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYXBwbHkiLCJjb25jYXRlbmF0ZUFycmF5QnVmZmVycyIsImZpcnN0Iiwic2Vjb25kIiwicmVzdWx0IiwiYnVmZmVyIiwiaGV4VG9CaW5hcnlTdHJpbmciLCJieXRlcyIsInB1c2giLCJzdWJzdHIiLCJyZXNldCIsImFwcGVuZCIsImFwcGVuZEJpbmFyeSIsImNvbnRlbnRzIiwiX2J1ZmYiLCJfbGVuZ3RoIiwiX2hhc2giLCJyYXciLCJyZXQiLCJfZmluaXNoIiwiZ2V0U3RhdGUiLCJoYXNoIiwic2V0U3RhdGUiLCJkZXN0cm95IiwiaGFzaEJpbmFyeSIsImNvbnRlbnQiLCJjYWxsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/spark-md5/spark-md5.js\n");
/***/ }),
/***/ "(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js":
/*!***************************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/action-async-storage.external.js ***!
\***************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ actionAsyncStorage: () => (/* binding */ actionAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var _async_local_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./async-local-storage */ \"(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js\");\n\nconst actionAsyncStorage = (0,_async_local_storage__WEBPACK_IMPORTED_MODULE_0__.createAsyncLocalStorage)(); //# sourceMappingURL=action-async-storage.external.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNoYXJlZCkvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnRTtBQUN6RCxNQUFNQyxxQkFBcUJELDZFQUF1QkEsR0FBRyxDQUU1RCx5REFBeUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9lc20vY2xpZW50L2NvbXBvbmVudHMvYWN0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwuanM/OGRlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCIuL2FzeW5jLWxvY2FsLXN0b3JhZ2VcIjtcbmV4cG9ydCBjb25zdCBhY3Rpb25Bc3luY1N0b3JhZ2UgPSBjcmVhdGVBc3luY0xvY2FsU3RvcmFnZSgpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbC5qcy5tYXAiXSwibmFtZXMiOlsiY3JlYXRlQXN5bmNMb2NhbFN0b3JhZ2UiLCJhY3Rpb25Bc3luY1N0b3JhZ2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(shared)/./node_modules/next/dist/esm/client/components/action-async-storage.external.js\n");
/***/ }),
/***/ "(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js":
/*!*****************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/async-local-storage.js ***!
\*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAsyncLocalStorage: () => (/* binding */ createAsyncLocalStorage)\n/* harmony export */ });\nconst sharedAsyncLocalStorageNotAvailableError = new Error(\"Invariant: AsyncLocalStorage accessed in runtime where it is not available\");\nclass FakeAsyncLocalStorage {\n disable() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n getStore() {\n // This fake implementation of AsyncLocalStorage always returns `undefined`.\n return undefined;\n }\n run() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n exit() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n enterWith() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n}\nconst maybeGlobalAsyncLocalStorage = globalThis.AsyncLocalStorage;\nfunction createAsyncLocalStorage() {\n if (maybeGlobalAsyncLocalStorage) {\n return new maybeGlobalAsyncLocalStorage();\n }\n return new FakeAsyncLocalStorage();\n} //# sourceMappingURL=async-local-storage.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNoYXJlZCkvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9hc3luYy1sb2NhbC1zdG9yYWdlLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSwyQ0FBMkMsSUFBSUMsTUFBTTtBQUMzRCxNQUFNQztJQUNGQyxVQUFVO1FBQ04sTUFBTUg7SUFDVjtJQUNBSSxXQUFXO1FBQ1AsNEVBQTRFO1FBQzVFLE9BQU9DO0lBQ1g7SUFDQUMsTUFBTTtRQUNGLE1BQU1OO0lBQ1Y7SUFDQU8sT0FBTztRQUNILE1BQU1QO0lBQ1Y7SUFDQVEsWUFBWTtRQUNSLE1BQU1SO0lBQ1Y7QUFDSjtBQUNBLE1BQU1TLCtCQUErQkMsV0FBV0MsaUJBQWlCO0FBQzFELFNBQVNDO0lBQ1osSUFBSUgsOEJBQThCO1FBQzlCLE9BQU8sSUFBSUE7SUFDZjtJQUNBLE9BQU8sSUFBSVA7QUFDZixFQUVBLCtDQUErQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9hc3luYy1sb2NhbC1zdG9yYWdlLmpzP2I0MmYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2hhcmVkQXN5bmNMb2NhbFN0b3JhZ2VOb3RBdmFpbGFibGVFcnJvciA9IG5ldyBFcnJvcihcIkludmFyaWFudDogQXN5bmNMb2NhbFN0b3JhZ2UgYWNjZXNzZWQgaW4gcnVudGltZSB3aGVyZSBpdCBpcyBub3QgYXZhaWxhYmxlXCIpO1xuY2xhc3MgRmFrZUFzeW5jTG9jYWxTdG9yYWdlIHtcbiAgICBkaXNhYmxlKCkge1xuICAgICAgICB0aHJvdyBzaGFyZWRBc3luY0xvY2FsU3RvcmFnZU5vdEF2YWlsYWJsZUVycm9yO1xuICAgIH1cbiAgICBnZXRTdG9yZSgpIHtcbiAgICAgICAgLy8gVGhpcyBmYWtlIGltcGxlbWVudGF0aW9uIG9mIEFzeW5jTG9jYWxTdG9yYWdlIGFsd2F5cyByZXR1cm5zIGB1bmRlZmluZWRgLlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBydW4oKSB7XG4gICAgICAgIHRocm93IHNoYXJlZEFzeW5jTG9jYWxTdG9yYWdlTm90QXZhaWxhYmxlRXJyb3I7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRocm93IHNoYXJlZEFzeW5jTG9jYWxTdG9yYWdlTm90QXZhaWxhYmxlRXJyb3I7XG4gICAgfVxuICAgIGVudGVyV2l0aCgpIHtcbiAgICAgICAgdGhyb3cgc2hhcmVkQXN5bmNMb2NhbFN0b3JhZ2VOb3RBdmFpbGFibGVFcnJvcjtcbiAgICB9XG59XG5jb25zdCBtYXliZUdsb2JhbEFzeW5jTG9jYWxTdG9yYWdlID0gZ2xvYmFsVGhpcy5Bc3luY0xvY2FsU3RvcmFnZTtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBc3luY0xvY2FsU3RvcmFnZSgpIHtcbiAgICBpZiAobWF5YmVHbG9iYWxBc3luY0xvY2FsU3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gbmV3IG1heWJlR2xvYmFsQXN5bmNMb2NhbFN0b3JhZ2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGYWtlQXN5bmNMb2NhbFN0b3JhZ2UoKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXN5bmMtbG9jYWwtc3RvcmFnZS5qcy5tYXAiXSwibmFtZXMiOlsic2hhcmVkQXN5bmNMb2NhbFN0b3JhZ2VOb3RBdmFpbGFibGVFcnJvciIsIkVycm9yIiwiRmFrZUFzeW5jTG9jYWxTdG9yYWdlIiwiZGlzYWJsZSIsImdldFN0b3JlIiwidW5kZWZpbmVkIiwicnVuIiwiZXhpdCIsImVudGVyV2l0aCIsIm1heWJlR2xvYmFsQXN5bmNMb2NhbFN0b3JhZ2UiLCJnbG9iYWxUaGlzIiwiQXN5bmNMb2NhbFN0b3JhZ2UiLCJjcmVhdGVBc3luY0xvY2FsU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js\n");
/***/ }),
/***/ "(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js":
/*!****************************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/request-async-storage.external.js ***!
\****************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var _async_local_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./async-local-storage */ \"(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js\");\n\nconst requestAsyncStorage = (0,_async_local_storage__WEBPACK_IMPORTED_MODULE_0__.createAsyncLocalStorage)(); //# sourceMappingURL=request-async-storage.external.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNoYXJlZCkvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9yZXF1ZXN0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0U7QUFDekQsTUFBTUMsc0JBQXNCRCw2RUFBdUJBLEdBQUcsQ0FFN0QsMERBQTBEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvZXNtL2NsaWVudC9jb21wb25lbnRzL3JlcXVlc3QtYXN5bmMtc3RvcmFnZS5leHRlcm5hbC5qcz9iNzYyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcIi4vYXN5bmMtbG9jYWwtc3RvcmFnZVwiO1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RBc3luY1N0b3JhZ2UgPSBjcmVhdGVBc3luY0xvY2FsU3RvcmFnZSgpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwuanMubWFwIl0sIm5hbWVzIjpbImNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlIiwicmVxdWVzdEFzeW5jU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(shared)/./node_modules/next/dist/esm/client/components/request-async-storage.external.js\n");
/***/ }),
/***/ "(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js ***!
\**************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var _async_local_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./async-local-storage */ \"(shared)/./node_modules/next/dist/esm/client/components/async-local-storage.js\");\n\nconst staticGenerationAsyncStorage = (0,_async_local_storage__WEBPACK_IMPORTED_MODULE_0__.createAsyncLocalStorage)(); //# sourceMappingURL=static-generation-async-storage.external.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNoYXJlZCkvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdFO0FBQ3pELE1BQU1DLCtCQUErQkQsNkVBQXVCQSxHQUFHLENBRXRFLG9FQUFvRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2VzbS9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsLmpzPzAxMTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi9hc3luYy1sb2NhbC1zdG9yYWdlXCI7XG5leHBvcnQgY29uc3Qgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSA9IGNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlKCk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0YXRpYy1nZW5lcmF0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwuanMubWFwIl0sIm5hbWVzIjpbImNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlIiwic3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(shared)/./node_modules/next/dist/esm/client/components/static-generation-async-storage.external.js\n");
/***/ })
},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ var __webpack_exports__ = (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js?absolutePagePath=D%3A%5CNextChatCD%5Capp%5Capi%5Cconfig%5Croute.ts&page=%2Fapi%2Fconfig%2Froute&appDirLoader=bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGYXBpJTJGY29uZmlnJTJGcm91dGUmcGFnZT0lMkZhcGklMkZjb25maWclMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZjb25maWclMkZyb3V0ZS50cyZhcHBEaXI9RCUzQSU1Q05leHRDaGF0Q0QlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNOZXh0Q2hhdENEJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PXN0YW5kYWxvbmUmcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCE%3D&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!"));
/******/ (_ENTRIES = typeof _ENTRIES === "undefined" ? {} : _ENTRIES)["middleware_app/api/config/route"] = __webpack_exports__;
/******/ }
]);