diff --git "a/.next/static/chunks/app-pages-internals.js" "b/.next/static/chunks/app-pages-internals.js"
deleted file mode 100644--- "a/.next/static/chunks/app-pages-internals.js"
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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-pages-internals"],{
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!":
-/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false! ***!
- \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
-
-eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lMkZVc2VycyUyRmVuem8lMkZEZXNrdG9wJTJGZGV2ZWxvcG1lbnQlMkZoZi1mYXN0LWltYWdlLWdlbmVyYXRpb24lMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZhcHAtcm91dGVyLmpzJm1vZHVsZXM9JTJGVXNlcnMlMkZlbnpvJTJGRGVza3RvcCUyRmRldmVsb3BtZW50JTJGaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMmbW9kdWxlcz0lMkZVc2VycyUyRmVuem8lMkZEZXNrdG9wJTJGZGV2ZWxvcG1lbnQlMkZoZi1mYXN0LWltYWdlLWdlbmVyYXRpb24lMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJm1vZHVsZXM9JTJGVXNlcnMlMkZlbnpvJTJGRGVza3RvcCUyRmRldmVsb3BtZW50JTJGaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJm1vZHVsZXM9JTJGVXNlcnMlMkZlbnpvJTJGRGVza3RvcCUyRmRldmVsb3BtZW50JTJGaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyZtb2R1bGVzPSUyRlVzZXJzJTJGZW56byUyRkRlc2t0b3AlMkZkZXZlbG9wbWVudCUyRmhmLWZhc3QtaW1hZ2UtZ2VuZXJhdGlvbiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRnN0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzJnNlcnZlcj1mYWxzZSEiLCJtYXBwaW5ncyI6IkFBQUEsZ1BBQW9KO0FBQ3BKLHdQQUF3SjtBQUN4SixzUEFBdUo7QUFDdkosZ1FBQTRKO0FBQzVKLG9SQUFzSztBQUN0SyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzFjMjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZW56by9EZXNrdG9wL2RldmVsb3BtZW50L2hmLWZhc3QtaW1hZ2UtZ2VuZXJhdGlvbi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXIuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9lbnpvL0Rlc2t0b3AvZGV2ZWxvcG1lbnQvaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9lbnpvL0Rlc2t0b3AvZGV2ZWxvcG1lbnQvaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlci5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Vuem8vRGVza3RvcC9kZXZlbG9wbWVudC9oZi1mYXN0LWltYWdlLWdlbmVyYXRpb24vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtYm91bmRhcnkuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9lbnpvL0Rlc2t0b3AvZGV2ZWxvcG1lbnQvaGYtZmFzdC1pbWFnZS1nZW5lcmF0aW9uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Vuem8vRGVza3RvcC9kZXZlbG9wbWVudC9oZi1mYXN0LWltYWdlLWdlbmVyYXRpb24vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm92aWRlci5qc1wiKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/hooks-server-context.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/hooks-server-context.js ***!
- \**************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\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 DYNAMIC_ERROR_CODE: function() {\n return DYNAMIC_ERROR_CODE;\n },\n DynamicServerError: function() {\n return DynamicServerError;\n }\n});\nconst DYNAMIC_ERROR_CODE = \"DYNAMIC_SERVER_USAGE\";\nclass DynamicServerError extends Error {\n constructor(type){\n super(\"Dynamic server usage: \" + type);\n this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hooks-server-context.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FHTjtBQUNBLFNBQVNHLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlULE9BQU9DLGNBQWMsQ0FBQ08sUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTCxTQUFTO0lBQ2JHLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0lBQ0FDLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNRCxxQkFBcUI7QUFDM0IsTUFBTUMsMkJBQTJCTztJQUM3QkMsWUFBWUMsSUFBSSxDQUFDO1FBQ2IsS0FBSyxDQUFDLDJCQUEyQkE7UUFDakMsSUFBSSxDQUFDQyxNQUFNLEdBQUdYO0lBQ2xCO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT0gsUUFBUWUsT0FBTyxLQUFLLGNBQWUsT0FBT2YsUUFBUWUsT0FBTyxLQUFLLFlBQVlmLFFBQVFlLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2YsUUFBUWUsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2xCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWUsT0FBTyxFQUFFLGNBQWM7UUFBRWQsT0FBTztJQUFLO0lBQ25FSCxPQUFPbUIsTUFBTSxDQUFDakIsUUFBUWUsT0FBTyxFQUFFZjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFRZSxPQUFPO0FBQ2xDLEVBRUEsZ0RBQWdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaG9va3Mtc2VydmVyLWNvbnRleHQuanM/MDA5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIERZTkFNSUNfRVJST1JfQ09ERTogbnVsbCxcbiAgICBEeW5hbWljU2VydmVyRXJyb3I6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgRFlOQU1JQ19FUlJPUl9DT0RFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIERZTkFNSUNfRVJST1JfQ09ERTtcbiAgICB9LFxuICAgIER5bmFtaWNTZXJ2ZXJFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBEeW5hbWljU2VydmVyRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBEWU5BTUlDX0VSUk9SX0NPREUgPSBcIkRZTkFNSUNfU0VSVkVSX1VTQUdFXCI7XG5jbGFzcyBEeW5hbWljU2VydmVyRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IodHlwZSl7XG4gICAgICAgIHN1cGVyKFwiRHluYW1pYyBzZXJ2ZXIgdXNhZ2U6IFwiICsgdHlwZSk7XG4gICAgICAgIHRoaXMuZGlnZXN0ID0gRFlOQU1JQ19FUlJPUl9DT0RFO1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG9va3Mtc2VydmVyLWNvbnRleHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiRFlOQU1JQ19FUlJPUl9DT0RFIiwiRHluYW1pY1NlcnZlckVycm9yIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsInR5cGUiLCJkaWdlc3QiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/hooks-server-context.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/next/dist/client/components/layout-router.js ***!
- \*******************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return OuterLayoutRouter;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./router-reducer/fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _infinitepromise = __webpack_require__(/*! ./infinite-promise */ \"(app-pages-browser)/./node_modules/next/dist/client/components/infinite-promise.js\");\nconst _errorboundary = __webpack_require__(/*! ./error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _matchsegments = __webpack_require__(/*! ./match-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ../../shared/lib/router/utils/handle-smooth-scroll */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _notfoundboundary = __webpack_require__(/*! ./not-found-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js\");\nconst _getsegmentvalue = __webpack_require__(/*! ./router-reducer/reducers/get-segment-value */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./router-reducer/create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _createrecordfromthenable = __webpack_require__(/*! ./router-reducer/create-record-from-thenable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-record-from-thenable.js\");\n/**\n * Add refetch marker to router state at the point of the current layout segment.\n * This ensures the response returned is not further down than the current layout segment.\n */ function walkAddRefetch(segmentPathToWalk, treeToRecreate) {\n if (segmentPathToWalk) {\n const [segment, parallelRouteKey] = segmentPathToWalk;\n const isLast = segmentPathToWalk.length === 2;\n if ((0, _matchsegments.matchSegment)(treeToRecreate[0], segment)) {\n if (treeToRecreate[1].hasOwnProperty(parallelRouteKey)) {\n if (isLast) {\n const subTree = walkAddRefetch(undefined, treeToRecreate[1][parallelRouteKey]);\n return [\n treeToRecreate[0],\n {\n ...treeToRecreate[1],\n [parallelRouteKey]: [\n subTree[0],\n subTree[1],\n subTree[2],\n \"refetch\"\n ]\n }\n ];\n }\n return [\n treeToRecreate[0],\n {\n ...treeToRecreate[1],\n [parallelRouteKey]: walkAddRefetch(segmentPathToWalk.slice(2), treeToRecreate[1][parallelRouteKey])\n }\n ];\n }\n }\n }\n return treeToRecreate;\n}\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */ function findDOMNode(instance) {\n // Tree-shake for server bundle\n if (false) {}\n // Only apply strict mode warning when not in production\n if (true) {\n const originalConsoleError = console.error;\n try {\n console.error = function() {\n for(var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++){\n messages[_key] = arguments[_key];\n }\n // Ignore strict mode warning for the findDomNode call below\n if (!messages[0].includes(\"Warning: %s is deprecated in StrictMode.\")) {\n originalConsoleError(...messages);\n }\n };\n return _reactdom.default.findDOMNode(instance);\n } finally{\n console.error = originalConsoleError;\n }\n }\n return _reactdom.default.findDOMNode(instance);\n}\nconst rectProperties = [\n \"bottom\",\n \"height\",\n \"left\",\n \"right\",\n \"top\",\n \"width\",\n \"x\",\n \"y\"\n];\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */ function shouldSkipElement(element) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if ([\n \"sticky\",\n \"fixed\"\n ].includes(getComputedStyle(element).position)) {\n if (true) {\n console.warn(\"Skipping auto-scroll behavior due to `position: sticky` or `position: fixed` on element:\", element);\n }\n return true;\n }\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect();\n return rectProperties.every((item)=>rect[item] === 0);\n}\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */ function topOfElementInViewport(element, viewportHeight) {\n const rect = element.getBoundingClientRect();\n return rect.top >= 0 && rect.top <= viewportHeight;\n}\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */ function getHashFragmentDomNode(hashFragment) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === \"top\") {\n return document.body;\n }\n var _document_getElementById;\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (_document_getElementById = document.getElementById(hashFragment)) != null ? _document_getElementById : document.getElementsByName(hashFragment)[0];\n}\nclass InnerScrollAndFocusHandler extends _react.default.Component {\n componentDidMount() {\n this.handlePotentialScroll();\n }\n componentDidUpdate() {\n // Because this property is overwritten in handlePotentialScroll it's fine to always run it when true as it'll be set to false for subsequent renders.\n if (this.props.focusAndScrollRef.apply) {\n this.handlePotentialScroll();\n }\n }\n render() {\n return this.props.children;\n }\n constructor(...args){\n super(...args);\n this.handlePotentialScroll = ()=>{\n // Handle scroll and focus, it's only applied once in the first useEffect that triggers that changed.\n const { focusAndScrollRef, segmentPath } = this.props;\n if (focusAndScrollRef.apply) {\n // segmentPaths is an array of segment paths that should be scrolled to\n // if the current segment path is not in the array, the scroll is not applied\n // unless the array is empty, in which case the scroll is always applied\n if (focusAndScrollRef.segmentPaths.length !== 0 && !focusAndScrollRef.segmentPaths.some((scrollRefSegmentPath)=>segmentPath.every((segment, index)=>(0, _matchsegments.matchSegment)(segment, scrollRefSegmentPath[index])))) {\n return;\n }\n let domNode = null;\n const hashFragment = focusAndScrollRef.hashFragment;\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment);\n }\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a in head.\n if (!domNode) {\n domNode = findDOMNode(this);\n }\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return;\n }\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while(!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)){\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return;\n }\n domNode = domNode.nextElementSibling;\n }\n // State is mutated to ensure that the focus and scroll is applied only once.\n focusAndScrollRef.apply = false;\n focusAndScrollRef.hashFragment = null;\n focusAndScrollRef.segmentPaths = [];\n (0, _handlesmoothscroll.handleSmoothScroll)(()=>{\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView();\n return;\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement;\n const viewportHeight = htmlElement.clientHeight;\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return;\n }\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `
` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0;\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n domNode.scrollIntoView();\n }\n }, {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange\n });\n // Mutate after scrolling so that it can be read by `handleSmoothScroll`\n focusAndScrollRef.onlyHashChange = false;\n // Set focus on the element\n domNode.focus();\n }\n };\n }\n}\nfunction ScrollAndFocusHandler(param) {\n let { segmentPath, children } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n if (!context) {\n throw new Error(\"invariant global layout router not mounted\");\n }\n return /*#__PURE__*/ _react.default.createElement(InnerScrollAndFocusHandler, {\n segmentPath: segmentPath,\n focusAndScrollRef: context.focusAndScrollRef\n }, children);\n}\n_c = ScrollAndFocusHandler;\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */ function InnerLayoutRouter(param) {\n let { parallelRouterKey, url, childNodes, childProp, segmentPath, tree, // isActive,\n cacheKey } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n if (!context) {\n throw new Error(\"invariant global layout router not mounted\");\n }\n const { buildId, changeByServerResponse, tree: fullTree } = context;\n // Read segment path from the parallel router cache node.\n let childNode = childNodes.get(cacheKey);\n // If childProp is available this means it's the Flight / SSR case.\n if (childProp && // TODO-APP: verify if this can be null based on user code\n childProp.current !== null) {\n if (!childNode) {\n // Add the segment's subTreeData to the cache.\n // This writes to the cache when there is no item in the cache yet. It never *overwrites* existing cache items which is why it's safe in concurrent mode.\n childNode = {\n status: _approutercontextsharedruntime.CacheStates.READY,\n data: null,\n subTreeData: childProp.current,\n parallelRoutes: new Map()\n };\n childNodes.set(cacheKey, childNode);\n } else {\n if (childNode.status === _approutercontextsharedruntime.CacheStates.LAZY_INITIALIZED) {\n // @ts-expect-error we're changing it's type!\n childNode.status = _approutercontextsharedruntime.CacheStates.READY;\n // @ts-expect-error\n childNode.subTreeData = childProp.current;\n }\n }\n }\n // When childNode is not available during rendering client-side we need to fetch it from the server.\n if (!childNode || childNode.status === _approutercontextsharedruntime.CacheStates.LAZY_INITIALIZED) {\n /**\n * Router state with refetch marker added\n */ // TODO-APP: remove ''\n const refetchTree = walkAddRefetch([\n \"\",\n ...segmentPath\n ], fullTree);\n childNode = {\n status: _approutercontextsharedruntime.CacheStates.DATA_FETCH,\n data: (0, _createrecordfromthenable.createRecordFromThenable)((0, _fetchserverresponse.fetchServerResponse)(new URL(url, location.origin), refetchTree, context.nextUrl, buildId)),\n subTreeData: null,\n head: childNode && childNode.status === _approutercontextsharedruntime.CacheStates.LAZY_INITIALIZED ? childNode.head : undefined,\n parallelRoutes: childNode && childNode.status === _approutercontextsharedruntime.CacheStates.LAZY_INITIALIZED ? childNode.parallelRoutes : new Map()\n };\n /**\n * Flight data fetch kicked off during render and put into the cache.\n */ childNodes.set(cacheKey, childNode);\n }\n // This case should never happen so it throws an error. It indicates there's a bug in the Next.js.\n if (!childNode) {\n throw new Error(\"Child node should always exist\");\n }\n // This case should never happen so it throws an error. It indicates there's a bug in the Next.js.\n if (childNode.subTreeData && childNode.data) {\n throw new Error(\"Child node should not have both subTreeData and data\");\n }\n // If cache node has a data request we have to unwrap response by `use` and update the cache.\n if (childNode.data) {\n /**\n * Flight response data\n */ // When the data has not resolved yet `use` will suspend here.\n const [flightData, overrideCanonicalUrl] = (0, _react.use)(childNode.data);\n // segmentPath from the server does not match the layout's segmentPath\n childNode.data = null;\n // setTimeout is used to start a new transition during render, this is an intentional hack around React.\n setTimeout(()=>{\n (0, _react.startTransition)(()=>{\n changeByServerResponse(fullTree, flightData, overrideCanonicalUrl);\n });\n });\n // Suspend infinitely as `changeByServerResponse` will cause a different part of the tree to be rendered.\n (0, _react.use)((0, _infinitepromise.createInfinitePromise)());\n }\n // If cache node has no subTreeData and no data request we have to infinitely suspend as the data will likely flow in from another place.\n // TODO-APP: double check users can't return null in a component that will kick in here.\n if (!childNode.subTreeData) {\n (0, _react.use)((0, _infinitepromise.createInfinitePromise)());\n }\n const subtree = /*#__PURE__*/ _react.default.createElement(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: {\n tree: tree[1][parallelRouterKey],\n childNodes: childNode.parallelRoutes,\n // TODO-APP: overriding of url for parallel routes\n url: url\n }\n }, childNode.subTreeData);\n // Ensure root layout is not wrapped in a div as the root layout renders ``\n return subtree;\n}\n_c1 = InnerLayoutRouter;\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */ function LoadingBoundary(param) {\n let { children, loading, loadingStyles, hasLoading } = param;\n if (hasLoading) {\n return /*#__PURE__*/ _react.default.createElement(_react.Suspense, {\n fallback: /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, loadingStyles, loading)\n }, children);\n }\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children);\n}\n_c2 = LoadingBoundary;\nfunction OuterLayoutRouter(param) {\n let { parallelRouterKey, segmentPath, childProp, error, errorStyles, templateStyles, loading, loadingStyles, hasLoading, template, notFound, notFoundStyles, styles } = param;\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n if (!context) {\n throw new Error(\"invariant expected layout router to be mounted\");\n }\n const { childNodes, tree, url } = context;\n // Get the current parallelRouter cache node\n let childNodesForParallelRouter = childNodes.get(parallelRouterKey);\n // If the parallel router cache node does not exist yet, create it.\n // This writes to the cache when there is no item in the cache yet. It never *overwrites* existing cache items which is why it's safe in concurrent mode.\n if (!childNodesForParallelRouter) {\n childNodesForParallelRouter = new Map();\n childNodes.set(parallelRouterKey, childNodesForParallelRouter);\n }\n // Get the active segment in the tree\n // The reason arrays are used in the data format is that these are transferred from the server to the browser so it's optimized to save bytes.\n const treeSegment = tree[1][parallelRouterKey][0];\n const childPropSegment = childProp.segment;\n // If segment is an array it's a dynamic route and we want to read the dynamic route value as the segment to get from the cache.\n const currentChildSegmentValue = (0, _getsegmentvalue.getSegmentValue)(treeSegment);\n /**\n * Decides which segments to keep rendering, all segments that are not active will be wrapped in ``.\n */ // TODO-APP: Add handling of `` when it's available.\n const preservedSegments = [\n treeSegment\n ];\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, styles, preservedSegments.map((preservedSegment)=>{\n const isChildPropSegment = (0, _matchsegments.matchSegment)(preservedSegment, childPropSegment);\n const preservedSegmentValue = (0, _getsegmentvalue.getSegmentValue)(preservedSegment);\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(preservedSegment);\n return(/*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */ /*#__PURE__*/ _react.default.createElement(_approutercontextsharedruntime.TemplateContext.Provider, {\n key: (0, _createroutercachekey.createRouterCacheKey)(preservedSegment, true),\n value: /*#__PURE__*/ _react.default.createElement(ScrollAndFocusHandler, {\n segmentPath: segmentPath\n }, /*#__PURE__*/ _react.default.createElement(_errorboundary.ErrorBoundary, {\n errorComponent: error,\n errorStyles: errorStyles\n }, /*#__PURE__*/ _react.default.createElement(LoadingBoundary, {\n hasLoading: hasLoading,\n loading: loading,\n loadingStyles: loadingStyles\n }, /*#__PURE__*/ _react.default.createElement(_notfoundboundary.NotFoundBoundary, {\n notFound: notFound,\n notFoundStyles: notFoundStyles\n }, /*#__PURE__*/ _react.default.createElement(_redirectboundary.RedirectBoundary, null, /*#__PURE__*/ _react.default.createElement(InnerLayoutRouter, {\n parallelRouterKey: parallelRouterKey,\n url: url,\n tree: tree,\n childNodes: childNodesForParallelRouter,\n childProp: isChildPropSegment ? childProp : null,\n segmentPath: segmentPath,\n cacheKey: cacheKey,\n isActive: currentChildSegmentValue === preservedSegmentValue\n }))))))\n }, templateStyles, template));\n }));\n}\n_c3 = OuterLayoutRouter;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=layout-router.js.map\nvar _c, _c1, _c2, _c3;\n$RefreshReg$(_c, \"ScrollAndFocusHandler\");\n$RefreshReg$(_c1, \"InnerLayoutRouter\");\n$RefreshReg$(_c2, \"LoadingBoundary\");\n$RefreshReg$(_c3, \"OuterLayoutRouter\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlci5qcyIsIm1hcHBpbmdzIjoicURBRWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUdlO0lBQ1hJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLGdJQUF5QztBQUNsRixNQUFNQyw0QkFBNEJELG1CQUFPQSxDQUFDLGtJQUEwQztBQUNwRixNQUFNRSxTQUFTLFdBQVcsR0FBR0QsMEJBQTBCRSxDQUFDLENBQUNILG1CQUFPQSxDQUFDLG1GQUFPO0FBQ3hFLE1BQU1JLFlBQVksV0FBVyxHQUFHTCx5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsMkZBQVc7QUFDOUUsTUFBTUssaUNBQWlDTCxtQkFBT0EsQ0FBQyx3SkFBb0Q7QUFDbkcsTUFBTU0sdUJBQXVCTixtQkFBT0EsQ0FBQyxzSkFBd0M7QUFDN0UsTUFBTU8sbUJBQW1CUCxtQkFBT0EsQ0FBQyw4R0FBb0I7QUFDckQsTUFBTVEsaUJBQWlCUixtQkFBT0EsQ0FBQywwR0FBa0I7QUFDakQsTUFBTVMsaUJBQWlCVCxtQkFBT0EsQ0FBQywwR0FBa0I7QUFDakQsTUFBTVUsc0JBQXNCVixtQkFBT0EsQ0FBQyx3SkFBb0Q7QUFDeEYsTUFBTVcsb0JBQW9CWCxtQkFBT0EsQ0FBQyxnSEFBcUI7QUFDdkQsTUFBTVksb0JBQW9CWixtQkFBT0EsQ0FBQyxrSEFBc0I7QUFDeEQsTUFBTWEsbUJBQW1CYixtQkFBT0EsQ0FBQyxnS0FBNkM7QUFDOUUsTUFBTWMsd0JBQXdCZCxtQkFBT0EsQ0FBQywwSkFBMEM7QUFDaEYsTUFBTWUsNEJBQTRCZixtQkFBT0EsQ0FBQyxrS0FBOEM7QUFDeEY7OztDQUdDLEdBQUcsU0FBU2dCLGVBQWVDLGlCQUFpQixFQUFFQyxjQUFjO0lBQ3pELElBQUlELG1CQUFtQjtRQUNuQixNQUFNLENBQUNFLFNBQVNDLGlCQUFpQixHQUFHSDtRQUNwQyxNQUFNSSxTQUFTSixrQkFBa0JLLE1BQU0sS0FBSztRQUM1QyxJQUFJLENBQUMsR0FBR2IsZUFBZWMsWUFBWSxFQUFFTCxjQUFjLENBQUMsRUFBRSxFQUFFQyxVQUFVO1lBQzlELElBQUlELGNBQWMsQ0FBQyxFQUFFLENBQUNNLGNBQWMsQ0FBQ0osbUJBQW1CO2dCQUNwRCxJQUFJQyxRQUFRO29CQUNSLE1BQU1JLFVBQVVULGVBQWVVLFdBQVdSLGNBQWMsQ0FBQyxFQUFFLENBQUNFLGlCQUFpQjtvQkFDN0UsT0FBTzt3QkFDSEYsY0FBYyxDQUFDLEVBQUU7d0JBQ2pCOzRCQUNJLEdBQUdBLGNBQWMsQ0FBQyxFQUFFOzRCQUNwQixDQUFDRSxpQkFBaUIsRUFBRTtnQ0FDaEJLLE9BQU8sQ0FBQyxFQUFFO2dDQUNWQSxPQUFPLENBQUMsRUFBRTtnQ0FDVkEsT0FBTyxDQUFDLEVBQUU7Z0NBQ1Y7NkJBQ0g7d0JBQ0w7cUJBQ0g7Z0JBQ0w7Z0JBQ0EsT0FBTztvQkFDSFAsY0FBYyxDQUFDLEVBQUU7b0JBQ2pCO3dCQUNJLEdBQUdBLGNBQWMsQ0FBQyxFQUFFO3dCQUNwQixDQUFDRSxpQkFBaUIsRUFBRUosZUFBZUMsa0JBQWtCVSxLQUFLLENBQUMsSUFBSVQsY0FBYyxDQUFDLEVBQUUsQ0FBQ0UsaUJBQWlCO29CQUN0RztpQkFDSDtZQUNMO1FBQ0o7SUFDSjtJQUNBLE9BQU9GO0FBQ1g7QUFDQSw0RkFBNEY7QUFDNUY7O0NBRUMsR0FBRyxTQUFTVSxZQUFZQyxRQUFRO0lBQzdCLCtCQUErQjtJQUMvQixJQUFJLEtBQTZCLEVBQUUsRUFBWTtJQUMvQyx3REFBd0Q7SUFDeEQsSUFBSUMsSUFBcUMsRUFBRTtRQUN2QyxNQUFNQyx1QkFBdUJDLFFBQVFDLEtBQUs7UUFDMUMsSUFBSTtZQUNBRCxRQUFRQyxLQUFLLEdBQUc7Z0JBQ1osSUFBSSxJQUFJQyxPQUFPQyxVQUFVYixNQUFNLEVBQUVjLFdBQVcsSUFBSUMsTUFBTUgsT0FBT0ksT0FBTyxHQUFHQSxPQUFPSixNQUFNSSxPQUFPO29CQUN2RkYsUUFBUSxDQUFDRSxLQUFLLEdBQUdILFNBQVMsQ0FBQ0csS0FBSztnQkFDcEM7Z0JBQ0EsNERBQTREO2dCQUM1RCxJQUFJLENBQUNGLFFBQVEsQ0FBQyxFQUFFLENBQUNHLFFBQVEsQ0FBQyw2Q0FBNkM7b0JBQ25FUix3QkFBd0JLO2dCQUM1QjtZQUNKO1lBQ0EsT0FBT2hDLFVBQVVvQyxPQUFPLENBQUNaLFdBQVcsQ0FBQ0M7UUFDekMsU0FBUztZQUNMRyxRQUFRQyxLQUFLLEdBQUdGO1FBQ3BCO0lBQ0o7SUFDQSxPQUFPM0IsVUFBVW9DLE9BQU8sQ0FBQ1osV0FBVyxDQUFDQztBQUN6QztBQUNBLE1BQU1ZLGlCQUFpQjtJQUNuQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0g7QUFDRDs7Q0FFQyxHQUFHLFNBQVNDLGtCQUFrQkMsT0FBTztJQUNsQyxrR0FBa0c7SUFDbEcsMEZBQTBGO0lBQzFGLG1EQUFtRDtJQUNuRCxJQUFJO1FBQ0E7UUFDQTtLQUNILENBQUNKLFFBQVEsQ0FBQ0ssaUJBQWlCRCxTQUFTRSxRQUFRLEdBQUc7UUFDNUMsSUFBSWYsSUFBc0MsRUFBRTtZQUN4Q0UsUUFBUWMsSUFBSSxDQUFDLDRGQUE0Rkg7UUFDN0c7UUFDQSxPQUFPO0lBQ1g7SUFDQSwyRkFBMkY7SUFDM0Ysd0RBQXdEO0lBQ3hELE1BQU1JLE9BQU9KLFFBQVFLLHFCQUFxQjtJQUMxQyxPQUFPUCxlQUFlUSxLQUFLLENBQUMsQ0FBQ0MsT0FBT0gsSUFBSSxDQUFDRyxLQUFLLEtBQUs7QUFDdkQ7QUFDQTs7Q0FFQyxHQUFHLFNBQVNDLHVCQUF1QlIsT0FBTyxFQUFFUyxjQUFjO0lBQ3ZELE1BQU1MLE9BQU9KLFFBQVFLLHFCQUFxQjtJQUMxQyxPQUFPRCxLQUFLTSxHQUFHLElBQUksS0FBS04sS0FBS00sR0FBRyxJQUFJRDtBQUN4QztBQUNBOzs7OztDQUtDLEdBQUcsU0FBU0UsdUJBQXVCQyxZQUFZO0lBQzVDLCtFQUErRTtJQUMvRSxJQUFJQSxpQkFBaUIsT0FBTztRQUN4QixPQUFPQyxTQUFTQyxJQUFJO0lBQ3hCO0lBQ0EsSUFBSUM7SUFDSixxRkFBcUY7SUFDckYsT0FBTyxDQUFDQSwyQkFBMkJGLFNBQVNHLGNBQWMsQ0FBQ0osYUFBWSxLQUFNLE9BQU9HLDJCQUNwRkYsU0FBU0ksaUJBQWlCLENBQUNMLGFBQWEsQ0FBQyxFQUFFO0FBQy9DO0FBQ0EsTUFBTU0sbUNBQW1DM0QsT0FBT3NDLE9BQU8sQ0FBQ3NCLFNBQVM7SUFDN0RDLG9CQUFvQjtRQUNoQixJQUFJLENBQUNDLHFCQUFxQjtJQUM5QjtJQUNBQyxxQkFBcUI7UUFDakIsc0pBQXNKO1FBQ3RKLElBQUksSUFBSSxDQUFDQyxLQUFLLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLEVBQUU7WUFDcEMsSUFBSSxDQUFDSixxQkFBcUI7UUFDOUI7SUFDSjtJQUNBSyxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUNILEtBQUssQ0FBQ0ksUUFBUTtJQUM5QjtJQUNBQyxZQUFZLEdBQUdDLElBQUksQ0FBQztRQUNoQixLQUFLLElBQUlBO1FBQ1QsSUFBSSxDQUFDUixxQkFBcUIsR0FBRztZQUN6QixxR0FBcUc7WUFDckcsTUFBTSxFQUFFRyxpQkFBaUIsRUFBRU0sV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDUCxLQUFLO1lBQ3JELElBQUlDLGtCQUFrQkMsS0FBSyxFQUFFO2dCQUN6Qix1RUFBdUU7Z0JBQ3ZFLDZFQUE2RTtnQkFDN0Usd0VBQXdFO2dCQUN4RSxJQUFJRCxrQkFBa0JPLFlBQVksQ0FBQ3BELE1BQU0sS0FBSyxLQUFLLENBQUM2QyxrQkFBa0JPLFlBQVksQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLHVCQUF1QkgsWUFBWXhCLEtBQUssQ0FBQyxDQUFDOUIsU0FBUzBELFFBQVEsQ0FBQyxHQUFHcEUsZUFBZWMsWUFBWSxFQUFFSixTQUFTeUQsb0JBQW9CLENBQUNDLE1BQU0sS0FBSztvQkFDMU47Z0JBQ0o7Z0JBQ0EsSUFBSUMsVUFBVTtnQkFDZCxNQUFNdkIsZUFBZVksa0JBQWtCWixZQUFZO2dCQUNuRCxJQUFJQSxjQUFjO29CQUNkdUIsVUFBVXhCLHVCQUF1QkM7Z0JBQ3JDO2dCQUNBLGtHQUFrRztnQkFDbEcseUVBQXlFO2dCQUN6RSxJQUFJLENBQUN1QixTQUFTO29CQUNWQSxVQUFVbEQsWUFBWSxJQUFJO2dCQUM5QjtnQkFDQSx1R0FBdUc7Z0JBQ3ZHLElBQUksQ0FBRWtELENBQUFBLG1CQUFtQkMsT0FBTSxHQUFJO29CQUMvQjtnQkFDSjtnQkFDQSw0RkFBNEY7Z0JBQzVGLDJFQUEyRTtnQkFDM0UsTUFBTSxDQUFFRCxDQUFBQSxtQkFBbUJFLFdBQVUsS0FBTXRDLGtCQUFrQm9DLFNBQVM7b0JBQ2xFLHVHQUF1RztvQkFDdkcsSUFBSUEsUUFBUUcsa0JBQWtCLEtBQUssTUFBTTt3QkFDckM7b0JBQ0o7b0JBQ0FILFVBQVVBLFFBQVFHLGtCQUFrQjtnQkFDeEM7Z0JBQ0EsNkVBQTZFO2dCQUM3RWQsa0JBQWtCQyxLQUFLLEdBQUc7Z0JBQzFCRCxrQkFBa0JaLFlBQVksR0FBRztnQkFDakNZLGtCQUFrQk8sWUFBWSxHQUFHLEVBQUU7Z0JBQ2xDLElBQUdoRSxvQkFBb0J3RSxrQkFBa0IsRUFBRTtvQkFDeEMsdUVBQXVFO29CQUN2RSxJQUFJM0IsY0FBYzt3QkFDZHVCLFFBQVFLLGNBQWM7d0JBQ3RCO29CQUNKO29CQUNBLG9GQUFvRjtvQkFDcEYsNENBQTRDO29CQUM1QyxNQUFNQyxjQUFjNUIsU0FBUzZCLGVBQWU7b0JBQzVDLE1BQU1qQyxpQkFBaUJnQyxZQUFZRSxZQUFZO29CQUMvQyxvRUFBb0U7b0JBQ3BFLElBQUluQyx1QkFBdUIyQixTQUFTMUIsaUJBQWlCO3dCQUNqRDtvQkFDSjtvQkFDQSwyRkFBMkY7b0JBQzNGLGtIQUFrSDtvQkFDbEgscUhBQXFIO29CQUNySCw2SEFBNkg7b0JBQzdIZ0MsWUFBWUcsU0FBUyxHQUFHO29CQUN4QixtRkFBbUY7b0JBQ25GLElBQUksQ0FBQ3BDLHVCQUF1QjJCLFNBQVMxQixpQkFBaUI7d0JBQ2xEMEIsUUFBUUssY0FBYztvQkFDMUI7Z0JBQ0osR0FBRztvQkFDQyxvREFBb0Q7b0JBQ3BESyxpQkFBaUI7b0JBQ2pCQyxnQkFBZ0J0QixrQkFBa0JzQixjQUFjO2dCQUNwRDtnQkFDQSx3RUFBd0U7Z0JBQ3hFdEIsa0JBQWtCc0IsY0FBYyxHQUFHO2dCQUNuQywyQkFBMkI7Z0JBQzNCWCxRQUFRWSxLQUFLO1lBQ2pCO1FBQ0o7SUFDSjtBQUNKO0FBQ0EsU0FBU0Msc0JBQXNCQyxLQUFLO0lBQ2hDLElBQUksRUFBRW5CLFdBQVcsRUFBRUgsUUFBUSxFQUFFLEdBQUdzQjtJQUNoQyxNQUFNQyxVQUFVLENBQUMsR0FBRzNGLE9BQU80RixVQUFVLEVBQUV6RiwrQkFBK0IwRix5QkFBeUI7SUFDL0YsSUFBSSxDQUFDRixTQUFTO1FBQ1YsTUFBTSxJQUFJRyxNQUFNO0lBQ3BCO0lBQ0EsT0FBTyxXQUFXLEdBQUc5RixPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDcEMsNEJBQTRCO1FBQzFFWSxhQUFhQTtRQUNiTixtQkFBbUIwQixRQUFRMUIsaUJBQWlCO0lBQ2hELEdBQUdHO0FBQ1A7S0FWU3FCO0FBV1Q7O0NBRUMsR0FBRyxTQUFTTyxrQkFBa0JOLEtBQUs7SUFDaEMsSUFBSSxFQUFFTyxpQkFBaUIsRUFBRUMsR0FBRyxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRTdCLFdBQVcsRUFBRThCLElBQUksRUFDdEUsWUFBWTtJQUNaQyxRQUFRLEVBQUUsR0FBR1o7SUFDYixNQUFNQyxVQUFVLENBQUMsR0FBRzNGLE9BQU80RixVQUFVLEVBQUV6RiwrQkFBK0IwRix5QkFBeUI7SUFDL0YsSUFBSSxDQUFDRixTQUFTO1FBQ1YsTUFBTSxJQUFJRyxNQUFNO0lBQ3BCO0lBQ0EsTUFBTSxFQUFFUyxPQUFPLEVBQUVDLHNCQUFzQixFQUFFSCxNQUFNSSxRQUFRLEVBQUUsR0FBR2Q7SUFDNUQseURBQXlEO0lBQ3pELElBQUllLFlBQVlQLFdBQVd4RyxHQUFHLENBQUMyRztJQUMvQixtRUFBbUU7SUFDbkUsSUFBSUYsYUFBYSwwREFBMEQ7SUFDM0VBLFVBQVVPLE9BQU8sS0FBSyxNQUFNO1FBQ3hCLElBQUksQ0FBQ0QsV0FBVztZQUNaLDhDQUE4QztZQUM5Qyx5SkFBeUo7WUFDekpBLFlBQVk7Z0JBQ1JFLFFBQVF6RywrQkFBK0IwRyxXQUFXLENBQUNDLEtBQUs7Z0JBQ3hEQyxNQUFNO2dCQUNOQyxhQUFhWixVQUFVTyxPQUFPO2dCQUM5Qk0sZ0JBQWdCLElBQUlDO1lBQ3hCO1lBQ0FmLFdBQVdnQixHQUFHLENBQUNiLFVBQVVJO1FBQzdCLE9BQU87WUFDSCxJQUFJQSxVQUFVRSxNQUFNLEtBQUt6RywrQkFBK0IwRyxXQUFXLENBQUNPLGdCQUFnQixFQUFFO2dCQUNsRiw2Q0FBNkM7Z0JBQzdDVixVQUFVRSxNQUFNLEdBQUd6RywrQkFBK0IwRyxXQUFXLENBQUNDLEtBQUs7Z0JBQ25FLG1CQUFtQjtnQkFDbkJKLFVBQVVNLFdBQVcsR0FBR1osVUFBVU8sT0FBTztZQUM3QztRQUNKO0lBQ0o7SUFDQSxvR0FBb0c7SUFDcEcsSUFBSSxDQUFDRCxhQUFhQSxVQUFVRSxNQUFNLEtBQUt6RywrQkFBK0IwRyxXQUFXLENBQUNPLGdCQUFnQixFQUFFO1FBQ2hHOztLQUVILEdBQUcsc0JBQXNCO1FBQ3RCLE1BQU1DLGNBQWN2RyxlQUFlO1lBQy9CO2VBQ0d5RDtTQUNOLEVBQUVrQztRQUNIQyxZQUFZO1lBQ1JFLFFBQVF6RywrQkFBK0IwRyxXQUFXLENBQUNTLFVBQVU7WUFDN0RQLE1BQU0sQ0FBQyxHQUFHbEcsMEJBQTBCMEcsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHbkgscUJBQXFCb0gsbUJBQW1CLEVBQUUsSUFBSUMsSUFBSXZCLEtBQUt3QixTQUFTQyxNQUFNLEdBQUdOLGFBQWExQixRQUFRaUMsT0FBTyxFQUFFckI7WUFDektTLGFBQWE7WUFDYmEsTUFBTW5CLGFBQWFBLFVBQVVFLE1BQU0sS0FBS3pHLCtCQUErQjBHLFdBQVcsQ0FBQ08sZ0JBQWdCLEdBQUdWLFVBQVVtQixJQUFJLEdBQUdyRztZQUN2SHlGLGdCQUFnQlAsYUFBYUEsVUFBVUUsTUFBTSxLQUFLekcsK0JBQStCMEcsV0FBVyxDQUFDTyxnQkFBZ0IsR0FBR1YsVUFBVU8sY0FBYyxHQUFHLElBQUlDO1FBQ25KO1FBQ0E7O0tBRUgsR0FBR2YsV0FBV2dCLEdBQUcsQ0FBQ2IsVUFBVUk7SUFDN0I7SUFDQSxrR0FBa0c7SUFDbEcsSUFBSSxDQUFDQSxXQUFXO1FBQ1osTUFBTSxJQUFJWixNQUFNO0lBQ3BCO0lBQ0Esa0dBQWtHO0lBQ2xHLElBQUlZLFVBQVVNLFdBQVcsSUFBSU4sVUFBVUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sSUFBSWpCLE1BQU07SUFDcEI7SUFDQSw2RkFBNkY7SUFDN0YsSUFBSVksVUFBVUssSUFBSSxFQUFFO1FBQ2hCOztLQUVILEdBQUcsOERBQThEO1FBQzlELE1BQU0sQ0FBQ2UsWUFBWUMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHL0gsT0FBT2dJLEdBQUcsRUFBRXRCLFVBQVVLLElBQUk7UUFDekUsc0VBQXNFO1FBQ3RFTCxVQUFVSyxJQUFJLEdBQUc7UUFDakIsd0dBQXdHO1FBQ3hHa0IsV0FBVztZQUNOLElBQUdqSSxPQUFPa0ksZUFBZSxFQUFFO2dCQUN4QjFCLHVCQUF1QkMsVUFBVXFCLFlBQVlDO1lBQ2pEO1FBQ0o7UUFDQSx5R0FBeUc7UUFDeEcsSUFBRy9ILE9BQU9nSSxHQUFHLEVBQUUsQ0FBQyxHQUFHM0gsaUJBQWlCOEgscUJBQXFCO0lBQzlEO0lBQ0EseUlBQXlJO0lBQ3pJLHdGQUF3RjtJQUN4RixJQUFJLENBQUN6QixVQUFVTSxXQUFXLEVBQUU7UUFDdkIsSUFBR2hILE9BQU9nSSxHQUFHLEVBQUUsQ0FBQyxHQUFHM0gsaUJBQWlCOEgscUJBQXFCO0lBQzlEO0lBQ0EsTUFBTUMsVUFDTixXQUFXLEdBQUdwSSxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDNUYsK0JBQStCa0ksbUJBQW1CLENBQUNDLFFBQVEsRUFBRTtRQUNwRzdJLE9BQU87WUFDSDRHLE1BQU1BLElBQUksQ0FBQyxFQUFFLENBQUNKLGtCQUFrQjtZQUNoQ0UsWUFBWU8sVUFBVU8sY0FBYztZQUNwQyxrREFBa0Q7WUFDbERmLEtBQUtBO1FBQ1Q7SUFDSixHQUFHUSxVQUFVTSxXQUFXO0lBQ3hCLGlGQUFpRjtJQUNqRixPQUFPb0I7QUFDWDtNQTlGYXBDO0FBK0ZiOzs7Q0FHQyxHQUFHLFNBQVN1QyxnQkFBZ0I3QyxLQUFLO0lBQzlCLElBQUksRUFBRXRCLFFBQVEsRUFBRW9FLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxVQUFVLEVBQUUsR0FBR2hEO0lBQ3ZELElBQUlnRCxZQUFZO1FBQ1osT0FBTyxXQUFXLEdBQUcxSSxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDL0YsT0FBTzJJLFFBQVEsRUFBRTtZQUMvREMsVUFBVSxXQUFXLEdBQUc1SSxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDL0YsT0FBT3NDLE9BQU8sQ0FBQ3VHLFFBQVEsRUFBRSxNQUFNSixlQUFlRDtRQUN2RyxHQUFHcEU7SUFDUDtJQUNBLE9BQU8sV0FBVyxHQUFHcEUsT0FBT3NDLE9BQU8sQ0FBQ3lELGFBQWEsQ0FBQy9GLE9BQU9zQyxPQUFPLENBQUN1RyxRQUFRLEVBQUUsTUFBTXpFO0FBQ3JGO01BUmFtRTtBQVNiLFNBQVMzSSxrQkFBa0I4RixLQUFLO0lBQzVCLElBQUksRUFBRU8saUJBQWlCLEVBQUUxQixXQUFXLEVBQUU2QixTQUFTLEVBQUVyRSxLQUFLLEVBQUUrRyxXQUFXLEVBQUVDLGNBQWMsRUFBRVAsT0FBTyxFQUFFQyxhQUFhLEVBQUVDLFVBQVUsRUFBRU0sUUFBUSxFQUFFQyxRQUFRLEVBQUVDLGNBQWMsRUFBRUMsTUFBTSxFQUFFLEdBQUd6RDtJQUN4SyxNQUFNQyxVQUFVLENBQUMsR0FBRzNGLE9BQU80RixVQUFVLEVBQUV6RiwrQkFBK0JrSSxtQkFBbUI7SUFDekYsSUFBSSxDQUFDMUMsU0FBUztRQUNWLE1BQU0sSUFBSUcsTUFBTTtJQUNwQjtJQUNBLE1BQU0sRUFBRUssVUFBVSxFQUFFRSxJQUFJLEVBQUVILEdBQUcsRUFBRSxHQUFHUDtJQUNsQyw0Q0FBNEM7SUFDNUMsSUFBSXlELDhCQUE4QmpELFdBQVd4RyxHQUFHLENBQUNzRztJQUNqRCxtRUFBbUU7SUFDbkUseUpBQXlKO0lBQ3pKLElBQUksQ0FBQ21ELDZCQUE2QjtRQUM5QkEsOEJBQThCLElBQUlsQztRQUNsQ2YsV0FBV2dCLEdBQUcsQ0FBQ2xCLG1CQUFtQm1EO0lBQ3RDO0lBQ0EscUNBQXFDO0lBQ3JDLDhJQUE4STtJQUM5SSxNQUFNQyxjQUFjaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQ0osa0JBQWtCLENBQUMsRUFBRTtJQUNqRCxNQUFNcUQsbUJBQW1CbEQsVUFBVW5GLE9BQU87SUFDMUMsZ0lBQWdJO0lBQ2hJLE1BQU1zSSwyQkFBMkIsQ0FBQyxHQUFHNUksaUJBQWlCNkksZUFBZSxFQUFFSDtJQUN2RTs7R0FFRCxHQUFHLCtEQUErRDtJQUNqRSxNQUFNSSxvQkFBb0I7UUFDdEJKO0tBQ0g7SUFDRCxPQUFPLFdBQVcsR0FBR3JKLE9BQU9zQyxPQUFPLENBQUN5RCxhQUFhLENBQUMvRixPQUFPc0MsT0FBTyxDQUFDdUcsUUFBUSxFQUFFLE1BQU1NLFFBQVFNLGtCQUFrQkMsR0FBRyxDQUFDLENBQUNDO1FBQzVHLE1BQU1DLHFCQUFxQixDQUFDLEdBQUdySixlQUFlYyxZQUFZLEVBQUVzSSxrQkFBa0JMO1FBQzlFLE1BQU1PLHdCQUF3QixDQUFDLEdBQUdsSixpQkFBaUI2SSxlQUFlLEVBQUVHO1FBQ3BFLE1BQU1yRCxXQUFXLENBQUMsR0FBRzFGLHNCQUFzQmtKLG9CQUFvQixFQUFFSDtRQUNqRSxPQUFPOzs7Ozs7OztVQVFMLEdBQUcsV0FBVyxHQUFHM0osT0FBT3NDLE9BQU8sQ0FBQ3lELGFBQWEsQ0FBQzVGLCtCQUErQjRKLGVBQWUsQ0FBQ3pCLFFBQVEsRUFBRTtZQUNyRzBCLEtBQUssQ0FBQyxHQUFHcEosc0JBQXNCa0osb0JBQW9CLEVBQUVILGtCQUFrQjtZQUN2RWxLLE9BQU8sV0FBVyxHQUFHTyxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDTix1QkFBdUI7Z0JBQ3JFbEIsYUFBYUE7WUFDakIsR0FBRyxXQUFXLEdBQUd2RSxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDekYsZUFBZTJKLGFBQWEsRUFBRTtnQkFDeEVDLGdCQUFnQm5JO2dCQUNoQitHLGFBQWFBO1lBQ2pCLEdBQUcsV0FBVyxHQUFHOUksT0FBT3NDLE9BQU8sQ0FBQ3lELGFBQWEsQ0FBQ3dDLGlCQUFpQjtnQkFDM0RHLFlBQVlBO2dCQUNaRixTQUFTQTtnQkFDVEMsZUFBZUE7WUFDbkIsR0FBRyxXQUFXLEdBQUd6SSxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDckYsa0JBQWtCeUosZ0JBQWdCLEVBQUU7Z0JBQzlFbEIsVUFBVUE7Z0JBQ1ZDLGdCQUFnQkE7WUFDcEIsR0FBRyxXQUFXLEdBQUdsSixPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDdEYsa0JBQWtCMkosZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLEdBQUdwSyxPQUFPc0MsT0FBTyxDQUFDeUQsYUFBYSxDQUFDQyxtQkFBbUI7Z0JBQ2xKQyxtQkFBbUJBO2dCQUNuQkMsS0FBS0E7Z0JBQ0xHLE1BQU1BO2dCQUNORixZQUFZaUQ7Z0JBQ1poRCxXQUFXd0QscUJBQXFCeEQsWUFBWTtnQkFDNUM3QixhQUFhQTtnQkFDYitCLFVBQVVBO2dCQUNWK0QsVUFBVWQsNkJBQTZCTTtZQUMzQztRQUNKLEdBQUdkLGdCQUFnQkM7SUFDdkI7QUFDSjtNQWpFU3BKO0FBbUVULElBQUksQ0FBQyxPQUFPSixRQUFROEMsT0FBTyxLQUFLLGNBQWUsT0FBTzlDLFFBQVE4QyxPQUFPLEtBQUssWUFBWTlDLFFBQVE4QyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU85QyxRQUFROEMsT0FBTyxDQUFDZ0ksVUFBVSxLQUFLLGFBQWE7SUFDcktoTCxPQUFPQyxjQUFjLENBQUNDLFFBQVE4QyxPQUFPLEVBQUUsY0FBYztRQUFFN0MsT0FBTztJQUFLO0lBQ25FSCxPQUFPaUwsTUFBTSxDQUFDL0ssUUFBUThDLE9BQU8sRUFBRTlDO0lBQy9CZ0wsT0FBT2hMLE9BQU8sR0FBR0EsUUFBUThDLE9BQU87QUFDbEMsRUFFQSx5Q0FBeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzPzBiZmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIC8qKlxuICogT3V0ZXJMYXlvdXRSb3V0ZXIgaGFuZGxlcyB0aGUgY3VycmVudCBzZWdtZW50IGFzIHdlbGwgYXMgPE9mZnNjcmVlbj4gcmVuZGVyaW5nIG9mIG90aGVyIHNlZ21lbnRzLlxuICogSXQgY2FuIGJlIHJlbmRlcmVkIG5leHQgdG8gZWFjaCBvdGhlciB3aXRoIGEgZGlmZmVyZW50IGBwYXJhbGxlbFJvdXRlcktleWAsIGFsbG93aW5nIGZvciBQYXJhbGxlbCByb3V0ZXMuXG4gKi8gXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBPdXRlckxheW91dFJvdXRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX3JlYWN0ZG9tID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3QtZG9tXCIpKTtcbmNvbnN0IF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9mZXRjaHNlcnZlcnJlc3BvbnNlID0gcmVxdWlyZShcIi4vcm91dGVyLXJlZHVjZXIvZmV0Y2gtc2VydmVyLXJlc3BvbnNlXCIpO1xuY29uc3QgX2luZmluaXRlcHJvbWlzZSA9IHJlcXVpcmUoXCIuL2luZmluaXRlLXByb21pc2VcIik7XG5jb25zdCBfZXJyb3Jib3VuZGFyeSA9IHJlcXVpcmUoXCIuL2Vycm9yLWJvdW5kYXJ5XCIpO1xuY29uc3QgX21hdGNoc2VnbWVudHMgPSByZXF1aXJlKFwiLi9tYXRjaC1zZWdtZW50c1wiKTtcbmNvbnN0IF9oYW5kbGVzbW9vdGhzY3JvbGwgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaGFuZGxlLXNtb290aC1zY3JvbGxcIik7XG5jb25zdCBfcmVkaXJlY3Rib3VuZGFyeSA9IHJlcXVpcmUoXCIuL3JlZGlyZWN0LWJvdW5kYXJ5XCIpO1xuY29uc3QgX25vdGZvdW5kYm91bmRhcnkgPSByZXF1aXJlKFwiLi9ub3QtZm91bmQtYm91bmRhcnlcIik7XG5jb25zdCBfZ2V0c2VnbWVudHZhbHVlID0gcmVxdWlyZShcIi4vcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZ2V0LXNlZ21lbnQtdmFsdWVcIik7XG5jb25zdCBfY3JlYXRlcm91dGVyY2FjaGVrZXkgPSByZXF1aXJlKFwiLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtcm91dGVyLWNhY2hlLWtleVwiKTtcbmNvbnN0IF9jcmVhdGVyZWNvcmRmcm9tdGhlbmFibGUgPSByZXF1aXJlKFwiLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtcmVjb3JkLWZyb20tdGhlbmFibGVcIik7XG4vKipcbiAqIEFkZCByZWZldGNoIG1hcmtlciB0byByb3V0ZXIgc3RhdGUgYXQgdGhlIHBvaW50IG9mIHRoZSBjdXJyZW50IGxheW91dCBzZWdtZW50LlxuICogVGhpcyBlbnN1cmVzIHRoZSByZXNwb25zZSByZXR1cm5lZCBpcyBub3QgZnVydGhlciBkb3duIHRoYW4gdGhlIGN1cnJlbnQgbGF5b3V0IHNlZ21lbnQuXG4gKi8gZnVuY3Rpb24gd2Fsa0FkZFJlZmV0Y2goc2VnbWVudFBhdGhUb1dhbGssIHRyZWVUb1JlY3JlYXRlKSB7XG4gICAgaWYgKHNlZ21lbnRQYXRoVG9XYWxrKSB7XG4gICAgICAgIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlS2V5XSA9IHNlZ21lbnRQYXRoVG9XYWxrO1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBzZWdtZW50UGF0aFRvV2Fsay5sZW5ndGggPT09IDI7XG4gICAgICAgIGlmICgoMCwgX21hdGNoc2VnbWVudHMubWF0Y2hTZWdtZW50KSh0cmVlVG9SZWNyZWF0ZVswXSwgc2VnbWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0cmVlVG9SZWNyZWF0ZVsxXS5oYXNPd25Qcm9wZXJ0eShwYXJhbGxlbFJvdXRlS2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViVHJlZSA9IHdhbGtBZGRSZWZldGNoKHVuZGVmaW5lZCwgdHJlZVRvUmVjcmVhdGVbMV1bcGFyYWxsZWxSb3V0ZUtleV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZVRvUmVjcmVhdGVbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udHJlZVRvUmVjcmVhdGVbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmFsbGVsUm91dGVLZXldOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWVbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWVbMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVmZXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0cmVlVG9SZWNyZWF0ZVswXSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udHJlZVRvUmVjcmVhdGVbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFyYWxsZWxSb3V0ZUtleV06IHdhbGtBZGRSZWZldGNoKHNlZ21lbnRQYXRoVG9XYWxrLnNsaWNlKDIpLCB0cmVlVG9SZWNyZWF0ZVsxXVtwYXJhbGxlbFJvdXRlS2V5XSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyZWVUb1JlY3JlYXRlO1xufVxuLy8gVE9ETy1BUFA6IFJlcGxhY2Ugd2l0aCBuZXcgUmVhY3QgQVBJIGZvciBmaW5kaW5nIGRvbSBub2RlcyB3aXRob3V0IGEgYHJlZmAgd2hlbiBhdmFpbGFibGVcbi8qKlxuICogV3JhcHMgUmVhY3RET00uZmluZERPTU5vZGUgd2l0aCBhZGRpdGlvbmFsIGxvZ2ljIHRvIGhpZGUgUmVhY3QgU3RyaWN0IE1vZGUgd2FybmluZ1xuICovIGZ1bmN0aW9uIGZpbmRET01Ob2RlKGluc3RhbmNlKSB7XG4gICAgLy8gVHJlZS1zaGFrZSBmb3Igc2VydmVyIGJ1bmRsZVxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gbnVsbDtcbiAgICAvLyBPbmx5IGFwcGx5IHN0cmljdCBtb2RlIHdhcm5pbmcgd2hlbiBub3QgaW4gcHJvZHVjdGlvblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlRXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG1lc3NhZ2VzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgc3RyaWN0IG1vZGUgd2FybmluZyBmb3IgdGhlIGZpbmREb21Ob2RlIGNhbGwgYmVsb3dcbiAgICAgICAgICAgICAgICBpZiAoIW1lc3NhZ2VzWzBdLmluY2x1ZGVzKFwiV2FybmluZzogJXMgaXMgZGVwcmVjYXRlZCBpbiBTdHJpY3RNb2RlLlwiKSkge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbENvbnNvbGVFcnJvciguLi5tZXNzYWdlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBfcmVhY3Rkb20uZGVmYXVsdC5maW5kRE9NTm9kZShpbnN0YW5jZSk7XG4gICAgICAgIH0gZmluYWxseXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IgPSBvcmlnaW5hbENvbnNvbGVFcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX3JlYWN0ZG9tLmRlZmF1bHQuZmluZERPTU5vZGUoaW5zdGFuY2UpO1xufVxuY29uc3QgcmVjdFByb3BlcnRpZXMgPSBbXG4gICAgXCJib3R0b21cIixcbiAgICBcImhlaWdodFwiLFxuICAgIFwibGVmdFwiLFxuICAgIFwicmlnaHRcIixcbiAgICBcInRvcFwiLFxuICAgIFwid2lkdGhcIixcbiAgICBcInhcIixcbiAgICBcInlcIlxuXTtcbi8qKlxuICogQ2hlY2sgaWYgYSBIVE1MRWxlbWVudCBpcyBoaWRkZW4gb3IgZml4ZWQvc3RpY2t5IHBvc2l0aW9uXG4gKi8gZnVuY3Rpb24gc2hvdWxkU2tpcEVsZW1lbnQoZWxlbWVudCkge1xuICAgIC8vIHdlIGlnbm9yZSBmaXhlZCBvciBzdGlja3kgcG9zaXRpb25lZCBlbGVtZW50cyBzaW5jZSB0aGV5J2xsIGxpa2VseSBwYXNzIHRoZSBcImluLXZpZXdwb3J0XCIgY2hlY2tcbiAgICAvLyBhbmQgd2lsbCByZXN1bHQgaW4gYSBzaXR1YXRpb24gd2UgYmFpbCBvbiBzY3JvbGwgYmVjYXVzZSBvZiBzb21ldGhpbmcgbGlrZSBhIGZpeGVkIG5hdixcbiAgICAvLyBldmVuIHRob3VnaCB0aGUgYWN0dWFsIHBhZ2UgY29udGVudCBpcyBvZmZzY3JlZW5cbiAgICBpZiAoW1xuICAgICAgICBcInN0aWNreVwiLFxuICAgICAgICBcImZpeGVkXCJcbiAgICBdLmluY2x1ZGVzKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJTa2lwcGluZyBhdXRvLXNjcm9sbCBiZWhhdmlvciBkdWUgdG8gYHBvc2l0aW9uOiBzdGlja3lgIG9yIGBwb3NpdGlvbjogZml4ZWRgIG9uIGVsZW1lbnQ6XCIsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBVc2VzIGBnZXRCb3VuZGluZ0NsaWVudFJlY3RgIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIGhpZGRlbiBpbnN0ZWFkIG9mIGBvZmZzZXRQYXJlbnRgXG4gICAgLy8gYmVjYXVzZSBgb2Zmc2V0UGFyZW50YCBkb2Vzbid0IGNvbnNpZGVyIGRvY3VtZW50L2JvZHlcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gcmVjdFByb3BlcnRpZXMuZXZlcnkoKGl0ZW0pPT5yZWN0W2l0ZW1dID09PSAwKTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHRvcCBjb3JuZXIgb2YgdGhlIEhUTUxFbGVtZW50IGlzIGluIHRoZSB2aWV3cG9ydC5cbiAqLyBmdW5jdGlvbiB0b3BPZkVsZW1lbnRJblZpZXdwb3J0KGVsZW1lbnQsIHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIHJlY3QudG9wID49IDAgJiYgcmVjdC50b3AgPD0gdmlld3BvcnRIZWlnaHQ7XG59XG4vKipcbiAqIEZpbmQgdGhlIERPTSBub2RlIGZvciBhIGhhc2ggZnJhZ21lbnQuXG4gKiBJZiBgdG9wYCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UuIFRoaXMgbWlycm9ycyB0aGUgYnJvd3NlcidzIGJlaGF2aW9yLlxuICogSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYW4gaWQsIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGF0IGlkLlxuICogSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYSBuYW1lLCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSBmaXJzdCBlbGVtZW50IHdpdGggdGhhdCBuYW1lLlxuICovIGZ1bmN0aW9uIGdldEhhc2hGcmFnbWVudERvbU5vZGUoaGFzaEZyYWdtZW50KSB7XG4gICAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYHRvcGAgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlLlxuICAgIGlmIChoYXNoRnJhZ21lbnQgPT09IFwidG9wXCIpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG4gICAgfVxuICAgIHZhciBfZG9jdW1lbnRfZ2V0RWxlbWVudEJ5SWQ7XG4gICAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYW4gaWQsIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGF0IGlkLlxuICAgIHJldHVybiAoX2RvY3VtZW50X2dldEVsZW1lbnRCeUlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaEZyYWdtZW50KSkgIT0gbnVsbCA/IF9kb2N1bWVudF9nZXRFbGVtZW50QnlJZCA6IC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGEgbmFtZSwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIHRoYXQgbmFtZS5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShoYXNoRnJhZ21lbnQpWzBdO1xufVxuY2xhc3MgSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLmhhbmRsZVBvdGVudGlhbFNjcm9sbCgpO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhpcyBwcm9wZXJ0eSBpcyBvdmVyd3JpdHRlbiBpbiBoYW5kbGVQb3RlbnRpYWxTY3JvbGwgaXQncyBmaW5lIHRvIGFsd2F5cyBydW4gaXQgd2hlbiB0cnVlIGFzIGl0J2xsIGJlIHNldCB0byBmYWxzZSBmb3Igc3Vic2VxdWVudCByZW5kZXJzLlxuICAgICAgICBpZiAodGhpcy5wcm9wcy5mb2N1c0FuZFNjcm9sbFJlZi5hcHBseSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVQb3RlbnRpYWxTY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAgIHRoaXMuaGFuZGxlUG90ZW50aWFsU2Nyb2xsID0gKCk9PntcbiAgICAgICAgICAgIC8vIEhhbmRsZSBzY3JvbGwgYW5kIGZvY3VzLCBpdCdzIG9ubHkgYXBwbGllZCBvbmNlIGluIHRoZSBmaXJzdCB1c2VFZmZlY3QgdGhhdCB0cmlnZ2VycyB0aGF0IGNoYW5nZWQuXG4gICAgICAgICAgICBjb25zdCB7IGZvY3VzQW5kU2Nyb2xsUmVmLCBzZWdtZW50UGF0aCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChmb2N1c0FuZFNjcm9sbFJlZi5hcHBseSkge1xuICAgICAgICAgICAgICAgIC8vIHNlZ21lbnRQYXRocyBpcyBhbiBhcnJheSBvZiBzZWdtZW50IHBhdGhzIHRoYXQgc2hvdWxkIGJlIHNjcm9sbGVkIHRvXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgc2VnbWVudCBwYXRoIGlzIG5vdCBpbiB0aGUgYXJyYXksIHRoZSBzY3JvbGwgaXMgbm90IGFwcGxpZWRcbiAgICAgICAgICAgICAgICAvLyB1bmxlc3MgdGhlIGFycmF5IGlzIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSBzY3JvbGwgaXMgYWx3YXlzIGFwcGxpZWRcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNBbmRTY3JvbGxSZWYuc2VnbWVudFBhdGhzLmxlbmd0aCAhPT0gMCAmJiAhZm9jdXNBbmRTY3JvbGxSZWYuc2VnbWVudFBhdGhzLnNvbWUoKHNjcm9sbFJlZlNlZ21lbnRQYXRoKT0+c2VnbWVudFBhdGguZXZlcnkoKHNlZ21lbnQsIGluZGV4KT0+KDAsIF9tYXRjaHNlZ21lbnRzLm1hdGNoU2VnbWVudCkoc2VnbWVudCwgc2Nyb2xsUmVmU2VnbWVudFBhdGhbaW5kZXhdKSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hGcmFnbWVudCA9IGZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudDtcbiAgICAgICAgICAgICAgICBpZiAoaGFzaEZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbU5vZGUgPSBnZXRIYXNoRnJhZ21lbnREb21Ob2RlKGhhc2hGcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGBmaW5kRE9NTm9kZWAgaXMgdHJpY2t5IGJlY2F1c2UgaXQgcmV0dXJucyBqdXN0IHRoZSBmaXJzdCBjaGlsZCBpZiB0aGUgY29tcG9uZW50IGlzIGEgZnJhZ21lbnQuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBhbHJlYWR5IGNhdXNlZCBhIGJ1ZyB3aGVyZSB0aGUgZmlyc3QgY2hpbGQgd2FzIGEgPGxpbmsvPiBpbiBoZWFkLlxuICAgICAgICAgICAgICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBkb21Ob2RlID0gZmluZERPTU5vZGUodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIERPTSBub2RlIHRoaXMgbGF5b3V0LXJvdXRlciBsZXZlbCBpcyBza2lwcGVkLiBJdCdsbCBiZSBoYW5kbGVkIGhpZ2hlci11cCBpbiB0aGUgdHJlZS5cbiAgICAgICAgICAgICAgICBpZiAoIShkb21Ob2RlIGluc3RhbmNlb2YgRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgaWYgdGhlIGVsZW1lbnQgaXMgYSBIVE1MRWxlbWVudCBhbmQgaWYgd2Ugd2FudCB0byBjb25zaWRlciBpdCBmb3Igc2Nyb2xsIGJlaGF2aW9yLlxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIHNraXBwZWQsIHRyeSB0byBzZWxlY3QgdGhlIG5leHQgc2libGluZyBhbmQgdHJ5IGFnYWluLlxuICAgICAgICAgICAgICAgIHdoaWxlKCEoZG9tTm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB8fCBzaG91bGRTa2lwRWxlbWVudChkb21Ob2RlKSl7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vIHNpYmxpbmdzIGZvdW5kIHRoYXQgbWF0Y2ggdGhlIGNyaXRlcmlhIGFyZSBmb3VuZCwgc28gaGFuZGxlIHNjcm9sbCBoaWdoZXIgdXAgaW4gdGhlIHRyZWUgaW5zdGVhZC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZG9tTm9kZSA9IGRvbU5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBpcyBtdXRhdGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBmb2N1cyBhbmQgc2Nyb2xsIGlzIGFwcGxpZWQgb25seSBvbmNlLlxuICAgICAgICAgICAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmLmFwcGx5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9jdXNBbmRTY3JvbGxSZWYuaGFzaEZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMgPSBbXTtcbiAgICAgICAgICAgICAgICAoMCwgX2hhbmRsZXNtb290aHNjcm9sbC5oYW5kbGVTbW9vdGhTY3JvbGwpKCgpPT57XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgaGFzaCBzY3JvbGwsIHdlIG9ubHkgbmVlZCB0byBzY3JvbGwgdGhlIGVsZW1lbnQgaW50byB2aWV3XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNoRnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCB2aWV3cG9ydCBoZWlnaHQgYmVjYXVzZSByZWFkaW5nIGBjbGllbnRIZWlnaHRgIGNhdXNlcyBhIHJlZmxvdyxcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGl0IHdvbid0IGNoYW5nZSBkdXJpbmcgdGhpcyBmdW5jdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gaHRtbEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCdzIHRvcCBlZGdlIGlzIGFscmVhZHkgaW4gdGhlIHZpZXdwb3J0LCBleGl0IGVhcmx5LlxuICAgICAgICAgICAgICAgICAgICBpZiAodG9wT2ZFbGVtZW50SW5WaWV3cG9ydChkb21Ob2RlLCB2aWV3cG9ydEhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRyeSBzY3JvbGxpbmcgZ28gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHBhZ2VzXG4gICAgICAgICAgICAgICAgICAgIC8vIHNjcm9sbEludG9WaWV3KCkgY2FsbGVkIG9uIGA8aHRtbC8+YCBlbGVtZW50IHNjcm9sbHMgaG9yaXpvbnRhbGx5IG9uIGNocm9tZSBhbmQgZmlyZWZveCAodGhhdCBzaG91bGRuJ3QgaGFwcGVuKVxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBjb3VsZCB1c2UgaXQgdG8gc2Nyb2xsIGhvcml6b250YWxseSBmb2xsb3dpbmcgUlRMIGJ1dCB0aGF0IGFsc28gc2VlbXMgdG8gYmUgYnJva2VuIC0gaXQgd2lsbCBhbHdheXMgc2Nyb2xsIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgLy8gc2Nyb2xsTGVmdCA9IDAgYWxzbyBzZWVtcyB0byBpZ25vcmUgUlRMIGFuZCBtYW51YWxseSBjaGVja2luZyBmb3IgUlRMIGlzIHRvbyBtdWNoIGhhc3NsZSBzbyB3ZSB3aWxsIHNjcm9sbCBqdXN0IHZlcnRpY2FsbHlcbiAgICAgICAgICAgICAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHRvIGRvbU5vZGUgaWYgZG9tTm9kZSBpcyBub3QgaW4gdmlld3BvcnQgd2hlbiBzY3JvbGxlZCB0byB0b3Agb2YgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0b3BPZkVsZW1lbnRJblZpZXdwb3J0KGRvbU5vZGUsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9tTm9kZS5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIGZvcmNlIGxheW91dCBieSBxdWVyeWluZyBkb21Ob2RlIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRvbnRGb3JjZUxheW91dDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25seUhhc2hDaGFuZ2U6IGZvY3VzQW5kU2Nyb2xsUmVmLm9ubHlIYXNoQ2hhbmdlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gTXV0YXRlIGFmdGVyIHNjcm9sbGluZyBzbyB0aGF0IGl0IGNhbiBiZSByZWFkIGJ5IGBoYW5kbGVTbW9vdGhTY3JvbGxgXG4gICAgICAgICAgICAgICAgZm9jdXNBbmRTY3JvbGxSZWYub25seUhhc2hDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBTZXQgZm9jdXMgb24gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBkb21Ob2RlLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gU2Nyb2xsQW5kRm9jdXNIYW5kbGVyKHBhcmFtKSB7XG4gICAgbGV0IHsgc2VnbWVudFBhdGgsIGNoaWxkcmVuIH0gPSBwYXJhbTtcbiAgICBjb25zdCBjb250ZXh0ID0gKDAsIF9yZWFjdC51c2VDb250ZXh0KShfYXBwcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUuR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCk7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFyaWFudCBnbG9iYWwgbGF5b3V0IHJvdXRlciBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChJbm5lclNjcm9sbEFuZEZvY3VzSGFuZGxlciwge1xuICAgICAgICBzZWdtZW50UGF0aDogc2VnbWVudFBhdGgsXG4gICAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmOiBjb250ZXh0LmZvY3VzQW5kU2Nyb2xsUmVmXG4gICAgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBJbm5lckxheW91dFJvdXRlciBoYW5kbGVzIHJlbmRlcmluZyB0aGUgcHJvdmlkZWQgc2VnbWVudCBiYXNlZCBvbiB0aGUgY2FjaGUuXG4gKi8gZnVuY3Rpb24gSW5uZXJMYXlvdXRSb3V0ZXIocGFyYW0pIHtcbiAgICBsZXQgeyBwYXJhbGxlbFJvdXRlcktleSwgdXJsLCBjaGlsZE5vZGVzLCBjaGlsZFByb3AsIHNlZ21lbnRQYXRoLCB0cmVlLCAvLyBUT0RPLUFQUDogaW1wbGVtZW50IGA8T2Zmc2NyZWVuPmAgd2hlbiBhdmFpbGFibGUuXG4gICAgLy8gaXNBY3RpdmUsXG4gICAgY2FjaGVLZXkgfSA9IHBhcmFtO1xuICAgIGNvbnN0IGNvbnRleHQgPSAoMCwgX3JlYWN0LnVzZUNvbnRleHQpKF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5HbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YXJpYW50IGdsb2JhbCBsYXlvdXQgcm91dGVyIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCB7IGJ1aWxkSWQsIGNoYW5nZUJ5U2VydmVyUmVzcG9uc2UsIHRyZWU6IGZ1bGxUcmVlIH0gPSBjb250ZXh0O1xuICAgIC8vIFJlYWQgc2VnbWVudCBwYXRoIGZyb20gdGhlIHBhcmFsbGVsIHJvdXRlciBjYWNoZSBub2RlLlxuICAgIGxldCBjaGlsZE5vZGUgPSBjaGlsZE5vZGVzLmdldChjYWNoZUtleSk7XG4gICAgLy8gSWYgY2hpbGRQcm9wIGlzIGF2YWlsYWJsZSB0aGlzIG1lYW5zIGl0J3MgdGhlIEZsaWdodCAvIFNTUiBjYXNlLlxuICAgIGlmIChjaGlsZFByb3AgJiYgLy8gVE9ETy1BUFA6IHZlcmlmeSBpZiB0aGlzIGNhbiBiZSBudWxsIGJhc2VkIG9uIHVzZXIgY29kZVxuICAgIGNoaWxkUHJvcC5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghY2hpbGROb2RlKSB7XG4gICAgICAgICAgICAvLyBBZGQgdGhlIHNlZ21lbnQncyBzdWJUcmVlRGF0YSB0byB0aGUgY2FjaGUuXG4gICAgICAgICAgICAvLyBUaGlzIHdyaXRlcyB0byB0aGUgY2FjaGUgd2hlbiB0aGVyZSBpcyBubyBpdGVtIGluIHRoZSBjYWNoZSB5ZXQuIEl0IG5ldmVyICpvdmVyd3JpdGVzKiBleGlzdGluZyBjYWNoZSBpdGVtcyB3aGljaCBpcyB3aHkgaXQncyBzYWZlIGluIGNvbmN1cnJlbnQgbW9kZS5cbiAgICAgICAgICAgIGNoaWxkTm9kZSA9IHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5DYWNoZVN0YXRlcy5SRUFEWSxcbiAgICAgICAgICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICAgICAgICAgIHN1YlRyZWVEYXRhOiBjaGlsZFByb3AuY3VycmVudCxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2hpbGROb2Rlcy5zZXQoY2FjaGVLZXksIGNoaWxkTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlJ3JlIGNoYW5naW5nIGl0J3MgdHlwZSFcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGUuc3RhdHVzID0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLlJFQURZO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGUuc3ViVHJlZURhdGEgPSBjaGlsZFByb3AuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBXaGVuIGNoaWxkTm9kZSBpcyBub3QgYXZhaWxhYmxlIGR1cmluZyByZW5kZXJpbmcgY2xpZW50LXNpZGUgd2UgbmVlZCB0byBmZXRjaCBpdCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgaWYgKCFjaGlsZE5vZGUgfHwgY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQpIHtcbiAgICAgICAgLyoqXG4gICAgICogUm91dGVyIHN0YXRlIHdpdGggcmVmZXRjaCBtYXJrZXIgYWRkZWRcbiAgICAgKi8gLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICBjb25zdCByZWZldGNoVHJlZSA9IHdhbGtBZGRSZWZldGNoKFtcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAuLi5zZWdtZW50UGF0aFxuICAgICAgICBdLCBmdWxsVHJlZSk7XG4gICAgICAgIGNoaWxkTm9kZSA9IHtcbiAgICAgICAgICAgIHN0YXR1czogX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLkRBVEFfRkVUQ0gsXG4gICAgICAgICAgICBkYXRhOiAoMCwgX2NyZWF0ZXJlY29yZGZyb210aGVuYWJsZS5jcmVhdGVSZWNvcmRGcm9tVGhlbmFibGUpKCgwLCBfZmV0Y2hzZXJ2ZXJyZXNwb25zZS5mZXRjaFNlcnZlclJlc3BvbnNlKShuZXcgVVJMKHVybCwgbG9jYXRpb24ub3JpZ2luKSwgcmVmZXRjaFRyZWUsIGNvbnRleHQubmV4dFVybCwgYnVpbGRJZCkpLFxuICAgICAgICAgICAgc3ViVHJlZURhdGE6IG51bGwsXG4gICAgICAgICAgICBoZWFkOiBjaGlsZE5vZGUgJiYgY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQgPyBjaGlsZE5vZGUuaGVhZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhcmFsbGVsUm91dGVzOiBjaGlsZE5vZGUgJiYgY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQgPyBjaGlsZE5vZGUucGFyYWxsZWxSb3V0ZXMgOiBuZXcgTWFwKClcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICogRmxpZ2h0IGRhdGEgZmV0Y2gga2lja2VkIG9mZiBkdXJpbmcgcmVuZGVyIGFuZCBwdXQgaW50byB0aGUgY2FjaGUuXG4gICAgICovIGNoaWxkTm9kZXMuc2V0KGNhY2hlS2V5LCBjaGlsZE5vZGUpO1xuICAgIH1cbiAgICAvLyBUaGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGhhcHBlbiBzbyBpdCB0aHJvd3MgYW4gZXJyb3IuIEl0IGluZGljYXRlcyB0aGVyZSdzIGEgYnVnIGluIHRoZSBOZXh0LmpzLlxuICAgIGlmICghY2hpbGROb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNoaWxkIG5vZGUgc2hvdWxkIGFsd2F5cyBleGlzdFwiKTtcbiAgICB9XG4gICAgLy8gVGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4gc28gaXQgdGhyb3dzIGFuIGVycm9yLiBJdCBpbmRpY2F0ZXMgdGhlcmUncyBhIGJ1ZyBpbiB0aGUgTmV4dC5qcy5cbiAgICBpZiAoY2hpbGROb2RlLnN1YlRyZWVEYXRhICYmIGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNoaWxkIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGJvdGggc3ViVHJlZURhdGEgYW5kIGRhdGFcIik7XG4gICAgfVxuICAgIC8vIElmIGNhY2hlIG5vZGUgaGFzIGEgZGF0YSByZXF1ZXN0IHdlIGhhdmUgdG8gdW53cmFwIHJlc3BvbnNlIGJ5IGB1c2VgIGFuZCB1cGRhdGUgdGhlIGNhY2hlLlxuICAgIGlmIChjaGlsZE5vZGUuZGF0YSkge1xuICAgICAgICAvKipcbiAgICAgKiBGbGlnaHQgcmVzcG9uc2UgZGF0YVxuICAgICAqLyAvLyBXaGVuIHRoZSBkYXRhIGhhcyBub3QgcmVzb2x2ZWQgeWV0IGB1c2VgIHdpbGwgc3VzcGVuZCBoZXJlLlxuICAgICAgICBjb25zdCBbZmxpZ2h0RGF0YSwgb3ZlcnJpZGVDYW5vbmljYWxVcmxdID0gKDAsIF9yZWFjdC51c2UpKGNoaWxkTm9kZS5kYXRhKTtcbiAgICAgICAgLy8gc2VnbWVudFBhdGggZnJvbSB0aGUgc2VydmVyIGRvZXMgbm90IG1hdGNoIHRoZSBsYXlvdXQncyBzZWdtZW50UGF0aFxuICAgICAgICBjaGlsZE5vZGUuZGF0YSA9IG51bGw7XG4gICAgICAgIC8vIHNldFRpbWVvdXQgaXMgdXNlZCB0byBzdGFydCBhIG5ldyB0cmFuc2l0aW9uIGR1cmluZyByZW5kZXIsIHRoaXMgaXMgYW4gaW50ZW50aW9uYWwgaGFjayBhcm91bmQgUmVhY3QuXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICgwLCBfcmVhY3Quc3RhcnRUcmFuc2l0aW9uKSgoKT0+e1xuICAgICAgICAgICAgICAgIGNoYW5nZUJ5U2VydmVyUmVzcG9uc2UoZnVsbFRyZWUsIGZsaWdodERhdGEsIG92ZXJyaWRlQ2Fub25pY2FsVXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gU3VzcGVuZCBpbmZpbml0ZWx5IGFzIGBjaGFuZ2VCeVNlcnZlclJlc3BvbnNlYCB3aWxsIGNhdXNlIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIHRyZWUgdG8gYmUgcmVuZGVyZWQuXG4gICAgICAgICgwLCBfcmVhY3QudXNlKSgoMCwgX2luZmluaXRlcHJvbWlzZS5jcmVhdGVJbmZpbml0ZVByb21pc2UpKCkpO1xuICAgIH1cbiAgICAvLyBJZiBjYWNoZSBub2RlIGhhcyBubyBzdWJUcmVlRGF0YSBhbmQgbm8gZGF0YSByZXF1ZXN0IHdlIGhhdmUgdG8gaW5maW5pdGVseSBzdXNwZW5kIGFzIHRoZSBkYXRhIHdpbGwgbGlrZWx5IGZsb3cgaW4gZnJvbSBhbm90aGVyIHBsYWNlLlxuICAgIC8vIFRPRE8tQVBQOiBkb3VibGUgY2hlY2sgdXNlcnMgY2FuJ3QgcmV0dXJuIG51bGwgaW4gYSBjb21wb25lbnQgdGhhdCB3aWxsIGtpY2sgaW4gaGVyZS5cbiAgICBpZiAoIWNoaWxkTm9kZS5zdWJUcmVlRGF0YSkge1xuICAgICAgICAoMCwgX3JlYWN0LnVzZSkoKDAsIF9pbmZpbml0ZXByb21pc2UuY3JlYXRlSW5maW5pdGVQcm9taXNlKSgpKTtcbiAgICB9XG4gICAgY29uc3Qgc3VidHJlZSA9IC8vIFRoZSBsYXlvdXQgcm91dGVyIGNvbnRleHQgbmFycm93cyBkb3duIHRyZWUgYW5kIGNoaWxkTm9kZXMgYXQgZWFjaCBsZXZlbC5cbiAgICAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkxheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHRyZWU6IHRyZWVbMV1bcGFyYWxsZWxSb3V0ZXJLZXldLFxuICAgICAgICAgICAgY2hpbGROb2RlczogY2hpbGROb2RlLnBhcmFsbGVsUm91dGVzLFxuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IG92ZXJyaWRpbmcgb2YgdXJsIGZvciBwYXJhbGxlbCByb3V0ZXNcbiAgICAgICAgICAgIHVybDogdXJsXG4gICAgICAgIH1cbiAgICB9LCBjaGlsZE5vZGUuc3ViVHJlZURhdGEpO1xuICAgIC8vIEVuc3VyZSByb290IGxheW91dCBpcyBub3Qgd3JhcHBlZCBpbiBhIGRpdiBhcyB0aGUgcm9vdCBsYXlvdXQgcmVuZGVycyBgPGh0bWw+YFxuICAgIHJldHVybiBzdWJ0cmVlO1xufVxuLyoqXG4gKiBSZW5kZXJzIHN1c3BlbnNlIGJvdW5kYXJ5IHdpdGggdGhlIHByb3ZpZGVkIFwibG9hZGluZ1wiIHByb3BlcnR5IGFzIHRoZSBmYWxsYmFjay5cbiAqIElmIG5vIGxvYWRpbmcgcHJvcGVydHkgaXMgcHJvdmlkZWQgaXQgcmVuZGVycyB0aGUgY2hpbGRyZW4gd2l0aG91dCBhIHN1c3BlbnNlIGJvdW5kYXJ5LlxuICovIGZ1bmN0aW9uIExvYWRpbmdCb3VuZGFyeShwYXJhbSkge1xuICAgIGxldCB7IGNoaWxkcmVuLCBsb2FkaW5nLCBsb2FkaW5nU3R5bGVzLCBoYXNMb2FkaW5nIH0gPSBwYXJhbTtcbiAgICBpZiAoaGFzTG9hZGluZykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5TdXNwZW5zZSwge1xuICAgICAgICAgICAgZmFsbGJhY2s6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgbG9hZGluZ1N0eWxlcywgbG9hZGluZylcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBPdXRlckxheW91dFJvdXRlcihwYXJhbSkge1xuICAgIGxldCB7IHBhcmFsbGVsUm91dGVyS2V5LCBzZWdtZW50UGF0aCwgY2hpbGRQcm9wLCBlcnJvciwgZXJyb3JTdHlsZXMsIHRlbXBsYXRlU3R5bGVzLCBsb2FkaW5nLCBsb2FkaW5nU3R5bGVzLCBoYXNMb2FkaW5nLCB0ZW1wbGF0ZSwgbm90Rm91bmQsIG5vdEZvdW5kU3R5bGVzLCBzdHlsZXMgfSA9IHBhcmFtO1xuICAgIGNvbnN0IGNvbnRleHQgPSAoMCwgX3JlYWN0LnVzZUNvbnRleHQpKF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5MYXlvdXRSb3V0ZXJDb250ZXh0KTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YXJpYW50IGV4cGVjdGVkIGxheW91dCByb3V0ZXIgdG8gYmUgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgeyBjaGlsZE5vZGVzLCB0cmVlLCB1cmwgfSA9IGNvbnRleHQ7XG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhcmFsbGVsUm91dGVyIGNhY2hlIG5vZGVcbiAgICBsZXQgY2hpbGROb2Rlc0ZvclBhcmFsbGVsUm91dGVyID0gY2hpbGROb2Rlcy5nZXQocGFyYWxsZWxSb3V0ZXJLZXkpO1xuICAgIC8vIElmIHRoZSBwYXJhbGxlbCByb3V0ZXIgY2FjaGUgbm9kZSBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC5cbiAgICAvLyBUaGlzIHdyaXRlcyB0byB0aGUgY2FjaGUgd2hlbiB0aGVyZSBpcyBubyBpdGVtIGluIHRoZSBjYWNoZSB5ZXQuIEl0IG5ldmVyICpvdmVyd3JpdGVzKiBleGlzdGluZyBjYWNoZSBpdGVtcyB3aGljaCBpcyB3aHkgaXQncyBzYWZlIGluIGNvbmN1cnJlbnQgbW9kZS5cbiAgICBpZiAoIWNoaWxkTm9kZXNGb3JQYXJhbGxlbFJvdXRlcikge1xuICAgICAgICBjaGlsZE5vZGVzRm9yUGFyYWxsZWxSb3V0ZXIgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNoaWxkTm9kZXMuc2V0KHBhcmFsbGVsUm91dGVyS2V5LCBjaGlsZE5vZGVzRm9yUGFyYWxsZWxSb3V0ZXIpO1xuICAgIH1cbiAgICAvLyBHZXQgdGhlIGFjdGl2ZSBzZWdtZW50IGluIHRoZSB0cmVlXG4gICAgLy8gVGhlIHJlYXNvbiBhcnJheXMgYXJlIHVzZWQgaW4gdGhlIGRhdGEgZm9ybWF0IGlzIHRoYXQgdGhlc2UgYXJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHNlcnZlciB0byB0aGUgYnJvd3NlciBzbyBpdCdzIG9wdGltaXplZCB0byBzYXZlIGJ5dGVzLlxuICAgIGNvbnN0IHRyZWVTZWdtZW50ID0gdHJlZVsxXVtwYXJhbGxlbFJvdXRlcktleV1bMF07XG4gICAgY29uc3QgY2hpbGRQcm9wU2VnbWVudCA9IGNoaWxkUHJvcC5zZWdtZW50O1xuICAgIC8vIElmIHNlZ21lbnQgaXMgYW4gYXJyYXkgaXQncyBhIGR5bmFtaWMgcm91dGUgYW5kIHdlIHdhbnQgdG8gcmVhZCB0aGUgZHluYW1pYyByb3V0ZSB2YWx1ZSBhcyB0aGUgc2VnbWVudCB0byBnZXQgZnJvbSB0aGUgY2FjaGUuXG4gICAgY29uc3QgY3VycmVudENoaWxkU2VnbWVudFZhbHVlID0gKDAsIF9nZXRzZWdtZW50dmFsdWUuZ2V0U2VnbWVudFZhbHVlKSh0cmVlU2VnbWVudCk7XG4gICAgLyoqXG4gICAqIERlY2lkZXMgd2hpY2ggc2VnbWVudHMgdG8ga2VlcCByZW5kZXJpbmcsIGFsbCBzZWdtZW50cyB0aGF0IGFyZSBub3QgYWN0aXZlIHdpbGwgYmUgd3JhcHBlZCBpbiBgPE9mZnNjcmVlbj5gLlxuICAgKi8gLy8gVE9ETy1BUFA6IEFkZCBoYW5kbGluZyBvZiBgPE9mZnNjcmVlbj5gIHdoZW4gaXQncyBhdmFpbGFibGUuXG4gICAgY29uc3QgcHJlc2VydmVkU2VnbWVudHMgPSBbXG4gICAgICAgIHRyZWVTZWdtZW50XG4gICAgXTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCBzdHlsZXMsIHByZXNlcnZlZFNlZ21lbnRzLm1hcCgocHJlc2VydmVkU2VnbWVudCk9PntcbiAgICAgICAgY29uc3QgaXNDaGlsZFByb3BTZWdtZW50ID0gKDAsIF9tYXRjaHNlZ21lbnRzLm1hdGNoU2VnbWVudCkocHJlc2VydmVkU2VnbWVudCwgY2hpbGRQcm9wU2VnbWVudCk7XG4gICAgICAgIGNvbnN0IHByZXNlcnZlZFNlZ21lbnRWYWx1ZSA9ICgwLCBfZ2V0c2VnbWVudHZhbHVlLmdldFNlZ21lbnRWYWx1ZSkocHJlc2VydmVkU2VnbWVudCk7XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gKDAsIF9jcmVhdGVyb3V0ZXJjYWNoZWtleS5jcmVhdGVSb3V0ZXJDYWNoZUtleSkocHJlc2VydmVkU2VnbWVudCk7XG4gICAgICAgIHJldHVybigvKlxuICAgICAgICAgICAgLSBFcnJvciBib3VuZGFyeVxuICAgICAgICAgICAgICAtIE9ubHkgcmVuZGVycyBlcnJvciBib3VuZGFyeSBpZiBlcnJvciBjb21wb25lbnQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAgIC0gUmVuZGVyZWQgZm9yIGVhY2ggc2VnbWVudCB0byBlbnN1cmUgdGhleSBoYXZlIHRoZWlyIG93biBlcnJvciBzdGF0ZS5cbiAgICAgICAgICAgIC0gTG9hZGluZyBib3VuZGFyeVxuICAgICAgICAgICAgICAtIE9ubHkgcmVuZGVycyBzdXNwZW5zZSBib3VuZGFyeSBpZiBsb2FkaW5nIGNvbXBvbmVudHMgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAgIC0gUmVuZGVyZWQgZm9yIGVhY2ggc2VnbWVudCB0byBlbnN1cmUgdGhleSBoYXZlIHRoZWlyIG93biBsb2FkaW5nIHN0YXRlLlxuICAgICAgICAgICAgICAtIFBhc3NlZCB0byB0aGUgcm91dGVyIGR1cmluZyByZW5kZXJpbmcgdG8gZW5zdXJlIGl0IGNhbiBiZSBpbW1lZGlhdGVseSByZW5kZXJlZCB3aGVuIHN1c3BlbmRpbmcgb24gYSBGbGlnaHQgZmV0Y2guXG4gICAgICAgICAgKi8gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5UZW1wbGF0ZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICAgIGtleTogKDAsIF9jcmVhdGVyb3V0ZXJjYWNoZWtleS5jcmVhdGVSb3V0ZXJDYWNoZUtleSkocHJlc2VydmVkU2VnbWVudCwgdHJ1ZSksXG4gICAgICAgICAgICB2YWx1ZTogLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFNjcm9sbEFuZEZvY3VzSGFuZGxlciwge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRQYXRoOiBzZWdtZW50UGF0aFxuICAgICAgICAgICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9lcnJvcmJvdW5kYXJ5LkVycm9yQm91bmRhcnksIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvbXBvbmVudDogZXJyb3IsXG4gICAgICAgICAgICAgICAgZXJyb3JTdHlsZXM6IGVycm9yU3R5bGVzXG4gICAgICAgICAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTG9hZGluZ0JvdW5kYXJ5LCB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZGluZzogaGFzTG9hZGluZyxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBsb2FkaW5nLFxuICAgICAgICAgICAgICAgIGxvYWRpbmdTdHlsZXM6IGxvYWRpbmdTdHlsZXNcbiAgICAgICAgICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfbm90Zm91bmRib3VuZGFyeS5Ob3RGb3VuZEJvdW5kYXJ5LCB7XG4gICAgICAgICAgICAgICAgbm90Rm91bmQ6IG5vdEZvdW5kLFxuICAgICAgICAgICAgICAgIG5vdEZvdW5kU3R5bGVzOiBub3RGb3VuZFN0eWxlc1xuICAgICAgICAgICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWRpcmVjdGJvdW5kYXJ5LlJlZGlyZWN0Qm91bmRhcnksIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChJbm5lckxheW91dFJvdXRlciwge1xuICAgICAgICAgICAgICAgIHBhcmFsbGVsUm91dGVyS2V5OiBwYXJhbGxlbFJvdXRlcktleSxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICB0cmVlOiB0cmVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTm9kZXM6IGNoaWxkTm9kZXNGb3JQYXJhbGxlbFJvdXRlcixcbiAgICAgICAgICAgICAgICBjaGlsZFByb3A6IGlzQ2hpbGRQcm9wU2VnbWVudCA/IGNoaWxkUHJvcCA6IG51bGwsXG4gICAgICAgICAgICAgICAgc2VnbWVudFBhdGg6IHNlZ21lbnRQYXRoLFxuICAgICAgICAgICAgICAgIGNhY2hlS2V5OiBjYWNoZUtleSxcbiAgICAgICAgICAgICAgICBpc0FjdGl2ZTogY3VycmVudENoaWxkU2VnbWVudFZhbHVlID09PSBwcmVzZXJ2ZWRTZWdtZW50VmFsdWVcbiAgICAgICAgICAgIH0pKSkpKSlcbiAgICAgICAgfSwgdGVtcGxhdGVTdHlsZXMsIHRlbXBsYXRlKSk7XG4gICAgfSkpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYXlvdXQtcm91dGVyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJPdXRlckxheW91dFJvdXRlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkIiwiX3JlYWN0IiwiXyIsIl9yZWFjdGRvbSIsIl9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSIsIl9mZXRjaHNlcnZlcnJlc3BvbnNlIiwiX2luZmluaXRlcHJvbWlzZSIsIl9lcnJvcmJvdW5kYXJ5IiwiX21hdGNoc2VnbWVudHMiLCJfaGFuZGxlc21vb3Roc2Nyb2xsIiwiX3JlZGlyZWN0Ym91bmRhcnkiLCJfbm90Zm91bmRib3VuZGFyeSIsIl9nZXRzZWdtZW50dmFsdWUiLCJfY3JlYXRlcm91dGVyY2FjaGVrZXkiLCJfY3JlYXRlcmVjb3JkZnJvbXRoZW5hYmxlIiwid2Fsa0FkZFJlZmV0Y2giLCJzZWdtZW50UGF0aFRvV2FsayIsInRyZWVUb1JlY3JlYXRlIiwic2VnbWVudCIsInBhcmFsbGVsUm91dGVLZXkiLCJpc0xhc3QiLCJsZW5ndGgiLCJtYXRjaFNlZ21lbnQiLCJoYXNPd25Qcm9wZXJ0eSIsInN1YlRyZWUiLCJ1bmRlZmluZWQiLCJzbGljZSIsImZpbmRET01Ob2RlIiwiaW5zdGFuY2UiLCJwcm9jZXNzIiwib3JpZ2luYWxDb25zb2xlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJfbGVuIiwiYXJndW1lbnRzIiwibWVzc2FnZXMiLCJBcnJheSIsIl9rZXkiLCJpbmNsdWRlcyIsImRlZmF1bHQiLCJyZWN0UHJvcGVydGllcyIsInNob3VsZFNraXBFbGVtZW50IiwiZWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJwb3NpdGlvbiIsIndhcm4iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZXZlcnkiLCJpdGVtIiwidG9wT2ZFbGVtZW50SW5WaWV3cG9ydCIsInZpZXdwb3J0SGVpZ2h0IiwidG9wIiwiZ2V0SGFzaEZyYWdtZW50RG9tTm9kZSIsImhhc2hGcmFnbWVudCIsImRvY3VtZW50IiwiYm9keSIsIl9kb2N1bWVudF9nZXRFbGVtZW50QnlJZCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJJbm5lclNjcm9sbEFuZEZvY3VzSGFuZGxlciIsIkNvbXBvbmVudCIsImNvbXBvbmVudERpZE1vdW50IiwiaGFuZGxlUG90ZW50aWFsU2Nyb2xsIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJvcHMiLCJmb2N1c0FuZFNjcm9sbFJlZiIsImFwcGx5IiwicmVuZGVyIiwiY2hpbGRyZW4iLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJzZWdtZW50UGF0aCIsInNlZ21lbnRQYXRocyIsInNvbWUiLCJzY3JvbGxSZWZTZWdtZW50UGF0aCIsImluZGV4IiwiZG9tTm9kZSIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIm5leHRFbGVtZW50U2libGluZyIsImhhbmRsZVNtb290aFNjcm9sbCIsInNjcm9sbEludG9WaWV3IiwiaHRtbEVsZW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxUb3AiLCJkb250Rm9yY2VMYXlvdXQiLCJvbmx5SGFzaENoYW5nZSIsImZvY3VzIiwiU2Nyb2xsQW5kRm9jdXNIYW5kbGVyIiwicGFyYW0iLCJjb250ZXh0IiwidXNlQ29udGV4dCIsIkdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJFcnJvciIsImNyZWF0ZUVsZW1lbnQiLCJJbm5lckxheW91dFJvdXRlciIsInBhcmFsbGVsUm91dGVyS2V5IiwidXJsIiwiY2hpbGROb2RlcyIsImNoaWxkUHJvcCIsInRyZWUiLCJjYWNoZUtleSIsImJ1aWxkSWQiLCJjaGFuZ2VCeVNlcnZlclJlc3BvbnNlIiwiZnVsbFRyZWUiLCJjaGlsZE5vZGUiLCJjdXJyZW50Iiwic3RhdHVzIiwiQ2FjaGVTdGF0ZXMiLCJSRUFEWSIsImRhdGEiLCJzdWJUcmVlRGF0YSIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwic2V0IiwiTEFaWV9JTklUSUFMSVpFRCIsInJlZmV0Y2hUcmVlIiwiREFUQV9GRVRDSCIsImNyZWF0ZVJlY29yZEZyb21UaGVuYWJsZSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsIm5leHRVcmwiLCJoZWFkIiwiZmxpZ2h0RGF0YSIsIm92ZXJyaWRlQ2Fub25pY2FsVXJsIiwidXNlIiwic2V0VGltZW91dCIsInN0YXJ0VHJhbnNpdGlvbiIsImNyZWF0ZUluZmluaXRlUHJvbWlzZSIsInN1YnRyZWUiLCJMYXlvdXRSb3V0ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJMb2FkaW5nQm91bmRhcnkiLCJsb2FkaW5nIiwibG9hZGluZ1N0eWxlcyIsImhhc0xvYWRpbmciLCJTdXNwZW5zZSIsImZhbGxiYWNrIiwiRnJhZ21lbnQiLCJlcnJvclN0eWxlcyIsInRlbXBsYXRlU3R5bGVzIiwidGVtcGxhdGUiLCJub3RGb3VuZCIsIm5vdEZvdW5kU3R5bGVzIiwic3R5bGVzIiwiY2hpbGROb2Rlc0ZvclBhcmFsbGVsUm91dGVyIiwidHJlZVNlZ21lbnQiLCJjaGlsZFByb3BTZWdtZW50IiwiY3VycmVudENoaWxkU2VnbWVudFZhbHVlIiwiZ2V0U2VnbWVudFZhbHVlIiwicHJlc2VydmVkU2VnbWVudHMiLCJtYXAiLCJwcmVzZXJ2ZWRTZWdtZW50IiwiaXNDaGlsZFByb3BTZWdtZW50IiwicHJlc2VydmVkU2VnbWVudFZhbHVlIiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJUZW1wbGF0ZUNvbnRleHQiLCJrZXkiLCJFcnJvckJvdW5kYXJ5IiwiZXJyb3JDb21wb25lbnQiLCJOb3RGb3VuZEJvdW5kYXJ5IiwiUmVkaXJlY3RCb3VuZGFyeSIsImlzQWN0aXZlIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":
-/*!**********************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/render-from-template-context.js ***!
- \**********************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RenderFromTemplateContext;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nfunction RenderFromTemplateContext() {\n const children = (0, _react.useContext)(_approutercontextsharedruntime.TemplateContext);\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children);\n}\n_c = RenderFromTemplateContext;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=render-from-template-context.js.map\nvar _c;\n$RefreshReg$(_c, \"RenderFromTemplateContext\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyIsIm1hcHBpbmdzIjoicURBRWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDRCQUE0QkMsbUJBQU9BLENBQUMsa0lBQTBDO0FBQ3BGLE1BQU1DLFNBQVMsV0FBVyxHQUFHRiwwQkFBMEJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsbUZBQU87QUFDeEUsTUFBTUcsaUNBQWlDSCxtQkFBT0EsQ0FBQyx3SkFBb0Q7QUFDbkcsU0FBU0Y7SUFDTCxNQUFNTSxXQUFXLENBQUMsR0FBR0gsT0FBT0ksVUFBVSxFQUFFRiwrQkFBK0JHLGVBQWU7SUFDdEYsT0FBTyxXQUFXLEdBQUdMLE9BQU9NLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDUCxPQUFPTSxPQUFPLENBQUNFLFFBQVEsRUFBRSxNQUFNTDtBQUNyRjtLQUhTTjtBQUtULElBQUksQ0FBQyxPQUFPSixRQUFRYSxPQUFPLEtBQUssY0FBZSxPQUFPYixRQUFRYSxPQUFPLEtBQUssWUFBWWIsUUFBUWEsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPYixRQUFRYSxPQUFPLENBQUNHLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRYSxPQUFPLEVBQUUsY0FBYztRQUFFWixPQUFPO0lBQUs7SUFDbkVILE9BQU9tQixNQUFNLENBQUNqQixRQUFRYSxPQUFPLEVBQUViO0lBQy9Ca0IsT0FBT2xCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLHdEQUF3RCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanM/OGVlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW5kZXJGcm9tVGVtcGxhdGVDb250ZXh0O1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLl8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmZ1bmN0aW9uIFJlbmRlckZyb21UZW1wbGF0ZUNvbnRleHQoKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSAoMCwgX3JlYWN0LnVzZUNvbnRleHQpKF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5UZW1wbGF0ZUNvbnRleHQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiUmVuZGVyRnJvbVRlbXBsYXRlQ29udGV4dCIsIl9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSIsImNoaWxkcmVuIiwidXNlQ29udGV4dCIsIlRlbXBsYXRlQ29udGV4dCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/searchparams-bailout-proxy.js":
-/*!********************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/searchparams-bailout-proxy.js ***!
- \********************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createSearchParamsBailoutProxy\", ({\n enumerable: true,\n get: function() {\n return createSearchParamsBailoutProxy;\n }\n}));\nconst _staticgenerationbailout = __webpack_require__(/*! ./static-generation-bailout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nfunction createSearchParamsBailoutProxy() {\n return new Proxy({}, {\n get (_target, prop) {\n // React adds some properties on the object when serializing for client components\n if (typeof prop === \"string\") {\n (0, _staticgenerationbailout.staticGenerationBailout)(\"searchParams.\" + prop);\n }\n }\n });\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=searchparams-bailout-proxy.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJveHkuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILGtFQUFpRTtJQUM3REksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsZ0lBQTZCO0FBQ3RFLFNBQVNGO0lBQ0wsT0FBTyxJQUFJRyxNQUFNLENBQUMsR0FBRztRQUNqQkosS0FBS0ssT0FBTyxFQUFFQyxJQUFJO1lBQ2Qsa0ZBQWtGO1lBQ2xGLElBQUksT0FBT0EsU0FBUyxVQUFVO2dCQUN6QixJQUFHSix5QkFBeUJLLHVCQUF1QixFQUFFLGtCQUFrQkQ7WUFDNUU7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT1QsUUFBUVcsT0FBTyxLQUFLLGNBQWUsT0FBT1gsUUFBUVcsT0FBTyxLQUFLLFlBQVlYLFFBQVFXLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT1gsUUFBUVcsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2QsT0FBT0MsY0FBYyxDQUFDQyxRQUFRVyxPQUFPLEVBQUUsY0FBYztRQUFFVixPQUFPO0lBQUs7SUFDbkVILE9BQU9lLE1BQU0sQ0FBQ2IsUUFBUVcsT0FBTyxFQUFFWDtJQUMvQmMsT0FBT2QsT0FBTyxHQUFHQSxRQUFRVyxPQUFPO0FBQ2xDLEVBRUEsc0RBQXNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJveHkuanM/YjZkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNyZWF0ZVNlYXJjaFBhcmFtc0JhaWxvdXRQcm94eVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5O1xuICAgIH1cbn0pO1xuY29uc3QgX3N0YXRpY2dlbmVyYXRpb25iYWlsb3V0ID0gcmVxdWlyZShcIi4vc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dFwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFBhcmFtc0JhaWxvdXRQcm94eSgpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgIGdldCAoX3RhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgLy8gUmVhY3QgYWRkcyBzb21lIHByb3BlcnRpZXMgb24gdGhlIG9iamVjdCB3aGVuIHNlcmlhbGl6aW5nIGZvciBjbGllbnQgY29tcG9uZW50c1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgKDAsIF9zdGF0aWNnZW5lcmF0aW9uYmFpbG91dC5zdGF0aWNHZW5lcmF0aW9uQmFpbG91dCkoXCJzZWFyY2hQYXJhbXMuXCIgKyBwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm94eS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5IiwiX3N0YXRpY2dlbmVyYXRpb25iYWlsb3V0IiwicmVxdWlyZSIsIlByb3h5IiwiX3RhcmdldCIsInByb3AiLCJzdGF0aWNHZW5lcmF0aW9uQmFpbG91dCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/searchparams-bailout-proxy.js\n"));
-
-/***/ }),
-
-/***/ "(shared)/./node_modules/next/dist/client/components/static-generation-async-storage.external.js":
-/*!**********************************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/static-generation-async-storage.external.js ***!
- \**********************************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"staticGenerationAsyncStorage\", ({\n enumerable: true,\n get: function() {\n return staticGenerationAsyncStorage;\n }\n}));\nconst _asynclocalstorage = __webpack_require__(/*! ./async-local-storage */ \"(shared)/./node_modules/next/dist/client/components/async-local-storage.js\");\nconst staticGenerationAsyncStorage = (0, _asynclocalstorage.createAsyncLocalStorage)();\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-async-storage.external.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNoYXJlZCkvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILGdFQUErRDtJQUMzREksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLHFCQUFxQkMsbUJBQU9BLENBQUMseUdBQXVCO0FBQzFELE1BQU1GLCtCQUErQixDQUFDLEdBQUdDLG1CQUFtQkUsdUJBQXVCO0FBRW5GLElBQUksQ0FBQyxPQUFPUCxRQUFRUSxPQUFPLEtBQUssY0FBZSxPQUFPUixRQUFRUSxPQUFPLEtBQUssWUFBWVIsUUFBUVEsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPUixRQUFRUSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLWCxPQUFPQyxjQUFjLENBQUNDLFFBQVFRLE9BQU8sRUFBRSxjQUFjO1FBQUVQLE9BQU87SUFBSztJQUNuRUgsT0FBT1ksTUFBTSxDQUFDVixRQUFRUSxPQUFPLEVBQUVSO0lBQy9CVyxPQUFPWCxPQUFPLEdBQUdBLFFBQVFRLE9BQU87QUFDbEMsRUFFQSxvRUFBb0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsLmpzPzVlNjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlO1xuICAgIH1cbn0pO1xuY29uc3QgX2FzeW5jbG9jYWxzdG9yYWdlID0gcmVxdWlyZShcIi4vYXN5bmMtbG9jYWwtc3RvcmFnZVwiKTtcbmNvbnN0IHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UgPSAoMCwgX2FzeW5jbG9jYWxzdG9yYWdlLmNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlKSgpO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiX2FzeW5jbG9jYWxzdG9yYWdlIiwicmVxdWlyZSIsImNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(shared)/./node_modules/next/dist/client/components/static-generation-async-storage.external.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-bailout.js":
-/*!*******************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/static-generation-bailout.js ***!
- \*******************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"staticGenerationBailout\", ({\n enumerable: true,\n get: function() {\n return staticGenerationBailout;\n }\n}));\nconst _hooksservercontext = __webpack_require__(/*! ./hooks-server-context */ \"(app-pages-browser)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationasyncstorageexternal = __webpack_require__(/*! ./static-generation-async-storage.external */ \"(shared)/./node_modules/next/dist/client/components/static-generation-async-storage.external.js\");\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args);\n this.code = \"NEXT_STATIC_GEN_BAILOUT\";\n }\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, opts)=>{\n const staticGenerationStore = _staticgenerationasyncstorageexternal.staticGenerationAsyncStorage.getStore();\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.forceStatic) {\n return true;\n }\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.dynamicShouldError) {\n var _opts_dynamic;\n throw new StaticGenBailoutError(formatErrorMessage(reason, {\n ...opts,\n dynamic: (_opts_dynamic = opts == null ? void 0 : opts.dynamic) != null ? _opts_dynamic : \"error\"\n }));\n }\n if (staticGenerationStore) {\n staticGenerationStore.revalidate = 0;\n if (!(opts == null ? void 0 : opts.dynamic)) {\n // we can statically prefetch pages that opt into dynamic,\n // but not things like headers/cookies\n staticGenerationStore.staticPrefetchBailout = true;\n }\n }\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.isStaticGeneration) {\n const err = new _hooksservercontext.DynamicServerError(formatErrorMessage(reason, {\n ...opts,\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 staticGenerationStore.dynamicUsageDescription = reason;\n staticGenerationStore.dynamicUsageStack = err.stack;\n throw err;\n }\n return false;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkRBQTBEO0lBQ3RESSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsc0JBQXNCQyxtQkFBT0EsQ0FBQyxzSEFBd0I7QUFDNUQsTUFBTUMsd0NBQXdDRCxtQkFBT0EsQ0FBQyxtSkFBNEM7QUFDbEcsTUFBTUUsOEJBQThCQztJQUNoQ0MsWUFBWSxHQUFHQyxJQUFJLENBQUM7UUFDaEIsS0FBSyxJQUFJQTtRQUNULElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2hCO0FBQ0o7QUFDQSxTQUFTQyxtQkFBbUJDLE1BQU0sRUFBRUMsSUFBSTtJQUNwQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxFQUFFLEdBQUdGLFFBQVEsQ0FBQztJQUNuQyxNQUFNRyxTQUFTRCxPQUFPLDBCQUEwQkEsT0FBTztJQUN2RCxPQUFPLFNBQVVELENBQUFBLFVBQVUsdUJBQXVCQSxVQUFVLE9BQU8sRUFBQyxJQUFLLHVEQUF1REYsU0FBUyxPQUFPSTtBQUNwSjtBQUNBLE1BQU1kLDBCQUEwQixDQUFDVSxRQUFRQztJQUNyQyxNQUFNSSx3QkFBd0JaLHNDQUFzQ2EsNEJBQTRCLENBQUNDLFFBQVE7SUFDekcsSUFBSUYseUJBQXlCLE9BQU8sS0FBSyxJQUFJQSxzQkFBc0JHLFdBQVcsRUFBRTtRQUM1RSxPQUFPO0lBQ1g7SUFDQSxJQUFJSCx5QkFBeUIsT0FBTyxLQUFLLElBQUlBLHNCQUFzQkksa0JBQWtCLEVBQUU7UUFDbkYsSUFBSUM7UUFDSixNQUFNLElBQUloQixzQkFBc0JLLG1CQUFtQkMsUUFBUTtZQUN2RCxHQUFHQyxJQUFJO1lBQ1BDLFNBQVMsQ0FBQ1EsZ0JBQWdCVCxRQUFRLE9BQU8sS0FBSyxJQUFJQSxLQUFLQyxPQUFPLEtBQUssT0FBT1EsZ0JBQWdCO1FBQzlGO0lBQ0o7SUFDQSxJQUFJTCx1QkFBdUI7UUFDdkJBLHNCQUFzQk0sVUFBVSxHQUFHO1FBQ25DLElBQUksQ0FBRVYsQ0FBQUEsUUFBUSxPQUFPLEtBQUssSUFBSUEsS0FBS0MsT0FBTyxHQUFHO1lBQ3pDLDBEQUEwRDtZQUMxRCxzQ0FBc0M7WUFDdENHLHNCQUFzQk8scUJBQXFCLEdBQUc7UUFDbEQ7SUFDSjtJQUNBLElBQUlQLHlCQUF5QixPQUFPLEtBQUssSUFBSUEsc0JBQXNCUSxrQkFBa0IsRUFBRTtRQUNuRixNQUFNQyxNQUFNLElBQUl2QixvQkFBb0J3QixrQkFBa0IsQ0FBQ2hCLG1CQUFtQkMsUUFBUTtZQUM5RSxHQUFHQyxJQUFJO1lBQ1AsdUVBQXVFO1lBQ3ZFLDhFQUE4RTtZQUM5RUUsTUFBTTtRQUNWO1FBQ0FFLHNCQUFzQlcsdUJBQXVCLEdBQUdoQjtRQUNoREssc0JBQXNCWSxpQkFBaUIsR0FBR0gsSUFBSUksS0FBSztRQUNuRCxNQUFNSjtJQUNWO0lBQ0EsT0FBTztBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU81QixRQUFRaUMsT0FBTyxLQUFLLGNBQWUsT0FBT2pDLFFBQVFpQyxPQUFPLEtBQUssWUFBWWpDLFFBQVFpQyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9qQyxRQUFRaUMsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3BDLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWlDLE9BQU8sRUFBRSxjQUFjO1FBQUVoQyxPQUFPO0lBQUs7SUFDbkVILE9BQU9xQyxNQUFNLENBQUNuQyxRQUFRaUMsT0FBTyxFQUFFakM7SUFDL0JvQyxPQUFPcEMsT0FBTyxHQUFHQSxRQUFRaUMsT0FBTztBQUNsQyxFQUVBLHFEQUFxRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanM/MDQ2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInN0YXRpY0dlbmVyYXRpb25CYWlsb3V0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdGF0aWNHZW5lcmF0aW9uQmFpbG91dDtcbiAgICB9XG59KTtcbmNvbnN0IF9ob29rc3NlcnZlcmNvbnRleHQgPSByZXF1aXJlKFwiLi9ob29rcy1zZXJ2ZXItY29udGV4dFwiKTtcbmNvbnN0IF9zdGF0aWNnZW5lcmF0aW9uYXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY2xhc3MgU3RhdGljR2VuQmFpbG91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3Mpe1xuICAgICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgICAgdGhpcy5jb2RlID0gXCJORVhUX1NUQVRJQ19HRU5fQkFJTE9VVFwiO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdEVycm9yTWVzc2FnZShyZWFzb24sIG9wdHMpIHtcbiAgICBjb25zdCB7IGR5bmFtaWMsIGxpbmsgfSA9IG9wdHMgfHwge307XG4gICAgY29uc3Qgc3VmZml4ID0gbGluayA/IFwiIFNlZSBtb3JlIGluZm8gaGVyZTogXCIgKyBsaW5rIDogXCJcIjtcbiAgICByZXR1cm4gXCJQYWdlXCIgKyAoZHluYW1pYyA/ICcgd2l0aCBgZHluYW1pYyA9IFwiJyArIGR5bmFtaWMgKyAnXCJgJyA6IFwiXCIpICsgXCIgY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgYFwiICsgcmVhc29uICsgXCJgLlwiICsgc3VmZml4O1xufVxuY29uc3Qgc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQgPSAocmVhc29uLCBvcHRzKT0+e1xuICAgIGNvbnN0IHN0YXRpY0dlbmVyYXRpb25TdG9yZSA9IF9zdGF0aWNnZW5lcmF0aW9uYXN5bmNzdG9yYWdlZXh0ZXJuYWwuc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpO1xuICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5mb3JjZVN0YXRpYykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHN0YXRpY0dlbmVyYXRpb25TdG9yZSA9PSBudWxsID8gdm9pZCAwIDogc3RhdGljR2VuZXJhdGlvblN0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICB2YXIgX29wdHNfZHluYW1pYztcbiAgICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcihmb3JtYXRFcnJvck1lc3NhZ2UocmVhc29uLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgZHluYW1pYzogKF9vcHRzX2R5bmFtaWMgPSBvcHRzID09IG51bGwgPyB2b2lkIDAgOiBvcHRzLmR5bmFtaWMpICE9IG51bGwgPyBfb3B0c19keW5hbWljIDogXCJlcnJvclwiXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKHN0YXRpY0dlbmVyYXRpb25TdG9yZSkge1xuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9IDA7XG4gICAgICAgIGlmICghKG9wdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdHMuZHluYW1pYykpIHtcbiAgICAgICAgICAgIC8vIHdlIGNhbiBzdGF0aWNhbGx5IHByZWZldGNoIHBhZ2VzIHRoYXQgb3B0IGludG8gZHluYW1pYyxcbiAgICAgICAgICAgIC8vIGJ1dCBub3QgdGhpbmdzIGxpa2UgaGVhZGVycy9jb29raWVzXG4gICAgICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuc3RhdGljUHJlZmV0Y2hCYWlsb3V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhdGljR2VuZXJhdGlvblN0b3JlID09IG51bGwgPyB2b2lkIDAgOiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuaXNTdGF0aWNHZW5lcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBfaG9va3NzZXJ2ZXJjb250ZXh0LkR5bmFtaWNTZXJ2ZXJFcnJvcihmb3JtYXRFcnJvck1lc3NhZ2UocmVhc29uLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgLy8gdGhpcyBlcnJvciBzaG91bGQgYmUgY2F1Z2h0IGJ5IE5leHQgdG8gYmFpbCBvdXQgb2Ygc3RhdGljIGdlbmVyYXRpb25cbiAgICAgICAgICAgIC8vIGluIGNhc2UgaXQncyB1bmNhdWdodCwgdGhpcyBsaW5rIHByb3ZpZGVzIHNvbWUgYWRkaXRpb25hbCBjb250ZXh0IGFzIHRvIHdoeVxuICAgICAgICAgICAgbGluazogXCJodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9keW5hbWljLXNlcnZlci1lcnJvclwiXG4gICAgICAgIH0pKTtcbiAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLmR5bmFtaWNVc2FnZURlc2NyaXB0aW9uID0gcmVhc29uO1xuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZHluYW1pY1VzYWdlU3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdGljLWdlbmVyYXRpb24tYmFpbG91dC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic3RhdGljR2VuZXJhdGlvbkJhaWxvdXQiLCJfaG9va3NzZXJ2ZXJjb250ZXh0IiwicmVxdWlyZSIsIl9zdGF0aWNnZW5lcmF0aW9uYXN5bmNzdG9yYWdlZXh0ZXJuYWwiLCJTdGF0aWNHZW5CYWlsb3V0RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImNvZGUiLCJmb3JtYXRFcnJvck1lc3NhZ2UiLCJyZWFzb24iLCJvcHRzIiwiZHluYW1pYyIsImxpbmsiLCJzdWZmaXgiLCJzdGF0aWNHZW5lcmF0aW9uU3RvcmUiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiZ2V0U3RvcmUiLCJmb3JjZVN0YXRpYyIsImR5bmFtaWNTaG91bGRFcnJvciIsIl9vcHRzX2R5bmFtaWMiLCJyZXZhbGlkYXRlIiwic3RhdGljUHJlZmV0Y2hCYWlsb3V0IiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwiZXJyIiwiRHluYW1pY1NlcnZlckVycm9yIiwiZHluYW1pY1VzYWdlRGVzY3JpcHRpb24iLCJkeW5hbWljVXNhZ2VTdGFjayIsInN0YWNrIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-bailout.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js":
-/*!*****************************************************************************************************!*\
- !*** ./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js ***!
- \*****************************************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return StaticGenerationSearchParamsBailoutProvider;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _searchparamsbailoutproxy = __webpack_require__(/*! ./searchparams-bailout-proxy */ \"(app-pages-browser)/./node_modules/next/dist/client/components/searchparams-bailout-proxy.js\");\nfunction StaticGenerationSearchParamsBailoutProvider(param) {\n let { Component, propsForComponent, isStaticGeneration } = param;\n if (isStaticGeneration) {\n const searchParams = (0, _searchparamsbailoutproxy.createSearchParamsBailoutProxy)();\n return /*#__PURE__*/ _react.default.createElement(Component, {\n searchParams: searchParams,\n ...propsForComponent\n });\n }\n return /*#__PURE__*/ _react.default.createElement(Component, propsForComponent);\n}\n_c = StaticGenerationSearchParamsBailoutProvider;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-searchparams-bailout-provider.js.map\nvar _c;\n$RefreshReg$(_c, \"StaticGenerationSearchParamsBailoutProvider\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJvdmlkZXIuanMiLCJtYXBwaW5ncyI6InFEQUVhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLGdJQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLG1GQUFPO0FBQ3ZFLE1BQU1HLDRCQUE0QkgsbUJBQU9BLENBQUMsa0lBQThCO0FBQ3hFLFNBQVNGLDRDQUE0Q00sS0FBSztJQUN0RCxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsaUJBQWlCLEVBQUVDLGtCQUFrQixFQUFFLEdBQUdIO0lBQzNELElBQUlHLG9CQUFvQjtRQUNwQixNQUFNQyxlQUFlLENBQUMsR0FBR0wsMEJBQTBCTSw4QkFBOEI7UUFDakYsT0FBTyxXQUFXLEdBQUdSLE9BQU9TLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDTixXQUFXO1lBQ3pERyxjQUFjQTtZQUNkLEdBQUdGLGlCQUFpQjtRQUN4QjtJQUNKO0lBQ0EsT0FBTyxXQUFXLEdBQUdMLE9BQU9TLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDTixXQUFXQztBQUNqRTtLQVZTUjtBQVlULElBQUksQ0FBQyxPQUFPSixRQUFRZ0IsT0FBTyxLQUFLLGNBQWUsT0FBT2hCLFFBQVFnQixPQUFPLEtBQUssWUFBWWhCLFFBQVFnQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9oQixRQUFRZ0IsT0FBTyxDQUFDRSxVQUFVLEtBQUssYUFBYTtJQUNyS3BCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWdCLE9BQU8sRUFBRSxjQUFjO1FBQUVmLE9BQU87SUFBSztJQUNuRUgsT0FBT3FCLE1BQU0sQ0FBQ25CLFFBQVFnQixPQUFPLEVBQUVoQjtJQUMvQm9CLE9BQU9wQixPQUFPLEdBQUdBLFFBQVFnQixPQUFPO0FBQ2xDLEVBRUEsMkVBQTJFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJvdmlkZXIuanM/OTcxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBTdGF0aWNHZW5lcmF0aW9uU2VhcmNoUGFyYW1zQmFpbG91dFByb3ZpZGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9zZWFyY2hwYXJhbXNiYWlsb3V0cHJveHkgPSByZXF1aXJlKFwiLi9zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm94eVwiKTtcbmZ1bmN0aW9uIFN0YXRpY0dlbmVyYXRpb25TZWFyY2hQYXJhbXNCYWlsb3V0UHJvdmlkZXIocGFyYW0pIHtcbiAgICBsZXQgeyBDb21wb25lbnQsIHByb3BzRm9yQ29tcG9uZW50LCBpc1N0YXRpY0dlbmVyYXRpb24gfSA9IHBhcmFtO1xuICAgIGlmIChpc1N0YXRpY0dlbmVyYXRpb24pIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gKDAsIF9zZWFyY2hwYXJhbXNiYWlsb3V0cHJveHkuY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5KSgpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwge1xuICAgICAgICAgICAgc2VhcmNoUGFyYW1zOiBzZWFyY2hQYXJhbXMsXG4gICAgICAgICAgICAuLi5wcm9wc0ZvckNvbXBvbmVudFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHByb3BzRm9yQ29tcG9uZW50KTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhdGljLWdlbmVyYXRpb24tc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJvdmlkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIlN0YXRpY0dlbmVyYXRpb25TZWFyY2hQYXJhbXNCYWlsb3V0UHJvdmlkZXIiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9zZWFyY2hwYXJhbXNiYWlsb3V0cHJveHkiLCJwYXJhbSIsIkNvbXBvbmVudCIsInByb3BzRm9yQ29tcG9uZW50IiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwic2VhcmNoUGFyYW1zIiwiY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5IiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\n"));
-
-/***/ }),
-
-/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js":
-/*!********************************************************************************!*\
- !*** ./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js ***!
- \********************************************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval(__webpack_require__.ts("/**\n * Run function with `scroll-behavior: auto` applied to ``.\n * This css change will be reverted after the function finishes.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleSmoothScroll\", ({\n enumerable: true,\n get: function() {\n return handleSmoothScroll;\n }\n}));\nfunction handleSmoothScroll(fn, options) {\n if (options === void 0) options = {};\n // if only the hash is changed, we don't need to disable smooth scrolling\n // we only care to prevent smooth scrolling when navigating to a new page to avoid jarring UX\n if (options.onlyHashChange) {\n fn();\n return;\n }\n const htmlElement = document.documentElement;\n const existing = htmlElement.style.scrollBehavior;\n htmlElement.style.scrollBehavior = \"auto\";\n if (!options.dontForceLayout) {\n // In Chrome-based browsers we need to force reflow before calling `scrollTo`.\n // Otherwise it will not pickup the change in scrollBehavior\n // More info here: https://github.com/vercel/next.js/issues/40719#issuecomment-1336248042\n htmlElement.getClientRects();\n }\n fn();\n htmlElement.style.scrollBehavior = existing;\n} //# sourceMappingURL=handle-smooth-scroll.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaGFuZGxlLXNtb290aC1zY3JvbGwuanMiLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQWdCO0FBQ2pCQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsc0RBQXFEO0lBQ2pESSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsU0FBU0EsbUJBQW1CQyxFQUFFLEVBQUVDLE9BQU87SUFDbkMsSUFBSUEsWUFBWSxLQUFLLEdBQUdBLFVBQVUsQ0FBQztJQUNuQyx5RUFBeUU7SUFDekUsNkZBQTZGO0lBQzdGLElBQUlBLFFBQVFDLGNBQWMsRUFBRTtRQUN4QkY7UUFDQTtJQUNKO0lBQ0EsTUFBTUcsY0FBY0MsU0FBU0MsZUFBZTtJQUM1QyxNQUFNQyxXQUFXSCxZQUFZSSxLQUFLLENBQUNDLGNBQWM7SUFDakRMLFlBQVlJLEtBQUssQ0FBQ0MsY0FBYyxHQUFHO0lBQ25DLElBQUksQ0FBQ1AsUUFBUVEsZUFBZSxFQUFFO1FBQzFCLDhFQUE4RTtRQUM5RSw0REFBNEQ7UUFDNUQseUZBQXlGO1FBQ3pGTixZQUFZTyxjQUFjO0lBQzlCO0lBQ0FWO0lBQ0FHLFlBQVlJLEtBQUssQ0FBQ0MsY0FBYyxHQUFHRjtBQUN2QyxFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2hhbmRsZS1zbW9vdGgtc2Nyb2xsLmpzPzY1NjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW4gZnVuY3Rpb24gd2l0aCBgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvYCBhcHBsaWVkIHRvIGA8aHRtbC8+YC5cbiAqIFRoaXMgY3NzIGNoYW5nZSB3aWxsIGJlIHJldmVydGVkIGFmdGVyIHRoZSBmdW5jdGlvbiBmaW5pc2hlcy5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImhhbmRsZVNtb290aFNjcm9sbFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFuZGxlU21vb3RoU2Nyb2xsO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gaGFuZGxlU21vb3RoU2Nyb2xsKGZuLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgb3B0aW9ucyA9IHt9O1xuICAgIC8vIGlmIG9ubHkgdGhlIGhhc2ggaXMgY2hhbmdlZCwgd2UgZG9uJ3QgbmVlZCB0byBkaXNhYmxlIHNtb290aCBzY3JvbGxpbmdcbiAgICAvLyB3ZSBvbmx5IGNhcmUgdG8gcHJldmVudCBzbW9vdGggc2Nyb2xsaW5nIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlIHRvIGF2b2lkIGphcnJpbmcgVVhcbiAgICBpZiAob3B0aW9ucy5vbmx5SGFzaENoYW5nZSkge1xuICAgICAgICBmbigpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGV4aXN0aW5nID0gaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3I7XG4gICAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBcImF1dG9cIjtcbiAgICBpZiAoIW9wdGlvbnMuZG9udEZvcmNlTGF5b3V0KSB7XG4gICAgICAgIC8vIEluIENocm9tZS1iYXNlZCBicm93c2VycyB3ZSBuZWVkIHRvIGZvcmNlIHJlZmxvdyBiZWZvcmUgY2FsbGluZyBgc2Nyb2xsVG9gLlxuICAgICAgICAvLyBPdGhlcndpc2UgaXQgd2lsbCBub3QgcGlja3VwIHRoZSBjaGFuZ2UgaW4gc2Nyb2xsQmVoYXZpb3JcbiAgICAgICAgLy8gTW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9pc3N1ZXMvNDA3MTkjaXNzdWVjb21tZW50LTEzMzYyNDgwNDJcbiAgICAgICAgaHRtbEVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICB9XG4gICAgZm4oKTtcbiAgICBodG1sRWxlbWVudC5zdHlsZS5zY3JvbGxCZWhhdmlvciA9IGV4aXN0aW5nO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYW5kbGUtc21vb3RoLXNjcm9sbC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiaGFuZGxlU21vb3RoU2Nyb2xsIiwiZm4iLCJvcHRpb25zIiwib25seUhhc2hDaGFuZ2UiLCJodG1sRWxlbWVudCIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZXhpc3RpbmciLCJzdHlsZSIsInNjcm9sbEJlaGF2aW9yIiwiZG9udEZvcmNlTGF5b3V0IiwiZ2V0Q2xpZW50UmVjdHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\n"));
-
-/***/ })
-
-},
-/******/ function(__webpack_require__) { // webpackRuntimeModules
-/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
-/******/ __webpack_require__.O(0, ["main-app"], function() { return __webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fenzo%2FDesktop%2Fdevelopment%2Fhf-fast-image-generation%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"); });
-/******/ var __webpack_exports__ = __webpack_require__.O();
-/******/ _N_E = __webpack_exports__;
-/******/ }
-]);
\ No newline at end of file