CampFireID/.next/static/webpack/app/page.b7c219527d1d4385.hot-update.js
degradin 22cc9ef144 SSR Fixes
Добавили динамический импорт Telegram Web App SDK с помощью import(), чтобы он загружался только на клиенте
Добавили состояние загрузки и компонент Spinner для лучшего UX
Исправили типы в компонентах:
Используем IShopItem вместо собственного интерфейса ShopItem
Создали тип SafeUser, который исключает свойства mongoose Document из типа пользователя
Добавили безопасную проверку на наличие пользователя в данных Telegram WebApp
2025-03-16 11:37:54 +03:00

22 lines
30 KiB
JavaScript

"use strict";
/*
* 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["webpackHotUpdate_N_E"]("app/page",{
/***/ "(app-pages-browser)/./app/components/MainApp.tsx":
/*!************************************!*\
!*** ./app/components/MainApp.tsx ***!
\************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MainApp: function() { return /* binding */ MainApp; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/toast/use-toast.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/center/center.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/spinner/spinner.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/container/container.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tabs.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-list.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-panels.mjs\");\n/* harmony import */ var _chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @chakra-ui/react */ \"(app-pages-browser)/./node_modules/@chakra-ui/react/dist/esm/tabs/tab-panel.mjs\");\n/* harmony import */ var _UserProfile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UserProfile */ \"(app-pages-browser)/./app/components/UserProfile.tsx\");\n/* harmony import */ var _Shop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Shop */ \"(app-pages-browser)/./app/components/Shop.tsx\");\n/* harmony import */ var _TransferBalance__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TransferBalance */ \"(app-pages-browser)/./app/components/TransferBalance.tsx\");\n/* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/api */ \"(app-pages-browser)/./app/utils/api.ts\");\n/* __next_internal_client_entry_do_not_use__ MainApp auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction MainApp() {\n _s();\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [shopItems, setShopItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const toast = (0,_chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__.useToast)();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const initApp = async ()=>{\n try {\n var _WebApp_initDataUnsafe_user, _WebApp_initDataUnsafe_user1;\n setIsLoading(true);\n // Динамически импортируем SDK только на клиенте\n const WebApp = (await __webpack_require__.e(/*! import() */ \"_app-pages-browser_node_modules_twa-dev_sdk_dist_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @twa-dev/sdk */ \"(app-pages-browser)/./node_modules/@twa-dev/sdk/dist/index.js\"))).default;\n const initData = WebApp.initData;\n if (!initData) {\n throw new Error(\"Приложение должно быть открыто в Telegram\");\n }\n // Авторизуем пользователя\n const authData = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.auth(((_WebApp_initDataUnsafe_user = WebApp.initDataUnsafe.user) === null || _WebApp_initDataUnsafe_user === void 0 ? void 0 : _WebApp_initDataUnsafe_user.id.toString()) || \"\", ((_WebApp_initDataUnsafe_user1 = WebApp.initDataUnsafe.user) === null || _WebApp_initDataUnsafe_user1 === void 0 ? void 0 : _WebApp_initDataUnsafe_user1.username) || \"\");\n setUser(authData.user);\n // Загружаем предметы магазина\n const items = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.getShopItems();\n setShopItems(items);\n } catch (error) {\n toast({\n title: \"Ошибка инициализации\",\n description: error.message,\n status: \"error\",\n duration: 5000,\n isClosable: true\n });\n } finally{\n setIsLoading(false);\n }\n };\n initApp();\n }, []);\n const handlePurchase = async (itemId)=>{\n try {\n const result = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.purchaseItem(itemId);\n setUser(result.user);\n toast({\n title: \"Покупка успешна!\",\n status: \"success\",\n duration: 3000,\n isClosable: true\n });\n } catch (error) {\n var _error_response_data, _error_response;\n toast({\n title: \"Ошибка покупки\",\n description: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.error) || \"Произошла ошибка\",\n status: \"error\",\n duration: 3000,\n isClosable: true\n });\n }\n };\n const handleTransfer = async (recipientUsername, amount)=>{\n try {\n const result = await _utils_api__WEBPACK_IMPORTED_MODULE_5__.transferBalance(recipientUsername, amount);\n setUser((prev)=>prev ? {\n ...prev,\n balance: result.balance\n } : null);\n toast({\n title: \"Перевод выполнен\",\n status: \"success\",\n duration: 3000,\n isClosable: true\n });\n } catch (error) {\n var _error_response_data, _error_response;\n toast({\n title: \"Ошибка перевода\",\n description: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.error) || \"Произошла ошибка\",\n status: \"error\",\n duration: 3000,\n isClosable: true\n });\n }\n };\n if (isLoading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_7__.Center, {\n h: \"100vh\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_8__.Spinner, {\n size: \"xl\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 101,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 100,\n columnNumber: 7\n }, this);\n }\n if (!user) {\n return null;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_9__.Container, {\n maxW: \"container.xl\",\n py: 8,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_10__.Tabs, {\n isFitted: true,\n variant: \"enclosed\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_11__.TabList, {\n mb: \"1em\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Профиль\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 114,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Магазин\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 115,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_12__.Tab, {\n children: \"Перевод\"\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 116,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 113,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_13__.TabPanels, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_UserProfile__WEBPACK_IMPORTED_MODULE_2__.UserProfile, {\n username: user.username,\n level: user.level,\n experience: user.experience,\n balance: user.balance,\n achievements: user.achievements\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 121,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 120,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Shop__WEBPACK_IMPORTED_MODULE_3__.Shop, {\n items: shopItems,\n userBalance: user.balance,\n onPurchase: handlePurchase\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 131,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 130,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_chakra_ui_react__WEBPACK_IMPORTED_MODULE_14__.TabPanel, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_TransferBalance__WEBPACK_IMPORTED_MODULE_4__.TransferBalance, {\n userBalance: user.balance,\n onTransfer: handleTransfer\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 139,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 138,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 119,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 112,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\dev\\\\Telegram\\\\CampFireID\\\\app\\\\components\\\\MainApp.tsx\",\n lineNumber: 111,\n columnNumber: 5\n }, this);\n}\n_s(MainApp, \"IEXrtNKSe8D5fD7ZVaLv3no0tNk=\", false, function() {\n return [\n _chakra_ui_react__WEBPACK_IMPORTED_MODULE_6__.useToast\n ];\n});\n_c = MainApp;\nvar _c;\n$RefreshReg$(_c, \"MainApp\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL01haW5BcHAudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbUQ7QUFDOEQ7QUFDckU7QUFDZDtBQUNzQjtBQUNoQjtBQUk3QixTQUFTZ0I7O0lBQ2QsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdoQiwrQ0FBUUEsQ0FBZTtJQUMvQyxNQUFNLENBQUNpQixXQUFXQyxhQUFhLEdBQUdsQiwrQ0FBUUEsQ0FBYyxFQUFFO0lBQzFELE1BQU0sQ0FBQ21CLFdBQVdDLGFBQWEsR0FBR3BCLCtDQUFRQSxDQUFDO0lBQzNDLE1BQU1xQixRQUFRZCwwREFBUUE7SUFFdEJSLGdEQUFTQSxDQUFDO1FBQ1IsTUFBTXVCLFVBQVU7WUFDZCxJQUFJO29CQVlBQyw2QkFDQUE7Z0JBWkZILGFBQWE7Z0JBQ2IsZ0RBQWdEO2dCQUNoRCxNQUFNRyxTQUFTLENBQUMsTUFBTSwyT0FBcUIsRUFBR0MsT0FBTztnQkFFckQsTUFBTUMsV0FBV0YsT0FBT0UsUUFBUTtnQkFDaEMsSUFBSSxDQUFDQSxVQUFVO29CQUNiLE1BQU0sSUFBSUMsTUFBTTtnQkFDbEI7Z0JBRUEsMEJBQTBCO2dCQUMxQixNQUFNQyxXQUFXLE1BQU1kLDRDQUFRLENBQzdCVSxFQUFBQSw4QkFBQUEsT0FBT00sY0FBYyxDQUFDZCxJQUFJLGNBQTFCUSxrREFBQUEsNEJBQTRCTyxFQUFFLENBQUNDLFFBQVEsT0FBTSxJQUM3Q1IsRUFBQUEsK0JBQUFBLE9BQU9NLGNBQWMsQ0FBQ2QsSUFBSSxjQUExQlEsbURBQUFBLDZCQUE0QlMsUUFBUSxLQUFJO2dCQUUxQ2hCLFFBQVFXLFNBQVNaLElBQUk7Z0JBRXJCLDhCQUE4QjtnQkFDOUIsTUFBTWtCLFFBQVEsTUFBTXBCLG9EQUFnQjtnQkFDcENLLGFBQWFlO1lBQ2YsRUFBRSxPQUFPRSxPQUFZO2dCQUNuQmQsTUFBTTtvQkFDSmUsT0FBTztvQkFDUEMsYUFBYUYsTUFBTUcsT0FBTztv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dHMvTWFpbkFwcC50c3g/Y2YwNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XHJcblxyXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgQ29udGFpbmVyLCBUYWJzLCBUYWJMaXN0LCBUYWJQYW5lbHMsIFRhYiwgVGFiUGFuZWwsIHVzZVRvYXN0LCBTcGlubmVyLCBDZW50ZXIgfSBmcm9tICdAY2hha3JhLXVpL3JlYWN0JztcclxuaW1wb3J0IHsgVXNlclByb2ZpbGUgfSBmcm9tICcuL1VzZXJQcm9maWxlJztcclxuaW1wb3J0IHsgU2hvcCB9IGZyb20gJy4vU2hvcCc7XHJcbmltcG9ydCB7IFRyYW5zZmVyQmFsYW5jZSB9IGZyb20gJy4vVHJhbnNmZXJCYWxhbmNlJztcclxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4uL3V0aWxzL2FwaSc7XHJcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi4vLi4vYmFja2VuZC9tb2RlbHMvVXNlcic7XHJcbmltcG9ydCB7IElTaG9wSXRlbSB9IGZyb20gJy4uLy4uL2JhY2tlbmQvbW9kZWxzL1Nob3BJdGVtJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYWluQXBwKCkge1xyXG4gIGNvbnN0IFt1c2VyLCBzZXRVc2VyXSA9IHVzZVN0YXRlPElVc2VyIHwgbnVsbD4obnVsbCk7XHJcbiAgY29uc3QgW3Nob3BJdGVtcywgc2V0U2hvcEl0ZW1zXSA9IHVzZVN0YXRlPElTaG9wSXRlbVtdPihbXSk7XHJcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xyXG4gIGNvbnN0IHRvYXN0ID0gdXNlVG9hc3QoKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGluaXRBcHAgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIC8vINCU0LjQvdCw0LzQuNGH0LXRgdC60Lgg0LjQvNC/0L7RgNGC0LjRgNGD0LXQvCBTREsg0YLQvtC70YzQutC+INC90LAg0LrQu9C40LXQvdGC0LVcclxuICAgICAgICBjb25zdCBXZWJBcHAgPSAoYXdhaXQgaW1wb3J0KCdAdHdhLWRldi9zZGsnKSkuZGVmYXVsdDtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBpbml0RGF0YSA9IFdlYkFwcC5pbml0RGF0YTtcclxuICAgICAgICBpZiAoIWluaXREYXRhKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ9Cf0YDQuNC70L7QttC10L3QuNC1INC00L7Qu9C20L3QviDQsdGL0YLRjCDQvtGC0LrRgNGL0YLQviDQsiBUZWxlZ3JhbScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g0JDQstGC0L7RgNC40LfRg9C10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPXHJcbiAgICAgICAgY29uc3QgYXV0aERhdGEgPSBhd2FpdCBhcGkuYXV0aChcclxuICAgICAgICAgIFdlYkFwcC5pbml0RGF0YVVuc2FmZS51c2VyPy5pZC50b1N0cmluZygpIHx8ICcnLFxyXG4gICAgICAgICAgV2ViQXBwLmluaXREYXRhVW5zYWZlLnVzZXI/LnVzZXJuYW1lIHx8ICcnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzZXRVc2VyKGF1dGhEYXRhLnVzZXIpO1xyXG5cclxuICAgICAgICAvLyDQl9Cw0LPRgNGD0LbQsNC10Lwg0L/RgNC10LTQvNC10YLRiyDQvNCw0LPQsNC30LjQvdCwXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBhcGkuZ2V0U2hvcEl0ZW1zKCk7XHJcbiAgICAgICAgc2V0U2hvcEl0ZW1zKGl0ZW1zKTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIHRvYXN0KHtcclxuICAgICAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNC4JyxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICAgICAgICBpc0Nsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaW5pdEFwcCgpO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgY29uc3QgaGFuZGxlUHVyY2hhc2UgPSBhc3luYyAoaXRlbUlkOiBzdHJpbmcpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaS5wdXJjaGFzZUl0ZW0oaXRlbUlkKTtcclxuICAgICAgc2V0VXNlcihyZXN1bHQudXNlcik7XHJcbiAgICAgIHRvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ9Cf0L7QutGD0L/QutCwINGD0YHQv9C10YjQvdCwIScsXHJcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXHJcbiAgICAgICAgaXNDbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIHRvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ9Ce0YjQuNCx0LrQsCDQv9C+0LrRg9C/0LrQuCcsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGVycm9yLnJlc3BvbnNlPy5kYXRhPy5lcnJvciB8fCAn0J/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsCcsXHJcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgIGlzQ2xvc2FibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGhhbmRsZVRyYW5zZmVyID0gYXN5bmMgKHJlY2lwaWVudFVzZXJuYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGkudHJhbnNmZXJCYWxhbmNlKHJlY2lwaWVudFVzZXJuYW1lLCBhbW91bnQpO1xyXG4gICAgICBzZXRVc2VyKHByZXYgPT4gcHJldiA/IHsgLi4ucHJldiwgYmFsYW5jZTogcmVzdWx0LmJhbGFuY2UgfSA6IG51bGwpO1xyXG4gICAgICB0b2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfQn9C10YDQtdCy0L7QtCDQstGL0L/QvtC70L3QtdC9JyxcclxuICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICBpc0Nsb3NhYmxlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINC/0LXRgNC10LLQvtC00LAnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5yZXNwb25zZT8uZGF0YT8uZXJyb3IgfHwgJ9Cf0YDQvtC40LfQvtGI0LvQsCDQvtGI0LjQsdC60LAnLFxyXG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcclxuICAgICAgICBpc0Nsb3NhYmxlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBpZiAoaXNMb2FkaW5nKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Q2VudGVyIGg9XCIxMDB2aFwiPlxyXG4gICAgICAgIDxTcGlubmVyIHNpemU9XCJ4bFwiIC8+XHJcbiAgICAgIDwvQ2VudGVyPlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmICghdXNlcikge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPENvbnRhaW5lciBtYXhXPVwiY29udGFpbmVyLnhsXCIgcHk9ezh9PlxyXG4gICAgICA8VGFicyBpc0ZpdHRlZCB2YXJpYW50PVwiZW5jbG9zZWRcIj5cclxuICAgICAgICA8VGFiTGlzdCBtYj1cIjFlbVwiPlxyXG4gICAgICAgICAgPFRhYj7Qn9GA0L7RhNC40LvRjDwvVGFiPlxyXG4gICAgICAgICAgPFRhYj7QnNCw0LPQsNC30LjQvTwvVGFiPlxyXG4gICAgICAgICAgPFRhYj7Qn9C10YDQtdCy0L7QtDwvVGFiPlxyXG4gICAgICAgIDwvVGFiTGlzdD5cclxuXHJcbiAgICAgICAgPFRhYlBhbmVscz5cclxuICAgICAgICAgIDxUYWJQYW5lbD5cclxuICAgICAgICAgICAgPFVzZXJQcm9maWxlXHJcbiAgICAgICAgICAgICAgdXNlcm5hbWU9e3VzZXIudXNlcm5hbWV9XHJcbiAgICAgICAgICAgICAgbGV2ZWw9e3VzZXIubGV2ZWx9XHJcbiAgICAgICAgICAgICAgZXhwZXJpZW5jZT17dXNlci5leHBlcmllbmNlfVxyXG4gICAgICAgICAgICAgIGJhbGFuY2U9e3VzZXIuYmFsYW5jZX1cclxuICAgICAgICAgICAgICBhY2hpZXZlbWVudHM9e3VzZXIuYWNoaWV2ZW1lbnRzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9UYWJQYW5lbD5cclxuXHJcbiAgICAgICAgICA8VGFiUGFuZWw+XHJcbiAgICAgICAgICAgIDxTaG9wXHJcbiAgICAgICAgICAgICAgaXRlbXM9e3Nob3BJdGVtc31cclxuICAgICAgICAgICAgICB1c2VyQmFsYW5jZT17dXNlci5iYWxhbmNlfVxyXG4gICAgICAgICAgICAgIG9uUHVyY2hhc2U9e2hhbmRsZVB1cmNoYXNlfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9UYWJQYW5lbD5cclxuXHJcbiAgICAgICAgICA8VGFiUGFuZWw+XHJcbiAgICAgICAgICAgIDxUcmFuc2ZlckJhbGFuY2VcclxuICAgICAgICAgICAgICB1c2VyQmFsYW5jZT17dXNlci5iYWxhbmNlfVxyXG4gICAgICAgICAgICAgIG9uVHJhbnNmZXI9e2hhbmRsZVRyYW5zZmVyfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9UYWJQYW5lbD5cclxuICAgICAgICA8L1RhYlBhbmVscz5cclxuICAgICAgPC9UYWJzPlxyXG4gICAgPC9Db250YWluZXI+XHJcbiAgKTtcclxufSAiXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkNvbnRhaW5lciIsIlRhYnMiLCJUYWJMaXN0IiwiVGFiUGFuZWxzIiwiVGFiIiwiVGFiUGFuZWwiLCJ1c2VUb2FzdCIsIlNwaW5uZXIiLCJDZW50ZXIiLCJVc2VyUHJvZmlsZSIsIlNob3AiLCJUcmFuc2ZlckJhbGFuY2UiLCJhcGkiLCJNYWluQXBwIiwidXNlciIsInNldFVzZXIiLCJzaG9wSXRlbXMiLCJzZXRTaG9wSXRlbXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJ0b2FzdCIsImluaXRBcHAiLCJXZWJBcHAiLCJkZWZhdWx0IiwiaW5pdERhdGEiLCJFcnJvciIsImF1dGhEYXRhIiwiYXV0aCIsImluaXREYXRhVW5zYWZlIiwiaWQiLCJ0b1N0cmluZyIsInVzZXJuYW1lIiwiaXRlbXMiLCJnZXRTaG9wSXRlbXMiLCJlcnJvciIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwic3RhdHVzIiwiZHVyYXRpb24iLCJpc0Nsb3NhYmxlIiwiaGFuZGxlUHVyY2hhc2UiLCJpdGVtSWQiLCJyZXN1bHQiLCJwdXJjaGFzZUl0ZW0iLCJyZXNwb25zZSIsImRhdGEiLCJoYW5kbGVUcmFuc2ZlciIsInJlY2lwaWVudFVzZXJuYW1lIiwiYW1vdW50IiwidHJhbnNmZXJCYWxhbmNlIiwicHJldiIsImJhbGFuY2UiLCJoIiwic2l6ZSIsIm1heFciLCJweSIsImlzRml0dGVkIiwidmFyaWFudCIsIm1iIiwibGV2ZWwiLCJleHBlcmllbmNlIiwiYWNoaWV2ZW1lbnRzIiwidXNlckJhbGFuY2UiLCJvblB1cmNoYXNlIiwib25UcmFuc2ZlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/MainApp.tsx\n"));
/***/ })
});