diff --git "a/LocalGPT/privateGPT/client/.next/static/chunks/app-client-internals.js" "b/LocalGPT/privateGPT/client/.next/static/chunks/app-client-internals.js"
new file mode 100644--- /dev/null
+++ "b/LocalGPT/privateGPT/client/.next/static/chunks/app-client-internals.js"
@@ -0,0 +1,116 @@
+/*
+ * 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-client-internals"],{
+
+/***/ "(app-client)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Capp-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Clayout-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Crender-from-template-context.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cerror-boundary.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cstatic-generation-searchparams-bailout-provider.js&server=false!":
+/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Capp-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Clayout-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Crender-from-template-context.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cerror-boundary.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cstatic-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-client)/./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/layout-router.js */ \"(app-client)/./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/render-from-template-context.js */ \"(app-client)/./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/error-boundary.js */ \"(app-client)/./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/static-generation-searchparams-bailout-provider.js */ \"(app-client)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtY2xpZW50LWVudHJ5LWxvYWRlci5qcz9tb2R1bGVzPUMlM0ElNUNVc2VycyU1Q01pbGFuJTVDTG9jYWxHUFQlNUNwcml2YXRlR1BUJTVDY2xpZW50JTVDbm9kZV9tb2R1bGVzJTVDbmV4dCU1Q2Rpc3QlNUNjbGllbnQlNUNjb21wb25lbnRzJTVDYXBwLXJvdXRlci5qcyZtb2R1bGVzPUMlM0ElNUNVc2VycyU1Q01pbGFuJTVDTG9jYWxHUFQlNUNwcml2YXRlR1BUJTVDY2xpZW50JTVDbm9kZV9tb2R1bGVzJTVDbmV4dCU1Q2Rpc3QlNUNjbGllbnQlNUNjb21wb25lbnRzJTVDbGF5b3V0LXJvdXRlci5qcyZtb2R1bGVzPUMlM0ElNUNVc2VycyU1Q01pbGFuJTVDTG9jYWxHUFQlNUNwcml2YXRlR1BUJTVDY2xpZW50JTVDbm9kZV9tb2R1bGVzJTVDbmV4dCU1Q2Rpc3QlNUNjbGllbnQlNUNjb21wb25lbnRzJTVDcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyZtb2R1bGVzPUMlM0ElNUNVc2VycyU1Q01pbGFuJTVDTG9jYWxHUFQlNUNwcml2YXRlR1BUJTVDY2xpZW50JTVDbm9kZV9tb2R1bGVzJTVDbmV4dCU1Q2Rpc3QlNUNjbGllbnQlNUNjb21wb25lbnRzJTVDZXJyb3ItYm91bmRhcnkuanMmbW9kdWxlcz1DJTNBJTVDVXNlcnMlNUNNaWxhbiU1Q0xvY2FsR1BUJTVDcHJpdmF0ZUdQVCU1Q2NsaWVudCU1Q25vZGVfbW9kdWxlcyU1Q25leHQlNUNkaXN0JTVDY2xpZW50JTVDY29tcG9uZW50cyU1Q3N0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzJnNlcnZlcj1mYWxzZSEuanMiLCJtYXBwaW5ncyI6IkFBQUEseU9BQWdKO0FBQ2hKLCtPQUFtSjtBQUNuSiw2UUFBa0s7QUFDbEssaVBBQW9KO0FBQ3BKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8/NjA5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkM6XFxcXFVzZXJzXFxcXE1pbGFuXFxcXExvY2FsR1BUXFxcXHByaXZhdGVHUFRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcYXBwLXJvdXRlci5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiQzpcXFxcVXNlcnNcXFxcTWlsYW5cXFxcTG9jYWxHUFRcXFxccHJpdmF0ZUdQVFxcXFxjbGllbnRcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxjbGllbnRcXFxcY29tcG9uZW50c1xcXFxsYXlvdXQtcm91dGVyLmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJDOlxcXFxVc2Vyc1xcXFxNaWxhblxcXFxMb2NhbEdQVFxcXFxwcml2YXRlR1BUXFxcXGNsaWVudFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXGNsaWVudFxcXFxjb21wb25lbnRzXFxcXHJlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkM6XFxcXFVzZXJzXFxcXE1pbGFuXFxcXExvY2FsR1BUXFxcXHByaXZhdGVHUFRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcZXJyb3ItYm91bmRhcnkuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkM6XFxcXFVzZXJzXFxcXE1pbGFuXFxcXExvY2FsR1BUXFxcXHByaXZhdGVHUFRcXFxcY2xpZW50XFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcc3RhdGljLWdlbmVyYXRpb24tc2VhcmNocGFyYW1zLWJhaWxvdXQtcHJvdmlkZXIuanNcIikiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Capp-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Clayout-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Crender-from-template-context.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cerror-boundary.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cstatic-generation-searchparams-bailout-provider.js&server=false!\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGLEtBQU1DLENBQUFBLENBR047QUFDQSxTQUFTRyxRQUFRQyxNQUFNLEVBQUVDLEdBQUcsRUFBRTtJQUMxQixJQUFJLElBQUlDLFFBQVFELElBQUlULE9BQU9DLGNBQWMsQ0FBQ08sUUFBUUUsTUFBTTtRQUNwREMsWUFBWSxJQUFJO1FBQ2hCQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTCxTQUFTO0lBQ2JHLG9CQUFvQixXQUFXO1FBQzNCLE9BQU9BO0lBQ1g7SUFDQUMsb0JBQW9CLFdBQVc7UUFDM0IsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTUQscUJBQXFCO0FBQzNCLE1BQU1DLDJCQUEyQk87SUFDN0JDLFlBQVlDLElBQUksQ0FBQztRQUNiLEtBQUssQ0FBQywyQkFBMkJBO1FBQ2pDLElBQUksQ0FBQ0MsTUFBTSxHQUFHWDtJQUNsQjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9ILFFBQVFlLE9BQU8sS0FBSyxjQUFlLE9BQU9mLFFBQVFlLE9BQU8sS0FBSyxZQUFZZixRQUFRZSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9mLFFBQVFlLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktsQixPQUFPQyxjQUFjLENBQUNDLFFBQVFlLE9BQU8sRUFBRSxjQUFjO1FBQUVkLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPbUIsTUFBTSxDQUFDakIsUUFBUWUsT0FBTyxFQUFFZjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFRZSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ob29rcy1zZXJ2ZXItY29udGV4dC5qcz8wMDlhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgRFlOQU1JQ19FUlJPUl9DT0RFOiBudWxsLFxuICAgIER5bmFtaWNTZXJ2ZXJFcnJvcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBEWU5BTUlDX0VSUk9SX0NPREU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRFlOQU1JQ19FUlJPUl9DT0RFO1xuICAgIH0sXG4gICAgRHluYW1pY1NlcnZlckVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIER5bmFtaWNTZXJ2ZXJFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IERZTkFNSUNfRVJST1JfQ09ERSA9IFwiRFlOQU1JQ19TRVJWRVJfVVNBR0VcIjtcbmNsYXNzIER5bmFtaWNTZXJ2ZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlKXtcbiAgICAgICAgc3VwZXIoXCJEeW5hbWljIHNlcnZlciB1c2FnZTogXCIgKyB0eXBlKTtcbiAgICAgICAgdGhpcy5kaWdlc3QgPSBEWU5BTUlDX0VSUk9SX0NPREU7XG4gICAgfVxufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1ob29rcy1zZXJ2ZXItY29udGV4dC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJEWU5BTUlDX0VSUk9SX0NPREUiLCJEeW5hbWljU2VydmVyRXJyb3IiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwidHlwZSIsImRpZ2VzdCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/hooks-server-context.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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-client)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-client)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-client)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"(app-client)/./node_modules/next/dist/compiled/react-dom/index.js\"));\nconst _approutercontext = __webpack_require__(/*! ../../shared/lib/app-router-context */ \"(app-client)/./node_modules/next/dist/shared/lib/app-router-context.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./router-reducer/fetch-server-response */ \"(app-client)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _infinitepromise = __webpack_require__(/*! ./infinite-promise */ \"(app-client)/./node_modules/next/dist/client/components/infinite-promise.js\");\nconst _errorboundary = __webpack_require__(/*! ./error-boundary */ \"(app-client)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _matchsegments = __webpack_require__(/*! ./match-segments */ \"(app-client)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ../../shared/lib/router/utils/handle-smooth-scroll */ \"(app-client)/./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(app-client)/./node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _notfoundboundary = __webpack_require__(/*! ./not-found-boundary */ \"(app-client)/./node_modules/next/dist/client/components/not-found-boundary.js\");\nconst _getsegmentvalue = __webpack_require__(/*! ./router-reducer/reducers/get-segment-value */ \"(app-client)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./router-reducer/create-router-cache-key */ \"(app-client)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.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.\n */ function elementCanScroll(element) {\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 // TODO-APP: Handle the case where we couldn't select any DOM node, even higher up in the layout-router above the current segmentPath.\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 it's visible on screen (e.g. not display: none).\n // If the element is not a HTMLElement or not visible we try to select the next sibling and try again.\n while(!(domNode instanceof HTMLElement) || elementCanScroll(domNode)){\n // TODO-APP: Handle the case where we couldn't select any DOM node, even higher up in the layout-router above the current segmentPath.\n // No siblings found that are visible so we 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 need to scroll to the top of the element\n if (hashFragment) {\n window.scrollTo(0, domNode.offsetTop);\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 });\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)(_approutercontext.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)(_approutercontext.GlobalLayoutRouterContext);\n if (!context) {\n throw new Error(\"invariant global layout router not mounted\");\n }\n const { 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 childNodes.set(cacheKey, {\n status: _approutercontext.CacheStates.READY,\n data: null,\n subTreeData: childProp.current,\n parallelRoutes: new Map()\n });\n // In the above case childNode was set on childNodes, so we have to get it from the cacheNodes again.\n childNode = childNodes.get(cacheKey);\n } else {\n if (childNode.status === _approutercontext.CacheStates.LAZY_INITIALIZED) {\n // @ts-expect-error we're changing it's type!\n childNode.status = _approutercontext.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 === _approutercontext.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 /**\n * Flight data fetch kicked off during render and put into the cache.\n */ childNodes.set(cacheKey, {\n status: _approutercontext.CacheStates.DATA_FETCH,\n data: (0, _fetchserverresponse.fetchServerResponse)(new URL(url, location.origin), refetchTree, context.nextUrl),\n subTreeData: null,\n head: childNode && childNode.status === _approutercontext.CacheStates.LAZY_INITIALIZED ? childNode.head : undefined,\n parallelRoutes: childNode && childNode.status === _approutercontext.CacheStates.LAZY_INITIALIZED ? childNode.parallelRoutes : new Map()\n });\n // In the above case childNode was set on childNodes, so we have to get it from the cacheNodes again.\n childNode = childNodes.get(cacheKey);\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 // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === \"string\") {\n window.location.href = url;\n return null;\n }\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 // @ts-ignore startTransition exists\n _react.default.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(_approutercontext.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.default.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 , asNotFound , styles } = param;\n const context = (0, _react.useContext)(_approutercontext.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 childNodes.set(parallelRouterKey, new Map());\n childNodesForParallelRouter = childNodes.get(parallelRouterKey);\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(_approutercontext.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 asNotFound: asNotFound\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 }, /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, 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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzLmpzIiwibWFwcGluZ3MiOiJxREFDYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCwyQ0FHZTtJQUNYSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLHlIQUF5QztBQUNsRixNQUFNQyw0QkFBNEJELG1CQUFPQSxDQUFDLDJIQUEwQztBQUNwRixNQUFNRSxTQUFTLFdBQVcsR0FBR0QsMEJBQTBCRSxDQUFDLENBQUNILG1CQUFPQSxDQUFDLDRFQUFPO0FBQ3hFLE1BQU1JLFlBQVksV0FBVyxHQUFHTCx5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsb0ZBQVc7QUFDOUUsTUFBTUssb0JBQW9CTCxtQkFBT0EsQ0FBQyxtSEFBcUM7QUFDdkUsTUFBTU0sdUJBQXVCTixtQkFBT0EsQ0FBQywrSUFBd0M7QUFDN0UsTUFBTU8sbUJBQW1CUCxtQkFBT0EsQ0FBQyx1R0FBb0I7QUFDckQsTUFBTVEsaUJBQWlCUixtQkFBT0EsQ0FBQyxtR0FBa0I7QUFDakQsTUFBTVMsaUJBQWlCVCxtQkFBT0EsQ0FBQyxtR0FBa0I7QUFDakQsTUFBTVUsc0JBQXNCVixtQkFBT0EsQ0FBQyxpSkFBb0Q7QUFDeEYsTUFBTVcsb0JBQW9CWCxtQkFBT0EsQ0FBQyx5R0FBcUI7QUFDdkQsTUFBTVksb0JBQW9CWixtQkFBT0EsQ0FBQywyR0FBc0I7QUFDeEQsTUFBTWEsbUJBQW1CYixtQkFBT0EsQ0FBQyx5SkFBNkM7QUFDOUUsTUFBTWMsd0JBQXdCZCxtQkFBT0EsQ0FBQyxtSkFBMEM7QUFFaEY7OztDQUdDLEdBQUcsU0FBU2UsZUFBZUMsaUJBQWlCLEVBQUVDLGNBQWMsRUFBRTtJQUMzRCxJQUFJRCxt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ZCw2QkFBNkJNO1lBQzNDO1FBQ0osR0FBRyxXQUFXLEdBQUczSixPQUFPcUMsT0FBTyxDQUFDd0QsYUFBYSxDQUFDN0YsT0FBT3FDLE9BQU8sQ0FBQ3FHLFFBQVEsRUFBRSxJQUFJLEVBQUVFLGdCQUFnQkM7SUFDakc7QUFDSjtNQWxFU2pKO0FBb0VULElBQUksQ0FBQyxPQUFPSixRQUFRNkMsT0FBTyxLQUFLLGNBQWUsT0FBTzdDLFFBQVE2QyxPQUFPLEtBQUssWUFBWTdDLFFBQVE2QyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU83QyxRQUFRNkMsT0FBTyxDQUFDK0gsVUFBVSxLQUFLLGFBQWE7SUFDcks5SyxPQUFPQyxjQUFjLENBQUNDLFFBQVE2QyxPQUFPLEVBQUUsY0FBYztRQUFFNUMsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU8rSyxNQUFNLENBQUM3SyxRQUFRNkMsT0FBTyxFQUFFN0M7SUFDL0I4SyxPQUFPOUssT0FBTyxHQUFHQSxRQUFRNkMsT0FBTztBQUNsQyxDQUFDLENBRUQseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlci5qcz8wYmZhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgLyoqXG4gKiBPdXRlckxheW91dFJvdXRlciBoYW5kbGVzIHRoZSBjdXJyZW50IHNlZ21lbnQgYXMgd2VsbCBhcyA8T2Zmc2NyZWVuPiByZW5kZXJpbmcgb2Ygb3RoZXIgc2VnbWVudHMuXG4gKiBJdCBjYW4gYmUgcmVuZGVyZWQgbmV4dCB0byBlYWNoIG90aGVyIHdpdGggYSBkaWZmZXJlbnQgYHBhcmFsbGVsUm91dGVyS2V5YCwgYWxsb3dpbmcgZm9yIFBhcmFsbGVsIHJvdXRlcy5cbiAqLyBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE91dGVyTGF5b3V0Um91dGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZFwiKTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZC5fKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfcmVhY3Rkb20gPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuY29uc3QgX2FwcHJvdXRlcmNvbnRleHQgPSByZXF1aXJlKFwiLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHRcIik7XG5jb25zdCBfZmV0Y2hzZXJ2ZXJyZXNwb25zZSA9IHJlcXVpcmUoXCIuL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZVwiKTtcbmNvbnN0IF9pbmZpbml0ZXByb21pc2UgPSByZXF1aXJlKFwiLi9pbmZpbml0ZS1wcm9taXNlXCIpO1xuY29uc3QgX2Vycm9yYm91bmRhcnkgPSByZXF1aXJlKFwiLi9lcnJvci1ib3VuZGFyeVwiKTtcbmNvbnN0IF9tYXRjaHNlZ21lbnRzID0gcmVxdWlyZShcIi4vbWF0Y2gtc2VnbWVudHNcIik7XG5jb25zdCBfaGFuZGxlc21vb3Roc2Nyb2xsID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2hhbmRsZS1zbW9vdGgtc2Nyb2xsXCIpO1xuY29uc3QgX3JlZGlyZWN0Ym91bmRhcnkgPSByZXF1aXJlKFwiLi9yZWRpcmVjdC1ib3VuZGFyeVwiKTtcbmNvbnN0IF9ub3Rmb3VuZGJvdW5kYXJ5ID0gcmVxdWlyZShcIi4vbm90LWZvdW5kLWJvdW5kYXJ5XCIpO1xuY29uc3QgX2dldHNlZ21lbnR2YWx1ZSA9IHJlcXVpcmUoXCIuL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2dldC1zZWdtZW50LXZhbHVlXCIpO1xuY29uc3QgX2NyZWF0ZXJvdXRlcmNhY2hla2V5ID0gcmVxdWlyZShcIi4vcm91dGVyLXJlZHVjZXIvY3JlYXRlLXJvdXRlci1jYWNoZS1rZXlcIik7XG5cbi8qKlxuICogQWRkIHJlZmV0Y2ggbWFya2VyIHRvIHJvdXRlciBzdGF0ZSBhdCB0aGUgcG9pbnQgb2YgdGhlIGN1cnJlbnQgbGF5b3V0IHNlZ21lbnQuXG4gKiBUaGlzIGVuc3VyZXMgdGhlIHJlc3BvbnNlIHJldHVybmVkIGlzIG5vdCBmdXJ0aGVyIGRvd24gdGhhbiB0aGUgY3VycmVudCBsYXlvdXQgc2VnbWVudC5cbiAqLyBmdW5jdGlvbiB3YWxrQWRkUmVmZXRjaChzZWdtZW50UGF0aFRvV2FsaywgdHJlZVRvUmVjcmVhdGUpIHtcbiAgICBpZiAoc2VnbWVudFBhdGhUb1dhbGspIHtcbiAgICAgICAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVLZXldID0gc2VnbWVudFBhdGhUb1dhbGs7XG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IHNlZ21lbnRQYXRoVG9XYWxrLmxlbmd0aCA9PT0gMjtcbiAgICAgICAgaWYgKCgwLCBfbWF0Y2hzZWdtZW50cy5tYXRjaFNlZ21lbnQpKHRyZWVUb1JlY3JlYXRlWzBdLCBzZWdtZW50KSkge1xuICAgICAgICAgICAgaWYgKHRyZWVUb1JlY3JlYXRlWzFdLmhhc093blByb3BlcnR5KHBhcmFsbGVsUm91dGVLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJUcmVlID0gd2Fsa0FkZFJlZmV0Y2godW5kZWZpbmVkLCB0cmVlVG9SZWNyZWF0ZVsxXVtwYXJhbGxlbFJvdXRlS2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlVG9SZWNyZWF0ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50cmVlVG9SZWNyZWF0ZVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyYWxsZWxSb3V0ZUtleV06IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZVsyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyZWZldGNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRyZWVUb1JlY3JlYXRlWzBdLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50cmVlVG9SZWNyZWF0ZVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJhbGxlbFJvdXRlS2V5XTogd2Fsa0FkZFJlZmV0Y2goc2VnbWVudFBhdGhUb1dhbGsuc2xpY2UoMiksIHRyZWVUb1JlY3JlYXRlWzFdW3BhcmFsbGVsUm91dGVLZXldKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJlZVRvUmVjcmVhdGU7XG59XG4vLyBUT0RPLUFQUDogUmVwbGFjZSB3aXRoIG5ldyBSZWFjdCBBUEkgZm9yIGZpbmRpbmcgZG9tIG5vZGVzIHdpdGhvdXQgYSBgcmVmYCB3aGVuIGF2YWlsYWJsZVxuLyoqXG4gKiBXcmFwcyBSZWFjdERPTS5maW5kRE9NTm9kZSB3aXRoIGFkZGl0aW9uYWwgbG9naWMgdG8gaGlkZSBSZWFjdCBTdHJpY3QgTW9kZSB3YXJuaW5nXG4gKi8gZnVuY3Rpb24gZmluZERPTU5vZGUoaW5zdGFuY2UpIHtcbiAgICAvLyBUcmVlLXNoYWtlIGZvciBzZXJ2ZXIgYnVuZGxlXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBudWxsO1xuICAgIC8vIE9ubHkgYXBwbHkgc3RyaWN0IG1vZGUgd2FybmluZyB3aGVuIG5vdCBpbiBwcm9kdWN0aW9uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zdCBvcmlnaW5hbENvbnNvbGVFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBzdHJpY3QgbW9kZSB3YXJuaW5nIGZvciB0aGUgZmluZERvbU5vZGUgY2FsbCBiZWxvd1xuICAgICAgICAgICAgICAgIGlmICghbWVzc2FnZXNbMF0uaW5jbHVkZXMoXCJXYXJuaW5nOiAlcyBpcyBkZXByZWNhdGVkIGluIFN0cmljdE1vZGUuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsQ29uc29sZUVycm9yKC4uLm1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIF9yZWFjdGRvbS5kZWZhdWx0LmZpbmRET01Ob2RlKGluc3RhbmNlKTtcbiAgICAgICAgfSBmaW5hbGx5e1xuICAgICAgICAgICAgY29uc29sZS5lcnJvciA9IG9yaWdpbmFsQ29uc29sZUVycm9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVhY3Rkb20uZGVmYXVsdC5maW5kRE9NTm9kZShpbnN0YW5jZSk7XG59XG5jb25zdCByZWN0UHJvcGVydGllcyA9IFtcbiAgICBcImJvdHRvbVwiLFxuICAgIFwiaGVpZ2h0XCIsXG4gICAgXCJsZWZ0XCIsXG4gICAgXCJyaWdodFwiLFxuICAgIFwidG9wXCIsXG4gICAgXCJ3aWR0aFwiLFxuICAgIFwieFwiLFxuICAgIFwieVwiXG5dO1xuLyoqXG4gKiBDaGVjayBpZiBhIEhUTUxFbGVtZW50IGlzIGhpZGRlbi5cbiAqLyBmdW5jdGlvbiBlbGVtZW50Q2FuU2Nyb2xsKGVsZW1lbnQpIHtcbiAgICAvLyBVc2VzIGBnZXRCb3VuZGluZ0NsaWVudFJlY3RgIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIGhpZGRlbiBpbnN0ZWFkIG9mIGBvZmZzZXRQYXJlbnRgXG4gICAgLy8gYmVjYXVzZSBgb2Zmc2V0UGFyZW50YCBkb2Vzbid0IGNvbnNpZGVyIGRvY3VtZW50L2JvZHlcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gcmVjdFByb3BlcnRpZXMuZXZlcnkoKGl0ZW0pPT5yZWN0W2l0ZW1dID09PSAwKTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHRvcCBjb3JuZXIgb2YgdGhlIEhUTUxFbGVtZW50IGlzIGluIHRoZSB2aWV3cG9ydC5cbiAqLyBmdW5jdGlvbiB0b3BPZkVsZW1lbnRJblZpZXdwb3J0KGVsZW1lbnQsIHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIHJlY3QudG9wID49IDAgJiYgcmVjdC50b3AgPD0gdmlld3BvcnRIZWlnaHQ7XG59XG4vKipcbiAqIEZpbmQgdGhlIERPTSBub2RlIGZvciBhIGhhc2ggZnJhZ21lbnQuXG4gKiBJZiBgdG9wYCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UuIFRoaXMgbWlycm9ycyB0aGUgYnJvd3NlcidzIGJlaGF2aW9yLlxuICogSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYW4gaWQsIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGF0IGlkLlxuICogSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYSBuYW1lLCB0aGUgcGFnZSBoYXMgdG8gc2Nyb2xsIHRvIHRoZSBmaXJzdCBlbGVtZW50IHdpdGggdGhhdCBuYW1lLlxuICovIGZ1bmN0aW9uIGdldEhhc2hGcmFnbWVudERvbU5vZGUoaGFzaEZyYWdtZW50KSB7XG4gICAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYHRvcGAgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlLlxuICAgIGlmIChoYXNoRnJhZ21lbnQgPT09IFwidG9wXCIpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG4gICAgfVxuICAgIHZhciBfZG9jdW1lbnRfZ2V0RWxlbWVudEJ5SWQ7XG4gICAgLy8gSWYgdGhlIGhhc2ggZnJhZ21lbnQgaXMgYW4gaWQsIHRoZSBwYWdlIGhhcyB0byBzY3JvbGwgdG8gdGhlIGVsZW1lbnQgd2l0aCB0aGF0IGlkLlxuICAgIHJldHVybiAoX2RvY3VtZW50X2dldEVsZW1lbnRCeUlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaEZyYWdtZW50KSkgIT0gbnVsbCA/IF9kb2N1bWVudF9nZXRFbGVtZW50QnlJZCA6IC8vIElmIHRoZSBoYXNoIGZyYWdtZW50IGlzIGEgbmFtZSwgdGhlIHBhZ2UgaGFzIHRvIHNjcm9sbCB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIHRoYXQgbmFtZS5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShoYXNoRnJhZ21lbnQpWzBdO1xufVxuY2xhc3MgSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLmhhbmRsZVBvdGVudGlhbFNjcm9sbCgpO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhpcyBwcm9wZXJ0eSBpcyBvdmVyd3JpdHRlbiBpbiBoYW5kbGVQb3RlbnRpYWxTY3JvbGwgaXQncyBmaW5lIHRvIGFsd2F5cyBydW4gaXQgd2hlbiB0cnVlIGFzIGl0J2xsIGJlIHNldCB0byBmYWxzZSBmb3Igc3Vic2VxdWVudCByZW5kZXJzLlxuICAgICAgICBpZiAodGhpcy5wcm9wcy5mb2N1c0FuZFNjcm9sbFJlZi5hcHBseSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVQb3RlbnRpYWxTY3JvbGwoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzKXtcbiAgICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICAgIHRoaXMuaGFuZGxlUG90ZW50aWFsU2Nyb2xsID0gKCk9PntcbiAgICAgICAgICAgIC8vIEhhbmRsZSBzY3JvbGwgYW5kIGZvY3VzLCBpdCdzIG9ubHkgYXBwbGllZCBvbmNlIGluIHRoZSBmaXJzdCB1c2VFZmZlY3QgdGhhdCB0cmlnZ2VycyB0aGF0IGNoYW5nZWQuXG4gICAgICAgICAgICBjb25zdCB7IGZvY3VzQW5kU2Nyb2xsUmVmICwgc2VnbWVudFBhdGggIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKGZvY3VzQW5kU2Nyb2xsUmVmLmFwcGx5KSB7XG4gICAgICAgICAgICAgICAgLy8gc2VnbWVudFBhdGhzIGlzIGFuIGFycmF5IG9mIHNlZ21lbnQgcGF0aHMgdGhhdCBzaG91bGQgYmUgc2Nyb2xsZWQgdG9cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBzZWdtZW50IHBhdGggaXMgbm90IGluIHRoZSBhcnJheSwgdGhlIHNjcm9sbCBpcyBub3QgYXBwbGllZFxuICAgICAgICAgICAgICAgIC8vIHVubGVzcyB0aGUgYXJyYXkgaXMgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHNjcm9sbCBpcyBhbHdheXMgYXBwbGllZFxuICAgICAgICAgICAgICAgIGlmIChmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMubGVuZ3RoICE9PSAwICYmICFmb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHMuc29tZSgoc2Nyb2xsUmVmU2VnbWVudFBhdGgpPT5zZWdtZW50UGF0aC5ldmVyeSgoc2VnbWVudCwgaW5kZXgpPT4oMCwgX21hdGNoc2VnbWVudHMubWF0Y2hTZWdtZW50KShzZWdtZW50LCBzY3JvbGxSZWZTZWdtZW50UGF0aFtpbmRleF0pKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaEZyYWdtZW50ID0gZm9jdXNBbmRTY3JvbGxSZWYuaGFzaEZyYWdtZW50O1xuICAgICAgICAgICAgICAgIGlmIChoYXNoRnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tTm9kZSA9IGdldEhhc2hGcmFnbWVudERvbU5vZGUoaGFzaEZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYGZpbmRET01Ob2RlYCBpcyB0cmlja3kgYmVjYXVzZSBpdCByZXR1cm5zIGp1c3QgdGhlIGZpcnN0IGNoaWxkIGlmIHRoZSBjb21wb25lbnQgaXMgYSBmcmFnbWVudC5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGFscmVhZHkgY2F1c2VkIGEgYnVnIHdoZXJlIHRoZSBmaXJzdCBjaGlsZCB3YXMgYSA8bGluay8+IGluIGhlYWQuXG4gICAgICAgICAgICAgICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbU5vZGUgPSBmaW5kRE9NTm9kZSh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETy1BUFA6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBjb3VsZG4ndCBzZWxlY3QgYW55IERPTSBub2RlLCBldmVuIGhpZ2hlciB1cCBpbiB0aGUgbGF5b3V0LXJvdXRlciBhYm92ZSB0aGUgY3VycmVudCBzZWdtZW50UGF0aC5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBET00gbm9kZSB0aGlzIGxheW91dC1yb3V0ZXIgbGV2ZWwgaXMgc2tpcHBlZC4gSXQnbGwgYmUgaGFuZGxlZCBoaWdoZXItdXAgaW4gdGhlIHRyZWUuXG4gICAgICAgICAgICAgICAgaWYgKCEoZG9tTm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVmVyaWZ5IGlmIHRoZSBlbGVtZW50IGlzIGEgSFRNTEVsZW1lbnQgYW5kIGlmIGl0J3MgdmlzaWJsZSBvbiBzY3JlZW4gKGUuZy4gbm90IGRpc3BsYXk6IG5vbmUpLlxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG5vdCBhIEhUTUxFbGVtZW50IG9yIG5vdCB2aXNpYmxlIHdlIHRyeSB0byBzZWxlY3QgdGhlIG5leHQgc2libGluZyBhbmQgdHJ5IGFnYWluLlxuICAgICAgICAgICAgICAgIHdoaWxlKCEoZG9tTm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB8fCBlbGVtZW50Q2FuU2Nyb2xsKGRvbU5vZGUpKXtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETy1BUFA6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBjb3VsZG4ndCBzZWxlY3QgYW55IERPTSBub2RlLCBldmVuIGhpZ2hlciB1cCBpbiB0aGUgbGF5b3V0LXJvdXRlciBhYm92ZSB0aGUgY3VycmVudCBzZWdtZW50UGF0aC5cbiAgICAgICAgICAgICAgICAgICAgLy8gTm8gc2libGluZ3MgZm91bmQgdGhhdCBhcmUgdmlzaWJsZSBzbyB3ZSBoYW5kbGUgc2Nyb2xsIGhpZ2hlciB1cCBpbiB0aGUgdHJlZSBpbnN0ZWFkLlxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9tTm9kZS5uZXh0RWxlbWVudFNpYmxpbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkb21Ob2RlID0gZG9tTm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFN0YXRlIGlzIG11dGF0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvY3VzIGFuZCBzY3JvbGwgaXMgYXBwbGllZCBvbmx5IG9uY2UuXG4gICAgICAgICAgICAgICAgZm9jdXNBbmRTY3JvbGxSZWYuYXBwbHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmLnNlZ21lbnRQYXRocyA9IFtdO1xuICAgICAgICAgICAgICAgICgwLCBfaGFuZGxlc21vb3Roc2Nyb2xsLmhhbmRsZVNtb290aFNjcm9sbCkoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBoYXNoIHNjcm9sbCB3ZSBuZWVkIHRvIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNoRnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBkb21Ob2RlLm9mZnNldFRvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgdmlld3BvcnQgaGVpZ2h0IGJlY2F1c2UgcmVhZGluZyBgY2xpZW50SGVpZ2h0YCBjYXVzZXMgYSByZWZsb3csXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpdCB3b24ndCBjaGFuZ2UgZHVyaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGh0bWxFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQncyB0b3AgZWRnZSBpcyBhbHJlYWR5IGluIHRoZSB2aWV3cG9ydCwgZXhpdCBlYXJseS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcE9mRWxlbWVudEluVmlld3BvcnQoZG9tTm9kZSwgdmlld3BvcnRIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0cnkgc2Nyb2xsaW5nIGdvIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IHRvIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwYWdlc1xuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGxJbnRvVmlldygpIGNhbGxlZCBvbiBgPGh0bWwvPmAgZWxlbWVudCBzY3JvbGxzIGhvcml6b250YWxseSBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggKHRoYXQgc2hvdWxkbid0IGhhcHBlbilcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgdXNlIGl0IHRvIHNjcm9sbCBob3Jpem9udGFsbHkgZm9sbG93aW5nIFJUTCBidXQgdGhhdCBhbHNvIHNlZW1zIHRvIGJlIGJyb2tlbiAtIGl0IHdpbGwgYWx3YXlzIHNjcm9sbCBsZWZ0XG4gICAgICAgICAgICAgICAgICAgIC8vIHNjcm9sbExlZnQgPSAwIGFsc28gc2VlbXMgdG8gaWdub3JlIFJUTCBhbmQgbWFudWFsbHkgY2hlY2tpbmcgZm9yIFJUTCBpcyB0b28gbXVjaCBoYXNzbGUgc28gd2Ugd2lsbCBzY3JvbGwganVzdCB2ZXJ0aWNhbGx5XG4gICAgICAgICAgICAgICAgICAgIGh0bWxFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNjcm9sbCB0byBkb21Ob2RlIGlmIGRvbU5vZGUgaXMgbm90IGluIHZpZXdwb3J0IHdoZW4gc2Nyb2xsZWQgdG8gdG9wIG9mIGRvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9wT2ZFbGVtZW50SW5WaWV3cG9ydChkb21Ob2RlLCB2aWV3cG9ydEhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBmb3JjZSBsYXlvdXQgYnkgcXVlcnlpbmcgZG9tTm9kZSBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBkb250Rm9yY2VMYXlvdXQ6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBTZXQgZm9jdXMgb24gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBkb21Ob2RlLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gU2Nyb2xsQW5kRm9jdXNIYW5kbGVyKHBhcmFtKSB7XG4gICAgbGV0IHsgc2VnbWVudFBhdGggLCBjaGlsZHJlbiAgfSA9IHBhcmFtO1xuICAgIGNvbnN0IGNvbnRleHQgPSAoMCwgX3JlYWN0LnVzZUNvbnRleHQpKF9hcHByb3V0ZXJjb250ZXh0Lkdsb2JhbExheW91dFJvdXRlckNvbnRleHQpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhcmlhbnQgZ2xvYmFsIGxheW91dCByb3V0ZXIgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXIsIHtcbiAgICAgICAgc2VnbWVudFBhdGg6IHNlZ21lbnRQYXRoLFxuICAgICAgICBmb2N1c0FuZFNjcm9sbFJlZjogY29udGV4dC5mb2N1c0FuZFNjcm9sbFJlZlxuICAgIH0sIGNoaWxkcmVuKTtcbn1cbi8qKlxuICogSW5uZXJMYXlvdXRSb3V0ZXIgaGFuZGxlcyByZW5kZXJpbmcgdGhlIHByb3ZpZGVkIHNlZ21lbnQgYmFzZWQgb24gdGhlIGNhY2hlLlxuICovIGZ1bmN0aW9uIElubmVyTGF5b3V0Um91dGVyKHBhcmFtKSB7XG4gICAgbGV0IHsgcGFyYWxsZWxSb3V0ZXJLZXkgLCB1cmwgLCBjaGlsZE5vZGVzICwgY2hpbGRQcm9wICwgc2VnbWVudFBhdGggLCB0cmVlICwgLy8gVE9ETy1BUFA6IGltcGxlbWVudCBgPE9mZnNjcmVlbj5gIHdoZW4gYXZhaWxhYmxlLlxuICAgIC8vIGlzQWN0aXZlLFxuICAgIGNhY2hlS2V5ICB9ID0gcGFyYW07XG4gICAgY29uc3QgY29udGV4dCA9ICgwLCBfcmVhY3QudXNlQ29udGV4dCkoX2FwcHJvdXRlcmNvbnRleHQuR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCk7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFyaWFudCBnbG9iYWwgbGF5b3V0IHJvdXRlciBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgeyBjaGFuZ2VCeVNlcnZlclJlc3BvbnNlICwgdHJlZTogZnVsbFRyZWUgIH0gPSBjb250ZXh0O1xuICAgIC8vIFJlYWQgc2VnbWVudCBwYXRoIGZyb20gdGhlIHBhcmFsbGVsIHJvdXRlciBjYWNoZSBub2RlLlxuICAgIGxldCBjaGlsZE5vZGUgPSBjaGlsZE5vZGVzLmdldChjYWNoZUtleSk7XG4gICAgLy8gSWYgY2hpbGRQcm9wIGlzIGF2YWlsYWJsZSB0aGlzIG1lYW5zIGl0J3MgdGhlIEZsaWdodCAvIFNTUiBjYXNlLlxuICAgIGlmIChjaGlsZFByb3AgJiYgLy8gVE9ETy1BUFA6IHZlcmlmeSBpZiB0aGlzIGNhbiBiZSBudWxsIGJhc2VkIG9uIHVzZXIgY29kZVxuICAgIGNoaWxkUHJvcC5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghY2hpbGROb2RlKSB7XG4gICAgICAgICAgICAvLyBBZGQgdGhlIHNlZ21lbnQncyBzdWJUcmVlRGF0YSB0byB0aGUgY2FjaGUuXG4gICAgICAgICAgICAvLyBUaGlzIHdyaXRlcyB0byB0aGUgY2FjaGUgd2hlbiB0aGVyZSBpcyBubyBpdGVtIGluIHRoZSBjYWNoZSB5ZXQuIEl0IG5ldmVyICpvdmVyd3JpdGVzKiBleGlzdGluZyBjYWNoZSBpdGVtcyB3aGljaCBpcyB3aHkgaXQncyBzYWZlIGluIGNvbmN1cnJlbnQgbW9kZS5cbiAgICAgICAgICAgIGNoaWxkTm9kZXMuc2V0KGNhY2hlS2V5LCB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBfYXBwcm91dGVyY29udGV4dC5DYWNoZVN0YXRlcy5SRUFEWSxcbiAgICAgICAgICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICAgICAgICAgIHN1YlRyZWVEYXRhOiBjaGlsZFByb3AuY3VycmVudCxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEluIHRoZSBhYm92ZSBjYXNlIGNoaWxkTm9kZSB3YXMgc2V0IG9uIGNoaWxkTm9kZXMsIHNvIHdlIGhhdmUgdG8gZ2V0IGl0IGZyb20gdGhlIGNhY2hlTm9kZXMgYWdhaW4uXG4gICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVzLmdldChjYWNoZUtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHQuQ2FjaGVTdGF0ZXMuTEFaWV9JTklUSUFMSVpFRCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igd2UncmUgY2hhbmdpbmcgaXQncyB0eXBlIVxuICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5zdGF0dXMgPSBfYXBwcm91dGVyY29udGV4dC5DYWNoZVN0YXRlcy5SRUFEWTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlLnN1YlRyZWVEYXRhID0gY2hpbGRQcm9wLmN1cnJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2hlbiBjaGlsZE5vZGUgaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgcmVuZGVyaW5nIGNsaWVudC1zaWRlIHdlIG5lZWQgdG8gZmV0Y2ggaXQgZnJvbSB0aGUgc2VydmVyLlxuICAgIGlmICghY2hpbGROb2RlIHx8IGNoaWxkTm9kZS5zdGF0dXMgPT09IF9hcHByb3V0ZXJjb250ZXh0LkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQpIHtcbiAgICAgICAgLyoqXG4gICAgICogUm91dGVyIHN0YXRlIHdpdGggcmVmZXRjaCBtYXJrZXIgYWRkZWRcbiAgICAgKi8gLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICBjb25zdCByZWZldGNoVHJlZSA9IHdhbGtBZGRSZWZldGNoKFtcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAuLi5zZWdtZW50UGF0aFxuICAgICAgICBdLCBmdWxsVHJlZSk7XG4gICAgICAgIC8qKlxuICAgICAqIEZsaWdodCBkYXRhIGZldGNoIGtpY2tlZCBvZmYgZHVyaW5nIHJlbmRlciBhbmQgcHV0IGludG8gdGhlIGNhY2hlLlxuICAgICAqLyBjaGlsZE5vZGVzLnNldChjYWNoZUtleSwge1xuICAgICAgICAgICAgc3RhdHVzOiBfYXBwcm91dGVyY29udGV4dC5DYWNoZVN0YXRlcy5EQVRBX0ZFVENILFxuICAgICAgICAgICAgZGF0YTogKDAsIF9mZXRjaHNlcnZlcnJlc3BvbnNlLmZldGNoU2VydmVyUmVzcG9uc2UpKG5ldyBVUkwodXJsLCBsb2NhdGlvbi5vcmlnaW4pLCByZWZldGNoVHJlZSwgY29udGV4dC5uZXh0VXJsKSxcbiAgICAgICAgICAgIHN1YlRyZWVEYXRhOiBudWxsLFxuICAgICAgICAgICAgaGVhZDogY2hpbGROb2RlICYmIGNoaWxkTm9kZS5zdGF0dXMgPT09IF9hcHByb3V0ZXJjb250ZXh0LkNhY2hlU3RhdGVzLkxBWllfSU5JVElBTElaRUQgPyBjaGlsZE5vZGUuaGVhZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhcmFsbGVsUm91dGVzOiBjaGlsZE5vZGUgJiYgY2hpbGROb2RlLnN0YXR1cyA9PT0gX2FwcHJvdXRlcmNvbnRleHQuQ2FjaGVTdGF0ZXMuTEFaWV9JTklUSUFMSVpFRCA/IGNoaWxkTm9kZS5wYXJhbGxlbFJvdXRlcyA6IG5ldyBNYXAoKVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gSW4gdGhlIGFib3ZlIGNhc2UgY2hpbGROb2RlIHdhcyBzZXQgb24gY2hpbGROb2Rlcywgc28gd2UgaGF2ZSB0byBnZXQgaXQgZnJvbSB0aGUgY2FjaGVOb2RlcyBhZ2Fpbi5cbiAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2Rlcy5nZXQoY2FjaGVLZXkpO1xuICAgIH1cbiAgICAvLyBUaGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGhhcHBlbiBzbyBpdCB0aHJvd3MgYW4gZXJyb3IuIEl0IGluZGljYXRlcyB0aGVyZSdzIGEgYnVnIGluIHRoZSBOZXh0LmpzLlxuICAgIGlmICghY2hpbGROb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNoaWxkIG5vZGUgc2hvdWxkIGFsd2F5cyBleGlzdFwiKTtcbiAgICB9XG4gICAgLy8gVGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4gc28gaXQgdGhyb3dzIGFuIGVycm9yLiBJdCBpbmRpY2F0ZXMgdGhlcmUncyBhIGJ1ZyBpbiB0aGUgTmV4dC5qcy5cbiAgICBpZiAoY2hpbGROb2RlLnN1YlRyZWVEYXRhICYmIGNoaWxkTm9kZS5kYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNoaWxkIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGJvdGggc3ViVHJlZURhdGEgYW5kIGRhdGFcIik7XG4gICAgfVxuICAgIC8vIElmIGNhY2hlIG5vZGUgaGFzIGEgZGF0YSByZXF1ZXN0IHdlIGhhdmUgdG8gdW53cmFwIHJlc3BvbnNlIGJ5IGB1c2VgIGFuZCB1cGRhdGUgdGhlIGNhY2hlLlxuICAgIGlmIChjaGlsZE5vZGUuZGF0YSkge1xuICAgICAgICAvKipcbiAgICAgKiBGbGlnaHQgcmVzcG9uc2UgZGF0YVxuICAgICAqLyAvLyBXaGVuIHRoZSBkYXRhIGhhcyBub3QgcmVzb2x2ZWQgeWV0IGB1c2VgIHdpbGwgc3VzcGVuZCBoZXJlLlxuICAgICAgICBjb25zdCBbZmxpZ2h0RGF0YSwgb3ZlcnJpZGVDYW5vbmljYWxVcmxdID0gKDAsIF9yZWFjdC51c2UpKGNoaWxkTm9kZS5kYXRhKTtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgXG4gICAgICAgIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZWdtZW50UGF0aCBmcm9tIHRoZSBzZXJ2ZXIgZG9lcyBub3QgbWF0Y2ggdGhlIGxheW91dCdzIHNlZ21lbnRQYXRoXG4gICAgICAgIGNoaWxkTm9kZS5kYXRhID0gbnVsbDtcbiAgICAgICAgLy8gc2V0VGltZW91dCBpcyB1c2VkIHRvIHN0YXJ0IGEgbmV3IHRyYW5zaXRpb24gZHVyaW5nIHJlbmRlciwgdGhpcyBpcyBhbiBpbnRlbnRpb25hbCBoYWNrIGFyb3VuZCBSZWFjdC5cbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzdGFydFRyYW5zaXRpb24gZXhpc3RzXG4gICAgICAgICAgICBfcmVhY3QuZGVmYXVsdC5zdGFydFRyYW5zaXRpb24oKCk9PntcbiAgICAgICAgICAgICAgICBjaGFuZ2VCeVNlcnZlclJlc3BvbnNlKGZ1bGxUcmVlLCBmbGlnaHREYXRhLCBvdmVycmlkZUNhbm9uaWNhbFVybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFN1c3BlbmQgaW5maW5pdGVseSBhcyBgY2hhbmdlQnlTZXJ2ZXJSZXNwb25zZWAgd2lsbCBjYXVzZSBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSB0cmVlIHRvIGJlIHJlbmRlcmVkLlxuICAgICAgICAoMCwgX3JlYWN0LnVzZSkoKDAsIF9pbmZpbml0ZXByb21pc2UuY3JlYXRlSW5maW5pdGVQcm9taXNlKSgpKTtcbiAgICB9XG4gICAgLy8gSWYgY2FjaGUgbm9kZSBoYXMgbm8gc3ViVHJlZURhdGEgYW5kIG5vIGRhdGEgcmVxdWVzdCB3ZSBoYXZlIHRvIGluZmluaXRlbHkgc3VzcGVuZCBhcyB0aGUgZGF0YSB3aWxsIGxpa2VseSBmbG93IGluIGZyb20gYW5vdGhlciBwbGFjZS5cbiAgICAvLyBUT0RPLUFQUDogZG91YmxlIGNoZWNrIHVzZXJzIGNhbid0IHJldHVybiBudWxsIGluIGEgY29tcG9uZW50IHRoYXQgd2lsbCBraWNrIGluIGhlcmUuXG4gICAgaWYgKCFjaGlsZE5vZGUuc3ViVHJlZURhdGEpIHtcbiAgICAgICAgKDAsIF9yZWFjdC51c2UpKCgwLCBfaW5maW5pdGVwcm9taXNlLmNyZWF0ZUluZmluaXRlUHJvbWlzZSkoKSk7XG4gICAgfVxuICAgIGNvbnN0IHN1YnRyZWUgPSAvLyBUaGUgbGF5b3V0IHJvdXRlciBjb250ZXh0IG5hcnJvd3MgZG93biB0cmVlIGFuZCBjaGlsZE5vZGVzIGF0IGVhY2ggbGV2ZWwuXG4gICAgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9hcHByb3V0ZXJjb250ZXh0LkxheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHRyZWU6IHRyZWVbMV1bcGFyYWxsZWxSb3V0ZXJLZXldLFxuICAgICAgICAgICAgY2hpbGROb2RlczogY2hpbGROb2RlLnBhcmFsbGVsUm91dGVzLFxuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IG92ZXJyaWRpbmcgb2YgdXJsIGZvciBwYXJhbGxlbCByb3V0ZXNcbiAgICAgICAgICAgIHVybDogdXJsXG4gICAgICAgIH1cbiAgICB9LCBjaGlsZE5vZGUuc3ViVHJlZURhdGEpO1xuICAgIC8vIEVuc3VyZSByb290IGxheW91dCBpcyBub3Qgd3JhcHBlZCBpbiBhIGRpdiBhcyB0aGUgcm9vdCBsYXlvdXQgcmVuZGVycyBgPGh0bWw+YFxuICAgIHJldHVybiBzdWJ0cmVlO1xufVxuLyoqXG4gKiBSZW5kZXJzIHN1c3BlbnNlIGJvdW5kYXJ5IHdpdGggdGhlIHByb3ZpZGVkIFwibG9hZGluZ1wiIHByb3BlcnR5IGFzIHRoZSBmYWxsYmFjay5cbiAqIElmIG5vIGxvYWRpbmcgcHJvcGVydHkgaXMgcHJvdmlkZWQgaXQgcmVuZGVycyB0aGUgY2hpbGRyZW4gd2l0aG91dCBhIHN1c3BlbnNlIGJvdW5kYXJ5LlxuICovIGZ1bmN0aW9uIExvYWRpbmdCb3VuZGFyeShwYXJhbSkge1xuICAgIGxldCB7IGNoaWxkcmVuICwgbG9hZGluZyAsIGxvYWRpbmdTdHlsZXMgLCBoYXNMb2FkaW5nICB9ID0gcGFyYW07XG4gICAgaWYgKGhhc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5TdXNwZW5zZSwge1xuICAgICAgICAgICAgZmFsbGJhY2s6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgbG9hZGluZ1N0eWxlcywgbG9hZGluZylcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCBjaGlsZHJlbik7XG59XG5mdW5jdGlvbiBPdXRlckxheW91dFJvdXRlcihwYXJhbSkge1xuICAgIGxldCB7IHBhcmFsbGVsUm91dGVyS2V5ICwgc2VnbWVudFBhdGggLCBjaGlsZFByb3AgLCBlcnJvciAsIGVycm9yU3R5bGVzICwgdGVtcGxhdGVTdHlsZXMgLCBsb2FkaW5nICwgbG9hZGluZ1N0eWxlcyAsIGhhc0xvYWRpbmcgLCB0ZW1wbGF0ZSAsIG5vdEZvdW5kICwgbm90Rm91bmRTdHlsZXMgLCBhc05vdEZvdW5kICwgc3R5bGVzICB9ID0gcGFyYW07XG4gICAgY29uc3QgY29udGV4dCA9ICgwLCBfcmVhY3QudXNlQ29udGV4dCkoX2FwcHJvdXRlcmNvbnRleHQuTGF5b3V0Um91dGVyQ29udGV4dCk7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFyaWFudCBleHBlY3RlZCBsYXlvdXQgcm91dGVyIHRvIGJlIG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGROb2RlcyAsIHRyZWUgLCB1cmwgIH0gPSBjb250ZXh0O1xuICAgIC8vIEdldCB0aGUgY3VycmVudCBwYXJhbGxlbFJvdXRlciBjYWNoZSBub2RlXG4gICAgbGV0IGNoaWxkTm9kZXNGb3JQYXJhbGxlbFJvdXRlciA9IGNoaWxkTm9kZXMuZ2V0KHBhcmFsbGVsUm91dGVyS2V5KTtcbiAgICAvLyBJZiB0aGUgcGFyYWxsZWwgcm91dGVyIGNhY2hlIG5vZGUgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuXG4gICAgLy8gVGhpcyB3cml0ZXMgdG8gdGhlIGNhY2hlIHdoZW4gdGhlcmUgaXMgbm8gaXRlbSBpbiB0aGUgY2FjaGUgeWV0LiBJdCBuZXZlciAqb3ZlcndyaXRlcyogZXhpc3RpbmcgY2FjaGUgaXRlbXMgd2hpY2ggaXMgd2h5IGl0J3Mgc2FmZSBpbiBjb25jdXJyZW50IG1vZGUuXG4gICAgaWYgKCFjaGlsZE5vZGVzRm9yUGFyYWxsZWxSb3V0ZXIpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5zZXQocGFyYWxsZWxSb3V0ZXJLZXksIG5ldyBNYXAoKSk7XG4gICAgICAgIGNoaWxkTm9kZXNGb3JQYXJhbGxlbFJvdXRlciA9IGNoaWxkTm9kZXMuZ2V0KHBhcmFsbGVsUm91dGVyS2V5KTtcbiAgICB9XG4gICAgLy8gR2V0IHRoZSBhY3RpdmUgc2VnbWVudCBpbiB0aGUgdHJlZVxuICAgIC8vIFRoZSByZWFzb24gYXJyYXlzIGFyZSB1c2VkIGluIHRoZSBkYXRhIGZvcm1hdCBpcyB0aGF0IHRoZXNlIGFyZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGJyb3dzZXIgc28gaXQncyBvcHRpbWl6ZWQgdG8gc2F2ZSBieXRlcy5cbiAgICBjb25zdCB0cmVlU2VnbWVudCA9IHRyZWVbMV1bcGFyYWxsZWxSb3V0ZXJLZXldWzBdO1xuICAgIGNvbnN0IGNoaWxkUHJvcFNlZ21lbnQgPSBjaGlsZFByb3Auc2VnbWVudDtcbiAgICAvLyBJZiBzZWdtZW50IGlzIGFuIGFycmF5IGl0J3MgYSBkeW5hbWljIHJvdXRlIGFuZCB3ZSB3YW50IHRvIHJlYWQgdGhlIGR5bmFtaWMgcm91dGUgdmFsdWUgYXMgdGhlIHNlZ21lbnQgdG8gZ2V0IGZyb20gdGhlIGNhY2hlLlxuICAgIGNvbnN0IGN1cnJlbnRDaGlsZFNlZ21lbnRWYWx1ZSA9ICgwLCBfZ2V0c2VnbWVudHZhbHVlLmdldFNlZ21lbnRWYWx1ZSkodHJlZVNlZ21lbnQpO1xuICAgIC8qKlxuICAgKiBEZWNpZGVzIHdoaWNoIHNlZ21lbnRzIHRvIGtlZXAgcmVuZGVyaW5nLCBhbGwgc2VnbWVudHMgdGhhdCBhcmUgbm90IGFjdGl2ZSB3aWxsIGJlIHdyYXBwZWQgaW4gYDxPZmZzY3JlZW4+YC5cbiAgICovIC8vIFRPRE8tQVBQOiBBZGQgaGFuZGxpbmcgb2YgYDxPZmZzY3JlZW4+YCB3aGVuIGl0J3MgYXZhaWxhYmxlLlxuICAgIGNvbnN0IHByZXNlcnZlZFNlZ21lbnRzID0gW1xuICAgICAgICB0cmVlU2VnbWVudFxuICAgIF07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgc3R5bGVzLCBwcmVzZXJ2ZWRTZWdtZW50cy5tYXAoKHByZXNlcnZlZFNlZ21lbnQpPT57XG4gICAgICAgIGNvbnN0IGlzQ2hpbGRQcm9wU2VnbWVudCA9ICgwLCBfbWF0Y2hzZWdtZW50cy5tYXRjaFNlZ21lbnQpKHByZXNlcnZlZFNlZ21lbnQsIGNoaWxkUHJvcFNlZ21lbnQpO1xuICAgICAgICBjb25zdCBwcmVzZXJ2ZWRTZWdtZW50VmFsdWUgPSAoMCwgX2dldHNlZ21lbnR2YWx1ZS5nZXRTZWdtZW50VmFsdWUpKHByZXNlcnZlZFNlZ21lbnQpO1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9ICgwLCBfY3JlYXRlcm91dGVyY2FjaGVrZXkuY3JlYXRlUm91dGVyQ2FjaGVLZXkpKHByZXNlcnZlZFNlZ21lbnQpO1xuICAgICAgICByZXR1cm4oLypcbiAgICAgICAgICAgIC0gRXJyb3IgYm91bmRhcnlcbiAgICAgICAgICAgICAgLSBPbmx5IHJlbmRlcnMgZXJyb3IgYm91bmRhcnkgaWYgZXJyb3IgY29tcG9uZW50IGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgICAtIFJlbmRlcmVkIGZvciBlYWNoIHNlZ21lbnQgdG8gZW5zdXJlIHRoZXkgaGF2ZSB0aGVpciBvd24gZXJyb3Igc3RhdGUuXG4gICAgICAgICAgICAtIExvYWRpbmcgYm91bmRhcnlcbiAgICAgICAgICAgICAgLSBPbmx5IHJlbmRlcnMgc3VzcGVuc2UgYm91bmRhcnkgaWYgbG9hZGluZyBjb21wb25lbnRzIGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgICAtIFJlbmRlcmVkIGZvciBlYWNoIHNlZ21lbnQgdG8gZW5zdXJlIHRoZXkgaGF2ZSB0aGVpciBvd24gbG9hZGluZyBzdGF0ZS5cbiAgICAgICAgICAgICAgLSBQYXNzZWQgdG8gdGhlIHJvdXRlciBkdXJpbmcgcmVuZGVyaW5nIHRvIGVuc3VyZSBpdCBjYW4gYmUgaW1tZWRpYXRlbHkgcmVuZGVyZWQgd2hlbiBzdXNwZW5kaW5nIG9uIGEgRmxpZ2h0IGZldGNoLlxuICAgICAgICAgICovIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfYXBwcm91dGVyY29udGV4dC5UZW1wbGF0ZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICAgIGtleTogKDAsIF9jcmVhdGVyb3V0ZXJjYWNoZWtleS5jcmVhdGVSb3V0ZXJDYWNoZUtleSkocHJlc2VydmVkU2VnbWVudCwgdHJ1ZSksXG4gICAgICAgICAgICB2YWx1ZTogLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFNjcm9sbEFuZEZvY3VzSGFuZGxlciwge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRQYXRoOiBzZWdtZW50UGF0aFxuICAgICAgICAgICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9lcnJvcmJvdW5kYXJ5LkVycm9yQm91bmRhcnksIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvbXBvbmVudDogZXJyb3IsXG4gICAgICAgICAgICAgICAgZXJyb3JTdHlsZXM6IGVycm9yU3R5bGVzXG4gICAgICAgICAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTG9hZGluZ0JvdW5kYXJ5LCB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZGluZzogaGFzTG9hZGluZyxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBsb2FkaW5nLFxuICAgICAgICAgICAgICAgIGxvYWRpbmdTdHlsZXM6IGxvYWRpbmdTdHlsZXNcbiAgICAgICAgICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfbm90Zm91bmRib3VuZGFyeS5Ob3RGb3VuZEJvdW5kYXJ5LCB7XG4gICAgICAgICAgICAgICAgbm90Rm91bmQ6IG5vdEZvdW5kLFxuICAgICAgICAgICAgICAgIG5vdEZvdW5kU3R5bGVzOiBub3RGb3VuZFN0eWxlcyxcbiAgICAgICAgICAgICAgICBhc05vdEZvdW5kOiBhc05vdEZvdW5kXG4gICAgICAgICAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlZGlyZWN0Ym91bmRhcnkuUmVkaXJlY3RCb3VuZGFyeSwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KElubmVyTGF5b3V0Um91dGVyLCB7XG4gICAgICAgICAgICAgICAgcGFyYWxsZWxSb3V0ZXJLZXk6IHBhcmFsbGVsUm91dGVyS2V5LFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIHRyZWU6IHRyZWUsXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlczogY2hpbGROb2Rlc0ZvclBhcmFsbGVsUm91dGVyLFxuICAgICAgICAgICAgICAgIGNoaWxkUHJvcDogaXNDaGlsZFByb3BTZWdtZW50ID8gY2hpbGRQcm9wIDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWdtZW50UGF0aDogc2VnbWVudFBhdGgsXG4gICAgICAgICAgICAgICAgY2FjaGVLZXk6IGNhY2hlS2V5LFxuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBjdXJyZW50Q2hpbGRTZWdtZW50VmFsdWUgPT09IHByZXNlcnZlZFNlZ21lbnRWYWx1ZVxuICAgICAgICAgICAgfSkpKSkpKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIHRlbXBsYXRlU3R5bGVzLCB0ZW1wbGF0ZSkpKTtcbiAgICB9KSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxheW91dC1yb3V0ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIk91dGVyTGF5b3V0Um91dGVyIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQiLCJfcmVhY3QiLCJfIiwiX3JlYWN0ZG9tIiwiX2FwcHJvdXRlcmNvbnRleHQiLCJfZmV0Y2hzZXJ2ZXJyZXNwb25zZSIsIl9pbmZpbml0ZXByb21pc2UiLCJfZXJyb3Jib3VuZGFyeSIsIl9tYXRjaHNlZ21lbnRzIiwiX2hhbmRsZXNtb290aHNjcm9sbCIsIl9yZWRpcmVjdGJvdW5kYXJ5IiwiX25vdGZvdW5kYm91bmRhcnkiLCJfZ2V0c2VnbWVudHZhbHVlIiwiX2NyZWF0ZXJvdXRlcmNhY2hla2V5Iiwid2Fsa0FkZFJlZmV0Y2giLCJzZWdtZW50UGF0aFRvV2FsayIsInRyZWVUb1JlY3JlYXRlIiwic2VnbWVudCIsInBhcmFsbGVsUm91dGVLZXkiLCJpc0xhc3QiLCJsZW5ndGgiLCJtYXRjaFNlZ21lbnQiLCJoYXNPd25Qcm9wZXJ0eSIsInN1YlRyZWUiLCJ1bmRlZmluZWQiLCJzbGljZSIsImZpbmRET01Ob2RlIiwiaW5zdGFuY2UiLCJwcm9jZXNzIiwib3JpZ2luYWxDb25zb2xlRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJfbGVuIiwiYXJndW1lbnRzIiwibWVzc2FnZXMiLCJBcnJheSIsIl9rZXkiLCJpbmNsdWRlcyIsImRlZmF1bHQiLCJyZWN0UHJvcGVydGllcyIsImVsZW1lbnRDYW5TY3JvbGwiLCJlbGVtZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImV2ZXJ5IiwiaXRlbSIsInRvcE9mRWxlbWVudEluVmlld3BvcnQiLCJ2aWV3cG9ydEhlaWdodCIsInRvcCIsImdldEhhc2hGcmFnbWVudERvbU5vZGUiLCJoYXNoRnJhZ21lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJfZG9jdW1lbnRfZ2V0RWxlbWVudEJ5SWQiLCJnZXRFbGVtZW50QnlJZCIsImdldEVsZW1lbnRzQnlOYW1lIiwiSW5uZXJTY3JvbGxBbmRGb2N1c0hhbmRsZXIiLCJDb21wb25lbnQiLCJjb21wb25lbnREaWRNb3VudCIsImhhbmRsZVBvdGVudGlhbFNjcm9sbCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByb3BzIiwiZm9jdXNBbmRTY3JvbGxSZWYiLCJhcHBseSIsInJlbmRlciIsImNoaWxkcmVuIiwiY29uc3RydWN0b3IiLCJhcmdzIiwic2VnbWVudFBhdGgiLCJzZWdtZW50UGF0aHMiLCJzb21lIiwic2Nyb2xsUmVmU2VnbWVudFBhdGgiLCJpbmRleCIsImRvbU5vZGUiLCJFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJoYW5kbGVTbW9vdGhTY3JvbGwiLCJ3aW5kb3ciLCJzY3JvbGxUbyIsIm9mZnNldFRvcCIsImh0bWxFbGVtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSW50b1ZpZXciLCJkb250Rm9yY2VMYXlvdXQiLCJmb2N1cyIsIlNjcm9sbEFuZEZvY3VzSGFuZGxlciIsInBhcmFtIiwiY29udGV4dCIsInVzZUNvbnRleHQiLCJHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0IiwiRXJyb3IiLCJjcmVhdGVFbGVtZW50IiwiSW5uZXJMYXlvdXRSb3V0ZXIiLCJwYXJhbGxlbFJvdXRlcktleSIsInVybCIsImNoaWxkTm9kZXMiLCJjaGlsZFByb3AiLCJ0cmVlIiwiY2FjaGVLZXkiLCJjaGFuZ2VCeVNlcnZlclJlc3BvbnNlIiwiZnVsbFRyZWUiLCJjaGlsZE5vZGUiLCJjdXJyZW50Iiwic2V0Iiwic3RhdHVzIiwiQ2FjaGVTdGF0ZXMiLCJSRUFEWSIsImRhdGEiLCJzdWJUcmVlRGF0YSIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwiTEFaWV9JTklUSUFMSVpFRCIsInJlZmV0Y2hUcmVlIiwiREFUQV9GRVRDSCIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsIm5leHRVcmwiLCJoZWFkIiwiZmxpZ2h0RGF0YSIsIm92ZXJyaWRlQ2Fub25pY2FsVXJsIiwidXNlIiwiaHJlZiIsInNldFRpbWVvdXQiLCJzdGFydFRyYW5zaXRpb24iLCJjcmVhdGVJbmZpbml0ZVByb21pc2UiLCJzdWJ0cmVlIiwiTGF5b3V0Um91dGVyQ29udGV4dCIsIlByb3ZpZGVyIiwiTG9hZGluZ0JvdW5kYXJ5IiwibG9hZGluZyIsImxvYWRpbmdTdHlsZXMiLCJoYXNMb2FkaW5nIiwiU3VzcGVuc2UiLCJmYWxsYmFjayIsIkZyYWdtZW50IiwiZXJyb3JTdHlsZXMiLCJ0ZW1wbGF0ZVN0eWxlcyIsInRlbXBsYXRlIiwibm90Rm91bmQiLCJub3RGb3VuZFN0eWxlcyIsImFzTm90Rm91bmQiLCJzdHlsZXMiLCJjaGlsZE5vZGVzRm9yUGFyYWxsZWxSb3V0ZXIiLCJ0cmVlU2VnbWVudCIsImNoaWxkUHJvcFNlZ21lbnQiLCJjdXJyZW50Q2hpbGRTZWdtZW50VmFsdWUiLCJnZXRTZWdtZW50VmFsdWUiLCJwcmVzZXJ2ZWRTZWdtZW50cyIsIm1hcCIsInByZXNlcnZlZFNlZ21lbnQiLCJpc0NoaWxkUHJvcFNlZ21lbnQiLCJwcmVzZXJ2ZWRTZWdtZW50VmFsdWUiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsIlRlbXBsYXRlQ29udGV4dCIsImtleSIsIkVycm9yQm91bmRhcnkiLCJlcnJvckNvbXBvbmVudCIsIk5vdEZvdW5kQm91bmRhcnkiLCJSZWRpcmVjdEJvdW5kYXJ5IiwiaXNBY3RpdmUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/layout-router.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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-client)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-client)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _approutercontext = __webpack_require__(/*! ../../shared/lib/app-router-context */ \"(app-client)/./node_modules/next/dist/shared/lib/app-router-context.js\");\nfunction RenderFromTemplateContext() {\n const children = (0, _react.useContext)(_approutercontext.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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzLmpzIiwibWFwcGluZ3MiOiJxREFDYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDRCQUE0QkMsbUJBQU9BLENBQUMsMkhBQTBDO0FBQ3BGLE1BQU1DLFNBQVMsV0FBVyxHQUFHRiwwQkFBMEJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsNEVBQU87QUFDeEUsTUFBTUcsb0JBQW9CSCxtQkFBT0EsQ0FBQyxtSEFBcUM7QUFFdkUsU0FBU0YsNEJBQTRCO0lBQ2pDLE1BQU1NLFdBQVcsQ0FBQyxHQUFHSCxPQUFPSSxVQUFVLEVBQUVGLGtCQUFrQkcsZUFBZTtJQUN6RSxPQUFPLFdBQVcsR0FBR0wsT0FBT00sT0FBTyxDQUFDQyxhQUFhLENBQUNQLE9BQU9NLE9BQU8sQ0FBQ0UsUUFBUSxFQUFFLElBQUksRUFBRUw7QUFDckY7S0FIU047QUFLVCxJQUFJLENBQUMsT0FBT0osUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDRyxVQUFVLEtBQUssYUFBYTtJQUNyS2xCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWEsT0FBTyxFQUFFLGNBQWM7UUFBRVosT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9tQixNQUFNLENBQUNqQixRQUFRYSxPQUFPLEVBQUViO0lBQy9Ca0IsT0FBT2xCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxDQUFDLENBRUQsd0RBQXdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcz84ZWU2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSZW5kZXJGcm9tVGVtcGxhdGVDb250ZXh0O1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLl8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9hcHByb3V0ZXJjb250ZXh0ID0gcmVxdWlyZShcIi4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0XCIpO1xuXG5mdW5jdGlvbiBSZW5kZXJGcm9tVGVtcGxhdGVDb250ZXh0KCkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gKDAsIF9yZWFjdC51c2VDb250ZXh0KShfYXBwcm91dGVyY29udGV4dC5UZW1wbGF0ZUNvbnRleHQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiUmVuZGVyRnJvbVRlbXBsYXRlQ29udGV4dCIsIl9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9hcHByb3V0ZXJjb250ZXh0IiwiY2hpbGRyZW4iLCJ1c2VDb250ZXh0IiwiVGVtcGxhdGVDb250ZXh0IiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/render-from-template-context.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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-client)/./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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm94eS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCxrRUFBaUU7SUFDN0RJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMseUhBQTZCO0FBQ3RFLFNBQVNGLGlDQUFpQztJQUN0QyxPQUFPLElBQUlHLE1BQU0sQ0FBQyxHQUFHO1FBQ2pCSixLQUFLSyxPQUFPLEVBQUVDLElBQUksRUFBRTtZQUNoQixrRkFBa0Y7WUFDbEYsSUFBSSxPQUFPQSxTQUFTLFVBQVU7Z0JBQ3pCLElBQUdKLHlCQUF5QkssdUJBQXVCLEVBQUUsa0JBQWtCRDtZQUM1RSxDQUFDO1FBQ0w7SUFDSjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9ULFFBQVFXLE9BQU8sS0FBSyxjQUFlLE9BQU9YLFFBQVFXLE9BQU8sS0FBSyxZQUFZWCxRQUFRVyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9YLFFBQVFXLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktkLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUVcsT0FBTyxFQUFFLGNBQWM7UUFBRVYsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9lLE1BQU0sQ0FBQ2IsUUFBUVcsT0FBTyxFQUFFWDtJQUMvQmMsT0FBT2QsT0FBTyxHQUFHQSxRQUFRVyxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxzREFBc0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm94eS5qcz9iNmRlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTZWFyY2hQYXJhbXNCYWlsb3V0UHJveHk7XG4gICAgfVxufSk7XG5jb25zdCBfc3RhdGljZ2VuZXJhdGlvbmJhaWxvdXQgPSByZXF1aXJlKFwiLi9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0XCIpO1xuZnVuY3Rpb24gY3JlYXRlU2VhcmNoUGFyYW1zQmFpbG91dFByb3h5KCkge1xuICAgIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgZ2V0IChfdGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAvLyBSZWFjdCBhZGRzIHNvbWUgcHJvcGVydGllcyBvbiB0aGUgb2JqZWN0IHdoZW4gc2VyaWFsaXppbmcgZm9yIGNsaWVudCBjb21wb25lbnRzXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAoMCwgX3N0YXRpY2dlbmVyYXRpb25iYWlsb3V0LnN0YXRpY0dlbmVyYXRpb25CYWlsb3V0KShcInNlYXJjaFBhcmFtcy5cIiArIHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3h5LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJjcmVhdGVTZWFyY2hQYXJhbXNCYWlsb3V0UHJveHkiLCJfc3RhdGljZ2VuZXJhdGlvbmJhaWxvdXQiLCJyZXF1aXJlIiwiUHJveHkiLCJfdGFyZ2V0IiwicHJvcCIsInN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/searchparams-bailout-proxy.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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-client)/./node_modules/next/dist/client/components/hooks-server-context.js\");\nconst _staticgenerationasyncstorage = __webpack_require__(/*! ./static-generation-async-storage */ \"(app-client)/./node_modules/next/dist/client/components/static-generation-async-storage.js\");\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args);\n this.code = \"NEXT_STATIC_GEN_BAILOUT\";\n }\n}\nconst staticGenerationBailout = (reason, opts)=>{\n const staticGenerationStore = _staticgenerationasyncstorage.staticGenerationAsyncStorage.getStore();\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.forceStatic) {\n return true;\n }\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.dynamicShouldError) {\n const { dynamic =\"error\" , link } = opts || {};\n const suffix = link ? \" See more info here: \" + link : \"\";\n throw new StaticGenBailoutError('Page with `dynamic = \"' + dynamic + \"\\\"` couldn't be rendered statically because it used `\" + reason + \"`.\" + suffix);\n }\n if (staticGenerationStore) {\n staticGenerationStore.revalidate = 0;\n }\n if (staticGenerationStore == null ? void 0 : staticGenerationStore.isStaticGeneration) {\n const err = new _hooksservercontext.DynamicServerError(reason);\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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILDJEQUEwRDtJQUN0REksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsc0JBQXNCQyxtQkFBT0EsQ0FBQywrR0FBd0I7QUFDNUQsTUFBTUMsZ0NBQWdDRCxtQkFBT0EsQ0FBQyxxSUFBbUM7QUFDakYsTUFBTUUsOEJBQThCQztJQUNoQ0MsWUFBWSxHQUFHQyxJQUFJLENBQUM7UUFDaEIsS0FBSyxJQUFJQTtRQUNULElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2hCO0FBQ0o7QUFDQSxNQUFNUiwwQkFBMEIsQ0FBQ1MsUUFBUUMsT0FBTztJQUM1QyxNQUFNQyx3QkFBd0JSLDhCQUE4QlMsNEJBQTRCLENBQUNDLFFBQVE7SUFDakcsSUFBSUYseUJBQXlCLElBQUksR0FBRyxLQUFLLElBQUlBLHNCQUFzQkcsV0FBVyxFQUFFO1FBQzVFLE9BQU8sSUFBSTtJQUNmLENBQUM7SUFDRCxJQUFJSCx5QkFBeUIsSUFBSSxHQUFHLEtBQUssSUFBSUEsc0JBQXNCSSxrQkFBa0IsRUFBRTtRQUNuRixNQUFNLEVBQUVDLFNBQVMsUUFBTyxFQUFHQyxLQUFJLEVBQUcsR0FBR1AsUUFBUSxDQUFDO1FBQzlDLE1BQU1RLFNBQVNELE9BQU8sMEJBQTBCQSxPQUFPLEVBQUU7UUFDekQsTUFBTSxJQUFJYixzQkFBc0IsMkJBQTJCWSxVQUFVLDBEQUEwRFAsU0FBUyxPQUFPUyxRQUFRO0lBQzNKLENBQUM7SUFDRCxJQUFJUCx1QkFBdUI7UUFDdkJBLHNCQUFzQlEsVUFBVSxHQUFHO0lBQ3ZDLENBQUM7SUFDRCxJQUFJUix5QkFBeUIsSUFBSSxHQUFHLEtBQUssSUFBSUEsc0JBQXNCUyxrQkFBa0IsRUFBRTtRQUNuRixNQUFNQyxNQUFNLElBQUlwQixvQkFBb0JxQixrQkFBa0IsQ0FBQ2I7UUFDdkRFLHNCQUFzQlksdUJBQXVCLEdBQUdkO1FBQ2hERSxzQkFBc0JhLGlCQUFpQixHQUFHSCxJQUFJSSxLQUFLO1FBQ25ELE1BQU1KLElBQUk7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLO0FBQ2hCO0FBRUEsSUFBSSxDQUFDLE9BQU96QixRQUFROEIsT0FBTyxLQUFLLGNBQWUsT0FBTzlCLFFBQVE4QixPQUFPLEtBQUssWUFBWTlCLFFBQVE4QixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU85QixRQUFROEIsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2pDLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUThCLE9BQU8sRUFBRSxjQUFjO1FBQUU3QixPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT2tDLE1BQU0sQ0FBQ2hDLFFBQVE4QixPQUFPLEVBQUU5QjtJQUMvQmlDLE9BQU9qQyxPQUFPLEdBQUdBLFFBQVE4QixPQUFPO0FBQ2xDLENBQUMsQ0FFRCxxREFBcUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1iYWlsb3V0LmpzPzA0NmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdGF0aWNHZW5lcmF0aW9uQmFpbG91dFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQ7XG4gICAgfVxufSk7XG5jb25zdCBfaG9va3NzZXJ2ZXJjb250ZXh0ID0gcmVxdWlyZShcIi4vaG9va3Mtc2VydmVyLWNvbnRleHRcIik7XG5jb25zdCBfc3RhdGljZ2VuZXJhdGlvbmFzeW5jc3RvcmFnZSA9IHJlcXVpcmUoXCIuL3N0YXRpYy1nZW5lcmF0aW9uLWFzeW5jLXN0b3JhZ2VcIik7XG5jbGFzcyBTdGF0aWNHZW5CYWlsb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoLi4uYXJncyl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgICB0aGlzLmNvZGUgPSBcIk5FWFRfU1RBVElDX0dFTl9CQUlMT1VUXCI7XG4gICAgfVxufVxuY29uc3Qgc3RhdGljR2VuZXJhdGlvbkJhaWxvdXQgPSAocmVhc29uLCBvcHRzKT0+e1xuICAgIGNvbnN0IHN0YXRpY0dlbmVyYXRpb25TdG9yZSA9IF9zdGF0aWNnZW5lcmF0aW9uYXN5bmNzdG9yYWdlLnN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoc3RhdGljR2VuZXJhdGlvblN0b3JlID09IG51bGwgPyB2b2lkIDAgOiBzdGF0aWNHZW5lcmF0aW9uU3RvcmUuZm9yY2VTdGF0aWMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljU2hvdWxkRXJyb3IpIHtcbiAgICAgICAgY29uc3QgeyBkeW5hbWljID1cImVycm9yXCIgLCBsaW5rICB9ID0gb3B0cyB8fCB7fTtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gbGluayA/IFwiIFNlZSBtb3JlIGluZm8gaGVyZTogXCIgKyBsaW5rIDogXCJcIjtcbiAgICAgICAgdGhyb3cgbmV3IFN0YXRpY0dlbkJhaWxvdXRFcnJvcignUGFnZSB3aXRoIGBkeW5hbWljID0gXCInICsgZHluYW1pYyArIFwiXFxcImAgY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgYFwiICsgcmVhc29uICsgXCJgLlwiICsgc3VmZml4KTtcbiAgICB9XG4gICAgaWYgKHN0YXRpY0dlbmVyYXRpb25TdG9yZSkge1xuICAgICAgICBzdGF0aWNHZW5lcmF0aW9uU3RvcmUucmV2YWxpZGF0ZSA9IDA7XG4gICAgfVxuICAgIGlmIChzdGF0aWNHZW5lcmF0aW9uU3RvcmUgPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0dlbmVyYXRpb25TdG9yZS5pc1N0YXRpY0dlbmVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IF9ob29rc3NlcnZlcmNvbnRleHQuRHluYW1pY1NlcnZlckVycm9yKHJlYXNvbik7XG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25TdG9yZS5keW5hbWljVXNhZ2VEZXNjcmlwdGlvbiA9IHJlYXNvbjtcbiAgICAgICAgc3RhdGljR2VuZXJhdGlvblN0b3JlLmR5bmFtaWNVc2FnZVN0YWNrID0gZXJyLnN0YWNrO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInN0YXRpY0dlbmVyYXRpb25CYWlsb3V0IiwiX2hvb2tzc2VydmVyY29udGV4dCIsInJlcXVpcmUiLCJfc3RhdGljZ2VuZXJhdGlvbmFzeW5jc3RvcmFnZSIsIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJhcmdzIiwiY29kZSIsInJlYXNvbiIsIm9wdHMiLCJzdGF0aWNHZW5lcmF0aW9uU3RvcmUiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiZ2V0U3RvcmUiLCJmb3JjZVN0YXRpYyIsImR5bmFtaWNTaG91bGRFcnJvciIsImR5bmFtaWMiLCJsaW5rIiwic3VmZml4IiwicmV2YWxpZGF0ZSIsImlzU3RhdGljR2VuZXJhdGlvbiIsImVyciIsIkR5bmFtaWNTZXJ2ZXJFcnJvciIsImR5bmFtaWNVc2FnZURlc2NyaXB0aW9uIiwiZHluYW1pY1VzYWdlU3RhY2siLCJzdGFjayIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/static-generation-bailout.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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-client)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-client)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _searchparamsbailoutproxy = __webpack_require__(/*! ./searchparams-bailout-proxy */ \"(app-client)/./node_modules/next/dist/client/components/searchparams-bailout-proxy.js\");\nfunction StaticGenerationSearchParamsBailoutProvider(param) {\n let { Component , propsForComponent } = param;\n const searchParams = (0, _searchparamsbailoutproxy.createSearchParamsBailoutProxy)();\n return /*#__PURE__*/ _react.default.createElement(Component, {\n searchParams: searchParams,\n ...propsForComponent\n });\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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm92aWRlci5qcy5qcyIsIm1hcHBpbmdzIjoicURBQ2E7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLHlIQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDRFQUFPO0FBQ3ZFLE1BQU1HLDRCQUE0QkgsbUJBQU9BLENBQUMsMkhBQThCO0FBRXhFLFNBQVNGLDRDQUE0Q00sS0FBSyxFQUFFO0lBQ3hELElBQUksRUFBRUMsVUFBUyxFQUFHQyxrQkFBaUIsRUFBRyxHQUFHRjtJQUN6QyxNQUFNRyxlQUFlLENBQUMsR0FBR0osMEJBQTBCSyw4QkFBOEI7SUFDakYsT0FBTyxXQUFXLEdBQUdQLE9BQU9RLE9BQU8sQ0FBQ0MsYUFBYSxDQUFDTCxXQUFXO1FBQ3pERSxjQUFjQTtRQUNkLEdBQUdELGlCQUFpQjtJQUN4QjtBQUNKO0tBUFNSO0FBU1QsSUFBSSxDQUFDLE9BQU9KLFFBQVFlLE9BQU8sS0FBSyxjQUFlLE9BQU9mLFFBQVFlLE9BQU8sS0FBSyxZQUFZZixRQUFRZSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9mLFFBQVFlLE9BQU8sQ0FBQ0UsVUFBVSxLQUFLLGFBQWE7SUFDcktuQixPQUFPQyxjQUFjLENBQUNDLFFBQVFlLE9BQU8sRUFBRSxjQUFjO1FBQUVkLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPb0IsTUFBTSxDQUFDbEIsUUFBUWUsT0FBTyxFQUFFZjtJQUMvQm1CLE9BQU9uQixPQUFPLEdBQUdBLFFBQVFlLE9BQU87QUFDbEMsQ0FBQyxDQUVELDJFQUEyRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzPzk3MWEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFN0YXRpY0dlbmVyYXRpb25TZWFyY2hQYXJhbXNCYWlsb3V0UHJvdmlkZXI7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX3NlYXJjaHBhcmFtc2JhaWxvdXRwcm94eSA9IHJlcXVpcmUoXCIuL3NlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3h5XCIpO1xuXG5mdW5jdGlvbiBTdGF0aWNHZW5lcmF0aW9uU2VhcmNoUGFyYW1zQmFpbG91dFByb3ZpZGVyKHBhcmFtKSB7XG4gICAgbGV0IHsgQ29tcG9uZW50ICwgcHJvcHNGb3JDb21wb25lbnQgIH0gPSBwYXJhbTtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSAoMCwgX3NlYXJjaHBhcmFtc2JhaWxvdXRwcm94eS5jcmVhdGVTZWFyY2hQYXJhbXNCYWlsb3V0UHJveHkpKCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHtcbiAgICAgICAgc2VhcmNoUGFyYW1zOiBzZWFyY2hQYXJhbXMsXG4gICAgICAgIC4uLnByb3BzRm9yQ29tcG9uZW50XG4gICAgfSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJTdGF0aWNHZW5lcmF0aW9uU2VhcmNoUGFyYW1zQmFpbG91dFByb3ZpZGVyIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl8iLCJfc2VhcmNocGFyYW1zYmFpbG91dHByb3h5IiwicGFyYW0iLCJDb21wb25lbnQiLCJwcm9wc0ZvckNvbXBvbmVudCIsInNlYXJjaFBhcmFtcyIsImNyZWF0ZVNlYXJjaFBhcmFtc0JhaWxvdXRQcm94eSIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./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 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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci91dGlscy9oYW5kbGUtc21vb3RoLXNjcm9sbC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FBZ0I7QUFDakJBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILHNEQUFxRDtJQUNqREksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsU0FBU0EsbUJBQW1CQyxFQUFFLEVBQUVDLE9BQU8sRUFBRTtJQUNyQyxJQUFJQSxZQUFZLEtBQUssR0FBR0EsVUFBVSxDQUFDO0lBQ25DLE1BQU1DLGNBQWNDLFNBQVNDLGVBQWU7SUFDNUMsTUFBTUMsV0FBV0gsWUFBWUksS0FBSyxDQUFDQyxjQUFjO0lBQ2pETCxZQUFZSSxLQUFLLENBQUNDLGNBQWMsR0FBRztJQUNuQyxJQUFJLENBQUNOLFFBQVFPLGVBQWUsRUFBRTtRQUMxQiw4RUFBOEU7UUFDOUUsNERBQTREO1FBQzVELHlGQUF5RjtRQUN6Rk4sWUFBWU8sY0FBYztJQUM5QixDQUFDO0lBQ0RUO0lBQ0FFLFlBQVlJLEtBQUssQ0FBQ0MsY0FBYyxHQUFHRjtBQUN2QyxFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2hhbmRsZS1zbW9vdGgtc2Nyb2xsLmpzPzY1NjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW4gZnVuY3Rpb24gd2l0aCBgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvYCBhcHBsaWVkIHRvIGA8aHRtbC8+YC5cbiAqIFRoaXMgY3NzIGNoYW5nZSB3aWxsIGJlIHJldmVydGVkIGFmdGVyIHRoZSBmdW5jdGlvbiBmaW5pc2hlcy5cbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImhhbmRsZVNtb290aFNjcm9sbFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFuZGxlU21vb3RoU2Nyb2xsO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gaGFuZGxlU21vb3RoU2Nyb2xsKGZuLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgb3B0aW9ucyA9IHt9O1xuICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGV4aXN0aW5nID0gaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3I7XG4gICAgaHRtbEVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBcImF1dG9cIjtcbiAgICBpZiAoIW9wdGlvbnMuZG9udEZvcmNlTGF5b3V0KSB7XG4gICAgICAgIC8vIEluIENocm9tZS1iYXNlZCBicm93c2VycyB3ZSBuZWVkIHRvIGZvcmNlIHJlZmxvdyBiZWZvcmUgY2FsbGluZyBgc2Nyb2xsVG9gLlxuICAgICAgICAvLyBPdGhlcndpc2UgaXQgd2lsbCBub3QgcGlja3VwIHRoZSBjaGFuZ2UgaW4gc2Nyb2xsQmVoYXZpb3JcbiAgICAgICAgLy8gTW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9pc3N1ZXMvNDA3MTkjaXNzdWVjb21tZW50LTEzMzYyNDgwNDJcbiAgICAgICAgaHRtbEVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICB9XG4gICAgZm4oKTtcbiAgICBodG1sRWxlbWVudC5zdHlsZS5zY3JvbGxCZWhhdmlvciA9IGV4aXN0aW5nO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYW5kbGUtc21vb3RoLXNjcm9sbC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiaGFuZGxlU21vb3RoU2Nyb2xsIiwiZm4iLCJvcHRpb25zIiwiaHRtbEVsZW1lbnQiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImV4aXN0aW5nIiwic3R5bGUiLCJzY3JvbGxCZWhhdmlvciIsImRvbnRGb3JjZUxheW91dCIsImdldENsaWVudFJlY3RzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\n"));
+
+/***/ }),
+
+/***/ "(app-client)/./node_modules/next/dist/client/components/static-generation-async-storage.js":
+/*!*************************************************************************************!*\
+ !*** ./node_modules/next/dist/client/components/static-generation-async-storage.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 */ \"(app-client)/./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.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 prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @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 (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1jbGllbnQpLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILGdFQUErRDtJQUMzREksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMscUJBQXFCQyxtQkFBT0EsQ0FBQyw2R0FBdUI7QUFDMUQsTUFBTUYsK0JBQStCLENBQUMsR0FBR0MsbUJBQW1CRSx1QkFBdUI7QUFFbkYsSUFBSSxDQUFDLE9BQU9QLFFBQVFRLE9BQU8sS0FBSyxjQUFlLE9BQU9SLFFBQVFRLE9BQU8sS0FBSyxZQUFZUixRQUFRUSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9SLFFBQVFRLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktYLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUVEsT0FBTyxFQUFFLGNBQWM7UUFBRVAsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9ZLE1BQU0sQ0FBQ1YsUUFBUVEsT0FBTyxFQUFFUjtJQUMvQlcsT0FBT1gsT0FBTyxHQUFHQSxRQUFRUSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCwyREFBMkQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmpzPzJiMjgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlO1xuICAgIH1cbn0pO1xuY29uc3QgX2FzeW5jbG9jYWxzdG9yYWdlID0gcmVxdWlyZShcIi4vYXN5bmMtbG9jYWwtc3RvcmFnZVwiKTtcbmNvbnN0IHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UgPSAoMCwgX2FzeW5jbG9jYWxzdG9yYWdlLmNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlKSgpO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdGF0aWMtZ2VuZXJhdGlvbi1hc3luYy1zdG9yYWdlLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlIiwiX2FzeW5jbG9jYWxzdG9yYWdlIiwicmVxdWlyZSIsImNyZWF0ZUFzeW5jTG9jYWxTdG9yYWdlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-client)/./node_modules/next/dist/client/components/static-generation-async-storage.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-client)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Capp-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Clayout-router.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Crender-from-template-context.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cerror-boundary.js&modules=C%3A%5CUsers%5CMilan%5CLocalGPT%5CprivateGPT%5Cclient%5Cnode_modules%5Cnext%5Cdist%5Cclient%5Ccomponents%5Cstatic-generation-searchparams-bailout-provider.js&server=false!"); });
+/******/ var __webpack_exports__ = __webpack_require__.O();
+/******/ _N_E = __webpack_exports__;
+/******/ }
+]);
\ No newline at end of file